libsurf
Programmer's Documentation

Public Types | Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
FsiMesh Class Reference

Detailed Description

Merged mesh for aeroelastic problems.

FsiMesh contains meshes for both structural and aerodynamic domain solvers, along with data about the interface nodes.

Todo:
  • Change search for nearest fluid element to use search tree for all fluid elements.
  • Move distance computation (integration point in nearest element search) to element type or MxMesh.

#include <fsimesh.h>

Collaboration diagram for FsiMesh:
[legend]

Public Types

typedef CsrMatrix< Real, 6 > PFMap
 matrix mapping pressure values to nodal forces and moments
 

Public Member Functions

 FsiMesh ()
 create empty mesh
 
virtual ~FsiMesh ()
 base class
 
Real catchRadius () const
 radius to search for aerodynamic mesh elements to project on
 
void catchRadius (Real r)
 radius to search for aerodynamic mesh elements to project on
 
Real maxNormalAngle () const
 maximum angle between normals of elements considered for projection
 
void maxNormalAngle (Real phi)
 maximum angle between normals of elements considered for projection
 
Real minNormalAngle () const
 minimum angle between normals of elements considered for projection
 
void minNormalAngle (Real phi)
 minimum angle between normals of elements considered for projection
 
const MxMeshfluidMesh () const
 access attached aerodynamic mesh
 
const MxMeshstructMesh () const
 access attached structural mesh
 
void mergeStruct (const MxMeshPtr &pmx, const Indices &pidwet=Indices(), const Indices &pidintern=Indices())
 Import sections of the structural mesh (Nastran). More...
 
void mergeBeams (const MxMeshPtr &pmx)
 Import sections of the structural mesh (Nastran). More...
 
void mergeFluid (const MxMeshPtr &pmx, const Indices &ifboco=Indices())
 Import aerodynamic mesh. More...
 
void buildInterpolator ()
 call after all meshes have been merged
 
const Indices & structuralElements () const
 access array of structural interface elements
 
const Indices & structuralNodes () const
 access array of structural interface nodes
 
const Indices & fluidElements () const
 access array of structural interface elements
 
const Indices & fluidNodes () const
 access array of structural interface nodes
 
bool extractPressure (Real qoo, uint ixf, Vector &pf) const
 access pressure field in fluid mesh
 
bool extractPressure (Real qoo, Vector &pf, const std::string &fieldName="CoefPressure") const
 access pressure field in fluid mesh
 
void assemblePressure (Real qoo, const Indices &ifield, const Vector &coef, Vector &pf) const
 assemble pressure field by linear combination
 
void agglomerate (const Vector &pf, PointList< 6 > &fnodal) const
 agglomerate aerodynamic element loads into nearest structural node
 
void agglomerate (const Matrix &mpf, PointGrid< 6 > &fnodal) const
 agglomerate aerodynamic element loads into nearest structural node
 
void integrate (const Vector &pf, PointList< 6 > &fnodal) const
 integrate over structural elements
 
void integrate (const Matrix &pf, PointGrid< 6 > &fnodal) const
 integrate over structural elements, multiple pressure fields
 
uint exportForces (const PointList< 3 > &fnodal, std::ostream &os, uint sid=1, Real ff=1.0) const
 establish a mapping matrix - not implemented yet More...
 
uint exportForces (const PointList< 3 > &fnodal, const std::string &fname, uint sid=1, Real ff=1.0) const
 export nodal forces to nastran bulk data file
 
uint exportForces (const PointList< 6 > &fnodal, std::ostream &os, uint sid=1, Real ff=1.0, Real lf=1.0) const
 export nodal forces and moments to nastran bulk data file
 
uint exportForces (const PointList< 6 > &fnodal, const std::string &fname, uint sid=1, Real ff=1.0, Real lf=1.0) const
 export nodal forces and moments to nastran bulk data file
 
uint exportForces (uint ifield, std::ostream &os, uint sid=1, Real ff=1.0, Real lf=1.0) const
 export nodal forces and moments from stored field to nastran bulk data
 
uint exportDarea (uint sid, const PointList< 6 > &fnodal, std::ostream &os, Real ff=1.0, Real lf=1.0) const
 export a nodal load vector as a DAREA set for direct transient analysis
 
Vct6 sum (const Vct3 &ptref, const PointList< 6 > &fm) const
 sum nodal forces and moments for a given reference point
 
uint appendSifField (const PointList< 3 > &fn, const std::string &suffix="")
 append nodal structural nodal force vector as a vector field
 
