Logan Sorenson wrote:
Hi Robert,
On Wed, Nov 4, 2009 at 10:49 AM, Robert Cimrman <cimr...@ntc.zcu.cz> wrote:
Hi Logan
Hi Robert,
Hope you're making good progress toward your deadlines! As such, I understand if you can't reply immediately to the following, so please take your time. :) Two are over (well I guess), the third approaching :). So I will respond only
Logan Sorenson wrote: partially for the moment, but it may point you to a right direction.
I made an initial try at implementing the electrostatic-structural coupling. You can find the code at [7]. I added a term in sfepy/terms/termsSurface.py by copying the piezoelectric terms over and modifying everything to surfaces instead of volumes. Is this a good place for the term, or should I create a source file? Also, I created input/electrostatic.py and database/electrostatic.mesh. My inspiration for this test case was the micro-bridge found in [2]. Quick first-glance notes:
- The mesh is essentially 2D - is there any reason you use a 3D mesh? Oh, I see, you have different layers and an interface in between. OK! Discovered using:
$ ./simple.py --solve-not --save-regions input/electrostatic.py
Yes, only because eventually I want to be able to handle 3D structures. :)
Fine! Just a note: if you just test new things, try to use a really small mesh, as things are obviously much faster then. But I guess your mesh is ok in thus respect :) Also, you could maybe use the script/blockgen.py to generate the mesh:
./script/blockgen.py -d '[0.6, 0.1, 0.0015]' -s '[60, 10, 3]' -c '[0, 0, -0.00025]' -o out.{mesh or vtk}
The element groups of the layers would have to be hand-edited, though.
unfortunately this saves the regions to the medit format only...
So you have the elastic displacements in one layer, and the potential in the other?
Yes, that's right, the layer with elastic displacements should be some kind of electrical conductor (e.g., metal/semiconductor) and the region with potential should be air or vacuum where the electric field exists.
I see. That should be doable, IMHO.
- the integral_2 is a surface integral - its kind should be 's3' (3-vertex faces).
Oh, ok, I didn't really know what to put for the kind parameter of the integral. Since I saw the other integrals marked with 'v', I thought it was related to the virtual variable also called 'v'. Now I'm guessing that 'v' actually stands for 'volume'. Are the options documented somewhere?
It is mentioned on the other site [8]. That documentation got out-of-sync with the google site one. Now the only place should be the sphinx docs.
Now it depends what you need: like a jump condition(?)
- both u, phi are continuous over the whole domain, there is only the coupling term on the interface, or
- there is a discontinuity on the interface, so the coupling term is something
Both are possible :)
I guess you aim for (2.), so have a look at input/subdomains.py and the dw_jump term, that can take a boundary trace argument of a field defined "from the other side".
Ahh, yes, (2.) was more along the lines of what I was thinking. Of course (1.) may be more accurate in reality, but for most cases I think it is best to treat the conductor as ideal so that the electric field inside it goes to 0.
I see. So you solve two problems on two subdomains with a common interface, where a coupling term plays.
I hope that helps a bit, continue asking :)
It's a big help! I need to do more poking and prodding in the code in the places you suggested, so I'll get back with more questions later on. ;) Hope your third project can be completed soon!
So do I :)
r.
[snip]
> [1] http://en.wikipedia.org/wiki/Maxwell_stress_tensor [2] doi:10.1016/j.na.2005.01.055 [3] doi:10.1117/12.482820 [4] http://www.ltas-vis.ulg.ac.be/cmsms/uploads/File/PHD_Rochus2006.pdf [5] http://en.wikipedia.org/wiki/Weak_formulation [6] doi:10.1016/j.jmps.2005.05.006 [7] git://github.com/logansorenson/electrostatic_structural_test.git [8] http://sfepy.kme.zcu.cz/index.cgi/Sfepy input file#Integrals