1212from scipy import integrate
1313
1414from .error import NotAvailableError
15- from .datatypes import Field , Varf , Rprof , Varr
15+ from .datatypes import Field , Varf , Rprof , Varr , Tseries , Vart
1616
1717if typing .TYPE_CHECKING :
18- from typing import Tuple
1918 from numpy import ndarray
2019 from .stagyydata import StagyyData
2120 from ._step import Step
2221
2322
24- def dtime (sdat : StagyyData ) -> Tuple [ ndarray , ndarray ] :
25- """Time increment dt .
23+ def dtime (sdat : StagyyData ) -> Tseries :
24+ """Compute time increment .
2625
2726 Compute dt as a function of time.
2827
@@ -32,11 +31,12 @@ def dtime(sdat: StagyyData) -> Tuple[ndarray, ndarray]:
3231 dt and time arrays.
3332 """
3433 time = sdat .tseries .time
35- return time [1 :] - time [:- 1 ], time [:- 1 ]
34+ return Tseries (time [1 :] - time [:- 1 ], time [:- 1 ],
35+ Vart ("Time increment dt" , 'dt' , 's' ))
3636
3737
38- def dt_dt (sdat : StagyyData ) -> Tuple [ ndarray , ndarray ] :
39- """Derivative of temperature.
38+ def dt_dt (sdat : StagyyData ) -> Tseries :
39+ """Compute derivative of temperature.
4040
4141 Compute dT/dt as a function of time using an explicit Euler scheme.
4242
@@ -47,11 +47,12 @@ def dt_dt(sdat: StagyyData) -> Tuple[ndarray, ndarray]:
4747 """
4848 temp , time , _ = sdat .tseries ['Tmean' ]
4949 dtdt = (temp [1 :] - temp [:- 1 ]) / (time [1 :] - time [:- 1 ])
50- return dtdt , time [:- 1 ]
50+ return Tseries (dtdt , time [:- 1 ],
51+ Vart ("Derivative of temperature" , r'dT/dt' , 'K/s' ))
5152
5253
53- def ebalance (sdat : StagyyData ) -> Tuple [ ndarray , ndarray ] :
54- """Energy balance.
54+ def ebalance (sdat : StagyyData ) -> Tseries :
55+ """Compute energy balance.
5556
5657 Compute Nu_t - Nu_b + V*dT/dt as a function of time using an explicit
5758 Euler scheme. This should be zero if energy is conserved.
@@ -68,16 +69,17 @@ def ebalance(sdat: StagyyData) -> Tuple[ndarray, ndarray]:
6869 else :
6970 coefsurf = 1.
7071 volume = 1.
71- dtdt , time = dt_dt (sdat )
72+ dtdt , time , _ = dt_dt (sdat )
7273 ftop = sdat .tseries ['ftop' ].values * coefsurf
7374 fbot = sdat .tseries ['fbot' ].values
7475 radio = sdat .tseries ['H_int' ].values
7576 ebal = ftop [1 :] - fbot [1 :] + volume * (dtdt - radio [1 :])
76- return ebal , time
77+ return Tseries (ebal , time ,
78+ Vart ("Energy balance" , r'$\mathrm{Nu}$' , '1' ))
7779
7880
79- def mobility (sdat : StagyyData ) -> Tuple [ ndarray , ndarray ] :
80- """Plates mobility.
81+ def mobility (sdat : StagyyData ) -> Tseries :
82+ """Compute plates mobility.
8183
8284 Compute the ratio vsurf / vrms.
8385
@@ -91,7 +93,8 @@ def mobility(sdat: StagyyData) -> Tuple[ndarray, ndarray]:
9193 for step in sdat .steps .filter (rprofs = True ):
9294 time .append (step .timeinfo ['t' ])
9395 mob .append (step .rprofs ['vrms' ].values [- 1 ] / step .timeinfo ['vrms' ])
94- return np .array (mob ), np .array (time )
96+ return Tseries (np .array (mob ), np .array (time ),
97+ Vart ("Plates mobility" , 'Mobility' , '1' ))
9598
9699
97100def delta_r (step : Step ) -> Rprof :
0 commit comments