20 implicit none ;
private 22 #include <MOM_memory.h> 24 public user_set_coord, user_initialize_topography, user_initialize_thickness
25 public user_initialize_velocity, user_init_temperature_salinity
26 public user_initialize_sponges, user_set_obc_data, user_set_rotation
35 logical :: first_call = .true.
40 subroutine user_set_coord(Rlay, g_prime, GV, US, param_file, eqn_of_state)
42 real,
dimension(GV%ke),
intent(out) :: Rlay
43 real,
dimension(GV%ke+1),
intent(out) :: g_prime
49 type(
eos_type),
pointer :: eqn_of_state
51 call mom_error(fatal, &
52 "USER_initialization.F90, USER_set_coord: " // &
53 "Unmodified user routine called - you must edit the routine to use it")
57 if (first_call)
call write_user_log(param_file)
59 end subroutine user_set_coord
62 subroutine user_initialize_topography(D, G, param_file, max_depth, US)
64 real,
dimension(G%isd:G%ied,G%jsd:G%jed), &
67 real,
intent(in) :: max_depth
70 call mom_error(fatal, &
71 "USER_initialization.F90, USER_initialize_topography: " // &
72 "Unmodified user routine called - you must edit the routine to use it")
76 if (first_call)
call write_user_log(param_file)
78 end subroutine user_initialize_topography
81 subroutine user_initialize_thickness(h, G, GV, param_file, just_read_params)
84 real,
dimension(SZI_(G),SZJ_(G),SZK_(GV)), &
88 logical,
optional,
intent(in) :: just_read_params
93 call mom_error(fatal, &
94 "USER_initialization.F90, USER_initialize_thickness: " // &
95 "Unmodified user routine called - you must edit the routine to use it")
97 just_read = .false. ;
if (
present(just_read_params)) just_read = just_read_params
103 if (first_call)
call write_user_log(param_file)
105 end subroutine user_initialize_thickness
108 subroutine user_initialize_velocity(u, v, G, US, param_file, just_read_params)
110 real,
dimension(SZIB_(G), SZJ_(G), SZK_(G)),
intent(out) :: u
111 real,
dimension(SZI_(G), SZJB_(G), SZK_(G)),
intent(out) :: v
116 logical,
optional,
intent(in) :: just_read_params
121 call mom_error(fatal, &
122 "USER_initialization.F90, USER_initialize_velocity: " // &
123 "Unmodified user routine called - you must edit the routine to use it")
125 just_read = .false. ;
if (
present(just_read_params)) just_read = just_read_params
127 if (just_read)
return 132 if (first_call)
call write_user_log(param_file)
134 end subroutine user_initialize_velocity
138 subroutine user_init_temperature_salinity(T, S, G, param_file, eqn_of_state, just_read_params)
140 real,
dimension(SZI_(G),SZJ_(G), SZK_(G)),
intent(out) :: T
141 real,
dimension(SZI_(G),SZJ_(G), SZK_(G)),
intent(out) :: S
145 type(
eos_type),
pointer :: eqn_of_state
146 logical,
optional,
intent(in) :: just_read_params
151 call mom_error(fatal, &
152 "USER_initialization.F90, USER_init_temperature_salinity: " // &
153 "Unmodified user routine called - you must edit the routine to use it")
155 just_read = .false. ;
if (
present(just_read_params)) just_read = just_read_params
157 if (just_read)
return 162 if (first_call)
call write_user_log(param_file)
164 end subroutine user_init_temperature_salinity
167 subroutine user_initialize_sponges(G, GV, use_temp, tv, param_file, CSp, h)
170 logical,
intent(in) :: use_temp
180 real,
dimension(SZI_(G),SZJ_(G),SZK_(GV)), &
182 call mom_error(fatal, &
183 "USER_initialization.F90, USER_initialize_sponges: " // &
184 "Unmodified user routine called - you must edit the routine to use it")
186 if (first_call)
call write_user_log(param_file)
188 end subroutine user_initialize_sponges
191 subroutine user_set_obc_data(OBC, tv, G, param_file, tr_Reg)
208 if (first_call)
call write_user_log(param_file)
210 end subroutine user_set_obc_data
212 subroutine user_set_rotation(G, param_file)
215 call mom_error(fatal, &
216 "USER_initialization.F90, USER_set_rotation: " // &
217 "Unmodified user routine called - you must edit the routine to use it")
219 if (first_call)
call write_user_log(param_file)
221 end subroutine user_set_rotation
224 subroutine write_user_log(param_file)
230 #include "version_variable.h" 231 character(len=40) :: mdl =
"user_initialization" 236 end subroutine write_user_log
Ocean grid type. See mom_grid for details.
Calculates density of sea water from T, S and P.
A structure that can be parsed to read and document run-time parameters.
Provides the ocean grid type.
Describes the horizontal ocean grid with only dynamic memory arrays.
The MOM6 facility to parse input files for runtime parameters.
A template of a user to code up customized initial conditions.
Describes various unit conversion factors.
This module contains the tracer_registry_type and the subroutines that handle registration of tracers...
Provides a transparent unit rescaling type to facilitate dimensional consistency testing.
Type to carry basic tracer information.
Routines for error handling and I/O management.
This control structure holds memory and parameters for the MOM_sponge module.
Implements sponge regions in isopycnal mode.
Calculate the derivatives of density with temperature and salinity from T, S, and P...
Provides subroutines for quantities specific to the equation of state.
An overloaded interface to log version information about modules.
Describes the vertical ocean grid, including unit conversion factors.
Pointers to an assortment of thermodynamic fields that may be available, including potential temperat...
Contains a shareable dynamic type for describing horizontal grids and metric data and utilty routines...
Controls where open boundary conditions are applied.
Provides a transparent vertical ocean grid type and supporting routines.
Provides transparent structures with groups of MOM6 variables and supporting routines.
An overloaded interface to read and log the values of various types of parameters.
A control structure for the equation of state.