initialize (=allocate) sf of type t_sol_var
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sol_var_MHD3D), | intent(inout) | :: | sf |
sf |
||
| integer, | intent(in) | :: | varsize(:) |
SUBROUTINE sol_var_MHD3D_init( sf,varsize) IMPLICIT NONE !----------------------------------------------------------------------------------------------------------------------------------- ! INPUT VARIABLES CLASS(t_sol_var_MHD3D), INTENT(INOUT) :: sf !!sf INTEGER , INTENT(IN ) :: varsize(:) !----------------------------------------------------------------------------------------------------------------------------------- ! OUTPUT VARIABLES !----------------------------------------------------------------------------------------------------------------------------------- ! LOCAL VARIABLES !=================================================================================================================================== IF(sf%initialized)THEN WRITE(*,*)'WARNING: REALLOCATION OF SOL_VAR_MHD3D!!' CALL sf%free() END IF IF((size(varsize(:)).NE.6)) THEN CALL abort(__STAMP__, & "sol_var_MHD3D init: varsize is a vector of 3 entries!") END IF sf%nvars=3 ALLOCATE(sf%varSize(2,sf%nvars),sf%offset(0:sf%nvars)) sf%varSize(1,:)=varSize(1:3) sf%varSize(2,:)=varSize(4:6) sf%offset(0)=0 sf%offset(1)=sf%offset(0)+PRODUCT(sf%varsize(:,1)) sf%offset(2)=sf%offset(1)+PRODUCT(sf%varsize(:,2)) sf%offset(3)=sf%offset(2)+PRODUCT(sf%varsize(:,3)) ALLOCATE(sf%q(1:sf%offset(sf%nvars))) sf%X1(1:sf%varSize(1,1),1:sf%varSize(2,1))=>sf%q(1+sf%offset(0) : sf%offset(1)) sf%X2(1:sf%varSize(1,2),1:sf%varSize(2,2))=>sf%q(1+sf%offset(1) : sf%offset(2)) sf%LA(1:sf%varSize(1,3),1:sf%varSize(2,3))=>sf%q(1+sf%offset(2) : sf%offset(3)) sf%W_MHD3D=-1.0_wp sf%initialized=.TRUE. CALL sf%set_to(0.0_wp) IF(.NOT.test_called) CALL sol_var_MHD3D_test(sf) END SUBROUTINE sol_var_MHD3D_init