test sol_var_MHD3D
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sol_var_MHD3D), | intent(in) | :: | sf |
sf |
SUBROUTINE sol_var_MHD3D_test( sf ) USE MODgvec_GLobals, ONLY: UNIT_stdOut,testdbg,testlevel,nfailedMsg,nTestCalled,testUnit IMPLICIT NONE !----------------------------------------------------------------------------------------------------------------------------------- ! INPUT VARIABLES CLASS(t_sol_var_MHD3D), INTENT(IN ) :: sf !!sf !----------------------------------------------------------------------------------------------------------------------------------- ! OUTPUT VARIABLES !----------------------------------------------------------------------------------------------------------------------------------- ! LOCAL VARIABLES REAL(wp) :: refreal,checkreal INTEGER :: iTest TYPE(t_sol_var_MHD3D) :: Utest(3) REAL(wp),PARAMETER :: realtol=1.0E-11_wp CHARACTER(LEN=10) :: fail !=================================================================================================================================== test_called=.TRUE. ! to prevent infinite loop in this routine IF(testlevel.LE.0) RETURN IF(testdbg) THEN Fail=" DEBUG !!" ELSE Fail=" FAILED !!" END IF nTestCalled=nTestCalled+1 SWRITE(UNIT_stdOut,'(A,I4,A)')'>>>>>>>>> RUN SOL_VAR_MHD3D TEST ID',nTestCalled,' >>>>>>>>>' IF(testlevel.GE.1)THEN CALL Utest(1)%copy(sf) iTest=101 ; IF(testdbg)WRITE(*,*)'iTest=',iTest CALL Utest(1)%set_to(0.435_wp) refreal = (0.435_wp)**2 checkreal =SUM(Utest(1)%norm_2())/SUM(sf%varsize(1,:)*sf%varsize(2,:)) IF(testdbg.OR.(.NOT.( (checkreal-refreal).LT. realtol) )) THEN nfailedMsg=nfailedMsg+1 ; WRITE(testUnit,'(A,2(I4,A))') & '\n!! SOL_VAR_MHD3D TEST ID',nTestCalled ,': TEST ',iTest,Fail nfailedMsg=nfailedMsg+1 ; WRITE(testUnit,'(2(A,3I4),2(A,E11.3))') & ' varsize_s= ',sf%varsize(1,:), & ' varsize_f= ',sf%varsize(2,:), & '\n => should be ', refreal, ' : norm_2(U=0)= ',checkreal END IF !TEST CALL Utest(1)%free() END IF !testlevel >=1 IF(testlevel.GE.2)THEN CALL Utest(1)%copy(sf) CALL Utest(1)%set_to(0.5_wp) CALL Utest(2)%copy(sf) CALL Utest(2)%set_to(Utest(1)) CALL Utest(3)%copy(sf) iTest=201 ; IF(testdbg)WRITE(*,*)'iTest=',iTest CALL Utest(1)%set_to(0.8_wp) CALL Utest(2)%set_to(-0.53_wp) CALL Utest(3)%AXBY(1.1_wp,Utest(1),-5.5_wp,Utest(2)) refreal = (1.1_wp*0.8_wp-5.5_wp*(-0.53_wp))**2 checkreal=SUM(Utest(3)%norm_2())/SUM(sf%varsize(1,:)*sf%varsize(2,:)) IF(testdbg.OR.(.NOT.( (ABS(checkreal-refreal).LT. realtol) ))) THEN nfailedMsg=nfailedMsg+1 ; WRITE(testUnit,'(A,2(I4,A))') & '\n!! SOL_VAR_MHD3D TEST ID',nTestCalled ,': TEST ',iTest,Fail nfailedMsg=nfailedMsg+1 ; WRITE(testUnit,'(2(A,3I4),2(A,E11.3))') & ' varsize_s= ',sf%varsize(1,:), & ' varsize_f= ',sf%varsize(2,:), & '\n => should be ', refreal, ' : norm_2(U%AXBY)= ',checkreal END IF !TEST CALL Utest(1)%free() CALL Utest(2)%free() CALL Utest(3)%free() END IF !testlevel >=2 test_called=.FALSE. ! to prevent infinite loop in this routine END SUBROUTINE sol_var_MHD3D_test