MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
beam.h File Reference
#include "myassert.h"
#include "except.h"
#include "strnode.h"
#include "elem.h"
#include "gravity.h"
#include "constltp.h"
Include dependency graph for beam.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Beam
 
class  Beam::ErrGeneric
 
class  ViscoElasticBeam
 

Functions

void ReadBeamCustomOutput (DataManager *pDM, MBDynParser &HP, unsigned int uLabel, Beam::Type BT, unsigned &uFlags, OrientationDescription &od)
 
void ReadOptionalBeamCustomOutput (DataManager *pDM, MBDynParser &HP, unsigned int uLabel, Beam::Type BT, unsigned &uFlags, OrientationDescription &od)
 
ElemReadBeam (DataManager *pDM, MBDynParser &HP, unsigned int uLabel)
 

Variables

const char * psBeamNames []
 

Function Documentation

Elem* ReadBeam ( DataManager pDM,
MBDynParser HP,
unsigned int  uLabel 
)

Definition at line 1876 of file beam.cc.

References AbsRefFrame, Node::ABSTRACT, Elem::BEAM, Mat3xN::Copy(), DEBUGCOUTFNAME, DEBUGLCOUT, ConstLawType::ELASTIC, Beam::ELASTIC, Eye3, DataManager::fReadOutput(), MBDynParser::GetConstLaw6D(), ConstitutiveLaw< T, Tder >::GetFDE(), HighParser::GetInt(), WithLabel::GetLabel(), IncludeParser::GetLineData(), DataManager::GetLogFile(), Mat6x6::GetMat11(), MBDynParser::GetMat6xN(), MBDynParser::GetPosRel(), StructNode::GetRCurr(), MBDynParser::GetRotAbs(), MBDynParser::GetRotRel(), StructDispNode::GetXCurr(), ConstitutiveLaw< T, Tder >::iGetNumDof(), Beam::InterpState(), HighParser::IsArg(), HighParser::IsKeyWord(), CGR_Rot::MatR, MBDYN_EXCEPT_ARGS, Mat3x3::MulTM(), MYDEBUG_INPUT, NO_OP, StructDispNode::od, Beam::OUTPUT_NONE, CGR_Rot::Param, ConstitutiveLaw< T, Tder >::pCopy(), R, DataManager::ReadNode(), ReadOptionalBeamCustomOutput(), Mat3xN::Resize(), Beam::S_I, SAFENEWARR, SAFENEWWITHCONSTRUCTOR, Beam::SII, StructNode::StructNode(), Node::STRUCTURAL, ConstLawType::UNKNOWN, UNKNOWN_ORIENTATION_DESCRIPTION, Beam::VISCOELASTIC, and Zero3.

Referenced by DataManager::ReadOneElem().