void appendSifField (const PointList< 6 > &fn, const std::string &suffix="")
 append nodal structural nodal force and moment vector as two vector fields
 
void residualizeLoads (const CsrMatrix< Real > &M)
 residualize all stored load fields
 
void augmentedStates (const CsrMatrix< Real > &M, const CsrMatrix< Real > &K)
 compute augmented states for MTA method
 
virtual void clear ()
 overload clear
 
void centerForces (const Vector &pf, PointList< 3 > &ctr, PointList< 3 > &cf) const
 compute element centers and center forces (for moments)
 
void centerForces (const Matrix &pf, PointList< 3 > &ctr, PointGrid< 3 > &cf) const
 compute element centers and center forces (for moments)
 

Private Member Functions

void collectNodes (const MxMesh &mx, const Indices &elix, Indices &nds) const
 collect node indices
 
void extractGids (const MxMesh &smx)
 extract nastran GIDs
 
void buildTree (const MxMesh &mx, const Indices &idx, BSearchTree &tree) const
 build search tree for node set
 
void buildMap (const MxMesh &mx, const Indices &nds, const Indices &elm, ConnectMap &v2emap) const
 build node-to-element mapping
 
void evalPressure (const Vector &pf, uint eix, const Vct2 &uv, Vct3 &psn) const
 compute -p*normal for fluid element eix
 
void evalPressure (const Matrix &pf, uint eix, const Vct2 &uv, PointList< 3 > &psn) const
 compute -p*normal for fluid element eix
 
uint nearestFluidElement (const Vct3 &pt, Vct2 &uv) const
 determine nearest element and element coordinates
 
uint nearestFluidElement (const Vct3 &pt, const Vct3 &nrm, Vct2 &uv) const
 determine nearest element and element coordinates
 
void nearbyFluidElements (const Vct3 &pt, const Vct3 &nrm, Indices &elm) const
 collect fluid elements near an integration point
 
Real project (const Vct3 &pt, uint eix, Vct2 &uv) const
 compute point-to-surface element distance and projection
 
Real projectTri3 (const Vct3 &pt, const uint *vi, Vct2 &uv) const
 element projection for linear triangles
 
template<int M>
void atomicUpdate (uint inode, const SVector< M > &fj, PointList< M > &nf) const
 update nodal force vector atomically
 
template<int M>
void atomicUpdate (uint inode, const SVector< M > &fj, uint jcol, PointGrid< M > &nf) const
 update nodal force vector atomically
 
Vct3 moment (const Vct3 &c, const PointList< 3 > &ctr, const PointList< 3 > &cf) const
 compute moments about c
 
void mappingPattern (ConnectMap &spty) const
 compute sparsity pattern for mapping matrix
 

Private Attributes

MxMeshPtr smx
 pointer to structural mesh
 
MxMeshPtr fmx
 pointer to aerdynamic mesh
 
Indices sifNode
 indices of structural interface nodes
 
Indices sifElix
 indices of structural interface elements
 
Indices fifNode
 indices of fluid interface nodes
 
Indices fifElix
 indices of fluid interface elements
 
Indices gids
 nastran grid-point IDs for structIfNodes and all nodes
 
Indices allGids
 
BSearchTree fnTree
 search tree for fluid nodes
 
BSearchTree snTree
 search tree for structural nodes
 
ConnectMap fn2e
 connectivity from fluid nodes to elements
 
Real searchRadius
 algorithm parameter : radius to search for nearby element nodes
 
Real minCosPhi
 algorithm parameter : minimum and maximum cosine of angle between normals
 
Real maxCosPhi
 

Friends

class FsiElement
 
class FsiTri3
 
class FsiQuad4
 

Member Function Documentation

uint FsiMesh::exportForces ( const PointList< 3 > &  fnodal,
std::ostream &  os,
uint  sid = 1,
Real  ff = 1.0 
) const

establish a mapping matrix - not implemented yet

export nodal forces to nastran bulk data file

void FsiMesh::mergeBeams ( const MxMeshPtr &  pmx)

Import sections of the structural mesh (Nastran).

void FsiMesh::mergeFluid ( const MxMeshPtr &  pmx,
const Indices &  ifboco = Indices() 
)

Import aerodynamic mesh.

void FsiMesh::mergeStruct ( const MxMeshPtr &  pmx,
const Indices &  pidwet = Indices(),
const Indices &  pidintern = Indices() 
)

Import sections of the structural mesh (Nastran).


The documentation for this class was generated from the following files:
Generated on Mon Aug 15 2022 03:03:16 for libsurf by   doxygen 1.8.5