Hello,
I currently use FEAP to check self-developed FEM implementations whether they are correct or not. While doing so, I wondered how exactly FEAP implements Dirichlet boundary conditions. It is important for me since I want to compare some internal element values between implementations, so I need to make sure, that my own implementations handle the Dirichlet boundary conditions the same way FEAP does.
Generally, I am familiar with 3 types of implementations
1. Adding the Dirichlet boundary conditions to the displacement vector when developing the element stiffness matrices and residuals. Then the respective degrees of freedom are removed from the global system of equations before the solve step.
2. Disregarding the Dirichlet boundary conditions in the assembly and then adding them to the RHS of the global system by multiplying their values with the respective columns of the global stiffness matrix. Furthermore, the respective degrees of freedom are removed and the system is solved.
3. Lagrange parameters.
I experimented a bit with FEAP and if I use PRINT,FORM I can see that the size of my residual is as big as the reduced system (global degrees of freedom - Dirichlet boundary degrees of freedom). Therefore option 1 or 2 needs to be used. But how is it done exactly and when (in which batch file step) does it happen? Also, is there a specific reason why the certain procedure is chosen?
Kind regards,
Felix