Skip to content

Commit c6d16d7

Browse files
pseudo code
1 parent 3c8c002 commit c6d16d7

3 files changed

Lines changed: 37 additions & 1 deletion

File tree

src/festim/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
VTXSpeciesExport,
4141
VTXTemperatureExport,
4242
CustomField,
43+
ReactionRate,
4344
)
4445
from .exports.xdmf import XDMFExport
4546
from .heat_transfer_problem import HeatTransferProblem

src/festim/exports/__init__.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,13 @@
1010
from .total_surface import TotalSurface
1111
from .total_volume import TotalVolume
1212
from .volume_quantity import VolumeQuantity
13-
from .vtx import ExportBaseClass, VTXSpeciesExport, VTXTemperatureExport, CustomField
13+
from .vtx import (
14+
ExportBaseClass,
15+
VTXSpeciesExport,
16+
VTXTemperatureExport,
17+
CustomField,
18+
ReactionRate,
19+
)
1420
from .xdmf import XDMFExport
1521

1622
__all__ = [
@@ -23,6 +29,7 @@
2329
"MinimumSurface",
2430
"MinimumVolume",
2531
"Profile1DExport",
32+
"ReactionRate",
2633
"SurfaceFlux",
2734
"SurfaceQuantity",
2835
"TotalSurface",

src/festim/exports/vtx.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from festim.helpers import get_interpolation_points
1111
from festim.species import Species
1212
from festim.subdomain.volume_subdomain import VolumeSubdomain
13+
from festim.reaction import Reaction
1314

1415

1516
class ExportBaseClass:
@@ -319,3 +320,30 @@ def check_valid_inputs(self, kwargs: dict, mixed_domain: bool):
319320
"defined on the parent mesh."
320321
"See https://github.com/FEniCS/dolfinx/issues/3207 for more details."
321322
)
323+
324+
325+
class ReactionRate(CustomField):
326+
def __init__(
327+
self,
328+
reaction: Reaction,
329+
filename: str | Path,
330+
times: list[float] | None = None,
331+
subdomain: VolumeSubdomain | None = None,
332+
checkpoint: bool = False,
333+
):
334+
# for example
335+
def expression(T, c_a, c_b, c_c):
336+
return reaction.reaction_term(
337+
T, reactant_concentrations=[c_a, c_b], product_concentrations=[c_c]
338+
)
339+
340+
super().__init__(
341+
filename=filename,
342+
expression=expression,
343+
species_dependent_value={
344+
spe.name: spe for spe in reaction.reactant + reaction.product
345+
},
346+
times=times,
347+
subdomain=subdomain,
348+
checkpoint=checkpoint,
349+
)

0 commit comments

Comments
 (0)