GEOS
Public Types | Static Public Member Functions | List of all members
geos::PreComputeSourcesAndReceivers Struct Reference

Public Types

using EXEC_POLICY = parallelDevicePolicy< >
 

Static Public Member Functions

template<typename EXEC_POLICY , typename FE_TYPE >
static void Compute1DSourceAndReceiverConstants (localIndex const size, ArrayOfArraysView< localIndex const > const baseFacesToNodes, arrayView2d< real64 const, nodes::REFERENCE_POSITION_USD > const baseNodeCoords, arrayView1d< globalIndex const > const baseNodeLocalToGlobal, arrayView1d< globalIndex const > const elementLocalToGlobal, ArrayOfArraysView< localIndex const > const baseNodesToElements, arrayView2d< localIndex const, cells::NODE_MAP_USD > const &baseElemsToNodes, arrayView1d< integer const > const elemGhostRank, arrayView2d< localIndex const, cells::NODE_MAP_USD > const &elemsToNodes, arrayView2d< localIndex const > const elemsToFaces, arrayView2d< real64 const > const &elemCenter, arrayView2d< real64 const > const sourceCoordinates, arrayView1d< localIndex > const sourceIsAccessible, arrayView2d< localIndex > const sourceNodeIds, arrayView2d< real64 > const sourceConstants, arrayView2d< real64 const > const receiverCoordinates, arrayView1d< localIndex > const receiverIsLocal, arrayView2d< localIndex > const receiverNodeIds, arrayView2d< real64 > const receiverConstants)
 Launches the precomputation of the source and receiver terms for 1D solution (2nd order acoustic) More...
 
template<typename EXEC_POLICY , typename FE_TYPE >
static void Compute1DSourceAndReceiverConstantsWithElementsAndRegionStorage (localIndex const size, localIndex const regionIndex, ArrayOfArraysView< localIndex const > const baseFacesToNodes, arrayView2d< real64 const, nodes::REFERENCE_POSITION_USD > const baseNodeCoords, arrayView1d< globalIndex const > const baseNodeLocalToGlobal, arrayView1d< globalIndex const > const elementLocalToGlobal, ArrayOfArraysView< localIndex const > const baseNodesToElements, arrayView2d< localIndex const, cells::NODE_MAP_USD > const &baseElemsToNodes, arrayView1d< integer const > const elemGhostRank, arrayView2d< localIndex const, cells::NODE_MAP_USD > const &elemsToNodes, arrayView2d< localIndex const > const elemsToFaces, arrayView2d< real64 const > const &elemCenter, arrayView2d< real64 const > const sourceCoordinates, arrayView1d< localIndex > const sourceIsAccessible, arrayView1d< localIndex > const sourceElem, arrayView2d< localIndex > const sourceNodeIds, arrayView2d< real64 > const sourceConstants, arrayView1d< localIndex > const sourceRegion, arrayView2d< real64 const > const receiverCoordinates, arrayView1d< localIndex > const receiverIsLocal, arrayView1d< localIndex > const receiverElem, arrayView2d< localIndex > const receiverNodeIds, arrayView2d< real64 > const receiverConstants, arrayView1d< localIndex > const receiverRegion)
 Launches the precomputation of the source and receiver terms with storage of elements and region in which the receivers and sources are located. More...
 
