subroutine to add the variables from the input lua script to the varsys
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_variable_type), | intent(in) | :: | luaVar(:) |
variables defined in the lua file |
||
type(tem_varSys_type), | intent(inout) | :: | varSys |
global variable system to which luaVar to be appended |
||
type(tem_st_fun_linkedList_type), | intent(inout) | :: | st_funList |
contains spacetime functions of all variables |
||
type(tem_varSys_solverData_evalElem_type), | intent(in), | optional | :: | solverData_evalElem |
A callback routine to allow the definition of solver specific element evaluation for space-time functions. This routine can be used to construct more than a single degree of freedom for a spacetime function in an element. |
subroutine tem_varSys_append_luaVar( luaVar, varSys, st_funList, &
& solverData_evalElem )
!--------------------------------------------------------------------------
!> variables defined in the lua file
type(tem_variable_type), intent(in) :: luaVar(:)
!> global variable system to which luaVar to be appended
type(tem_varSys_type), intent(inout) :: varSys
!> contains spacetime functions of all variables
type(tem_st_fun_linkedList_type), intent(inout) :: st_funList
!> A callback routine to allow the definition of solver specific
!! element evaluation for space-time functions.
!!
!! This routine can be used to construct more than a single degree of
!! freedom for a spacetime function in an element.
type(tem_varSys_solverData_evalElem_type), &
& optional, intent(in) :: solverData_evalElem
! --------------------------------------------------------------------------
integer :: iVar, varPos
! --------------------------------------------------------------------------
if (size(luaVar) > 0) &
& write(logUnit(5),*) 'Append variables defined in lua file to varSys'
do iVar = 1, size(luaVar)
write(logUnit(5),'(A,I2,A)') 'Appending variable ', iVar, ': ' &
& // trim(luaVar(iVar)%label)
varPos = PositionOfVal( me = varSys%varName, &
& val = trim(luaVar(iVar)%label) )
! If variable already exist in varSys then do nothing
if (varPos>0) then
write(logUnit(5),*) 'Variable already exists!'
cycle
end if
select case(trim(luaVar(iVar)%varType))
case('st_fun')
call tem_varSys_append_stFun( &
& stFunVar = luaVar(iVar), &
& varSys = varSys, &
& st_funList = st_funList, &
& solverData_evalElem = solverData_evalElem )
case('operation')
call tem_varSys_append_operVar( &
& operVar = luaVar(iVar), &
& varSys = varSys, &
& solverData_evalElem = solverData_evalElem )
case default
if (associated(luaVar(iVar)%append_solverVar)) then
call luaVar(iVar)%append_solverVar( &
& varSys = varSys, &
& solverData_evalElem = solverData_evalElem )
else
write(logUnit(1),*) 'WARNING: varType: ' &
& // trim(luaVar(iVar)%varType) &
& // ' not supported. Variable ' &
& // trim(luaVar(iVar)%label) &
& // ' is not appended.'
cycle ! go to next variable
end if
end select
end do !iVar
end subroutine tem_varSys_append_luaVar