# a.Energy(gfu) - elementwise possible?

Hello,

is there a possibility to receive the energy of each element in an elegant way?
For the global energy, I know the a.Energy(gfu) function which is very handy.

Update:

I built a workaround to get the Energy per Element.
My BilinearForm a is non-linear. How can I say at which point the ElementMatrices are built?

``````e_int_list = list()
a.AssembleLinearization(gfu.vec)

for el in fes.Elements(VOL):
elmat = a.integrators.CalcElementMatrix (el.GetFE(), el.GetTrafo())
el_dofs = el.dofs
u_el = np.array([gfu.vec[i] for i in el_dofs])
e = 0.5 * u_el.T@elmat.NumPy()@u_el
e_int_list.append(e)

elwise_vol = Integrate(CoefficientFunction(1),mesh,VOL, element_wise=True)

W2 = sum(e_int_list)
print('Energy sum Element energy: ', W2)

fesL2 = L2(mesh, order=0)
energy_gf = GridFunction(fesL2)
vol_gf = GridFunction(fesL2)
energy_gf.vec.FV().NumPy()[:] = np.array(e_int_list)
vol_gf.vec.FV().NumPy()[:] = elwise_vol.NumPy()

energy_cf1 = CoefficientFunction(energy_gf/vol_gf)

W1 = Integrate(energy_cf1,mesh)
print('Energy: 1*', W1)``````

Still the question: Is there any function to directly get the energy distribution as a CoefficientFunction?

Hi,

You can use

``elwise_energy = Integrate(energy(gfu), mesh, VOL, element_wise=True)``

It will provide a vector of dimension of number of elements, where every entry has the contribution of that element

best,
Joachim

Hello,

thanks for your respond. My question was more into the direction whether there is a inbuilt CF “energy”?

Best

Hello,

some update from my side: I searched in the C++ Code and found the function “ApplyElementMatrix” or “ApplyLinearizedElementMatrix”. I think this is exactly what I would need to call from Python.