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.
function ic_gausspulse_for(me,coord,n)result(res)! ---------------------------------------------------------------------------!> number of return valuesinteger,intent(in)::n!> global gauss pulse datatype(ic_gausspulse_type),intent(in)::me!> coordinate of an elementreal(kind=rk),intent(in)::coord(n,3)!> return value which is sent to state variablereal(kind=rk)::res(n)! ---------------------------------------------------------------------------real(kind=rk)::distsquare(n)real(kind=rk)::fact! ---------------------------------------------------------------------------fact=-log(2.0_rk)/(me%halfwidth**2)distsquare=(coord(:,1)-me%center(1))**2&&+(coord(:,2)-me%center(2))**2&&+(coord(:,3)-me%center(3))**2distsquare=fact*distsquareres=me%background+(me%amplitude*exp(distsquare))end function ic_gausspulse_for