Initialize Module
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_functional_mhd3d), | intent(inout) | :: | sf |
SUBROUTINE InitSolutionMHD3D(sf) ! MODULES USE MODgvec_MHD3D_Vars , ONLY: which_init,U,F,init_LA,boundary_perturb USE MODgvec_Restart_vars , ONLY: doRestart,RestartFile USE MODgvec_Restart , ONLY: RestartFromState USE MODgvec_Restart , ONLY: WriteState USE MODgvec_MHD3D_EvalFunc , ONLY: InitProfilesGP,EvalEnergy,EvalForce USE MODgvec_Analyze , ONLY: Analyze USE MODgvec_ReadInTools , ONLY: GETLOGICAL USE MODgvec_MPI , ONLY: par_Bcast,par_barrier IMPLICIT NONE !----------------------------------------------------------------------------------------------------------------------------------- ! INPUT VARIABLES CLASS(t_functional_mhd3d), INTENT(INOUT) :: sf !----------------------------------------------------------------------------------------------------------------------------------- ! OUTPUT VARIABLES !----------------------------------------------------------------------------------------------------------------------------------- ! LOCAL VARIABLES INTEGER :: JacCheck !=================================================================================================================================== CALL par_barrier(beforeScreenOut=" INITIALIZE SOLUTION...",afterScreenOut=" ...") IF(MPIroot) THEN IF(doRestart)THEN WRITE(UNIT_stdOut,'(4X,A)')'... restarting from file ... ' CALL RestartFromState(RestartFile,U(0)) CALL InitSolution(U(0),-1) ! (re-)apply BC and init LA (if init_LA is true) ELSE CALL InitSolution(U(0),which_init) END IF IF(boundary_perturb)THEN CALL AddBoundaryPerturbation(U(0),0.3_wp) END IF !boundary_perturb END IF !MPIroot CALL par_Bcast(U(0)%X1,0) CALL par_Bcast(U(0)%X2,0) IF(init_LA) THEN CALL Init_LA_From_Solution(U(0)) !BCast inside ELSE CALL par_Bcast(U(0)%LA,0) END IF CALL U(-1)%set_to(U(0)) JacCheck=2 CALL InitProfilesGP() !evaluate profiles once at Gauss Points (on MPIroot + BCast) U(0)%W_MHD3D=EvalEnergy(U(0),.TRUE.,JacCheck) IF(JacCheck.EQ.-1)THEN CALL Analyze(0) CALL abort(__STAMP__,& "NEGATIVE JACOBIAN FOUND AFTER INITIALIZATION!") END IF CALL WriteState(U(0),0) CALL EvalForce(U(0),.FALSE.,JacCheck, F(0)) SWRITE(UNIT_stdOut,'(8x,A,3E11.4)')'|Force|= ',SQRT(F(0)%norm_2()) CALL Analyze(0) CALL par_barrier(afterScreenOut=" ...DONE") SWRITE(UNIT_stdOut,fmt_sep) END SUBROUTINE InitSolutionMHD3D