MOM6
user_revise_forcing.F90
Go to the documentation of this file.
2 !***********************************************************************
3 !* GNU General Public License *
4 !* This file is a part of MOM. *
5 !* *
6 !* MOM is free software; you can redistribute it and/or modify it and *
7 !* are expected to follow the terms of the GNU General Public License *
8 !* as published by the Free Software Foundation; either version 2 of *
9 !* the License, or (at your option) any later version. *
10 !* *
11 !* MOM is distributed in the hope that it will be useful, but WITHOUT *
12 !* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
13 !* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public *
14 !* License for more details. *
15 !* *
16 !* For the full text of the GNU General Public License, *
17 !* write to: Free Software Foundation, Inc., *
18 !* 675 Mass Ave, Cambridge, MA 02139, USA. *
19 !* or see: http://www.gnu.org/licenses/gpl.html *
20 !***********************************************************************
21 !
22 !********+*********+*********+*********+*********+*********+*********+**
23 !* *
24 !* This module provides a method for updating the forcing fluxes *
25 !* using user-written code without the need to duplicate the *
26 !* extensive code used to create or obtain the fluxes. *
27 !* *
28 !********+*********+*********+*********+*********+*********+*********+**
29 use mom_domains, only : pass_var, pass_vector, agrid
30 use mom_error_handler, only : mom_error, fatal, warning, is_root_pe
32 use mom_forcing_type, only : forcing
33 use mom_grid, only : ocean_grid_type
34 use mom_io, only : file_exists, read_data
36 use mom_time_manager, only : time_type, operator(+), operator(/), get_time
39 use mom_variables, only : surface
40 
41 implicit none ; private
42 
44 
45 type, public :: user_revise_forcing_cs ; private
46  real :: cdrag ! The quadratic bottom drag coefficient.
48 
49 contains
50 
51 !> This subroutine sets the surface wind stresses.
52 subroutine user_alter_forcing(state, fluxes, day, G, CS)
53  type(surface), intent(in) :: state !< A structure containing fields that
54  !! describe the surface state of the ocean.
55  type(forcing), intent(inout) :: fluxes !< A structure containing pointers to any
56  !! possible forcing fields. Unused fields
57  !! have NULL ptrs.
58  type(time_type), intent(in) :: day !< Time of the fluxes.
59  type(ocean_grid_type), intent(in) :: G !< The ocean's grid structure.
60  type(user_revise_forcing_cs), pointer :: CS !< A pointer to the control structure
61  !! returned by a previous call to
62  !! surface_forcing_init.
63 
64 end subroutine user_alter_forcing
65 
66 subroutine user_revise_forcing_init(param_file,CS)
67  type(param_file_type), intent(in) :: param_file !< !< A structure indicating the open file to
68  !! parse for model parameter values.
69  type(user_revise_forcing_cs), pointer :: CS !< A pointer to the control structure
70  !! returned by a previous call to
71  !! surface_forcing_init.
72 
73 ! This include declares and sets the variable "version".
74 #include "version_variable.h"
75  character(len=40) :: mdl = "user_revise_forcing" ! This module's name.
76 
77  call log_version(param_file, mdl, version)
78 
79 end subroutine user_revise_forcing_init
80 
81 end module user_revise_forcing
The following structure contains pointers to various fields which may be used describe the surface st...
This module implements boundary forcing for MOM6.
Ocean grid type. See mom_grid for details.
Definition: MOM_grid.F90:19
Provides the ocean grid type.
Definition: MOM_grid.F90:2
This module contains I/O framework code.
Definition: MOM_io.F90:2
subroutine, public user_alter_forcing(state, fluxes, day, G, CS)
This subroutine sets the surface wind stresses.
subroutine, public user_revise_forcing_init(param_file, CS)
subroutine, public call_tracer_set_forcing(state, fluxes, day_start, day_interval, G, CS)
This subroutine calls the individual tracer modules&#39; subroutines to specify or read quantities relate...
logical function, public is_root_pe()
Structure that contains pointers to the boundary forcing used to drive the liquid ocean simulated by ...
subroutine, public mom_error(level, message, all_print)