www.mooseframework.org
Functions
PenetrationInfo.C File Reference

Go to the source code of this file.

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