evaluate all modes at all interpolation points
| Type | Intent | Optional | 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 |
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