MOM6
g_tracer_utils Module Reference

Detailed Description

g_tracer_utils module consists of core utility subroutines to be used by all generic tracer modules. These include the lowest level functions for adding, allocating memory, and record keeping of individual generic tracers irrespective of their physical/chemical nature.

Data Types

type  g_diag_type
 Unknown. More...
 
type  g_tracer_common
 The following type fields are common to ALL generic tracers and hence has to be instantiated only once. More...
 
interface  g_tracer_get_pointer
 Return the pointer to the requested field of a particular tracer. More...
 
interface  g_tracer_get_values
 Reverse of interface g_tracer_set_values for getting the tracer member arrays in the argument value. More...
 
interface  g_tracer_set_values
 Set the values of various (array) members of the tracer node g_tracer_type. More...
 
type  g_tracer_type
 Each generic tracer node is an instant of a FORTRAN type with the following member variables. These member fields are supposed to uniquely define an individual tracer. One such type shall be instantiated for EACH individual tracer. More...
 

Functions/Subroutines

subroutine, public g_tracer_flux_init (g_tracer)
 Unknown. More...
 
subroutine, public g_tracer_set_csdiag (diag_CS)
 Unknown. More...
 
subroutine, public g_tracer_set_common (isc, iec, jsc, jec, isd, ied, jsd, jed, nk, ntau, axes, grid_tmask, grid_kmt, init_time)
 
subroutine, public g_tracer_get_common (isc, iec, jsc, jec, isd, ied, jsd, jed, nk, ntau, axes, grid_tmask, grid_mask_coast, grid_kmt, init_time, diag_CS)
 
subroutine g_tracer_get_4d (g_tracer_list, name, member, array_ptr)
 Unknown. More...
 
subroutine g_tracer_get_3d (g_tracer_list, name, member, array_ptr)
 Unknown. More...
 
subroutine g_tracer_get_2d (g_tracer_list, name, member, array_ptr)
 Unknown. More...
 
subroutine g_tracer_get_4d_val (g_tracer_list, name, member, array, isd, jsd)
 Unknown. More...
 
subroutine g_tracer_get_3d_val (g_tracer_list, name, member, array, isd, jsd, ntau, positive)
 Unknown. More...
 
subroutine g_tracer_get_2d_val (g_tracer_list, name, member, array, isd, jsd)
 Unknown. More...
 
subroutine g_tracer_get_real (g_tracer_list, name, member, value)
 Unknown. More...
 
subroutine g_tracer_get_string (g_tracer_list, name, member, string)
 Unknown. More...
 
subroutine g_tracer_set_2d (g_tracer_list, name, member, array, isd, jsd, weight)
 Unknown. More...
 
subroutine g_tracer_set_3d (g_tracer_list, name, member, array, isd, jsd, ntau)
 Unknown. More...
 
subroutine g_tracer_set_4d (g_tracer_list, name, member, array, isd, jsd)
 Unknown. More...
 
subroutine g_tracer_set_real (g_tracer_list, name, member, value)
 Unknown. More...
 
subroutine, public g_tracer_send_diag (g_tracer_list, model_time, tau)
 
subroutine, public g_tracer_get_name (g_tracer, string)
 Unknown. More...
 
subroutine, public g_tracer_get_alias (g_tracer, string)
 Unknown. More...
 
logical function, public g_tracer_is_prog (g_tracer)
 Is the tracer prognostic? More...
 
subroutine, public g_tracer_get_next (g_tracer, g_tracer_next)
 get the next tracer in the list More...
 
subroutine g_tracer_vertdiff_g (g_tracer, h_old, ea, eb, dt, kg_m2_to_H, m_to_H, tau, mom)
 Vertical Diffusion of a tracer node. More...
 

Variables

type(g_tracer_common), target, save g_tracer_com
 Unknown dangerous module data!
 

Function/Subroutine Documentation

◆ g_tracer_flux_init()

subroutine, public g_tracer_utils::g_tracer_flux_init ( type(g_tracer_type), pointer  g_tracer)

Unknown.

Parameters
g_tracerPointer to this tracer node

Definition at line 99 of file generic_tracer_utils.F90.

99  type(g_tracer_type), pointer :: g_tracer !< Pointer to this tracer node

◆ g_tracer_get_2d()

