Skip to content

Commit

Permalink
Merge branch 'sbrus89/ocn/manufactured_solution' into next (PR #5725)
Browse files Browse the repository at this point in the history
Add a manufactured solution to MPAS-Ocean

This PR adds the tendencies necessary for a manufactured solution test
case in MPAS-Ocean. A convergence study that uses this feature has been
added to the polaris package.

[NML]
[BFB]
  • Loading branch information
jonbob committed Jun 14, 2023
2 parents 7515ed9 + 574f24e commit 63ec2b1
Show file tree
Hide file tree
Showing 11 changed files with 346 additions and 2 deletions.
10 changes: 10 additions & 0 deletions components/mpas-ocean/bld/build-namelist
Original file line number Diff line number Diff line change
Expand Up @@ -992,6 +992,15 @@ add_default($nl, 'config_transport_tests_flow_id');

add_default($nl, 'config_vert_levels');

#########################################
# Namelist group: manufactured_solution #
#########################################

add_default($nl, 'config_use_manufactured_solution');
add_default($nl, 'config_manufactured_solution_wavelength_x');
add_default($nl, 'config_manufactured_solution_wavelength_y');
add_default($nl, 'config_manufactured_solution_amplitude');

################################################
# Namelist group: tracer_forcing_activeTracers #
################################################
Expand Down Expand Up @@ -1761,6 +1770,7 @@ my @groups = qw(run_modes
testing
transport_tests
init_mode_vert_levels
manufactured_solution
tracer_forcing_activetracers
tracer_forcing_debugtracers
tracer_forcing_ecosystracers
Expand Down
1 change: 1 addition & 0 deletions components/mpas-ocean/bld/build-namelist-group-list
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ my @groups = qw(run_modes
testing
transport_tests
init_mode_vert_levels
manufactured_solution
tracer_forcing_activetracers
tracer_forcing_debugtracers
tracer_forcing_ecosystracers
Expand Down
9 changes: 9 additions & 0 deletions components/mpas-ocean/bld/build-namelist-section
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,15 @@ add_default($nl, 'config_transport_tests_flow_id');

add_default($nl, 'config_vert_levels');

#########################################
# Namelist group: manufactured_solution #
#########################################

add_default($nl, 'config_use_manufactured_solution');
add_default($nl, 'config_manufactured_solution_wavelength_x');
add_default($nl, 'config_manufactured_solution_wavelength_y');
add_default($nl, 'config_manufactured_solution_amplitude');

################################################
# Namelist group: tracer_forcing_activeTracers #
################################################
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,12 @@
<!-- init_mode_vert_levels -->
<config_vert_levels>-1</config_vert_levels>

<!-- manufactured_solution -->
<config_use_manufactured_solution>.false.</config_use_manufactured_solution>
<config_manufactured_solution_wavelength_x>2000000.0</config_manufactured_solution_wavelength_x>
<config_manufactured_solution_wavelength_y>2000000.0</config_manufactured_solution_wavelength_y>
<config_manufactured_solution_amplitude>1</config_manufactured_solution_amplitude>

<!-- tracer_forcing_activeTracers -->
<config_use_activeTracers>.true.</config_use_activeTracers>
<config_use_activeTracers_surface_bulk_forcing>.true.</config_use_activeTracers_surface_bulk_forcing>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2573,6 +2573,41 @@ Default: Defined in namelist_defaults.xml
</entry>


<!-- manufactured_solution -->

<entry id="config_use_manufactured_solution" type="logical"
category="manufactured_solution" group="manufactured_solution">
This flag includes additional thickness and velocity tendencies necessary for testing with a manufactured solution.

Valid values: .true. or .false.
Default: Defined in namelist_defaults.xml
</entry>

<entry id="config_manufactured_solution_wavelength_x" type="real"
category="manufactured_solution" group="manufactured_solution">
Wavelength of manufactured solution in the x direction

Valid values: Any positive real number
Default: Defined in namelist_defaults.xml
</entry>

<entry id="config_manufactured_solution_wavelength_y" type="real"
category="manufactured_solution" group="manufactured_solution">
Wavelength of manufactured solution in the y direction

Valid values: Any positive real number
Default: Defined in namelist_defaults.xml
</entry>

<entry id="config_manufactured_solution_amplitude" type="real"
category="manufactured_solution" group="manufactured_solution">
Amplitude of the manufactured solution

Valid values: Any positive real number
Default: Defined in namelist_defaults.xml
</entry>


<!-- tracer_forcing_activeTracers -->

<entry id="config_use_activeTracers" type="logical"
Expand Down
18 changes: 18 additions & 0 deletions components/mpas-ocean/src/Registry.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1537,6 +1537,24 @@
possible_values="Any positive non-zero integer. A value of -1 causes this to be overwritten with the configurations vertical level definition."
/>
</nml_record>
<nml_record name="manufactured_solution">
<nml_option name="config_use_manufactured_solution" type="logical" default_value=".false."
description="This flag includes additional thickness and velocity tendencies necessary for testing with a manufactured solution."
possible_values=".true. or .false."
/>
<nml_option name="config_manufactured_solution_wavelength_x" type="real" default_value="2000000.0" units="m"
description="Wavelength of manufactured solution in the x direction"
possible_values="Any positive real number"
/>
<nml_option name="config_manufactured_solution_wavelength_y" type="real" default_value="2000000.0" units="m"
description="Wavelength of manufactured solution in the y direction"
possible_values="Any positive real number"
/>
<nml_option name="config_manufactured_solution_amplitude" type="real" default_value="1" units="m"
description="Amplitude of the manufactured solution"
possible_values="Any positive real number"
/>
</nml_record>
<packages>
<package name="timeVaryingAtmosphericForcingPKG" description="This package includes variables required for time varying atmospheric forcing"/>
<package name="timeVaryingLandIceForcingPKG" description="This package includes variavles required for time varying land-ice forcing"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ module ocn_forward_mode
use ocn_gm
use ocn_submesoscale_eddies
use ocn_stokes_drift
use ocn_manufactured_solution

use ocn_high_freq_thickness_hmix_del2

Expand Down Expand Up @@ -499,6 +500,8 @@ function ocn_forward_mode_init(domain, startTimeStamp) result(ierr)!{{{
call ocn_vertical_remap_init(err_tmp)
call ocn_stokes_drift_init(err_tmp)
ierr = ior(ierr,err_tmp)
call ocn_manufactured_solution_init(domain, err_tmp)
ierr = ior(ierr,err_tmp)

if (ierr /= 0) then
call mpas_log_write( &
Expand Down
1 change: 1 addition & 0 deletions components/mpas-ocean/src/ocean.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ list(APPEND RAW_SOURCES
core_ocean/shared/mpas_ocn_wetting_drying.F
core_ocean/shared/mpas_ocn_vel_tidal_potential.F
core_ocean/shared/mpas_ocn_stokes_drift.F
core_ocean/shared/mpas_ocn_manufactured_solution.F
)

set(OCEAN_DRIVER
Expand Down
7 changes: 5 additions & 2 deletions components/mpas-ocean/src/shared/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,14 @@ OBJS = mpas_ocn_init_routines.o \
mpas_ocn_transport_tests.o \
mpas_ocn_vel_self_attraction_loading.o \
mpas_ocn_vertical_advection.o \
mpas_ocn_stokes_drift.o
mpas_ocn_stokes_drift.o \
mpas_ocn_manufactured_solution.o

all: $(OBJS)

mpas_ocn_init_routines.o: mpas_ocn_constants.o mpas_ocn_config.o mpas_ocn_mesh.o mpas_ocn_diagnostics.o mpas_ocn_diagnostics_variables.o mpas_ocn_gm.o mpas_ocn_submesoscale_eddies.o mpas_ocn_forcing.o mpas_ocn_surface_land_ice_fluxes.o

mpas_ocn_tendency.o: mpas_ocn_high_freq_thickness_hmix_del2.o mpas_ocn_tracer_surface_restoring.o mpas_ocn_thick_surface_flux.o mpas_ocn_tracer_short_wave_absorption.o mpas_ocn_tracer_advection.o mpas_ocn_tracer_hmix.o mpas_ocn_tracer_nonlocalflux.o mpas_ocn_surface_bulk_forcing.o mpas_ocn_surface_land_ice_fluxes.o mpas_ocn_tracer_surface_flux_to_tend.o mpas_ocn_tracer_interior_restoring.o mpas_ocn_tracer_exponential_decay.o mpas_ocn_tracer_ideal_age.o mpas_ocn_tracer_TTD.o mpas_ocn_vmix.o mpas_ocn_constants.o mpas_ocn_config.o mpas_ocn_frazil_forcing.o mpas_ocn_tidal_forcing.o mpas_ocn_tracer_ecosys.o mpas_ocn_tracer_DMS.o mpas_ocn_tracer_MacroMolecules.o mpas_ocn_tracer_CFC.o mpas_ocn_diagnostics.o mpas_ocn_wetting_drying.o mpas_ocn_vel_self_attraction_loading.o mpas_ocn_vel_tidal_potential.o mpas_ocn_mesh.o mpas_ocn_diagnostics_variables.o mpas_ocn_thick_hadv.o mpas_ocn_thick_vadv.o mpas_ocn_vel_hadv_coriolis.o mpas_ocn_vel_pressure_grad.o mpas_ocn_vel_vadv.o mpas_ocn_vel_hmix.o mpas_ocn_vel_forcing.o
mpas_ocn_tendency.o: mpas_ocn_high_freq_thickness_hmix_del2.o mpas_ocn_tracer_surface_restoring.o mpas_ocn_thick_surface_flux.o mpas_ocn_tracer_short_wave_absorption.o mpas_ocn_tracer_advection.o mpas_ocn_tracer_hmix.o mpas_ocn_tracer_nonlocalflux.o mpas_ocn_surface_bulk_forcing.o mpas_ocn_surface_land_ice_fluxes.o mpas_ocn_tracer_surface_flux_to_tend.o mpas_ocn_tracer_interior_restoring.o mpas_ocn_tracer_exponential_decay.o mpas_ocn_tracer_ideal_age.o mpas_ocn_tracer_TTD.o mpas_ocn_vmix.o mpas_ocn_constants.o mpas_ocn_config.o mpas_ocn_frazil_forcing.o mpas_ocn_tidal_forcing.o mpas_ocn_tracer_ecosys.o mpas_ocn_tracer_DMS.o mpas_ocn_tracer_MacroMolecules.o mpas_ocn_tracer_CFC.o mpas_ocn_diagnostics.o mpas_ocn_wetting_drying.o mpas_ocn_vel_self_attraction_loading.o mpas_ocn_vel_tidal_potential.o mpas_ocn_mesh.o mpas_ocn_diagnostics_variables.o mpas_ocn_thick_hadv.o mpas_ocn_thick_vadv.o mpas_ocn_vel_hadv_coriolis.o mpas_ocn_vel_pressure_grad.o mpas_ocn_vel_vadv.o mpas_ocn_vel_hmix.o mpas_ocn_vel_forcing.o mpas_ocn_manufactured_solution.o

mpas_ocn_diagnostics.o: mpas_ocn_thick_ale.o mpas_ocn_equation_of_state.o mpas_ocn_gm.o mpas_ocn_constants.o mpas_ocn_config.o mpas_ocn_mesh.o mpas_ocn_diagnostics_variables.o mpas_ocn_surface_land_ice_fluxes.o mpas_ocn_vertical_advection.o mpas_ocn_submesoscale_eddies.o

Expand Down Expand Up @@ -235,6 +236,8 @@ mpas_ocn_vertical_remap.o: mpas_ocn_config.o mpas_ocn_constants.o mpas_ocn_diagn

mpas_ocn_stokes_drift.o: mpas_ocn_constants.o mpas_ocn_config.o mpas_ocn_diagnostics_variables.o mpas_ocn_mesh.o

mpas_ocn_manufactured_solution.o: mpas_ocn_constants.o mpas_ocn_config.o mpas_ocn_mesh.o

clean:
$(RM) *.o *.i *.mod *.f90

Expand Down
Loading

0 comments on commit 63ec2b1

Please sign in to comment.