# Two-Dimensional Mesoscale Finite Element Modeling of Concrete Damage and Failure
## 3 Automatic Generation of Cohesive Elements
The process of generating cohesive interface elements in different phases of the concrete mesostructure as depicted in Algorithm 1 hinges on assigning unique material IDs to different phases. For example, elements forming the mortar matrix are assigned a material ID of zero. These elements are then accessed through a for loop using their respective IDs. This allows the identification of neighboring elements, followed by the creation of cohesive nodes at their shared interfaces. This process is reiterated for different inclusions, offering a systematic approach for cohesive interface element generation. ``` Input : FE mesh file of Abaqus Output :Generated cohesive elements Initialization;
1. Reading FE mesh file of Abaqus
2. Constructing node, element, and element sets data structure
3. Assigning Material ID to each element Construct Node Connectivity list (ndComntL);
1. For node \(n\), generate an empty (ndComntL)
2. For element \(e\), loop over its Element Connectivity vector (elComntV) Loop over elComntV and store each Element Id in its corresponding ndComntL Identification of ITZ nodes;
1. For node \(n\), loop over its ndComntL
2. Corresponding to ndComntL, construct Material Id list
3. Boolean operation on Material Id list, if False, then node \(n\) is an ITZ node Identification of adjacent elements;
1. For node \(n\), loop over its ndComntL
2. For element \(e\) in ndComntL, extract its elComntV
3. Count CommonNodes between elComntV of Element \(e\) and other elComntVs
4. if CommonNodes = 2, then the corresponding two elements are adjacent
5. Store Element Id of adjacent elements and their corresponding elComntV Assign FaceType object to adjacent elements;
1. Call elComntV of each two adjacent elements from the previous step
2. Assign a new label to nodes of elComntV, from 1 to 3 successively
3. Construct a new list corresponding to the CommonNodes
4. If this list contains: 1 and 2, then FaceType 1 2 and 3, then FaceType 2 3 and 1, then FaceType 3

Duplicating nodes;
1. Obtain \(i=\) totalNd, where totalNd represents the total nodes of the original FE mesh
2. For node \(n\), extract its ndComntL
3. For node \(n\), calculate \(In\), where \(In\) represents the total members of ndComntL
4. For \(i\) in range(\(In\)-1): 1. Build a new node with the coordinates of node \(n\) 2. Update the elComntV of the \(i^{th}\) member of ndComntL 3. \(i=i+1\) 5. Assign the original node to the element with the smallest Element Id Generation of Cohesive Elements;

1. Call element sets with respect to their Material Id
2. Call adjacent elements of each element set and their FaceType
3. Call updated elComntVs of adjacent elements
4. Construct a new elComntV of cohesive elements with respect to the FaceType
5. Write the newly generated nodes and elements as.inp file It should be emphasized that formulating the codes to simulate concrete mesostructures encountered certain difficulties. To counter these obstacles and ensure the code's reliability, direct engagement with Abaqus/CAE was utilized, allowing for constant monitoring of the code's performance throughout its development. As the progression of the code development continued, essential adjustments were implemented to certify its accuracy and effectiveness in the simulation of concrete mesostructures. The primary computational challenge in generating CIEs is mesh granularity. Employing an excessively fine mesh augments the total element count significantly, consequently increasing the node connectivity list, which delineates the total elements sharing a node. This amplifies the computational burden, necessitating extended time and iterations for node-neighboring element identification and face type assignment. ## 4 Finite Element Modeling

### Model Description

The next step after the generation of the concrete mesostructure is its discretization. In this work, all the finite element meshing operations are performed using the pre-processing functionality in Abaqus/CAE.