Sets the this % interior attribute using the eqn attribute, geometry (for physical positions), and provided simulation time.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(MappedVector3D), | intent(inout) | :: | this | |||
type(SEMHex), | intent(in) | :: | geometry | |||
real(kind=prec), | intent(in) | :: | time |
subroutine SetInteriorFromEquation_MappedVector3D(this,geometry,time)
!! Sets the this % interior attribute using the eqn attribute,
!! geometry (for physical positions), and provided simulation time.
implicit none
class(MappedVector3D),intent(inout) :: this
type(SEMHex),intent(in) :: geometry
real(prec),intent(in) :: time
! Local
integer :: i,j,k,iEl,iVar
real(prec) :: x
real(prec) :: y
real(prec) :: z
do iVar = 1,this%nVar
do iEl = 1,this%nElem
do k = 1,this%interp%N+1
do j = 1,this%interp%N+1
do i = 1,this%interp%N+1
! Get the mesh positions
x = geometry%x%interior(i,j,k,iEl,1,1)
y = geometry%x%interior(i,j,k,iEl,1,2)
z = geometry%x%interior(i,j,k,iEl,1,3)
this%interior(i,j,k,iEl,iVar,1) = &
this%eqn(1+3*(iVar-1))%Evaluate((/x,y,z,time/))
this%interior(i,j,k,iEl,iVar,2) = &
this%eqn(2+3*(iVar-1))%Evaluate((/x,y,z,time/))
this%interior(i,j,k,iEl,iVar,3) = &
this%eqn(3+3*(iVar-1))%Evaluate((/x,y,z,time/))
enddo
enddo
enddo
enddo
enddo
call gpuCheck(hipMemcpy(this%interior_gpu,c_loc(this%interior),sizeof(this%interior),hipMemcpyHostToDevice))
endsubroutine SetInteriorFromEquation_MappedVector3D