## 2 Development of Beam Element-Based Simulation
### Model Description
#### 2.1.4 Solution Strategy  
The general problem to be solved is given in Equation (24),  
\[F_{int}=F_{ext}, \tag{24}\]  
subject to some boundary conditions discussed later, where \(F_{int}\) are internal forces and \(F_{ext}\) are external forces, both in the global coordinate system. There are two types of external forces in the model: the self-weight of each element and thermal forces. Thermal forces develop in an element as it cools, as given by the inputted thermal profile. While element temperatures generally change between time steps, within one time step it is assumed that the temperature is constant for the whole element. The thermal force in one element, \(f_{th}\), is given in Equation (25),  
\[f_{th}=EA\alpha\Delta T, \tag{25}\]  
where \(E\) is the modulus of elasticity for the material at the current temperature, \(A\) is the cross-sectional area of the element, \(\alpha\) is the coefficient of thermal expansion at the current temperature and \(\Delta T\) is the change in temperature from deposition to the current time. Thermal forces in the longitudinal and height directions are carried by the beams and vertical springs, respectively, and there can be a different coefficient of thermal expansion for each direction. Since the thickness of the wall is much smaller than the height or length, thermal expansion through the thickness of the wall is ignored. There are two kinds of internal forces in the model, constraint and member forces. From Section 2.1.2, the system of equations of all constraints is given by Equation (12). Figure 5: Comparison of BBOEF to Zhang and Murphy [74]. The constraints are enforced using the penalty method, where violations are penalized by correcting forces applied by very stiff springs. These forces, \(F_{c}\), given in Equation (26),  
\[F_{c}=G\kappa\Big{(}G^{T}U-G_{0}\Big{)}, \tag{26}\]  
are calculated by pre-multiplying the error in the constraints by \(G\kappa\), where \(\kappa\) is a diagonal matrix of spring stiffnesses corresponding to each constraint equation. The other type of internal forces in the model are member forces, shown in Equation (27) for a single element,  
\[f_{el}=k_{el}u_{el}, \tag{27}\]  
where \(k_{el}\) and \(u_{el}\) are the element stiffness matrix and element displacement vector, both in local coordinates. Since strain-producing element displacements are equal to nodal displacements minus initial element displacements, distributing the element stiffness matrix and assembling the two parts separately (into \(KU\) and the correction for non-strain causing displacements, \(F_{el_{0}}\), respectively) produces the global internal force vector, \(F_{el}\), shown in Equation (28),  
\[F_{el}=KU-F_{el_{0}}, \tag{28}\]  
where \(K\) and \(U\) are the global stiffness and nodal displacement vectors. Assembling the local element thermal and self-weight forces into the global external force vector, \(F_{ext}\), and isolating terms with the unknowns, which are the global vector of nodal displacements, produces Equation (29),  
\[\Big{(}K_{\text{hc}}+G\kappa G^{T}\Big{)}U=F_{ext}+G\kappa C+F_{el_{0}}, \tag{29}\]  
where \(K_{\text{hc}}\) is the global system stiffness matrix after applying relevant boundary conditions. Because the bilinear boundary springs make the problem nonlinear, Equation (29) is solved iteratively using [PERSON]'s method. The contribution of the BBOEF elements to system stiffness is recalculated at every time increment, and initial member forces due to the BBOEF elements must also be recalculated. To increase computational efficiency, \(F_{el_{0}}\) is split into two parts: \(F_{m_{0}}\), the initial member force correction calculated once per increment, and \(F_{s_{0}}\), the initial force correction due to the BBOEF elements, calculated every iteration. The entire solution algorithm is below. For each time step \(t_{i}\),  
1. Set \(U_{i}=U_{i-1}\);
2. Determine \(T_{i}\), the current temperature, and compute \(\Delta T_{i}=T_{i}-T_{0}\) for all elements;
3. Update \(K\) by updating elastic moduli and adding new elements, if any;
4.