template<typename EXEC_POLICY , typename FE_TYPE >
static void Compute3DSourceAndReceiverConstantsWithDAS (localIndex const size, ArrayOfArraysView< localIndex const > const baseFacesToNodes, arrayView2d< real64 const, nodes::REFERENCE_POSITION_USD > const baseNodeCoords, arrayView1d< globalIndex const > const baseNodeLocalToGlobal, arrayView1d< globalIndex const > const elementLocalToGlobal, ArrayOfArraysView< localIndex const > const baseNodesToElements, arrayView2d< localIndex const, cells::NODE_MAP_USD > const &baseElemsToNodes, arrayView1d< integer const > const elemGhostRank, arrayView2d< localIndex const, cells::NODE_MAP_USD > const &elemsToNodes, arrayView2d< localIndex const > const elemsToFaces, arrayView2d< real64 const > const &elemCenter, arrayView2d< real64 const > const sourceCoordinates, arrayView1d< localIndex > const sourceIsAccessible, arrayView2d< localIndex > const sourceNodeIds, arrayView2d< real64 > const sourceConstantsx, arrayView2d< real64 > const sourceConstantsy, arrayView2d< real64 > const sourceConstantsz, arrayView2d< real64 const > const receiverCoordinates, arrayView1d< localIndex > const receiverIsLocal, arrayView2d< localIndex > const receiverNodeIds, arrayView2d< real64 > const receiverConstants, WaveSolverUtils::DASType useDAS, integer linearDASSamples, arrayView2d< real64 const > const linearDASGeometry, R1Tensor const sourceForce, R2SymTensor const sourceMoment)
 Launches the precomputation of the source and receiver terms for 3D arrays solution and DAS receiver constants computation. More...
 

Detailed Description

Definition at line 26 of file PrecomputeSourcesAndReceiversKernel.hpp.

Member Function Documentation

◆ Compute1DSourceAndReceiverConstants()

template<typename EXEC_POLICY , typename FE_TYPE >
static void geos::PreComputeSourcesAndReceivers::Compute1DSourceAndReceiverConstants ( localIndex const  size,
ArrayOfArraysView< localIndex const > const  baseFacesToNodes,
arrayView2d< real64 const, nodes::REFERENCE_POSITION_USD > const  baseNodeCoords,
arrayView1d< globalIndex const > const  baseNodeLocalToGlobal,
arrayView1d< globalIndex const > const  elementLocalToGlobal,
ArrayOfArraysView< localIndex const > const  baseNodesToElements,
arrayView2d< localIndex const, cells::NODE_MAP_USD > const &  baseElemsToNodes,
arrayView1d< integer const > const  elemGhostRank,
arrayView2d< localIndex const, cells::NODE_MAP_USD > const &  elemsToNodes,
arrayView2d< localIndex const > const  elemsToFaces,
arrayView2d< real64 const > const &  elemCenter,
arrayView2d< real64 const > const  sourceCoordinates,
arrayView1d< localIndex > const  sourceIsAccessible,
arrayView2d< localIndex > const  sourceNodeIds,
arrayView2d< real64 > const  sourceConstants,
arrayView2d< real64 const > const  receiverCoordinates,
arrayView1d< localIndex > const  receiverIsLocal,
arrayView2d< localIndex > const  receiverNodeIds,
arrayView2d< real64 > const  receiverConstants 
)
inlinestatic

Launches the precomputation of the source and receiver terms for 1D solution (2nd order acoustic)

Template Parameters
EXEC_POLICYexecution policy
FE_TYPEfinite element type
Parameters
[in]sizethe number of cells in the subRegion
[in]baseFacesToNodesface to node map
[in]baseNodeCoordscoordinates of the nodes
[in]baseNodeLocalToGloballocal to global index map for nodes
[in]elementLocalToGloballocal to global index map for elements
[in]baseNodesToElementsnode to element map for the base mesh
[in]baseElemsToNodeselement to node map for the base mesh
[in]elemGhostRankrank of the ghost element
[in]elemsToNodesmap from element to nodes
[in]elemsToFacesmap from element to faces
[in]elemCentercoordinates of the element centers
[in]sourceCoordinatescoordinates of the source terms
[out]sourceIsAccessibleflag indicating whether the source is accessible or not
[out]sourceNodeIdsindices of the nodes of the element where the source is located
[out]sourceConstantsconstant part of the source terms
[in]receiverCoordinatescoordinates of the receiver terms
[out]receiverIsLocalflag indicating whether the receiver is local or not
[out]receiverNodeIdsindices of the nodes of the element where the receiver is located
[out]receiverConstantsconstant part of the receiver term

