diff --git a/bin/ExternalGEFSAnalysisToMPAS.csh b/bin/ExternalGEFSAnalysisToMPAS.csh new file mode 100755 index 00000000..b114f30b --- /dev/null +++ b/bin/ExternalGEFSAnalysisToMPAS.csh @@ -0,0 +1,168 @@ +#!/bin/csh -f + +# (C) Copyright 2023 UCAR +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + +# Process arguments +# ================= +## args +# ArgDT: int, valid time offset beyond CYLC_TASK_CYCLE_POINT in hours +set ArgDT = "$1" + +# ArgWorkDir: my location +set ArgWorkDir = "$2" + +# ArgFilePrefix: prefix for output file +set ArgFilePrefix = "$3" + +# ArgType: type of horizontal mesh +set ArgType = "$4" + +# ArgNCells: number of horizontal mesh cells +set ArgNCells = "$5" + +# ArgRatio: Ratio of horizontal mesh cells +set ArgRatio = "$6" + +# ArgExternalAnalysesDir: location of external analyses +set ArgExternalAnalysesDir = "$7" + +set test = `echo $ArgDT | grep '^[0-9]*$'` +set isNotInt = ($status) +if ( $isNotInt ) then + echo "ERROR in $0 : ArgDT must be an integer, not $ArgDT" + exit 1 +endif + +date + +# Setup environment +# ================= +source config/environmentJEDI.csh +source config/auto/build.csh +source config/auto/experiment.csh +source config/auto/externalanalyses.csh +source config/auto/model.csh +source config/auto/invariantstream.csh +source config/tools.csh +set yymmdd = `echo ${CYLC_TASK_CYCLE_POINT} | cut -c 1-8` +set hh = `echo ${CYLC_TASK_CYCLE_POINT} | cut -c 10-11` +set thisCycleDate = ${yymmdd}${hh} +set thisValidDate = `$advanceCYMDH ${thisCycleDate} ${ArgDT}` +source ./bin/getCycleVars.csh + +set WorkDir = ${ExperimentDirectory}/`echo "$ArgWorkDir" \ + | sed 's@{{thisValidDate}}@'${thisValidDate}'@' \ + ` +set ExternalAnalysesDir = ${ExperimentDirectory}/`echo "$ArgExternalAnalysesDir" \ + | sed 's@{{thisValidDate}}@'${thisValidDate}'@' \ + ` +echo "WorkDir = ${WorkDir}" +mkdir -p ${WorkDir} +cd ${WorkDir} + +# ================================================================================================ + +# only need to continue if output file does not already exist +set outputFile = $ArgFilePrefix.$thisMPASFileDate.nc + +if ( -e $outputFile ) then + if ( -e CONVERTSUCCESS ) then + echo "$0 (INFO): outputFile ($outputFile) and CONVERTSUCCESS file already exist, exiting with success" + echo "$0 (INFO): if regenerating the output outputFile is desired, delete CONVERTSUCCESS" + + date + + exit 0 + endif + +# set oSize = `du -sh $outputFile | sed 's@'$outputFile'@@'` +# if ( "$oSize" != "0" ) then +# echo "$0 (INFO): outputFile ($outputFile) already exists, exiting with success" +# echo "$0 (INFO): if regenerating the outputFile is desired, delete $outputFile" +# +# date +# +# exit 0 +# endif + + rm $outputFile +endif + +# ================================================================================================ +# Process the data for each member +set nmem = 30 # Adjust the number of members + +# Loop through each ensemble member +foreach i (`seq 1 $nmem`) + set mem = `printf "%02d" $i` + set WrkDir = "${WorkDir}/${mem}" + + mkdir -p $WrkDir + + echo "Processing Init. for member ${mem}..." + echo "WrkDir = ${WrkDir}" + cd $WrkDir + + ## link ungribbed files + #ln -sfv ${ExternalAnalysesDir}/${externalanalyses__UngribPrefix}* ./ + ln -sfv ${ExternalAnalysesDir}/${mem}/GEFS* ./ + + ## link MPAS mesh graph info + rm ./x${ArgRatio}.${ArgNCells}.graph.info* + ln -sfv $GraphInfoDir/x${ArgRatio}.${ArgNCells}.graph.info* . + + ## Link MPAS invariant field + if ( $ArgType == "Outer" ) then + ln -sfv $InvariantFieldsDirOuter/$InvariantFieldsFileOuter . + else + ln -sfv $InvariantFieldsDirInner/$InvariantFieldsFileInner . + endif + + ## link lookup tables + foreach fileGlob ($MPASLookupFileGlobs) + rm ./*${fileGlob} + ln -sfv ${MPASLookupDir}/*${fileGlob} . + end + + ## copy/modify dynamic streams file + rm ${StreamsFileInit} + cp -v $ModelConfigDir/initic/${StreamsFileInit} . + sed -i 's@{{nCells}}@'${ArgNCells}'@' ${StreamsFileInit} + sed -i 's@{{PRECISION}}@'${model__precision}'@' ${StreamsFileInit} + sed -i 's@{{meshRatio}}@'${ArgRatio}'@' ${StreamsFileInit} + + ## copy/modify dynamic namelist + rm ${NamelistFileInit} + cp -v $ModelConfigDir/initic/${NamelistFileInit} . + sed -i 's@startTime@'${thisMPASNamelistDate}'@' $NamelistFileInit + sed -i 's@nCells@'${ArgNCells}'@' $NamelistFileInit + sed -i 's@{{meshRatio}}@'${ArgRatio}'@' $NamelistFileInit + #sed -i 's@{{UngribPrefix}}@'${externalanalyses__UngribPrefix}'@' $NamelistFileInit + sed -i 's@{{UngribPrefix}}@'GEFS'@' $NamelistFileInit + + # Run the executable + # ================== + rm ./${InitEXE} + ln -sfv ${InitBuildDir}/${InitEXE} ./ + mpiexec ./${InitEXE} + +# Check status +# ============ + grep "Finished running the init_${MPASCore} core" log.init_${MPASCore}.0000.out + if ( $status != 0 ) then + rm $outputFile + echo "ERROR in $0 : MPAS-init failed" > ./FAIL + exit 1 + endif + +end + +# ============ +date + +touch CONVERTSUCCESS + +exit 0 diff --git a/bin/GetGEFS6hFcstFromAWS.csh b/bin/GetGEFS6hFcstFromAWS.csh new file mode 100755 index 00000000..bad56662 --- /dev/null +++ b/bin/GetGEFS6hFcstFromAWS.csh @@ -0,0 +1,136 @@ +#!/bin/csh -f + +# (C) Copyright 2023 UCAR +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + +# Get GFS analysis (0-h forecast) for cold start initial conditions + +# Process arguments +# ================= +## args +# ArgDT: int, valid time offset beyond CYLC_TASK_CYCLE_POINT in hours +set ArgDT = "$1" + +# ArgWorkDir: my location +set ArgWorkDir = "$2" + +set test = `echo $ArgDT | grep '^[0-9]*$'` +set isNotInt = ($status) +if ( $isNotInt ) then + echo "ERROR in $0 : ArgDT must be an integer, not $ArgDT" + exit 1 +endif + +date + +# Setup environment +# ================= +source config/auto/build.csh +source config/auto/experiment.csh +source config/tools.csh + +set ccyymmdd = `echo ${CYLC_TASK_CYCLE_POINT} | cut -c 1-8` +set hh = `echo ${CYLC_TASK_CYCLE_POINT} | cut -c 10-11` +set thisCycleDate = ${ccyymmdd}${hh} +set thisValidDate = `$advanceCYMDH ${thisCycleDate} ${ArgDT}` + +source ./bin/getCycleVars.csh + + +set WorkDir = ${ExperimentDirectory}/`echo "$ArgWorkDir" \ + | sed 's@{{thisValidDate}}@'${thisValidDate}'@'` + +echo "WorkDir = ${WorkDir}" +mkdir -p ${WorkDir} +cd ${WorkDir} + +# Process the date for each member +set nmem = 30 # Adjust the number of members + +set fc_range = 6 # Forecast range in hours + +set fcstValidDate = `$advanceCYMDH ${thisValidDate} -${fc_range}` +set ccyymmdd = `echo ${fcstValidDate} | cut -c 1-8` +set hh = `echo ${fcstValidDate} | cut -c 9-10` + +set formatted_fc_range = `printf "%03d" $fc_range` + +# Loop through each ensemble member +foreach i (`seq 1 $nmem`) + set mem = `printf "%02d" $i` + set WrkDir = "${WorkDir}/${mem}" + #set WrkDir = "/glade/campaign/mmm/parc/zhuming/pandac_common/GEFS/GEFS_grib/$ccyymmdd$hh/$mem" + + mkdir -p $WrkDir + + echo "Processing member ${mem}..." + echo "WrkDir = ${WrkDir}" + + # Set the URL for GEFS data + set gefsa_url = "s3://noaa-gefs-pds/gefs.$ccyymmdd/$hh/atmos/pgrb2ap5" + set gefsb_url = "s3://noaa-gefs-pds/gefs.$ccyymmdd/$hh/atmos/pgrb2bp5" + echo "gefs_url = ${gefsa_url}, ${gefsb_url}" + + # Define filenames + set pgrb2a = "gep$mem.t${hh}z.pgrb2a.0p50.f${formatted_fc_range}" + set pgrb2b = "gep$mem.t${hh}z.pgrb2b.0p50.f${formatted_fc_range}" + #set pgrb2a = "gep$mem.t${hh}z.pgrb2a.0p50.f`printf "%03d" $fc_range`" + #set pgrb2b = "gep$mem.t${hh}z.pgrb2b.0p50.f`printf "%03d" $fc_range`" + echo "pgrb = ${pgrb2a}, ${pgrb2b}" + + # Check if the files exist before attempting to download + set file_a_exists = `/glade/u/home/liuz/.local/bin/aws s3 ls $gefsa_url/$pgrb2a --no-sign-request` + set file_b_exists = `/glade/u/home/liuz/.local/bin/aws s3 ls $gefsb_url/$pgrb2b --no-sign-request` + #echo "File check output for $pgrb2a: $file_a_exists" + #echo "File check output for $pgrb2b: $file_b_exists" + + if ("$file_a_exists" != "") then + #if (`echo "$file_a_exists" | wc -l` > 0) then + echo "Downloading $pgrb2a..." + /glade/u/home/liuz/.local/bin/aws s3 cp --no-sign-request $gefsa_url/$pgrb2a $WrkDir + else + echo "$pgrb2a does not exist, skipping." + endif + + if ("$file_b_exists" != "") then + #if (`echo "$file_b_exists" | wc -l` > 0) then + echo "Downloading $pgrb2b..." + /glade/u/home/liuz/.local/bin/aws s3 cp --no-sign-request $gefsb_url/$pgrb2b $WrkDir + else + echo "$pgrb2b does not exist, skipping." + endif + + # Combine files if both exist + #if ("$file_a_exists" != "" && "$file_b_exists" != "") then + if (-e ${WrkDir}/$pgrb2a && -e ${WrkDir}/$pgrb2b) then + cat ${WrkDir}/$pgrb2a ${WrkDir}/$pgrb2b > ${WrkDir}/gep$mem.t${hh}z.pgrb2ab.0p50.f${formatted_fc_range} + # Remove the individual pgrb2a and pgrb2b files after combining + rm -f ${WrkDir}/$pgrb2a ${WrkDir}/$pgrb2b + endif + + # Link GRIB files + cd ${WrkDir} + set linkWPS = link_grib.csh + ln -sfv ${WPSBuildDir}/${linkWPS} . + rm -rf GRIBFILE.* + + #set gribFile = gep$mem.t${hh}z.pgrb2ab.0p50.f${formatted_fc_range} + #./${linkWPS} $gribFile + ./link_grib.csh gep$mem.t${hh}z.pgrb2ab.0p50.f${formatted_fc_range} + +end + +# ================================================================================================ + +if ( -e GETSUCCESS ) then + echo "$0 (INFO): GETSUCCESS file already exists, exiting with success" + echo "$0 (INFO): if regenerating the output files is desired, delete GETSUCCESS" + + date + + exit 0 +endif + +# ================================================================================================ diff --git a/bin/GetGEFSAnalysisFromAWS.csh b/bin/GetGEFSAnalysisFromAWS.csh new file mode 100755 index 00000000..0c5abb63 --- /dev/null +++ b/bin/GetGEFSAnalysisFromAWS.csh @@ -0,0 +1,144 @@ +#!/bin/csh -f + +# (C) Copyright 2023 UCAR +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + +# Get GFS analysis (0-h forecast) for cold start initial conditions + +# Process arguments +# ================= +## args +# ArgDT: int, valid time offset beyond CYLC_TASK_CYCLE_POINT in hours +set ArgDT = "$1" + +# ArgWorkDir: my location +set ArgWorkDir = "$2" + +set test = `echo $ArgDT | grep '^[0-9]*$'` +set isNotInt = ($status) +if ( $isNotInt ) then + echo "ERROR in $0 : ArgDT must be an integer, not $ArgDT" + exit 1 +endif + +date + +# Setup environment +# ================= +source config/auto/build.csh +source config/auto/experiment.csh +source config/tools.csh + +set ccyymmdd = `echo ${CYLC_TASK_CYCLE_POINT} | cut -c 1-8` +set hh = `echo ${CYLC_TASK_CYCLE_POINT} | cut -c 10-11` +set thisCycleDate = ${ccyymmdd}${hh} +set thisValidDate = `$advanceCYMDH ${thisCycleDate} ${ArgDT}` + +source ./bin/getCycleVars.csh + +set ccyymmdd = `echo ${thisValidDate} | cut -c 1-8` +set hh = `echo ${thisValidDate} | cut -c 9-10` + +set WorkDir = ${ExperimentDirectory}/`echo "$ArgWorkDir" \ + | sed 's@{{thisValidDate}}@'${thisValidDate}'@'` + +echo "WorkDir = ${WorkDir}" +mkdir -p ${WorkDir} +cd ${WorkDir} + +# Process the date for each member +set nmem = 30 # Adjust the number of members + +set fc_range = 0 # Forecast range in hours +set formatted_fc_range = `printf "%03d" $fc_range` + +# Loop through each ensemble member +foreach i (`seq 1 $nmem`) + set mem = `printf "%02d" $i` + set WrkDir = "${WorkDir}/${mem}" + #set WrkDir = "/glade/campaign/mmm/parc/zhuming/pandac_common/GEFS/GEFS_grib/$ccyymmdd$hh/$mem" + + mkdir -p $WrkDir + + echo "Processing member ${mem}..." + echo "WrkDir = ${WrkDir}" + + # Set the URL for GEFS data + set gefsa_url = "s3://noaa-gefs-pds/gefs.$ccyymmdd/$hh/atmos/pgrb2ap5" + set gefsb_url = "s3://noaa-gefs-pds/gefs.$ccyymmdd/$hh/atmos/pgrb2bp5" + echo "gefs_url = ${gefsa_url}, ${gefsb_url}" + + # Define filenames + set pgrb2a = "gep$mem.t${hh}z.pgrb2a.0p50.f${formatted_fc_range}" + set pgrb2b = "gep$mem.t${hh}z.pgrb2b.0p50.f${formatted_fc_range}" + #set pgrb2a = "gep$mem.t${hh}z.pgrb2a.0p50.f`printf "%03d" $fc_range`" + #set pgrb2b = "gep$mem.t${hh}z.pgrb2b.0p50.f`printf "%03d" $fc_range`" + echo "pgrb = ${pgrb2a}, ${pgrb2b}" + + # Check if the files exist before attempting to download + set file_a_exists = `/glade/u/home/liuz/.local/bin/aws s3 ls $gefsa_url/$pgrb2a --no-sign-request` + set file_b_exists = `/glade/u/home/liuz/.local/bin/aws s3 ls $gefsb_url/$pgrb2b --no-sign-request` + + if ("$file_a_exists" != "") then + echo "Downloading $pgrb2a..." + /glade/u/home/liuz/.local/bin/aws s3 cp --no-sign-request $gefsa_url/$pgrb2a $WrkDir + else + echo "$pgrb2a does not exist, skipping." + endif + + if ("$file_b_exists" != "") then + echo "Downloading $pgrb2b..." + /glade/u/home/liuz/.local/bin/aws s3 cp --no-sign-request $gefsb_url/$pgrb2b $WrkDir + else + echo "$pgrb2b does not exist, skipping." + endif + + # Download files if they exist + #if (/glade/u/home/liuz/.local/bin/aws s3 ls $gefsa_url/$pgrb2a --no-sign-request) then + # echo "Downloading $pgrb2a..." + # /glade/u/home/liuz/.local/bin/aws s3 cp --no-sign-request $gefsa_url/$pgrb2a $WrkDir + # else + #echo "$pgrb2a does not exist, skipping." + # endif + + #if (/glade/u/home/liuz/.local/bin/aws s3 ls $gefsb_url/$pgrb2b --no-sign-request) then + # echo "Downloading $pgrb2b..." + #i /glade/u/home/liuz/.local/bin/aws s3 cp --no-sign-request $gefsb_url/$pgrb2b $WrkDir + # else + # echo "$pgrb2b does not exist, skipping." + # endif + + # Combine files if both exist + #if ("$file_a_exists" != "" && "$file_b_exists" != "") then + if (-e ${WrkDir}/$pgrb2a && -e ${WrkDir}/$pgrb2b) then + cat ${WrkDir}/$pgrb2a ${WrkDir}/$pgrb2b > ${WrkDir}/gep$mem.t${hh}z.pgrb2ab.0p50.f${formatted_fc_range} + # Remove the individual pgrb2a and pgrb2b files after combining + rm -f ${WrkDir}/$pgrb2a ${WrkDir}/$pgrb2b + endif + + # Link GRIB files + cd ${WrkDir} + set linkWPS = link_grib.csh + ln -sfv ${WPSBuildDir}/${linkWPS} . + rm -rf GRIBFILE.* + + #set gribFile = gep$mem.t${hh}z.pgrb2ab.0p50.f${formatted_fc_range} + #./${linkWPS} $gribFile + ./link_grib.csh gep$mem.t${hh}z.pgrb2ab.0p50.f${formatted_fc_range} + +end + +# ================================================================================================ + +if ( -e GETSUCCESS ) then + echo "$0 (INFO): GETSUCCESS file already exists, exiting with success" + echo "$0 (INFO): if regenerating the output files is desired, delete GETSUCCESS" + + date + + exit 0 +endif + +# ================================================================================================ diff --git a/bin/ObsToIODA.csh b/bin/ObsToIODA.csh index 11a13e59..cf590430 100755 --- a/bin/ObsToIODA.csh +++ b/bin/ObsToIODA.csh @@ -79,7 +79,7 @@ foreach gdasfile ( *"gdas."* ) if ( ${gdasfile} =~ *"cris"* && ${ccyy} >= '2021' ) then ln -sf ${CRTMTABLES}/cris-fsr431_npp.SpcCoeff.bin ./cris_npp.SpcCoeff.bin ln -sf ${CRTMTABLES}/cris-fsr431_n20.SpcCoeff.bin ./cris_n20.SpcCoeff.bin - #ln -sf ${CRTMTABLES}/cris-fsr431_n21.SpcCoeff.bin ./cris_n21.SpcCoeff.bin + ln -sf ${CRTMTABLES}/cris-fsr431_n21.SpcCoeff.bin ./cris_n21.SpcCoeff.bin else if ( ${gdasfile} =~ *"cris"* && ${ccyy} < '2021' ) then ln -sf ${CRTMTABLES}/cris399_npp.SpcCoeff.bin ./cris_npp.SpcCoeff.bin ln -sf ${CRTMTABLES}/cris399_n20.SpcCoeff.bin ./cris_n20.SpcCoeff.bin @@ -205,7 +205,7 @@ set V2toV3 = ( $V1toV2 \ iasi_metop-c \ cris_npp \ cris_n20 \ - #cris_n21 \ + cris_n21 \ ) set iodaUpgradeV3Config = ${ConfigDir}/jedi/obsProc/ObsSpaceV2-to-V3.yaml @@ -257,7 +257,7 @@ set ScanPositionUpdate = ( \ iasi_metop-c \ cris_npp \ cris_n20 \ - #cris_n21 \ + cris_n21 \ ) ln -fs ${pyDir}/update_sensorScanPosition.py . @@ -279,7 +279,7 @@ foreach ty ( ${ScanPositionUpdate} ) if ( ${ty} =~ *"cris"* && ${ccyy} >= 2021 ) then if ( ${ty} == "cris_npp" ) set tyy = "cris-fsr_npp" if ( ${ty} == "cris_n20" ) set tyy = "cris-fsr_n20" - #if ( ${ty} == "cris_n21" ) set tyy = "cris-fsr_n21" + if ( ${ty} == "cris_n21" ) set tyy = "cris-fsr_n21" mv -f ${ty_obs}.modified ${tyy}_obs_${thisValidDate}.h5 else mv -f ${ty_obs}.modified ${ty_obs} diff --git a/bin/UngribExternalGEFSAnalysis.csh b/bin/UngribExternalGEFSAnalysis.csh new file mode 100755 index 00000000..13c23931 --- /dev/null +++ b/bin/UngribExternalGEFSAnalysis.csh @@ -0,0 +1,106 @@ +#!/bin/csh -f + +# (C) Copyright 2023 UCAR +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + +# Process arguments +# ================= +## args +# ArgDT: int, valid time offset beyond CYLC_TASK_CYCLE_POINT in hours +set ArgDT = "$1" + +# ArgWorkDir: my location +set ArgWorkDir = "$2" + +set test = `echo $ArgDT | grep '^[0-9]*$'` +set isNotInt = ($status) +if ( $isNotInt ) then + echo "ERROR in $0 : ArgDT must be an integer, not $ArgDT" + exit 1 +endif + +date + +# Setup environment +# ================= +source config/environmentJEDI.csh +source config/auto/build.csh +source config/auto/experiment.csh +source config/auto/externalanalyses.csh +source config/auto/model.csh +source config/tools.csh +set yymmdd = `echo ${CYLC_TASK_CYCLE_POINT} | cut -c 1-8` +set hh = `echo ${CYLC_TASK_CYCLE_POINT} | cut -c 10-11` +set thisCycleDate = ${yymmdd}${hh} +set thisValidDate = `$advanceCYMDH ${thisCycleDate} ${ArgDT}` +source ./bin/getCycleVars.csh + +set WorkDir = ${ExperimentDirectory}/`echo "$ArgWorkDir" \ + | sed 's@{{thisValidDate}}@'${thisValidDate}'@' \ + ` +echo "WorkDir = ${WorkDir}" +mkdir -p ${WorkDir} +cd ${WorkDir} + +#======================================= +if ( -e UNGRIBSUCCESS ) then + echo "$0 (INFO): UNGRIBSUCCESS file already exists, exiting with success" + echo "$0 (INFO): if regenerating the output files is desired, delete UNGRIBSUCCESS" + + date + + exit 0 +endif + +# ================================================================================================ +# Process the data for each member +set nmem = 30 # Adjust the number of members + +#set fc_range = 0 # Forecast range in hours +#set formatted_fc_range = `printf "%03d" $fc_range` + +# Loop through each ensemble member +foreach i (`seq 1 $nmem`) + set mem = `printf "%02d" $i` + set WrkDir = "${WorkDir}/${mem}" + + #mkdir -p $WrkDir + + echo "Ungrib member ${mem}..." + echo "WrkDir = ${WrkDir}" + cd $WrkDir + + + ## link Vtable file + ln -sfv ${externalanalyses__Vtable} Vtable + + ## copy/modify dynamic namelist + rm -f ${NamelistFileWPS} + cp -v $ModelConfigDir/initic/${NamelistFileWPS} . + sed -i 's@startTime@'${thisMPASNamelistDate}'@' $NamelistFileWPS + #sed -i 's@{{UngribPrefix}}@'${externalanalyses__UngribPrefix}'@' $NamelistFileWPS + sed -i 's@{{UngribPrefix}}@'GEFS'@' $NamelistFileWPS + + # Run the executable + rm -f ./${ungribEXE} + ln -sfv ${WPSBuildDir}/${ungribEXE} ./ + ./${ungribEXE} + + # Check status + grep "Successful completion of program ${ungribEXE}" ungrib.log + if ( $status != 0 ) then + echo "ERROR in $0 : Ungrib failed" > ./FAIL + exit 1 + endif + +end + +#======================================= +date + +touch UNGRIBSUCCESS + +exit 0 + diff --git a/config/jedi/applications/3dhybrid.yaml b/config/jedi/applications/3dhybrid.yaml index 2b73a510..c469c1ac 100644 --- a/config/jedi/applications/3dhybrid.yaml +++ b/config/jedi/applications/3dhybrid.yaml @@ -61,6 +61,21 @@ cost function: drivers: multivariate strategy: univariate read local nicas: true + grids: + - model: + variables: + - stream_function + - velocity_potential + - temperature + - spechum + - qc + - qi + - qg + - qr + - qs + - model: + variables: + - surface_pressure saber outer blocks: - saber block name: StdDev read: diff --git a/config/jedi/applications/3dvar.yaml b/config/jedi/applications/3dvar.yaml index cf9db7f3..64f67089 100644 --- a/config/jedi/applications/3dvar.yaml +++ b/config/jedi/applications/3dvar.yaml @@ -22,6 +22,7 @@ cost function: time window: begin: {{windowBegin}} length: {{windowLength}} + jb evaluation: false geometry: nml_file: {{OuterNamelistFile}} streams_file: {{OuterStreamsFile}}{{StreamsFileMember}} @@ -44,6 +45,21 @@ cost function: drivers: multivariate strategy: univariate read local nicas: true + grids: + - model: + variables: + - stream_function + - velocity_potential + - temperature + - spechum + - qc + - qi + - qg + - qr + - qs + - model: + variables: + - surface_pressure saber outer blocks: - saber block name: StdDev read: diff --git a/config/mpas/forecast/namelist.atmosphere b/config/mpas/forecast/namelist.atmosphere index 86aa5369..0a8532dc 100644 --- a/config/mpas/forecast/namelist.atmosphere +++ b/config/mpas/forecast/namelist.atmosphere @@ -30,7 +30,7 @@ config_smdiv = 0.1 / &damping - config_zd = 22000.0 + config_zd = 32000.0 config_xnutr = 0.2 / &limited_area diff --git a/config/mpas/initic/mpas_vcoord_L66_40kmTop.txt b/config/mpas/initic/mpas_vcoord_L66_40kmTop.txt new file mode 100644 index 00000000..11ad941d --- /dev/null +++ b/config/mpas/initic/mpas_vcoord_L66_40kmTop.txt @@ -0,0 +1,67 @@ +0. +26.00000 +64.89689 +116.5302 +183.2754 +265.5079 +362.6031 +474.9367 +601.8839 +743.8204 +901.1213 +1075.163 +1265.319 +1472.967 +1697.481 +1931.237 +2181.611 +2448.977 +2733.712 +3036.191 +3356.789 +3695.881 +4053.843 +4431.052 +4827.881 +5244.708 +5681.906 +6139.853 +6618.919 +7119.486 +7641.927 +8186.618 +8753.932 +9344.248 +9957.938 +10595.38 +11256.95 +11943.02 +12653.97 +13390.17 +14152.0 +14939.83 +15754.04 +16595.01 +17463.11 +18358.72 +19282.2 +20233.94 +21214.32 +22223.7 +23261.54 +24307.69 +25353.85 +26400. +27446.15 +28492.31 +29538.46 +30584.62 +31630.77 +32676.92 +33723.08 +34769.23 +35815.38 +36861.54 +37907.7 +38953.84 +40000.0 diff --git a/config/mpas/initic/namelist.init_atmosphere b/config/mpas/initic/namelist.init_atmosphere index d6d54b80..f2db3915 100644 --- a/config/mpas/initic/namelist.init_atmosphere +++ b/config/mpas/initic/namelist.init_atmosphere @@ -6,9 +6,9 @@ config_coef_3rd_order = 0.25 / &dimensions - config_nvertlevels = 55 + config_nvertlevels = 66 config_nsoillevels = 4 - config_nfglevels = 38 + config_nfglevels = 42 config_nfgsoillevels = 4 / &data_sources @@ -21,12 +21,13 @@ config_use_spechumd = false / &vertical_grid - config_ztop = 30000.0 + config_ztop = 40000.0 config_nsmterrain = 1 config_smooth_surfaces = true config_dzmin = 0.3 config_nsm = 30 - config_tc_vertical_grid = true + config_tc_vertical_grid = false + config_specified_zeta_levels = '/glade/campaign/mmm/parc/zhuming/pandac_common/init_L66/mpas_vcoord_L66_40kmTop.txt' / &interpolation_control config_extrap_airtemp = 'linear' diff --git a/config/mpas/saca/namelist.atmosphere b/config/mpas/saca/namelist.atmosphere index e7f17464..7bb3c84f 100644 --- a/config/mpas/saca/namelist.atmosphere +++ b/config/mpas/saca/namelist.atmosphere @@ -30,7 +30,7 @@ config_smdiv = 0.1 / &damping - config_zd = 22000.0 + config_zd = 32000.0 config_xnutr = 0.2 / &limited_area diff --git a/config/mpas/variational/namelist.atmosphere b/config/mpas/variational/namelist.atmosphere index eaff8ecf..7a372318 100644 --- a/config/mpas/variational/namelist.atmosphere +++ b/config/mpas/variational/namelist.atmosphere @@ -30,7 +30,7 @@ config_smdiv = 0.1 / &damping - config_zd = 22000.0 + config_zd = 32000.0 config_xnutr = 0.2 / &limited_area diff --git a/initialize/data/ExternalAnalyses.py b/initialize/data/ExternalAnalyses.py index 62d332cf..5d4efdbf 100644 --- a/initialize/data/ExternalAnalyses.py +++ b/initialize/data/ExternalAnalyses.py @@ -53,6 +53,9 @@ def __init__(self, config:Config, hpc:HPC, meshes:dict): self._set('ExternalAnalysesDir'+meshTyp, self.workDir+'/'+mesh.name+'/{{thisValidDate}}') self._cshVars.append('ExternalAnalysesDir'+meshTyp) + self._set('ExternalAnalysesDir2'+meshTyp, self.workDir+'/'+mesh.name+ 'GEFS' +'/{{thisValidDate}}') + self._cshVars.append('ExternalAnalysesDir2'+meshTyp) + for (key, typ) in [ ['directory', str], ['filePrefix', str], @@ -118,6 +121,29 @@ def __init__(self, config:Config, hpc:HPC, meshes:dict): ungribjob = Resource(self._conf, attr, ('job', 'ungrib')) self.__ungribtask = TaskLookup[hpc.system](ungribjob) + attr = { + 'seconds': {'def': 2000}, + 'nodes': {'def': 1}, + 'PEPerNode': {'def': 128}, + 'retry': {'def': '2*PT30S'}, + 'queue': {'def': hpc['CriticalQueue']}, + 'account': {'def': hpc['CriticalAccount']}, + } + initjob = Resource(self._conf, attr, ('job', 'init')) + self.__inittask = TaskLookup[hpc.system](initjob) + + #attr = { + # 'retry': {'def': str}, + # 'seconds': {'def': int}, + # 'nodes': {'def': int}, + # 'PEPerNode': {'def': int}, + # 'queue': {'def': hpc['CriticalQueue']}, + # 'account': {'def': hpc['CriticalAccount']}, + #} + #job = Resource(self._conf, attr, ('job', meshes['Outer'].name)) + #self.__task = TaskLookup[hpc.system](job) + + ######### # outputs ######### @@ -135,10 +161,14 @@ def export(self, dtOffsets:list=[0]): # only once for each mesh meshTypes = [] meshNames = [] + meshNCells = [] + meshRatios = [] for meshTyp, mesh in self.meshes.items(): if mesh.name not in meshNames: meshNames.append(mesh.name) meshTypes.append(meshTyp) + meshNCells.append(mesh.nCells) + meshRatios.append(mesh.meshRatio) subqueues = [] prevTaskNames = {} @@ -149,6 +179,69 @@ def export(self, dtOffsets:list=[0]): dt_work_Args = '"'+dtStr+'" "'+self.WorkDir+'"' taskNames = {} + # ExternalAnalysisToMPAS + base = 'ExternalGEFSAnalysisToMPAS' + #queue = 'ExternalGEFSAnalysisToMPAS' + queue = 'ConvertExternalAnalyses' + if base in self['PrepareExternalAnalysisOuter']: + subqueues.append(queue) + for (meshTyp, meshName, nCells, meshRatio) in zip(meshTypes, meshNames, meshNCells, meshRatios): + prevTaskName = None + args = [ + dt, + #self['ExternalAnalysesDir'+meshTyp], + self['ExternalAnalysesDir2'+meshTyp], + self['externalanalyses__filePrefix'+meshTyp], + meshTyp, + nCells, + meshRatio, + #self['externalanalyses__directory'+meshTyp], + self.WorkDir, + ] + + initArgs = ' '.join(['"'+str(a)+'"' for a in args]) + #taskNames[(base, meshName)] = base+'-'+meshName+dtLen + taskNames[(base, meshName)] = base+'-'+meshName+'-'+dtStr+'hr' + #taskNames = base+'-'+meshName+'-'+dtStr+'hr' + + self._tasks += [''' + [['''+taskNames[(base, meshName)]+''']] + inherit = '''+queue+''', BATCH + #inherit = '''+queue+''', '''+self.tf.execute+''', BATCH + #script = $origin/bin/ExternalAnalysisToMPAS.csh '''+initArgs+''' + script = $origin/bin/'''+base+'''.csh '''+initArgs+''' +'''+self.__inittask.job()+self.__inittask.directives()] +#'''+self.__task.job()+self.__task.directives()+''' +# [[[events]]] +# submission timeout = PT10M'''] + + + # make task[t+dt] depend on task[t] + if prevTaskName is not None: + # special catch-all succeed string needed due to 0hr naming below + if dtOffsets[0] == 0 and dtOffsets.index(dt) == 1: + success = ':succeed-all' + else: + success = '' + + self._dependencies += [''' + '''+prevTaskName+success+''' => '''+taskName] + + #prevTaskName = taskName + prevTaskName = taskNames[(base, meshName)] + + # generic 0hr task names for external classes/tasks to grab + self._tasks += [''' + [['''+base+'''-'''+meshName+''']] + inherit = '''+base+'''-'''+meshName+zeroHR] + + # generic 0hr task name for external classes/tasks to grab + #if dt == 0: + # self._tasks += [''' + #[['''+base+'''-'''+meshName+''']] + # inherit = '''+base+'''-'''+meshName+zeroHR] + + # GDAS FTP base = 'GetGDASAnalysisFromFTP' queue = 'GetExternalAnalyses' @@ -187,6 +280,7 @@ def export(self, dtOffsets:list=[0]): [['''+base+''']] inherit = '''+base+zeroHR] + # GFS FTP base = 'GetGFSAnalysisFromFTP' queue = 'GetExternalAnalyses' @@ -206,6 +300,66 @@ def export(self, dtOffsets:list=[0]): [['''+base+''']] inherit = '''+base+zeroHR] + + # GEFS0 AWS + base = 'GetGEFSAnalysisFromAWS' + queue = 'GetExternalAnalyses' + if base in self['PrepareExternalAnalysisOuter']: + subqueues.append(queue) + taskNames[base] = base+dtLen + self._tasks += [''' + [['''+taskNames[base]+''']] + inherit = '''+queue+''', SingleBatch + script = $origin/bin/'''+base+'''.csh '''+dt_work_Args+''' + execution time limit = PT20M + execution retry delays = '''+self.__getRetry] + + # generic 0hr task name for external classes/tasks to grab + if dt == 0: + self._tasks += [''' + [['''+base+''']] + inherit = '''+base+zeroHR] + + + # GEFS6HF AWS + base = 'GetGEFS6hFcstFromAWS' + queue = 'GetExternalAnalyses' + if base in self['PrepareExternalAnalysisOuter']: + subqueues.append(queue) + taskNames[base] = base+dtLen + self._tasks += [''' + [['''+taskNames[base]+''']] + inherit = '''+queue+''', SingleBatch + script = $origin/bin/'''+base+'''.csh '''+dt_work_Args+''' + execution time limit = PT20M + execution retry delays = '''+self.__getRetry] + + # generic 0hr task name for external classes/tasks to grab + if dt == 0: + self._tasks += [''' + [['''+base+''']] + inherit = '''+base+zeroHR] + + + # ungribGEFS + base = 'UngribExternalGEFSAnalysis' + queue = 'UngribExternalGEFSAnalyses' + if base in self['PrepareExternalAnalysisOuter']: + subqueues.append(queue) + taskNames[base] = base+dtLen + self._tasks += [''' + [['''+taskNames[base]+''']] + inherit = '''+queue+''', BATCH + script = $origin/bin/'''+base+'''.csh '''+dt_work_Args+''' +'''+self.__ungribtask.job()+self.__ungribtask.directives()] + + # generic 0hr task name for external classes/tasks to grab + if dt == 0: + self._tasks += [''' + [['''+base+''']] + inherit = '''+base+zeroHR] + + # ungrib base = 'UngribExternalAnalysis' queue = 'UngribExternalAnalyses' @@ -224,6 +378,8 @@ def export(self, dtOffsets:list=[0]): [['''+base+''']] inherit = '''+base+zeroHR] + + # link ungrib base = 'LinkUngribbedExternalAnalysis' queue = 'LinkUngribbedExternalAnalysis' @@ -302,6 +458,7 @@ def export(self, dtOffsets:list=[0]): inherit = '''+base+'''-'''+meshName+zeroHR] + # for all above, make task[t] depend on task[t-dt] for key, t_taskName in taskNames.items(): if key in prevTaskNames: diff --git a/initialize/data/Observations.py b/initialize/data/Observations.py index 1533fdcd..7891e226 100644 --- a/initialize/data/Observations.py +++ b/initialize/data/Observations.py @@ -33,9 +33,16 @@ 'amsua_aqua', 'amsua_metop-a', 'amsua_metop-b', + 'amsua_metop-c', 'amsua_n15', 'amsua_n18', 'amsua_n19', + #'amsua-cld_metop-a', + #'amsua-cld_metop-b', + #'amsua-cld_metop-c', + #'amsua-cld_n15', + #'amsua-cld_n18', + #'amsua-cld_n19', 'mhs_metop-a', 'mhs_metop-b', 'mhs_n18', @@ -86,8 +93,10 @@ class Observations(Component): # static directories for bias correction files 'fixedCoeff': ['/glade/campaign/mmm/parc/jban/pandac_common/obs/satbias', str], - 'fixedTlapmeanCov': ['/glade/campaign/mmm/parc/jban/pandac_common/obs/satbias/2018', str], - 'initialVARBCcoeff': ['/glade/campaign/mmm/parc/jban/pandac_common/obs/satbias/2018', str], + #'fixedTlapmeanCov': ['/glade/campaign/mmm/parc/jban/pandac_common/obs/satbias/2018', str], + #'initialVARBCcoeff': ['/glade/campaign/mmm/parc/jban/pandac_common/obs/satbias/2018', str], + 'fixedTlapmeanCov': ['/glade/campaign/mmm/parc/jban/pandac_common/obs/satbias/2023', str], + 'initialVARBCcoeff': ['/glade/campaign/mmm/parc/jban/pandac_common/obs/satbias/2023', str], } def __init__(self, diff --git a/initialize/framework/Build.py b/initialize/framework/Build.py index 480665f1..6956bc1d 100644 --- a/initialize/framework/Build.py +++ b/initialize/framework/Build.py @@ -155,7 +155,8 @@ def __init__(self, config:Config, model:Model=None): # Obs2IODA-v2 # ----------- self._set('obs2iodaEXE', 'obs2ioda-v2.x') - self._set('obs2iodaBuildDir', '/glade/campaign/mmm/parc/ivette/pandac/fork_obs2ioda/obs2ioda/obs2ioda-v2/src') + #self._set('obs2iodaBuildDir', '/glade/campaign/mmm/parc/ivette/pandac/fork_obs2ioda/obs2ioda/obs2ioda-v2/src') + self._set('obs2iodaBuildDir', '/glade/campaign/mmm/parc/ivette/pandac/codeBuild/obs2ioda/obs2ioda-v2/src') self._set('iodaUpgradeEXE1', 'ioda-upgrade-v1-to-v2.x') self._set('iodaUpgradeEXE2', 'ioda-upgrade-v2-to-v3.x') self._set('iodaUpgradeBuildDir', self['mpas bundle']+'/bin') diff --git a/initialize/suites/GenerateExternalAnalyses.py b/initialize/suites/GenerateExternalAnalyses.py index 6cf3bc3c..4c5752ae 100644 --- a/initialize/suites/GenerateExternalAnalyses.py +++ b/initialize/suites/GenerateExternalAnalyses.py @@ -15,6 +15,7 @@ from initialize.data.ExternalAnalyses import ExternalAnalyses from initialize.data.Model import Model +from initialize.data.InvariantStream import InvariantStream from initialize.framework.Build import Build from initialize.framework.Experiment import Experiment @@ -27,10 +28,12 @@ def __init__(self, conf:Config): super().__init__(conf) self.c['model'] = Model(conf) + meshes = self.c['model'].getMeshes() self.c['build'] = Build(conf, self.c['model']) self.c['externalanalyses'] = ExternalAnalyses(conf, self.c['hpc'], self.c['model'].getMeshes()) self.c['initic'] = InitIC(conf, self.c['hpc'], self.c['model'].getMeshes(), self.c['externalanalyses']) self.c['experiment'] = Experiment(conf, self.c['hpc']) + self.c['ss'] = InvariantStream(conf, meshes, self.c['workflow']['FirstCycleDate'], self.c['externalanalyses'], self.c['experiment']) self.c['naming'] = Naming(conf, self.c['experiment']) # TODO: make members optional, modify getCycleVars diff --git a/real.csh b/real.csh new file mode 100755 index 00000000..8fdf41fe --- /dev/null +++ b/real.csh @@ -0,0 +1,95 @@ +#!/bin/csh + +# Set the start time variable +# setenv STARTIME `date -u +%Y%m%d%H%M%S` +# setenv STARTIME `date -u +%Y%m%d%H%M` +setenv STARTIME `date -u +%Y%m%d%H` +#setenv STARTIME 2024103009 +# setenv STARTIME `cat date.dat` +echo "Original Start Time: $STARTIME" + +# Extract components from STARTIME +setenv YYYY `echo $STARTIME | cut -c1-4` +setenv MM `echo $STARTIME | cut -c5-6` +setenv DD `echo $STARTIME | cut -c7-8` +setenv HH `echo $STARTIME | cut -c9-10` + +# Adjust the start time by subtracting 3 hours +setenv STARTIME `date -d "${YYYY}-${MM}-${DD} ${HH} -3 hours" +"%Y%m%d%H"` +setenv YYYY `echo $STARTIME | cut -c1-4` +setenv MM `echo $STARTIME | cut -c5-6` +setenv DD `echo $STARTIME | cut -c7-8` +setenv HH `echo $STARTIME | cut -c9-10` +echo "Start Time: $STARTIME" + +# Set the cycle window +set CYCLE_WINDOW = 6 + +# Calculate cycle and hour +@ CYCLE = $HH / $CYCLE_WINDOW +@ HR = $CYCLE * $CYCLE_WINDOW +echo "HR: $HR" +#set HH = $HR + +if ($HR < 10) then + set HH = "0$HR" +else + set HH = $HR +endif +echo "HH: $HH" +# Calculate cycle number +@ CYCLE_NUMBER = $CYCLE + 1 + +# Set cycle time +set CYCLE_TIME = "${YYYY}${MM}${DD}T${HH}" +set DATE_TIME = "${YYYY}${MM}${DD}${HH}" + +# Subtract cycle window hours to get STARTIME0 +setenv STARTIME0 `date -d "${YYYY}-${MM}-${DD} ${HH} -${CYCLE_WINDOW} hours" +"%Y%m%d%H"` +setenv YYYY0 `echo $STARTIME0 | cut -c1-4` +setenv MM0 `echo $STARTIME0 | cut -c5-6` +setenv DD0 `echo $STARTIME0 | cut -c7-8` +setenv HH0 `echo $STARTIME0 | cut -c9-10` +set CYCLE_TIME0 = "${YYYY0}${MM0}${DD0}T${HH0}" +set DATE_TIME0 = "${YYYY0}${MM0}${DD0}${HH0}" + +echo "$STARTIME, $CYCLE_TIME, $CYCLE_TIME0, $CYCLE_NUMBER" + +#link gefs data +cd /glade/derecho/scratch/zhuming/pandac/gefs30km_ensFc +ln -sf /glade/campaign/mmm/parc/zhuming/GenerateGEFS/ExternalAnalyses/30kmGEFS/${DATE_TIME} ./${DATE_TIME0} +# + +cd /glade/work/zhuming/pandac/MPAS-Workflow_3.0.2/ + +# Source environment setup script +source env-setup/machine.csh + +# Clean up and generate the new YAML file +#rm -f ./GenerateObs_${CYCLE_TIME}.yaml +#cat > script.sed << EOF +# / first cycle point:/c\ first cycle point: ${CYCLE_TIME0} +# / final cycle point:/c\ final cycle point: ${CYCLE_TIME} +#EOF +#sed -f script.sed ./test/GenerateObs.yaml > ./test/GenerateObs_${CYCLE_TIME}.yaml + +# Run the Python script +#./Run.py test/GenerateObs_${CYCLE_TIME}.yaml + +# Clean up and generate the new YAML file of 3dvar_OIE30km_Realtime +cat > script.sed << EOF + / restart cycle point:/c\ restart cycle point: ${CYCLE_TIME} + / final cycle point:/c\ final cycle point: ${CYCLE_TIME} +EOF + +rm -f ./test/tmp/Realtime_${CYCLE_TIME}.yaml +#sed -f script.sed ./test/3dvar_OIE30km_Realtime.yaml > ./test/tmp/Realtime_${CYCLE_TIME}.yaml +#sed -f script.sed ./test/3dvar_OIE30km-allsky_Realtime.yaml > ./test/tmp/Realtime_${CYCLE_TIME}.yaml +sed -f script.sed ./test/3denvar_OIE30km_Realtime.yaml > ./test/tmp/Realtime_${CYCLE_TIME}.yaml + +# Run the Python script +./Run.py test/tmp/Realtime_${CYCLE_TIME}.yaml + +#rm -f ./test/3dvar_OIE30km_Realtime2_${CYCLE_TIME}.yaml +#sed -f script.sed ./test/3dvar_OIE30km_Realtime2.yaml > ./test/3dvar_OIE30km_Realtime2_${CYCLE_TIME}.yaml +#./Run.py test/3dvar_OIE30km_Realtime2_${CYCLE_TIME}.yaml diff --git a/realgefs.csh b/realgefs.csh new file mode 100755 index 00000000..ad26b405 --- /dev/null +++ b/realgefs.csh @@ -0,0 +1,83 @@ +#!/bin/csh + +# Set the start time variable +# setenv STARTIME `date -u +%Y%m%d%H%M%S` +# setenv STARTIME `date -u +%Y%m%d%H%M` +setenv STARTIME `date -u +%Y%m%d%H` +#setenv STARTIME 2024103009 +# setenv STARTIME `cat date.dat` +echo "Original Start Time: $STARTIME" + +# Extract components from STARTIME +setenv YYYY `echo $STARTIME | cut -c1-4` +setenv MM `echo $STARTIME | cut -c5-6` +setenv DD `echo $STARTIME | cut -c7-8` +setenv HH `echo $STARTIME | cut -c9-10` + +# Adjust the start time by subtracting 3 hours +setenv STARTIME `date -d "${YYYY}-${MM}-${DD} ${HH} -3 hours" +"%Y%m%d%H"` +setenv YYYY `echo $STARTIME | cut -c1-4` +setenv MM `echo $STARTIME | cut -c5-6` +setenv DD `echo $STARTIME | cut -c7-8` +setenv HH `echo $STARTIME | cut -c9-10` +echo "Start Time: $STARTIME" + +# Set the cycle window +set CYCLE_WINDOW = 6 + +# Calculate cycle and hour +@ CYCLE = $HH / $CYCLE_WINDOW +@ HR = $CYCLE * $CYCLE_WINDOW +echo "HR: $HR" +#set HH = $HR + +if ($HR < 10) then + set HH = "0$HR" +else + set HH = $HR +endif +echo "HH: $HH" +# Calculate cycle number +@ CYCLE_NUMBER = $CYCLE + 1 + +# Set cycle time +set CYCLE_TIME = "${YYYY}${MM}${DD}T${HH}" + +# Subtract cycle window hours to get STARTIME0 +setenv STARTIME0 `date -d "${YYYY}-${MM}-${DD} ${HH} -${CYCLE_WINDOW} hours" +"%Y%m%d%H"` +setenv YYYY0 `echo $STARTIME0 | cut -c1-4` +setenv MM0 `echo $STARTIME0 | cut -c5-6` +setenv DD0 `echo $STARTIME0 | cut -c7-8` +setenv HH0 `echo $STARTIME0 | cut -c9-10` +set CYCLE_TIME0 = "${YYYY0}${MM0}${DD0}T${HH0}" + +echo "$STARTIME, $CYCLE_TIME, $CYCLE_TIME0, $CYCLE_NUMBER" + +cd /glade/work/zhuming/pandac/MPAS-Workflow_3.0.2/ + +# Source environment setup script +source env-setup/machine.csh + +# Clean up and generate the new YAML file +#rm -f ./GenerateObs_${CYCLE_TIME}.yaml +#cat > script.sed << EOF +# / first cycle point:/c\ first cycle point: ${CYCLE_TIME0} +# / final cycle point:/c\ final cycle point: ${CYCLE_TIME} +#EOF +#sed -f script.sed ./test/GenerateObs.yaml > ./test/GenerateObs_${CYCLE_TIME}.yaml + +# Run the Python script +#./Run.py test/GenerateObs_${CYCLE_TIME}.yaml + +# Clean up and generate the new YAML file of 3dvar_OIE30km_Realtime +cat > script.sed << EOF + / first cycle point:/c\ first cycle point: ${CYCLE_TIME0} + / final cycle point:/c\ final cycle point: ${CYCLE_TIME} +EOF + +rm -f ./test/tmp/GEFSRealtime_${CYCLE_TIME}.yaml +sed -f script.sed ./test/GenerateGEFS.yaml > ./test/tmp/GEFSRealtime_${CYCLE_TIME}.yaml + +# Run the Python script +./Run.py test/tmp/GEFSRealtime_${CYCLE_TIME}.yaml + diff --git a/realobs.csh b/realobs.csh new file mode 100755 index 00000000..567fa240 --- /dev/null +++ b/realobs.csh @@ -0,0 +1,71 @@ +#!/bin/csh + +# Set the start time variable +# setenv STARTIME `date -u +%Y%m%d%H%M%S` +# setenv STARTIME `date -u +%Y%m%d%H%M` +setenv STARTIME `date -u +%Y%m%d%H` +#setenv STARTIME 2024103009 +# setenv STARTIME `cat date.dat` +echo "Original Start Time: $STARTIME" + +# Extract components from STARTIME +setenv YYYY `echo $STARTIME | cut -c1-4` +setenv MM `echo $STARTIME | cut -c5-6` +setenv DD `echo $STARTIME | cut -c7-8` +setenv HH `echo $STARTIME | cut -c9-10` + +# Adjust the start time by subtracting 3 hours +setenv STARTIME `date -d "${YYYY}-${MM}-${DD} ${HH} -3 hours" +"%Y%m%d%H"` +setenv YYYY `echo $STARTIME | cut -c1-4` +setenv MM `echo $STARTIME | cut -c5-6` +setenv DD `echo $STARTIME | cut -c7-8` +setenv HH `echo $STARTIME | cut -c9-10` +echo "Start Time: $STARTIME" + +# Set the cycle window +set CYCLE_WINDOW = 6 + +# Calculate cycle and hour +@ CYCLE = $HH / $CYCLE_WINDOW +@ HR = $CYCLE * $CYCLE_WINDOW +echo "HR: $HR" +#set HH = $HR + +if ($HR < 10) then + set HH = "0$HR" +else + set HH = $HR +endif +echo "HH: $HH" +# Calculate cycle number +@ CYCLE_NUMBER = $CYCLE + 1 + +# Set cycle time +set CYCLE_TIME = "${YYYY}${MM}${DD}T${HH}" + +# Subtract cycle window hours to get STARTIME0 +setenv STARTIME0 `date -d "${YYYY}-${MM}-${DD} ${HH} -${CYCLE_WINDOW} hours" +"%Y%m%d%H"` +setenv YYYY0 `echo $STARTIME0 | cut -c1-4` +setenv MM0 `echo $STARTIME0 | cut -c5-6` +setenv DD0 `echo $STARTIME0 | cut -c7-8` +setenv HH0 `echo $STARTIME0 | cut -c9-10` +set CYCLE_TIME0 = "${YYYY0}${MM0}${DD0}T${HH0}" + +echo "$STARTIME, $CYCLE_TIME, $CYCLE_TIME0, $CYCLE_NUMBER" + +cd /glade/work/zhuming/pandac/MPAS-Workflow_3.0.2/ + +# Clean up and generate the new YAML file +rm -f ./GenerateObs_${CYCLE_TIME}.yaml +cat > script.sed << EOF + / first cycle point:/c\ first cycle point: ${CYCLE_TIME0} + / final cycle point:/c\ final cycle point: ${CYCLE_TIME} +EOF +sed -f script.sed ./test/GenerateObs.yaml > ./test/GenerateObs_${CYCLE_TIME}.yaml + +# Source environment setup script +source env-setup/machine.csh + +# Run the Python script +./Run.py test/GenerateObs_${CYCLE_TIME}.yaml + diff --git a/scenarios/defaults/externalanalyses.yaml b/scenarios/defaults/externalanalyses.yaml index ed68a063..bcacd3b8 100644 --- a/scenarios/defaults/externalanalyses.yaml +++ b/scenarios/defaults/externalanalyses.yaml @@ -80,3 +80,30 @@ externalanalyses: - "GetGDASAnalysisFromFTP" #Vtable: /glade/campaign/mmm/parc/liuz/pandac_common/vtables/Vtable.GFS.O3MR retry: '40*PT10M' + + GEFS: + AWS: + common: + PrepareExternalAnalysisTasks: + - "GetGEFSAnalysisFromAWS" + - "UngribExternalGEFSAnalysis" + - "ExternalGEFSAnalysisToMPAS-{{mesh}}" + #- "ExternalAnalysisReady__" + Vtable: /glade/campaign/mmm/parc/liuz/pandac_common/vtables/Vtable.GEFS + job: + GetAnalysisFrom: + retry: '40*PT10M' + + GEFS6HF: + AWS: + common: + PrepareExternalAnalysisTasks: + - "GetGEFS6hFcstFromAWS" + - "UngribExternalGEFSAnalysis" + - "ExternalGEFSAnalysisToMPAS-{{mesh}}" + #- "ExternalAnalysisReady__" + Vtable: /glade/campaign/mmm/parc/liuz/pandac_common/vtables/Vtable.GEFS + job: + GetAnalysisFrom: + retry: '40*PT10M' + diff --git a/scenarios/defaults/observations.yaml b/scenarios/defaults/observations.yaml index 63f001b0..dc93b116 100644 --- a/scenarios/defaults/observations.yaml +++ b/scenarios/defaults/observations.yaml @@ -19,9 +19,26 @@ observations: - amsua_n15 - amsua_n18 - amsua_n19 + - amsua-cld_aqua + - amsua-cld_metop-a + - amsua-cld_metop-b + - amsua-cld_metop-c + - amsua-cld_n15 + - amsua-cld_n18 + - amsua-cld_n19 + - mhs_metop-a + - mhs_metop-b + - mhs_metop-c + - mhs_n18 + - mhs_n19 - iasi_metop-a - iasi_metop-b - iasi_metop-c + - cris-fsr_npp + - cris-fsr_n20 + - cris-fsr_n21 + - atms_npp + - atms_n20 IODAPrefix: gnssrobndropp1d: gnssro @@ -30,6 +47,13 @@ observations: gnssrobndmo-nopseudo: gnssro gnssrorefncep: gnssro gnssrorefncep_tunedErrors: gnssro + amsua-cld_aqua: amsua_aqua + amsua-cld_metop-a: amsua_metop-a + amsua-cld_metop-b: amsua_metop-b + amsua-cld_metop-c: amsua_metop-c + amsua-cld_n15: amsua_n15 + amsua-cld_n18: amsua_n18 + amsua-cld_n19: amsua_n19 IODADirectory: da: @@ -52,9 +76,26 @@ observations: - amsua_n15 - amsua_n18 - amsua_n19 + - amsua-cld_aqua + - amsua-cld_metop-a + - amsua-cld_metop-b + - amsua-cld_metop-c + - amsua-cld_n15 + - amsua-cld_n18 + - amsua-cld_n19 + - mhs_metop-a + - mhs_metop-b + - mhs_metop-c + - mhs_n18 + - mhs_n19 - iasi_metop-a - iasi_metop-b - iasi_metop-c + - cris-fsr_npp + - cris-fsr_n20 + - cris-fsr_n21 + - atms_npp + - atms_n20 IODAPrefix: gnssrobndropp1d: gnssro @@ -66,6 +107,7 @@ observations: amsua-cld_aqua: amsua_aqua amsua-cld_metop-a: amsua_metop-a amsua-cld_metop-b: amsua_metop-b + amsua-cld_metop-c: amsua_metop-c amsua-cld_n15: amsua_n15 amsua-cld_n18: amsua_n18 amsua-cld_n19: amsua_n19 @@ -92,6 +134,7 @@ observations: amsua-cld_aqua: amsua_aqua amsua-cld_metop-a: amsua_metop-a amsua-cld_metop-b: amsua_metop-b + amsua-cld_metop-c: amsua_metop-c amsua-cld_n15: amsua_n15 amsua-cld_n18: amsua_n18 amsua-cld_n19: amsua_n19 @@ -101,95 +144,117 @@ observations: IODADirectory: da: ##anchor - aircraft: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrobndropp1d: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrobndnbam: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrobndmo: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrobndmo-nopseudo: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrorefncep: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrorefncep_tunedErrors: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - satwind: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - sfc: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - sondes: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - - ## amsua - amsua_aqua: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua_metop-a: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua_metop-b: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua_n15: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua_n18: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua_n19: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua-cld_aqua: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua-cld_metop-a: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua-cld_metop-b: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua-cld_n15: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua-cld_n18: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua-cld_n19: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - - ## mhs - mhs_metop-a: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - mhs_metop-b: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - mhs_n18: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - mhs_n19: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr + aircraft: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndropp1d: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndnbam: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndmo: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndmo-nopseudo: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrorefncep: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrorefncep_tunedErrors: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + satwind: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + sfc: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + sondes: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + + ## amsua _metop-b,_metop-c,_n15,_n18(missing data),n19 + amsua_aqua: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n15: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_aqua: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n15: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + + ## mhs_metop-b, _metop-c, _n19 + mhs_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## abi - abi_g16: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/ABIASR/IODANC_THIN15KM_SUPEROB15X15_no-bias-correct - abi-clr_g16: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/ABIASR/IODANC_THIN15KM_SUPEROB15X15_no-bias-correct + abi_g16: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + abi-clr_g16: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## ahi - ahi_himawari8: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/AHIASR/IODANC_SUPEROB15X15_no-bias-correct - ahi-clr_himawari8: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/AHIASR/IODANC_SUPEROB15X15_no-bias-correct + ahi_himawari8: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + ahi-clr_himawari8: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## iasi - iasi_metop-a: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/iasi/6h - iasi_metop-b: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/iasi/6h - iasi_metop-c: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/iasi/6h + iasi_metop-a: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + iasi_metop-b: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + iasi_metop-c: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + + ## cris-fsr + cris-fsr_npp: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/cris_thin145km + cris-fsr_n20: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/cris_thin145km + + ## atms + atms_npp: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + atms_n20: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations hofx: ## anchor - aircraft: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrobndropp1d: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrobndnbam: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrobndmo: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrobndmo-nopseudo: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrorefncep: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrorefncep_tunedErrors: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - satwind: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - sfc: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - sondes: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs + aircraft: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndropp1d: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndnbam: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndmo: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndmo-nopseudo: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrorefncep: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrorefncep_tunedErrors: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + satwind: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + sfc: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + sondes: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## amsua - amsua_aqua: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/no_bias - amsua_metop-a: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/no_bias - amsua_metop-b: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/no_bias - amsua_n15: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/no_bias - amsua_n18: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/no_bias - amsua_n19: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/no_bias - amsua-cld_aqua: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/no_bias - amsua-cld_metop-a: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/no_bias - amsua-cld_metop-b: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/no_bias - amsua-cld_n15: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/no_bias - amsua-cld_n18: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/no_bias - amsua-cld_n19: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/no_bias + amsua_aqua: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n15: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_aqua: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n15: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## mhs - mhs_metop-a: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/no_bias - mhs_metop-b: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/no_bias - mhs_n18: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/no_bias - mhs_n19: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/no_bias + mhs_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## abi - abi_g16: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/ABIASR/IODANC_THIN15KM_SUPEROB15X15_no-bias-correct - abi-clr_g16: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/ABIASR/IODANC_THIN15KM_SUPEROB15X15_no-bias-correct + abi_g16: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + abi-clr_g16: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## ahi - ahi_himawari8: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/AHIASR/IODANC_SUPEROB15X15_no-bias-correct - ahi-clr_himawari8: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/AHIASR/IODANC_SUPEROB15X15_no-bias-correct + ahi_himawari8: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + ahi-clr_himawari8: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## iasi - iasi_metop-a: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/iasi/6h - iasi_metop-b: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/iasi/6h - iasi_metop-c: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/iasi/6h + iasi_metop-a: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + iasi_metop-b: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + iasi_metop-c: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + + ## cris-fsr + cris-fsr_npp: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/cris_thin145km + cris-fsr_n20: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/cris_thin145km + + ## atms + atms_npp: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + atms_n20: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations IODASuperObGrid: abi_g16: 15X15 @@ -213,13 +278,19 @@ observations: - amsua-cld_n15 - amsua-cld_n18 - amsua-cld_n19 - - iasi_metop-a - - iasi_metop-b - - iasi_metop-c - mhs_metop-a - mhs_metop-b + - mhs_metop-c - mhs_n18 - mhs_n19 + - iasi_metop-a + - iasi_metop-b + - iasi_metop-c + - cris-fsr_npp + - cris-fsr_n20 + - cris-fsr_n21 + - atms_npp + - atms_n20 IODAPrefix: gnssrobndropp1d: gnssro @@ -231,6 +302,7 @@ observations: amsua-cld_aqua: amsua_aqua amsua-cld_metop-a: amsua_metop-a amsua-cld_metop-b: amsua_metop-b + amsua-cld_metop-c: amsua_metop-c amsua-cld_n15: amsua_n15 amsua-cld_n18: amsua_n18 amsua-cld_n19: amsua_n19 @@ -240,97 +312,119 @@ observations: IODADirectory: da: ##anchor - aircraft: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - gnssrobndropp1d: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - gnssrobndnbam: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - gnssrobndmo: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - gnssrobndmo-nopseudo: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - gnssrorefncep: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - gnssrorefncep_tunedErrors: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - satwind: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - satwnd: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - sfc: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - sondes: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs + aircraft: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndropp1d: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndnbam: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndmo: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndmo-nopseudo: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrorefncep: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrorefncep_tunedErrors: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + satwind: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + satwnd: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + sfc: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + sondes: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## amsua - amsua_aqua: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - amsua_metop-a: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - amsua_metop-b: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - amsua_n15: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - amsua_n18: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - amsua_n19: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - amsua-cld_aqua: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - amsua-cld_metop-a: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - amsua-cld_metop-b: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - amsua-cld_n15: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - amsua-cld_n18: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - amsua-cld_n19: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs + amsua_aqua: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n15: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_aqua: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n15: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## mhs - mhs_metop-a: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - mhs_metop-b: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - mhs_n18: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - mhs_n19: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs + mhs_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## abi - abi_g16: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/ABIASR/IODANC_THIN15KM_SUPEROB15X15_no-bias-correct - abi-clr_g16: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/ABIASR/IODANC_THIN15KM_SUPEROB15X15_no-bias-correct + abi_g16: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + abi-clr_g16: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## ahi - ahi_himawari8: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/AHIASR/IODANC_SUPEROB15X15_no-bias-correct - ahi-clr_himawari8: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/AHIASR/IODANC_SUPEROB15X15_no-bias-correct + ahi_himawari8: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + ahi-clr_himawari8: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## iasi - iasi_metop-a: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/iasi_thin145km - iasi_metop-b: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/iasi_thin145km - iasi_metop-c: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/iasi_thin145km + iasi_metop-a: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + iasi_metop-b: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + iasi_metop-c: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + + ## cris-fsr + cris-fsr_npp: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/cris_thin145km + cris-fsr_n20: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/cris_thin145km + + ## atms + atms_npp: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + atms_n20: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations hofx: ## anchor - aircraft: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrobndropp1d: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrobndnbam: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrobndmo: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrobndmo-nopseudo: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrorefncep: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - gnssrorefncep_tunedErrors: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - satwind: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - satwnd: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/raw_obs - sfc: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs - sondes: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/conv_obs + aircraft: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndropp1d: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndnbam: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndmo: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndmo-nopseudo: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrorefncep: /glade/campaign/mmm/parc/jban/pandac/obsiodav230927/2018/conv_obs + gnssrorefncep_tunedErrors: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + satwind: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + satwnd: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + sfc: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + sondes: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## amsua - amsua_aqua: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua_metop-a: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua_metop-b: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua_n15: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua_n18: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua_n19: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua-cld_aqua: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua-cld_metop-a: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua-cld_metop-b: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua-cld_n15: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua-cld_n18: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - amsua-cld_n19: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr + amsua_aqua: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n15: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_aqua: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n15: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## mhs - mhs_metop-a: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - mhs_metop-b: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - mhs_n18: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr - mhs_n19: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/bias_corr + mhs_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## abi - abi_g16: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/ABIASR/IODANC_THIN15KM_SUPEROB15X15_no-bias-correct - abi-clr_g16: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/ABIASR/IODANC_THIN15KM_SUPEROB15X15_no-bias-correct + abi_g16: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + abi-clr_g16: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## ahi - ahi_himawari8: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/AHIASR/IODANC_SUPEROB15X15_no-bias-correct - ahi-clr_himawari8: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/AHIASR/IODANC_SUPEROB15X15_no-bias-correct + ahi_himawari8: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + ahi-clr_himawari8: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## iasi - iasi_metop-a: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/iasi_thin145km - iasi_metop-b: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/iasi_thin145km - iasi_metop-c: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/iasi_thin145km + iasi_metop-a: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + iasi_metop-b: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + iasi_metop-c: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + + ## cris-fsr + cris-fsr_npp: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/cris_thin145km + cris-fsr_n20: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/cris_thin145km + + ## atms + atms_npp: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + atms_n20: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations IODASuperObGrid: abi_g16: 15X15 @@ -354,13 +448,19 @@ observations: - amsua-cld_n15 - amsua-cld_n18 - amsua-cld_n19 - - iasi_metop-a - - iasi_metop-b - - iasi_metop-c - mhs_metop-a - mhs_metop-b + - mhs_metop-c - mhs_n18 - mhs_n19 + - iasi_metop-a + - iasi_metop-b + - iasi_metop-c + - cris-fsr_npp + - cris-fsr_n20 + - cris-fsr_n21 + - atms_npp + - atms_n20 IODAPrefix: gnssrobndropp1d: gnssro @@ -372,6 +472,7 @@ observations: amsua-cld_aqua: amsua_aqua amsua-cld_metop-a: amsua_metop-a amsua-cld_metop-b: amsua_metop-b + amsua-cld_metop-c: amsua_metop-c amsua-cld_n15: amsua_n15 amsua-cld_n18: amsua_n18 amsua-cld_n19: amsua_n19 @@ -381,97 +482,119 @@ observations: IODADirectory: da: ##anchor - aircraft: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - gnssrobndropp1d: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - gnssrobndnbam: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - gnssrobndmo: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - gnssrobndmo-nopseudo: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - gnssrorefncep: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - gnssrorefncep_tunedErrors: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - satwind: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - satwnd: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - sfc: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - sondes: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs + aircraft: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndropp1d: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndnbam: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndmo: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndmo-nopseudo: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrorefncep: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrorefncep_tunedErrors: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + satwind: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + satwnd: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + sfc: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + sondes: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## amsua - amsua_aqua: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua_metop-a: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua_metop-b: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua_n15: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua_n18: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua_n19: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua-cld_aqua: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua-cld_metop-a: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua-cld_metop-b: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua-cld_n15: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua-cld_n18: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua-cld_n19: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs + amsua_aqua: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n15: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_aqua: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n15: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## mhs - mhs_metop-a: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - mhs_metop-b: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - mhs_n18: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - mhs_n19: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs + mhs_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## abi - abi_g16: /glade/p/mmm/parc/jban/pandac_common/obs/ioda_v3/2018/ABIASR/IODANC_THIN15KM_SUPEROB15X15_no-bias-correct - abi-clr_g16: /glade/p/mmm/parc/jban/pandac_common/obs/ioda_v3/2018/ABIASR/IODANC_THIN15KM_SUPERO15X15_no-bias-correct + abi_g16: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + abi-clr_g16: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## ahi - ahi_himawari8: /glade/p/mmm/parc/jban/pandac_common/obs/ioda_v3/2018/AHIASR/IODANC_SUPEROB15X15_no-bias-correct - ahi-clr_himawari8: /glade/p/mmm/parc/jban/pandac_common/obs/ioda_v3/2018/AHIASR/IODANC_SUPEROB15X15_no-bias-correct + ahi_himawari8: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + ahi-clr_himawari8: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## iasi - iasi_metop-a: /glade/p/mmm/parc/jban/pandac_common/obs/ioda_v3/2018/iasi_thin145km - iasi_metop-b: /glade/p/mmm/parc/jban/pandac_common/obs/ioda_v3/2018/iasi_thin145km - iasi_metop-c: /glade/p/mmm/parc/jban/pandac_common/obs/ioda_v3/2018/iasi_thin145km + iasi_metop-a: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + iasi_metop-b: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + iasi_metop-c: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + + ## cris-fsr + cris-fsr_npp: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/cris_thin145km + cris-fsr_n20: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/cris_thin145km + + ## atms + atms_npp: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + atms_n20: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations hofx: ## anchor - aircraft: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - gnssrobndropp1d: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - gnssrobndnbam: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - gnssrobndmo: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - gnssrobndmo-nopseudo: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - gnssrorefncep: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - gnssrorefncep_tunedErrors: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - satwind: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - satwnd: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - sfc: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - sondes: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs + aircraft: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndropp1d: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndnbam: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndmo: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrobndmo-nopseudo: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrorefncep: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + gnssrorefncep_tunedErrors: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + satwind: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + satwnd: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + sfc: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + sondes: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## amsua - amsua_aqua: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua_metop-a: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua_metop-b: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua_n15: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua_n18: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua_n19: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua-cld_aqua: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua-cld_metop-a: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua-cld_metop-b: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua-cld_n15: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua-cld_n18: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - amsua-cld_n19: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs + amsua_aqua: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n15: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_aqua: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n15: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + amsua-cld_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## mhs - mhs_metop-a: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - mhs_metop-b: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - mhs_n18: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs - mhs_n19: /glade/scratch/jban/pandac/obsiodav3_intScanP_20230812/2018/raw_obs + mhs_metop-a: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_metop-b: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_metop-c: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_n18: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + mhs_n19: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## abi - abi_g16: /glade/p/mmm/parc/jban/pandac_common/obs/ioda_v3/2018/ABIASR/IODANC_THIN15KM_SUPEROB15X15_const-bias-correct - abi-clr_g16: /glade/p/mmm/parc/jban/pandac_common/obs/ioda_v3/2018/ABIASR/IODANC_THIN15KM_SUPERO15X15_const-bias-correct + abi_g16: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + abi-clr_g16: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## ahi - ahi_himawari8: /glade/p/mmm/parc/jban/pandac_common/obs/ioda_v3/2018/AHIASR/IODANC_SUPEROB15X15_const-bias-correct - ahi-clr_himawari8: /glade/p/mmm/parc/jban/pandac_common/obs/ioda_v3/2018/AHIASR/IODANC_SUPEROB15X15_const-bias-correct + ahi_himawari8: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + ahi-clr_himawari8: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations ## iasi - iasi_metop-a: /glade/p/mmm/parc/jban/pandac_common/obs/ioda_v3/2018/iasi_thin145km - iasi_metop-b: /glade/p/mmm/parc/jban/pandac_common/obs/ioda_v3/2018/iasi_thin145km - iasi_metop-c: /glade/p/mmm/parc/jban/pandac_common/obs/ioda_v3/2018/iasi_thin145km + iasi_metop-a: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + iasi_metop-b: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + iasi_metop-c: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/iasi_thin145km + + ## cris-fsr + cris-fsr_npp: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/cris_thin145km + cris-fsr_n20: /glade/campaign/mmm/parc/zhuming/pandac_common/obs/ioda_v3/2023/cris_thin145km + + ## atms + atms_npp: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + atms_n20: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations IODASuperObGrid: abi_g16: 15X15 @@ -495,9 +618,19 @@ observations: - amsua-cld_n15 - amsua-cld_n18 - amsua-cld_n19 + - mhs_metop-a + - mhs_metop-b + - mhs_metop-c + - mhs_n18 + - mhs_n19 - iasi_metop-a - iasi_metop-b - iasi_metop-c + - cris-fsr_npp + - cris-fsr_n20 + - cris-fsr_n21 + - atms_npp + - atms_n20 IODAPrefix: gnssrobndropp1d: gnssro @@ -509,6 +642,7 @@ observations: amsua-cld_aqua: amsua_aqua amsua-cld_metop-a: amsua_metop-a amsua-cld_metop-b: amsua_metop-b + amsua-cld_metop-c: amsua_metop-c amsua-cld_n15: amsua_n15 amsua-cld_n18: amsua_n18 amsua-cld_n19: amsua_n19 @@ -517,101 +651,18 @@ observations: IODADirectory: da: - common: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/GenerateObs/Observations - abi_g16: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/ABIASR/IODANC_THIN15KM_SUPEROB15X15_no-bias-correct - abi-clr_g16: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/ABIASR/IODANC_THIN15KM_SUPEROB15X15_no-bias-correct - ahi_himawari8: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/AHIASR/IODANC_SUPEROB15X15_no-bias-correct - ahi-clr_himawari8: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/AHIASR/IODANC_SUPEROB15X15_no-bias-correct + common: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + abi_g16: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + abi-clr_g16: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + ahi_himawari8: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + ahi-clr_himawari8: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations hofx: - common: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/GenerateObs/Observations - abi_g16: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/ABIASR/IODANC_THIN15KM_SUPEROB15X15_no-bias-correct - abi-clr_g16: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/ABIASR/IODANC_THIN15KM_SUPEROB15X15_no-bias-correct - ahi_himawari8: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/AHIASR/IODANC_SUPEROB15X15_no-bias-correct - ahi-clr_himawari8: /glade/campaign/mmm/parc/jban/pandac/obsiodav3_intScanP_20230927/2018/AHIASR/IODANC_SUPEROB15X15_no-bias-correct - - IODASuperObGrid: - abi_g16: 15X15 - ahi_himawari8: 15X15 - - - SacaObs: - PrepareObservationsTasks: [ObsReady__] - - instrumentsAllowingBiasCorrection: [None] - - IODAPrefix: - gnssrobndropp1d: gnssro - gnssrobndnbam: gnssro - gnssrobndmo: gnssro - gnssrobndmo-nopseudo: gnssro - gnssrorefncep: gnssro - gnssrorefncep_tunedErrors: gnssro - amsua-cld_aqua: amsua_aqua - amsua-cld_metop-a: amsua_metop-a - amsua-cld_metop-b: amsua_metop-b - amsua-cld_n15: amsua_n15 - amsua-cld_n18: amsua_n18 - amsua-cld_n19: amsua_n19 - abi-clr_g16: abi_g16 - ahi-clr_himawari8: ahi_himawari8 - saca: saca - - IODADirectory: - saca: - common: /glade/campaign/mmm/parc/ivette/pandac/saca/obs - #/glade/derecho/scratch/bjung/saca_new_mesh/obs_processing/convert.mpas_moreL2/output - - da: - common: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018 - - hofx: - ## anchor - aircraft: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/conv_obs - gnssrobndropp1d: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/conv_obs - gnssrobndnbam: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/conv_obs - gnssrobndmo: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/conv_obs - gnssrobndmo-nopseudo: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/conv_obs - gnssrorefncep: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/conv_obs - gnssrorefncep_tunedErrors: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/conv_obs - satwind: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/conv_obs - satwnd: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/raw_obs - sfc: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/conv_obs - sondes: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/conv_obs - - ## amsua - amsua_aqua: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/bias_corr - amsua_metop-a: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/bias_corr - amsua_metop-b: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/bias_corr - amsua_n15: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/bias_corr - amsua_n18: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/bias_corr - amsua_n19: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/bias_corr - amsua-cld_aqua: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/bias_corr - amsua-cld_metop-a: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/bias_corr - amsua-cld_metop-b: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/bias_corr - amsua-cld_n15: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/bias_corr - amsua-cld_n18: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/bias_corr - amsua-cld_n19: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/bias_corr - - ## mhs - mhs_metop-a: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/bias_corr - mhs_metop-b: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/bias_corr - mhs_n18: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/bias_corr - mhs_n19: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/bias_corr - - ## abi - abi_g16: /glade/campaign/mmm/parc/ivette/pandac/saca/obs/ioda_v3_60-3km - #/glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/ABIASR/IODANC_THIN15KM_SUPEROB15X15_no-bias-correct - abi-clr_g16: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/ABIASR/IODANC_THIN15KM_SUPEROB15X15_no-bias-correct - - ## ahi - ahi_himawari8: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/AHIASR/IODANC_SUPEROB15X15_no-bias-correct - ahi-clr_himawari8: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/AHIASR/IODANC_SUPEROB15X15_no-bias-correct - - ## iasi - iasi_metop-a: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/iasi_thin145km - iasi_metop-b: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/iasi_thin145km - iasi_metop-c: /glade/campaign/mmm/parc/liuz/pandac_common/obs/ioda_v3/2018/iasi_thin145km + common: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + abi_g16: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + abi-clr_g16: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + ahi_himawari8: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations + ahi-clr_himawari8: /glade/campaign/mmm/parc/jban/pandac/GenerateObs2023/Observations IODASuperObGrid: abi_g16: 15X15 diff --git a/scenarios/defaults/variational.yaml b/scenarios/defaults/variational.yaml index 1b15fa91..5fc29dc8 100644 --- a/scenarios/defaults/variational.yaml +++ b/scenarios/defaults/variational.yaml @@ -64,7 +64,8 @@ variational: 60km: maxMembers: 20 - directory0: '/glade/campaign/mmm/parc/liuz/pandac_common/fixed_input/60km/EnsForCov/{{prevDateTime}}' + #directory0: '/glade/campaign/mmm/parc/liuz/pandac_common/fixed_input/60km/EnsForCov/{{prevDateTime}}' + directory0: '/glade/campaign/mmm/parc/liuz/pandac_common/GEFS/60km_GEFS_EnsFC/{{prevDateTime}}' filePrefix: EnsForCov memberNDigits: 2 @@ -119,7 +120,8 @@ variational: # bumpLocDir: str 30km: bumpLocPrefix: bumploc_1200.0km_6.0km - bumpLocDir: /glade/campaign/mmm/parc/liuz/pandac_common/fixed_input/30km/bumploc/h=1200.0km_v=6.0km_06JAN2023code + #bumpLocDir: /glade/campaign/mmm/parc/liuz/pandac_common/fixed_input/30km/bumploc/h=1200.0km_v=6.0km_06JAN2023code + bumpLocDir: /glade/derecho/scratch/bjung/testdata_prepare.2023gefs/Bflow.20241025/global30km_Bloc 60km: bumpLocPrefix: bumploc_1200.0km_6.0km bumpLocDir: /glade/campaign/mmm/parc/liuz/pandac_common/BUMP_files/derecho_2.1/60km.bumploc.duplicated.limited.1200km6km @@ -135,23 +137,40 @@ variational: - temperature - spechum - surface_pressure - bumpCovPrefix: mpas_parametersbump_cov - bumpCovVBalPrefix: mpas_vbal + - qc + - qi + - qg + - qr + - qs + #bumpCovPrefix: mpas_parametersbump_cov + #bumpCovVBalPrefix: mpas_vbal + bumpCovPrefix: mpas + bumpCovVBalPrefix: mpas #{{innerMesh}}: # bumpCovDir: str # bumpCovStdDevFile: str # bumpCovVBalDir: str # hybridCoefficientsDir: str 30km: - bumpCovDir: None - bumpCovStdDevFile: None - bumpCovVBalDir: None - hybridCoefficientsDir: None + bumpCovDir: /glade/derecho/scratch/bjung/testdata_prepare.2023gefs/Bflow.20241025/global30km_ENS/NICAS.split/merge_w_hydro + bumpCovStdDevFile: /glade/derecho/scratch/bjung/testdata_prepare.2023gefs/Bflow.20241025/global30km_ENS/HDIAG_VAR/merge_w_hydro/mpas.stddev.nc + bumpCovVBalDir: /glade/derecho/scratch/bjung/testdata_prepare.2023gefs/Bflow.20241025/global30km_ENS/VBAL_iterative/2023070106-2023071100 + hybridCoefficientsDir: /glade/campaign/mmm/parc/liuz/pandac_hybrid/30km.allsky_hybrid 60km: hybridCoefficientsDir: /glade/campaign/mmm/parc/liuz/pandac_hybrid/60km.allsky_hybrid - bumpCovDir: /glade/campaign/mmm/parc/liuz/pandac_common/BUMP_files/derecho_2.1/60km.NICAS_00global - bumpCovStdDevFile: /glade/campaign/mmm/parc/liuz/pandac_common/BUMP_files/derecho_2.1/60km.CMAT_00/mpas.stddev_0p33.2018-04-15_00.00.00.nc - bumpCovVBalDir: /glade/campaign/mmm/parc/liuz/pandac_common/BUMP_files/derecho_2.1/60km.VBAL_00 + + #bumpCovDir: /glade/derecho/scratch/bjung/Bflow/2023_ENS_global60km/NICAS.split/merge + #bumpCovStdDevFile: /glade/derecho/scratch/bjung/Bflow/2023_ENS_global60km/HDIAG_VAR/merge/mpas.stddev.nc + #bumpCovDir: /glade/derecho/scratch/zhuming/2023_ENS_global60km/NICAS.split1_tune/merge + #bumpCovStdDevFile: /glade/derecho/scratch/zhuming/2023_ENS_global60km/HDIAG_VAR/merge1_tune/mpas.stddev.nc + #bumpCovDir: /glade/derecho/scratch/zhuming/2023_ENS_global60km/NICAS.split11/merge + #bumpCovStdDevFile: /glade/derecho/scratch/zhuming/2023_ENS_global60km/HDIAG_VAR/merge11/mpas.stddev.nc + #bumpCovDir: /glade/derecho/scratch/zhuming/2023_ENS_global60km/NICAS.split11_tune/merge + #bumpCovStdDevFile: /glade/derecho/scratch/zhuming/2023_ENS_global60km/HDIAG_VAR/merge11_tune/mpas.stddev.nc + bumpCovDir: /glade/campaign/mmm/parc/zhuming/pandac_common/2023_ENS_global60km/NICAS.split11_tune/merge + bumpCovStdDevFile: /glade/campaign/mmm/parc/zhuming/pandac_common/2023_ENS_global60km/HDIAG_VAR/merge11_tune/mpas.stddev.nc + + bumpCovVBalDir: /glade/derecho/scratch/bjung/Bflow/2023_ENS_global60km/VBAL_iterative/2023070406-2023071100 120km: bumpCovDir: /glade/campaign/mmm/parc/liuz/pandac_common/BUMP_files/20230522_yr5/120km.NICAS_00 bumpCovStdDevFile: /glade/campaign/mmm/parc/liuz/pandac_common/BUMP_files/20230522_yr5/120km.CMAT_00/mpas.stddev_0p33.2018-04-15_00.00.00.nc @@ -163,7 +182,7 @@ variational: defaults: baseSeconds: 1500 secondsPerEnVarMember: 10 - nodes: 1 + nodes: 2 PEPerNode: 128 memory: 235GB @@ -205,12 +224,6 @@ variational: PEPerNode: 64 memory: 235GB baseSeconds: 1500 - 3dhybrid: - nodes: 4 - PEPerNode: 64 - memory: 235GB - baseSeconds: 500 - secondsPerEnVarMember: 9 ensemble: # i.e., EDASize > 1, multiple background members treated per executable 3denvar: nodesPerMember: 4 @@ -232,8 +245,8 @@ variational: baseSeconds: 800 secondsPerEnVarMember: 24 3dhybrid: - nodes: 4 - PEPerNode: 64 + nodes: 2 + PEPerNode: 128 memory: 235GB baseSeconds: 500 secondsPerEnVarMember: 9 diff --git a/test/3denvar_OIE30km_Realtime.yaml b/test/3denvar_OIE30km_Realtime.yaml new file mode 100644 index 00000000..b4a6b73f --- /dev/null +++ b/test/3denvar_OIE30km_Realtime.yaml @@ -0,0 +1,188 @@ +experiment: + #suffix: '_VarBC_Bnd' + #name: '3dVar_OIE30km_Realtime' + name: '3dEnVar_OIE30km_Realtime' + +members: + n: 1 + +model: + outerMesh: 30km + innerMesh: 30km + ensembleMesh: 30km + #resources: + # 30km: + # PhysicsSuite: convection_permitting + # Microphysics: mp_thompson + # Convection: cu_ntiedtke + # PBL: bl_mynn + # Gwdo: bl_ysu_gwdo + # RadiationCloud: cld_fraction_thompson + # RadiationLW: rrtmg_lw + # RadiationSW: rrtmg_sw + # SfcLayer: sf_mynn + # LSM: sf_noah + +invariantstream: + resources: + defaults: + InvariantDirectory: /glade/derecho/scratch/zhuming/pandac/Invariant_L66 + +firstbackground: + resource: "PANDAC.GFS" + resources: + PANDAC: + GFS: + 30km: + #directory: /glade/campaign/mmm/parc/liuz/pandac_common/30km/30km_1stCycle_background_single/{{FirstCycleDate}} + directory: /glade/derecho/scratch/zhuming/pandac/mpas_fcst_30km_L66/{{FirstCycleDate}} + +externalanalyses: + resource: "GFS.NCEPFTP" + #resource: "GFS.PANDAC" + #resources: + # GFS: + # PANDAC: + # 30km: + # #directory: /glade/derecho/scratch/zhuming/pandac/zhuming_3dVar_OIE30km_Realtime/ExternalAnalyses/30km + # directory: /glade/derecho/scratch/zhuming/pandac/mpas_init_30km_L66 + +observations: + resource: NCEPFTPOnline + convertToIODAObservations: + - 1bamua + - 1bmhs + - airsev + - gpsro + - prepbufr + - satwnd + #- mtiasi + #- cris + + #CRTMTABLES: /glade/work/nystrom/Code/JEDI/jcsda_internal/CRTM_V3_coeffs/ + CRTMTABLES: /glade/work/zhuming/pandac/crtm/CRTM_V3_coeffs/ + fixedCoeff: /glade/campaign/mmm/parc/jban/pandac_common/obs/satbias + fixedTlapmeanCov: /glade/campaign/mmm/parc/jban/pandac_common/obs/satbias/2023 + initialVARBCcoeff: /glade/campaign/mmm/parc/jban/pandac_common/obs/satbias/2023 + +forecast: + job: + 30km: + nodes: 2 + PEPerNode: 128 + baseSeconds: 60 + secondsPerForecastHR: 240 + #execute: False # the default is True + post: [] # use this when doing extended forecast + #post: [verifymodel] # this turns off verifyobs + +#extendedforecast: +# meanTimes: T00 # T00, T12 +# lengthHR: 120 +# outIntervalHR: 24 +# execute: True # this is the default setting +# post: [verifymodel,verifyobs] # can be replaced by [verifyobs,verifymodel] + +variational: + DAType: 3denvar + biasCorrection: True + nInnerIterations: [60,60,] + observers: [ + aircraft, + #gnssrorefncep, + gnssrobndropp1d, + satwind, + satwnd, + sfc, + sondes, + ##amsua_aqua, + #amsua_metop-a, + amsua_metop-b, + amsua_metop-c, + amsua_n15, + amsua_n18, + amsua_n19, + #amsua-cld_metop-a, + #amsua-cld_metop-b, + #amsua-cld_n15, + #amsua-cld_n18, + #amsua-cld_n19, + #mhs_metop-b, + #mhs_metop-c, + #mhs_n18, + #mhs_n19, + #iasi_metop-b, + #iasi_metop-c, + ] + ensemble: + forecasts: + resource: "PANDAC.GEFS" + PANDAC: # only available 20180415T00-20180514T18 + GEFS: + 30km: + maxMembers: 30 + #directory0: '/glade/campaign/mmm/parc/zhuming/GenerateGEFS/ExternalAnalyses/30kmGEFS/{{prevDateTime}}' + directory0: '/glade/derecho/scratch/zhuming/pandac/gefs30km_ensFc/{{prevDateTime}}' + filePrefix: x1.655362.init + memberNDigits: 2 + localization: + 30km: + bumpLocPrefix: bumploc_1200.0km_6.0km + bumpLocDir: /glade/derecho/scratch/bjung/testdata_prepare.2023gefs/Bflow.20241025/global30km_Bloc + covariance: + bumpCovControlVariables: + - stream_function + - velocity_potential + - temperature + - spechum + - surface_pressure + - qc + - qi + - qg + - qr + - qs + bumpCovPrefix: mpas + bumpCovVBalPrefix: mpas + 30km: + #bumpCovDir: /glade/derecho/scratch/bjung/testdata_prepare.2023gefs/Bflow.20241025/global30km_ENS/NICAS.split/differentPE + #bumpCovVBalDir: /glade/derecho/scratch/bjung/testdata_prepare.2023gefs/Bflow.20241025/global30km_ENS/VBAL_iterative/differentPE + bumpCovDir: /glade/derecho/scratch/bjung/testdata_prepare.2023gefs/Bflow.20241025/global30km_ENS/NICAS.split/merge_w_hydro + bumpCovVBalDir: /glade/derecho/scratch/bjung/testdata_prepare.2023gefs/Bflow.20241025/global30km_ENS/VBAL_iterative/2023070106-2023071100 + bumpCovStdDevFile: /glade/derecho/scratch/bjung/testdata_prepare.2023gefs/Bflow.20241025/global30km_ENS/HDIAG_VAR/merge_w_hydro/mpas.stddev.nc + # resource requirements + job: + 30km: + 30km: + 3dvar: + nodes: 4 + PEPerNode: 64 + memory: 235GB + baseSeconds: 900 + #execute: False # the default is True + post: [] # this turns off verifyobs + +workflow: + #first cycle point: 20241130T12 + #first cycle point: 20250106T12 + first cycle point: 20250202T18 + restart cycle point: 20250204T18 + final cycle point: 20250205T00 + #CyclingWindowHR: 24 # default is 6 for cycling DA + #max active cycle points: 4 # used for independent 'extendedforecast' +build: + #mpas bundle: /glade/work/zhuming/pandac/mpas-bundle_20240724/build + mpas bundle: /glade/work/bjung/panda-c/build/mpas-bundle-release-v3.0.2/build_single +hpc: + CriticalAccount: NMMM0015 + #CriticalAccount: NMMM0043 + CriticalQueue: main + NonCriticalAccount: NMMM0015 + #NonCriticalAccount: NMMM0043 + NonCriticalQueue: main + +verifyobs: + #script directory: /glade/work/bjung/panda-c/build/mpas-bundle-release-v3.0.2/mpas-jedi/graphics + script directory: /glade/work/zhuming/pandac/Verification_plot/mpas-jedi/graphics_L66 +verifyModel: + #script directory: /glade/work/bjung/panda-c/build/mpas-bundle-release-v3.0.2/mpas-jedi/graphics + script directory: /glade/work/zhuming/pandac/Verification_plot/mpas-jedi/graphics_L66 diff --git a/test/3dvar_OIE30km_Realtime.yaml b/test/3dvar_OIE30km_Realtime.yaml new file mode 100644 index 00000000..eb99f62e --- /dev/null +++ b/test/3dvar_OIE30km_Realtime.yaml @@ -0,0 +1,173 @@ +experiment: + #suffix: '_VarBC_Bnd' + name: '3dVar_OIE30km_Realtime' + +members: + n: 1 + +model: + outerMesh: 30km + innerMesh: 30km + ensembleMesh: 30km + #resources: + # 30km: + # PhysicsSuite: convection_permitting + # Microphysics: mp_thompson + # Convection: cu_ntiedtke + # PBL: bl_mynn + # Gwdo: bl_ysu_gwdo + # RadiationCloud: cld_fraction_thompson + # RadiationLW: rrtmg_lw + # RadiationSW: rrtmg_sw + # SfcLayer: sf_mynn + # LSM: sf_noah + +invariantstream: + resources: + defaults: + InvariantDirectory: /glade/derecho/scratch/zhuming/pandac/Invariant_L66 + +firstbackground: + resource: "PANDAC.GFS" + resources: + PANDAC: + GFS: + 30km: + #directory: /glade/campaign/mmm/parc/liuz/pandac_common/30km/30km_1stCycle_background_single/{{FirstCycleDate}} + directory: /glade/derecho/scratch/zhuming/pandac/mpas_fcst_30km_L66/{{FirstCycleDate}} + +externalanalyses: + resource: "GFS.NCEPFTP" + #resource: "GFS.PANDAC" + #resources: + # GFS: + # PANDAC: + # 30km: + # #directory: /glade/derecho/scratch/zhuming/pandac/zhuming_3dVar_OIE30km_Realtime/ExternalAnalyses/30km + # directory: /glade/derecho/scratch/zhuming/pandac/mpas_init_30km_L66 + +observations: + resource: NCEPFTPOnline + convertToIODAObservations: + - 1bamua + - 1bmhs + - airsev + - gpsro + - prepbufr + - satwnd + #- mtiasi + #- cris + + #CRTMTABLES: /glade/work/nystrom/Code/JEDI/jcsda_internal/CRTM_V3_coeffs/ + CRTMTABLES: /glade/work/zhuming/pandac/crtm/CRTM_V3_coeffs/ + fixedCoeff: /glade/campaign/mmm/parc/jban/pandac_common/obs/satbias + fixedTlapmeanCov: /glade/campaign/mmm/parc/jban/pandac_common/obs/satbias/2023 + initialVARBCcoeff: /glade/campaign/mmm/parc/jban/pandac_common/obs/satbias/2023 + +forecast: + job: + 30km: + nodes: 2 + PEPerNode: 128 + baseSeconds: 60 + secondsPerForecastHR: 240 + #execute: False # the default is True + post: [] # use this when doing extended forecast + #post: [verifymodel] # this turns off verifyobs + +#extendedforecast: +# meanTimes: T00 # T00, T12 +# lengthHR: 120 +# outIntervalHR: 24 +# execute: True # this is the default setting +# post: [verifymodel,verifyobs] # can be replaced by [verifyobs,verifymodel] + +variational: + DAType: 3dvar + biasCorrection: True + nInnerIterations: [60,60,] + observers: [ + aircraft, + #gnssrorefncep, + gnssrobndropp1d, + satwind, + satwnd, + sfc, + sondes, + ##amsua_aqua, + #amsua_metop-a, + amsua_metop-b, + amsua_metop-c, + amsua_n15, + amsua_n18, + amsua_n19, + #amsua-cld_metop-a, + #amsua-cld_metop-b, + #amsua-cld_n15, + #amsua-cld_n18, + #amsua-cld_n19, + #mhs_metop-b, + #mhs_metop-c, + #mhs_n18, + #mhs_n19, + #iasi_metop-b, + #iasi_metop-c, + ] + covariance: + bumpCovControlVariables: + - stream_function + - velocity_potential + - temperature + - spechum + - surface_pressure + - qc + - qi + - qg + - qr + - qs + bumpCovPrefix: mpas + bumpCovVBalPrefix: mpas + 30km: + bumpCovDir: /glade/derecho/scratch/bjung/testdata_prepare.2023gefs/Bflow.20241025/global30km_ENS/NICAS.split/differentPE + bumpCovVBalDir: /glade/derecho/scratch/bjung/testdata_prepare.2023gefs/Bflow.20241025/global30km_ENS/VBAL_iterative/differentPE + #bumpCovDir: /glade/derecho/scratch/bjung/testdata_prepare.2023gefs/Bflow.20241025/global30km_ENS/NICAS.split/merge_w_hydro + #bumpCovVBalDir: /glade/derecho/scratch/bjung/testdata_prepare.2023gefs/Bflow.20241025/global30km_ENS/VBAL_iterative/2023070106-2023071100 + bumpCovStdDevFile: /glade/derecho/scratch/bjung/testdata_prepare.2023gefs/Bflow.20241025/global30km_ENS/HDIAG_VAR/merge_w_hydro/mpas.stddev.nc + # resource requirements + job: + 30km: + 30km: + 3dvar: + nodes: 6 + PEPerNode: 64 + memory: 235GB + baseSeconds: 900 + #execute: False # the default is True + post: [] # this turns off verifyobs + +workflow: + #first cycle point: 20241130T12 + #restart cycle point: 20241212T12 + #final cycle point: 20241212T12 + first cycle point: 20250106T12 + restart cycle point: 20250106T18 + final cycle point: 20250106T18 + #CyclingWindowHR: 24 # default is 6 for cycling DA + #max active cycle points: 4 # used for independent 'extendedforecast' +build: + #mpas bundle: /glade/work/zhuming/pandac/mpas-bundle_20240724/build + mpas bundle: /glade/work/bjung/panda-c/build/mpas-bundle-release-v3.0.2/build_single +hpc: + CriticalAccount: NMMM0015 + #CriticalAccount: NMMM0043 + CriticalQueue: main + NonCriticalAccount: NMMM0015 + #NonCriticalAccount: NMMM0043 + NonCriticalQueue: main + +verifyobs: + #script directory: /glade/work/bjung/panda-c/build/mpas-bundle-release-v3.0.2/mpas-jedi/graphics + script directory: /glade/work/zhuming/pandac/Verification_plot/mpas-jedi/graphics_L66 +verifyModel: + #script directory: /glade/work/bjung/panda-c/build/mpas-bundle-release-v3.0.2/mpas-jedi/graphics + script directory: /glade/work/zhuming/pandac/Verification_plot/mpas-jedi/graphics_L66 diff --git a/test/GenerateGEFS_Realtime.yaml b/test/GenerateGEFS_Realtime.yaml new file mode 100644 index 00000000..80fd4174 --- /dev/null +++ b/test/GenerateGEFS_Realtime.yaml @@ -0,0 +1,27 @@ +suite: GenerateExternalAnalyses + +externalanalyses: + #resource: "GEFS0.AWS" + resource: "GEFS6HF.AWS" +experiment: + name: 'GenerateGEFS' + prefix: '' + +invariantstream: + resources: + defaults: + InvariantDirectory: /glade/derecho/scratch/zhuming/pandac/Invariant_L66 + +model: + outerMesh: 30km +hpc: + CriticalAccount: NMMM0015 + #CriticalAccount: NMMM0043 + CriticalQueue: main + NonCriticalAccount: NMMM0015 + #NonCriticalAccount: NMMM0043 + NonCriticalQueue: main +workflow: + first cycle point: 20250204T12 + final cycle point: 20250205T00 + max active cycle points: 60 diff --git a/test/GenerateObs_Realtime.yaml b/test/GenerateObs_Realtime.yaml new file mode 100644 index 00000000..38a9a278 --- /dev/null +++ b/test/GenerateObs_Realtime.yaml @@ -0,0 +1,29 @@ +suite: GenerateObs + +observations: + #resource: GladeRDAOnline + resource: NCEPFTPOnline + convertToIODAObservations: + - 1bamua + - 1bmhs + - airsev + - gpsro + - prepbufr + - satwnd + #- mtiasi + #- cris +experiment: + name: 'GenerateObs' + prefix: '' +workflow: + first cycle point: 20241122T12 + final cycle point: 20241122T18 + + max active cycle points: 60 +hpc: + CriticalAccount: NMMM0043 + CriticalQueue: main + NonCriticalAccount: NMMM0043 + NonCriticalQueue: main +#build: +# mpas bundle: /glade/work/zhuming/pandac/mpas-bundle_3.0.1/build