c_functional.f90 Source File


This file depends on

sourcefile~~c_functional.f90~~EfferentGraph sourcefile~c_functional.f90 c_functional.f90 sourcefile~globals.f90 globals.f90 sourcefile~c_functional.f90->sourcefile~globals.f90

Files dependent on this one

sourcefile~~c_functional.f90~~AfferentGraph sourcefile~c_functional.f90 c_functional.f90 sourcefile~functional.f90 functional.f90 sourcefile~functional.f90->sourcefile~c_functional.f90 sourcefile~mhd3d.f90 mhd3d.f90 sourcefile~functional.f90->sourcefile~mhd3d.f90 sourcefile~mhd3d.f90->sourcefile~c_functional.f90 sourcefile~state.f90 state.f90 sourcefile~state.f90->sourcefile~c_functional.f90 sourcefile~state.f90->sourcefile~functional.f90 sourcefile~gvec_post.f90 gvec_post.f90 sourcefile~gvec_post.f90->sourcefile~functional.f90 sourcefile~rungvec.f90 rungvec.f90 sourcefile~rungvec.f90->sourcefile~functional.f90 sourcefile~gvec.f90 gvec.f90 sourcefile~gvec.f90->sourcefile~rungvec.f90 sourcefile~run.f90 run.f90 sourcefile~run.f90->sourcefile~rungvec.f90

Source Code

!===================================================================================================================================
! Copyright (c) 2025 GVEC Contributors, Max Planck Institute for Plasma Physics
! License: MIT
!===================================================================================================================================
#include "defines.h"

!===================================================================================================================================
!>
!!# Module ** c_functional **
!!
!! contains the type that points to the routines of one chosen functional
!!
!===================================================================================================================================
MODULE MODgvec_c_functional
! MODULES
USE MODgvec_Globals    ,ONLY:wp,Unit_stdOut,abort
IMPLICIT NONE

PRIVATE
PUBLIC t_functional
!-----------------------------------------------------------------------------------------------------------------------------------
! TYPES
TYPE, ABSTRACT :: c_functional
  CONTAINS
    PROCEDURE(i_sub_functional     ),DEFERRED :: init
    PROCEDURE(i_sub_functional     ),DEFERRED :: initSolution
    PROCEDURE(i_sub_functional_min ),DEFERRED :: minimize
    PROCEDURE(i_sub_functional     ),DEFERRED :: free

END TYPE c_functional

ABSTRACT INTERFACE
  SUBROUTINE i_sub_functional( sf)
    IMPORT c_functional
    CLASS(c_functional), INTENT(INOUT) :: sf
  END SUBROUTINE i_sub_functional

  SUBROUTINE i_sub_functional_min( sf)
    IMPORT wp,c_functional
    CLASS(c_functional), INTENT(INOUT) :: sf
  END SUBROUTINE i_sub_functional_min

END INTERFACE


TYPE,ABSTRACT,EXTENDS(c_functional) :: t_functional
  !---------------------------------------------------------------------------------------------------------------------------------
  !input parameters
  INTEGER              :: which_functional         !! points to functional (1: MHD3D)
  !---------------------------------------------------------------------------------------------------------------------------------

END TYPE t_functional

!===================================================================================================================================


END MODULE MODgvec_c_functional