fBase_evalDOF_IP Function

private function fBase_evalDOF_IP(sf, deriv, DOFs) result(y_IP)

evaluate all modes at all interpolation points

Arguments

Type IntentOptional Attributes Name
class(t_fBase), intent(in) :: sf

self

integer, intent(in) :: deriv

=0: base, =2: dthet , =3: dzeta

real(kind=wp), intent(in) :: DOFs(:)

array of all modes

Return Value real(kind=wp), (sf%mn_IP)


Calls

proc~~fbase_evaldof_ip~~CallsGraph proc~fbase_evaldof_ip fBase_evalDOF_IP dgemv dgemv proc~fbase_evaldof_ip->dgemv proc~fbase_evaldof_xn t_fBase%fBase_evalDOF_xn proc~fbase_evaldof_ip->proc~fbase_evaldof_xn proc~fbase_evaldof_xn->dgemv proc~fbase_eval_xn t_fBase%fBase_eval_xn proc~fbase_evaldof_xn->proc~fbase_eval_xn

Source Code

FUNCTION fBase_evalDOF_IP(sf,deriv,DOFs) RESULT(y_IP)
  ! MODULES
  IMPLICIT NONE
  ! INPUT VARIABLES -------------------------!
  CLASS(t_fBase), INTENT(IN   ) :: sf     !! self
  INTEGER       , INTENT(IN   ) :: deriv  !! =0: base, =2: dthet , =3: dzeta
  REAL(wp)      , INTENT(IN   ) :: DOFs(:)  !! array of all modes
  ! OUTPUT VARIABLES -------------------------!
  REAL(wp)                      :: y_IP(sf%mn_IP)
  ! CODE --------------------------------------------------------------------------------------------------------------------------!
  IF(SIZE(DOFs,1).NE.sf%modes) CALL abort(__STAMP__, &
       'nDOF not correct when calling fBase_evalDOF_IP' )
  SELECT CASE(deriv)
  CASE(0)
    !y_IP=MATMUL(sf%base_IP(:,:),DOFs(:))
    __MATVEC_N(y_IP,sf%base_IP,DOFs)
  CASE(DERIV_THET)
    !y_IP=MATMUL(sf%base_dthet_IP(:,:),DOFs(:))
    __MATVEC_N(y_IP,sf%base_dthet_IP,DOFs)
  CASE(DERIV_ZETA)
    !y_IP=MATMUL(sf%base_dzeta_IP(:,:),DOFs(:))
    __MATVEC_N(y_IP,sf%base_dzeta_IP,DOFs)
  CASE DEFAULT  !for other derivatives, resort to not precomputed/ explicit computation:
     y_IP = sf%evalDOF_xn(sf%mn_IP,sf%x_IP,deriv,DOFs)
  END SELECT
END FUNCTION fBase_evalDOF_IP