ic_tgv_pressure_for Function

public pure function ic_tgv_pressure_for(me, coord, n) result(pressure)

Arguments

Type IntentOptional Attributes Name
type(ic_tgv_type), intent(in) :: me

global gauss pulse data

real(kind=rk), intent(in) :: coord(n,3)

coordinate of an element

integer, intent(in) :: n

number of return values

Return Value real(kind=rk), (n)

return value which is sent to state variable


Source Code

  pure function ic_tgv_pressure_for( me, coord, n ) result( pressure )
    ! ---------------------------------------------------------------------------
    !> global gauss pulse data
    type(ic_tgv_type), intent(in) :: me
    !> number of return values
    integer, intent(in) :: n
    !> coordinate of an element
    real(kind=rk), intent(in) :: coord(n, 3)
    !> return value which is sent to state variable
    real(kind=rk) :: pressure(n)
    ! ---------------------------------------------------------------------------
    integer :: iElem
    real(kind=rk) :: xc, yc, p1, p2 !, zc
    ! ---------------------------------------------------------------------------

    do iElem = 1, n
      xc = 2._rk * ( coord(iElem,1) - me%x0(1) )
      yc = 2._rk * ( coord(iElem,2) - me%x0(2) )
      !zc = 2._rk * ( coord(iElem,3) - me%x0(3) )
      ! p1 = cos(xc) * cos(zc) + 2._rk * cos(yc)
      ! p2 = cos(yc) * cos(zc) + 2._rk * cos(xc)
      p1 = cos(xc)
      p2 = cos(yc)
      pressure(iElem) = me%p0 - (p1+p2) * 0.25_rk
    end do

  end function ic_tgv_pressure_for