https://mooseframework.inl.gov
Loading...
Searching...
No Matches
MortarCZMDebondedBoundaryUpdater.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
10#pragma once
11
12#include "DomainUserObject.h"
13
15
22{
23public:
26
27 virtual void initialSetup() override;
28 virtual void initialize() override;
29 virtual void executeOnElement() override;
30 virtual void threadJoin(const UserObject & y) override;
31 virtual void finalize() override;
32
33protected:
34 using SideList = std::vector<std::pair<dof_id_type, unsigned int>>;
35
37 bool currentElemFullySeparated() const;
38
41
44
46 const Real _threshold;
47
49 const UserObjectName _czm_userobject_name;
50
54
58
61
68
72 MeshBase * const _displaced_mesh;
73
74 BoundaryInfo & _boundary_info;
76
81 std::unordered_map<dof_id_type, SideList> _secondary_to_primary_faces;
82
84 std::vector<dof_id_type> _separated_lowerd;
85};
boundary_id_type BoundaryID
subdomain_id_type SubdomainID
const std::vector< double > y
const InputParameters & parameters() const
Dynamically adds fully-damaged CZM interface segments to sidesets at runtime.
BoundaryID _primary_boundary_id
Primary/secondary interface boundary ids (to key the mortar interface).
virtual void threadJoin(const UserObject &y) override
std::unordered_map< dof_id_type, SideList > _secondary_to_primary_faces
Secondary lower-d element id -> every primary (elem id, side) whose face overlaps it in the reference...
const VariableValue & _damage
CZM damage (0 = intact, 1 = broken), valid on the secondary lower-d block.
bool currentElemFullySeparated() const
True if damage >= threshold at every QP of the current lower-d element.
BoundaryName _debonded_name_primary
Boundaries to which damaged faces are added.
SubdomainID _primary_subdomain_id
Primary/secondary lower-dimensional subdomain ids (to key the mortar interface).
std::vector< std::pair< dof_id_type, unsigned int > > SideList
std::vector< dof_id_type > _separated_lowerd
Thread-local fully-separated secondary lower-d element ids found this execution.
const Real _threshold
Damage at/above which a face is considered fully separated.
void buildReferencePrimaryFaceMap()
Build _secondary_to_primary_faces from a mortar projection of the undisplaced interface.
DisplacedProblem * _displaced_problem
Displaced problem.
const UserObjectName _czm_userobject_name
The mortar UO name (to retrieve the interface's AutomaticMortarGeneration).
VariableValueTempl< false > VariableValue