www.mooseframework.org
Classes | Namespaces | Functions
PenetrationInfo.h File Reference

Go to the source code of this file.

Classes

class  PenetrationInfo
 Data structure used to hold penetration information. More...
 

Namespaces

 libMesh
 The following methods are specializations for using the libMesh::Parallel::packed_range_* routines for std::strings.
 

Functions

template<>
void dataStore (std::ostream &stream, PenetrationInfo *&pinfo, void *context)
 
template<>
void dataLoad (std::istream &stream, PenetrationInfo *&pinfo, void *context)
 

Function Documentation

template<>
void dataLoad ( std::istream &  stream,
PenetrationInfo *&  pinfo,
void *  context 
)

Definition at line 216 of file PenetrationInfo.C.

217 {
218  if (!context)
219  mooseError("Can only load PenetrationInfo objects using a MooseMesh context!");
220 
221  // First, see if this is supposed to be NULL
222  unsigned int i = 0;
223  loadHelper(stream, i, context);
224  if (i)
225  {
226  pinfo = new PenetrationInfo();
227 
228  loadHelper(stream, pinfo->_node, context);
229  loadHelper(stream, pinfo->_elem, context);
230  loadHelper(stream, pinfo->_side_num, context);
231  // Rebuild the side element.
232  pinfo->_side = pinfo->_elem->build_side_ptr(pinfo->_side_num, false).release();
233 
234  loadHelper(stream, pinfo->_normal, context);
235  loadHelper(stream, pinfo->_distance, context);
236  loadHelper(stream, pinfo->_tangential_distance, context);
237  loadHelper(stream, pinfo->_closest_point, context);
238  loadHelper(stream, pinfo->_closest_point_ref, context);
239  loadHelper(stream, pinfo->_closest_point_on_face_ref, context);
240  loadHelper(stream, pinfo->_off_edge_nodes, context);
241  loadHelper(stream, pinfo->_side_phi, context);
242  loadHelper(stream, pinfo->_side_grad_phi, context);
243  loadHelper(stream, pinfo->_dxyzdxi, context);
244  loadHelper(stream, pinfo->_dxyzdeta, context);
245  loadHelper(stream, pinfo->_d2xyzdxideta, context);
246  loadHelper(stream, pinfo->_starting_elem, context);
247  loadHelper(stream, pinfo->_starting_side_num, context);
248  loadHelper(stream, pinfo->_starting_closest_point_ref, context);
249  loadHelper(stream, pinfo->_incremental_slip, context);
250  loadHelper(stream, pinfo->_accumulated_slip, context);
251  loadHelper(stream, pinfo->_frictional_energy, context);
252  loadHelper(stream, pinfo->_contact_force, context);
253  loadHelper(stream, pinfo->_lagrange_multiplier, context);
254  loadHelper(stream, pinfo->_lagrange_multiplier_slip, context);
255  loadHelper(stream, pinfo->_mech_status, context);
256  loadHelper(stream, pinfo->_mech_status_old, context);
257 
258  // Don't need frictional_energy_old, accumulated_slip_old, contact_force_old, or
259  // locked_this_step
260  // because they are always set by the constraints at the beginning of a new time step.
261  }
262  else
263  pinfo = NULL;
264 }
std::vector< RealGradient > _d2xyzdxideta
RealVectorValue _normal
Data structure used to hold penetration information.
void mooseError(Args &&...args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:182
const Elem * _starting_elem
Point _closest_point_on_face_ref
std::vector< std::vector< RealGradient > > _side_grad_phi
std::vector< std::vector< Real > > _side_phi
const Elem * _elem
unsigned int _starting_side_num
unsigned int _side_num
std::vector< RealGradient > _dxyzdxi
const Elem * _side
RealVectorValue _contact_force
MECH_STATUS_ENUM _mech_status
std::vector< const Node * > _off_edge_nodes
Point _starting_closest_point_ref
std::vector< RealGradient > _dxyzdeta
MECH_STATUS_ENUM _mech_status_old
RealVectorValue _lagrange_multiplier_slip
void loadHelper(std::istream &stream, P &data, void *context)
Scalar helper routine.
Definition: DataIO.h:592
const Node * _node
template<>
void dataStore ( std::ostream &  stream,
PenetrationInfo *&  pinfo,
void *  context 
)

Definition at line 163 of file PenetrationInfo.C.

164 {
165  if (!context)
166  mooseError("Can only store PenetrationInfo objects using a MooseMesh context!");
167 
168  if (pinfo)
169  {
170  // Store 1 so that we know that this pinfo really exists!
171  unsigned int i = 1;
172  storeHelper(stream, i, context);
173 
174  storeHelper(stream, pinfo->_node, context);
175  storeHelper(stream, pinfo->_elem, context);
176  // Not storing the side element as we will need to recreate it on load
177  storeHelper(stream, pinfo->_side_num, context);
178  storeHelper(stream, pinfo->_normal, context);
179  storeHelper(stream, pinfo->_distance, context);
180  storeHelper(stream, pinfo->_tangential_distance, context);
181  storeHelper(stream, pinfo->_closest_point, context);
182  storeHelper(stream, pinfo->_closest_point_ref, context);
183  storeHelper(stream, pinfo->_closest_point_on_face_ref, context);
184  storeHelper(stream, pinfo->_off_edge_nodes, context);
185  storeHelper(stream, pinfo->_side_phi, context);
186  storeHelper(stream, pinfo->_side_grad_phi, context);
187  storeHelper(stream, pinfo->_dxyzdxi, context);
188  storeHelper(stream, pinfo->_dxyzdeta, context);
189  storeHelper(stream, pinfo->_d2xyzdxideta, context);
190  storeHelper(stream, pinfo->_starting_elem, context);
191  storeHelper(stream, pinfo->_starting_side_num, context);
192  storeHelper(stream, pinfo->_starting_closest_point_ref, context);
193  storeHelper(stream, pinfo->_incremental_slip, context);
194  storeHelper(stream, pinfo->_accumulated_slip, context);
195  storeHelper(stream, pinfo->_frictional_energy, context);
196  storeHelper(stream, pinfo->_contact_force, context);
197  storeHelper(stream, pinfo->_lagrange_multiplier, context);
198  storeHelper(stream, pinfo->_lagrange_multiplier_slip, context);
199  storeHelper(stream, pinfo->_mech_status, context);
200  storeHelper(stream, pinfo->_mech_status_old, context);
201 
202  // Don't need frictional_energy_old, accumulated_slip_old, contact_force_old, or
203  // locked_this_step
204  // because they are always set by the constraints at the beginning of a new time step.
205  }
206  else
207  {
208  // Store 0 so that we know that this pinfo is NULL
209  unsigned int i = 0;
210  storeHelper(stream, i, context);
211  }
212 }
std::vector< RealGradient > _d2xyzdxideta
RealVectorValue _normal
void mooseError(Args &&...args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:182
const Elem * _starting_elem
Point _closest_point_on_face_ref
std::vector< std::vector< RealGradient > > _side_grad_phi
std::vector< std::vector< Real > > _side_phi
void storeHelper(std::ostream &stream, P &data, void *context)
Scalar helper routine.
Definition: DataIO.h:528
const Elem * _elem
unsigned int _starting_side_num
unsigned int _side_num
std::vector< RealGradient > _dxyzdxi
RealVectorValue _contact_force
MECH_STATUS_ENUM _mech_status
std::vector< const Node * > _off_edge_nodes
Point _starting_closest_point_ref
std::vector< RealGradient > _dxyzdeta
MECH_STATUS_ENUM _mech_status_old
RealVectorValue _lagrange_multiplier_slip
const Node * _node