Version 1.2 (June 2013)
 All Classes Namespaces Files Functions Variables Pages
Public Member Functions | List of all members
simulator.geometry.boundaryConditions.BoundaryCyclic Class Reference

BoundaryCyclic : close the system along a dimension. More...

Inheritance diagram for simulator.geometry.boundaryConditions.BoundaryCyclic:
simulator.geometry.boundaryConditions.AllBC

Public Member Functions

 BoundaryCyclic ()
 Declare a cyclic boundary and set isCyclic to true to note this is the case. More...
 
void init (Simulator aSim, Domain aDomain, XMLParser aBCParser)
 Initialises the boundary from information contained in the simulation protocol file. More...
 
void readGeometry (XMLParser geometryRoot, Domain aDomain)
 Read the geometry of this boundary from the protocol file and construct both this boundary and the opposite side (as this is cyclic) More...
 
ContinuousVector lookAt (ContinuousVector cc)
 Method used by another which gets the indexed grid position of a continuous vector. Some boundary conditions need the input corrected, some don't and just return the input. More...
 
void setBoundary (LocatedGroup aGroup)
 Change the status of a specified LocatedGroup to note that it has been identified as being outside this boundary. More...
 
void applyBoundary (LocatedAgent anAgent, ContinuousVector target)
 Applies the boundary condition by modifying the movement vector. New position is orthogonal projection of the outside point on the boundary surface. More...
 
void refreshBoundary (SoluteGrid aSoluteGrid)
 Solver for the cyclic boundary condition. Initialises the course along the shape of the boundary, setting the values of solute near the boundary as required. More...
 
void applyBoundary (SoluteGrid aSpGrid, DiscreteVector dC)
 Applies boundary conditions for all other BC types - but not used for cyclic boundaries. More...
 
double getValueFromBoundary (SoluteGrid aSpGrid, int i, int j, int k)
 Returns the value within a boundary. Not used for cyclic boundaries. More...
 
BoundaryCyclic createOtherSide ()
 Creates the opposite side of the cyclic boundary such that agents can 'roll around' to the other side. More...
 
boolean isOutside (ContinuousVector cc)
 Determines if a point is outside the boundary. More...
 
boolean isOnBoundary (ContinuousVector cC, SpatialGrid aSpatialGrid)
 Determines if a point is on the boundary. More...
 
double getDistance (ContinuousVector cc)
 Returns the distance from a point to the boundary. More...
 
ContinuousVector getSymmetric (ContinuousVector cc)
 Return the intersection between the opposite shape and a provided point. More...
 
String toString ()
 Returns a string noting the side of the domain that this boundary condition is on. More...
 
- Public Member Functions inherited from simulator.geometry.boundaryConditions.AllBC
void readGeometry (XMLParser geometryRoot, Domain aDomain)
 Used during the initialisation, load the class describing the shape of the boundary defined in the parent class. More...
 
boolean isOutside (ContinuousVector cc)
 Determines if a point is outside the boundary. More...
 
String getSideName ()
 Return the name of the side of the domain which this boundary is on. More...
 
void refreshDiffBoundary (SoluteGrid relDiff, SoluteGrid aSolutegrid)
 Method used if a boundary modifies the local diffusivity constant. Most of boundaries do not modify it. More...
 
boolean isCyclic ()
 Determine if this boundary is cyclic. More...
 
boolean isSupport ()
 Determine whether this boundary is the supporting structure (substratum) More...
 
boolean isActive ()
 Determine if this boundary is active for solute. More...
 
boolean hasBulk ()
 Determine if this boundary is attached to a bulk. More...
 
void updateBulk (SoluteGrid[] soluteGrid, SoluteGrid[] reacGrid, double timeStep)
 Updates the levels in the bulk. Allows reaction or flux-based bulk treatment. More...
 
boolean hasAgar ()
 Determine if the boundary condition is modelling agar. More...
 
void updateAgar (SoluteGrid[] soluteGrid, SoluteGrid[] reactionGrid, double timeStep)
 If modelling an agar plate boundary, this method updates the boundary. More...
 
boolean isOutside (DiscreteVector dc, SpatialGrid aSpatialGrid)
 Determines if a discrete vector location is outside the boundary. More...
 
ContinuousVector getIntersection (ContinuousVector position, ContinuousVector vector)
 Calculate the intersection between the boundary and a line (defined by a position and a vector) More...
 