subroutine g_tracer_utils::g_tracer_get_2d ( type(g_tracer_type), pointer  g_tracer_list,
character(len=*), intent(in)  name,
character(len=*), intent(in)  member,
real, dimension(:,:), pointer  array_ptr 
)
private

Unknown.

Parameters
[in]nameUnknown
[in]memberUnknown
g_tracer_listUnknown
array_ptrUnknown

Definition at line 162 of file generic_tracer_utils.F90.

162  character(len=*), intent(in) :: name !< Unknown
163  character(len=*), intent(in) :: member !< Unknown
164  type(g_tracer_type), pointer :: g_tracer_list !< Unknown
165  real, dimension(:,:), pointer :: array_ptr !< Unknown

◆ g_tracer_get_2d_val()

subroutine g_tracer_utils::g_tracer_get_2d_val ( type(g_tracer_type), pointer  g_tracer_list,
character(len=*), intent(in)  name,
character(len=*), intent(in)  member,
real, dimension(isd:,jsd:), intent(out)  array,
integer, intent(in)  isd,
integer, intent(in)  jsd 
)
private

Unknown.

Parameters
[in]nameUnknown
[in]memberUnknown
g_tracer_listUnknown
[in]isdUnknown
[in]jsdUnknown
[out]arrayUnknown

Definition at line 194 of file generic_tracer_utils.F90.

194  character(len=*), intent(in) :: name !< Unknown
195  character(len=*), intent(in) :: member !< Unknown
196  type(g_tracer_type), pointer :: g_tracer_list !< Unknown
197  integer, intent(in) :: isd !< Unknown
198  integer, intent(in) :: jsd !< Unknown
199  real, dimension(isd:,jsd:), intent(out):: array !< Unknown

◆ g_tracer_get_3d()

subroutine g_tracer_utils::g_tracer_get_3d ( type(g_tracer_type), pointer  g_tracer_list,
character(len=*), intent(in)  name,
character(len=*), intent(in)  member,
real, dimension(:,:,:), pointer  array_ptr 
)
private

Unknown.

Parameters
[in]nameUnknown
[in]memberUnknown
g_tracer_listUnknown
array_ptrUnknown

Definition at line 154 of file generic_tracer_utils.F90.

154  character(len=*), intent(in) :: name !< Unknown
155  character(len=*), intent(in) :: member !< Unknown
156  type(g_tracer_type), pointer :: g_tracer_list !< Unknown
157  real, dimension(:,:,:), pointer :: array_ptr !< Unknown

◆ g_tracer_get_3d_val()

subroutine g_tracer_utils::g_tracer_get_3d_val ( type(g_tracer_type), pointer  g_tracer_list,
character(len=*), intent(in)  name,
character(len=*), intent(in)  member,
real, dimension(isd:,jsd:,:), intent(out)  array,
integer, intent(in)  isd,
integer, intent(in)  jsd,
integer, intent(in), optional  ntau,
logical, intent(in), optional  positive 
)
private

Unknown.

Parameters
[in]nameUnknown
[in]memberUnknown
g_tracer_listUnknown
[in]isdUnknown
[in]jsdUnknown
[in]ntauUnknown
[in]positiveUnknown
[out]arrayUnknown

Definition at line 180 of file generic_tracer_utils.F90.

180  character(len=*), intent(in) :: name !< Unknown
181  character(len=*), intent(in) :: member !< Unknown
182  type(g_tracer_type), pointer :: g_tracer_list !< Unknown
183  integer, intent(in) :: isd !< Unknown
184  integer, intent(in) :: jsd !< Unknown
185  integer, optional, intent(in) :: ntau !< Unknown
186  logical, optional, intent(in) :: positive !< Unknown
187  real, dimension(isd:,jsd:,:), intent(out):: array !< Unknown
188  integer :: tau
189  character(len=fm_string_len), parameter :: sub_name = 'g_tracer_get_3D_val'

◆ g_tracer_get_4d()

subroutine g_tracer_utils::g_tracer_get_4d ( type(g_tracer_type), pointer  g_tracer_list,
character(len=*), intent(in)  name,
character(len=*), intent(in)  member,
real, dimension(:,:,:,:), pointer  array_ptr 
)
private

Unknown.

Parameters
[in]nameUnknown
[in]memberUnknown
g_tracer_listUnknown
array_ptrUnknown

