https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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 208 of file PenetrationInfo.C.

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

Referenced by dataLoad().

◆ dataStore()

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

Definition at line 156 of file PenetrationInfo.C.

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

Referenced by dataStore().