take values interpolated at sf%s_IP positions and project onto fourier basis by integration
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_fBase), | intent(in) | :: | sf |
self |
||
| real(kind=wp), | intent(in) | :: | g_IP(:) |
interpolation values at theta_IP zeta_IP positions |
||
| real(kind=wp), | intent(in), | optional | :: | thet_zeta_start(2) |
projection to fourier base
FUNCTION fBase_initDOF( sf , g_IP,thet_zeta_start) RESULT(DOFs) ! MODULES IMPLICIT NONE !----------------------------------------------------------------------------------------------------------------------------------- ! INPUT VARIABLES CLASS(t_fBase), INTENT(IN ) :: sf !! self REAL(wp) , INTENT(IN ) :: g_IP(:) !! interpolation values at theta_IP zeta_IP positions REAL(wp),INTENT(IN),OPTIONAL :: thet_zeta_start(2) !theta,zeta value of first point (points must remain equidistant and of size mn_nyq(1),mn_nyq(2)) !----------------------------------------------------------------------------------------------------------------------------------- ! OUTPUT VARIABLES REAL(wp) :: DOFs(1:sf%modes) !! projection to fourier base !----------------------------------------------------------------------------------------------------------------------------------- ! LOCAL VARIABLES REAL(wp) :: x_IP_shift(2,sf%mn_IP) !=================================================================================================================================== IF(SIZE(g_IP,1).NE.sf%mn_IP) CALL abort(__STAMP__, & 'nDOF not correct when calling fBase_initDOF' ) IF(.NOT.(PRESENT(thet_zeta_start)))THEN CALL sf%projectIPtoDOF(.FALSE.,(sf%d_thet*sf%d_zeta),0,g_IP,DOFs) ELSE x_IP_shift(1,:)=sf%x_IP(1,:)-sf%x_IP(1,1)+thet_zeta_start(1) x_IP_shift(2,:)=sf%x_IP(2,:)-sf%x_IP(2,1)+thet_zeta_start(2) CALL sf%projectxntoDOF(.FALSE.,(sf%d_thet*sf%d_zeta),0,sf%mn_IP,x_IP_shift,g_IP,DOFs) END IF DOFs(:)=sf%snorm_base(:)*DOFs(:) !normalize with inverse mass matrix diagonal END FUNCTION fBase_initDOF