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)

    stress = 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');

    F = ev('ev_def_grad.1.Omega(u)',mode='el_avg');
    transform = StressTransform(F)
    Cstress = transform.get_cauchy_from_2pk(stress)
    T = Cstress*n;
    Force = ev('ev_surface_integrate.2.Gamma(T)')

And here it is part of the problem configuration file.

fields = {
    'displacement': ('real', 'vector', 'Omega', 1),
}

materials = {
    'solid' : (None, 'get_elastic_pars'),
    'load' : (None, 'linear_tension'),
    'f1' : 'get_pars_fibres1',
}

variables = {
    'u': ('unknown field', 'displacement', 0),
    'v': ('test field', 'displacement', 'u'),

}

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'),

 }

ebcs = {
   'fixb' : ('Fix', {'u.all' : 0.0}),
}

integrals = {
    'i1' : ('v', 1),
    'i2' : ('s', 2),
}