loop over all the source that haven't been found yet

loop over all the receivers that haven't been found yet

Definition at line 57 of file PrecomputeSourcesAndReceiversKernel.hpp.

◆ Compute1DSourceAndReceiverConstantsWithElementsAndRegionStorage()

template<typename EXEC_POLICY , typename FE_TYPE >
static void geos::PreComputeSourcesAndReceivers::Compute1DSourceAndReceiverConstantsWithElementsAndRegionStorage ( localIndex const  size,
localIndex const  regionIndex,
ArrayOfArraysView< localIndex const > const  baseFacesToNodes,
arrayView2d< real64 const, nodes::REFERENCE_POSITION_USD > const  baseNodeCoords,
arrayView1d< globalIndex const > const  baseNodeLocalToGlobal,
arrayView1d< globalIndex const > const  elementLocalToGlobal,
ArrayOfArraysView< localIndex const > const  baseNodesToElements,
arrayView2d< localIndex const, cells::NODE_MAP_USD > const &  baseElemsToNodes,
arrayView1d< integer const > const  elemGhostRank,
arrayView2d< localIndex const, cells::NODE_MAP_USD > const &  elemsToNodes,
arrayView2d< localIndex const > const  elemsToFaces,
arrayView2d< real64 const > const &  elemCenter,
arrayView2d< real64 const > const  sourceCoordinates,
arrayView1d< localIndex > const  sourceIsAccessible,
arrayView1d< localIndex > const  sourceElem,
arrayView2d< localIndex > const  sourceNodeIds,
arrayView2d< real64 > const  sourceConstants,
arrayView1d< localIndex > const  sourceRegion,
arrayView2d< real64 const > const  receiverCoordinates,
arrayView1d< localIndex > const  receiverIsLocal,
arrayView1d< localIndex > const  receiverElem,
arrayView2d< localIndex > const  receiverNodeIds,
arrayView2d< real64 > const  receiverConstants,
arrayView1d< localIndex > const  receiverRegion 
)
inlinestatic

Launches the precomputation of the source and receiver terms with storage of elements and region in which the receivers and sources are located.

Template Parameters
EXEC_POLICYexecution policy
FE_TYPEfinite element type
Parameters
[in]sizethe number of cells in the subRegion
[in]baseFacesToNodesface to node map of the base mesh
[in]baseNodeCoordscoordinates of the nodes of the base mesh
[in]baseNodeLocalToGloballocal to global index map for nodes of the base mesh
[in]elementLocalToGloballocal to global index map for elements (for the base or high order mesh)
[in]baseNodesToElementslocal node to element map for the base mesh
[in]baseElemsToNodeselement to node map for the base mesh
[in]elemGhostRankrank of the ghost element
[in]elemsToNodesmap from element to nodes
[in]elemsToFacesmap from element to faces
[in]elemCentercoordinates of the element centers
[in]sourceCoordinatescoordinates of the source terms
[out]sourceIsAccessibleflag indicating whether the source is accessible or not
[out]sourceElemelement where a source is located
[out]sourceNodeIdsindices of the nodes of the element where the source is located
[out]sourceConstantsconstant part of the source terms
[in]receiverCoordinatescoordinates of the receiver terms
[out]receiverIsLocalflag indicating whether the receiver is local or not
[out]receiverElemelement where a receiver is located
[out]receiverNodeIdsindices of the nodes of the element where the receiver is located
[out]receiverConstantsconstant part of the receiver term

loop over all the source that haven't been found yet

loop over all the receivers that haven't been found yet

Definition at line 207 of file PrecomputeSourcesAndReceiversKernel.hpp.

◆ Compute3DSourceAndReceiverConstantsWithDAS()

