Correct unit in linear volume force term

16 views
Skip to first unread message

Radko Bankras

unread,
Dec 29, 2016, 7:37:09 AM12/29/16
to sfepy-devel
Hi,

My mesh is defined in mm. With
units = ['mm', 's', 'kg', 'C']
the matching units for density and force are Tg/m**3 and mNewton, respectively.

I would like to determine the linear elastic displacement of the meshed object by gravity, using the linear volume force term
t2 = Term.new('dw_volume_lvf(f.val, v)', integral, omega, f=f, v=v)
in which the force vector f.val is obtained from function get_gravity.

def get_gravity(ts, coors, mode=None, equations=None, term=None, problem=None, **kwargs):
if mode == 'qp': # define material parameters in quadrature points
fx = nm.zeros((coors.shape[0], 1, 1))
fy = nm.zeros((coors.shape[0], 1, 1))
fz = nm.tile(-2.285e-2, (coors.shape[0], 1, 1)) # constant vertical force in mN/mm3
val = nm.concatenate((fx, fy, fz), axis=1) # concatenate force components
return {'val': val}

With gravity g = 9.81 m/s**2 and density rho = 2.329e-6 Tg/m**3, the constant volume force 2.285e-2 mNewton/mm**3 is obtained as the product of gravity and density.

Is it correct that f.val in the linear volume force term is defined in force per unit volume?

And another newbie question:

Is it correct that a first order integral is used for the linear volume force term, because of the linear relation between force and volume? Or is a higher integral order needed, due to the dimensions of the mesh?

Kind regards,
Radko

Robert Cimrman

unread,
Dec 29, 2016, 3:38:42 PM12/29/16
to sfepy...@googlegroups.com
On 12/29/2016 01:37 PM, Radko Bankras wrote:
> Hi,
>
> My mesh is defined in mm. With
> units = ['mm', 's', 'kg', 'C']
> the matching units for density and force are Tg/m**3 and mNewton,
> respectively.
>
> I would like to determine the linear elastic displacement of the meshed
> object by gravity, using the linear volume force term
> t2 = Term.new('dw_volume_lvf(f.val, v)', integral, omega, f=f, v=v)
> in which the force vector f.val is obtained from function get_gravity.
>
> def get_gravity(ts, coors, mode=None, equations=None, term=None,
> problem=None, **kwargs):
> if mode == 'qp': # define material parameters in quadrature points
> fx = nm.zeros((coors.shape[0], 1, 1))
> fy = nm.zeros((coors.shape[0], 1, 1))
> fz = nm.tile(-2.285e-2, (coors.shape[0], 1, 1)) # constant vertical force
> in mN/mm3
> val = nm.concatenate((fx, fy, fz), axis=1) # concatenate force components
> return {'val': val}
>
> With gravity g = 9.81 m/s**2 and density rho = 2.329e-6 Tg/m**3, the
> constant volume force 2.285e-2 mNewton/mm**3 is obtained as the product of
> gravity and density.
>
> Is it correct that f.val in the linear volume force term is defined in
> force per unit volume?

Yes.

> And another newbie question:
>
> Is it correct that a first order integral is used for the linear volume
> force term, because of the linear relation between force and volume? Or is
> a higher integral order needed, due to the dimensions of the mesh?

In this particular case (integrating a constant) it is definitely correct. In
general, the quadrature order needs to reflect both the approximation order of
the FE fields and the variability of the material parameters with respect to
position. For example, for int(u,v), where u, v have the approximation order
equal to 2, the quadrature order 4 would be sufficient. You do not need to
worry about the dimension of the mesh, as it is taken into account automatically.

r.

> Kind regards,
> Radko
>

Reply all
Reply to author
Forward
0 new messages