StressWork Class Reference

StressWork.h DG++. More...

#include <StressWork.h>

Inheritance diagram for StressWork:
DResidue BaseResidue Residue

List of all members.

Classes

struct  StressWorkTmpVec
 Contains the temporary vectors used by. More...

Public Member Functions

 StressWork (const Element &IElm, const SimpleMaterial &SM, const std::vector< size_t > &fieldsUsed)
 Construct a StressWork object with fields "field1, field2 and field3" as the three dimensional displacement fields.
virtual ~StressWork ()
 StressWork (const StressWork &SW)
virtual StressWorkclone () const
VecDouble getIntegrationWeights (size_t fieldnumber) const
bool getDVal (const MatDouble &argval, MatDouble &funcval, FourDVecDouble &dfuncval) const
bool getVal (const MatDouble &argval, MatDouble &funcval) const

Protected Types

enum  GetValMode { VAL, DVAL }

Protected Member Functions

bool getDValIntern (const MatDouble &argval, MatDouble &funcval, FourDVecDouble &dfuncval, const GetValMode &mode) const

Private Types

typedef GaloisRuntime::PerCPU
< StressWorkTmpVec
PerCPUtmpVecTy
 Per thread storage for temporary vectors used in.

Static Private Attributes

static PerCPUtmpVecTy perCPUtmpVec

Detailed Description

StressWork.h DG++.

Created by Adrian Lew on 10/25/06.

Copyright (c) 2006 Adrian Lew

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Computes the virtual work of the stress tensor, and its derivative The virtual work of the stress tensor ${\bf P}$ is defined as

\[ \int_{E} P_{iJ} v_{i,J}\ d\Omega, \]

where ${\bf v}$ is a virtual displacement field. This operation works for two and three-dimensional problems. In two-dimensional problems plane strain is assumed, i.e., the displacements and virtual displacements have the form $(v_1(x_1,x_2), v_2(x_1,x_2), 0)$.

StressWork works only on SolidElements, since it needs a SimpleMaterial to compute the stress tensor.

StressWork computes the residue

\[ R[f][a] = \int_{E} P_{fJ} N_{a,J}\ d\Omega, \]

where $N_{a,f}$ is the derivative of shape function associated to degree of freedom $a$ in direction $f$.

The derivative of this residue is

\[ DR[f][a][g][b] = \int_{E} A_{fJgL} N_{a,J} N_{b,L}\ d\Omega, \]

where $A$ are the elastic moduli $\partial{\bf P}/\partial {\bf F}$.


Member Typedef Documentation

Per thread storage for temporary vectors used in.

See also:
getDValIntern

Member Enumeration Documentation

enum StressWork::GetValMode [protected]
Enumerator:
VAL 
DVAL 

Constructor & Destructor Documentation

StressWork::StressWork ( const Element IElm,
const SimpleMaterial SM,
const std::vector< size_t > &  fieldsUsed 
) [inline]

Construct a StressWork object with fields "field1, field2 and field3" as the three dimensional displacement fields.

Parameters:
IElm pointer to the element over which the value will be computed. The Input object is non-const, since these can be modified during the operation. The object pointed to is not destroyed when the operation is.
SM SimpleMaterial object used to compute the stress and moduli. It is only referenced, not copied.
fieldsUsed vector containing ids of fields being computed starting with 0 Cartesian component of the displacement field. If not provided, it is assumed that it is a plane strain case.
virtual StressWork::~StressWork (  )  [inline, virtual]
StressWork::StressWork ( const StressWork SW  )  [inline]

Member Function Documentation

virtual StressWork* StressWork::clone (  )  const [inline, virtual]

Implements DResidue.

bool StressWork::getDVal ( const MatDouble argval,
MatDouble funcval,
FourDVecDouble dfuncval 
) const [inline, virtual]
Warning:
argval should contain displacements, not deformation mapping

Implements DResidue.

bool StressWork::getDValIntern ( const MatDouble argval,
MatDouble funcval,
FourDVecDouble dfuncval,
const GetValMode mode 
) const [protected]
Warning:
argval should contain displacements, not deformation mapping
VecDouble StressWork::getIntegrationWeights ( size_t  fieldnumber  )  const [inline]
bool StressWork::getVal ( const MatDouble argval,
MatDouble funcval 
) const [inline, virtual]
Warning:
argval should contain displacements, not deformation mapping

Implements Residue.


Member Data Documentation


The documentation for this class was generated from the following files:
Generated on Tue Aug 2 11:51:28 2011 for Galois by  doxygen 1.6.3