https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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

namespace  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.

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}
void loadHelper(std::istream &stream, P &data, void *context)
Scalar helper routine.
Definition DataIO.h:1081
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
Definition MooseError.h:311
Data structure used to hold penetration information.
std::vector< const Node * > _off_edge_nodes
const Elem * _side
MECH_STATUS_ENUM _mech_status
std::vector< RealGradient > _d2xyzdxideta
MECH_STATUS_ENUM _mech_status_old
Point _closest_point_on_face_ref
RealVectorValue _contact_force
std::vector< RealGradient > _dxyzdeta
std::vector< RealGradient > _dxyzdxi
unsigned int _starting_side_num
std::vector< std::vector< Real > > _side_phi
const Elem * _elem
const Elem * _starting_elem
std::vector< std::vector< RealGradient > > _side_grad_phi
Point _starting_closest_point_ref
unsigned int _side_num
RealVectorValue _lagrange_multiplier_slip
RealVectorValue _normal
virtual std::unique_ptr< Elem > build_side_ptr(const unsigned int i)=0

◆ dataStore()

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

Definition at line 158 of file PenetrationInfo.C.

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}
void storeHelper(std::ostream &stream, P &data, void *context)
Scalar helper routine.
Definition DataIO.h:989