diff --git a/ush/ufoeval/README_phase3 b/ush/ufoeval/README_phase3 index 68eb643a4..ad438bbb7 100644 --- a/ush/ufoeval/README_phase3 +++ b/ush/ufoeval/README_phase3 @@ -24,8 +24,9 @@ config_gsi.yaml and config_jedi.yaml contain the following user settings DA_CORE: DA engine to run. Valid options are gsi or jedi DA_TYPE: type of DA to run. Valid options are 3dv - 3dvar using gsibec - 3dvfgat - 3dvar using gsibec with fgat - hyb3dvfgat - 3dvar using gsibec & 40 member ensemble with fgat + 3dvfgat - 3dvar using gsibec with fgat + hyb3dvfgat - hybrid 3dvar using gsibec & 40 member ensemble with fgat + hyb4denv - hybrid 4denvar using gsibec & 40 member ensemble with fgat APPEXEC: GSI or JEDI analysis executable INCEXEC: executable to convert JEDI cube sphere increment to gaussian grid diff --git a/ush/ufoeval/config_gsi.yaml b/ush/ufoeval/config_gsi.yaml index 5d08bdb93..c81050f87 100644 --- a/ush/ufoeval/config_gsi.yaml +++ b/ush/ufoeval/config_gsi.yaml @@ -17,5 +17,5 @@ directories: app files: DA_CORE: gsi - DA_TYPE: hyb3dvfgat + DA_TYPE: 3dv APPEXE: /scratch1/NCEPDEV/da/Russ.Treadon/git/global-workflow/test/exec/gsi.x diff --git a/ush/ufoeval/config_jedi.yaml b/ush/ufoeval/config_jedi.yaml index 86e1c22a3..032ace914 100644 --- a/ush/ufoeval/config_jedi.yaml +++ b/ush/ufoeval/config_jedi.yaml @@ -17,6 +17,6 @@ directories: app files: DA_CORE: jedi - DA_TYPE: hyb3dvfgat + DA_TYPE: 3dv APPEXE: /scratch1/NCEPDEV/da/Russ.Treadon/git/global-workflow/test/exec/gdas.x INCEXE: /scratch1/NCEPDEV/da/Russ.Treadon/git/global-workflow/test/exec/fv3jedi_fv3inc.x diff --git a/ush/ufoeval/setup_phase3.py b/ush/ufoeval/setup_phase3.py index bc6c027c7..f721f09e7 100755 --- a/ush/ufoeval/setup_phase3.py +++ b/ush/ufoeval/setup_phase3.py @@ -104,10 +104,21 @@ def aprun(self): # JEDI jobs convert cube sphere increments to gausssian grid for comparison if self.appcore == 'jedi': - self.f.write("\n") - self.f.write(f"# Convert cube sphere increments to gaussian grid\n") - aprun_command = f"srun -n {self.ntasks} --cpus-per-task={self.threads} ./fv3jedi_fv3inc.x ./atmanlfv3inc.yaml" - self.f.write(f"{aprun_command}\n") + if self.apptype != "hyb4denv": + self.f.write("\n") + self.f.write(f"# Convert cube sphere increments to gaussian grid\n") + aprun_command = f"srun -n {self.ntasks} --cpus-per-task={self.threads} ./fv3jedi_fv3inc.x ./atmanlfv3inc.yaml" + self.f.write(f"{aprun_command}\n") + else: + # JEDI hyb4denv jobs convert cube sphere increments to gaussian for multiple analysis times + self.f.write("\n") + self.f.write(f"# Convert cube sphere increments to gaussian grid\n") + aprun_command = f"srun -n {self.ntasks} --cpus-per-task={self.threads} ./fv3jedi_fv3inc.x ./atmanlfv3inc03.yaml" + self.f.write(f"{aprun_command}\n") + aprun_command = f"srun -n {self.ntasks} --cpus-per-task={self.threads} ./fv3jedi_fv3inc.x ./atmanlfv3inc06.yaml" + self.f.write(f"{aprun_command}\n") + aprun_command = f"srun -n {self.ntasks} --cpus-per-task={self.threads} ./fv3jedi_fv3inc.x ./atmanlfv3inc09.yaml" + self.f.write(f"{aprun_command}\n") def close(self): """ @@ -143,7 +154,7 @@ def main(): if appcore not in valid: raise ValueError(f"DA_CORE {appcore} is invalid. Valid cores are {valid}") - valid = ['3dv', '3dvfgat', 'hyb3dvfgat'] + valid = ['3dv', '3dvfgat', 'hyb3dvfgat', 'hyb4denv'] if apptype not in valid: raise ValueError(f"DA_TYPE {apptype} is invalid. Valid types are {valid}") @@ -181,7 +192,7 @@ def main(): else: # Copy files and directories to run directory files_to_copy = [ - "atmanlvar.yaml", "atmanlfv3inc.yaml" + "atmanlvar.yaml", "atmanlfv3inc*.yaml" ] for pattern in files_to_copy: for file_path in Path(stagedir).glob(pattern):