Conversation
Use grid interpolation options from quad_utils that are consistent with the ROMS grid. Previously, it used the irregular grid option. Now, it uses the regular one with non-uniform spacing. lat and lon arrays for staggered grid are now removed. Helper functions are used instead to compute the staggered lat and lon using the rho grid. U and V masks have also been removed. The rho mask is used. The model_interpolate code is modified to use the right quad_utils routines.
Turns on state_buffer_io to improve memory issues using a high resolution grid. Also, turned on vertical localization and tested different radii.
| integer :: varid, lstatus | ||
| integer :: qstatus, vstatus | ||
| integer :: varid, lstatus, vstatus | ||
| integer :: qstat(ens_size) |
There was a problem hiding this comment.
This is not a problem with this code, but I put an issue in #1095 that only the
quad_lon_lat_evaluate_ir_array checks if missing_r8 is allowed in the state, but quad_lon_lat_evaluate_ii_array.
qstaus -> qstat(ens_size) when using ir
|
Just having a look at the test data in: I'm not sure if this is the case used in the memory measurements, if it is it would be worth changing the ensemble manager to use a round robin layout. I noticed that the ensemble manager is using the default: which has the 1st n tasks read the ensemble members layout 2 will be round robin so the ensemble member readers will be spread out round robin across the nodes. &ensemble_manager_nml |
@hkershaw-brown, the test data in |
|
note from Standup today. ROMS does have curvilinear and rotated grids -> compile time choice for this optimized model_mod.f90 |
Description:
This PR updates the interpolation routine in the
ROMS_rutgersinterface. The changes, which are confined to themodel_mod, now use the regular grid (with non-uniform spacing) option of thequad_utils, consistent with theROMS_rutgersgrid. The previous implementation incorrectly used the irregular grid option which made the interface a lot more memory intensive requiring storage of large static data.Other changes include:
state_buffer_ioin theinput.nmlas it leads to better filter performanceTypes of changes
Documentation changes needed?
No
Tests
I have tested the new changes to the
model_modwith different processor (and obs) count. The code change does not alter the results but rather makes running filter a lot more efficient, requiring less computational resources. This might be crucial for running filter on HPC systems that are not as big as Derecho.Checklist for merging
Checklist for release
Testing Datasets
All of my tests are available on Derecho @
/glade/derecho/scratch/gharamti/inacawo/DART/models/ROMS_rutgers