Some of the modules of the COBOLD code (with suffix ``.F90'') employ compiler macros
to switch between code versions during compile time.
Typically you define at least on of the three switches rhd_r01
, rhd_r02
,
or rhd_r03
to choose a radiation transport module.
The others have reasonable default values.
To find the combination with the optimal performance, you should look into Sect. 3.5
rhd_r01
: in rhd.F90
, (``rhd radiation 01'').
undefined
: (default) LHDrad routines are deactivated.
1
: LHDrad routines are recognized by the compiler.
rhd_r02
: in rhd.F90
, (``rhd radiation 02'').
undefined
: (default) MSrad routines are deactivated.
1
: MSrad routines are recognized by the compiler.
rhd_r03
: in rhd.F90
, (``rhd radiation 03'').
undefined
: (default) SHORTrad routines are deactivated.
1
: SHORTrad routines are recognized by the compiler.
IDF
: in rhd_hyd_module.F90
,
(``Integer Delta Flux'').
0
: (default) no padding cells
1,2,3,
...: extra padding cells
rhd_hyd_gravcorr_p01
: in rhd_hyd_module.F90
, (``rhd hydrodynamics gravitation correction parameter 01'').
0
: No pressure correction terms in Roe solver.
1
: Simple correction with rhomean, no new average pressure.
2
: Simple correction with rhomean, new average pressure.
3
: Correction with local rho, limited, new average pressure.
4
: Correction with local rho, new (different formula) average pressure.
5
: (default) Correction with local rho, new limit, new average pressure.
rhd_hyd_entropyfix_p01
: in rhd_hyd_module.F90
, (``rhd hydrodynamics entropy fix parameter 01'').
0
: (default) ``if...then...else'' construction
1
: use a mask and the signum function
rhd_hyd_upwind_p01
: in rhd_hyd_module.F90
,
(``rhd hydrodynamics upwind parameter 01'').
0
: (default) ``if...then...else'' construction
1
: use a mask and the signum function
rhd_hyd_roe1d_l01
: in rhd_hyd_module.F90
, (``rhd hydrodynamics roe 1 dimension loop 01'').
0
: (default) lots of small routines acting on scalars, inlining needed,
cache reuse is optimized
1
: routines acting on arrays, more temporary arrays necessary,
vectorization is easier
rhd_bound_t01
: in rhd_hyd_module.F90
,
(``rhd bound timing 01'').
undefined
: (default) no timing information
defined
: call subroutines to measure elapsed time
rhd_roe1d_flux_t01
: in rhd_hyd_module.F90
,
(``rhd roe 1 dimension flux timing 01'').
undefined
: (default) no timing information
defined
: call subroutines to measure elapsed time
rhd_roe1d_step_t01
: in rhd_hyd_module.F90
,
(``rhd roe 1 dimension step timing 01'').
undefined
: (default) no timing information
defined
: call subroutines to measure elapsed time
rhd_h02
: in rhd.F90
, rhd_hyd_module.F90
,
(``rhd hydrodynamics 02'').
undefined
: (default) Skip routine vanLeer1d_step
during compilation
defined
: Compile routine vanLeer1d_step
rhd_vis_density_p01
: in rhd_vis_module.F90
,
(``rhd viscosity density parameter 01'').
0
: rhomean=min(rholeft,rhoright)
1
: (default) rhomean=0.5 * (rholeft + rhoright)
rhd_vis_t01
: in rhd_vis_module.F90
,
(``rhd viscosity timing 01'').
undefined
: (default) no timing information
defined
: call subroutines to measure elapsed time
rhd_rad3d_toray_l01
: in rhd_lhdrad_module.F90
,
(``rhd radiation 3 dimensions to ray loop 01'').
rhd_rad3d_toray
into three separate loops. Typically, one big loop is to be preferred.
Values:
undefined
: (default) One big loop
defined
: Three smaller loops
rhd_rad3d_fromray_l01
: in rhd_lhdrad_module.F90
,
(``rhd radiation 3 dimensions from ray loop 01'').
rhd_rad3d_fromray
into two separate loops. Typically, one big loop is to be preferred.
Values:
undefined
: (default) One big loop
defined
: Two smaller loops
rhd_rad3d_r02
: in rhd_lhdrad_module.F90
,
(``rhd radiation 3 dimensions radiation 02'').
rhd_lhdrad_module
contains a routine for the handling of periodic
boundaries.
It is in an experimental state and is deactivated by default.
Values:
undefined
: (default) Skip routine rhd_rad3d_dirper
during compilation
defined
: Compile routine rhd_rad3d_dirper
rhd_rad3d_solve_t01
: in rhd_lhdrad_module.F90
,
(``rhd radiation 3 dimensions solve timing 01'').
undefined
: (default) no timing information
defined
: call subroutines to measure elapsed time
rhd_rad3d_dir_t01
: in rhd_lhdrad_module.F90
,
(``rhd radiation 3 dimensions direction timing 01'').
undefined
: (default) no timing information
defined
: call subroutines to measure elapsed time
rhd_rad3d_step_t01
: in rhd_lhdrad_module.F90
,
(``rhd radiation 3 dimensions step timing 01'').
undefined
: (default) no timing information
defined
: call subroutines to measure elapsed time
rhd_shortrad_operator_l01
: in rhd_shortrad_module.F90
, (``rhd short-characteristics radiation operator loop 01'').
0
: simple test operator, fast but results are utterly useless!
1
: (default) case distinction with ``if..then..else'' construct
2
: case distinction with masks (weights 0.0 or 1.0)
rhd_shortrad_formal_l01
: in rhd_shortrad_module.F90
, (``rhd short-characteristics radiation formal loop 01'').
0
: (default) dtauhalf
, exp_mdtauhalf
, expl2t_mdtauhalf
are computed in single loop
1
: (dtauhalf
, exp_mdtauhalf
), (expl2t_mdtauhalf
)
are computed in separate loops.
This prevents the SUN1 machine (Sunfire, Solaris, Forte 6.2) from doing
some performance degrading optimization
rhd_shortrad_dir1_l01
: in rhd_shortrad_module.F90
, (``rhd short-characteristics radiation direction 1 loop 01'').
0
: (default) Use routine with permuted indices for rays in x1 direction.
In this case the innermost loop index is the third array index.
The transposition of arrays is not needed but some machines (e.g. SUN1) do not like
this index arrangement.
1
: Transpose arrays and use routine rhd_shortrad_dir3
for rays in x1 direction.
The extra step for the transposition of some arrays (and the reverse procedure)
needs some time. But now the routine with the optimum index ordering can be used.
rhd_shortrad_dir_l02
: in rhd_shortrad_module.F90
,
(``rhd short-characteristics radiation direction loop 02'').
rhd_shortrad_dirX
.
Both settings give the same results but might show a different performance on a specific machine.
Values:
0
: (default) PARALLEL statement inside of outer loop
1
: PARALLEL statement outside of outer loop
rhd_shortrad_formal_t01
: in rhd_shortrad_module.F90
,
(``rhd short-characteristics radiation formal timing 01'').
undefined
: (default) no timing information
defined
: call subroutines to measure elapsed time
rhd_shortrad_step_t01
: in rhd_shortrad_module.F90
,
(``rhd short-characteristics radiation step timing 01'').
undefined
: (default) no timing information
defined
: call subroutines to measure elapsed time