MODgvec_MHD3D_minimize Module

Module MHD3D minimize

CONTAINS minimizer for MHD3D functional


Uses

  • module~~modgvec_mhd3d_minimize~~UsesGraph module~modgvec_mhd3d_minimize MODgvec_MHD3D_minimize module~modgvec_globals MODgvec_Globals module~modgvec_mhd3d_minimize->module~modgvec_globals module~modgvec_sol_var_mhd3d MODgvec_sol_var_MHD3D module~modgvec_mhd3d_minimize->module~modgvec_sol_var_mhd3d iso_fortran_env iso_fortran_env module~modgvec_globals->iso_fortran_env module~modgvec_sol_var_mhd3d->module~modgvec_globals module~modgvec_c_sol_var MODgvec_c_sol_var module~modgvec_sol_var_mhd3d->module~modgvec_c_sol_var module~modgvec_c_sol_var->module~modgvec_globals

Used by

  • module~~modgvec_mhd3d_minimize~~UsedByGraph module~modgvec_mhd3d_minimize MODgvec_MHD3D_minimize module~modgvec_mhd3d MODgvec_MHD3D module~modgvec_mhd3d->module~modgvec_mhd3d_minimize proc~initmhd3d t_functional_mhd3d%InitMHD3D proc~initmhd3d->module~modgvec_mhd3d_minimize proc~minimizemhd3d t_functional_mhd3d%MinimizeMHD3D proc~minimizemhd3d->module~modgvec_mhd3d_minimize module~modgvec_py_state MODgvec_py_state module~modgvec_py_state->module~modgvec_mhd3d module~modgvec_rungvec MODgvec_rungvec module~modgvec_rungvec->module~modgvec_mhd3d program~gvec_post GVEC_POST program~gvec_post->module~modgvec_mhd3d proc~cleanup cleanup proc~cleanup->module~modgvec_rungvec proc~start_rungvec start_rungvec proc~start_rungvec->module~modgvec_rungvec program~gvec GVEC program~gvec->module~modgvec_rungvec

Derived Types

type, public, ABSTRACT ::  a_minimizer_vars

Components

Type Visibility Attributes Name Initial
character(len=40), public :: MinimizerType

defines the minimization algorithm: 0 = Gradient-Descent, 10 = Accelerated Gradient-Descent

logical, public :: restart_iter
logical, public :: logger_is_initialized
integer, public :: JacCheck

switch for restarts, if detJ<0 JacCheck<=-1

integer, public :: iter
integer, public :: nStepDecreased
integer, public :: nSkip_Jac
integer, public :: nSkip_dw
integer, public :: lastoutputIter
integer, public :: logiter_ramp
integer, public :: logscreen
real(kind=wp), public :: dt
real(kind=wp), public :: deltaW
real(kind=wp), public :: dW_allowed
real(kind=wp), public :: t_pseudo
real(kind=wp), public :: Fnorm(3)
real(kind=wp), public :: Fnorm0(3)
real(kind=wp), public :: Fnorm_old(3)
real(kind=wp), public :: W_MHD3D_0
real(kind=wp), public :: min_dt_out
real(kind=wp), public :: max_dt_out
real(kind=wp), public :: min_dw_out
real(kind=wp), public :: max_dw_out
real(kind=wp), public :: sum_dW_out
logical, public :: DoCheckDistance
logical, public :: DoCheckAxis
integer, public :: outputIter
integer, public :: nlogScreen
integer, public :: logIter
integer, public :: logUnit
integer, public :: StartTimeArray(8)
type(t_sol_var_MHD3D), public, ALLOCATABLE :: dofs(:)

degrees of freedom at levels (k-1),(k),(k+1)

type(t_sol_var_MHD3D), public, ALLOCATABLE :: force(:)

force

type(t_sol_var_MHD3D), public, ALLOCATABLE :: temp_dofs(:)

temporary for update

type, public, extends(a_minimizer_vars) ::  t_gradient_descent_vars

State variables for a Gradient descent minimizer

Components

Type Visibility Attributes Name Initial
character(len=40), public :: MinimizerType

defines the minimization algorithm: 0 = Gradient-Descent, 10 = Accelerated Gradient-Descent

logical, public :: restart_iter
logical, public :: logger_is_initialized
integer, public :: JacCheck

switch for restarts, if detJ<0 JacCheck<=-1

integer, public :: iter
integer, public :: nStepDecreased
integer, public :: nSkip_Jac
integer, public :: nSkip_dw
integer, public :: lastoutputIter
integer, public :: logiter_ramp
integer, public :: logscreen
real(kind=wp), public :: dt
real(kind=wp), public :: deltaW
real(kind=wp), public :: dW_allowed
real(kind=wp), public :: t_pseudo
real(kind=wp), public :: Fnorm(3)
real(kind=wp), public :: Fnorm0(3)
real(kind=wp), public :: Fnorm_old(3)
real(kind=wp), public :: W_MHD3D_0
real(kind=wp), public :: min_dt_out
real(kind=wp), public :: max_dt_out
real(kind=wp), public :: min_dw_out
real(kind=wp), public :: max_dw_out
real(kind=wp), public :: sum_dW_out
logical, public :: DoCheckDistance
logical, public :: DoCheckAxis
integer, public :: outputIter
integer, public :: nlogScreen
integer, public :: logIter
integer, public :: logUnit
integer, public :: StartTimeArray(8)
type(t_sol_var_MHD3D), public, ALLOCATABLE :: dofs(:)

