11#include "scaleFElib.h"
33 character(len=H_SHORT),
private :: name
34 logical,
private :: is_activated = .false.
38 procedure(modelcomponent_calc_tendency),
deferred,
public :: calc_tendency
39 procedure(modelcomponent_update),
deferred,
public :: update
40 procedure(modelcomponent_finalize),
deferred,
public :: finalize
42 procedure,
public :: modelcomponent_init
43 procedure,
public :: isactivated => modelcomponent_isactivated
44 procedure,
public :: getcomponentname => modelcomponent_getcompname
53 subroutine modelcomponent_calc_tendency( this, force )
56 logical,
intent(in) :: force
57 end subroutine modelcomponent_calc_tendency
59 subroutine modelcomponent_update( this )
62 end subroutine modelcomponent_update
64 subroutine modelcomponent_finalize( this )
67 end subroutine modelcomponent_finalize
86 subroutine modelcomponent_init( this, name, is_activated )
90 character(len=*),
intent(in) :: name
91 logical,
intent(in) :: is_activated
95 this%is_activated = is_activated
98 end subroutine modelcomponent_init
101 function modelcomponent_isactivated( this )
result( is_activated )
105 logical :: is_activated
108 is_activated = this%is_activated
110 end function modelcomponent_isactivated
113 function modelcomponent_getcompname( this )
result( model_name )
117 character(len=H_SHORT) :: model_name
120 model_name = this%name
122 end function modelcomponent_getcompname
124end module scale_model_component
FElib / model framework / model component.