Applies strong boundary condition to force DOF
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | whichVar |
=1: X1, =2: X2, =3: LA |
||
| class(t_sol_var_MHD3D), | intent(inout) | :: | F_MHD3D |
variation of the energy projected onto the basis functions of dofs_in |
SUBROUTINE ApplyBC_Fstrong(whichVar,F_MHD3D) ! MODULES USE MODgvec_MHD3D_Vars,ONLY:X1_base,X2_base,LA_base USE MODgvec_MHD3D_Vars,ONLY:X1_BC_Type,X2_BC_Type,LA_BC_type USE MODgvec_sol_var_MHD3D, ONLY:t_sol_var_MHD3D IMPLICIT NONE !----------------------------------------------------------------------------------------------------------------------------------- ! INPUT VARIABLES INTEGER, INTENT(IN) :: whichVar !! =1: X1, =2: X2, =3: LA !----------------------------------------------------------------------------------------------------------------------------------- ! OUTPUT VARIABLES CLASS(t_sol_var_MHD3D), INTENT(INOUT) :: F_MHD3D !! variation of the energy projected onto the basis functions of dofs_in !----------------------------------------------------------------------------------------------------------------------------------- ! LOCAL VARIABLES INTEGER :: iMode REAL(wp) :: BC_val(2) !=================================================================================================================================== !apply strong boundary conditions BC_val =(/ 0.0_wp, 0.0_wp/) SELECT CASE(whichVar) CASE(1) !X1 BC !$OMP PARALLEL DO & !$OMP SCHEDULE(STATIC) DEFAULT(NONE) SHARED(X1_base,F_MHD3D,X1_BC_type,BC_val) PRIVATE(iMode) DO imode=X1_base%f%modes_str,X1_base%f%modes_end CALL X1_base%s%applyBCtoDOF(F_MHD3D%X1(:,iMode),X1_BC_type(:,iMode),BC_val) END DO !$OMP END PARALLEL DO CASE(2) !X2 BC !$OMP PARALLEL DO & !$OMP SCHEDULE(STATIC) DEFAULT(NONE) SHARED(X2_base,F_MHD3D,X2_BC_type,BC_val) PRIVATE(iMode) DO imode=X2_base%f%modes_str,X2_base%f%modes_end CALL X2_base%s%applyBCtoDOF(F_MHD3D%X2(:,iMode),X2_BC_type(:,iMode),BC_val) END DO !$OMP END PARALLEL DO CASE(3) !LA BC !$OMP PARALLEL DO & !$OMP SCHEDULE(STATIC) DEFAULT(NONE) SHARED(LA_base,F_MHD3D,LA_BC_type,BC_val) PRIVATE(iMode) DO imode=LA_base%f%modes_str,LA_base%f%modes_end CALL LA_base%s%applyBCtoDOF(F_MHD3D%LA(:,iMode),LA_BC_type(:,iMode),BC_val) END DO !$OMP END PARALLEL DO END SELECT !whichVar END SUBROUTINE ApplyBC_Fstrong