Hi Robert,
I think I tried that. I modified your function for stress-strain as
def stress_strain(out, pb, state, extend=False):
"""
Calculate and output strain and stress for given displacements.
"""
from sfepy.base.base import Struct
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
ev = pb.evaluate
strain = ev('ev_cauchy_strain.2.Omega(u)', mode='el_avg')
stress = ev('ev_cauchy_stress.2.Omega(solid.D, u)', mode='el_avg')
pstress = ev('dw_piezo_coupling.2.Omega( solid.coupling, u, psi )', mode='el_avg')
out['cauchy_strain'] = Struct(name='output_data', mode='cell',
data=strain, dofs=None)
out['cauchy_stress'] = Struct(name='output_data', mode='cell',
data=stress, dofs=None)
out['piezo_stress'] = Struct(name='output_data', mode='cell',
data=pstress, dofs=None)
etc....
and it returned an error of "ValueError: unsupported evaluation mode in dw_piezo_coupling! (el_avg)"
Dennis
On Thursday, August 6, 2015 at 1:21:50 PM UTC-7, Robert Cimrman wrote:
Hi Dennis,
the piezo term can be used (IIRC) directly in post-processing to compute the piezo-part of the stress - try passing mode='el_avg' into problem.evaluate().
r.
I have been doing some modeling of a piezoelectric system and it works well. One can apply a field and see the resulting deformation. I also get how one can calculate the Cauchy strain and stress using the
On 08/05/2015 03:11 PM, Dennis Perchak wrote: post-process
hook and the terms 'ev_cauchy_strain.2.Omega(u)' and 'ev_cauchy_stress.2.Omega(solid.D, u)'. But since the constitutive law for the stress is the Cauchy term + the piezo-coupling term, how does one evaluate the stress and output it for given displacements and fields?
Dennis