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

◆ 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:302
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:302
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