Definition at line 146 of file generic_tracer_utils.F90.

146  character(len=*), intent(in) :: name !< Unknown
147  character(len=*), intent(in) :: member !< Unknown
148  type(g_tracer_type), pointer :: g_tracer_list !< Unknown
149  real, dimension(:,:,:,:), pointer :: array_ptr !< Unknown

◆ g_tracer_get_4d_val()

subroutine g_tracer_utils::g_tracer_get_4d_val ( type(g_tracer_type), pointer  g_tracer_list,
character(len=*), intent(in)  name,
character(len=*), intent(in)  member,
real, dimension(isd:,jsd:,:,:), intent(out)  array,
integer, intent(in)  isd,
integer, intent(in)  jsd 
)
private

Unknown.

Parameters
[in]nameUnknown
[in]memberUnknown
g_tracer_listUnknown
[in]isdUnknown
[in]jsdUnknown
[out]arrayUnknown

Definition at line 170 of file generic_tracer_utils.F90.

170  character(len=*), intent(in) :: name !< Unknown
171  character(len=*), intent(in) :: member !< Unknown
172  type(g_tracer_type), pointer :: g_tracer_list !< Unknown
173  integer, intent(in) :: isd !< Unknown
174  integer, intent(in) :: jsd !< Unknown
175  real, dimension(isd:,jsd:,:,:), intent(out):: array !< Unknown

◆ g_tracer_get_alias()

subroutine, public g_tracer_utils::g_tracer_get_alias ( type(g_tracer_type), pointer  g_tracer,
character(len=*), intent(out)  string 
)

Unknown.

Parameters
g_tracerUnknown
[out]stringUnknown

Definition at line 273 of file generic_tracer_utils.F90.

273  type(g_tracer_type), pointer :: g_tracer !< Unknown
274  character(len=*), intent(out) :: string !< Unknown

◆ g_tracer_get_common()

subroutine, public g_tracer_utils::g_tracer_get_common ( integer, intent(out)  isc,
integer, intent(out)  iec,
integer, intent(out)  jsc,
integer, intent(out)  jec,
integer, intent(out)  isd,
integer, intent(out)  ied,
integer, intent(out)  jsd,
integer, intent(out)  jed,
integer, intent(out)  nk,
integer, intent(out)  ntau,
integer, dimension(3), intent(out), optional  axes,
real, dimension(:,:,:), optional, pointer  grid_tmask,
integer, dimension(:,:), optional, pointer  grid_mask_coast,
integer, dimension(:,:), optional, pointer  grid_kmt,
type(time_type), intent(out), optional  init_time,
type(g_diag_ctrl), optional, pointer  diag_CS 
)
Parameters
[out]iscComputation start index in i direction
[out]iecComputation end index in i direction
[out]jscComputation start index in j direction
[out]jecComputation end index in j direction
[out]isdData start index in i direction
[out]iedData end index in i direction
[out]jsdData start index in j direction
[out]jedData end index in j direction
[out]nkNumber of levels in k direction
[out]ntauUnknown
[out]axesUnknown
[out]init_timeUnknown
grid_tmaskUnknown
grid_mask_coastUnknown
grid_kmtUnknown
diag_csUnknown

Definition at line 126 of file generic_tracer_utils.F90.

126  integer, intent(out) :: isc !< Computation start index in i direction
127  integer, intent(out) :: iec !< Computation end index in i direction
128  integer, intent(out) :: jsc !< Computation start index in j direction
129  integer, intent(out) :: jec !< Computation end index in j direction
130  integer, intent(out) :: isd !< Data start index in i direction
131  integer, intent(out) :: ied !< Data end index in i direction
132  integer, intent(out) :: jsd !< Data start index in j direction
133  integer, intent(out) :: jed !< Data end index in j direction
134  integer, intent(out) :: nk !< Number of levels in k direction
135  integer, intent(out) :: ntau !< Unknown
136  integer, optional, intent(out) :: axes(3) !< Unknown
137  type(time_type), optional, intent(out) :: init_time !< Unknown
138  real, optional, dimension(:,:,:), pointer :: grid_tmask !< Unknown
139  integer, optional, dimension(:,:), pointer :: grid_mask_coast !< Unknown
140  integer, optional, dimension(:,:), pointer :: grid_kmt !< Unknown
141  type(g_diag_ctrl), optional, pointer :: diag_CS !< Unknown

