https://mooseframework.inl.gov
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

◆ dataLoad()

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

Definition at line 210 of file PenetrationInfo.C.

Referenced by dataLoad< Moose::LibtorchArtificialNeuralNet >(), ReporterState< std::vector< T > >::loadInternal(), RestartableDataReader::readHeader(), and RedistributeProperties::redistribute().

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

◆ dataStore()

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

Definition at line 158 of file PenetrationInfo.C.

Referenced by dataStore< Moose::LibtorchArtificialNeuralNet >(), RedistributeProperties::redistribute(), ReporterState< std::vector< T > >::storeInternal(), and RestartableDataWriter::write().

159 {
160  if (!context)
161  mooseError("Can only store PenetrationInfo objects using a MooseMesh context!");
162 
163  if (pinfo)
164  {
165  // Store 1 so that we know that this pinfo really exists!
166  unsigned int i = 1;
167  storeHelper(stream, i, context);
168 
169  storeHelper(stream, pinfo->_elem, context);
170  // Not storing the side element as we will need to recreate it on load
171  storeHelper(stream, pinfo->_side_num, context);
172  storeHelper(stream, pinfo->_normal, context);
173  storeHelper(stream, pinfo->_distance, context);
174  storeHelper(stream, pinfo->_tangential_distance, context);
175  storeHelper(stream, pinfo->_closest_point, context);
176  storeHelper(stream, pinfo->_closest_point_ref, context);
177  storeHelper(stream, pinfo->_closest_point_on_face_ref, context);
178  storeHelper(stream, pinfo->_off_edge_nodes, context);
179  storeHelper(stream, pinfo->_side_phi, context);
180  storeHelper(stream, pinfo->_side_grad_phi, context);
181  storeHelper(stream, pinfo->_dxyzdxi, context);
182  storeHelper(stream, pinfo->_dxyzdeta, context);
183  storeHelper(stream, pinfo->_d2xyzdxideta, context);
184  storeHelper(stream, pinfo->_starting_elem, context);
185  storeHelper(stream, pinfo->_starting_side_num, context);
186  storeHelper(stream, pinfo->_starting_closest_point_ref, context);
187  storeHelper(stream, pinfo->_incremental_slip, context);
188  storeHelper(stream, pinfo->_accumulated_slip, context);
189  storeHelper(stream, pinfo->_frictional_energy, context);
190  storeHelper(stream, pinfo->_contact_force, context);
191  storeHelper(stream, pinfo->_lagrange_multiplier, context);
192  storeHelper(stream, pinfo->_lagrange_multiplier_slip, context);
193  storeHelper(stream, pinfo->_mech_status, context);
194  storeHelper(stream, pinfo->_mech_status_old, context);
195 
196  // Don't need frictional_energy_old, accumulated_slip_old, contact_force_old, or
197  // locked_this_step
198  // because they are always set by the constraints at the beginning of a new time step.
199  }
200  else
201  {
202  // Store 0 so that we know that this pinfo is NULL
203  unsigned int i = 0;
204  storeHelper(stream, i, context);
205  }
206 }
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:333
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:893
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