From 977beee99a14f2e3e1f38ecaa0bc416f6c445f93 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Tue, 24 Jan 2023 13:26:55 -0500 Subject: [PATCH 1/7] wip --- scripts/exgdas_global_marine_analysis_prep.py | 3 +- scripts/exgdas_global_marine_analysis_run.sh | 2 +- scripts/exgdas_global_marine_analysis_vrfy.py | 109 ++++++++++++++++++ test/soca/gw/CMakeLists.txt | 3 +- 4 files changed, 113 insertions(+), 4 deletions(-) create mode 100755 scripts/exgdas_global_marine_analysis_vrfy.py diff --git a/scripts/exgdas_global_marine_analysis_prep.py b/scripts/exgdas_global_marine_analysis_prep.py index cf198de99..347d09bf8 100755 --- a/scripts/exgdas_global_marine_analysis_prep.py +++ b/scripts/exgdas_global_marine_analysis_prep.py @@ -161,9 +161,8 @@ def gen_bkg_list(bkg_path, out_path, window_begin=' ', file_type='gdas.t*.ocnf00 ufsda.mkdir(bkg_dir) # create output directory for soca DA -anl_out = os.path.join(comout, 'ocnanal_' + os.getenv('cyc'), 'Data') +anl_out = os.path.join(anl_dir, 'Data') ufsda.mkdir(anl_out) -ufsda.symlink(anl_out, os.path.join(anl_dir, 'Data'), remove=False) ################################################################################ # fetch observations diff --git a/scripts/exgdas_global_marine_analysis_run.sh b/scripts/exgdas_global_marine_analysis_run.sh index 659cdda56..9391fbcdf 100755 --- a/scripts/exgdas_global_marine_analysis_run.sh +++ b/scripts/exgdas_global_marine_analysis_run.sh @@ -160,7 +160,7 @@ export err=$?; err_chk # Note: ${DATA}/INPUT/MOM.res.nc points to the MOM6 history file from the start of the window # and is used to get the valid vertical geometry of the increment socaincr=$(ls -t ${DATA}/Data/ocn.*3dvar*.incr* | head -1) -mom6incr=${COMOUT}/inc.nc +mom6incr=${DATA}/inc.nc ( socaincr2mom6 ${socaincr} ${DATA}/INPUT/MOM.res.nc ${DATA}/soca_gridspec.nc ${mom6incr} ) diff --git a/scripts/exgdas_global_marine_analysis_vrfy.py b/scripts/exgdas_global_marine_analysis_vrfy.py new file mode 100755 index 000000000..a9597590e --- /dev/null +++ b/scripts/exgdas_global_marine_analysis_vrfy.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 +################################################################################ +# UNIX Script Documentation Block +# . . +# Script name: exufsda_global_marine_analysis_vrfy.py +# Script description: State and observation space verification for UFS Global Marine Analysis +# +# Author: Guillaume Vernieres Org: NCEP/EMC Date: 2023-01-23 +# +# Abstract: This script produces a figures relevant to the cycle +# +# $Id$ +# +# Attributes: +# Language: Python3 +# +################################################################################ + +# import os and sys to add ush to path +import os +import sys +import yaml +import glob +import dateutil.parser as dparser +import shutil + +import subprocess +from datetime import datetime, timedelta +from netCDF4 import Dataset +import xarray as xr +import numpy as np +import logging + +# set up logger +logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s', level=logging.INFO, datefmt='%Y-%m-%d %H:%M:%S') + +import xarray as xr +import matplotlib.pyplot as plt + +import xarray as xr +import cartopy +import cartopy.crs as ccrs +import matplotlib.pyplot as plt +import ufsda + + +def plot_config(grid_file, data_file, variable, levels, bounds, colormap, comout): + config = {} + config['grid file'] = grid_file + config['fields file'] = data_file + config['variable'] = variable + config['levels'] = levels + config['bounds'] = bounds + config['colormap'] = colormap + config['comout'] = comout + return config + +def plot_horizontal_slice(config): + + level = config['levels'][0] + grid = xr.open_dataset(config['grid file']) + data = xr.open_dataset(config['fields file']) + if config['variable'] in ['Temp', 'Salt', 'u', 'v']: + slice_data = data[config['variable']].sel(Layer=level) + else: + slice_data = data[config['variable']] + bounds = config['bounds'] + + + fig, ax = plt.subplots(figsize=(8, 5), subplot_kw={'projection': ccrs.PlateCarree()}) + plt.pcolormesh(np.squeeze(grid.lon), + np.squeeze(grid.lat), + np.squeeze(slice_data), + vmin=bounds[0], vmax=bounds[1], + transform=ccrs.PlateCarree(), + cmap=config['colormap']) + plt.colorbar(label=config['variable']+' Level '+str(level), shrink=0.5, orientation='horizontal') + + ax.coastlines() + ax.gridlines(draw_labels=True) + ax.add_feature(cartopy.feature.LAND) #facecolor="blue") + dirname = os.path.join(config['comout'], 'vrfy',config['variable']) + ufsda.mkdir(dirname) + + figname = os.path.join(dirname, config['variable']+'_Level_'+str(level)) + plt.savefig(figname, bbox_inches='tight') + + +comout = os.getenv('COMOUT') + +# Temperature +config = plot_config(grid_file=os.path.join(comout, 'gdas.t9z.ocngrid.nc'), + data_file=os.path.join(comout, 'gdas.t12z.ocninc.nc'), + variable='Temp', + levels=[1], + bounds=[-1, 1], + colormap='bwr', + comout=comout) +plot_horizontal_slice(config) + +# Salinity +config['variable'] = 'Salt' +config['bounds'] = [-0.1, 0.1] +plot_horizontal_slice(config) + +# Sea surface height +config['variable'] = 'ave_ssh' +config['bounds'] = [-0.1, 0.1] +plot_horizontal_slice(config) diff --git a/test/soca/gw/CMakeLists.txt b/test/soca/gw/CMakeLists.txt index 42d939e4e..9e0f7383c 100644 --- a/test/soca/gw/CMakeLists.txt +++ b/test/soca/gw/CMakeLists.txt @@ -20,7 +20,8 @@ add_test(NAME test_gdasapp_soca_run_clean # Test JGDAS_GLOBAL_OCEAN_ANALYSIS_* set(jjob_list "JGDAS_GLOBAL_OCEAN_ANALYSIS_PREP" "JGDAS_GLOBAL_OCEAN_ANALYSIS_RUN" - "JGDAS_GLOBAL_OCEAN_ANALYSIS_POST") + "JGDAS_GLOBAL_OCEAN_ANALYSIS_POST" + "JGDAS_GLOBAL_OCEAN_ANALYSIS_VRFY") set(setup "") foreach(jjob ${jjob_list}) From e30764029d0ba0852aeb9c0a450e2acbb4aff32e Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Tue, 24 Jan 2023 13:35:26 -0500 Subject: [PATCH 2/7] fixed cn --- scripts/exgdas_global_marine_analysis_vrfy.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/scripts/exgdas_global_marine_analysis_vrfy.py b/scripts/exgdas_global_marine_analysis_vrfy.py index a9597590e..ca441fe1f 100755 --- a/scripts/exgdas_global_marine_analysis_vrfy.py +++ b/scripts/exgdas_global_marine_analysis_vrfy.py @@ -45,6 +45,9 @@ def plot_config(grid_file, data_file, variable, levels, bounds, colormap, comout): + """ + Prepares the configuration for the plotting function below + """ config = {} config['grid file'] = grid_file config['fields file'] = data_file @@ -55,8 +58,11 @@ def plot_config(grid_file, data_file, variable, levels, bounds, colormap, comout config['comout'] = comout return config -def plot_horizontal_slice(config): +def plot_horizontal_slice(config): + """ + pcolormesh of a horizontal slice of an ocean field + """ level = config['levels'][0] grid = xr.open_dataset(config['grid file']) data = xr.open_dataset(config['fields file']) @@ -65,8 +71,6 @@ def plot_horizontal_slice(config): else: slice_data = data[config['variable']] bounds = config['bounds'] - - fig, ax = plt.subplots(figsize=(8, 5), subplot_kw={'projection': ccrs.PlateCarree()}) plt.pcolormesh(np.squeeze(grid.lon), np.squeeze(grid.lat), @@ -75,13 +79,11 @@ def plot_horizontal_slice(config): transform=ccrs.PlateCarree(), cmap=config['colormap']) plt.colorbar(label=config['variable']+' Level '+str(level), shrink=0.5, orientation='horizontal') - ax.coastlines() ax.gridlines(draw_labels=True) - ax.add_feature(cartopy.feature.LAND) #facecolor="blue") - dirname = os.path.join(config['comout'], 'vrfy',config['variable']) + ax.add_feature(cartopy.feature.LAND) + dirname = os.path.join(config['comout'], 'vrfy', config['variable']) ufsda.mkdir(dirname) - figname = os.path.join(dirname, config['variable']+'_Level_'+str(level)) plt.savefig(figname, bbox_inches='tight') From 724f05f9c3520f22751840fb0e16bc96f66ae9e3 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Wed, 25 Jan 2023 13:03:43 -0500 Subject: [PATCH 3/7] a few more plots --- scripts/exgdas_global_marine_analysis_vrfy.py | 132 +++++++++++++++--- 1 file changed, 115 insertions(+), 17 deletions(-) diff --git a/scripts/exgdas_global_marine_analysis_vrfy.py b/scripts/exgdas_global_marine_analysis_vrfy.py index ca441fe1f..7021f1743 100755 --- a/scripts/exgdas_global_marine_analysis_vrfy.py +++ b/scripts/exgdas_global_marine_analysis_vrfy.py @@ -44,9 +44,10 @@ import ufsda -def plot_config(grid_file, data_file, variable, levels, bounds, colormap, comout): +def plot_config(grid_file=[], data_file=[], + variable=[], levels=[], bounds=[], colormap=[], comout=[], lats=[]): """ - Prepares the configuration for the plotting function below + Prepares the configuration for the plotting functions below """ config = {} config['grid file'] = grid_file @@ -55,7 +56,9 @@ def plot_config(grid_file, data_file, variable, levels, bounds, colormap, comout config['levels'] = levels config['bounds'] = bounds config['colormap'] = colormap + config['lats'] = lats config['comout'] = comout + config['max depth'] = 5000.0 return config @@ -67,14 +70,14 @@ def plot_horizontal_slice(config): grid = xr.open_dataset(config['grid file']) data = xr.open_dataset(config['fields file']) if config['variable'] in ['Temp', 'Salt', 'u', 'v']: - slice_data = data[config['variable']].sel(Layer=level) + slice_data = np.squeeze(data[config['variable']])[level, :, :] else: - slice_data = data[config['variable']] + slice_data = np.squeeze(data[config['variable']]) bounds = config['bounds'] fig, ax = plt.subplots(figsize=(8, 5), subplot_kw={'projection': ccrs.PlateCarree()}) plt.pcolormesh(np.squeeze(grid.lon), np.squeeze(grid.lat), - np.squeeze(slice_data), + slice_data, vmin=bounds[0], vmax=bounds[1], transform=ccrs.PlateCarree(), cmap=config['colormap']) @@ -82,30 +85,125 @@ def plot_horizontal_slice(config): ax.coastlines() ax.gridlines(draw_labels=True) ax.add_feature(cartopy.feature.LAND) - dirname = os.path.join(config['comout'], 'vrfy', config['variable']) + dirname = os.path.join(config['comout'], config['variable']) ufsda.mkdir(dirname) figname = os.path.join(dirname, config['variable']+'_Level_'+str(level)) plt.savefig(figname, bbox_inches='tight') +def plot_zonal_slice(config): + """ + pcolormesh of a zonal slice of an ocean field + """ + lat = float(config['lats'][0]) + grid = xr.open_dataset(config['grid file']) + data = xr.open_dataset(config['fields file']) + lat_index = np.argmin(np.array(np.abs(np.squeeze(grid.lat)[:, 0]-lat))) + slice_data = np.squeeze(np.array(data[config['variable']].sel(yaxis_1=lat_index))) + depth = np.squeeze(np.array(grid['h'].sel(yaxis_1=lat_index))) + depth[np.where(np.abs(depth) > 10000.0)] = 0.0 + depth = np.cumsum(depth, axis=0) + bounds = config['bounds'] + x = np.tile(np.squeeze(grid.lon[:, lat_index]), (np.shape(depth)[0], 1)) + fig, ax = plt.subplots(figsize=(8, 5)) + plt.pcolormesh(x, -depth, slice_data, + vmin=bounds[0], vmax=bounds[1], + cmap=config['colormap']) + plt.colorbar(label=config['variable']+' Lat '+str(lat), shrink=0.5, orientation='horizontal') + ax.set_ylim(-config['max depth'], 0) + dirname = os.path.join(config['comout'], config['variable']) + ufsda.mkdir(dirname) + figname = os.path.join(dirname, config['variable'] + + 'zonal_lat_'+str(int(lat)) + '_' + str(int(config['max depth'])) + 'm') + plt.savefig(figname, bbox_inches='tight') + + comout = os.getenv('COMOUT') +cyc = os.getenv('cyc') +bcyc = str((int(cyc) - 3) % 24) + +grid_file = os.path.join(comout, 'gdas.t'+bcyc+'z.ocngrid.nc') + +####################################### +# INCREMENT +####################################### +incr_cmap = 'RdBu' +data_file = os.path.join(comout, 'gdas.t'+cyc+'z.ocninc.nc') +config = plot_config(grid_file=grid_file, + data_file=data_file, + colormap=incr_cmap, + comout=os.path.join(comout, 'vrfy', 'incr')) + +####################################### +# zonal slices + +for lat in np.arange(-60, 60, 10): + + for max_depth in [700.0, 5000.0]: + config['lats'] = [lat] + config['max depth'] = max_depth + + # Temperature + config.update({'variable': 'Temp', 'levels': [1], 'bounds': [-.5, .5]}) + plot_zonal_slice(config) + + # Salinity + config.update({'variable': 'Salt', 'levels': [1], 'bounds': [-.1, .1]}) + plot_zonal_slice(config) + +####################################### +# Horizontal slices + +# Temperature +config.update({'variable': 'Temp', 'levels': [1], 'bounds': [-1, 1]}) +plot_horizontal_slice(config) + +# Salinity +config.update({'variable': 'Salt', 'bounds': [-0.1, 0.1]}) +plot_horizontal_slice(config) + +# Sea surface height +config.update({'variable': 'ave_ssh', 'bounds': [-0.1, 0.1]}) +plot_horizontal_slice(config) + +####################################### +# Std Bkg. Error +####################################### +bmat_cmap = 'hot' +data_file = os.path.join(comout, 'gdas.t'+cyc+'z.ocn.bkgerr_stddev.nc') +config = plot_config(grid_file=grid_file, + data_file=data_file, + colormap=bmat_cmap, + comout=os.path.join(comout, 'vrfy', 'bkgerr')) + +####################################### +# zonal slices + +for lat in np.arange(-60, 60, 10): + + for max_depth in [700.0, 5000.0]: + config['lats'] = [lat] + config['max depth'] = max_depth + + # Temperature + config.update({'variable': 'Temp', 'levels': [1], 'bounds': [0, 1.5]}) + plot_zonal_slice(config) + + # Salinity + config.update({'variable': 'Salt', 'levels': [1], 'bounds': [0, .2]}) + plot_zonal_slice(config) + +####################################### +# Horizontal slices # Temperature -config = plot_config(grid_file=os.path.join(comout, 'gdas.t9z.ocngrid.nc'), - data_file=os.path.join(comout, 'gdas.t12z.ocninc.nc'), - variable='Temp', - levels=[1], - bounds=[-1, 1], - colormap='bwr', - comout=comout) +config.update({'variable': 'Temp', 'levels': [1], 'bounds': [0, 2]}) plot_horizontal_slice(config) # Salinity -config['variable'] = 'Salt' -config['bounds'] = [-0.1, 0.1] +config.update({'variable': 'Salt', 'bounds': [0, 0.2]}) plot_horizontal_slice(config) # Sea surface height -config['variable'] = 'ave_ssh' -config['bounds'] = [-0.1, 0.1] +config.update({'variable': 'ave_ssh', 'bounds': [0, 0.1]}) plot_horizontal_slice(config) From fee0a5afe1102504b9186c7bd2a8190278aea7ad Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Thu, 26 Jan 2023 10:57:54 -0500 Subject: [PATCH 4/7] fixed modules --- ush/soca/run_jjobs.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ush/soca/run_jjobs.py b/ush/soca/run_jjobs.py index dcb5db6ca..80d5db381 100755 --- a/ush/soca/run_jjobs.py +++ b/ush/soca/run_jjobs.py @@ -7,6 +7,11 @@ machines = {"container", "hera", "orion"} +MODS = {'JGDAS_GLOBAL_OCEAN_ANALYSIS_PREP': 'GDAS', + 'JGDAS_GLOBAL_OCEAN_ANALYSIS_BMAT': 'GDAS', + 'JGDAS_GLOBAL_OCEAN_ANALYSIS_RUN': 'GDAS', + 'JGDAS_GLOBAL_OCEAN_ANALYSIS_POST': 'GDAS', + 'JGDAS_GLOBAL_OCEAN_ANALYSIS_VRFY': 'EVA'} class JobCard: @@ -119,7 +124,7 @@ def modules(self): if self.machine != "container": self.f.write("module purge \n") self.f.write("module use ${HOMEgfs}/sorc/gdas.cd/modulefiles \n") - self.f.write(f"module load GDAS/{self.machine} \n") + self.f.write(f"module load {MODS[self.name]}/{self.machine} \n") def copy_bkgs(self): """ From 8189a1a8fd072993c80e59e346884b7fbcaf7fb2 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Thu, 26 Jan 2023 11:28:16 -0500 Subject: [PATCH 5/7] code tidy, jet rocks --- scripts/exgdas_global_marine_analysis_vrfy.py | 27 ++++--------------- 1 file changed, 5 insertions(+), 22 deletions(-) diff --git a/scripts/exgdas_global_marine_analysis_vrfy.py b/scripts/exgdas_global_marine_analysis_vrfy.py index 7021f1743..671b5449b 100755 --- a/scripts/exgdas_global_marine_analysis_vrfy.py +++ b/scripts/exgdas_global_marine_analysis_vrfy.py @@ -3,11 +3,12 @@ # UNIX Script Documentation Block # . . # Script name: exufsda_global_marine_analysis_vrfy.py -# Script description: State and observation space verification for UFS Global Marine Analysis +# Script description: State and observation space verification for the +# UFS Global Marine Analysis # # Author: Guillaume Vernieres Org: NCEP/EMC Date: 2023-01-23 # -# Abstract: This script produces a figures relevant to the cycle +# Abstract: This script produces figures relevant to the marine DA cycle # # $Id$ # @@ -16,31 +17,12 @@ # ################################################################################ -# import os and sys to add ush to path import os -import sys -import yaml -import glob -import dateutil.parser as dparser -import shutil - -import subprocess -from datetime import datetime, timedelta -from netCDF4 import Dataset -import xarray as xr import numpy as np -import logging - -# set up logger -logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s', level=logging.INFO, datefmt='%Y-%m-%d %H:%M:%S') - -import xarray as xr import matplotlib.pyplot as plt - import xarray as xr import cartopy import cartopy.crs as ccrs -import matplotlib.pyplot as plt import ufsda @@ -122,6 +104,7 @@ def plot_zonal_slice(config): cyc = os.getenv('cyc') bcyc = str((int(cyc) - 3) % 24) +# TODO: do not write to COM, instead dump figures in DATA and copy to COM. grid_file = os.path.join(comout, 'gdas.t'+bcyc+'z.ocngrid.nc') ####################################### @@ -169,7 +152,7 @@ def plot_zonal_slice(config): ####################################### # Std Bkg. Error ####################################### -bmat_cmap = 'hot' +bmat_cmap = 'jet' data_file = os.path.join(comout, 'gdas.t'+cyc+'z.ocn.bkgerr_stddev.nc') config = plot_config(grid_file=grid_file, data_file=data_file, From 791cce0f49b4348be748c172b8d5c11f90dac2c8 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Sat, 28 Jan 2023 01:31:31 +0000 Subject: [PATCH 6/7] fixed hpc/hera issues --- scripts/exgdas_global_marine_analysis_vrfy.py | 9 ++++----- ush/soca/run_jjobs.py | 6 +++--- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/scripts/exgdas_global_marine_analysis_vrfy.py b/scripts/exgdas_global_marine_analysis_vrfy.py index 671b5449b..1de770cdf 100755 --- a/scripts/exgdas_global_marine_analysis_vrfy.py +++ b/scripts/exgdas_global_marine_analysis_vrfy.py @@ -23,7 +23,6 @@ import xarray as xr import cartopy import cartopy.crs as ccrs -import ufsda def plot_config(grid_file=[], data_file=[], @@ -64,11 +63,11 @@ def plot_horizontal_slice(config): transform=ccrs.PlateCarree(), cmap=config['colormap']) plt.colorbar(label=config['variable']+' Level '+str(level), shrink=0.5, orientation='horizontal') - ax.coastlines() + # ax.coastlines() # TODO: make this work on hpc ax.gridlines(draw_labels=True) - ax.add_feature(cartopy.feature.LAND) + # ax.add_feature(cartopy.feature.LAND) # TODO: make this work on hpc dirname = os.path.join(config['comout'], config['variable']) - ufsda.mkdir(dirname) + os.makedirs(dirname, exist_ok=True) figname = os.path.join(dirname, config['variable']+'_Level_'+str(level)) plt.savefig(figname, bbox_inches='tight') @@ -94,7 +93,7 @@ def plot_zonal_slice(config): plt.colorbar(label=config['variable']+' Lat '+str(lat), shrink=0.5, orientation='horizontal') ax.set_ylim(-config['max depth'], 0) dirname = os.path.join(config['comout'], config['variable']) - ufsda.mkdir(dirname) + os.makedirs(dirname, exist_ok=True) figname = os.path.join(dirname, config['variable'] + 'zonal_lat_'+str(int(lat)) + '_' + str(int(config['max depth'])) + 'm') plt.savefig(figname, bbox_inches='tight') diff --git a/ush/soca/run_jjobs.py b/ush/soca/run_jjobs.py index 80d5db381..d69dfb348 100755 --- a/ush/soca/run_jjobs.py +++ b/ush/soca/run_jjobs.py @@ -117,14 +117,14 @@ def close(self): self.f.close() subprocess.run(["chmod", "+x", self.name]) - def modules(self): + def _modules(self, jjob): """ Write a section that will load the machine dependent modules """ if self.machine != "container": self.f.write("module purge \n") self.f.write("module use ${HOMEgfs}/sorc/gdas.cd/modulefiles \n") - self.f.write(f"module load {MODS[self.name]}/{self.machine} \n") + self.f.write(f"module load {MODS[jjob]}/{self.machine} \n") def copy_bkgs(self): """ @@ -166,6 +166,7 @@ def jjobs(self): """ runjobs = "# Run jjobs\n" for job in self.config['jjobs']: + self._modules(job) # Add module's jjob thejob = "${HOMEgfs}/jobs/"+job runjobs += f"{thejob} &>{job}.out\n" self.f.write(runjobs) @@ -213,7 +214,6 @@ def main(): run_card.fixconfigs() # over-write some of the config variables run_card.header() # prepare a machine dependent header (SLURM or nothing) run_card.export_env_vars_script() - run_card.modules() run_card.copy_bkgs() run_card.jjobs() run_card.close() From 30f6fb836e9b3044df62e4374b3dc13b0c42be28 Mon Sep 17 00:00:00 2001 From: Guillaume Vernieres Date: Sat, 28 Jan 2023 03:04:24 +0000 Subject: [PATCH 7/7] oops --- test/soca/test_run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/soca/test_run.sh b/test/soca/test_run.sh index 7c9dd6b9a..ba653433b 100755 --- a/test/soca/test_run.sh +++ b/test/soca/test_run.sh @@ -35,4 +35,4 @@ test_file ${DATA}/Data/ocn.iter1.incr.2018-04-15T09:00:00Z.nc test_file ${DATA}/Data/ocn.3dvarfgat_pseudo.an.2018-04-15T09:00:00Z.nc test_file ${DATA}/Data/ocn.3dvarfgat_pseudo.an.2018-04-15T12:00:00Z.nc test_file ${DATA}/Data/ocn.3dvarfgat_pseudo.an.2018-04-15T15:00:00Z.nc -test_file ${COMOUT}/inc.nc +test_file ${COMOUT}/ocnanal_12/inc.nc