1877 {
1878  DEBUGCOUTFNAME("ReadBeam");
1879 
1880  /* Per ogni nodo: */
1881 
1882  /* Nodo 1 */
1883  const StructNode* pNode1 = pDM->ReadNode<const StructNode, Node::STRUCTURAL>(HP);
1884 
1885  const Mat3x3& R1(pNode1->GetRCurr());
1886  if (HP.IsKeyWord("position")) {
1887  /* just eat it! */
1888  NO_OP;
1889  }
1890  Vec3 f1(HP.GetPosRel(ReferenceFrame(pNode1)));
1891  Mat3x3 Rn1(Eye3);
1892  if (HP.IsKeyWord("orientation") || HP.IsKeyWord("rot")) {
1893  Rn1 = HP.GetRotRel(ReferenceFrame(pNode1));
1894  }
1895 
1896  DEBUGLCOUT(MYDEBUG_INPUT, "node 1 offset (node reference frame): "
1897  << f1 << std::endl
1898  << "(global frame): "
1899  << pNode1->GetXCurr()+pNode1->GetRCurr()*f1 << std::endl);
1900 
1901  /* Nodo 2 */
1902  const StructNode* pNode2 = pDM->ReadNode<const StructNode, Node::STRUCTURAL>(HP);
1903 
1904  Mat3x3 R2(pNode2->GetRCurr());
1905  if (HP.IsKeyWord("position")) {
1906  /* just eat it! */
1907  NO_OP;
1908  }
1909  Vec3 f2(HP.GetPosRel(ReferenceFrame(pNode2)));
1910  Mat3x3 Rn2(Eye3);
1911  if (HP.IsKeyWord("orientation") || HP.IsKeyWord("rot")) {
1912  Rn2 = HP.GetRotRel(ReferenceFrame(pNode2));
1913  }
1914 
1915  DEBUGLCOUT(MYDEBUG_INPUT, "node 2 offset (node reference frame): "
1916  << f2 << std::endl
1917  << "(global frame): "
1918  << pNode2->GetXCurr()+pNode2->GetRCurr()*f2 << std::endl);
1919 
1920  /* Nodo 3 */
1921  const StructNode* pNode3 = pDM->ReadNode<const StructNode, Node::STRUCTURAL>(HP);
1922 
1923  Mat3x3 R3(pNode3->GetRCurr());
1924  if (HP.IsKeyWord("position")) {
1925  /* just eat it! */
1926  NO_OP;
1927  }
1928  Vec3 f3(HP.GetPosRel(ReferenceFrame(pNode3)));
1929  Mat3x3 Rn3(Eye3);
1930  if (HP.IsKeyWord("orientation") || HP.IsKeyWord("rot")) {
1931  Rn3 = HP.GetRotRel(ReferenceFrame(pNode3));
1932  }
1933 
1934  DEBUGLCOUT(MYDEBUG_INPUT, "node 3 offset (node reference frame): "
1935  << f3 << std::endl
1936  << "(global frame): "
1937  << pNode3->GetXCurr()+pNode3->GetRCurr()*f3 << std::endl);
1938 
1939  /* Per ogni punto: */
1940 
1941  /* Punto I */
1942 
1943  /* Matrice R */
1944  Mat3x3 R_I;
1945  bool b_I(false);
1946  if (HP.IsKeyWord("from" "nodes") || HP.IsKeyWord("node")) {
1947  b_I = true;
1948  } else {
1949  R_I = HP.GetRotAbs(::AbsRefFrame);
1950  }
1951 
1952  /* Legame costitutivo */
1954  ConstitutiveLaw6D* pD_I = HP.GetConstLaw6D(CLType_I);
1955 
1956  if (pD_I->iGetNumDof() != 0) {
1957  silent_cerr("line " << HP.GetLineData()
1958  << ": Beam(" << uLabel << ") "
1959  "does not support dynamic constitutive laws yet"
1960  << std::endl);
1962  }
1963 
1964 #ifdef DEBUG
1965  Mat6x6 MTmp(pD_I->GetFDE());
1966  Mat3x3 D11(MTmp.GetMat11());
1967  Mat3x3 D12(MTmp.GetMat12());
1968  Mat3x3 D21(MTmp.GetMat21());
1969  Mat3x3 D22(MTmp.GetMat22());
1970 
1972  "First point matrix D11: " << std::endl << D11 << std::endl
1973  << "First point matrix D12: " << std::endl << D12 << std::endl
1974  << "First point matrix D21: " << std::endl << D21 << std::endl
1975  << "First point matrix D22: " << std::endl << D22 << std::endl);
1976 #endif
1977 
1978 
1979  /* Punto II */
1980 
1981  /* Matrice R */
1982  Mat3x3 RII;
1983  bool bII(false);
1984  if (HP.IsKeyWord("same")) {
1985  if (b_I) {
1986  bII = true;
1987  } else {
1988  RII = R_I;
1989  }
1990  } else {
1991  if (HP.IsKeyWord("from" "nodes") || HP.IsKeyWord("node")) {
1992  bII = true;
1993  } else {
1994  RII = HP.GetRotAbs(::AbsRefFrame);
1995  }
1996  }
1997 
1998  /* Legame costitutivo */
2000  ConstitutiveLaw6D* pDII = NULL;
2001 
2002  if (HP.IsKeyWord("same")) {
2003  pDII = pD_I->pCopy();
2004  CLTypeII = CLType_I;
2005 
2006  } else {
2007  pDII = HP.GetConstLaw6D(CLTypeII);
2008 
2009  if (pDII->iGetNumDof() != 0) {
2010  silent_cerr("line " << HP.GetLineData()
2011  << ": Beam(" << uLabel << ") "
2012  "does not support dynamic constitutive laws yet"
2013  << std::endl);
2015  }
2016  }
2017 
2018  Beam::Type Type;
2019  if (CLType_I == ConstLawType::ELASTIC && CLTypeII == ConstLawType::ELASTIC) {
2020  Type = Beam::ELASTIC;
2021  } else {
2022  Type = Beam::VISCOELASTIC;
2023  }
2024 
2025 #ifdef DEBUG
2026  MTmp = pDII->GetFDE();
2027  D11 = MTmp.GetMat11();
2028  D12 = MTmp.GetMat12();
2029  D21 = MTmp.GetMat21();
2030  D22 = MTmp.GetMat22();
2031 
2033  "Second point matrix D11: " << std::endl << D11 << std::endl
2034  << "Second point matrix D12: " << std::endl << D12 << std::endl
2035  << "Second point matrix D21: " << std::endl << D21 << std::endl
2036  << "Second point matrix D22: " << std::endl << D22 << std::endl);
2037 #endif
2038 
2039  flag fPiezo(0);
2040  Mat3xN PiezoMat[2][2];
2041  integer iNumElec = 0;
2042  const ScalarDifferentialNode **pvElecDofs = 0;
2043  if (HP.IsKeyWord("piezoelectric" "actuator")) {
2044  fPiezo = flag(1);
2046  "Piezoelectric actuator beam is expected" << std::endl);
2047 
2048  iNumElec = HP.GetInt();
2050  "piezo actuator " << uLabel << " has " << iNumElec
2051  << " electrodes" << std::endl);
2052  if (iNumElec <= 0) {
2053  silent_cerr("PiezoElectricBeam(" << uLabel << "): "
2054  "illegal number of electric nodes " << iNumElec
2055  << " at line " << HP.GetLineData() << std::endl);
2057  }
2058 
2059  SAFENEWARR(pvElecDofs, const ScalarDifferentialNode *, iNumElec);
2060 
2061  for (integer i = 0; i < iNumElec; i++) {
2062  pvElecDofs[i] = pDM->ReadNode<const ScalarDifferentialNode, Node::ABSTRACT>(HP);
2063  }
2064 
2065  PiezoMat[0][0].Resize(iNumElec);
2066  PiezoMat[1][0].Resize(iNumElec);
2067  PiezoMat[0][1].Resize(iNumElec);
2068  PiezoMat[1][1].Resize(iNumElec);
2069 
2070  /* leggere le matrici (6xN sez. 1, 6xN sez. 2) */
2071  HP.GetMat6xN(PiezoMat[0][0], PiezoMat[1][0], iNumElec);
2072  if (HP.IsKeyWord("same")) {
2073  PiezoMat[0][1].Copy(PiezoMat[0][0]);
2074  PiezoMat[1][1].Copy(PiezoMat[1][0]);
2075  } else {
2076  HP.GetMat6xN(PiezoMat[0][1], PiezoMat[1][1], iNumElec);
2077  }
2078 
2079 #if 0
2080  DEBUGLCOUT(MYDEBUG_INPUT, "Piezo matrix I:" << std::endl << PiezoMat[0][0] << PiezoMat[1][0]);
2081  DEBUGLCOUT(MYDEBUG_INPUT, "Piezo matrix II:" << std::endl << PiezoMat[0][1] << PiezoMat[1][1]);
2082 #endif /* 0 */
2083  }
2084 
2086  unsigned uFlags = Beam::OUTPUT_NONE;
2087  ReadOptionalBeamCustomOutput(pDM, HP, uLabel, Type, uFlags, od);
2088 
2089  flag fOut = pDM->fReadOutput(HP, Elem::BEAM);
2090  if (fOut) {
2091  fOut |= uFlags;
2092  }
2093 
2094  /* Se necessario, interpola i parametri di rotazione delle sezioni */
2095  if (b_I || bII) {
2096  Mat3x3 R(R2*Rn2);
2097  Vec3 g1(CGR_Rot::Param, R.MulTM(R1*Rn1));
2098  Vec3 g3(CGR_Rot::Param, R.MulTM(R3*Rn3));
2099  if (b_I) {
2101  }
2102  if (bII) {
2104  }
2105  }
2106 
2107  std::ostream& out = pDM->GetLogFile();
2108  out << "beam3: " << uLabel
2109  << " " << pNode1->GetLabel()
2110  << " ", f1.Write(out, " ")
2111  << " " << pNode2->GetLabel()
2112  << " ", f2.Write(out, " ")
2113  << " " << pNode3->GetLabel()
2114  << " ", f3.Write(out, " ")
2115  << std::endl;
2116 
2117  Elem* pEl = NULL;
2118 
2119  if ((CLType_I == ConstLawType::ELASTIC)
2120  && (CLTypeII == ConstLawType::ELASTIC))
2121  {
2122  if (fPiezo == 0) {
2124  Beam,
2125  Beam(uLabel,
2126  pNode1, pNode2, pNode3,
2127  f1, f2, f3,
2128  Rn1, Rn2, Rn3,
2129  R_I, RII,
2130  pD_I, pDII,
2131  od, fOut));
2132  } else {
2135  PiezoActuatorBeam(uLabel,
2136  pNode1, pNode2, pNode3,
2137  f1, f2, f3,
2138  Rn1, Rn2, Rn3,
2139  R_I, RII,
2140  pD_I, pDII,
2141  iNumElec,
2142  pvElecDofs,
2143  PiezoMat[0][0], PiezoMat[1][0],
2144  PiezoMat[0][1], PiezoMat[1][1],
2145  od, fOut));
2146  }
2147 
2148  } else /* At least one is VISCOUS or VISCOELASTIC */ {
2149  if (fPiezo == 0) {
2152  ViscoElasticBeam(uLabel,
2153  pNode1, pNode2, pNode3,
2154  f1, f2, f3,
2155  Rn1, Rn2, Rn3,
2156  R_I, RII,
2157  pD_I, pDII,
2158  od, fOut));
2159  } else {
2162  PiezoActuatorVEBeam(uLabel,
2163  pNode1, pNode2, pNode3,
2164  f1, f2, f3,
2165  Rn1, Rn2, Rn3,
2166  R_I, RII,
2167  pD_I, pDII,
2168  iNumElec,
2169  pvElecDofs,
2170  PiezoMat[0][0], PiezoMat[1][0],
2171  PiezoMat[0][1], PiezoMat[1][1],
2172  od, fOut));
2173  }
2174  }
2175 
2176  /* Costruttore normale
2177  * Beam(unsigned int uL,
2178  * const StructNode* pN1, const StructNode* pN2, const StructNode* pN3,
2179  * const Vec3& X1, const Vec3& X2, const Vec3& X3,
2180  * const Vec3& F1, const Vec3& F2, const Vec3& F3,
2181  * const Mat3x3& r_I, const Mat3x3& rII,
2182  * const Mat3x3& d11_I, const Mat3x3& d12_I,
2183  * const Mat3x3& d21_I, const Mat3x3& d22_I,
2184  * const Mat3x3& d11II, const Mat3x3& d12II,
2185  * const Mat3x3& d21II, const Mat3x3& d22II,
2186  * const Vec3& eps0_I, const Vec3& k0_I,
2187  * const Vec3& eps0II, const Vec3& k0II);
2188  */
2189 
2190 
2191  /* Se non c'e' il punto e virgola finale */
2192  if (HP.IsArg()) {
2193  silent_cerr("semicolon expected "
2194  "at line " << HP.GetLineData() << std::endl);
2196  }
2197 
2198  return pEl;
2199 } /* End of ReadBeam() */
flag fReadOutput(MBDynParser &HP, const T &t) const
Definition: dataman.h:1064
Mat3x3 GetRotRel(const ReferenceFrame &rf)
Definition: mbpar.cc:1795
const Vec3 Zero3(0., 0., 0.)
const Param_Manip Param
Definition: matvec3.cc:644
long int flag
Definition: mbdyn.h:43
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
Definition: matvec3.h:98
#define DEBUGCOUTFNAME(fname)
Definition: myassert.h:256
virtual integer GetInt(integer iDefval=0)
Definition: parser.cc:1050
static Vec3 InterpState(const Vec3 &v1, const Vec3 &v2, const Vec3 &v3, enum Section Sec)
Definition: beam.cc:429
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
Mat3x3 GetRotAbs(const ReferenceFrame &rf)
Definition: mbpar.cc:1857
virtual void GetMat6xN(Mat3xN &m1, Mat3xN &m2, integer iNumCols)
Definition: mbpar.cc:2743
virtual const Tder & GetFDE(void) const
Definition: constltp.h:129
const Mat3x3 Eye3(1., 0., 0., 0., 1., 0., 0., 0., 1.)
OrientationDescription
Definition: matvec3.h:1597
#define NO_OP
Definition: myassert.h:74
Mat3x3 GetMat11(void)
Definition: matvec6.h:320
const ReferenceFrame AbsRefFrame(0, Vec3(0., 0., 0), Mat3x3(1., 0., 0., 0., 1., 0., 0., 0., 1.), Vec3(0., 0., 0), Vec3(0., 0., 0), EULER_123)
Vec3 GetPosRel(const ReferenceFrame &rf)
Definition: mbpar.cc:1331
virtual bool IsKeyWord(const char *sKeyWord)
Definition: parser.cc:910
virtual ConstitutiveLaw< T, Tder > * pCopy(void) const =0
Definition: beam.h:56
Type
Definition: beam.h:64
const MatR_Manip MatR
Definition: matvec3.cc:645
ConstitutiveLaw6D * GetConstLaw6D(ConstLawType::Type &clt)
Definition: mbpar.cc:1995
Mat3x3 MulTM(const Mat3x3 &m) const
Definition: matvec3.cc:500
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
Definition: mynewmem.h:698
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
void Resize(integer ns)
Definition: matvec3n.cc:318
void ReadOptionalBeamCustomOutput(DataManager *pDM, MBDynParser &HP, unsigned int uLabel, Beam::Type BT, unsigned &uFlags, OrientationDescription &od)
Definition: beam.cc:1863
virtual unsigned int iGetNumDof(void) const
Definition: constltp.h:138
virtual bool IsArg(void)
Definition: parser.cc:807
Definition: elem.h:75
std::ostream & GetLogFile(void) const
Definition: dataman.h:326
#define SAFENEWARR(pnt, item, sz)
Definition: mynewmem.h:701
const Mat3xN & Copy(const Mat3xN &m)
Definition: matvec3n.cc:407
long int integer
Definition: colamd.c:51
virtual HighParser::ErrOut GetLineData(void) const
Definition: parsinc.cc:697
unsigned int GetLabel(void) const
Definition: withlab.cc:62
Node * ReadNode(MBDynParser &HP, Node::Type type) const
Definition: dataman3.cc:2309
#define DEBUGLCOUT(level, msg)
Definition: myassert.h:244
Mat3x3 R

