This routine process instring and store information in spacetime function.
Abort if same spacetime function is used as boundaries and sources.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(tem_varSys_op_type), | intent(in) | :: | fun |
Description of the method to obtain the variables, here some preset values might be stored, like the space time function to use or the required variables. |
||
type(tem_varSys_type), | intent(in) | :: | varSys |
The variable system to obtain the variable from. |
||
character(len=*), | intent(in) | :: | instring |
Input string with parameter to set in method_data |
recursive subroutine set_params_spacetime( fun, varSys, instring ) ! -------------------------------------------------------------------- ! !> Description of the method to obtain the variables, here some preset !! values might be stored, like the space time function to use or the !! required variables. class(tem_varSys_op_type), intent(in) :: fun !> The variable system to obtain the variable from. type(tem_varSys_type), intent(in) :: varSys !> Input string with parameter to set in method_data character(len=*), intent(in) :: instring ! -------------------------------------------------------------------- ! type(flu_state) :: conf type(tem_st_fun_listElem_type), pointer :: fPtr logical :: isSurface_loc integer :: iStFun integer :: iError ! -------------------------------------------------------------------- ! call C_F_POINTER( fun%method_Data, fPtr ) call open_config_chunk(L = conf, chunk = instring) call aot_get_val( L = conf, & & key = 'isSurface', & & val = isSurface_loc, & & ErrCode = iError ) if (btest(iError, aoterr_Fatal)) then write(logUnit(1),*) 'Error: In set_params to load "isSurface" '//& & 'for spacetime variable ', & & trim(varSys%varname%val(fun%mypos)) if (btest(iError, aoterr_WrongType)) then write(logUnit(1),*) ' "isSurface" is wrong type' end if if (btest(iError, aoterr_NonExistent)) then write(logUnit(1),*) ' "isSurface" does not exist' end if call tem_abort() end if ! KM Store bc_id and field id only for apesmate coupling do iStFun = 1, fPtr%nVals select case (trim(fPtr%val(iStFun)%fun_kind)) case ('apesmate') if (fPtr%isSurface == -1) then if (isSurface_loc) then fPtr%isSurface = 0 else fPtr%isSurface = 1 end if else write(logUnit(10),*) 'Warning: ' & & // 'Set params stfun: isSurface is already set' if (isSurface_loc) then if (fPtr%isSurface == 1) then write(logUnit(1),*) 'Error: In set params for spacetime function' write(logUnit(1),*) ' This st_fun is already used for' & & // ' volume' write(logUnit(1),*) ' so cannot be used for surface.' call tem_abort() end if else if (fPtr%isSurface == 0) then write(logUnit(1),*) 'Error: In set params for spacetime function' write(logUnit(1),*) ' This st_fun is already used for' & & // ' surface' write(logUnit(1),*) ' so cannot be used for volume.' call tem_abort() end if end if end if ! store surface or volume information in coupling type fPtr%val(iStFun)%aps_coupling%isSurface = fPtr%isSurface end select end do end subroutine set_params_spacetime