ContinuousVector getOrthoProj (ContinuousVector cc)
 Calculate the orthogonal projection of a location on the boundary. More...
 
Bulk getBulk ()
 Return the bulk that is connected to this boundary. More...
 
IsShape getShape ()
 Returns the Shape object that represents this boundary. More...
 
String getSide ()
 Return the name of the side of the domain which this boundary is on. More...
 
double getDistance (ContinuousVector cc)
 Returns the distance from a point to the boundary. More...
 
double getBulkValue (int soluteIndex)
 For a specified solute, returns the level of that solute in the bulk. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from simulator.geometry.boundaryConditions.AllBC
static AllBC staticBuilder (XMLParser root, Simulator aSim, Domain aDomain)
 Generic constructor called to dynamically instantiate a child class object. More...
 
- Protected Attributes inherited from simulator.geometry.boundaryConditions.AllBC
String _mySide
 
IsShape _myShape
 
boolean isCyclic = false
 
boolean _isSupport = false
 
boolean hasBulk = false
 
boolean activeForSolute = true
 
boolean hasAgar = false
 
- Static Protected Attributes inherited from simulator.geometry.boundaryConditions.AllBC
static DiscreteVector dcIn = new DiscreteVector()
 
static DiscreteVector dcOut = new DiscreteVector()
 

Detailed Description

BoundaryCyclic : close the system along a dimension.

BoundaryCyclic : close the system along a dimension. It is computationally unfeasible to simulate a micro-scale world on a macro-scale level, so oftentimes a small spatial sub-region is assumed to represent the system as a whole; in this case, periodic boundaries are used to remove artificial edge effects by assuming the simulated region adjoins other, similar, regions. As a consequence, boundaries in some chosen directions (generally for movements parallel to the substratum) are periodic, which means that the solute concentrations and solute gradients are constant across the boundary, and that agents travelling through one boundary will be translated to the other side of the domain

Author
Laurent Lardon (lardo.nosp@m.nl@s.nosp@m.upagr.nosp@m.o.in.nosp@m.ra.fr), INRA, France

Constructor & Destructor Documentation

simulator.geometry.boundaryConditions.BoundaryCyclic.BoundaryCyclic ( )

Declare a cyclic boundary and set isCyclic to true to note this is the case.

Declare a cyclic boundary and set isCyclic to true to note this is the case

Member Function Documentation

void simulator.geometry.boundaryConditions.BoundaryCyclic.applyBoundary ( LocatedAgent  anAgent,
ContinuousVector  target 
)
virtual

Applies the boundary condition by modifying the movement vector. New position is orthogonal projection of the outside point on the boundary surface.

Applies the boundary condition by modifying the movement vector. New position is orthogonal projection of the outside point on the boundary surface

Parameters
anAgentThe Located Agent which is attempting to cross the boundary
targetThe target position that the agent is moving to

Implements simulator.geometry.boundaryConditions.AllBC.

void simulator.geometry.boundaryConditions.BoundaryCyclic.applyBoundary ( SoluteGrid  aSpGrid,
DiscreteVector  dC 
)

Applies boundary conditions for all other BC types - but not used for cyclic boundaries.

Applies boundary conditions for all other BC types - but not used for cyclic boundaries.

Parameters
aSpGridSoluteGrid
dCDiscreteVector
BoundaryCyclic simulator.geometry.boundaryConditions.BoundaryCyclic.createOtherSide ( )

Creates the opposite side of the cyclic boundary such that agents can 'roll around' to the other side.

Creates the opposite side of the cyclic boundary such that agents can 'roll around' to the other side

Returns
BoundaryCyclic object that captures the opposite side of this boundary
double simulator.geometry.boundaryConditions.BoundaryCyclic.getDistance ( ContinuousVector  cc)

Returns the distance from a point to the boundary.

Returns the distance from a point to the boundary

Parameters
ccThe continuous vector of points to calculate how far the point is from the boundary
Returns
Double value stating the distance fromt the point to the boundary
ContinuousVector simulator.geometry.boundaryConditions.BoundaryCyclic.getSymmetric ( ContinuousVector  cc)

Return the intersection between the opposite shape and a provided point.

Return the intersection between the opposite shape and a provided point

