libsurf
Programmer's Documentation
Merged mesh for aeroelastic problems.
FsiMesh contains meshes for both structural and aerodynamic domain solvers, along with data about the interface nodes.
#include <fsimesh.h>
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 MxMesh & | fluidMesh () const |
access attached aerodynamic mesh | |
const MxMesh & | structMesh () 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 |
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).