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 vhelmholtz_set_methods(mg)type(mg_t),intent(inout)::mgif(mg%n_extra_vars==0.and.mg%is_allocated)then error stop"vhelmholtz_set_methods: mg%n_extra_vars == 0"elsemg%n_extra_vars=max(1,mg%n_extra_vars)end ifmg%subtract_mean=.false.! Use Neumann zero boundary conditions for the variable coefficient, since! it is needed in ghost cells.mg%bc(:,mg_iveps)%bc_type=mg_bc_neumannmg%bc(:,mg_iveps)%bc_value=0.0_dpselect case(mg%geometry_type)case(mg_cartesian)mg%box_op=>box_vhelmhselect case(mg%smoother_type)case(mg_smoother_gs,mg_smoother_gsrb)mg%box_smoother=>box_gs_vhelmhcase defaulterror stop"vhelmholtz_set_methods: unsupported smoother type"end select case defaulterror stop"vhelmholtz_set_methods: unsupported geometry"end select end subroutine vhelmholtz_set_methods