CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM (
-   -   Thin solid films (

shpalman September 19, 2009 05:52

Thin solid films

I've recently discovered OpenFOAM and I've been able to model a few simple systems using the solidDisplacementFoam solver (in the steady state, without thermal stresses); I'm using version 1.6.x. Now I have some questions.

Is there a boundary condition which allows a face of my mesh to displace in the x and y directions but remain fixed in z? If I apply biaxial stress to a free-standing film (with, for example, a ridge running along it) it bends, but I'm interested in the problem of thin stressed films on thick unstressed substrates, on which bending would be very small. So at first I want to fix the bottom patch to prevent it from bending.

I know I could extend the mesh downwards a long way and apply a fixedValue of zero displacement, but this brings me to my next question of how to model a film on a substrate. The problem with heteroepitaxy is that the substrate and the overlayer have different natural atomic spacings (the overlayer is a few percent larger), which means that when the overlayer is grown on top of the substrate it has an effective compressive stress in the x and y directions, and in equilibrium the substrate would be extended or bent to compensate slightly (depending on how thick the layers were). I'm not sure how to set this up: it would be like stressing one mesh to squeeze it, joining it to an unstrained mesh, and then "letting go" to see how much of the intrinsic compressive stress is retained.

I'm also interested in the problem of changing E and nu, which seems to have been asked at and - I can't find the "rheologyProperties" or "multiMaterial" which are mentioned in conjunction with the plateHole tutorial. It's only a secondary problem since the E and nu of the layers I'm interested in don't change a huge amount.

Thanks for reading. Any help is appreciated.

shpalman October 7, 2009 04:28

It occurred to me that I could use thermal expansion to mimic the effect of a larger crystal spacing, by setting the thermal conductivity to zero and using setFields to apply a non-zero temperature to my overlayer while maintaining zero K in the substrate (with the bottom surface of the substrate fixed).

I had a look at the postProcessing utility "stressComponents" and then was able to write my own utility, "strainComponents", to calculate the strain tensor 0.5*(fvc::grad(D) + fvc::grad(D)().T()) and write out its components.

shpalman August 24, 2010 11:10

... and now in 1.7.x my "strainComponents" code no longer works, complaining that "patchField type tractionDisplacement for patch type patch" is unknown.

All times are GMT -4. The time now is 00:04.