Here is the call graph for this function:

void ReadBeamCustomOutput ( DataManager pDM,
MBDynParser HP,
unsigned int  uLabel,
Beam::Type  BT,
unsigned &  uFlags,
OrientationDescription od 
)

Definition at line 1776 of file beam.cc.

References Beam::ELASTIC, IncludeParser::GetLineData(), HighParser::IsArg(), HighParser::IsKeyWord(), MBDYN_EXCEPT_ARGS, Beam::OUTPUT_EP_ALL, Beam::OUTPUT_EP_CONFIGURATION, Beam::OUTPUT_EP_F, Beam::OUTPUT_EP_FORCES, Beam::OUTPUT_EP_K, Beam::OUTPUT_EP_KP, Beam::OUTPUT_EP_M, Beam::OUTPUT_EP_NU, Beam::OUTPUT_EP_NUP, Beam::OUTPUT_EP_R, Beam::OUTPUT_EP_STRAIN_RATES, Beam::OUTPUT_EP_STRAINS, Beam::OUTPUT_EP_X, Beam::OUTPUT_NONE, and ReadOptionalOrientationDescription().

Referenced by DataManager::ReadControl(), and ReadOptionalBeamCustomOutput().

1778 {
1779  uFlags = Beam::OUTPUT_NONE;
1780 
1781  while (HP.IsArg()) {
1782  unsigned uFlag;
1783 
1784  if (HP.IsKeyWord("position")) {
1785  uFlag = Beam::OUTPUT_EP_X;
1786 
1787  } else if (HP.IsKeyWord("orientation")) {
1788  uFlag = Beam::OUTPUT_EP_R;
1789 
1790  } else if (HP.IsKeyWord("configuration")) {
1792 
1793  } else if (HP.IsKeyWord("force")) {
1794  uFlag = Beam::OUTPUT_EP_F;
1795 
1796  } else if (HP.IsKeyWord("moment")) {
1797  uFlag = Beam::OUTPUT_EP_M;
1798 
1799  } else if (HP.IsKeyWord("forces")) {
1800  uFlag = Beam::OUTPUT_EP_FORCES;
1801 
1802  } else if (HP.IsKeyWord("linear" "strain")) {
1803  uFlag = Beam::OUTPUT_EP_NU;
1804 
1805  } else if (HP.IsKeyWord("angular" "strain")) {
1806  uFlag = Beam::OUTPUT_EP_K;
1807 
1808  } else if (HP.IsKeyWord("strains")) {
1809  uFlag = Beam::OUTPUT_EP_STRAINS;
1810 
1811  } else if (HP.IsKeyWord("linear" "strain" "rate")) {
1812  uFlag = Beam::OUTPUT_EP_NUP;
1813 
1814  } else if (HP.IsKeyWord("angular" "strain" "rate")) {
1815  uFlag = Beam::OUTPUT_EP_KP;
1816 
1817  } else if (HP.IsKeyWord("strain rates")) {
1819 
1820  } else if (HP.IsKeyWord("all")) {
1821  uFlag = Beam::OUTPUT_EP_ALL;
1822 
1823  } else if (HP.IsKeyWord("none")) {
1824  uFlag = Beam::OUTPUT_NONE;
1825 
1826  } else {
1827  break;
1828  }
1829 
1830  if (uFlags & uFlag) {
1831  silent_cerr("Beam(" << uLabel << "): "
1832  "duplicate custom output "
1833  "at line " << HP.GetLineData()
1834  << std::endl);
1836  }
1837 
1838  if (uFlag & Beam::OUTPUT_EP_STRAIN_RATES) {
1839  if (BT == Beam::ELASTIC) {
1840  silent_cerr("Beam(" << uLabel << "): "
1841  "strain rates only allowed for viscoelastic beams (ignored) "
1842  "at line " << HP.GetLineData()
1843  << std::endl);
1844  uFlag &= ~Beam::OUTPUT_EP_STRAIN_RATES;
1845  }
1846  }
1847 
1848  if (uFlag & Beam::OUTPUT_EP_R) {
1849  od = ReadOptionalOrientationDescription(pDM, HP);
1850  }
1851 
1852  if (uFlag == Beam::OUTPUT_NONE) {
1853  // reset all
1854  uFlags = Beam::OUTPUT_NONE;
1855  }
1856 
1857  uFlags |= uFlag;
1858  }
1859 }
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
OrientationDescription ReadOptionalOrientationDescription(DataManager *pDM, MBDynParser &HP)
Definition: dataman3.cc:2531
virtual bool IsKeyWord(const char *sKeyWord)
Definition: parser.cc:910
Definition: beam.h:56
virtual bool IsArg(void)
Definition: parser.cc:807
virtual HighParser::ErrOut GetLineData(void) const
Definition: parsinc.cc:697

