The Open FUSION Toolkit 1.0.0-beta6
Modeling tools for plasma and fusion research and engineering
Loading...
Searching...
No Matches
tracing.F90 File Reference
#include "local.h"

Data Types

type  oft_tracer
 Abstract class for OFT tracers. More...
type  oft_tracer_euler
 Tracer implementation using an Euler method. More...
type  oft_tracer_lsode
 Tracer implementation using LSODE as the ODE solver package. More...
type  oft_tracer_ptr
 Tracer pointer. More...
interface  tracer_copy
 Abstract interface for creating bare copies of a tracer object. More...
interface  tracer_recv
 Abstract interface for recieving tracer information from a different domain. More...
interface  tracer_send
 Abstract interface for sending tracer information to a new domain. More...
interface  tracer_setup
 Abstract interface for tracer setup with a new start point. More...
interface  tracer_step
 Abstract interface for advancing a tracer by one step. More...
interface  tracer_ydot
 Abstract interface for general tracer ODE function. More...

Modules

module  tracing
 Tracing implementation for the Open FUSION Toolkit.

Functions/Subroutines

subroutine approx_angle_change (b1, b2, r1, r2, dpol, dtor)
subroutine create_tracer (tracer, type)
 Create tracer object.
subroutine set_timeout (new_timeout)
 Set timeout for tracing calls.
character(len=40) function termination_reason (status_flag)
 Get string describing tracer exit reason.
subroutine tracer_euler_copy (self, new)
 Create a bare copy of the LSODE tracer object.
subroutine tracer_euler_delete (self)
 Delete internal storage and reset counters.
type(mpi_request) integer(i4) function, dimension(2) tracer_euler_recv (self, proc)
 Recieve tracer information from a different domain.
subroutine tracer_euler_save (self)
 Advancing tracer by one step using LSODE.
type(mpi_request) integer(i4) function, dimension(2) tracer_euler_send (self, proc)
 Send tracer information to a new domain.
subroutine tracer_euler_setup (self, y, cell, init)
 Setup a EULER tracer with a new starting point.
subroutine tracer_euler_step (self)
 Advancing tracer by one step using EULER.
logical function tracer_lsode_cast (self, source)
 Cast a tracer object to a oft_tracer_lsode.
subroutine tracer_lsode_copy (self, new)
 Create a bare copy of the LSODE tracer object.
subroutine tracer_lsode_delete (self)
 Delete internal storage and reset counters.
subroutine tracer_lsode_eval_b (neq, t, y, ydot)
 Field evaluation callback used by dlsode.
type(mpi_request) integer(i4) function, dimension(2) tracer_lsode_recv (self, proc)
 Recieve tracer information from a different domain.
subroutine tracer_lsode_save (self)
 Save LSODE common block data to arrays.
type(mpi_request) integer(i4) function, dimension(2) tracer_lsode_send (self, proc)
 Send tracer information to a new domain.
subroutine tracer_lsode_setup (self, y, cell, init)
 Setup a LSODE tracer with a new starting point.
subroutine tracer_lsode_step (self)
 Advancing tracer by one step using LSODE.
subroutine tracing_line (tracer, pt, filename)
 Advance tracer from a single point and save field line to specified file.
subroutine tracing_poincare (tracer, pts, n, filename, offset, pcoord, qfile)
 Advance a group of tracers while accumulating crossing of the yz-plane into a poincare section.
subroutine tracing_poincare_master (tracers, n)
 Manage tracer communication and status for parallel tracing.
subroutine tracing_poincare_worker (tracers, n, ibuff, outbuff, nbuff, nloc, xcross, icoord, qbuff)
 Advance a group of tracers on the local domain while accumulating crossings of the yz-plane into a buffer array.

Variables

class(oft_tracer), pointer active_tracer => NULL()
 Active tracer for current thread.
integer(i4), parameter, private nlocpts = 1E6
 Number of points in processor buffers.
real(r8), parameter, private offmesh_tol = 1.d-2
 Tolerance for cell logical coordinate test.
logical, private test_timeout = .FALSE.
 Timeout has passed?
real(r8), private timeout = 60.d0
 Timeout for tracing calls (seconds).
type(oft_timer), private timeout_timer
 Timer for timeout tests.
integer(i4), parameter, private tracer_error_blimit = -4
 Tracer exceeded buffer size.
integer(i4), parameter, private tracer_error_exit = -1
 Tracer exited mesh.
integer(i4), parameter, private tracer_error_fail = -6
 Tracer failed.
integer(i4), parameter, private tracer_error_slimit = -3
 Tracer exceeded maxtrans.
integer(i4), parameter, private tracer_error_time = -5
 Tracer exceeded timeout.
integer(i4), parameter, private tracer_error_tlimit = -2
 Tracer exceeded maxsteps.
integer(i4), parameter, private tracer_init = 99
 Tracer is awaiting setup.
integer(i4), parameter, private tracer_recv_active = 21
 Tracer is waiting for recv to complete.
integer(i4), parameter, private tracer_recv_ready = 20
 Tracer is ready to recv.
integer(i4), parameter, private tracer_send_active = 11
 Tracer is waiting for send to complete.
integer(i4), parameter, private tracer_send_ready = 10
 Tracer is ready to send.
integer(i4), parameter, private tracer_trace_active = 2
 Tracer is being advanced.
integer(i4), parameter, private tracer_trace_ready = 1
 Tracer is ready to advance.

Function/Subroutine Documentation

◆ approx_angle_change()

subroutine approx_angle_change ( real(r8), dimension(3), intent(in) b1,
real(r8), dimension(3), intent(in) b2,
real(r8), dimension(3), intent(in) r1,
real(r8), dimension(3), intent(in) r2,
real(r8), intent(out) dpol,
real(r8), intent(out) dtor )
private