degrees of freedom at levels (k-1),(k),(k+1)

type(t_sol_var_MHD3D), public, ALLOCATABLE :: force(:)

force

type(t_sol_var_MHD3D), public, ALLOCATABLE :: temp_dofs(:)

temporary for update

State variables for an Accelerated Gradient-Descent descent minimizer

Components

Type Visibility Attributes Name Initial
character(len=40), public :: MinimizerType

defines the minimization algorithm: 0 = Gradient-Descent, 10 = Accelerated Gradient-Descent

logical, public :: restart_iter
logical, public :: logger_is_initialized
integer, public :: JacCheck

switch for restarts, if detJ<0 JacCheck<=-1

integer, public :: iter
integer, public :: nStepDecreased
integer, public :: nSkip_Jac
integer, public :: nSkip_dw
integer, public :: lastoutputIter
integer, public :: logiter_ramp
integer, public :: logscreen
real(kind=wp), public :: dt
real(kind=wp), public :: deltaW
real(kind=wp), public :: dW_allowed
real(kind=wp), public :: t_pseudo
real(kind=wp), public :: Fnorm(3)
real(kind=wp), public :: Fnorm0(3)
real(kind=wp), public :: Fnorm_old(3)
real(kind=wp), public :: W_MHD3D_0
real(kind=wp), public :: min_dt_out
real(kind=wp), public :: max_dt_out
real(kind=wp), public :: min_dw_out
real(kind=wp), public :: max_dw_out
real(kind=wp), public :: sum_dW_out
logical, public :: DoCheckDistance
logical, public :: DoCheckAxis
integer, public :: outputIter
integer, public :: nlogScreen
integer, public :: logIter
integer, public :: logUnit
integer, public :: StartTimeArray(8)
type(t_sol_var_MHD3D), public, ALLOCATABLE :: dofs(:)

degrees of freedom at levels (k-1),(k),(k+1)

type(t_sol_var_MHD3D), public, ALLOCATABLE :: force(:)

force

type(t_sol_var_MHD3D), public, ALLOCATABLE :: temp_dofs(:)

temporary for update

real(kind=wp), public :: Vnorm(3)
real(kind=wp), public, ALLOCATABLE :: tau(:)
integer, public :: ndamp
real(kind=wp), public :: tau_bar
type(t_sol_var_MHD3D), public, ALLOCATABLE :: velocity(:)

'velocity' in minimizer

type, public ::  t_minimizer_mhd3d

Minimizer object

Components

Type Visibility Attributes Name Initial
logical, public :: initialized

whether the object is initialized or ot

integer, public :: MinType

gradient descent = 0, accelerated gradient descent = 10

class(a_minimizer_vars), public, ALLOCATABLE :: vars

! depend on the MinimizerType

Type-Bound Procedures

procedure, public :: minimize => MinimizeMHD3D_descent
procedure, public :: reset => MinimizeMHD3d_ResetDescent
procedure, public :: StartLogging => StartLogging_MHD3D
procedure, public :: Logging => Logging_MHD3D
procedure, public :: free => Free_minimizer

Subroutines

public subroutine new_minimizer(sf, varsize_in, dt_initial, MinType_in, dW_allowed_in, DoCheckDistance, DoCheckAxis, outputIter, nlogScreen, logIter)

Initialization method for a minimizer

Arguments

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

allocatable minimizer object

integer, intent(in) :: varsize_in(:)

size of the dofs

real(kind=wp), intent(in) :: dt_initial

initial stepsize for the minimization

integer, intent(in) :: MinType_in

gradient descent = 0, accelerated gradient descent = 10

real(kind=wp), intent(in) :: dW_allowed_in

for minimizer, accept step if dW

logical, intent(in) :: DoCheckDistance

TRUE: check distance between solutions of two log output states

logical, intent(in) :: DoCheckAxis

TRUE: check axis position

integer, intent(in) :: outputIter

number of iterations after which output files are written

integer, intent(in) :: nlogScreen

number of log outputs after a screen output is written

integer, intent(in) :: logIter

number of iterations after which a screen log is written

public subroutine MinimizeMHD3d_ResetDescent(sf)

Reset the minimizer state

Read more…

Arguments

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

minimizer

public subroutine StartLogging_MHD3D(sf)

Initialization of the Logging

Read more…

Arguments

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

minimizer

public subroutine Logging_MHD3D(sf, quiet)

Log the current minimizer and functional state

Read more…

Arguments

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

public subroutine MinimizeMHD3D_descent(sf, abstol, maxIter_in)

Core minimization routine

Read more…

Arguments

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

minimizer

real(kind=wp), intent(in) :: abstol

tolerance on the forces. If reached terminaters the minimization

integer, intent(in) :: maxIter_in

maximum number of iterations after which the iterations are terminated

public subroutine Free_minimizer(sf)

Finalization method for a minimizer

Read more…

Arguments

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

minimizer