Hi Robent,

Yes, it was one oh the error, thanks. Now, my problem is I do not how to perform the T = stress \cdot n. and to finally obtain the force (sorry I am very new with python). I have this:

ev = problem.evaluate
field = problem.fields['displacement']
region = problem.domain.regions['Gamma']
integrals = problem.get_integrals()['i2']
n = get_normals(field,integrals,region)

stress_aux = ev('dw_tl_fib_a.1.Omega(f1.fmax, f1.eps_opt, f1.s, f1.fdir, f1.act, v, u )',mode='qp', term_mode= 'stress');
T = stress_aux*n;
Force = ev('ev_surface_integrate.2.Gamma(T)')

and the shapes are  stress_aux = (9699,1,3,1) n=(299,2,2,1) 

regions = {
    'Omega' : 'all',
    'Fix1' : ('vertices in x < %.10f' % (fix_point + eps2), 'facet'),
    'Fix2' : ('vertices in x > %.10f' % (fix_point - eps2), 'facet'),
    'Fix' : ('r.Fix1 *v r.Fix2', 'facet'),
    'Gamma' : ('vertices of surface','edge'),

 }

Thanks again :)


El miércoles, 8 de junio de 2016, 17:12:09 (UTC+2), Robert Cimrman escribió:
Hi Patricia

On 06/06/2016 03:27 PM, Patricia Garcia Cañadilla wrote:
> Dear Robert,
>
> I have a 2D body of hyperelastic material which contracts and I would like
> to compute the total force developed by the  body from the cauchy stress. I
> am trying to follow some of your indications I found in this group, but I
> still couldn't make it works. Could you please help me to fix the problem?
> I am getting the following error:
>
> key = (region.name, integral.order, integration)
> AttributeError: 'dict' object has no attribute 'name'
>
> I am trying to do the following, inside stress_strain post-processing
> function:
>
> def stress_strain(out, problem, state, extend = False ):
>      from sfepy.base.base import Struct
>      from sfepy.mechanics.tensors import StressTransform
>      from sfepy.mechanics.tensors import transform_data
>      from sfepy.discrete.common.mappings import get_normals
>
>      ev = problem.evaluate
>      field = problem.fields['displacement']
>      region = problem.domain.regions['Gamma']
>      integral = problem.integrals['i2']
>      n = get_normals(field,integral,regions)

Here you probably meant using 'region' instead of 'regions', right? regions are
the dict in the module name space of the problem description file, so the error
is pretty easily overlooked :)

If that does not help, try sending a complete file that reproduces the problem.

r.