template<typename EXEC_POLICY , typename FE_TYPE >
static void geos::PreComputeSourcesAndReceivers::Compute3DSourceAndReceiverConstantsWithDAS ( localIndex const  size,
ArrayOfArraysView< localIndex const > const  baseFacesToNodes,
arrayView2d< real64 const, nodes::REFERENCE_POSITION_USD > const  baseNodeCoords,
arrayView1d< globalIndex const > const  baseNodeLocalToGlobal,
arrayView1d< globalIndex const > const  elementLocalToGlobal,
ArrayOfArraysView< localIndex const > const  baseNodesToElements,
arrayView2d< localIndex const, cells::NODE_MAP_USD > const &  baseElemsToNodes,
arrayView1d< integer const > const  elemGhostRank,
arrayView2d< localIndex const, cells::NODE_MAP_USD > const &  elemsToNodes,
arrayView2d< localIndex const > const  elemsToFaces,
arrayView2d< real64 const > const &  elemCenter,
arrayView2d< real64 const > const  sourceCoordinates,
arrayView1d< localIndex > const  sourceIsAccessible,
arrayView2d< localIndex > const  sourceNodeIds,
arrayView2d< real64 > const  sourceConstantsx,
arrayView2d< real64 > const  sourceConstantsy,
arrayView2d< real64 > const  sourceConstantsz,
arrayView2d< real64 const > const  receiverCoordinates,
arrayView1d< localIndex > const  receiverIsLocal,
arrayView2d< localIndex > const  receiverNodeIds,
arrayView2d< real64 > const  receiverConstants,
WaveSolverUtils::DASType  useDAS,
integer  linearDASSamples,
arrayView2d< real64 const > const  linearDASGeometry,
R1Tensor const  sourceForce,
R2SymTensor const  sourceMoment 
)
inlinestatic

Launches the precomputation of the source and receiver terms for 3D arrays solution and DAS receiver constants computation.

Template Parameters
EXEC_POLICYexecution policy
FE_TYPEfinite element type
Parameters
[in]sizethe number of cells in the subRegion
[in]baseFacesToNodesface to node map
[in]baseNodeCoordscoordinates of the nodes
[in]baseNodeLocalToGloballocal to global index map for nodes
[in]elementLocalToGloballocal to global index map for elements
[in]baseNodesToElementsnode to element map for the base mesh
[in]baseElemsToNodeselement to node map for the base mesh
[in]elemGhostRankarray containing the ghost rank
[in]elemsToNodesmap from element to nodes
[in]elemsToFacesmap from element to faces
[in]elemCentercoordinates of the element centers
[in]sourceCoordinatescoordinates of the source terms
[out]sourceIsAccessibleflag indicating whether the source is accessible or not
[out]sourceNodeIdsindices of the nodes of the element where the source is located
[out]sourceConstantsxconstant part of the source terms in x-direction
[out]sourceConstantsyconstant part of the source terms in y-direction
[out]sourceConstantszconstant part of the source terms in z-direction
[in]receiverCoordinatescoordinates of the receiver terms
[out]receiverIsLocalflag indicating whether the receiver is local or not
[out]receiverNodeIdsindices of the nodes of the element where the receiver is located
[out]receiverConstantsconstant part of the receiver term
[in]useDASparameter that determines which kind of receiver needs to be modeled (DAS or not, and which type)
[in]linearDASSamplesparameter that gives the number of integration points to be used when computing the DAS signal via strain integration
[in]linearDASGeometrygeometry of the linear DAS receivers, if needed
[in]sourceForceforce vector of the source
[in]sourceMomentmoment (symmetric rank-2 tensor) of the source

loop over all the source that haven't been found yet

compute locations of samples along receiver

compute integration constants of samples for displacement difference (dipole) DAS, take the discrete derivative of the pair of geophones

for strain integration DAS, take the average of strains to average strain data

loop over all the receivers

loop over samples

compute sample coordinates and locate the element containing it

Definition at line 373 of file PrecomputeSourcesAndReceiversKernel.hpp.


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