term_generator_abstract_class Module

Houses abstract TermGenerator object, used to automatically generate and add terms to models


Used by


Interfaces

interface

  • private pure module function getNumImplicitTerms(this) result(numTerms)

    Get size of this%implicitTerms

    Arguments

    Type IntentOptional Attributes Name
    class(TermGenerator), intent(in) :: this

    Return Value integer(kind=ik)

interface

  • private pure module function getNumGeneralTerms(this) result(numTerms)

    Get size of this%generalTerms

    Arguments

    Type IntentOptional Attributes Name
    class(TermGenerator), intent(in) :: this

    Return Value integer(kind=ik)

interface

  • private module subroutine setImplicitTerms(this, impTerms)

    Move allocation of impTerms to this%implicitTerms

    Arguments

    Type IntentOptional Attributes Name
    class(TermGenerator), intent(inout) :: this
    type(MatTermContainer), intent(inout), allocatable, dimension(:) :: impTerms

interface

  • private module subroutine setGeneralTerms(this, genTerms)

    Move allocation of genTerms to this%generalTerms

    Arguments

    Type IntentOptional Attributes Name
    class(TermGenerator), intent(inout) :: this
    type(TermContainer), intent(inout), allocatable, dimension(:) :: genTerms

interface

  • private module subroutine setGeneratorPrefix(this, prefix)

    Set prefix for added term names

    Arguments

    Type IntentOptional Attributes Name
    class(TermGenerator), intent(inout) :: this
    character(len=*), intent(in) :: prefix

interface

  • private module subroutine moveTerms(this, modelObj, impTermImpGroups, impTermGenGroups, genTermGroups)

    Move terms to modelObj

    Arguments

    Type IntentOptional Attributes Name
    class(TermGenerator), intent(inout) :: this
    class(Model), intent(inout) :: modelObj
    type(IntArray), intent(in), optional, dimension(:) :: impTermImpGroups
    type(IntArray), intent(in), optional, dimension(:) :: impTermGenGroups
    type(IntArray), intent(in), optional, dimension(:) :: genTermGroups

Abstract Interfaces

abstract interface

  • private subroutine generateTerms(this, mbData)

    Abstract routine for generating terms

    Arguments

    Type IntentOptional Attributes Name
    class(TermGenerator), intent(inout) :: this
    class(ModelboundData), intent(in), optional :: mbData

Derived Types

type, public ::  TermGeneratorContainer

Container object for term generators

Components

Type Visibility Attributes Name Initial
class(TermGenerator), public, allocatable :: entry

type, public, abstract, extends(Object) ::  TermGenerator

Abstract TermGenerator object, responsible for automatic generation of terms

Components

Type Visibility Attributes Name Initial
logical, public :: userDefined = .false.

True only if user explicitly sets it to true

type(MatTermContainer), private, allocatable, dimension(:) :: implicitTerms
type(TermContainer), private, allocatable, dimension(:) :: generalTerms
character(len=:), private, allocatable :: generatorPrefix

Type-Bound Procedures

procedure, public :: isDefined => isDefinedObject
procedure, public :: makeDefined => makeDefinedObject
procedure, public :: makeUndefined => makeUndefinedObject
procedure, public :: setImplicitTerms
procedure, public :: setGeneralTerms
procedure, public :: setGeneratorPrefix
procedure, public :: getNumImplicitTerms
procedure, public :: getNumGeneralTerms
procedure, public :: moveTerms
procedure(generateTerms), public, deferred :: generate