ESyS-Particle  2.3.4
InteractionToStressConverter.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 
14 #ifndef ESYS_LSMINTERACTIONTOSTRESSCONVERTOR_H
15 #define ESYS_LSMINTERACTIONTOSTRESSCONVERTOR_H
16 
22 
23 #include "Foundation/BoundingBox.h"
24 
25 #include <iostream>
26 #include <iomanip>
27 
28 namespace std
29 {
30  template <>
31  struct less<Vec3>
32  {
33  bool operator()(const Vec3 &v1, const Vec3 &v2) const
34  {
35  return esys::lsm::Vec3XyzComparer()(v1, v2);
36  }
37  };
38 }
39 
40 namespace esys
41 {
42  namespace lsm
43  {
47 
49  {
50  public:
53 
54  InteractionToStressConverter(const BoundingBox &box, double gridSpacing);
55 
60  void addRaw2Interactions(std::istream &iStream);
61 
66  void writeVtkUnstructuredXml(std::ostream &oStream);
67 
68  void writeVtkUnstructuredXmlGridInformation(std::ostream &oStream);
69 
81  void writeVtkStructuredXml(std::ostream &oStream);
82 
85 
97 
98  void calcTensorRegularGrid();
99 
113 
114  void calcDevRegularGrid();
115 
124  void writeFlatStructured(std::ostream &oStream);
125 
135  (
136  std::ostream &oStream
137  );
138 
145  void writeUnstructuredDx(std::ostream &oStream);
146 
147  double getMaxRadius();
148 
149  protected:
150  double getRealDevStress(const Tensor &stressTensor) const;
151  double getNormDevStress(const Tensor &stressTensor) const;
152 
153  bool is3d() const;
154 
155  private:
163  };
164  }
165 }
166 #endif
esys::lsm::PointDataType
Definition: InteractionToStressConverter.cpp:119
esys::lsm::InteractionToStressConverter::addRaw2Interactions
void addRaw2Interactions(std::istream &iStream)
Definition: InteractionToStressConverter.cpp:231
esys::lsm::InteractionToStressConverter::getMaxRadius
double getMaxRadius()
Definition: InteractionToStressConverter.cpp:364
esys::lsm::InteractionToStressConverter::getNormDevStress
double getNormDevStress(const Tensor &stressTensor) const
Definition: InteractionToStressConverter.cpp:211
esys::lsm::vtk::StructuredGrid::setExtent
void setExtent(const Vec3L &minIndex, const Vec3L &maxIndex)
Definition: VtkStructuredGrid.h:111
esys::lsm::StressTensorCollection::addContactIterators
void addContactIterators(TmplContactIteratorIterator it)
Definition: StressTensorCollection.h:50
esys::lsm::InteractionToStressConverter::writeVtkStructuredXml
void writeVtkStructuredXml(std::ostream &oStream)
Definition: InteractionToStressConverter.cpp:497
esys::lsm::CircleBoxVolCalculator::getVolume
double getVolume(const Sphere &sphere)
Definition: CircleBoxVolCalculator.h:40
esys::lsm::vtk::Float64Type
Definition: VtkDataType.h:101
esys::lsm::impl::DimBasicBox
Definition: IntersectionVolCalculator.h:29
StressTensorCalculator.h
esys::lsm::InteractionToStressConverter::m_gridSpacing
double m_gridSpacing
Definition: InteractionToStressConverter.h:156
esys::lsm::InteractionToStressConverter::writeVtkUnstructuredXmlGridInformation
void writeVtkUnstructuredXmlGridInformation(std::ostream &oStream)
Definition: InteractionToStressConverter.cpp:267
esys::lsm::Piece
vtk::UnstructuredPiece< PointType, PointDataType > Piece
Definition: InteractionToStressConverter.cpp:169
esys::lsm::TwoDIntersectionCalker::TwoDIntersectionCalker
TwoDIntersectionCalker(const BoundingBox &box)
Definition: InteractionToStressConverter.cpp:98
esys::lsm::checkIntersectionVolume
void checkIntersectionVolume(double vol, const TmplSphere &sphere, const TmplBox &box)
Definition: InteractionToStressConverter.cpp:40
esys::lsm::CartesianGrid::getCellIterator
CellIterator getCellIterator(const Vec3 &pos, double radius)
Definition: CartesianGrid.h:361
esys::lsm::impl::IntersectionVolCalculator< 3, Vec3 >::getBox
const BasicBox & getBox() const
Definition: IntersectionVolCalculator.hpp:685
esys::lsm::InteractionToStressConverter::calcTensorIrregularGrid
void calcTensorIrregularGrid()
Definition: InteractionToStressConverter.cpp:380
Vec3Comparer.h
esys::lsm::InteractionToStressConverter::m_irrStressTensorGrid
StressTensorPtrGrid m_irrStressTensorGrid
Definition: InteractionToStressConverter.h:162
esys::lsm::InteractionToStressConverter::m_stressCalculator
StressTensorCalculator m_stressCalculator
Definition: InteractionToStressConverter.h:158
esys::lsm::Raw2InteractionReader
Definition: Raw2InteractionReader.h:27
esys::lsm::StressTensor
Definition: StressTensor.h:72
Raw2InteractionReader.h
esys::lsm::EigenvalueCalculator::ComplexRealImagComparer
Definition: EigenvalueCalculator.h:72
esys::lsm::PointType
vtk::Vec3Type PointType
Definition: InteractionToStressConverter.cpp:168
esys::lsm::RealImagComparer
EigenvalueCalculator::ComplexRealImagComparer RealImagComparer
Definition: InteractionToStressConverter.cpp:171
esys::lsm::InteractionToStressConverter::getTensorRegularGrid
TensorGrid & getTensorRegularGrid()
Definition: InteractionToStressConverter.cpp:391
esys::lsm::ContactCollection::getContactIteratorIterator
ContactIteratorIterator getContactIteratorIterator()
Definition: ContactCollection.h:127
esys::lsm::InteractionToStressConverter::getTensorIrregularGrid
StressTensorPtrGrid & getTensorIrregularGrid()
Definition: InteractionToStressConverter.cpp:355
esys::lsm::vtk::UnstructuredGrid
Definition: VtkUnstructuredGrid.h:65
esys::lsm::ForwardIterator::hasNext
bool hasNext() const
Definition: StlIterator.h:48
esys::lsm::CartesianGrid::getMaxVecIndex
const Vec3L & getMaxVecIndex() const
Definition: CartesianGrid.h:331
esys::lsm::InteractionToStressConverter::m_regDevStressGrid
DoubleGrid m_regDevStressGrid
Definition: InteractionToStressConverter.h:161
esys::lsm::PointDataTypeForGrid
Definition: InteractionToStressConverter.cpp:147
esys::lsm::CartesianGrid< Tensor >
esys::lsm::InteractionToStressConverter::getDevRegularGrid
DoubleGrid & getDevRegularGrid()
Definition: InteractionToStressConverter.cpp:468
esys::lsm::vtk::UnstructuredPiece
Definition: VtkUnstructuredGrid.h:35
esys::lsm::CartesianGrid< Tensor >::CellIterator
TCellIterator< CartesianGrid *, Cell &, Cell > CellIterator
Definition: CartesianGrid.h:231
VtkStructuredGrid.h
esys::lsm::InteractionToStressConverter::m_regTensorGrid
TensorGrid m_regTensorGrid
Definition: InteractionToStressConverter.h:160
esys::lsm::InteractionToStressConverter::getRealDevStress
double getRealDevStress(const Tensor &stressTensor) const
Definition: InteractionToStressConverter.cpp:186
esys::lsm::ForwardIterator::next
reference next()
Definition: StlIterator.h:60
esys::lsm::vtk::UnstructuredGrid::addPiece
void addPiece(XmlPiece &piece)
Definition: VtkUnstructuredGrid.h:79
esys::lsm::StrctPointDataType::StrctPointDataType
StrctPointDataType()
Definition: InteractionToStressConverter.cpp:344
esys::lsm::StrctPointDataType::Inherited
vtk::DataTypeTuple< vtk::Float64Type > Inherited
Definition: InteractionToStressConverter.cpp:342
esys::lsm::InteractionToStressConverter::StressTensCollection
StressTensorCollection< ContactPtTensorCalculator > StressTensCollection
Definition: InteractionToStressConverter.h:51
esys::lsm::StrctPointType
vtk::Vec3Type StrctPointType
Definition: InteractionToStressConverter.cpp:352
esys::lsm::Tensor::getPos
const Vec3 & getPos() const
Definition: StressTensor.h:51
esys::lsm::ContactCollection
Definition: ContactCollection.h:30
esys::lsm::vtk::Piece::setPoint
void setPoint(const PointValue &point, const PointData &data)
Definition: VtkPiece.h:64
esys::lsm::Vec3XyzComparer
Definition: Vec3Comparer.h:24
esys::lsm::ThreeDIntersectionCalker::getVolume
double getVolume(const Sphere &sphere)
Definition: InteractionToStressConverter.cpp:87
esys::lsm::InteractionToStressConverter::writeFlatUnstructured
void writeFlatUnstructured(std::ostream &oStream)
Definition: InteractionToStressConverter.cpp:319
esys::lsm::ParticleData::is3d
static bool is3d()
Definition: Contact.h:51
esys::lsm::BoundingBox
3D bounding box
Definition: BoundingBox.h:28
esys
Definition: CheckPointable.cpp:17
esys::lsm::Tensor::getTensor
const Matrix3 & getTensor() const
Definition: StressTensor.h:56
esys::lsm::impl::DimBasicSphere< tmplDim, Vec >
esys::lsm::Tensor::getEigenvalues
ComplexVector getEigenvalues() const
Definition: StressTensor.h:61
esys::lsm::StrctPiece
vtk::StructuredPiece< StrctPointType, StrctPointDataType > StrctPiece
Definition: InteractionToStressConverter.cpp:353
esys::lsm::TensorGrid
CartesianGrid< Tensor > TensorGrid
Definition: InteractionToStressConverter.h:46
std::less< Vec3 >::operator()
bool operator()(const Vec3 &v1, const Vec3 &v2) const
Definition: InteractionToStressConverter.h:33
esys::lsm::InteractionToStressConverter::is3d
bool is3d() const
Definition: InteractionToStressConverter.cpp:226
CartesianGrid.h
esys::lsm::InteractionToStressConverter::calcDevRegularGrid
void calcDevRegularGrid()
Definition: InteractionToStressConverter.cpp:477
esys::lsm::NormComparer
EigenvalueCalculator::ComplexNormComparer NormComparer
Definition: InteractionToStressConverter.cpp:173
esys::lsm::InteractionToStressConverter::writeUnstructuredDx
void writeUnstructuredDx(std::ostream &oStream)
Definition: InteractionToStressConverter.cpp:299
esys::lsm::vtk::DataTypeTuple< vtk::Float64Type, vtk::Float64Type, vtk::Matrix3Type, vtk::Float64Type >::DataValueTuple
boost::tuple< typename DT0::value_type, typename DT1::value_type, typename DT2::value_type, typename DT3::value_type, typename DT4::value_type, typename DT5::value_type, typename DT6::value_type, typename DT7::value_type, typename DT8::value_type, typename DT9::value_type > DataValueTuple
Definition: VtkDataTypeTuple.h:79
esys::lsm::vtk::StructuredGrid::addPiece
void addPiece(TmplStructuredPiece &piece)
Definition: VtkStructuredGrid.h:118
esys::lsm::vtk::StructuredPiece::getMaxExtent
const Vec3L & getMaxExtent() const
Definition: VtkStructuredGrid.h:82
esys::lsm::StressTensor::getRad
double getRad() const
Definition: StressTensor.h:93
StressTensorCollection.h
esys::lsm::InteractionToStressConverter::calcTensorRegularGrid
void calcTensorRegularGrid()
Definition: InteractionToStressConverter.cpp:425
esys::lsm::ContactCollection::addInteractions
void addInteractions(TmplIterator &iterator)
Definition: ContactCollection.h:110
esys::lsm::DoubleGrid
CartesianGrid< double > DoubleGrid
Definition: InteractionToStressConverter.h:44
esys::lsm::StressTensorCollection::StressCalculator
TmplStressTensorCalculator StressCalculator
Definition: StressTensorCollection.h:33
esys::lsm::InteractionToStressConverter::InteractionToStressConverter
InteractionToStressConverter(const BoundingBox &box, double gridSpacing)
Definition: InteractionToStressConverter.cpp:175
esys::lsm::InteractionToStressConverter::StressTensorCalculator
StressTensCollection::StressCalculator StressTensorCalculator
Definition: InteractionToStressConverter.h:52
esys::lsm::AbsRealImagComparer
EigenvalueCalculator::ComplexAbsRealImagComparer AbsRealImagComparer
Definition: InteractionToStressConverter.cpp:172
esys::lsm::SphereBoxVolCalculator
Definition: SphereBoxVolCalculator.h:29
esys::lsm::getDetailsString
std::string getDetailsString(const TmplSphere &sphere, const TmplBox &box)
Definition: InteractionToStressConverter.cpp:29
esys::lsm::TwoDIntersectionCalker
Definition: InteractionToStressConverter.cpp:96
esys::lsm::Tensor
Definition: StressTensor.h:30
esys::lsm::EigenvalueCalculator::ComplexAbsRealImagComparer
Definition: EigenvalueCalculator.h:90
esys::lsm::CartesianGrid::insert
void insert(const Vec3 &pos, const_reference data)
Definition: CartesianGrid.h:336
esys::lsm::InteractionToStressConverter::writeFlatStructured
void writeFlatStructured(std::ostream &oStream)
Definition: InteractionToStressConverter.cpp:526
esys::lsm::CircleBoxVolCalculator
Definition: CircleBoxVolCalculator.h:29
esys::lsm::ThreeDIntersectionCalker::ThreeDIntersectionCalker
ThreeDIntersectionCalker(const BoundingBox &box)
Definition: InteractionToStressConverter.cpp:82
esys::lsm::SphereBoxVolCalculator::getVolume
double getVolume(const Sphere &sphere)
Definition: SphereBoxVolCalculator.h:40
esys::lsm::StressTensor::ComplexVector
EigenvalueCalculator::ComplexVector ComplexVector
Definition: StressTensor.h:75
VtkUnstructuredGrid.h
esys::lsm::vtk::StructuredPiece::PointData
Inherited::PointData PointData
Definition: VtkStructuredGrid.h:41
Vec3
Definition: vec3.h:47
esys::lsm::getBoxTensor
Matrix3 getBoxTensor(TmplCellIterator cellIt, TmplIntsectVolCalker intersectCalker)
Definition: InteractionToStressConverter.cpp:401
esys::lsm::vtk::Matrix3Type
Definition: VtkDataType.h:171
esys::lsm::ForwardIterator
Definition: StlIterator.h:30
InteractionToStressConverter.h
esys::lsm::ForwardIterator::reference
TmplIteratable::reference reference
Definition: StlIterator.h:33
esys::lsm::StressTensorCollection< ContactPtTensorCalculator >
esys::lsm::StrctPointDataType
Definition: InteractionToStressConverter.cpp:337
ContactCollection.h
esys::lsm::InteractionToStressConverter::writeVtkUnstructuredXml
void writeVtkUnstructuredXml(std::ostream &oStream)
Definition: InteractionToStressConverter.cpp:240
esys::lsm::CartesianGrid::size
size_t size() const
Definition: CartesianGrid.h:421
esys::lsm::EigenvalueCalculator::ComplexNormComparer
Definition: EigenvalueCalculator.h:108
Matrix3
3x3 Matrix
Definition: Matrix3.h:48
std
Definition: Contact.h:101
esys::lsm::vtk::DataTypeTuple
Definition: VtkDataTypeTuple.h:70
esys::lsm::CartesianGrid::getValueIterator
ValueIterator getValueIterator()
Definition: CartesianGrid.h:411
esys::lsm::PieceForGrid
vtk::UnstructuredPiece< PointType, PointDataTypeForGrid > PieceForGrid
Definition: InteractionToStressConverter.cpp:170
esys::lsm::StressTensorCollection::getIterator
StressTensorIterator getIterator()
Definition: StressTensorCollection.h:58
esys::lsm::vtk::StructuredPiece::setExtent
void setExtent(const Vec3L &minIndex, const Vec3L &maxIndex)
Definition: VtkStructuredGrid.h:54
esys::lsm::InteractionToStressConverter
Definition: InteractionToStressConverter.h:49
esys::lsm::InteractionToStressConverter::m_bBox
BoundingBox m_bBox
Definition: InteractionToStressConverter.h:157
esys::lsm::PointDataTypeForGrid::Inherited
vtk::DataTypeTuple< vtk::Float64Type, vtk::Float64Type, vtk::Matrix3Type > Inherited
Definition: InteractionToStressConverter.cpp:154
esys::lsm::StressTensorPtrGrid
CartesianGrid< StressTensor * > StressTensorPtrGrid
Definition: InteractionToStressConverter.h:45
EigenvalueCalculator.h
esys::lsm::PointDataType::PointDataType
PointDataType()
Definition: InteractionToStressConverter.cpp:129
esys::lsm::TwoDIntersectionCalker::getVolume
double getVolume(const Sphere &sphere)
Definition: InteractionToStressConverter.cpp:103
esys::lsm::InteractionToStressConverter::m_stressTensorCollection
StressTensCollection m_stressTensorCollection
Definition: InteractionToStressConverter.h:159
GaussianGridder.h
esys::lsm::PointDataType::Inherited
vtk::DataTypeTuple< vtk::Float64Type, vtk::Float64Type, vtk::Matrix3Type, vtk::Float64Type > Inherited
Definition: InteractionToStressConverter.cpp:127
esys::lsm::vtk::Vec3Type
Definition: VtkDataType.h:157
esys::lsm::vtk::StructuredGrid::writeXml
virtual void writeXml(std::ostream &oStream)
Definition: VtkStructuredGrid.h:124
esys::lsm::vtk::StructuredPiece
Definition: VtkStructuredGrid.h:35
esys::lsm::vtk::StructuredPiece::getMinExtent
const Vec3L & getMinExtent() const
Definition: VtkStructuredGrid.h:77
esys::lsm::vtk::UnstructuredGrid::writeXml
virtual void writeXml(std::ostream &oStream)
Definition: VtkUnstructuredGrid.h:84
esys::lsm::CartesianGrid::getMinVecIndex
const Vec3L & getMinVecIndex() const
Definition: CartesianGrid.h:326
CircleBoxVolCalculator.h
esys::lsm::CartesianGrid< Tensor >::CellConstIterator
TCellIterator< const CartesianGrid *, const Cell &, Cell > CellConstIterator
Definition: CartesianGrid.h:232
esys::lsm::StressTensorCollection::size
int size() const
Definition: StressTensorCollection.h:63
esys::lsm::PointDataTypeForGrid::PointDataTypeForGrid
PointDataTypeForGrid()
Definition: InteractionToStressConverter.cpp:156
esys::lsm::ThreeDIntersectionCalker
Definition: InteractionToStressConverter.cpp:80
SphereBoxVolCalculator.h
esys::lsm::vtk::StructuredGrid
Definition: VtkStructuredGrid.h:95
BoundingBox.h