simply evaluate function or derivative at point x, for multiple DOF vectors
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sBase), | intent(in) | :: | sf |
self |
||
| real(kind=wp), | intent(in) | :: | x |
point positions in [0,1] |
||
| integer, | intent(in) | :: | nd |
number of DOF vectors |
||
| integer, | intent(in) | :: | deriv |
derivative (=0: solution) |
||
| real(kind=wp), | intent(in) | :: | DOFs(1:sf%nBase,1:nd) |
FUNCTION sBase_evalDOF2D_s(sf,x,nd,deriv,DOFs) RESULT(y) ! MODULES IMPLICIT NONE !----------------------------------------------------------------------------------------------------------------------------------- ! INPUT VARIABLES CLASS(t_sbase), INTENT(IN ) :: sf !! self REAL(wp) , INTENT(IN ) :: x !! point positions in [0,1] INTEGER , INTENT(IN ) :: nd !! number of DOF vectors INTEGER , INTENT(IN ) :: deriv !! derivative (=0: solution) REAL(wp) , INTENT(IN ) :: DOFs(1:sf%nBase,1:nd) !----------------------------------------------------------------------------------------------------------------------------------- ! OUTPUT VARIABLES REAL(wp) :: y(1:nd) !----------------------------------------------------------------------------------------------------------------------------------- ! LOCAL VARIABLES INTEGER :: iElem,j REAL(wp) :: base_x(0:sf%deg) !=================================================================================================================================== __PERFON('eval_dof2d_s') CALL sf%eval(x,deriv,iElem,base_x) j=sf%base_offset(iElem) !y(1:nd) =MATMUL(base_x(0:sf%deg),DOFs(j:j+sf%deg,1:nd)) __MATVEC_T(y,DOFs(j:j+sf%deg,:),base_x(0:sf%deg)) __PERFOFF('eval_dof2d_s') END FUNCTION sbase_evalDOF2D_s