◆ g_tracer_get_name()

subroutine, public g_tracer_utils::g_tracer_get_name ( type(g_tracer_type), pointer  g_tracer,
character(len=*), intent(out)  string 
)

Unknown.

Parameters
g_tracerUnknown
[out]stringUnknown

Definition at line 267 of file generic_tracer_utils.F90.

267  type(g_tracer_type), pointer :: g_tracer !< Unknown
268  character(len=*), intent(out) :: string !< Unknown

◆ g_tracer_get_next()

subroutine, public g_tracer_utils::g_tracer_get_next ( type(g_tracer_type), pointer  g_tracer,
type(g_tracer_type), pointer  g_tracer_next 
)

get the next tracer in the list

Parameters
g_tracerPointer to tracer node
g_tracer_nextPointer to the next tracer node in the list

Definition at line 285 of file generic_tracer_utils.F90.

285  type(g_tracer_type), pointer :: g_tracer !< Pointer to tracer node
286  type(g_tracer_type), pointer :: g_tracer_next !< Pointer to the next tracer node in the list

◆ g_tracer_get_real()

subroutine g_tracer_utils::g_tracer_get_real ( type(g_tracer_type), pointer  g_tracer_list,
character(len=*), intent(in)  name,
character(len=*), intent(in)  member,
real, intent(out)  value 
)
private

Unknown.

Parameters
[in]nameUnknown
[in]memberUnknown
g_tracer_listUnknown
[out]valueUnknown

Definition at line 204 of file generic_tracer_utils.F90.

204  character(len=*), intent(in) :: name !< Unknown
205  character(len=*), intent(in) :: member !< Unknown
206  type(g_tracer_type), pointer :: g_tracer_list !< Unknown
207  real, intent(out):: value !< Unknown

◆ g_tracer_get_string()

subroutine g_tracer_utils::g_tracer_get_string ( type(g_tracer_type), pointer  g_tracer_list,
character(len=*), intent(in)  name,
character(len=*), intent(in)  member,
character(len=fm_string_len), intent(out)  string 
)
private

Unknown.

Parameters
[in]nameUnknown
[in]memberUnknown
g_tracer_listUnknown
[out]stringUnknown

Definition at line 212 of file generic_tracer_utils.F90.

212  character(len=*), intent(in) :: name !< Unknown
213  character(len=*), intent(in) :: member !< Unknown
214  type(g_tracer_type), pointer :: g_tracer_list !< Unknown
215  character(len=fm_string_len), intent(out) :: string !< Unknown

◆ g_tracer_is_prog()

logical function, public g_tracer_utils::g_tracer_is_prog ( type(g_tracer_type), pointer  g_tracer)

Is the tracer prognostic?

Parameters
g_tracerPointer to tracer node

Definition at line 279 of file generic_tracer_utils.F90.

279  logical :: g_tracer_is_prog
280  type(g_tracer_type), pointer :: g_tracer !< Pointer to tracer node

◆ g_tracer_send_diag()

subroutine, public g_tracer_utils::g_tracer_send_diag ( type(g_tracer_type), pointer  g_tracer_list,
type(time_type), intent(in)  model_time,
integer, intent(in)  tau 
)
Parameters
g_tracer_listpointer to the head of the generic tracer list
[in]model_timeTime
[in]tauThe time step for the field 4D field to be reported

Definition at line 259 of file generic_tracer_utils.F90.

259  type(g_tracer_type), pointer :: g_tracer_list !< pointer to the head of the generic tracer list
260  type(g_tracer_type), pointer :: g_tracer !< Pointer to tracer node
261  type(time_type), intent(in) :: model_time !< Time
262  integer, intent(in) :: tau !< The time step for the %field 4D field to be reported

◆ g_tracer_set_2d()

subroutine g_tracer_utils::g_tracer_set_2d ( type(g_tracer_type), pointer  g_tracer_list,
character(len=*), intent(in)  name,
character(len=*), intent(in)  member,
real, dimension(isd:,jsd:), intent(in)  array,
integer, intent(in)  isd,
integer, intent(in)  jsd,
real, intent(in), optional  weight 
)
private

Unknown.

Parameters
[in]nameUnknown
[in]memberUnknown
g_tracer_listUnknown
[in]isdUnknown
[in]jsdUnknown
[in]arrayUnknown
[in]weightUnknown

