From 2786335c72478f76f19a87147054a96543413004 Mon Sep 17 00:00:00 2001 From: mos3r3n Date: Sat, 19 Apr 2025 21:48:24 -0600 Subject: [PATCH 1/3] Using MPAS-JEDI's own exectuable to calculate ensemble mean and variance --- bin/MeanAnalysis.csh | 169 +++++++++++++++--- bin/MeanBackground.csh | 167 ++++++++++++++--- config/jedi/applications/ensMeanVariance.yaml | 23 +++ .../mpas/ensMeanVariance/namelist.atmosphere | 1 + .../stream_list.atmosphere.analysis | 1 + .../stream_list.atmosphere.background | 26 +++ .../stream_list.atmosphere.control | 1 + .../stream_list.atmosphere.ensemble | 1 + .../mpas/ensMeanVariance/streams.atmosphere | 80 +++++++++ config/mpas/variables.csh | 12 +- initialize/framework/Build.py | 15 +- 11 files changed, 441 insertions(+), 55 deletions(-) create mode 100644 config/jedi/applications/ensMeanVariance.yaml create mode 120000 config/mpas/ensMeanVariance/namelist.atmosphere create mode 120000 config/mpas/ensMeanVariance/stream_list.atmosphere.analysis create mode 100644 config/mpas/ensMeanVariance/stream_list.atmosphere.background create mode 120000 config/mpas/ensMeanVariance/stream_list.atmosphere.control create mode 120000 config/mpas/ensMeanVariance/stream_list.atmosphere.ensemble create mode 100644 config/mpas/ensMeanVariance/streams.atmosphere diff --git a/bin/MeanAnalysis.csh b/bin/MeanAnalysis.csh index ab6fa313..c35bc480 100755 --- a/bin/MeanAnalysis.csh +++ b/bin/MeanAnalysis.csh @@ -10,77 +10,202 @@ date # Setup environment # ================= source config/environmentJEDI.csh +source config/mpas/variables.csh source config/tools.csh source config/auto/build.csh +source config/auto/experiment.csh source config/auto/members.csh +source config/auto/model.csh +source config/auto/invariantstream.csh +source config/auto/workflow.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 = ${thisCycleDate} source ./bin/getCycleVars.csh -# static work directory -set self_WorkDir = $MeanAnalysisDirs[1] +set self_WorkDir = $MeanAnalysisDirs[1] echo "WorkDir = ${self_WorkDir}" mkdir -p ${self_WorkDir} cd ${self_WorkDir} +# build, executable, yaml +set myBuildDir = ${meanStateBuildDir} +set myEXE = ${meanStateExe} +set appyaml = ensMeanVariance.yaml +set myYAML = ${self_WorkDir}/${appyaml} + # other static variables set self_StateDirs = ($CyclingDAOutDirs) set self_StatePrefix = ${ANFilePrefix} -set memberPrefix = ${self_StatePrefix}.${thisMPASFileDate}mem +set memberPrefix = ${self_StatePrefix}.${thisMPASFileDate}.mem set meanName = ${self_StatePrefix}.$thisMPASFileDate.nc set varianceName = ${self_StatePrefix}.$thisMPASFileDate.variance.nc # ================================================================================================ - -## link analysis members +## Link background/analysis members set member = 1 while ( $member <= ${nMembers} ) set appMember = `${memberDir} 2 $member "{:03d}"` -# set appMember = printf "%03d" $member` ln -sfv $self_StateDirs[$member]/${meanName} ./${memberPrefix}${appMember} @ member++ end if (${nMembers} == 1) then - # TODO: just need to exit when follow-on applications receive states via python scripts - ## pass-through for mean ln -sfv $self_StateDirs[1]/${meanName} ./ - echo "$0 (INFO): linked determinstic state for mean" - exit 0 endif ## make copy for mean -cp $self_StateDirs[1]/${meanName} ./ +cp $self_StateDirs[1]/${meanName} ./${meanName} ## make copy for variance cp $self_StateDirs[1]/${meanName} ./${varianceName} +# =================================================== +## Prepare jedi-related files +## copy invariant fields +rm ${localInvariantFieldsPrefix}*.nc +rm ${localInvariantFieldsPrefix}*.nc-lock +set localInvariantFieldsFile = ${localInvariantFieldsFileEnsemble} +rm ${localInvariantFieldsFile} +set InvariantFieldsFile = ${InvariantFieldsDirEnsemble}/${InvariantFieldsFileEnsemble} +ln -sfv ${InvariantFieldsFile} ${localInvariantFieldsFile}${OrigFileSuffix} +cp -v ${InvariantFieldsFile} ${localInvariantFieldsFile} + +# ==================== +# Model-specific files +# ==================== +## link MPAS mesh graph info +ln -sfv $GraphInfoDir/x1.${nCellsEnsemble}.graph.info* . + +## link lookup tables +foreach fileGlob ($MPASLookupFileGlobs) + ln -sfv ${MPASLookupDir}/*${fileGlob} . +end -# Run the executable -# ================== -set arg1 = ${self_WorkDir} -set arg2 = ${meanName} -set arg3 = ${varianceName} -set arg4 = ${memberPrefix} -set arg5 = ${nMembers} +## link/copy stream_list/streams configs +foreach staticfile ( \ +stream_list.${MPASCore}.background \ +stream_list.${MPASCore}.analysis \ +stream_list.${MPASCore}.ensemble \ +stream_list.${MPASCore}.control \ +) + ln -sfv $ModelConfigDir/ensMeanVariance/$staticfile . +end -ln -sfv ${meanStateBuildDir}/${meanStateExe} ./ -mpiexec ./${meanStateExe} "$arg1" "$arg2" "$arg3" "$arg4" "$arg5" >& log +rm ${StreamsFile} +cp -v $ModelConfigDir/ensMeanVariance/${StreamsFile} . +sed -i 's@{{nCells}}@'${nCellsEnsemble}'@' ${StreamsFile} +sed -i 's@{{TemplateFieldsPrefix}}@'${self_WorkDir}'/'${TemplateFieldsPrefix}'@' ${StreamsFile} +sed -i 's@{{InvariantFieldsPrefix}}@'${self_WorkDir}'/'${localInvariantFieldsPrefix}'@' ${StreamsFile} +sed -i 's@{{PRECISION}}@'${model__precision}'@' ${StreamsFile} + +# determine analysis output precision +ncdump -h ${meanName} | grep uReconstruct | grep double +if ($status == 0) then + set analysisPrecision=double +else + ncdump -h ${meanName} | grep uReconstruct | grep float + if ($status == 0) then + set analysisPrecision=single + else + echo "ERROR in $0 : cannot determine analysis precision" > ./FAIL + exit 1 + endif +endif +sed -i 's@{{analysisPRECISION}}@'${analysisPrecision}'@' ${StreamsFile} + +## copy/modify dynamic namelist +## copy/modify dynamic namelist +rm $NamelistFile +cp -v $ModelConfigDir/ensMeanVariance/${NamelistFile} . +sed -i 's@startTime@'${thisMPASNamelistDate}'@' $NamelistFile +sed -i 's@blockDecompPrefix@'${self_WorkDir}'/x'${meshRatioEnsemble}'.'${nCellsEnsemble}'@' ${NamelistFile} +sed -i 's@modelDT@'${TimeStepEnsemble}'@' $NamelistFile +sed -i 's@diffusionLengthScale@'${DiffusionLengthScaleEnsemble}'@' $NamelistFile + +## modify namelist physics +sed -i 's@radtlwInterval@'${RadiationLWIntervalEnsemble}'@' $NamelistFile +sed -i 's@radtswInterval@'${RadiationSWIntervalEnsemble}'@' $NamelistFile +sed -i 's@physicsSuite@'${PhysicsSuiteEnsemble}'@' $NamelistFile +sed -i 's@micropScheme@'${MicrophysicsEnsemble}'@' $NamelistFile +sed -i 's@convectionScheme@'${ConvectionEnsemble}'@' $NamelistFile +sed -i 's@pblScheme@'${PBLEnsemble}'@' $NamelistFile +sed -i 's@gwdoScheme@'${GwdoEnsemble}'@' $NamelistFile +sed -i 's@radtCldScheme@'${RadiationCloudEnsemble}'@' $NamelistFile +sed -i 's@radtLWScheme@'${RadiationLWEnsemble}'@' $NamelistFile +sed -i 's@radtSWScheme@'${RadiationSWEnsemble}'@' $NamelistFile +sed -i 's@sfcLayerScheme@'${SfcLayerEnsemble}'@' $NamelistFile +sed -i 's@lsmScheme@'${LSMEnsemble}'@' $NamelistFile + +## MPASJEDI variable configs +foreach file ($MPASJEDIVariablesFiles) + ln -sfv $ModelConfigDir/$file . +end + +# ============= +# Generate yaml +# ============= +## Copy jedi/applications yaml +set thisYAML = orig.yaml +cp -v ${ConfigDir}/jedi/applications/${appyaml} $thisYAML + +## streams +sed -i 's@{{EnsembleStreamsFile}}@'${self_WorkDir}'/'${StreamsFile}'@' $thisYAML + +## namelist +sed -i 's@{{EnsembleNamelistFile}}@'${self_WorkDir}'/'${NamelistFile}'@' $thisYAML + +## revise current date +sed -i 's@{{thisISO8601Date}}@'${thisISO8601Date}'@g' $thisYAML + +# use one of the analyses as the TemplateFieldsFileOuter +set meshFile = ${meanName} +ln -sfv $meshFile ${TemplateFieldsFileOuter} + +# Variables necessary +set StateVariables = ( \ + $StandardStateVariables \ + $MPASHydroStateVariables \ +) +set VarSub = "" +foreach var ($StateVariables) + set VarSub = "$VarSub$var," +end +# remove trailing comma +set VarSub = `echo "$VarSub" | sed 's/.$//'` +sed -i 's@{{StateVariables}}@'$VarSub'@' $thisYAML + +## file naming +sed -i 's@{{EnsembleMember}}@'${memberPrefix}'@g' $thisYAML +sed -i 's@{{EnsembleNumber}}@'${nMembers}'@g' $thisYAML +sed -i 's@{{EnsembleMeanFile}}@'${meanName}'@g' $thisYAML +sed -i 's@{{EnsembleVarianceFile}}@'${varianceName}'@g' $thisYAML +set prevYAML = $thisYAML +## state and analysis variable configs +mv $prevYAML $myYAML + +# Run the executable +# ================== +ln -sfv ${myBuildDir}/${myEXE} ./ +mpiexec ./${myEXE} $myYAML ./jedi.log >& jedi.log.all # Check status # ============ -grep 'All done' log +grep 'Run: Finishing oops.* with status = 0' jedi.log if ( $status != 0 ) then - echo "$0 (ERROR): mean state application failed" > ./FAIL + echo "ERROR in $0 : jedi application failed" > ./FAIL exit 1 endif +## change static fields to a link, keeping for transparency +rm ${localInvariantFieldsFile} +mv ${localInvariantFieldsFile}${OrigFileSuffix} ${localInvariantFieldsFile} + date exit 0 diff --git a/bin/MeanBackground.csh b/bin/MeanBackground.csh index f6a38cd2..06bc2cf4 100755 --- a/bin/MeanBackground.csh +++ b/bin/MeanBackground.csh @@ -10,77 +10,202 @@ date # Setup environment # ================= source config/environmentJEDI.csh +source config/mpas/variables.csh source config/tools.csh source config/auto/build.csh +source config/auto/experiment.csh source config/auto/members.csh +source config/auto/model.csh +source config/auto/invariantstream.csh +source config/auto/workflow.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 = ${thisCycleDate} source ./bin/getCycleVars.csh -# static work directory set self_WorkDir = $MeanBackgroundDirs[1] echo "WorkDir = ${self_WorkDir}" mkdir -p ${self_WorkDir} cd ${self_WorkDir} +# build, executable, yaml +set myBuildDir = ${meanStateBuildDir} +set myEXE = ${meanStateExe} +set appyaml = ensMeanVariance.yaml +set myYAML = ${self_WorkDir}/${appyaml} + # other static variables set self_StateDirs = ($prevCyclingFCDirs) set self_StatePrefix = ${FCFilePrefix} -set memberPrefix = ${self_StatePrefix}.${thisMPASFileDate}mem +set memberPrefix = ${self_StatePrefix}.${thisMPASFileDate}.mem set meanName = ${self_StatePrefix}.$thisMPASFileDate.nc set varianceName = ${self_StatePrefix}.$thisMPASFileDate.variance.nc # ================================================================================================ - -## link background members +## Link background/analysis members set member = 1 while ( $member <= ${nMembers} ) set appMember = `${memberDir} 2 $member "{:03d}"` -# set appMember = printf "%03d" $member` ln -sfv $self_StateDirs[$member]/${meanName} ./${memberPrefix}${appMember} @ member++ end if (${nMembers} == 1) then - # TODO: just need to exit when follow-on applications receive states via python scripts - ## pass-through for mean ln -sfv $self_StateDirs[1]/${meanName} ./ - echo "$0 (INFO): linked determinstic state for mean" - exit 0 endif ## make copy for mean -cp $self_StateDirs[1]/${meanName} ./ +cp $self_StateDirs[1]/${meanName} ./${meanName} ## make copy for variance cp $self_StateDirs[1]/${meanName} ./${varianceName} +# =================================================== +## Prepare jedi-related files +## copy invariant fields +rm ${localInvariantFieldsPrefix}*.nc +rm ${localInvariantFieldsPrefix}*.nc-lock +set localInvariantFieldsFile = ${localInvariantFieldsFileEnsemble} +rm ${localInvariantFieldsFile} +set InvariantFieldsFile = ${InvariantFieldsDirEnsemble}/${InvariantFieldsFileEnsemble} +ln -sfv ${InvariantFieldsFile} ${localInvariantFieldsFile}${OrigFileSuffix} +cp -v ${InvariantFieldsFile} ${localInvariantFieldsFile} + +# ==================== +# Model-specific files +# ==================== +## link MPAS mesh graph info +ln -sfv $GraphInfoDir/x1.${nCellsEnsemble}.graph.info* . + +## link lookup tables +foreach fileGlob ($MPASLookupFileGlobs) + ln -sfv ${MPASLookupDir}/*${fileGlob} . +end -# Run the executable -# ================== -set arg1 = ${self_WorkDir} -set arg2 = ${meanName} -set arg3 = ${varianceName} -set arg4 = ${memberPrefix} - set arg5 = ${nMembers} +## link/copy stream_list/streams configs +foreach staticfile ( \ +stream_list.${MPASCore}.background \ +stream_list.${MPASCore}.analysis \ +stream_list.${MPASCore}.ensemble \ +stream_list.${MPASCore}.control \ +) + ln -sfv $ModelConfigDir/ensMeanVariance/$staticfile . +end -ln -sfv ${meanStateBuildDir}/${meanStateExe} ./ -mpiexec ./${meanStateExe} "$arg1" "$arg2" "$arg3" "$arg4" "$arg5" >& log +rm ${StreamsFile} +cp -v $ModelConfigDir/ensMeanVariance/${StreamsFile} . +sed -i 's@{{nCells}}@'${nCellsEnsemble}'@' ${StreamsFile} +sed -i 's@{{TemplateFieldsPrefix}}@'${self_WorkDir}'/'${TemplateFieldsPrefix}'@' ${StreamsFile} +sed -i 's@{{InvariantFieldsPrefix}}@'${self_WorkDir}'/'${localInvariantFieldsPrefix}'@' ${StreamsFile} +sed -i 's@{{PRECISION}}@'${model__precision}'@' ${StreamsFile} + +# determine analysis output precision +ncdump -h ${meanName} | grep uReconstruct | grep double +if ($status == 0) then + set analysisPrecision=double +else + ncdump -h ${meanName} | grep uReconstruct | grep float + if ($status == 0) then + set analysisPrecision=single + else + echo "ERROR in $0 : cannot determine analysis precision" > ./FAIL + exit 1 + endif +endif +sed -i 's@{{analysisPRECISION}}@'${analysisPrecision}'@' ${StreamsFile} + +## copy/modify dynamic namelist +## copy/modify dynamic namelist +rm $NamelistFile +cp -v $ModelConfigDir/ensMeanVariance/${NamelistFile} . +sed -i 's@startTime@'${thisMPASNamelistDate}'@' $NamelistFile +sed -i 's@blockDecompPrefix@'${self_WorkDir}'/x'${meshRatioEnsemble}'.'${nCellsEnsemble}'@' ${NamelistFile} +sed -i 's@modelDT@'${TimeStepEnsemble}'@' $NamelistFile +sed -i 's@diffusionLengthScale@'${DiffusionLengthScaleEnsemble}'@' $NamelistFile + +## modify namelist physics +sed -i 's@radtlwInterval@'${RadiationLWIntervalEnsemble}'@' $NamelistFile +sed -i 's@radtswInterval@'${RadiationSWIntervalEnsemble}'@' $NamelistFile +sed -i 's@physicsSuite@'${PhysicsSuiteEnsemble}'@' $NamelistFile +sed -i 's@micropScheme@'${MicrophysicsEnsemble}'@' $NamelistFile +sed -i 's@convectionScheme@'${ConvectionEnsemble}'@' $NamelistFile +sed -i 's@pblScheme@'${PBLEnsemble}'@' $NamelistFile +sed -i 's@gwdoScheme@'${GwdoEnsemble}'@' $NamelistFile +sed -i 's@radtCldScheme@'${RadiationCloudEnsemble}'@' $NamelistFile +sed -i 's@radtLWScheme@'${RadiationLWEnsemble}'@' $NamelistFile +sed -i 's@radtSWScheme@'${RadiationSWEnsemble}'@' $NamelistFile +sed -i 's@sfcLayerScheme@'${SfcLayerEnsemble}'@' $NamelistFile +sed -i 's@lsmScheme@'${LSMEnsemble}'@' $NamelistFile + +## MPASJEDI variable configs +foreach file ($MPASJEDIVariablesFiles) + ln -sfv $ModelConfigDir/$file . +end + +# ============= +# Generate yaml +# ============= +## Copy jedi/applications yaml +set thisYAML = orig.yaml +cp -v ${ConfigDir}/jedi/applications/${appyaml} $thisYAML + +## streams +sed -i 's@{{EnsembleStreamsFile}}@'${self_WorkDir}'/'${StreamsFile}'@' $thisYAML + +## namelist +sed -i 's@{{EnsembleNamelistFile}}@'${self_WorkDir}'/'${NamelistFile}'@' $thisYAML + +## revise current date +sed -i 's@{{thisISO8601Date}}@'${thisISO8601Date}'@g' $thisYAML + +# use one of the analyses as the TemplateFieldsFileOuter +set meshFile = ${meanName} +ln -sfv $meshFile ${TemplateFieldsFileOuter} + +# Variables necessary +set StateVariables = ( \ + $StandardStateVariables \ + $MPASHydroStateVariables \ +) +set VarSub = "" +foreach var ($StateVariables) + set VarSub = "$VarSub$var," +end +# remove trailing comma +set VarSub = `echo "$VarSub" | sed 's/.$//'` +sed -i 's@{{StateVariables}}@'$VarSub'@' $thisYAML + +## file naming +sed -i 's@{{EnsembleMember}}@'${memberPrefix}'@g' $thisYAML +sed -i 's@{{EnsembleNumber}}@'${nMembers}'@g' $thisYAML +sed -i 's@{{EnsembleMeanFile}}@'${meanName}'@g' $thisYAML +sed -i 's@{{EnsembleVarianceFile}}@'${varianceName}'@g' $thisYAML +set prevYAML = $thisYAML +## state and analysis variable configs +mv $prevYAML $myYAML + +# Run the executable +# ================== +ln -sfv ${myBuildDir}/${myEXE} ./ +mpiexec ./${myEXE} $myYAML ./jedi.log >& jedi.log.all # Check status # ============ -grep 'All done' log +grep 'Run: Finishing oops.* with status = 0' jedi.log if ( $status != 0 ) then - echo "$0 (ERROR): mean state application failed" > ./FAIL + echo "ERROR in $0 : jedi application failed" > ./FAIL exit 1 endif +## change static fields to a link, keeping for transparency +rm ${localInvariantFieldsFile} +mv ${localInvariantFieldsFile}${OrigFileSuffix} ${localInvariantFieldsFile} + date exit 0 diff --git a/config/jedi/applications/ensMeanVariance.yaml b/config/jedi/applications/ensMeanVariance.yaml new file mode 100644 index 00000000..7088cc10 --- /dev/null +++ b/config/jedi/applications/ensMeanVariance.yaml @@ -0,0 +1,23 @@ +_state read: &stateReadConfig + date: {{thisISO8601Date}} + state variables: [{{StateVariables}}] + stream name: background +geometry: + nml_file: {{EnsembleNamelistFile}} + streams_file: {{EnsembleStreamsFile}} + deallocate non-da fields: true +ensemble: + members from template: + template: + <<: *stateReadConfig + filename: {{EnsembleMember}}%iMember% + pattern: %iMember% + start: 1 + zero padding: 3 + nmembers: {{EnsembleNumber}} +mean output: + filename: {{EnsembleMeanFile}} + stream name: background +variance output: + filename: {{EnsembleVarianceFile}} + stream name: background diff --git a/config/mpas/ensMeanVariance/namelist.atmosphere b/config/mpas/ensMeanVariance/namelist.atmosphere new file mode 120000 index 00000000..dd1b8c60 --- /dev/null +++ b/config/mpas/ensMeanVariance/namelist.atmosphere @@ -0,0 +1 @@ +../variational/namelist.atmosphere \ No newline at end of file diff --git a/config/mpas/ensMeanVariance/stream_list.atmosphere.analysis b/config/mpas/ensMeanVariance/stream_list.atmosphere.analysis new file mode 120000 index 00000000..5b8454a0 --- /dev/null +++ b/config/mpas/ensMeanVariance/stream_list.atmosphere.analysis @@ -0,0 +1 @@ +../variational/stream_list.atmosphere.analysis \ No newline at end of file diff --git a/config/mpas/ensMeanVariance/stream_list.atmosphere.background b/config/mpas/ensMeanVariance/stream_list.atmosphere.background new file mode 100644 index 00000000..1ebb4f2a --- /dev/null +++ b/config/mpas/ensMeanVariance/stream_list.atmosphere.background @@ -0,0 +1,26 @@ +pressure_base +pressure_p +rho +scalars +surface_pressure +theta +u +w +uReconstructZonal +uReconstructMeridional +u10 +v10 +t2m +q2 +xice +snowc +skintemp +snowh +vegfra +lai +smois +tslb +re_ice +re_cloud +re_snow +cldfrac diff --git a/config/mpas/ensMeanVariance/stream_list.atmosphere.control b/config/mpas/ensMeanVariance/stream_list.atmosphere.control new file mode 120000 index 00000000..cc56a458 --- /dev/null +++ b/config/mpas/ensMeanVariance/stream_list.atmosphere.control @@ -0,0 +1 @@ +../variational/stream_list.atmosphere.control \ No newline at end of file diff --git a/config/mpas/ensMeanVariance/stream_list.atmosphere.ensemble b/config/mpas/ensMeanVariance/stream_list.atmosphere.ensemble new file mode 120000 index 00000000..e22d7da5 --- /dev/null +++ b/config/mpas/ensMeanVariance/stream_list.atmosphere.ensemble @@ -0,0 +1 @@ +../variational/stream_list.atmosphere.ensemble \ No newline at end of file diff --git a/config/mpas/ensMeanVariance/streams.atmosphere b/config/mpas/ensMeanVariance/streams.atmosphere new file mode 100644 index 00000000..3c2976b2 --- /dev/null +++ b/config/mpas/ensMeanVariance/streams.atmosphere @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/mpas/variables.csh b/config/mpas/variables.csh index e9548898..9d1b6a57 100755 --- a/config/mpas/variables.csh +++ b/config/mpas/variables.csh @@ -10,7 +10,14 @@ set MPASHydroIncrementVariables = ( \ rain_water \ snow_water \ ) -set MPASHydroStateVariables = (${MPASHydroIncrementVariables} cldfrac) + +set MPASHydroStateVariables = ( \ + ${MPASHydroIncrementVariables} \ + cloud_area_fraction_in_atmosphere_layer \ + effective_radius_of_cloud_liquid_water_particle \ + effective_radius_of_cloud_ice_particle \ + effective_radius_of_snow_particle \ +) set StandardAnalysisVariables = ( \ water_vapor_mixing_ratio_wrt_moist_air \ @@ -24,6 +31,7 @@ set StandardStateVariables = ( \ air_potential_temperature \ dry_air_density \ u \ + w \ water_vapor_mixing_ratio_wrt_dry_air \ air_pressure \ landmask \ @@ -36,6 +44,8 @@ set StandardStateVariables = ( \ vegetation_area_fraction \ eastward_wind_at_10m \ northward_wind_at_10m \ + air_temperature_at_2m \ + water_vapor_mixing_ratio_wrt_moist_air_at_2m \ lai \ smois \ tslb \ diff --git a/initialize/framework/Build.py b/initialize/framework/Build.py index 6502e7e3..becd97cf 100644 --- a/initialize/framework/Build.py +++ b/initialize/framework/Build.py @@ -57,7 +57,6 @@ def __init__(self, config:Config, model:Model=None): # FIXME the source for the app in this directory was copied from # /glade/work/guerrett/pandac/work/meanState/spack-stack_gcc-10.1.0_openmpi-4.1.1 # meanStateBuildDir = '/glade/work/jwittig/repos1/mpas-bundle-r2.0/build-gnu-derecho-single/bin' - meanStateBuildDir = '/glade/work/jwittig/repos1/mpas-bundle-dev-new/build-gnu-1p-ss1.6.0/bin' elif system == 'cheyenne': self.variablesWithDefaults['mpas bundle'] = \ ['/glade/p/mmm/parc/liuz/pandac_common/mpas-bundle-code-build/mpas_bundle_2.0_gnuSP/build', str] @@ -68,12 +67,9 @@ def __init__(self, config:Config, model:Model=None): # Ungrib wpsBuildDir = '/glade/work/guerrett/pandac/data/GEFS' - # Mean state calculator - meanStateBuildDir = '/glade/work/guerrett/pandac/work/meanState/spack-stack_gcc-10.1.0_openmpi-4.1.1' else: self._msg('unknown host:' + system) wpsBuildDir = '' - meanStateBuildDir = '' super().__init__(config) @@ -111,6 +107,10 @@ def __init__(self, config:Config, model:Model=None): self._set('SACAEXE', 'mpasjedi_saca.x') self._set('SACABuildDir', self['mpas bundle']+'/bin') + ## EnsMeanVariance + self._set('meanStateExe', 'mpasjedi_ens_mean_variance.x') + self._set('meanStateBuildDir', self['mpas bundle']+'/bin') + if model is not None: # MPAS-Model @@ -188,11 +188,4 @@ def __init__(self, config:Config, model:Model=None): self._set('iodaUpgradeEXE2', 'ioda-upgrade-v2-to-v3.x') self._set('iodaUpgradeBuildDir', self['mpas bundle']+'/bin') - # Mean state calculator - # --------------------- - #self._set('meanStateExe', 'mpasjedi_ens_mean_variance.x') - #self._set('meanStateBuildDir', '/glade/work/taosun/Derecho/MPAS/JEDI_MPAS/build_intel'+'/bin') - self._set('meanStateExe', 'average_netcdf_files_parallel_mpas.x') - self._set('meanStateBuildDir', meanStateBuildDir) - self._cshVars = list(self._vtable.keys()) From 11d2ddea1283e13f7b076b1ba0bbc04196fd7555 Mon Sep 17 00:00:00 2001 From: mos3r3n Date: Tue, 22 Apr 2025 11:06:19 -0600 Subject: [PATCH 2/3] Reset hydrometeor state variables --- config/mpas/variables.csh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/config/mpas/variables.csh b/config/mpas/variables.csh index 9d1b6a57..cb5488ba 100755 --- a/config/mpas/variables.csh +++ b/config/mpas/variables.csh @@ -12,11 +12,11 @@ set MPASHydroIncrementVariables = ( \ ) set MPASHydroStateVariables = ( \ - ${MPASHydroIncrementVariables} \ - cloud_area_fraction_in_atmosphere_layer \ - effective_radius_of_cloud_liquid_water_particle \ - effective_radius_of_cloud_ice_particle \ - effective_radius_of_snow_particle \ + $MPASHydroIncrementVariables \ + cldfrac \ + re_cloud \ + re_snow \ + re_ice \ ) set StandardAnalysisVariables = ( \ From 936feb71c153de6c0027a55fa493ecb158216757 Mon Sep 17 00:00:00 2001 From: Tao Sun <41139193+mos3r3n@users.noreply.github.com> Date: Mon, 28 Apr 2025 10:28:14 -0600 Subject: [PATCH 3/3] Update variables.csh --- config/mpas/variables.csh | 2 -- 1 file changed, 2 deletions(-) diff --git a/config/mpas/variables.csh b/config/mpas/variables.csh index cb5488ba..2bc4a007 100755 --- a/config/mpas/variables.csh +++ b/config/mpas/variables.csh @@ -44,8 +44,6 @@ set StandardStateVariables = ( \ vegetation_area_fraction \ eastward_wind_at_10m \ northward_wind_at_10m \ - air_temperature_at_2m \ - water_vapor_mixing_ratio_wrt_moist_air_at_2m \ lai \ smois \ tslb \