festim-dev / FESTIM

Coupled hydrogen/tritium transport and heat transfer modelling using FEniCS
https://festim.readthedocs.io/en/stable/
Apache License 2.0
87 stars 22 forks source link

Cylindrical and spherical versions of derived quantities #723

Open RemDelaporteMathurin opened 5 months ago

RemDelaporteMathurin commented 5 months ago

Following what was done in #689 we need an implementation of the cylindrical and spherical versions of

2D axisymmetric

In 2D axisymmetric, the surface element ds is ds = r dr dtheta or ds = r dz dtheta In both cases, in fenics integrating a function f is assemble(f * r * ds) where r is the radius.

dV = r dr dtheta dz Integrating a function f in fenics is therefore assemble(f * r * dx) where r is the radius.

1D spherical

The surface element in 1D spherical is: dS_r = r^2 sin(theta) dtheta dphi The integral of f on a spherical surface is therefore integral(f dS_r) = integral(f r^2 sin(theta) dtheta dphi) = (phi2 - phi1) (-cos(theta2) + cos(theta1)) f r^2 The volume element is

dV = r^2 sin(theta) dr dtheta dphi the integral of f on a spherical volume is therefore

integral(f dV) = (phi2 - phi1) (-cos(theta2) + cos(theta1)) integral(f r^2 dr)

phi is the polar angle and theta is the azimuthal angle

gabriele-ferrero commented 1 month ago

This is going to be very useful, I'm planning to help soon

jhdark commented 1 month ago

@gabriele-ferrero If you wanna do the TotalVolume and TotalSurface ones I can do the Average ones

RemDelaporteMathurin commented 1 month ago

@jhdark @gabriele-ferrero I "assigned" you to this issue. Let me know if you need help and if you want to have this in 1.3

KulaginVladimir commented 2 weeks ago

I suppose, HydrogenFlux and ThermalFlux also require cylindrical/spherical versions.

RemDelaporteMathurin commented 1 week ago

@rekomodo is having a go at implementing the remaining classes