Definition at line 220 of file generic_tracer_utils.F90.

220  character(len=*), intent(in) :: name !< Unknown
221  character(len=*), intent(in) :: member !< Unknown
222  type(g_tracer_type), pointer :: g_tracer_list !< Unknown
223  integer, intent(in) :: isd !< Unknown
224  integer, intent(in) :: jsd !< Unknown
225  real, dimension(isd:,jsd:),intent(in) :: array !< Unknown
226  real, optional ,intent(in) :: weight !< Unknown

◆ g_tracer_set_3d()

subroutine g_tracer_utils::g_tracer_set_3d ( type(g_tracer_type), pointer  g_tracer_list,
character(len=*), intent(in)  name,
character(len=*), intent(in)  member,
real, dimension(isd:,jsd:,:), intent(in)  array,
integer, intent(in)  isd,
integer, intent(in)  jsd,
integer, intent(in), optional  ntau 
)
private

Unknown.

Parameters
[in]nameUnknown
[in]memberUnknown
g_tracer_listUnknown
[in]isdUnknown
[in]jsdUnknown
[in]ntauUnknown
[in]arrayUnknown

Definition at line 231 of file generic_tracer_utils.F90.

231  character(len=*), intent(in) :: name !< Unknown
232  character(len=*), intent(in) :: member !< Unknown
233  type(g_tracer_type), pointer :: g_tracer_list !< Unknown
234  integer, intent(in) :: isd !< Unknown
235  integer, intent(in) :: jsd !< Unknown
236  integer, optional, intent(in) :: ntau !< Unknown
237  real, dimension(isd:,jsd:,:), intent(in) :: array !< Unknown

◆ g_tracer_set_4d()

subroutine g_tracer_utils::g_tracer_set_4d ( type(g_tracer_type), pointer  g_tracer_list,
character(len=*), intent(in)  name,
character(len=*), intent(in)  member,
real, dimension(isd:,jsd:,:,:), intent(in)  array,
integer, intent(in)  isd,
integer, intent(in)  jsd 
)
private

Unknown.

Parameters
[in]nameUnknown
[in]memberUnknown
g_tracer_listUnknown
[in]isdUnknown
[in]jsdUnknown
[in]arrayUnknown

Definition at line 242 of file generic_tracer_utils.F90.

242  character(len=*), intent(in) :: name !< Unknown
243  character(len=*), intent(in) :: member !< Unknown
244  type(g_tracer_type), pointer :: g_tracer_list !< Unknown
245  integer, intent(in) :: isd !< Unknown
246  integer, intent(in) :: jsd !< Unknown
247  real, dimension(isd:,jsd:,:,:), intent(in) :: array !< Unknown

◆ g_tracer_set_common()

subroutine, public g_tracer_utils::g_tracer_set_common ( integer, intent(in)  isc,
integer, intent(in)  iec,
integer, intent(in)  jsc,
integer, intent(in)  jec,
integer, intent(in)  isd,
integer, intent(in)  ied,
integer, intent(in)  jsd,
integer, intent(in)  jed,
integer, intent(in)  nk,
integer, intent(in)  ntau,
integer, dimension(3), intent(in)  axes,
real, dimension(isd:,jsd:,:), intent(in)  grid_tmask,
integer, dimension(isd:,jsd:), intent(in)  grid_kmt,
type(time_type), intent(in)  init_time 
)
Parameters
[in]iscComputation start index in i direction
[in]iecComputation end index in i direction
[in]jscComputation start index in j direction
[in]jecComputation end index in j direction
[in]isdData start index in i direction
[in]iedData end index in i direction
[in]jsdData start index in j direction
[in]jedData end index in j direction
[in]nkNumber of levels in k direction
[in]ntauUnknown
[in]axesDomain axes?
[in]grid_tmaskUnknown
[in]grid_kmtUnknown
[in]init_timeUnknown

Definition at line 108 of file generic_tracer_utils.F90.

