Source code for sfepy.terms.terms_acoustic
import numpy as nm
from sfepy.terms.terms import Term, terms
[docs]class DiffusionSATerm(Term):
r"""
Diffusion sensitivity analysis term.
:Definition:
.. math::
\int_{\Omega} \left[ (\dvg \ul{\Vcal}) K_{ij} \nabla_i q\, \nabla_j p -
K_{ij} (\nabla_j \ul{\Vcal} \nabla q) \nabla_i p - K_{ij} \nabla_j q
(\nabla_i \ul{\Vcal} \nabla p)\right]
:Arguments:
- material: :math:`K_{ij}`
- parameter_q: :math:`q`
- parameter_p: :math:`p`
- parameter_v: :math:`\ul{\Vcal}`
"""
name = 'd_diffusion_sa'
arg_types = ('material', 'parameter_q', 'parameter_p', 'parameter_v')
arg_shapes = {'material' : 'D, D',
'parameter_q' : 1, 'parameter_p' : 1, 'parameter_v' : 'D'}
function = staticmethod(terms.d_diffusion_sa)
[docs] def get_fargs(self, mat, parameter_q, parameter_p, parameter_v,
mode=None, term_mode=None, diff_var=None, **kwargs):
vg, _ = self.get_mapping(parameter_p)
grad_q = self.get(parameter_q, 'grad')
grad_p = self.get(parameter_p, 'grad')
grad_v = self.get(parameter_v, 'grad')
div_v = self.get(parameter_v, 'div')
return grad_q, grad_p, grad_v, div_v, mat, vg
[docs] def get_eval_shape(self, mat, parameter_q, parameter_p, parameter_v,
mode=None, term_mode=None, diff_var=None, **kwargs):
n_el, n_qp, dim, n_en, n_c = self.get_data_shape(parameter_q)
return (n_el, 1, 1, 1), parameter_q.dtype