5 #ifndef _STRUCTUREDEFORMATIONMODEL_H_
6 #define _STRUCTUREDEFORMATIONMODEL_H_
43 const int numMeshes =
_meshes.size();
44 for (
int m=0;m<numMeshes;m++)
51 shared_ptr<CRConnectivity> nodeCellsPtr = cellNodes.
getTranspose();
63 for(
int j=0;j<nNodes;j++)
67 for(
int k=0;k<nodeCells.
getCount(j);k++)
69 const int num = nodeCells(j,k);
70 const VectorT3 ds = cellCentroid[num]-nodeCoordinate[j];
71 dr += cellDisplacement[num]/
mag(ds);
72 weight += one/
mag(ds);
75 nodeDisplacement[j] = dr;
82 const int numMeshes =
_meshes.size();
83 for (
int n=0;n<numMeshes;n++)
96 nodeCoordK1 = nodeCoord;
97 for (
int i=0;i<nNodes;i++)
99 nodeCoord[i] = nodeCoord0[i] + nodeDisplacement[i];
106 const int numMeshes =
_meshes.size();
107 for (
int n=0;n<numMeshes;n++)
111 const int nNodes = nodes.
getCount();
122 nodeCoordK1 = nodeCoord;
123 for (
int i=0;i<nNodes;i++)
125 if(displacementOptions[i] == 3)
127 nodeCoord[i] = nodeCoord0[i] + nodeDisplacement[i];
137 Field& velocityField,
138 const double timeStep)
159 const int nCommon = myNodeIndices.
getLength();
160 for(
int n=0; n<nCommon; n++)
162 bNodeCoord[bNodeIndices[n]] = nodeCoord[myNodeIndices[n]];
163 bMeshCoord[bNodeIndices[n]] = nodeCoord[myNodeIndices[n]];
172 shared_ptr<VectorT3Array>
175 velocityField.
addArray(bMeshFaces,bVelocity);
182 int bMeshFaceCount=0;
190 const int nFaces = faces.
getCount();
192 for(
int f=0; f<nFaces; f++)
194 const int nFaceNodes = faceNodes.
getCount(f);
197 for(
int nn=0; nn<nFaceNodes; nn++)
199 const int node = faceNodes(f,nn);
200 VectorT3 vn = (w[node] - wN1[node])/timeStep;
204 (*bVelocity)[bMeshFaceCount] = vf;
215 Field& velocityField,
const map<int,int>& commonFacesMap,
216 const double timeStep)
220 shared_ptr<VectorT3Array>
224 velocityField.
addArray(bMeshFaces,bVelocity);
235 const int nFaces = faces.
getCount();
237 for(
int f=0; f<nFaces; f++){
238 const int faceID = f + faces.
getOffset();
239 const int nFaceNodes = faceNodes.
getCount(f);
242 for(
int nn=0; nn<nFaceNodes; nn++){
243 const int node = faceNodes(f,nn);
244 VectorT3 vn = (w[node] - wN1[node])/timeStep;
248 (*bVelocity)[ commonFacesMap.find(faceID)->second ] = vf;
262 return myNodeIndices;
267 const int numMeshes =
_meshes.size();
268 for (
int n=0;n<numMeshes;n++)
275 dynamic_pointer_cast<ArrayBase>(nodeCoord.
newCopy()));
278 dynamic_pointer_cast<ArrayBase>(nodeCoord.
newCopy()));
280 shared_ptr<VectorT3Array>
282 nodeDisplacement->zero();
285 shared_ptr<VectorT3Array>
287 nodeDisplacementN1->zero();
296 const int numMeshes =
_meshes.size();
297 for (
int n=0; n<numMeshes; n++)
const FaceGroupList & getBoundaryFaceGroups() const
int getCount(const int i) const
Field displacementOptions
shared_ptr< FaceGroup > FaceGroupPtr
const FaceGroupList & getAllFaceGroups() const
const StorageSite & getNodes() const
const CRConnectivity & getFaceNodes(const StorageSite &site) const
const CommonMap & getCommonMap() const
T mag(const Vector< T, 3 > &a)
const Array< VecD3 > & getNodeCoordinates() const
map< const StorageSite *, shared_ptr< Array< int > > > CommonMap
const StorageSite & getFaces() const
const StorageSite & getCells() const
void addArray(const StorageSite &, shared_ptr< ArrayBase > a)
shared_ptr< CRConnectivity > getTranspose() const
virtual shared_ptr< IContainer > newCopy() const
const CRConnectivity & getCellNodes() const
vector< Mesh * > MeshList