108  integer, intent(in) :: isc !< Computation start index in i direction
109  integer, intent(in) :: iec !< Computation end index in i direction
110  integer, intent(in) :: jsc !< Computation start index in j direction
111  integer, intent(in) :: jec !< Computation end index in j direction
112  integer, intent(in) :: isd !< Data start index in i direction
113  integer, intent(in) :: ied !< Data end index in i direction
114  integer, intent(in) :: jsd !< Data start index in j direction
115  integer, intent(in) :: jed !< Data end index in j direction
116  integer, intent(in) :: nk !< Number of levels in k direction
117  integer, intent(in) :: ntau !< Unknown
118  integer, intent(in) :: axes(3) !< Domain axes?
119  real, dimension(isd:,jsd:,:),intent(in) :: grid_tmask !< Unknown
120  integer,dimension(isd:,jsd:),intent(in) :: grid_kmt !< Unknown
121  type(time_type), intent(in) :: init_time !< Unknown

◆ g_tracer_set_csdiag()

subroutine, public g_tracer_utils::g_tracer_set_csdiag ( type(g_diag_ctrl), intent(in), target  diag_CS)

Unknown.

Parameters
[in]diag_csUnknown

Definition at line 104 of file generic_tracer_utils.F90.

104  type(g_diag_ctrl), target,intent(in) :: diag_CS !< Unknown

◆ g_tracer_set_real()

subroutine g_tracer_utils::g_tracer_set_real ( type(g_tracer_type), pointer  g_tracer_list,
character(len=*), intent(in)  name,
character(len=*), intent(in)  member,
real, intent(in)  value 
)
private

Unknown.

Parameters
[in]nameUnknown
[in]memberUnknown
g_tracer_listUnknown
[in]valueUnknown

Definition at line 252 of file generic_tracer_utils.F90.

252  character(len=*), intent(in) :: name !< Unknown
253  character(len=*), intent(in) :: member !< Unknown
254  type(g_tracer_type), pointer :: g_tracer_list !< Unknown
255  real, intent(in) :: value !< Unknown

◆ g_tracer_vertdiff_g()

subroutine g_tracer_utils::g_tracer_vertdiff_g ( type(g_tracer_type), pointer  g_tracer,
real, dimension(g_tracer_com%isd:,g_tracer_com%jsd:,:), intent(in)  h_old,
real, dimension(g_tracer_com%isd:,g_tracer_com%jsd:,:), intent(in)  ea,
real, dimension(g_tracer_com%isd:,g_tracer_com%jsd:,:), intent(in)  eb,
real, intent(in)  dt,
real, intent(in)  kg_m2_to_H,
real, intent(in)  m_to_H,
integer, intent(in)  tau,
logical, intent(in), optional  mom 
)
private

Vertical Diffusion of a tracer node.

This subroutine solves a tridiagonal equation to find and set values of vertically diffused field for a tracer node.This is ported from GOLD (vertdiff) and simplified Since the surface flux from the atmosphere (stf) has the units of mol/m^2/sec the resulting tracer concentration has units of mol/Kg

Parameters
g_tracerUnknown
[in]h_oldLayer thickness before entrainment, in m or kg m-2.
[in]eaThe amount of fluid entrained from the layer above, in H.
[in]ebThe amount of fluid entrained from the layer below, in H.
[in]dtThe amount of time covered by this call, in s.
[in]kg_m2_to_hA conversion factor that translates kg m-2 into the units of h_old (H)
[in]m_to_hA conversion factor that translates m into the units of h_old (H).
[in]tauUnknown
[in]momUnknown

Definition at line 296 of file generic_tracer_utils.F90.

296  type(g_tracer_type), pointer :: g_tracer !< Unknown
297  !> Layer thickness before entrainment, in m or kg m-2.
298  real, dimension(g_tracer_com%isd:,g_tracer_com%jsd:,:), intent(in) :: h_old
299  !> The amount of fluid entrained from the layer above, in H.
300  real, dimension(g_tracer_com%isd:,g_tracer_com%jsd:,:), intent(in) :: ea
301  !> The amount of fluid entrained from the layer below, in H.
302  real, dimension(g_tracer_com%isd:,g_tracer_com%jsd:,:), intent(in) :: eb
303  real, intent(in) :: dt !< The amount of time covered by this call, in s.
304  real, intent(in) :: kg_m2_to_H !< A conversion factor that translates kg m-2 into
305  !! the units of h_old (H)
306  real, intent(in) :: m_to_H !< A conversion factor that translates m into the units
307  !! of h_old (H).
308  integer, intent(in) :: tau !< Unknown
309  logical, intent(in), optional :: mom !< Unknown