Parameters
ccA position on a boundary
Returns
ContinuousVector containing the intersection between the opposite shape and provided point
double simulator.geometry.boundaryConditions.BoundaryCyclic.getValueFromBoundary ( SoluteGrid  aSpGrid,
int  i,
int  j,
int  k 
)

Returns the value within a boundary. Not used for cyclic boundaries.

Returns the value within a boundary. Not used for cyclic boundaries

Parameters
aSpGridSolute grid which the boundary is being applied
iI Coordinate of grid space to query
jJ Coordinate of grid space to query
kK Coordinate of grid space to query
Returns
Double balue of the solute level stored in that boundary cell
void simulator.geometry.boundaryConditions.BoundaryCyclic.init ( Simulator  aSim,
Domain  aDomain,
XMLParser  aBCParser 
)
virtual

Initialises the boundary from information contained in the simulation protocol file.

Initialises the boundary from information contained in the simulation protocol file

Parameters
aSimThe simulation object used to simulate the conditions specified in the protocol file
aDomainThe domain which this boundary condition is associated with
aBCParserThe XML tags that have declared this boundary in the protocol file

Implements simulator.geometry.boundaryConditions.AllBC.

boolean simulator.geometry.boundaryConditions.BoundaryCyclic.isOnBoundary ( ContinuousVector  cC,
SpatialGrid  aSpatialGrid 
)

Determines if a point is on the boundary.

Determines if a point is on the boundary

Parameters
cCContinuousVector to check
aSpatialGridSpatial grid to check
Returns
Boolean value noting whether this coordinate is on the boundary (true) or not (false)
boolean simulator.geometry.boundaryConditions.BoundaryCyclic.isOutside ( ContinuousVector  cc)

Determines if a point is outside the boundary.

Determines if a point is outside the boundary

Parameters
ccContinuousVector to check
Returns
Boolean value noting whether this coordinate is outside the boundary (true) or not (false)
ContinuousVector simulator.geometry.boundaryConditions.BoundaryCyclic.lookAt ( ContinuousVector  cc)
virtual

Method used by another which gets the indexed grid position of a continuous vector. Some boundary conditions need the input corrected, some don't and just return the input.

Method used by another which gets the indexed grid position of a continuous vector. Some boundary conditions (e.g. BoundaryCyclic_ need the input corrected due to the condition, some don't and just return the input. Maybe we'll change this at some point as to just return the input looks a bit daft - but we'll leave it here for the moment

Parameters
ccContinuousVector that gives the current location of an agent to check on the grid

Implements simulator.geometry.boundaryConditions.AllBC.

void simulator.geometry.boundaryConditions.BoundaryCyclic.readGeometry ( XMLParser  geometryRoot,
Domain  aDomain 
)

Read the geometry of this boundary from the protocol file and construct both this boundary and the opposite side (as this is cyclic)

Read the geometry of this boundary from the protocol file and construct both this boundary and the opposite side (as this is cyclic)

See Also
Domain constructor
Parameters
geometryRootXML tags in the protocol file that describe this boundary
aDomainThe domain which this boundary is associated with
void simulator.geometry.boundaryConditions.BoundaryCyclic.refreshBoundary ( SoluteGrid  aSoluteGrid)
virtual

Solver for the cyclic boundary condition. Initialises the course along the shape of the boundary, setting the values of solute near the boundary as required.

Solver for the cyclic boundary condition. Initialises the course along the shape of the boundary, , setting the values of solute near the boundary as required

Parameters
aSoluteGridGrid of solute information which is to be refreshed by the solver

Implements simulator.geometry.boundaryConditions.AllBC.

void simulator.geometry.boundaryConditions.BoundaryCyclic.setBoundary ( LocatedGroup  aGroup)
virtual

Change the status of a specified LocatedGroup to note that it has been identified as being outside this boundary.

Change the status of a specified LocatedGroup to note that it has been identified as being outside this boundary

Parameters
aGroupLocatedGroup object which has been detected to be outside the boundary

Implements simulator.geometry.boundaryConditions.AllBC.

String simulator.geometry.boundaryConditions.BoundaryCyclic.toString ( )

Returns a string noting the side of the domain that this boundary condition is on.

Returns a string noting the side of the domain that this boundary condition is on

Returns
String noting the side of the domain that this condition applies to (i.e. x0z, xNz, etc)

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