StartLogging_MHD3D Subroutine

public subroutine StartLogging_MHD3D(sf)

Uses

  • proc~~startlogging_mhd3d~~UsesGraph proc~startlogging_mhd3d t_minimizer_mhd3d%StartLogging_MHD3D MODgvec_MHD3D_visu MODgvec_MHD3D_visu proc~startlogging_mhd3d->MODgvec_MHD3D_visu module~modgvec_globals MODgvec_Globals proc~startlogging_mhd3d->module~modgvec_globals module~modgvec_output_vars MODgvec_Output_Vars proc~startlogging_mhd3d->module~modgvec_output_vars iso_fortran_env iso_fortran_env module~modgvec_globals->iso_fortran_env module~modgvec_output_vars->module~modgvec_globals

Initialization of the Logging

NOTE: Opens and writes to a csv file named in the style of logMinimizer_*

Type Bound

t_minimizer_mhd3d

Arguments

Type IntentOptional Attributes Name
class(t_minimizer_mhd3d), intent(inout) :: sf

minimizer


Calls

proc~~startlogging_mhd3d~~CallsGraph proc~startlogging_mhd3d t_minimizer_mhd3d%StartLogging_MHD3D checkpos checkpos proc~startlogging_mhd3d->checkpos interface~getfreeunit GETFREEUNIT proc~startlogging_mhd3d->interface~getfreeunit vnorm vnorm proc~startlogging_mhd3d->vnorm interface~getfreeunit->interface~getfreeunit

Called by

proc~~startlogging_mhd3d~~CalledByGraph proc~startlogging_mhd3d t_minimizer_mhd3d%StartLogging_MHD3D proc~minimizemhd3d_descent t_minimizer_mhd3d%MinimizeMHD3D_descent proc~minimizemhd3d_descent->proc~startlogging_mhd3d proc~minimizemhd3d t_functional_mhd3d%MinimizeMHD3D proc~minimizemhd3d->proc~minimizemhd3d_descent proc~minimize minimize proc~minimize->proc~minimizemhd3d proc~rungvec rungvec proc~rungvec->proc~minimizemhd3d proc~start_rungvec start_rungvec proc~start_rungvec->proc~rungvec program~gvec GVEC program~gvec->proc~rungvec

Source Code

    SUBROUTINE StartLogging_MHD3D(sf)
        ! MODULES
        USE MODgvec_Globals,     ONLY: GETFREEUNIT
        USE MODgvec_Output_Vars, ONLY: ProjectName,outputLevel
        USE MODgvec_MHD3D_visu,  ONLY: checkPos
        IMPLICIT NONE
        !-------------------------------------------------------------------------------------------------------------------------------
        ! INPUT VARIABLES
        CLASS(t_minimizer_mhd3d), INTENT(INOUT) :: sf !! minimizer
        !-------------------------------------------------------------------------------------------------------------------------------
        ! OUTPUT VARIABLES
        !-------------------------------------------------------------------------------------------------------------------------------
        ! LOCAL VARIABLES
        CHARACTER(LEN=255)  :: fileString !! filename
        INTEGER             :: TimeArray(8),iLogDat
        REAL(wp)            :: Pos(2,2),W_MHD3D
        INTEGER,PARAMETER   :: nLogDat=25
        REAL(wp)            :: LogDat(1:nLogDat)
        !=================================================================================================================================
        IF(.NOT.MPIroot) RETURN
        __PERFON('log_output')
        ASSOCIATE(vars=>sf%vars)
            W_MHD3D=vars%dofs(0)%W_MHD3D
            CALL DATE_AND_TIME(values=TimeArray) ! get System time
            WRITE(UNIT_stdOut,'(A,E11.4,A)')'%%%%%  START ITERATION, dt= ',vars%dt, '  %%%%%%%%%%%%%%%%%'
            WRITE(UNIT_stdOut,'(A,I4.2,"-",I2.2,"-",I2.2,1X,I2.2,":",I2.2,":",I2.2)') &
                            '%% Sys date : ',timeArray(1:3),timeArray(5:7)
            WRITE(UNIT_stdOut,'(A,3E21.14)') &
                    '%% dU = |Force|= ',vars%Fnorm(1:3)
            SELECT TYPE(vars)
            TYPE IS (t_accelerated_gradient_descent_vars)
                WRITE(UNIT_stdOut,'(A,E11.4,A,3E11.4)') &
                    '%% accel.GD: tau= ',vars%tau_bar,' |vel|= ',vars%Vnorm(1:3)
            END SELECT

            WRITE(UNIT_stdOut,'(40(" -"))')
            !------------------------------------
            vars%StartTimeArray=TimeArray !save first time stamp

            vars%logUnit=GETFREEUNIT()
            WRITE(FileString,'("logMinimizer_",A,"_",I4.4,".csv")')TRIM(ProjectName),outputLevel
            OPEN(UNIT     = vars%logUnit       ,&
                FILE     = TRIM(FileString) ,&
                STATUS   = 'REPLACE'   ,&
                ACCESS   = 'SEQUENTIAL' )
            !header
            iLogDat=0
            WRITE(vars%logUnit,'(A)',ADVANCE="NO")'"#iterations","runtime(s)","min_dt","max_dt"'
            WRITE(vars%logUnit,'(A)',ADVANCE="NO")',"W_MHD3D","min_dW","max_dW","sum_dW"'
            WRITE(vars%logUnit,'(A)',ADVANCE="NO")',"normF_X1","normF_X2","normF_LA"'
            LogDat(ilogDat+1:iLogDat+11)=(/0.0_wp,0.0_wp,vars%dt,vars%dt,W_MHD3D,0.0_wp,0.0_wp,0.0_wp,vars%Fnorm(1:3)/)
            iLogDat=11
            SELECT TYPE(vars)
            TYPE IS (t_accelerated_gradient_descent_vars)
                WRITE(vars%logUnit,'(A)',ADVANCE="NO")',"tau","normV_X1","normV_X2","normV_LA"'
                LogDat(ilogDat+1:iLogDat+4)=(/vars%tau_bar,vars%Vnorm(1:3)/)
                iLogDat=iLogDat+4
            END SELECT
            IF(vars%doCheckDistance) THEN
                WRITE(vars%logUnit,'(A)',ADVANCE="NO")',"max_Dist","avg_Dist"'
                LogDat(iLogDat+1:iLogDat+2)=(/0.0_wp,0.0_wp/)
                iLogDat=iLogDat+2
            END IF!doCheckDistance
            IF(vars%doCheckAxis) THEN
                WRITE(vars%logUnit,'(A)',ADVANCE="NO")',"X1_axis_0","X2_axis_0","X1_axis_1","X2_axis_1"'
                CALL CheckPos(vars%dofs(0),0.0_wp,2,Pos)
                LogDat(iLogDat+1:iLogDat+4)=RESHAPE(Pos,(/4/))
                iLogDat=iLogDat+4
            END IF!doCheckAxis

            WRITE(vars%logUnit,'(A)')' '
            !first data line
            WRITE(vars%logUnit,'(*(e23.15,:,","))') logDat(1:iLogDat)
            vars%logger_is_initialized = .TRUE.
        END ASSOCIATE !vars
        __PERFOFF('log_output')
    END SUBROUTINE StartLogging_MHD3D