diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1bd21522268648e6377825b148a2fbb4e7cb3741..3d27ee9250f0ca407b5d94656b814203ed41943a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -61,6 +61,23 @@ options-test: - ./tests/output_bkw_eta expire_in: 5 mins +nests-test: + # image: harbor.wolke.img.univie.ac.at/flexpart/almalinux8:latest + image: harbor.wolke.img.univie.ac.at/flexpart/rockylinux9:latest + stage: test + when: manual + needs: + - alma8-build + - rocky9-build + + script: + - ulimit -s unlimited + - bash ./tests/run_nests_test.sh + artifacts: + when: on_success + paths: + expire_in: 5 mins + openmp-simulation: # image: harbor.wolke.img.univie.ac.at/flexpart/almalinux8:latest image: harbor.wolke.img.univie.ac.at/flexpart/rockylinux9:latest diff --git a/src/drydepo_mod.f90 b/src/drydepo_mod.f90 index 3e97bc4dcc7f9903f0a935c2b93090f85f043b68..923c353a987ea02f0cd96227a7301556ae897f11 100644 --- a/src/drydepo_mod.f90 +++ b/src/drydepo_mod.f90 @@ -85,16 +85,19 @@ subroutine assignland implicit none - integer :: ix,jy,k,l,li,nrefine,iix,jjy + integer :: ix,jy,k,l,li,nrefine,iix,jjy,stat integer,parameter :: lumaxx=1200,lumaxy=600 integer,parameter :: xlon0lu=-180,ylat0lu=-90 real,parameter :: dxlu=0.3 real :: xlon,ylat,sumperc,p,xi,yj - real :: xlandusep(lumaxx,lumaxy,numclass) + real,allocatable,dimension(:,:,:) :: xlandusep ! character*2 ck if (.not.DRYDEP) return + allocate( xlandusep(lumaxx,lumaxy,numclass), stat=stat) + if (stat.ne.0) error stop "Could not allocate xlandusep in assignland" + do ix=1,lumaxx do jy=1,lumaxy do k=1,numclass diff --git a/src/readoptions_mod.f90 b/src/readoptions_mod.f90 index 885982eeddc9367d001d1cb940d3b83e1d91d7c6..6906935f1f7f398d9137d7f78646c3973ccebfc8 100644 --- a/src/readoptions_mod.f90 +++ b/src/readoptions_mod.f90 @@ -253,14 +253,14 @@ subroutine readavailable jul=juldate(ldat,ltim) if ((jul.ge.beg).and.(jul.le.endl)) then numbwfn(k)=numbwfn(k)+1 - allocate( tmpwfnamen(numbnests,numbwf),tmpwftimen(numbnests,numbwf), & + allocate( tmpwfnamen(numbnests,numbwfn(k)),tmpwftimen(numbnests,numbwfn(k)), & stat=stat) if (stat.ne.0) error stop 'ERROR: could not allocate tmpwfnamen' if (numbwfn(k).gt.1) then - tmpwfnamen(:,1:numbwf-1)=wfname1n - tmpwftimen(:,1:numbwf-1)=wftime1n + tmpwfnamen(:,1:numbwfn(k)-1)=wfname1n + tmpwftimen(:,1:numbwfn(k)-1)=wftime1n endif - tmpwfnamen(k,numbwfn(k))=fname + tmpwfnamen(k,numbwfn(k))=fname(1:index(fname,' ')) tmpwftimen(k,numbwfn(k))=nint((jul-bdate)*86400._dp) call move_alloc(tmpwfnamen,wfname1n) call move_alloc(tmpwftimen,wftime1n) diff --git a/src/windfields_mod.f90 b/src/windfields_mod.f90 index 9e97fc01603270355390590e274d9a9b132eecdd..31454a481517b29abd43a80622fcb3d2abd973dc 100644 --- a/src/windfields_mod.f90 +++ b/src/windfields_mod.f90 @@ -3430,6 +3430,7 @@ subroutine readwind_nest(indj,n,uuhn,vvhn,wwhn) gotGrid=0 ifield=0 + do ifield=ifield+1 ! @@ -3449,6 +3450,7 @@ subroutine readwind_nest(indj,n,uuhn,vvhn,wwhn) ! AT stepRange is used to identify additional precip fields call grib_get_int(igrib,'stepRange',istep,iret) call grib_check(iret,thisSubr,gribErrorMsg) + ipf=istep+1 if (gribVer.eq.1) then ! GRIB Edition 1 diff --git a/tests/default_options/SPECIES/SPECIES_050 b/tests/default_options/SPECIES/SPECIES_050 new file mode 100755 index 0000000000000000000000000000000000000000..53b8ee977e864d367d7be18b1c6966afb315c96d --- /dev/null +++ b/tests/default_options/SPECIES/SPECIES_050 @@ -0,0 +1,25 @@ +&SPECIES_PARAMS + PSPECIES="DUST-1um ", + PDECAY= -999.900024 , + PWETA_GAS= -9.89999993E-09, + PWETB_GAS= 0.00000000 , + PCRAIN_AERO= 1.00000000 , + PCSNOW_AERO= 1.00000000 , + PCCN_AERO= 0.150000000 , + PIN_AERO= 0.020000000 , + PRELDIFF= -9.89999962 , + PHENRY= 9.99999972E-10, + PF0= 0.00000000 , + PDENSITY= 2650.00000 , + PDQUER= 9.99999997E-07, + PDSIGMA= 1.10000002 , + PDRYVEL= -9.98999977 , + PWEIGHTMOLAR= -999.900024 , + POHCCONST= -9.98999977 , + POHDCONST= -9.89999993E-09, + POHNCONST= 2.00000000 , + PAREA_DOW= 7*1.00000000 , + PAREA_HOUR= 24*1.00000000 , + PPOINT_DOW= 7*1.00000000 , + PPOINT_HOUR= 24*1.00000000 , + / diff --git a/tests/default_options/SPECIES/SPECIES_051 b/tests/default_options/SPECIES/SPECIES_051 new file mode 100755 index 0000000000000000000000000000000000000000..0a88284ce590ffc641ab5099006322b7ad090ae9 --- /dev/null +++ b/tests/default_options/SPECIES/SPECIES_051 @@ -0,0 +1,25 @@ +&SPECIES_PARAMS + PSPECIES="DUST-5um ", + PDECAY= -999.900024 , + PWETA_GAS= -9.89999993E-09, + PWETB_GAS= 0.00000000 , + PCRAIN_AERO= 1.00000000 , + PCSNOW_AERO= 1.00000000 , + PCCN_AERO= 0.150000000 , + PIN_AERO= 0.020000000 , + PRELDIFF= -9.89999962 , + PHENRY= 9.99999972E-10, + PF0= 0.00000000 , + PDENSITY= 2650.00000 , + PDQUER= 4.99999987E-06, + PDSIGMA= 1.10000002 , + PDRYVEL= -9.98999977 , + PWEIGHTMOLAR= -999.900024 , + POHCCONST= -9.98999977 , + POHDCONST= -9.89999993E-09, + POHNCONST= 2.00000000 , + PAREA_DOW= 7*1.00000000 , + PAREA_HOUR= 24*1.00000000 , + PPOINT_DOW= 7*1.00000000 , + PPOINT_HOUR= 24*1.00000000 , + / diff --git a/tests/default_winds/AVAILABLE_europe b/tests/default_winds/AVAILABLE_europe new file mode 100644 index 0000000000000000000000000000000000000000..148f27c135e285b93a3dfbdcd920e4550a05d980 --- /dev/null +++ b/tests/default_winds/AVAILABLE_europe @@ -0,0 +1,5 @@ +XXXXXX EMPTY LINES XXXXXXXXX +XXXXXX EMPTY LINES XXXXXXXX +YYYYMMDD HHMMSS name of the file(up to 80 characters) +20090101 000000 EAe2009010100 ON DISK +20090101 060000 EAe2009010106 ON DISK diff --git a/tests/default_winds/AVAILABLE_glob b/tests/default_winds/AVAILABLE_glob new file mode 100644 index 0000000000000000000000000000000000000000..1cac537d7f4e3e5543525c5ab1cc5ae11faa1246 --- /dev/null +++ b/tests/default_winds/AVAILABLE_glob @@ -0,0 +1,5 @@ +XXXXXX EMPTY LINES XXXXXXXXX +XXXXXX EMPTY LINES XXXXXXXX +YYYYMMDD HHMMSS name of the file(up to 80 characters) +20090101 000000 EA2009010100 ON DISK +20090101 060000 EA2009010106 ON DISK diff --git a/tests/default_winds/EA2009010100.REMOVED.git-id b/tests/default_winds/EA2009010100.REMOVED.git-id new file mode 100644 index 0000000000000000000000000000000000000000..5befc8177e03bdd5d9ba6320cac007e30ae5ff5e --- /dev/null +++ b/tests/default_winds/EA2009010100.REMOVED.git-id @@ -0,0 +1 @@ +b257d5b2f91f61d99001f2da6f12c70af76e9639 \ No newline at end of file diff --git a/tests/default_winds/EA2009010106.REMOVED.git-id b/tests/default_winds/EA2009010106.REMOVED.git-id new file mode 100644 index 0000000000000000000000000000000000000000..83e7dfa9cae95894ed26c2fa86997f88d99de9e1 --- /dev/null +++ b/tests/default_winds/EA2009010106.REMOVED.git-id @@ -0,0 +1 @@ +bb308d6b212632c31de78354e11baa4cdd005916 \ No newline at end of file diff --git a/tests/default_winds/EAe2009010100.REMOVED.git-id b/tests/default_winds/EAe2009010100.REMOVED.git-id new file mode 100644 index 0000000000000000000000000000000000000000..8d4322facff85dfd239cb30ccf0bcd4d10bef3ee --- /dev/null +++ b/tests/default_winds/EAe2009010100.REMOVED.git-id @@ -0,0 +1 @@ +ca1503e70b3d62e549899ae34fca67ed1deed273 \ No newline at end of file diff --git a/tests/default_winds/EAe2009010106.REMOVED.git-id b/tests/default_winds/EAe2009010106.REMOVED.git-id new file mode 100644 index 0000000000000000000000000000000000000000..0a98a706201c172aa69bc722391c95b66a0acaf9 --- /dev/null +++ b/tests/default_winds/EAe2009010106.REMOVED.git-id @@ -0,0 +1 @@ +9198f7028dfc7df0be82cdddd4fc48a5f78277c3 \ No newline at end of file diff --git a/tests/part_ic.nc b/tests/part_ic.nc new file mode 100644 index 0000000000000000000000000000000000000000..5ec33e537c4e90c2732b3564b5be5e81de33fcdc Binary files /dev/null and b/tests/part_ic.nc differ diff --git a/tests/pathnames_nests b/tests/pathnames_nests new file mode 100644 index 0000000000000000000000000000000000000000..491ada3f98de456481e7f9076f5791dc24dd6b53 --- /dev/null +++ b/tests/pathnames_nests @@ -0,0 +1,7 @@ +./current/ +./output/ +./default_winds/ +./default_winds/AVAILABLE_glob +./default_winds/ +./default_winds/AVAILABLE_europe +============================================ \ No newline at end of file diff --git a/tests/run_default_options_test.sh b/tests/run_default_options_test.sh index 2c4d63ad8c7f772a2c390993a08b53892d63b702..8b84987e442a19685aed632ff1de79e056509754 100644 --- a/tests/run_default_options_test.sh +++ b/tests/run_default_options_test.sh @@ -278,7 +278,24 @@ TESTSRUN=$((TESTSRUN + 1)) rm -rf ./current ./output/* # # +#PART_IC.NC input +cp -rf ./default_options ./current +sed -i "/IPIN=/c\ IPIN= 3," ./current/COMMAND +sed -i "/LDIRECT=/c\ LDIRECT= -1," ./current/COMMAND +sed -i "/IOUTPUTFOREACHRELEASE=/c\ IOUTPUTFOREACHRELEASE= 1," ./current/COMMAND +sed -i "/IOUT=/c\ IOUT= 1," ./current/COMMAND +sed -i "/IETIME=/c\ LOUTSTEP= 010000," ./current/COMMAND +sed -i "/LOUTSTEP=/c\ LOUTSTEP= 3600," ./current/COMMAND +sed -i "/LOUTAVER=/c\ LOUTAVER= 3600," ./current/COMMAND +cp -rf part_ic.nc output/ +./FLEXPART pathnames +report "[$MM] TEST $TESTRUN (IPIN=3)" +STATUS=$((STATUS + $?)) +TESTSRUN=$((TESTSRUN + 1)) +# clean up +rm -rf ./current ./output/* # +'' #IFLUX cp -rf ./default_options ./current sed -i "/IFLUX=/c\ IFLUX= 1," ./current/COMMAND diff --git a/tests/run_nests_test.sh b/tests/run_nests_test.sh new file mode 100644 index 0000000000000000000000000000000000000000..11be1af3474f78087985db9dd903f17e0edf8cb0 --- /dev/null +++ b/tests/run_nests_test.sh @@ -0,0 +1,70 @@ +#!/bin/bash +# By LB +# run ETEX simulations +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' +MM='FLEXPART MANUAL NESTS TEST' + +warning() { + printf "%-68s[$YELLOW%10s$NC]\n" "$@" "SKIPPED" + return 0 +} + +report() { + if [ $? -eq 0 ]; then + printf "%-68s[$GREEN%10s$NC]\n" "$@" "OK" + return 0 + else + printf "%-68s[$RED%10s$NC]\n" "$@" "FAILED" + return 1 + fi +} +# +# initial conditions +# +warning "[$MM] $PWD" +# +# Change to directory of this script +# +cd $(dirname $0) +# +# Check for Flexpart executable build before +# +test -f ../src/FLEXPART +report "[$MM] executable: ../src/FLEXPART" || exit 1 +ln -s ../src/FLEXPART . +ln -s ../src/FLEXPART_ETA . +test -d ./default_options +report "[$MM] default options: ./default_options" || exit 1 +cp -rf ./default_options ./current +# +# Different options tests +# +STATUS=0 +TESTSRUN=0 +# run Options test with nested output +# +sed -i "/LOUTNETCDFOUT=/c\ LOUTNETCDFOUT= 1," ./current/COMMAND + +mkdir -p ./output/ +./FLEXPART pathnames_nests +report "[$MM] TEST $TESTRUN (NESTS)" + +STATUS=$((STATUS + $?)) +TESTSRUN=$((TESTSRUN + 1)) + +./FLEXPART_ETA pathnames_nests +report "[$MM] TEST $TESTRUN (ETA NESTS)" + +STATUS=$((STATUS + $?)) +TESTSRUN=$((TESTSRUN + 1)) +# +# FINAL +# +echo "[$MM] Tests failed: $STATUS / $TESTSRUN" +# +# Return collective error status +# +exit $STATUS \ No newline at end of file