Here is the call graph for this function:

void ReadOptionalBeamCustomOutput ( DataManager pDM,
MBDynParser HP,
unsigned int  uLabel,
Beam::Type  BT,
unsigned &  uFlags,
OrientationDescription od 
)

Definition at line 1863 of file beam.cc.

References Elem::BEAM, DataManager::GetOutput(), HighParser::IsKeyWord(), and ReadBeamCustomOutput().

Referenced by ReadBeam(), and ReadBeam2().

1865 {
1866  pDM->GetOutput(Elem::BEAM, uFlags, od);
1867  if (HP.IsKeyWord("custom" "output")) {
1868  ReadBeamCustomOutput(pDM, HP, uLabel, BT, uFlags, od);
1869  }
1870 }
void GetOutput(Elem::Type t, unsigned &, OrientationDescription &) const
Definition: dataman.cc:871
void ReadBeamCustomOutput(DataManager *pDM, MBDynParser &HP, unsigned int uLabel, Beam::Type BT, unsigned &uFlags, OrientationDescription &od)
Definition: beam.cc:1776
virtual bool IsKeyWord(const char *sKeyWord)
Definition: parser.cc:910

Here is the call graph for this function:

Variable Documentation

const char* psBeamNames[]

Definition at line 307 of file enums.cc.