Free_minimizer Subroutine

public subroutine Free_minimizer(sf)

Finalization method for a minimizer

NOTE: Also closes the logging file

Type Bound

t_minimizer_mhd3d

Arguments

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

minimizer


Source Code

    SUBROUTINE Free_minimizer(sf)
        ! MODULES
        !-------------------------------------------------------------------------------------------------------------------------------
        ! INPUT VARIABLES
        CLASS(t_minimizer_mhd3d), INTENT(INOUT) :: sf !! minimizer
        !-------------------------------------------------------------------------------------------------------------------------------
        ! OUTPUT VARIABLES
        !-------------------------------------------------------------------------------------------------------------------------------
        ! LOCAL VARIABLES
        INTEGER :: i !! iteration variable
        !===============================================================================================================================
        ASSOCIATE(vars=>sf%vars)
            CLOSE(vars%logUnit)
            DO i=-1,1
                IF(ALLOCATED(vars%dofs)) CALL vars%dofs(i)%free()
                IF(ALLOCATED(vars%temp_dofs)) CALL vars%temp_dofs(i)%free()
            END DO
            DO i=-1,0
                IF(ALLOCATED(vars%force)) CALL vars%force(i)%free()
            END DO

            SDEALLOCATE(vars%dofs)
            SDEALLOCATE(vars%temp_dofs)
            SDEALLOCATE(vars%force)
            SELECT TYPE(vars)
            TYPE IS(t_accelerated_gradient_descent_vars)
                DO i=-1,1
                    IF(ALLOCATED(vars%velocity)) CALL vars%velocity(i)%free()
                END DO
                SDEALLOCATE(vars%velocity)
                SDEALLOCATE(vars%tau)
            END SELECT !Type
        END ASSOCIATE !vars
        SDEALLOCATE(sf%vars)
    END SUBROUTINE Free_minimizer