I want to solve a small deformation solid structure problem applying periodic boundary conditions in FEM. The geometry is a square and the equations are: $$ \text{div} \, \sigma = 0 \\ \sigma = f(\epsilon)\\ \epsilon_{ij} = \frac{1}{2}(u_{i,j} + u_{j,i}) \\ u^+ - u^- = c \\ \sigma^+ \cdot \hat{n} + \sigma^- \cdot \hat{n} = 0 $$

The variables with the $.^+$ or $.^-$ correspond to opposite sides in the square.

A weak form the equilibrium equation can be written as: $$ \int_{V} \text{div} \, \sigma: \epsilon(\delta v) \,dV = 0 \\ $$ where $\delta v$ is a test function. Discretizing by FE and applying Newton-Raphson iterative scheme I wrote a residual of the form:

$$ r = \left[ \begin{array}{c} \int_{V} \text{div} \, \sigma: \epsilon(\delta v_j) \,dV \quad \text{ for } j = 1...N_\text{int} - N_\text{ext}/2\\ u_j^+ - u_j^- - c \quad \text{ for } j = 1...N_\text{ext}/2\\ \end{array} \right] $$

Question: The weak formulation above does not have the surface contribution so the correct form is: $$ \int_{V} \text{div} \, \sigma: \epsilon(\delta v) \,dV + \int_{\partial V} \sigma \cdot \hat{n} \, \,dS = 0 \\ $$ If you take the condition $\sigma^+ \cdot \hat{n} + \sigma^- \cdot \hat{n} = 0$, how does the condition $\sigma^+ \cdot \hat{n} + \sigma^- \cdot \hat{n} = 0$ affects that term in order to by enforce ? (It seems that that term should vanish but that did not work for me)

If this is not the correct way how do I enforce the conditions $\sigma^+ \cdot \hat{n} + \sigma^- \cdot \hat{n} = 0$ ?

Note: Here I have the octave code run_periodic.m for you to see. The ass_periodic.m function do the job of assembly the residual and jacobian and tries to enforce the boundary conditions.

  • $\begingroup$ That boundary condition should be satisfied implícitly $\endgroup$
    – nicoguaro
    Jan 27, 2018 at 17:58
  • $\begingroup$ Indeed. Your weak form is wrong: it needs to contain boundary terms that will allow you to include the periodic boundary conditions. $\endgroup$ Jan 27, 2018 at 20:43
  • $\begingroup$ I edited the question again adding the surface force contribution. I tried to enforce that "anti-periodic" boundary condition vanishing that term but that did not work. $\endgroup$
    – gagiuntoli
    Jan 28, 2018 at 9:41
  • $\begingroup$ What concretely does "did not work" mean? $\endgroup$ Jan 29, 2018 at 22:54
  • $\begingroup$ That I do not get periodic boundary conditions by doing that. I solved the problem applying Lagrange multipliers. Then I will edited the solution to the question. $\endgroup$
    – gagiuntoli
    Jan 30, 2018 at 15:45

1 Answer 1


I could arrive to the solution at the end applying the *Lagrange Multiplier Method. The surface term at the weak form: $$ \int_{V} \text{div} \, \sigma: \epsilon(\delta v) \,dV + \int_{\partial V} \sigma \cdot \hat{n} \, \,dS = 0 \\ $$ should vanish, i.e.: $$ \int_{V} \text{div} \, \sigma: \epsilon(\delta v) \,dV = 0 \\ $$ because in these problem we are not applying Neumann or Robin Boundary conditions, we are a applying a Dirichlet type: $$ u^+ - u^- = c $$ that we don't know at first the value of $u^+$ and $u^-$. The other thing we know is that the external force applied should be the same : $$\sigma^+ \cdot \hat{n} + \sigma^- \cdot \hat{n} = 0$$ This mean that is logical to add a Lagrange multiplier in the force term (in the correct degrees of freedom and with the right sign) as:

$$ \int_{V} \text{div} \, \sigma: \epsilon(\delta v_j) \,dV - \lambda_j = 0 \text{ for } j = 1...P $$ By this way we have added $P$ more unknown $\lambda_j$ to the system. To solve the problem we add the displacement periodic boundary conditions: $$u_j^+ - u_j^- = c_j \text{ for } j = 1...P.$$ There are other techniques that can be used such as the Master Slave Method, Penalty Method, Augmented Lagrangian, between others. I didn't go deeper with them yet.

Here I give a picture of how a body is deformed under a certain value of $c$ using the Lagrange Multiplier Method :

Body deformed using periodic boundary conditions

The code to obtained that solution can be seen Here and can be executed as:

octave run_periodic_lm.m

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.