The Open FUSION Toolkit 1.0.0-8905cc5
Modeling tools for plasma and fusion research and engineering
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
oft_tracer_lsode Type Referenceabstract

Detailed Description

Tracer implementation using LSODE as the ODE solver package.

Inheritance diagram for oft_tracer_lsode:
Inheritance graph
[legend]

Public Member Functions

procedure copy (self)
 Create a copy of this tracer.
 
procedure(tracer_copy), deferred copy (self, new)
 Create a copy of this tracer.
 
procedure(tracer_step), deferred delete (self)
 Clean-up internal storage.
 
procedure delete (self)
 Clean-up internal storage.
 
procedure(tracer_recv), deferred recv (self, proc)
 Receive tracer information from other domain.
 
procedure recv (self, proc)
 Receive tracer information from other domain.
 
procedure(tracer_send), deferred send (self, proc)
 Save tracer information for transfer.
 
procedure send (self, proc)
 Save tracer information for transfer.
 
procedure(tracer_setup), deferred setup (self, y, cell, init)
 Initialize tracer at a given point.
 
procedure setup (self, y, cell, init)
 Initialize tracer at a given point.
 
procedure(tracer_step), deferred step (self)
 Advance tracer one step.
 
procedure step (self)
 Advance tracer one step.
 

Public Attributes

class(fem_interp), pointer b => NULL()
 Interpolation operator for trace field.
 
