Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Source Code
subroutine mg_set_methods(mg)type(mg_t),intent(inout)::mg! Set default prolongation method (routines below can override this)mg%box_prolong=>mg_prolong_sparseselect case(mg%operator_type)case(mg_laplacian)call laplacian_set_methods(mg)case(mg_vlaplacian)call vlaplacian_set_methods(mg)case(mg_helmholtz)call helmholtz_set_methods(mg)case(mg_vhelmholtz)call vhelmholtz_set_methods(mg)case(mg_ahelmholtz)call ahelmholtz_set_methods(mg)case defaulterror stop"mg_set_methods: unknown operator"end select! For red-black, perform two smoothing sub-steps so that all unknowns are! updated per cycleif(mg%smoother_type==mg_smoother_gsrb)thenmg%n_smoother_substeps=2elsemg%n_smoother_substeps=1end if end subroutine mg_set_methods