osman wrote:

On Sat, 2008-07-12 at 16:03 -0500, Ryan Krauss wrote:

So, everything is correctly installed and thanks to Robert I can now work in the directory of my choice. Basically, things are working. Now I need to understand what the code is actually doing.

My intention is to ask some questions about the attached setup file, increase my understanding, add some comments to, and possibly have a good tutorial problem when it's done.

Just to cut down on Robert's work, I'll try to reply to questions I can answer

Hey, great!

Referring to the attached file, which gets passed to simple.py as an input, I have the following questions:

The file starts with

field_1 = { 'name' : 'displacement', 'dim' : (3,1), 'domain' : 'Omega', 'bases' : {'Omega' : '3_4_P1'} }

variable_1 = { 'name' : 'u', 'kind' : 'unknown field', 'field' : 'displacement', 'order' : 0, } variable_2 = { 'name' : 'v', 'kind' : 'test field', 'field' : 'displacement', 'dual' : 'u', }

All 3 of these are displacements, I am trying to understand how they are related or different. I assume a field is a vector. Maybe the variables are scalars. If 'u' is one component of the vector field displacement, where is the degree of freedom specified (i.e. which component of 'displacement' does 'u' refer to)?

From the description, it sounds like 'v' is a test field of 'u'. Does that mean that when 'v' converges, 'u' is the result? Or something else?

u is the displacement sought after. v is the "dual" of u. Nitchze(?). Usually used to do a posteriori estimate of the error. This is interesting in that you can use this error info to do automatic refining of the mesh until the error is below some preset value. I would like to use this for navier-stokes solver to solve without any turbulence modeling.

This is interesting - how you would use a test variable for a posteriori estimates? I know almost nothing about this, but am interested to have some error estimates in SfePy, preferably such that do not depend on the equations solved (i.e. discretization-error based). Have you some link?

What are lambda and mu and what are their units? Youngs modulus and mass density per unit length? Something else? I assume it is something mass related and something stiffness related.

those sound like lame's constants, are related to E and nu. You can look them in any elasticity theory book.

exactly.

It seems like equations is setting up a force balance on the top of the material specimen where the load is being applied. Is this correct?

It seems like this function:

def tractionLoad( ts, coor, region, ig ): """ts = TimeStepper, coor = coordinates of field nodes in region.""" import numpy as nm from sfepy.base.base import pause, debug nt = ts.nt

val = nm.zeros( (coor.shape[0],), dtype = nm.float64 ) val.fill( 1e-1 * nt )

print val return {'val' : val}

defines a traction load at all nodes (or maybe on some infinitesimal volume or area) that is the same at all points and ramping up in time with a slope of 0.1 per time step. Can this force be an arbitrary function of time? What are the units of the traction load? Is it compressive or tensile? What direction is associated with it?

traction loads are being applied to a portion of the boundary of Omega. They would be tangent to the surface/line. Units again whatever you choose but they hav eto be consistent with other units you have used.

...the portion of the boundary defined by the region 'Top'.

Hope this helps.

thanks for joining the discussion!

r.