Changes between Version 61 and Version 62 of doc/app/userint/int


Ignore:
Timestamp:
Aug 11, 2022 9:26:56 AM (3 years ago)
Author:
raasch
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • doc/app/userint/int

    v61 v62  
    158158In this routine user actions can be implemented which are to be executed either at each time step or at certain times (defined by the user). Since in each case the routine is called at the beginning and at the end of a time step as well as after each prognostic equation it must be defined at which place (and/or at which places) the respective actions are supposed to be executed. For this purpose, an appropriate {{{CASE}}} structure is already inserted in this routine. The location of the calling routine is passed to this routine via the argument {{{location}}}. For example, if called at the beginning of a time step, {{{location}}} ='' 'before_timestep' ''and if called at the end, {{{location}}} ='' 'after_timestep'.''\\
    159159Calculation of user-defined output quantities should be carried out at {{{location}}} ='' 'after_integration'.''\\\\
    160 '''Important:''' if the cache-optimized version of prognostic_equation.f90 is used (this is the default for IBM-Regatta-Systems), the loop variables {{{i}}} and {{{j}}} must be passed as arguments for all calls within {{{prognostic_equations}}}.\\\\
     160'''Important:''' if the cache-optimized version of prognostic_equation.f90 is used (this is the default), the loop variables {{{i}}} and {{{j}}} must be passed as arguments for all calls within {{{prognostic_equations}}}.\\\\
    161161CPU time for {{{user_actions}}} appears within the category "user_actions" in the local file [../../iofiles#CPU_MEASURES CPU_MEASURES]. If the cache-optimized version of {{{prognostic_equation.f90}}} is used, this time measurement only considers the CPU time which was needed outside of the prognostic equations. Time needed for calls within prognostic_equations is considered within the category "all prog.equations".\\\\
    162162Important: this subroutine is written as a {{{FORTRAN}}} module, which uses so-called function overloading. It can be called in two ways: with one argument ({{{location}}}) and with three arguments {{{(i, j, location)}}}. The three argument version is used in the cache-optimized version of {{{prognostic_equations}}}. Depending on the number of given arguments the subroutine internally calls {{{user_actions}}} or {{{user_actions_ij}}}. So the user must insert the actions (code extensions) desired for the respective prognostic equation either in the {{{CASE}}} structure of {{{user_actions}}}, or/and in the {{{CASE}}} structure of {{{user_actions_ij}}}!
     163}}}
     164|----------------
     165{{{#!td style="vertical-align:top; text-align:left;width: 150px"
     166End of {{{prognostic_equations.f90}}}.
     167}}}
     168{{{#!td style="vertical-align:top; text-align:left;style="width: 50px"
     169[=#user_prognostic_equations {{{user_prognostic_equations}}}]\\\\or\\\\{{{user_prognostic_equations}}}\\{{{( i, j, i_omp_start, tn )}}}
     170}}}
     171{{{#!td
     172This is for implementing complete prognostic equations for additional quantities, e.g. if more than one passive scalar shall be simulated.\\\\
     173'''Important:''' This subroutine is written as a {{{FORTRAN}}} module, which uses so-called function overloading. It can be called in two ways: with one argument ({{{location}}}) and with four arguments {{{(i, j, i_omp_start, tn)}}}. The four argument version is used in the cache-optimized version of {{{prognostic_equations}}} (which is switched on by default). Depending on the number of given arguments the subroutine internally calls {{{user_prognostic_equations}}} or {{{user_prognostic_equations_ij}}}. So the user must insert the respective prognostic equations either in {{{user_prognostic_equations}}}, or/and in {{{user_prognostic_equations_ij}}}!
    163174}}}
    164175|----------------