integer(i4cell = 0
 Cell location of last/current trace point.
 
logical comm_load = .FALSE.
 Common block ready to load.
 
real(r8dt = 0.d0
 Time step for ODE solver.
 
real(r8), dimension(:), pointer dy
 Change from previous trace point.
 
real(r8), dimension(:), pointer dyp
 Previous derivative.
 
integer(i4estatus = 0
 Error status of tracer.
 
real(r8), dimension(4) f = 0.d0
 Logical cell position of last/current trace point.
 
logical initialized = .FALSE.
 Flag to indicate tracer is ready.
 
integer(i4), dimension(37) isav = 0
 Integer common block array for LSODE.
 
integer(i4), dimension(:), pointer isend => NULL()
 Integer MPI transfer array.
 
integer(i4istate = 1
 LSODE exit state.
 
integer(i4itask = 2
 ODE advance method.
 
integer(i4), dimension(:), pointer iwork => NULL()
 Integer work array for LSODE.
 
integer(i4liw = 0
 Length of integer work array for LSODE.
 
integer(i4lrw = 0
 Length of real work array for LSODE.
 
integer(i4maxsteps = 1e6
 Limit for the number of tracer steps.
 
integer(i4maxtrans = 1e2
 Limit for the number of domain transfers.
 
integer(i4mf = 10
 Method flag (10 = Adams, 22 = BDF)
 
type(multigrid_mesh), pointer ml_mesh => NULL()
 Muli-grid mesh.
 
integer(i4neq = 3
 Number of equations in ODE system (3)
 
integer(i4nisend = 39
 Number of values in isend.
 
integer(i4nrsend = 222
 Number of values in rsend.
 
integer(i4nsteps = 0
 Current number of steps.
 
integer(i4ntrans = 0
 Current number of transfers.
 
integer(i4proc = 0
 Processor location of last/current trace point.
 
integer(i4), dimension(2) rids = MPI_REQUEST_NULL
 Active MPI recieve request IDs.
 
real(r8), dimension(218) rsav = 0.d0
 Real common block array for LSODE.
 
real(r8), dimension(:), pointer rsend => NULL()
 Real MPI transfer array.
 
real(r8), dimension(:), pointer rwork => NULL()
 Real work array for LSODE.
 
integer(i4status = 0
 Status of tracer.
 
real(r8t = 0.d0
 Current time in ODE advance.
 
integer(i4), dimension(2) tids = 0
 Transfer tags for inter-processor communication.
 
real(r8tol = 1.d-4
 Tolerance for ODE solver.
 
real(r8tout = 1.d0
 Desired completion time for ODE advance.
 
real(r8), dimension(:), pointer y
 Possition of current trace point.
 

Static Public Attributes

procedure(tracer_ydot), pointer, nopass ydot => NULL()
 General ODE function.
 

Member Function/Subroutine Documentation

◆ copy() [1/2]

procedure copy ( class(oft_tracer_lsode), intent(inout)  self)

Create a copy of this tracer.

Parameters
[in,out]selfTracer object

◆ copy() [2/2]

procedure(tracer_copy), deferred copy ( class(oft_tracer), intent(in)  self,
class(oft_tracer), intent(out), pointer  new 
)
pure virtualinherited

Create a copy of this tracer.

Parameters
[in]selfTracer object
[out]newCopy of tracer object with same type, tolerances and field interpolation object

◆ delete() [1/2]

procedure(tracer_step), deferred delete ( class(oft_tracer), intent(inout)  self)
pure virtualinherited

Clean-up internal storage.

Parameters
[in,out]selfTracer object

◆ delete() [2/2]

procedure delete ( class(oft_tracer_lsode), intent(inout)  self)

Clean-up internal storage.

Parameters
[in,out]selfTracer object

◆ recv() [1/2]

procedure(tracer_recv), deferred recv ( class(oft_tracer), intent(inout)  self,
integer(i4), intent(in)  proc 
)
pure virtualinherited

Receive tracer information from other domain.

Parameters
[in,out]selfTracer object
[in]procProcessor ID to recieve tracer information from
Returns
MPI request IDs for transfer of real and integer data (2)

◆ recv() [2/2]

procedure recv ( class(oft_tracer_lsode), intent(inout)  self,
integer(i4), intent(in)  proc 
)

Receive tracer information from other domain.

This subroutine sets up non-blocking MPI recieve requests and unpacks the resulting data sent by tracer_lsode_send

Parameters
[in,out]selfTracer object
[in]procProcessor ID to receive tracer information from
Returns
MPI request IDs for transfer of real and integer data (2)

◆ send() [1/2]

procedure(tracer_send), deferred send ( class(oft_tracer), intent(inout)  self,
integer(i4), intent(in)  proc 
)
pure virtualinherited

Save tracer information for transfer.

Transfer tracer information to new domain

◆ send() [2/2]

procedure send ( class(oft_tracer_lsode), intent(inout)  self,
integer(i4), intent(in)  proc 
)

Save tracer information for transfer.

Transfer tracer information to new domain

◆ setup() [1/2]

procedure(tracer_setup), deferred setup ( class(oft_tracer), intent(inout)  self,
real(r8), dimension(:), intent(in)  y,
integer(i4), intent(in), optional  cell,
logical, intent(in), optional  init 
)
pure virtualinherited

Initialize tracer at a given point.

Parameters
[in,out]selfTracer object
[in]yNew start point [3]
[in]cellGuess cell for use in mesh_findcell (optional)
[in]initFlag indicating tracer is starting a new trace and all counts should be set to zero (optional)

◆ setup() [2/2]

procedure setup ( class(oft_tracer_lsode), intent(inout)  self,
real(r8), dimension(:), intent(in)  y,
integer(i4), intent(in), optional  cell,
logical, intent(in), optional  init 
)

Initialize tracer at a given point.

Parameters
[in,out]selfTracer object
[in]yNew start point [3]
[in]cellGuess cell for use in mesh_findcell (optional)
[in]initFlag indicating tracer is starting a new trace and all counts should be set to zero (optional)

◆ step() [1/2]

procedure(tracer_step), deferred step ( class(oft_tracer), intent(inout)  self)
pure virtualinherited

Advance tracer one step.

Parameters
[in,out]selfTracer object

◆ step() [2/2]

procedure step ( class(oft_tracer_lsode), intent(inout)  self)

Advance tracer one step.

Parameters
[in,out]selfTracer object

Member Data Documentation

◆ b

class(fem_interp), pointer b => NULL()
inherited

Interpolation operator for trace field.

◆ cell

integer(i4) cell = 0
inherited

Cell location of last/current trace point.

◆ comm_load

logical comm_load = .FALSE.

Common block ready to load.

◆ dt

real(r8) dt = 0.d0
inherited

Time step for ODE solver.

◆ dy

real(r8), dimension(:), pointer dy
inherited

Change from previous trace point.

◆ dyp

real(r8), dimension(:), pointer dyp
inherited

Previous derivative.

◆ estatus

integer(i4) estatus = 0
inherited

Error status of tracer.

◆ f

real(r8), dimension(4) f = 0.d0
inherited

Logical cell position of last/current trace point.

◆ initialized

logical initialized = .FALSE.
inherited

Flag to indicate tracer is ready.

◆ isav

integer(i4), dimension(37) isav = 0

Integer common block array for LSODE.

◆ isend

integer(i4), dimension(:), pointer isend => NULL()

Integer MPI transfer array.

◆ istate

integer(i4) istate = 1

LSODE exit state.

◆ itask

integer(i4) itask = 2

ODE advance method.

◆ iwork

integer(i4), dimension(:), pointer iwork => NULL()

Integer work array for LSODE.

◆ liw

integer(i4) liw = 0

Length of integer work array for LSODE.

◆ lrw

integer(i4) lrw = 0

Length of real work array for LSODE.

◆ maxsteps

integer(i4) maxsteps = 1e6
inherited

Limit for the number of tracer steps.

◆ maxtrans

integer(i4) maxtrans = 1e2
inherited

Limit for the number of domain transfers.

◆ mf

integer(i4) mf = 10

Method flag (10 = Adams, 22 = BDF)

◆ ml_mesh

type(multigrid_mesh), pointer ml_mesh => NULL()
inherited

Muli-grid mesh.

◆ neq

integer(i4) neq = 3
inherited

Number of equations in ODE system (3)

◆ nisend

integer(i4) nisend = 39

Number of values in isend.

◆ nrsend

integer(i4) nrsend = 222

Number of values in rsend.

◆ nsteps

integer(i4) nsteps = 0
inherited

Current number of steps.

◆ ntrans

integer(i4) ntrans = 0
inherited

Current number of transfers.

◆ proc

integer(i4) proc = 0
inherited

Processor location of last/current trace point.

◆ rids

integer(i4), dimension(2) rids = MPI_REQUEST_NULL
inherited

Active MPI recieve request IDs.

◆ rsav

real(r8), dimension(218) rsav = 0.d0

Real common block array for LSODE.

◆ rsend

real(r8), dimension(:), pointer rsend => NULL()

Real MPI transfer array.

◆ rwork

real(r8), dimension(:), pointer rwork => NULL()

Real work array for LSODE.

◆ status

integer(i4) status = 0
inherited

Status of tracer.

◆ t

real(r8) t = 0.d0

Current time in ODE advance.

◆ tids

integer(i4), dimension(2) tids = 0
inherited

Transfer tags for inter-processor communication.

◆ tol

real(r8) tol = 1.d-4
inherited

Tolerance for ODE solver.

◆ tout

real(r8) tout = 1.d0

Desired completion time for ODE advance.

◆ y

real(r8), dimension(:), pointer y
inherited

Possition of current trace point.

◆ ydot

procedure(tracer_ydot), pointer, nopass ydot => NULL()
staticinherited

General ODE function.


The documentation for this type was generated from the following file: