Compare commits
103 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b0f73669b7 | ||
|
|
f938f50e60 | ||
|
|
691d8f30aa | ||
|
|
cade121c45 | ||
|
|
7199765d93 | ||
|
|
69ae83b16f | ||
|
|
1d5bb6b138 | ||
|
|
29468c39fc | ||
|
|
aa6630546f | ||
|
|
8d9dc76154 | ||
|
|
d0357e0cf6 | ||
|
|
23e0706324 | ||
|
|
869647345f | ||
|
|
4f6c3641dc | ||
|
|
3b027582df | ||
|
|
1f0555bb71 | ||
|
|
964d350dcb | ||
|
|
5b01326119 | ||
|
|
1e06779e09 | ||
|
|
62cb7f91e3 | ||
|
|
b3c3471787 | ||
|
|
61cbf5cd6b | ||
|
|
1a3a43f4f1 | ||
|
|
309c193252 | ||
|
|
e07741be6d | ||
|
|
ae944e2e86 | ||
|
|
9cb08fb100 | ||
|
|
bb6d3d41a1 | ||
|
|
37644202c7 | ||
|
|
53e9d2f2ee | ||
|
|
1a4eff508e | ||
|
|
4bf2f3d52b | ||
|
|
d97fce65c1 | ||
|
|
ca3cb023a4 | ||
|
|
5930aeceec | ||
|
|
c1516d6167 | ||
|
|
c3000f60e6 | ||
|
|
72a07a7d24 | ||
|
|
21feeb6491 | ||
|
|
cb0f0eaee2 | ||
|
|
e42bac1463 | ||
|
|
f13f811cfa | ||
|
|
99f5898f25 | ||
|
|
8b3a6b76f6 | ||
|
|
7e8c37828f | ||
|
|
ccc4cb3c00 | ||
|
|
29c8a0faf0 | ||
|
|
21cd40eb64 | ||
|
|
8cd64e0b26 | ||
|
|
b7aaf33311 | ||
|
|
b3331fcd42 | ||
|
|
8c1baef88f | ||
|
|
46203819bb | ||
|
|
67ca89f66b | ||
|
|
2c054ac935 | ||
|
|
b5f0a94607 | ||
|
|
e203d77ac5 | ||
|
|
63ba0cc2b8 | ||
|
|
d982550221 | ||
|
|
3315daf767 | ||
|
|
3f5a94cb4e | ||
|
|
9d3052418b | ||
|
|
e730b77580 | ||
|
|
f75c133680 | ||
|
|
42b42b6a1a | ||
|
|
e177b29807 | ||
|
|
5016e17910 | ||
|
|
3314200d42 | ||
|
|
fbc50f2e71 | ||
|
|
2dd71c135c | ||
|
|
65341ad083 | ||
|
|
6036e626ad | ||
|
|
75bb200d76 | ||
|
|
e6e2408e13 | ||
|
|
a561577ba7 | ||
|
|
568851e60a | ||
|
|
f46c6c718e | ||
|
|
5e50ee0b01 | ||
|
|
b29580c7ca | ||
|
|
071c7015a4 | ||
|
|
15afcd7fc7 | ||
|
|
c3a68de31d | ||
|
|
4cd027fde6 | ||
|
|
4b071d8cd8 | ||
|
|
81983e739d | ||
|
|
2dadd26cc6 | ||
|
|
75853cd78a | ||
|
|
8dfa572e66 | ||
|
|
3942ce0a27 | ||
|
|
f5e136a362 | ||
|
|
ca7c0c1f43 | ||
|
|
ac9365798d | ||
|
|
fab1de8e0f | ||
|
|
967d903125 | ||
|
|
fe2ea10a20 | ||
|
|
e54ed69b24 | ||
|
|
66b7a1dd31 | ||
|
|
b812fb5d7a | ||
|
|
9efbb40d15 | ||
|
|
cd0806aa90 | ||
|
|
abe1ec64e3 | ||
|
|
b06a592df4 | ||
|
|
9bd231d8a9 |
2
.gitattributes
vendored
|
|
@ -1 +1,3 @@
|
|||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
h5m/*.h5 filter=lfs diff=lfs merge=lfs -text
|
||||
*.h5m filter=lfs diff=lfs merge=lfs -text
|
||||
|
|
|
|||
63
README.md
|
|
@ -1,49 +1,36 @@
|
|||
# msre
|
||||
[](https://www.gnu.org/licenses/gpl-3.0)
|
||||
|
||||
> detailed cad model of the [msre](https://en.wikipedia.org/wiki/Molten-Salt_Reactor_Experiment) (molten salt reactor experiment), operated by oak ridge national laboratory 1965-69.
|
||||
detailed cad model and openmc benchmarks of the [msre](https://en.wikipedia.org/wiki/Molten-Salt_Reactor_Experiment) (molten salt reactor experiment), operated by oak ridge national laboratory 1965-69.
|
||||
|
||||
[onshape cad model v17](https://cad.onshape.com/documents/4f04f63bfd4138a61a54b3f8/v/b8c29a0cedda86dfc6948111/)
|
||||
cad model includes crude drawings of the insulation, thermal shield, and the reactor pit, but not detailes such as components or piping.
|
||||
all part names' begining correspond to it's material, e.g. graphite, salt, or inor-8 (hasteloy n).
|
||||
all core parts are thermally expanded to the operating temperature (currently to the temperature of the zero power experiments during commisioning). note that graphite thermal expansion coefficients are only given for room temperature and thus likely underpredicted and the control rod assembly temperature is unknow and like much higher than currently assigned.
|
||||
|
||||
[core/msrecore.pdf](core/docs/msrecore.pdf) lists reference of the msre core design, documented in the old msre reports and located [here](https://github.com/openmsr/msr-archive/blob/master/README.md).
|
||||
|
||||
individual parts or assemblies can be exported directly from onshape. step files of entire msre assembly and one control rod assembly can be found in [](step_files/).
|
||||
|
||||
this work and the cad models are under the GNU General Public License v3.0
|
||||
|
||||
## msre core
|
||||

|
||||
[core/msrecore.pdf](core/docs/msrecore.pdf) lists reference of the msre core design, documented in the old msre reports and located in the repository [github.com/openmsr/msr-archive](https://github.com/openmsr/msr-archive/blob/master/README.md).
|
||||
|
||||
the work-in-progress cad model can be found [here](https://cad.onshape.com/documents/4f04f63bfd4138a61a54b3f8/w/11cb17d9ef25bb27f8ada6c0/e/72f417dd8eb3e2fa4f9ccb9e) on onshape.
|
||||

|
||||
|
||||
note that this work and the cad model is under the GNU General Public License v3.0
|
||||
# openmc benchmark
|
||||
openmc benchmark include:
|
||||
- msre cad with settable control rods
|
||||
- msre isothermal temperature coefficient calculation
|
||||
- msre depletion analysis with fission products removal
|
||||
|
||||
## msre heat exchangers
|
||||
|
||||
open-access [master's thesis](https://ltu.diva-portal.org/smash/get/diva2:1546993/FULLTEXT01.pdf) produced by Malcolm Akner about simulations of the heat exchangers of the msre, titled:
|
||||
|
||||
> Validating results from the Molten Salt Reactor Experiment by use of turbulent CFD simulations
|
||||
> - A study of a modified U-tube shell-and-tube primary heat exchanger and radiator with molten salts
|
||||
|
||||
### msre primary heat exchanger
|
||||

|
||||
|
||||
[onshape primary heat exchanger cad model](https://cad.onshape.com/documents/03be2f510296a2e264886390/w/8cfbca3b7b9682dd4e53a998/e/54728fd981a1b4f5594c73d6), open to copy and use freely. chapter 4.1 in the [thesis](https://ltu.diva-portal.org/smash/get/diva2:1546993/FULLTEXT01.pdf) mentioned above covers the cad construction details extensively with references to original msre reports.
|
||||
|
||||

|
||||
|
||||
[simscale primary heat exchanger simulation model](https://www.simscale.com/projects/MalcolmAkner/phex_-_final_version/). simulation results for primary heat exchanger can be viewed in chapter 6.2.2.1 of the [thesis](https://ltu.diva-portal.org/smash/get/diva2:1546993/FULLTEXT01.pdf), with comparisons to msre data in chapter 7.1.1.
|
||||
|
||||

|
||||
|
||||
primary heat exchanger produced and installed in the msre.
|
||||
prerequisites
|
||||
- [openmc](https://docs.openmc.org/en/stable/) automated source installation scripts for linux can be found [here](https://github.com/openmsr/openmc_install_scripts)
|
||||
- [CAD_to_openMC](https://github.com/openmsr/CAD_to_openMC) is an open-source package to convert CAD geometry (in the form of '.step' files) into an openmc-readable h5m file
|
||||
|
||||
|
||||
### msre radiator
|
||||

|
||||
# msre heat exchangers thermohydralics
|
||||
open-access [master's thesis](https://ltu.diva-portal.org/smash/get/diva2:1546993/FULLTEXT01.pdf) produced by Malcolm Akner about simulations of the heat exchangers of the msre, titled:
|
||||
|
||||
[onshape radiator cad model](https://cad.onshape.com/documents/bf944323ed6a82e05924078c/w/2a25d73c5a3a66824d2d5fbd/e/a83d5535602a053216fedff4) open to copy and use freely. chapter 4.2 of the [thesis](https://ltu.diva-portal.org/smash/get/diva2:1546993/FULLTEXT01.pdf) covers the cad construction details with origianl references to msre reports.
|
||||
|
||||

|
||||
|
||||
radiator produced and installed in the msre.
|
||||
|
||||
---
|
||||
|
||||
please contact [me](https://github.com/aslakstubsgaard) if you want to contribute.
|
||||
note that this work and the cad models are under the GNU General Public License v3.0
|
||||
|
||||
---
|
||||
Validating results from the Molten Salt Reactor Experiment by use of turbulent CFD simulations
|
||||
- A study of a modified U-tube shell-and-tube primary heat exchanger and radiator with molten salts
|
||||
|
|
|
|||
BIN
core/docs/msre-pit.png
Normal file
|
After Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 221 KiB |
78
dynamic_model/README.md
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
# Model
|
||||
Non-linear dynamic model of the MSRE based on [Singh et al.](https://www.sciencedirect.com/science/article/pii/S030645491730381X). The model uses a "nodalized" approach, in which the reactor system is composed of coupled subsystems, each of which contain multiple nodes to represent the various dynamics contributing to neutron density (reactor power) and heat transfer. This model is a replication of the one-region nodal model implemented in Singh et al. A schematic of the nodes is shown below
|
||||
|
||||

|
||||
|
||||
## Kinetics
|
||||
The neutron kinetics are expressed in terms of fractional power. As described in Singh et al., "The premise is that reactor power is proportional to neutron density, with all other parameters held fixed." In the model herien, kinetics are described by the following set of equations
|
||||
|
||||
```math
|
||||
\begin{equation}
|
||||
\frac{{dn(t)}}{{dt}} = \frac{{(\rho(t) - \beta)}}{\Lambda} n(t) + \sum_{{i=1}}^6 \lambda_i C_i(t) + S(t)
|
||||
\end{equation}
|
||||
```
|
||||
|
||||
where $S(t)$ is an external source term, and $C_i(t)$ is the concentration of the $i^{th}$ precursor group (six total for this model) with
|
||||
|
||||
```math
|
||||
\frac{dC_i(t)}{dt} = \frac{\beta_i}{\Lambda}n(t)-\lambda_i C_i(t) - \frac{C_i(t)}{\tau_C} + \frac{C_i(t - \tau_L) e^{-\lambda_i \tau_L}}{\tau_C}
|
||||
```
|
||||
|
||||
where $\rho(t)$ is the total reactivity such that
|
||||
|
||||
```math
|
||||
\rho(t)=\rho_0+\rho_{fb}(t)+\rho_{ext}
|
||||
```
|
||||
|
||||
where $\rho_0$ is the reactivity necessary for steady state operation, found by solving the above two equations in the steady state, which yields
|
||||
|
||||
```math
|
||||
\rho_0 = \beta - \sum_{i=1}^6 \frac{\beta_i}{1+\frac{1}{\lambda_i \tau_C}(1-e^{-\lambda_i \tau_L})}
|
||||
```
|
||||
|
||||
and $\rho_{ext}$ is external reactivity, e.g. from a reactivity insertion, and $\rho_{fb}$ is the feedback reactivity due to temperature differences in the core nodes, expressed as
|
||||
|
||||
```math
|
||||
\rho_{fb}(t) = \alpha_f \sum_{i=1}^{n} I_{fi} (T_{f_i,0} - T_{f_i}(t)) + \alpha_g \sum_{i=1}^{n} I_{gi} (T_{g,0} - T_{g_i}(t)), \quad \text{where} \sum_{\text{regions}} I_{fi} = \sum_{\text{regions}} I_{gi} = 1.0
|
||||
```
|
||||
|
||||
where $\alpha_f$ and $\alpha_g$ are the fuel and graphite temperature-reactivity coefficients respectively, and $I$ represents the weighted nuclear importance factor of each region.
|
||||
|
||||
The kinetics are coupled to the heat exchanger node via the feedback reactivity, $\rho_{fb}(t)$, which depends on the temperature of the fuel and graphite nodes, which ultimately depend on the fuel inlet temperature. Note, the differential equation govenring neutron density, $\frac{dn(t)}{dt}$, is nonlinear due to the fact that $n(t)$ is multiplied with $\rho(t)$.
|
||||
|
||||
## Heat Transfer
|
||||
|
||||
The equations governing heat transfer contain three terms; a source term and a sink term, occuring from either mass transfer (1D flow) or conduction via wetted interface, as well as a fractional power generation term, which is zero at all nodes outside of the core. The equations governing the two core fuel nodes are, for example
|
||||
|
||||
```math
|
||||
\frac{dT_{f1}}{dt} = \frac{W_f}{m_{f1}}(T_{f_{in}}-T_{f1}) + \frac{K_1 P_0 (\frac{n}{n_0})}{m_{f1} C_{pf}} + \left( \frac{K_{g1}}{K_{g1}+K_{g2}} \right) \frac{hA_{fg}}{m_{f1}C_{pf}}(T_g - T_{f1})
|
||||
```
|
||||
```math
|
||||
\frac{dT_{f2}}{dt} = \frac{W_f}{m_{f2}}(T_{f1}-T_{f2}) + \frac{K_2 P_0 (\frac{n}{n_0})}{m_{f2} C_{pf}} + \left( \frac{K_{g2}}{K_{g1}+K_{g2}} \right) \frac{hA_{fg}}{m_{f2}C_{pf}}(T_g - T_{f1})
|
||||
```
|
||||
"Here, $W_f$ is the mass flow rate of fuel salt, $m_{f1}$ and $m_{f2}$ represent the mass of fuel nodes 1 and 2 respectively, $C_{pf}$ represents the fuel salt specific heat capacity, $K_1$ and $K_2$ are the fraction of total power generated in fuel nodes 1 and 2, $K_{g1}$ and $K_{g2}$ represent the fraction of power generated in the graphite transferred to each fuel node, $hA_{fg}$ is the product of area and heat transfer coefficient for the fuel-graphite interface, $P_0$ is the nominal power which multiplied with fractional neutron density n/no gives the instantaneous power, and the $T$s represent the temperatures of the various nodes. Note that the direction of heat transfer depends on the instantaneous temperature of the various nodes." (Singh et. al).
|
||||
|
||||
# Method
|
||||
The model herein uses [JiTCDDE](https://jitcdde.readthedocs.io/en/stable/), a numerical solver for delay-differential equations. Sample implementation is shown below:
|
||||
|
||||
```python
|
||||
# instantiate jitcdde object
|
||||
DDE = jitcdde([T_out_rc,T_out_air,T_hf1,T_hf2,T_hf3,T_hf4,T_ht1,T_ht2,T_hc1,
|
||||
T_hc2,T_hc3,T_hc4,n,C1,C2,C3,C4,C5,C6,T_cg,T_cf1,T_cf2,rho])
|
||||
|
||||
# set initial conditions
|
||||
DDE.constant_past([T0_rp, T0_rs, T0_p1,T0_p2, T0_p3, T0_p4, T0_t1, T0_t2, T0_s1, T0_s2,
|
||||
T0_s3, T0_s4, n_frac0, C0[0], C0[1], C0[2], C0[3], C0[4], C0[5],
|
||||
T0_g1, T0_f1, T0_f2,rho_initial])
|
||||
|
||||
# jitcdde solver parameters
|
||||
t0 = 0.0
|
||||
tf = 1000.00
|
||||
T = np.arange(t0,tf,0.01)
|
||||
|
||||
sol_jit = []
|
||||
for t_x in T:
|
||||
sol_jit.append(DDE.integrate(t_x))
|
||||
```
|
||||
|
||||
The [scipyODE_implementation](./scipyODE_implementation/) contains a manual implementation using the `dopri5` method of SciPy's ODE library. However, since SciPy's ODE library does not support delay differential equations, the delay terms are stored and handled manually. Since the 'dopri5' method uses adaptive time-stepping, linear interpolation is used for approximating the value of the delay terms near the closest timestep to the delay.
|
||||
BIN
dynamic_model/figures/msre_one_region_diagram.png
Normal file
|
After Width: | Height: | Size: 129 KiB |
234
dynamic_model/jitcdde_implementation/parameters.py
Normal file
|
|
@ -0,0 +1,234 @@
|
|||
import numpy as np
|
||||
import pandas as pd
|
||||
import math
|
||||
pi = math.pi
|
||||
|
||||
# Perturbations
|
||||
# SOURCE INSERTION
|
||||
# No source insertion
|
||||
sourcedata = np.array([0, 0, 0])
|
||||
sourcetime = np.array([0, 50, 100])
|
||||
# % 1 (n/no)/s for 10 seconds
|
||||
# sourcedata = np.array([0, 10, 0])
|
||||
# sourcetime = np.array([0, 10, 20])
|
||||
source = pd.Series(sourcedata, index=sourcetime)
|
||||
|
||||
# REACTIVITY INSERTION
|
||||
# No reactivity insertion
|
||||
simtime = 10
|
||||
reactdata = np.array([0, 5E-4])
|
||||
reacttime = np.array([0, 2500])
|
||||
# Periodic 60 PCM for 50 seconds
|
||||
# simtime = 500
|
||||
# periodic = np.array([[0, 0], [50, 6e-4], [100, 0], [150, -6e-4], [200, 0], [250, 6e-4], [300, 0], [350, -6e-4], [400, 0]])
|
||||
# reactdata = periodic[:, 1]
|
||||
# reacttime = periodic[:, 0]
|
||||
# Step up 60 pcm
|
||||
# simtime = 1000
|
||||
# reactdata = np.array([0, 6e-3])
|
||||
# reacttime = np.array([0, 300])
|
||||
# # Step down -60 pcm for 10 sec
|
||||
# simtime = 100
|
||||
# reactdata = np.array([0, -6e-4])
|
||||
# reacttime = np.array([0, 50])
|
||||
# # Pulse 600 pcm for 0.1 sec
|
||||
# simtime = 30
|
||||
# reactdata = np.array([0, 6e-3, 0])
|
||||
# reacttime = np.array([0, 10, 10.1])
|
||||
|
||||
react = pd.Series(reactdata, index=reacttime)
|
||||
|
||||
ts_max = 1e-1 # maximum timestep (s)
|
||||
|
||||
# NEUTRONICS DATA
|
||||
tau_l = 16.73 # ORNL-TM-0728 %16.44; % (s)
|
||||
tau_c = 8.46 # ORNL-TM-0728 %8.460; % (s)
|
||||
P = 8 # Thermal Power in MW ORNL-TM-1070, p.2
|
||||
n_frac0 = 1.0 # initial fractional neutron density n/n0 (n/cm^3/s)
|
||||
Lam = 2.400E-04 # mean generation time ORNL-TM-1070 p.15 U235
|
||||
# Lam = 4.0E-04; # mean generation time ORNL-TM-1070 p.15 U233
|
||||
lam = np.array([1.240E-02, 3.05E-02, 1.11E-01, 3.01E-01, 1.140E+00, 3.014E+00])
|
||||
beta = np.array([0.000223, 0.001457, 0.001307, 0.002628, 0.000766, 0.00023]) # U235
|
||||
# beta = np.array([0.00023, 0.00079, 0.00067, 0.00073, 0.00013, 0.00009]) # U233
|
||||
beta_t = np.sum(beta) # total delayed neutron fraction MSRE
|
||||
rho_0 = beta_t-sum(np.divide(beta,1+np.divide(1-np.exp(-lam*tau_l),lam*tau_c))) # reactivity change in going from stationary to circulating fuel
|
||||
C0 = beta / Lam * (1.0 / (lam - (np.exp(-lam * tau_l) - 1.0) / tau_c))
|
||||
|
||||
# Feedback co-efficients
|
||||
a_f = -8.71E-05 # U235 (drho/°C) fuel salt temperature-reactivity feedback coefficient ORNL-TM-1647 p.3 % -5.904E-05; % ORNL-TM-0728 p. 101 %
|
||||
a_g = -6.66E-05 # U235 (drho/°C) graphite temperature-reactivity feedback coefficient ORNL-TM-1647 p.3 % -6.624E-05; % ORNL-TM-0728 p.101
|
||||
|
||||
# CORE HEAT TRANSFER PARAMETERS
|
||||
# FUEL PARAMETERS - DONE
|
||||
vdot_f = 7.5708E-02 # ORNL-TM-0728 % 7.571e-2; % vol. flow rate (m^3/s) ORNL-TM-1647 p.3, ORNL-TM-0728 p.12
|
||||
rho_f = 2.14647E+03 # (partially enriched U-235)ORNL-TM-0728 p.8 2.243E+03; % (Th-U) density of fuel salt (kg/m^3) ORNL-TM-0728 p.8
|
||||
W_f = 1.623879934566580e+02 # 1.83085e+02;%vdot_f*rho_f; % 182.78; % calcd from m_dot*cp*delT=P; vdot_f*rho_f; % fuel flow rate (kg/s)
|
||||
# tau_f_c = tau_c; % ORNL-TM-0728 % 8.45; % transit time of fuel in core (s) ORNL-TM-1070 p.15, TDAMSRE p.5
|
||||
m_f = W_f * tau_c # fuel mass in core (kg)
|
||||
nn_f = 2 # number of fuel nodes in core model
|
||||
mn_f = m_f / nn_f # fuel mass per node (kg)
|
||||
# cp_f = 4.2*9/5; % (MJ/deg-C) total fuel heat capacity TDAMSRE p.5
|
||||
scp_f = 1.9665E-3 # specific heat capacity of fuel salt (MJ/kg-C) ORNL-TM-0728 p.8
|
||||
|
||||
# Core Upflow - DONE
|
||||
v_g = 1.95386 # graphite volume(m^3) ORNL-TM-0728 p. 101
|
||||
rho_g = 1.860E3 # graphite density (kg/m^3) ORNL-3812 p.77, ORNL-TM-0728 p.87
|
||||
m_g = v_g * rho_g # graphite mass (kg)
|
||||
cp_g = 3.6 * 9 / 5 # TDAMSRE p.5 graphite total heat capacity (MW-s/C) ORNL-TM-1647 p.3
|
||||
scp_g = 1.773E-3 # cp_g/m_g; % graphite specific heat capacity (MW-s/kg-C) ORNL-TM-1647 p.3
|
||||
mcp_g1 = m_g * scp_g # (mass of material x heat capacity of material) of graphite per lump (MW-s/°C)
|
||||
mcp_f1 = mn_f * scp_f # (mass of material x heat capacity of material) of fuel salt per lump (MW-s/°C)
|
||||
mcp_f2 = mn_f * scp_f # (mass of material x heat capacity of material) of fuel salt per lump (MW-s/°C)
|
||||
hA_fg = 0.02 * 9 / 5 # (fuel to graphite heat transfer coeff x heat transfer area) (MW/°C) ORNL-TM-1647 p.3, TDAMSRE p.5
|
||||
k_g = 0.07 # fraction of total power generated in the graphite ORNL-TM-0728 p.9
|
||||
k_1 = 0.5 # fraction of heat transferred from graphite which goes to the first fuel lump
|
||||
k_2 = 0.5 # fraction of heat transferred from graphite which goes to the second fuel lump
|
||||
k_f = 0.93 # fraction of heat generated in fuel - that generated in the external loop ORNL-TM-0728 p.9
|
||||
k_f1 = k_f / nn_f # fraction of total power generated in lump f1
|
||||
k_f2 = k_f / nn_f # fraction of total power generated in lump f2
|
||||
|
||||
# New node for power deposited in fuel outside the core
|
||||
k_out = 1 - (k_g + k_f) # fraction of power generated in fuel in external loop ORNL-TM-0728 p.9
|
||||
m_out = W_f # (kg) Mass of node such that resident time is 1 sec (W_f needs to be defined)
|
||||
|
||||
# Initial conditions - DONE
|
||||
Tf_in = 6.3222E+02 # in °C ORNL-TM-1647 p.2
|
||||
T0_f2 = 6.5727E+02 # 6.5444E+02; % in °C 6.461904761904777e+02; ORNL-TM-1647 p.2
|
||||
T0_f1 = Tf_in + (T0_f2 - Tf_in) / 2 # 6.405952380952389e+02; in °C
|
||||
T0_g1 = T0_f1 + (k_g * P / hA_fg) # 6.589285714285924e+02; in °C
|
||||
# T0_out = k_out * P / m_out / scp_f + T0_f2 # in °C (scp_f needs to be defined)
|
||||
|
||||
|
||||
# Heat Exchanger - DONE
|
||||
# Geometry
|
||||
d_he = 16 # (in) he diameter ORNL-TM-0728 p. 164
|
||||
h_he = 72 # (in) active height % 96; %(in) he height ORNL-TM-0728 p. 164
|
||||
od_tube = 0.5 # (in) coolant tube OD ORNL-TM-0728 p. 164
|
||||
id_tube = od_tube - 2 * 0.042 # (in) coolant tube ID ORNL-TM-0728 p. 164
|
||||
n_tube = 159 # number of coolant tubes ORNL-TM-0728 p. 164
|
||||
a_tube = 254 * 144 # (in^2) total area of tubes ORNL-TM-0728 p. 164
|
||||
l_tube = a_tube / n_tube / (np.pi * od_tube) # (in) tube length
|
||||
v_tube = n_tube * np.pi * (od_tube / 2) ** 2 * l_tube # (in^3) hx shell volume occupied by tubes
|
||||
v_cool = n_tube * np.pi * (id_tube / 2) ** 2 * l_tube # (in^3) hx volume occupied by coolant
|
||||
v_he = (d_he / 2) ** 2 * np.pi * h_he # (in^3) volume of heat exchanger shell
|
||||
v_he_fuel = v_he - v_tube # (in^3) volume available to fuel in shell
|
||||
|
||||
# Unit conversions
|
||||
in_m = 1.63871e-5 # 1 cubic inch = 1.63871e-5 cubic meters
|
||||
|
||||
# PRIMARY FLOW PARAMETERS - DONE
|
||||
W_p = W_f # fuel flow rate (kg/s)
|
||||
|
||||
m_p = v_he_fuel * in_m * rho_f # fuel mass in PHE (kg)
|
||||
nn_p = 4 # number of fuel nodes in PHE
|
||||
mn_p = m_p / nn_p # fuel mass per node (kg)
|
||||
cp_p = scp_f # fuel heat capacity (MJ/(kg-C))
|
||||
|
||||
# SECONDARY FLOW PARAMETERS - DONE
|
||||
vdot_s = 5.36265E-02 # ORNL-TM-0728 p. 164 % 5.236E-02; % coolant volume flow rate (m^3/s) ORNL-TM-1647 p.3
|
||||
rho_s = 1.922e3 # coolant salt density (kg/m^3) ORNL-TM-0728 p.8
|
||||
W_s = 1.005793369810108e+02 # vdot_s*rho_s; % calcd from mdot*cp*delT; vdot_s*rho_s; % coolant flow rate (kg/s) ORNL-TM-1647 p.3
|
||||
|
||||
m_s = v_cool * in_m * rho_s # coolant mass in PHE (kg)
|
||||
nn_s = 4 # number of coolant nodes in PHE
|
||||
mn_s = m_s / nn_s # coolant mass per node (kg)
|
||||
scp_s = 2.39E-3 # cp_s/m_s; % specific heat capacity of coolant (MJ/(kg-C) ORNL-TM-0728 p.8
|
||||
|
||||
A_phe = 2.359E+01 # effective area for heat transfer (primary and secondary, m^2) ORNL-TM-0728 p.164
|
||||
|
||||
ha_p = 6.480E-01 # heat transfer*area coefficient from primary to tubes (MW/C) ORNL-TM-1647 p.3
|
||||
ha_s = 3.060E-01 # heat transfer*area coefficient from tubes to secondary (MW/C) ORNL-TM-1647 p.3
|
||||
|
||||
# Primary Side
|
||||
mcp_pn = mn_p * cp_p # (mass of material x heat capacity of material) of fuel salt per lump in MW-s/°C
|
||||
hA_pn = ha_p / nn_s # 3.030; % (primary to tube heat transfer coeff x heat transfer area) in MW/°C
|
||||
|
||||
# Tubes - DONE
|
||||
nn_t = 2 # number of nodes of tubes in the model
|
||||
rho_tube = 8.7745E+03 # (kg/m^3) density of INOR-8 ORNL-TM-0728 p.20
|
||||
m_tn = (v_tube - v_cool) * in_m * rho_tube / nn_t # mass of tubes (kg)
|
||||
scp_t = 5.778E-04 # specific heat capacity of tubes (MJ/(kg-C)) ORNL-TM-0728 p.20
|
||||
mcp_tn = m_tn * scp_t # mass*(heat capacity) of tubes per lump in MW-s/°C
|
||||
|
||||
# Secondary Side - DONE
|
||||
mcp_sn = mn_s * scp_s # (mass of material x heat capacity of material) of coolant salt per lump in MW-s/°C
|
||||
hA_sn = ha_s / nn_s # (tube to secondary heat transfer coeff x heat transfer area) in MW/°C
|
||||
|
||||
# Initial conditions - DONE
|
||||
# Primary nodes
|
||||
Tp_in = T0_f2 # in °C ORNL-TM-1647 p.2
|
||||
T0_p4 = Tf_in # 6.5444E+02; % in °C 6.461904761904777e+02; ORNL-TM-1647 p.2
|
||||
T0_p1 = Tp_in + (T0_p4 - Tp_in) / 4 # in °C
|
||||
T0_p2 = Tp_in + 2 * (T0_p4 - Tp_in) / 4 # in °C
|
||||
T0_p3 = Tp_in + 3 * (T0_p4 - Tp_in) / 4 # in °C
|
||||
|
||||
# Secondary nodes
|
||||
Ts_in = 5.4611E+02 # in °C ORNL-TM-1647 p.2
|
||||
T0_s4 = 5.7939E+02 # in °C ORNL-TM-1647 p.2
|
||||
T0_s1 = Ts_in + (T0_s4 - Ts_in) / nn_s # in °C
|
||||
T0_s2 = Ts_in + 2 * (T0_s4 - Ts_in) / nn_s # in °C
|
||||
T0_s3 = Ts_in + 3 * (T0_s4 - Ts_in) / nn_s # in °C
|
||||
# Tube nodes
|
||||
T0_t1 = (T0_p1 * hA_pn + T0_s3 * hA_sn) / (hA_pn + hA_sn) # in °C
|
||||
T0_t2 = (T0_p3 * hA_pn + T0_s1 * hA_sn) / (hA_pn + hA_sn) # in °C
|
||||
|
||||
# Radiator Parameters - DONE
|
||||
|
||||
# Initial conditions - DONE
|
||||
# Primary nodes
|
||||
Trp_in = T0_s4 # 5.933E+02; % in °C ORNL-TM-1647 p.2
|
||||
T0_rp = Ts_in # in °C ORNL-TM-1647 p.2
|
||||
|
||||
# Secondary nodes - DONE
|
||||
Trs_in = 37.78 # (C) air inlet temperature ORNL-TM-1647 p.2
|
||||
T0_rs = 148.9 # (C) air exit temperature ORNL-TM-1647 p.2
|
||||
|
||||
# Radiator Geometry
|
||||
od_rad = 0.01905 # (m) outer diameter of tubes in the radiator ORNL-TM-0728 p.296
|
||||
tube_wall_thick = 0.0018288 # (m) thickness of tubes in the radiator ORNL-TM-0728 p.296
|
||||
id_rad = od_rad - 2 * tube_wall_thick
|
||||
n_rtubes = 120 # number of tubes in the radiator (rows times tubes per row) ORNL-TM-0728 p.296
|
||||
l_rtube = 9.144 # (m) length of tubes in the radiator ORNL-TM-0728 p.296
|
||||
v_rp = pi * (id_rad / 2) ** 2 * l_rtube * n_rtubes # volume available to salt in the radiator
|
||||
# v_rtube = pi * (od_rad / 2) ** 2 * l_rtube * n_rtubes - v_rp # volume of metal in radiator tubes *TUBES NOT MODELED
|
||||
|
||||
n_tpr = 12 # number of tubes per row in the radiator matrix
|
||||
n_row = 10 # number rows in the radiator matrix
|
||||
tube_space = 0.0381 # (m) spacing between tubes and rows of matrix
|
||||
v_rs = (n_row * od_rad + (n_row - 1) * tube_space) * (n_tpr * od_rad + (n_tpr - 1) * tube_space) * l_rtube # volume of air inside radiator
|
||||
|
||||
# PRIMARY FLOW PARAMETERS - DONE
|
||||
W_rp = W_s # coolant salt flow rate (kg/s)
|
||||
m_rp = v_rp * rho_s # coolant salt mass in rad (kg)
|
||||
nn_rp = 1 # number of coolant salt nodes in the radiator
|
||||
mn_rp = m_rp / nn_rp # coolant mass per node (kg)
|
||||
cp_rp = scp_s # coolant specific heat capacity (MJ/(kg-C))
|
||||
|
||||
# SECONDARY FLOW PARAMETERS - DONE
|
||||
vdot_rs = 94.389 # ORNL-TM-0728 p. 296; 78.82; % air volume flow rate (m^3/s) ORNL-TM-1647 p.2
|
||||
rho_rs = 1.1237 # air density (kg/m^3) REFPROP (310K and 0.1MPa)
|
||||
W_rs = vdot_rs * rho_rs # air flow rate (kg/s)
|
||||
|
||||
m_rs = v_rs * rho_rs # coolant air mass in rad (kg)
|
||||
nn_rs = 1 # number of coolant nodes in rad
|
||||
mn_rs = m_rs / nn_rs # coolant mass per node (kg)
|
||||
scp_rs = 1.0085E-3 # (MJ/kg-C) specific heat capacity of air at (air_out+air_in)/2 REFPROP
|
||||
|
||||
A_rad = 6.503E1 # (m^2) surface area of the radiator ORNL-TM-0728 p.14
|
||||
h_roverall = P / A_rad / ((T0_rp + Trp_in) / 2 - (T0_rs + Trs_in) / 2) # cald as: P/A_rad/((T0_rp+Trp_in)/2-(T0_rs+Trs_in)/2) 3.168E-4; % (MW/m^2-C) polimi thesis
|
||||
|
||||
# Primary Side
|
||||
mcp_rpn = mn_rp * cp_rp # (mass of material x heat capacity of material) of fuel salt per lump in MW-s/°C
|
||||
hA_rpn = h_roverall * A_rad / nn_rs # 3.030; % (primary to secondary heat transfer coeff x heat transfer area) in MW/°C
|
||||
|
||||
# Secondary Side - DONE
|
||||
mcp_rsn = mn_rs * scp_rs # (mass of material x heat capacity of material) of coolant salt per lump in MW-s/°C
|
||||
hA_rsn = h_roverall * A_rad / nn_rs # (tube to secondary heat transfer coeff x heat transfer area) in MW/°C
|
||||
|
||||
# Pure time delays between components - DONE
|
||||
tau_hx_c = 8.67 # (sec) delay from hx to core TDAMSRE p.6
|
||||
tau_c_hx = 3.77 # (sec) subtracted 1 sec for external loop power generation node resident time; delay from core to fuel hx TDAMSRE p.6
|
||||
tau_hx_r = 4.71 # (sec) fertile hx to core TDAMSRE p.6
|
||||
tau_r_hx = 8.24 # (sec) core to fertile hx TDAMSRE p.6
|
||||
|
||||
first_val = (rho_0 - beta_t) * n_frac0 / Lam + lam[0] * C0[0] + lam[1] * C0[1] + lam[2] * C0[2] + lam[3] * C0[3] + lam[4] * C0[4] + lam[5] * C0[5]
|
||||
913
dynamic_model/jitcdde_implementation/simulation_study.ipynb
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
5.513260943315429, 0.0
|
||||
5.733260943315429, 0.5438805479720131
|
||||
5.773917286277523, 0.5261459151940191
|
||||
5.8262010269349815, 0.4390448869628994
|
||||
5.713147466252472, 0.421784962376141
|
||||
5.669982588510621, 0.5182739070610018
|
||||
6.603394820412582, 0.4686584790291754
|
||||
5.520826466470723, 0.45791539634218953
|
||||
9.5174357001424, 0.597847487486479
|
||||
10.451227279324435, 0.5728047826277907
|
||||
13.510016661923082, 0.6140534014032215
|
||||
18.179651072711856, 0.6234193169865465
|
||||
21.49589912519245, 0.5979183796909477
|
||||
24.6216577575442, 0.5637065228431685
|
||||
25.06280205475214, 0.5883818670783858
|
||||
30.91771254525402, 0.5218523850150154
|
||||
37.33545748901405, 0.5121487472201802
|
||||
40.253221768691176, 0.4963292076800383
|
||||
44.45031065907256, 0.4854062004884305
|
||||
45.255405310479716, 0.41235400785247217
|
||||
45.666422707633714, 0.46472271602306603
|
||||
45.62913367712375, 0.44963308834336296
|
||||
45.591844646613765, 0.4345434606636599
|
||||
50.91942206171106, 0.36828798302397536
|
||||
51.059619130966084, 0.400601849742047
|
||||
50.970956793270844, 0.38914237106183347
|
||||
54.52759582301843, 0.3412655007619942
|
||||
54.710094149611734, 0.3638361409117705
|
||||
56.55478888382886, 0.3213941585637657
|
||||
59.95562886809431, 0.3038271412817262
|
||||
60.3367182896928, 0.3331276557405594
|
||||
64.53263819856217, 0.29324251772765536
|
||||
68.84436982367656, 0.2872729377206494
|
||||
72.64755303434828, 0.2723444301549607
|
||||
75.01240006504776, 0.24169765230436402
|
||||
79.06171005234437, 0.23554870372849834
|
||||
81.40357211094089, 0.2259890290009643
|
||||
84.55950301337911, 0.22108033389650394
|
||||
86.41346122078802, 0.2021101816533165
|
||||
89.56665708069916, 0.19609470600623324
|
||||
90.85502568012517, 0.17177902031329506
|
||||
92.96572170727659, 0.16137325124099466
|
||||
96.85808784925133, 0.15533997855662263
|
||||
102.28928136910001, 0.1310144846396707
|
||||
106.90621805908545, 0.11905538920457215
|
||||
111.57552228365365, 0.12828768943063884
|
||||
116.19602498482125, 0.11777163985392991
|
||||
119.89606858614523, 0.09943673654923757
|
||||
124.58349900697685, 0.09321283782101597
|
||||
129.21439597036806, 0.08690299969079807
|
||||
133.80345320338267, 0.07790655881955799
|
||||
138.47847038331395, 0.07520616016449289
|
||||
142.54957271008482, 0.08167438935846649
|
||||
146.1255876542533, 0.09291865510593478
|
||||
148.61104021595577, 0.07309147150862971
|
||||
148.57375118544576, 0.0580018438289267
|
||||
150.21582449263047, 0.03875618420329363
|
||||
148.85952075562676, 0.08817601432053601
|
||||
153.31976339228078, 0.02990150841898276
|
||||
155.66134809445202, 0.020229596791351723
|
||||
160.30786946980072, 0.020242437366596144
|
||||
164.95516127966408, 0.02056704710877666
|
||||
169.60137448120696, 0.020455180017246666
|
||||
174.2346443829033, 0.01510559092119168
|
||||
179.03435184544554, 0.011363697158993213
|
||||
182.64577793538137, 0.01721446194043086
|
||||
186.0929567110229, 0.02760337416894676
|
||||
188.2237100271376, -0.0014530939536102627
|
||||
190.19320919809076, -0.022506097563526173
|
||||
188.8209317854829, 0.02044971849257593
|
||||
194.8469374380138, -0.019576879123857416
|
||||
199.49810123162376, -0.017685406625561284
|
||||
204.14825905788172, -0.016201015582378964
|
||||
208.74101437656674, -0.023700964452326168
|
||||
213.7475662412897, -0.02518938118569658
|
||||
218.08944109640868, -0.01550777860607988
|
||||
222.73642473246616, -0.01530787653067367
|
||||
227.3792480221444, -0.016791527956722008
|
||||
231.93232932162823, -0.015144348841725552
|
||||
235.86265655006662, -0.0025288333227636572
|
||||
240.66617658164978, -0.00003190479247350275
|
||||
250.7053856489688, 0.021121451785532375
|
||||
255.36669936699911, 0.02712026036594839
|
||||
258.0834132569698, 0.015409578699529636
|
||||
277.73604977874646, 0.01972234270689366
|
||||
292.3163534732621, 0.022645063081741634
|
||||
294.25906573676093, 0.039590718869582986
|
||||
304.3974908717142, 0.03984547588243359
|
||||
310.15398495669154, 0.018957403958429486
|
||||
313.692040249907, 0.040480838959375154
|
||||
318.32210856817574, 0.03383567576960844
|
||||
322.9826903734172, 0.03953830364143507
|
||||
327.62686192349616, 0.03860024825752473
|
||||
331.69072216582913, 0.042137847282299745
|
||||
334.05735523494127, 0.055422262146337054
|
||||
338.23713197261327, 0.058860416052073705
|
||||
342.9016815156052, 0.06616865513362091
|
||||
347.54342619696297, 0.06424852687386218
|
||||
351.3479208583863, 0.06539021951384416
|
||||
354.7536762807045, 0.07610993121250054
|
||||
358.8182097279011, 0.057128687429884084
|
||||
363.58673880876404, 0.0609314467521056
|
||||
367.8335653616269, 0.04571639967088614
|
||||
372.8264674910463, 0.03938270155062251
|
||||
377.4888598173972, 0.045817986964748814
|
||||
382.1296799773374, 0.04352373570466683
|
||||
386.13178295940895, 0.0391636798586773
|
||||
396.8868908451113, 0.03256764328306527
|
||||
401.32100342476576, 0.03209297344234774
|
||||
404.43748808005296, 0.011221696990763363
|
||||
408.96545242416937, 0.020236624866202146
|
||||
413.7590985425543, 0.022807778851239746
|
||||
417.8236876159381, 0.022366949062521457
|
||||
2.6220604547792306, 0.407815914760956
|
||||
6.30638301247938, 0.4987384431102891
|
||||
6.135354926907169, 0.5695290778153992
|
||||
25.422103291127186, 0.5342332492030986
|
||||
242.4295348686549, 0.009907227576031352
|
||||
246.58640580564713, 0.012054333412219287
|
||||
262.84573494084214, 0.011662856787776343
|
||||
267.9960125177327, -0.004191483763834047
|
||||
271.109501075536, -0.004266447372769933
|
||||
273.60884332605724, 0.027134050004825827
|
||||
282.5867072466143, 0.02017631652359253
|
||||
285.04440304772675, 0.034723884040419706
|
||||
288.12457444600295, 0.021166576542868798
|
||||
298.17636147531545, 0.028789727737989823
|
||||
300.6007401169008, 0.029854951366201976
|
||||
307.859993891854, 0.027432978963915833
|
||||
311.67925094563867, 0.032959000062139254
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
0.00980428507854753, 1369.9142732450082
|
||||
0.019264978230174264, 2067.22782846775
|
||||
0.029303876215883918, 2039.5184019150697
|
||||
0.03793102111856011, 4804.630822893436
|
||||
0.048656339277885, 1625.352831522533
|
||||
0.058064034305344944, 1464.0854333815262
|
||||
0.06700127243550391, 1962.5843927648207
|
||||
0.07676600298554201, 2030.2817878395847
|
||||
0.09821029814291593, 1378.7319196167134
|
||||
0.0861795362532176, 1187.7342971366759
|
||||
0.11403203831462982, 1968.9782142642396
|
||||
0.10868014610040465, 1656.9407197593462
|
||||
0.12381217221653132, 1794.9618696891603
|
||||
0.13447077269937455, 1743.3347906268377
|
||||
0.14528786104271663, 1966.7314385889015
|
||||
0.15238934805451554, 2168.5313273257234
|
||||
0.17652706561196443, 1876.453368765888
|
||||
0.19989960500528878, 1986.5249977018766
|
||||
0.16337974987468623, 1653.7600268864312
|
||||
0.18172706054308724, 1681.7361855640502
|
||||
0.19854626334658287, 1642.7533742058556
|
||||
0.22611191846340442, 1651.2290656889418
|
||||
0.253075725336803, 1799.25569424391
|
||||
0.27802499119962776, 1612.055335062175
|
||||
0.21540731701972232, 1267.2345820061425
|
||||
0.23264150413579868, 1311.311691363264
|
||||
0.24522841744773802, 1181.8943954112917
|
||||
0.2824812815023956, 1089.6175671969104
|
||||
0.298028349639094, 1187.628461293744
|
||||
0.3088821449262897, 1272.3901834035314
|
||||
0.30176502198196464, 1363.5810654975674
|
||||
0.3239799137600242, 1402.9459839580222
|
||||
0.33585987532248646, 1583.0326438996349
|
||||
0.3457255573804927, 1394.462674479849
|
||||
0.3644698988321336, 1286.1266165612894
|
||||
0.3453271503113954, 1088.58639717065
|
||||
0.38178275978757703, 1069.4346156819972
|
||||
0.4097234451991418, 1009.250282914756
|
||||
0.43710699837741074, 947.0100615337634
|
||||
0.37246617256261483, 849.496690479939
|
||||
0.4802761039149642, 878.3099260611559
|
||||
0.5128010862199553, 985.2245352292032
|
||||
0.5283599560478416, 1061.666340626439
|
||||
0.5470150787841613, 903.414048632808
|
||||
0.5904636023512895, 833.1348401164653
|
||||
0.5467071333490047, 800.5074091159121
|
||||
0.5764409096989879, 764.2726639025842
|
||||
0.6151153279684792, 755.2891518695895
|
||||
0.6563492789655797, 737.86365993635
|
||||
0.708805079780283, 750.4503592681009
|
||||
0.7388927048738548, 785.6796358568238
|
||||
0.5215796029757551, 838.4367225027305
|
||||
0.44704439299380355, 739.2004568605148
|
||||
0.46879478132069613, 778.3495571358321
|
||||
0.5760855025459335, 669.4602513541843
|
||||
0.6364921327930934, 572.7849224061011
|
||||
0.7560761476991416, 684.1834552996089
|
||||
|
|
|
@ -0,0 +1,83 @@
|
|||
0.001012546482414755, 134.2060286910005
|
||||
0.0011132426617324936, 143.82080354092912
|
||||
0.0012171849571675746, 155.65671283474325
|
||||
0.0013308697110987289, 169.43504439572365
|
||||
0.0014560427829475703, 183.54601665237402
|
||||
0.0015782059744373841, 198.80358119625987
|
||||
0.001871534470741697, 233.92011118672565
|
||||
0.002034274884900719, 252.81573195473226
|
||||
0.0021211515278003247, 273.90191218638824
|
||||
0.0022570283969370387, 284.1423242731431
|
||||
0.0024973778324842598, 307.7394907664924
|
||||
0.002908297790430945, 357.88557367110604
|
||||
0.003121638705989982, 396.06136951265853
|
||||
0.0034174773658752714, 416.19468070245193
|
||||
0.0036460894922395824, 463.7865790515815
|
||||
0.00393884167612836, 501.4733899920634
|
||||
0.0041931997874551175, 561.746348601407
|
||||
0.0045203225304304194, 586.8719071095313
|
||||
0.004958079644764076, 610.4472014282381
|
||||
0.005335607924116097, 699.3964468710742
|
||||
0.006144989212315739, 798.2975577754228
|
||||
0.006525150958807326, 857.9022612357079
|
||||
0.007010014919093191, 942.1441144468649
|
||||
0.007310646309918682, 1018.3472994175323
|
||||
0.007798159584608589, 1029.6530461008426
|
||||
0.008232582676437472, 1151.6864398143016
|
||||
0.009013906832566983, 1253.5660323061534
|
||||
0.009513970956008337, 1352.6806941377172
|
||||
0.010188757886983854, 1439.7278921090494
|
||||
0.011085957039626258, 1616.443075580971
|
||||
0.01197515754837652, 1753.3054220372223
|
||||
0.012243906691028855, 1894.0261410473
|
||||
0.01336319367977841, 1979.3694669463816
|
||||
0.014282109319031473, 2083.152972224435
|
||||
0.015405927444682475, 2356.0319903374298
|
||||
0.016775958040181612, 2534.675424619291
|
||||
0.018339987452572332, 2673.4182495614364
|
||||
0.019983507278069666, 2773.279205844723
|
||||
0.021914214848546852, 2842.5543966246278
|
||||
0.023952660522822772, 2882.599119701529
|
||||
0.02617736863019, 2847.99741029782
|
||||
0.028534164995570356, 2766.0641546721854
|
||||
0.030832950697709673, 2631.440336589292
|
||||
0.033881316462547564, 2532.1657736442116
|
||||
0.03702255376732541, 2425.416373908226
|
||||
0.0403738857221625, 2328.9540516307743
|
||||
0.041550115778601765, 2220.34000993003
|
||||
0.04492354754165701, 2202.0540260075104
|
||||
0.04908893248342715, 2112.631872989826
|
||||
0.053637185546995474, 2001.2138705135058
|
||||
0.058651714081757976, 1931.4774926714497
|
||||
0.062450283044435534, 1854.7007106486756
|
||||
0.06684889703727467, 1829.051669231524
|
||||
0.07111399870415022, 1720.3307859681242
|
||||
0.07716445354752915, 1688.605706681409
|
||||
0.08162561061852072, 1588.5928621384942
|
||||
0.08905926375078466, 1542.335686228447
|
||||
0.1005659188078652, 1434.7256672830863
|
||||
0.10947806301465986, 1395.2020193815188
|
||||
0.11815913647286004, 1330.0170650622952
|
||||
0.12911583823910475, 1277.60324216149
|
||||
0.14108456398790153, 1220.2408366625375
|
||||
0.15416086242553076, 1162.535065547475
|
||||
0.16844734728905553, 1105.180215995776
|
||||
0.18532466099779088, 1036.64501463938
|
||||
0.19513781284586154, 987.5676900653446
|
||||
0.2110724106802201, 968.2839424743033
|
||||
0.2291723459450119, 907.5951594708663
|
||||
0.25200861161285504, 876.667081093602
|
||||
0.2754419052331178, 883.5291729335507
|
||||
0.3010292675099178, 875.5781997955767
|
||||
0.328985644466576, 863.4463338765573
|
||||
0.37871153976404703, 841.4714574122125
|
||||
0.41704524827789236, 823.254376785456
|
||||
0.4725236626525845, 771.056295673432
|
||||
0.5088979386535595, 769.1909425997186
|
||||
0.5740465432161201, 734.6916098454396
|
||||
0.6248776475503488, 736.1882971284158
|
||||
0.6967510630207905, 706.5692587367264
|
||||
0.7613780449819101, 682.0724376479254
|
||||
0.8218563874037694, 639.0399631787868
|
||||
0.9073043870256282, 611.3443011978404
|
||||
0.9998230528166534, 598.6597775627835
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
0.019993805480514312, 25.308775091207167
|
||||
0.048394321133308146, 9.163552575218233
|
||||
0.10929330098096414, 11.10526859961891
|
||||
0.03901641663523976, -51.15105682170656
|
||||
0.059160513127038364, -33.119064147822115
|
||||
0.07142817637554838, -25.90874850449758
|
||||
0.11878790760220423, -32.519976958185026
|
||||
0.09837613665267822, -41.31220182266665
|
||||
0.07825990029076062, -66.3710618436406
|
||||
0.1295556125496917, -23.038270091428743
|
||||
0.13897412852708788, -27.791973767779865
|
||||
0.15991271928716466, -37.52536815207597
|
||||
0.1701622782807518, -45.667991078681894
|
||||
0.18988416278172682, -45.454411178234324
|
||||
0.20206367342945103, -52.91907301005864
|
||||
0.2204710648349623, -37.10972925867392
|
||||
0.21374062765105184, -32.13446966899545
|
||||
0.2619432144879074, -36.22527805267123
|
||||
0.27247662765494324, -32.16194260224805
|
||||
0.30168474312744514, -31.947476478147195
|
||||
0.2921818597555051, -42.339335036852134
|
||||
0.32348796232095317, -42.80283000753292
|
||||
0.25156456719644155, -55.655731651477794
|
||||
0.23269636531878946, -50.22318065669171
|
||||
0.24207867943241906, -44.577935985111424
|
||||
0.38408896687094735, -51.86180819166066
|
||||
0.4635567584132676, -50.527155369776835
|
||||
0.5212350917124007, -53.7042671668907
|
||||
0.680538741642197, -47.632748918068614
|
||||
0.6439485402261211, -54.406156300311665
|
||||
0.7414393849432612, -54.422108326071225
|
||||
0.2848795547115753, -70.13308125193859
|
||||
0.3034877737863367, -60.64871571422242
|
||||
0.3282267870403505, -59.97961685597386
|
||||
0.36328241809273903, -65.18883949012599
|
||||
0.4214896906002763, -68.1435091502592
|
||||
0.4022125897799953, -65.42634742921285
|
||||
0.452351534398999, -65.43964078401251
|
||||
0.47049317897737897, -62.95821455474649
|
||||
0.5250777590072128, -61.162725433141816
|
||||
0.563474544162202, -59.814779256458365
|
||||
0.6285960415631419, -64.12093998788828
|
||||
0.6852121271289356, -62.77476625851145
|
||||
0.7469054499126156, -61.88056659232234
|
||||
0.5587324644687622, -69.30534835974774
|
||||
0.5994487996584295, -71.57319468856625
|
||||
0.02966676725122912, 71.36581835369185
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
0.0019628411987970677, 82.25525692273187
|
||||
0.002171719578519575, 82.50454314712775
|
||||
0.002402840732712069, 82.83843560525798
|
||||
0.002658500426755307, 82.87016294290837
|
||||
0.0029436008673676475, 82.8312591836466
|
||||
0.003254297071748083, 82.83692477965559
|
||||
0.003600503607332731, 82.68735304501806
|
||||
0.003983471491528441, 82.29604921399665
|
||||
0.00440716223224566, 81.86848556851766
|
||||
0.004883342605473528, 81.29822084768824
|
||||
0.0053943611713853385, 80.5782405040687
|
||||
0.0059678501478973535, 79.53184269184698
|
||||
0.006294109397246235, 78.3676004826381
|
||||
0.006849210895890517, 77.75929173425875
|
||||
0.007576871109381092, 75.80453520902117
|
||||
0.008222011277774733, 73.38745231467122
|
||||
0.009089128712021406, 71.34482983500564
|
||||
0.009564510843225323, 68.76600161427035
|
||||
0.010425364941462623, 65.73377463025503
|
||||
0.010115399922725258, 67.8039582315159
|
||||
0.011137201532750562, 63.926136546653
|
||||
0.011874720012864244, 60.87242226518134
|
||||
0.012545219064727244, 57.801436609124806
|
||||
0.01319308117313912, 55.018848375479266
|
||||
0.013874102358884132, 51.93933255010886
|
||||
0.01452355931240102, 49.03341058645413
|
||||
0.015203300885146534, 46.02112650039049
|
||||
0.01584212661192992, 43.22232207194586
|
||||
0.016507509396629295, 40.184202868081194
|
||||
0.017200855361822916, 37.15937892951764
|
||||
0.01792315081697523, 34.001602337942956
|
||||
0.018347761672667835, 30.94107255430938
|
||||
0.019166032325108683, 29.035164191665913
|
||||
0.019921821658048993, 25.177227659165396
|
||||
0.020461054887351626, 22.26213488132683
|
||||
0.02151700439764901, 19.02750762744344
|
||||
0.022524057978346796, 16.015223541379783
|
||||
0.023578244370641127, 13.002939455316167
|
||||
0.024682006822937655, 10.123608022263653
|
||||
0.02595612301087304, 7.06625097239511
|
||||
0.027421552352070406, 3.9106398975171857
|
||||
0.02930810713559475, 0.019355446785780828
|
||||
0.031749325107228894, -3.340248629126421
|
||||
0.03447761914447795, -7.295153595478098
|
||||
0.03761516252168219, -10.391590667595366
|
||||
0.04076539472179276, -12.845403880599832
|
||||
0.04456727255567777, -16.657437688425816
|
||||
0.04907407762176817, -19.163947723659604
|
||||
0.05216612171646111, -21.589326424044543
|
||||
0.057007518559021864, -23.011013315902247
|
||||
0.06195228782220915, -25.172783165180547
|
||||
0.06847898090151577, -26.52063019898131
|
||||
0.07203806410396614, -28.2077857516597
|
||||
0.076539798363461, -28.276629038275686
|
||||
0.08235043556529992, -29.628328732704162
|
||||
0.09056290623067362, -30.633724416771884
|
||||
0.10042164566957087, -31.64437441654573
|
||||
0.11109739491981589, -32.73367967587559
|
||||
0.12291119404407796, -33.47207050862153
|
||||
0.13705783951278674, -34.10651653992238
|
||||
0.14960222308663856, -34.5995234482631
|
||||
0.19148426308872196, -35.601503653923146
|
||||
0.21251253684762633, -34.722866490332066
|
||||
0.231914965692944, -31.954234855287325
|
||||
0.2588296817302802, -30.930329459221312
|
||||
0.28634597145981516, -32.00505565117733
|
||||
0.350482704187831, -33.469451744244026
|
||||
0.3913706930270613, -32.86221176508714
|
||||
0.4321359709765366, -32.593139320950215
|
||||
0.47656311914323835, -31.613298972164515
|
||||
0.5252785088891576, -30.92119256153063
|
||||
0.582064805040771, -30.74158897130762
|
||||
0.6430221158464954, -30.450822190650314
|
||||
0.7114465841726614, -30.271369682987554
|
||||
0.787736472726047, -30.422746014872402
|
||||
0.8708856947883966, -30.355640177699172
|
||||
0.9635481278204985, -30.307797366956507
|
||||
|
|
|
@ -0,0 +1,135 @@
|
|||
14.144882260047262, 0.0
|
||||
14.244882260047262, 0.705704180060152
|
||||
16.847917749384678, 0.6772413133034384
|
||||
18.359052153838064, 0.6554634980474711
|
||||
20.572360967155817, 0.622119457558707
|
||||
25.180977868787224, 0.5173249135444423
|
||||
24.403904988624006, 0.5688418740539388
|
||||
24.866643503989735, 0.5472936418261445
|
||||
30.338081204216223, 0.3935902999319806
|
||||
29.001974963855645, 0.4929071561452952
|
||||
29.585441579619953, 0.473806058345945
|
||||
31.285199568759793, 0.36427962835840944
|
||||
38.109538945097, 0.2404664844414267
|
||||
40.48984737540934, 0.21975005143007165
|
||||
43.125096288112445, 0.20019562492571463
|
||||
48.21312551547507, 0.2025771942239163
|
||||
52.907714927631076, 0.12850225645196056
|
||||
52.82931810784865, 0.19709782119551844
|
||||
52.622128350709204, 0.16610911226227243
|
||||
58.084309366811, 0.1368399405041404
|
||||
61.83483970771729, 0.11930224383583732
|
||||
65.1080445608342, 0.12709489863881696
|
||||
68.9116588726836, 0.11269265427757569
|
||||
70.02967043010813, -0.00150120842943402
|
||||
73.228147027575, 0.048856854379606074
|
||||
80.78723765295845, 0.11273482330365059
|
||||
83.26934365327611, 0.12264174250258741
|
||||
87.01608263448753, 0.1021526393017882
|
||||
88.90585341454192, 0.07625501326925865
|
||||
95.11306100247103, 0.09375736060566597
|
||||
98.01873105331666, 0.11894818762942783
|
||||
102.50114505579526, 0.12836761104463257
|
||||
106.76773438146296, 0.14455620117286627
|
||||
110.14544319543887, 0.12349282832785136
|
||||
113.09971550052327, 0.14706088685641283
|
||||
116.57359536546628, 0.1140280634756432
|
||||
119.5118633543494, 0.08805823774612054
|
||||
121.18707344651156, 0.06202726993085572
|
||||
126.55956147451732, 0.07851883818750338
|
||||
131.33427076261157, 0.09188000473476376
|
||||
135.86588726886046, 0.0978047465302545
|
||||
139.90020601714204, 0.07159569704567803
|
||||
145.23389927348123, 0.07409701536125801
|
||||
148.95284037066145, 0.06698193035688538
|
||||
150.23311661923708, 0.046195922788824784
|
||||
155.79194290888006, 0.037784166083779214
|
||||
157.66341109076382, 0.059840314590675625
|
||||
162.77762224894445, 0.07175005784182009
|
||||
168.44045768332666, 0.09789413883060993
|
||||
167.56788860902617, 0.1092765428762199
|
||||
173.15610358923362, 0.07645906141339198
|
||||
172.06445871917072, 0.06076254938969183
|
||||
177.97275055534845, 0.08987899101956887
|
||||
179.70990089803558, 0.11979088787497938
|
||||
180.33086620977622, 0.1304633263090873
|
||||
185.34627133262978, 0.10482600252652052
|
||||
190.1584573960174, 0.1349837287327451
|
||||
193.489546183112, 0.1493616345229115
|
||||
197.86459537441254, 0.12521200259082554
|
||||
199.71314232445053, 0.10258324479003633
|
||||
202.69142690328334, 0.08492994809658128
|
||||
206.38217552664372, 0.11634881090851912
|
||||
208.22079109519018, 0.1431928383746094
|
||||
210.13361774521996, 0.12666811396235467
|
||||
213.84531260461978, 0.11931410199812931
|
||||
215.309567678269, 0.14193683008031943
|
||||
220.4780818680959, 0.11921480865184853
|
||||
221.03915231797686, 0.10234176948518015
|
||||
224.11340040561925, 0.13952728527582425
|
||||
227.39589801882926, 0.1636776431621496
|
||||
227.57207145907114, 0.19215771364376655
|
||||
230.38101707474374, 0.13981476315458008
|
||||
231.20121163672025, 0.11826337875706272
|
||||
233.5626398837947, 0.0846716253997577
|
||||
235.53693353071162, 0.06667695376662908
|
||||
239.96120041106002, 0.08619005182350414
|
||||
242.7138135702691, 0.0744789907852158
|
||||
247.21741752199603, 0.07214496421195049
|
||||
248.9849903899409, 0.053856019439372016
|
||||
249.3416857129252, 0.04033228669039257
|
||||
254.02159652140358, 0.06684581666617118
|
||||
259.05313854892546, 0.07196937243831925
|
||||
262.38357779801646, 0.06290392335498562
|
||||
265.50143390222945, 0.0409125861261016
|
||||
269.4444666340726, 0.060393458971193636
|
||||
276.6885968273559, 0.07330503271830402
|
||||
279.7896011047306, 0.04436668185490977
|
||||
282.4328657621591, 0.029785243543592466
|
||||
286.2887267299688, 0.03998607338246096
|
||||
291.7175746770227, 0.06073565087472044
|
||||
297.04147375995075, 0.038769160748765685
|
||||
299.31649016947875, 0.02238325916472461
|
||||
303.09941860632034, 0.05063030842905969
|
||||
301.686405991734, 0.03562714801689615
|
||||
306.913333826744, 0.06398016416047814
|
||||
310.09271728188753, 0.07586669598002449
|
||||
308.8777659982421, 0.10117546668759625
|
||||
313.9139875649986, 0.05804275228019096
|
||||
317.37401919783093, 0.046685239598745376
|
||||
319.98417811314135, 0.08986032362484442
|
||||
323.8444569741785, 0.10290411656379905
|
||||
327.00827396450563, 0.05711937669594158
|
||||
326.4734926101161, 0.04079460491646181
|
||||
332.4495765639772, 0.06945260371508066
|
||||
337.69878928372725, 0.0795403746718738
|
||||
342.2283100747117, 0.05753192566449228
|
||||
344.8383486344508, 0.06462500802385274
|
||||
345.5350832156021, 0.03638296826830334
|
||||
347.17962905787925, -0.0002630313969761433
|
||||
346.71830265736725, 0.02347868590368385
|
||||
350.74686691220865, -0.011669010057906659
|
||||
354.3324584128335, 0.005434341860002134
|
||||
355.38666432384275, 0.038907505975506074
|
||||
355.8976933010544, 0.05124071377266004
|
||||
359.7232427761762, 0.004075255625757279
|
||||
359.5999144171997, 0.043860014920613644
|
||||
364.7331627701027, -0.00279429849810664
|
||||
368.7699013658485, -0.025244518254843307
|
||||
369.7415737941146, -0.045939824724231415
|
||||
374.3131669446356, -0.0025958752513824956
|
||||
373.6116690847915, -0.031108487916209238
|
||||
379.5695220352171, 0.04326422482226466
|
||||
384.2082944019996, 0.0027913112272953677
|
||||
389.152807968673, 0.0022893515482811377
|
||||
391.2127543851949, 0.040223711955482244
|
||||
393.92326009917844, 0.055308695355275495
|
||||
398.13334301248017, 0.04585003855355674
|
||||
400.8026003340859, 0.08038753779703778
|
||||
403.6480387258606, 0.13232302238791593
|
||||
403.99852217304374, 0.15850586874526618
|
||||
406.5786361348773, 0.09443822926587708
|
||||
408.52483421689965, 0.07076769774085756
|
||||
413.56385685016716, 0.061884133406135855
|
||||
415.59557523657674, 0.034377838083267886
|
||||
419.7074230320048, 0.005208009705856664
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
0.009918784864358352, 261.34378444721744
|
||||
0.01967645863708487, 519.3342049870756
|
||||
0.02982393432648615, 714.7657193690483
|
||||
0.039033312022738104, 846.1218288394076
|
||||
0.0482519830537851, 929.1008114792409
|
||||
0.05679966232631227, 1002.8863219429713
|
||||
0.06631851786139123, 1055.886410853525
|
||||
0.07743260489938228, 1014.9671872643953
|
||||
0.08750780894883925, 1113.311961653536
|
||||
0.09572020783783183, 1043.115380150914
|
||||
0.10556063286183141, 993.7508191554624
|
||||
0.11641269343113833, 1019.9196120365378
|
||||
0.12733774669989803, 971.5581849803988
|
||||
0.13372306944512277, 996.5603070568746
|
||||
0.14627266016320203, 873.9155470766406
|
||||
0.15235994474644307, 926.4815043780458
|
||||
0.1639625147943324, 875.1074255285674
|
||||
0.17359422618298165, 890.3171086030155
|
||||
0.18379173679952537, 876.3009295085556
|
||||
0.1945882835998237, 807.2577672830989
|
||||
0.2043458694329739, 768.6058936595432
|
||||
0.221707894236911, 750.490848729564
|
||||
0.2309344923247928, 732.4461449173517
|
||||
0.24054506461696853, 714.8353056035828
|
||||
0.2505555905880137, 757.8325978220267
|
||||
0.2652740714455647, 727.6134830968087
|
||||
0.2740696344029934, 790.6910903048916
|
||||
0.2831568275499714, 771.6046973313571
|
||||
0.29494068510107657, 765.6187446905747
|
||||
0.3072149397935331, 753.4189744847761
|
||||
0.333317123408186, 754.1527892505492
|
||||
0.3415719611126194, 779.7600389186896
|
||||
0.3616370506973846, 773.8614758316396
|
||||
0.3736276739415433, 718.6030398583163
|
||||
0.3923631498431768, 713.0976804032259
|
||||
0.408691738865947, 713.4448672080683
|
||||
0.4256998586233979, 713.7922230482067
|
||||
0.4581179094258866, 708.5306175649198
|
||||
0.47718294922377746, 697.240519486721
|
||||
0.49704139992095114, 631.6399956697849
|
||||
0.517726280113843, 637.1984564884503
|
||||
0.5617143310684765, 632.563027105947
|
||||
0.5803388190784801, 665.0206243586902
|
||||
0.6194608391950579, 612.6837378094812
|
||||
0.6348022313189331, 597.836039462699
|
||||
0.6612201677385161, 623.3930871410265
|
||||
0.688737513281503, 603.3906545630468
|
||||
0.7115736469684459, 593.7181101332927
|
||||
0.7351669471981008, 629.3689393504163
|
||||
0.7472553478830859, 594.0650041994409
|
||||
0.7783531343992941, 575.0036038750759
|
||||
0.8240762239627131, 570.653938768563
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
0.008500286769132583, 246.6978635911188
|
||||
0.008157748647187052, 232.52069064350832
|
||||
0.009260936486249415, 258.5807149490975
|
||||
0.010394289576481447, 301.51038707149513
|
||||
0.00998288723298733, 288.8986906164535
|
||||
0.01144740244341164, 315.0674515092506
|
||||
0.01250441290813116, 351.1401602668182
|
||||
0.013275631869452378, 378.86923675367984
|
||||
0.014613592678825492, 405.5003195061049
|
||||
0.016003209507767666, 426.1699037269112
|
||||
0.017477216649633403, 479.9634137953203
|
||||
0.019371052243878417, 519.4427955416988
|
||||
0.020790594748786924, 549.2837247941826
|
||||
0.022534649470745703, 589.2538398391216
|
||||
0.024992573339066355, 628.5426722903865
|
||||
0.02815726541581768, 685.0957408934116
|
||||
0.030827508809053925, 728.9742740259012
|
||||
0.033867814722287254, 788.5624957068468
|
||||
0.0374673517094909, 817.3355835565307
|
||||
0.041089951996136395, 883.8053859237223
|
||||
0.045095556179039126, 917.0419694612061
|
||||
0.08001824831273394, 1046.9653637724084
|
||||
0.09678631873207459, 1021.9196823929299
|
||||
0.10766408262008176, 978.7467033060541
|
||||
0.11800216863798425, 949.6771276649899
|
||||
0.12710648919667708, 918.4421149048843
|
||||
0.14526469803613928, 845.2101379478864
|
||||
0.17058632602547757, 782.9404734357054
|
||||
0.18641060625712808, 710.3130286941757
|
||||
0.1980341073686025, 665.540684161705
|
||||
0.2267583542344992, 587.5400067124242
|
||||
0.2486159207066544, 592.1422495516676
|
||||
0.387516087406384, 762.1259310116416
|
||||
0.4324517168326061, 723.9562886611138
|
||||
0.5564248362521788, 681.5746903000544
|
||||
0.6085989542494443, 686.7889990731996
|
||||
0.6716752366931897, 682.8107668047389
|
||||
0.7369686985624208, 685.1903594410907
|
||||
0.8082944736325219, 679.7129073056877
|
||||
0.8919224029412279, 667.5462796061332
|
||||
0.049975591822325194, 970.0880879025327
|
||||
0.059140907240909715, 1025.2112159738485
|
||||
0.06869816508964256, 1050.6260372314
|
||||
0.20808289844242073, 625.5390132318905
|
||||
0.27046604384406475, 644.9337292955146
|
||||
0.296881074455635, 716.0626256354335
|
||||
0.33420217515473427, 756.789444493962
|
||||
0.49863224191127326, 706.9256643202084
|
||||
0.9672082399007181, 652.0896696002294
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
0.019808411332845752, 59.211969899430336
|
||||
0.029638929446992042, 42.80417047612349
|
||||
0.037622667333943635, 36.94774597369716
|
||||
0.04814911166006723, 21.120683592376395
|
||||
0.05683344293131828, 23.86138265700822
|
||||
0.0669740975018563, 10.54082565581264
|
||||
0.0775822584553188, 9.407834587523737
|
||||
0.08738546543801663, 3.848899360011245
|
||||
0.09575704275326744, -0.8745340741261742
|
||||
0.10495140877956755, -3.6595400520430417
|
||||
0.11394977205007528, -8.658309304451791
|
||||
0.12264256774561194, -9.224804838596242
|
||||
0.13195742300029412, -12.837400661087287
|
||||
0.14198778859205896, -15.896160067515297
|
||||
0.15145908521093576, -13.968809339616001
|
||||
0.15996994126317382, -18.962831422744216
|
||||
0.17217344103162158, -19.52932695688868
|
||||
0.1785744996622911, -22.30483859624448
|
||||
0.18871580988864725, -21.760496518742514
|
||||
0.1975849798056602, -22.32224488360646
|
||||
0.20504099824690625, -19.836310570363594
|
||||
0.21663630311943974, -21.50731415711371
|
||||
0.22680482991885606, -22.622898938040663
|
||||
0.23535682141312733, -20.4138828328293
|
||||
0.24431422478461484, -14.881848231239886
|
||||
0.2534188434470578, -16.826605246501174
|
||||
0.2628999491840438, -17.386771221604903
|
||||
0.27265860355720245, -20.716119277023694
|
||||
0.2855375065506379, -19.062521977635555
|
||||
0.29078046407972247, -21.004114213376454
|
||||
0.30448087885870184, -20.458189746114343
|
||||
0.31870953882578573, -23.512201983261846
|
||||
0.3366852909195053, -26.567796610169495
|
||||
0.3491729225691954, -30.174062873619803
|
||||
0.35560446002666796, -31.561818693297695
|
||||
0.3688981757085927, -32.39890287643293
|
||||
0.38266719860761306, -33.78982347563121
|
||||
0.21450738423087878, -28.151768760109718
|
||||
0.33330117106258506, -35.42759687741754
|
||||
0.30712881960627836, -25.721218088473165
|
||||
0.41582931824675756, -30.48104648709473
|
||||
0.42339276516381574, -34.08414797102469
|
||||
0.4515457315133186, -34.09522469934595
|
||||
0.46422981662107554, -32.99229903650047
|
||||
0.4815843210971156, -33.829383219635716
|
||||
0.5180586202393733, -39.380406498347284
|
||||
0.5322796077993664, -44.369681412194964
|
||||
0.5574058155050452, -42.99300232083833
|
||||
0.5837676584926128, -40.785568605387155
|
||||
0.5733555143681968, -36.905548913425704
|
||||
0.5950251920100945, -33.86577818411985
|
||||
0.663644408203626, -45.792249806596786
|
||||
0.7341692460152733, -47.47116534214781
|
||||
0.7689344208702331, -44.70989521063366
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
0.008002707022753274, 78.63465958875881
|
||||
0.008536520729825716, 77.71020039606671
|
||||
0.009263003408037993, 77.03773478088743
|
||||
0.010192235608424688, 75.80320451763237
|
||||
0.010638683761523066, 74.33927327586787
|
||||
0.011528622437057611, 73.64379722897057
|
||||
0.012686282840944026, 71.82406410593578
|
||||
0.013960540547819145, 69.84263019269869
|
||||
0.015363146556088773, 67.71104554570233
|
||||
0.016907155099793257, 65.39465999561764
|
||||
0.018574721015108146, 62.85877885132824
|
||||
0.02186014338532031, 58.51798686377343
|
||||
0.023850906398472208, 55.780603731834894
|
||||
0.026022862172302375, 53.068630724071
|
||||
0.028516104656692465, 50.33326786426285
|
||||
0.031003307813881685, 47.068673604058205
|
||||
0.0342469478470359, 43.94931768188506
|
||||
0.03688227783685953, 41.29882762530406
|
||||
0.0412840276176106, 37.35446812224418
|
||||
0.045271567022059304, 34.034942683300606
|
||||
0.049103156844356205, 30.705872258306513
|
||||
0.052453211529973655, 28.35200084633017
|
||||
0.05769132529446184, 24.335706521439903
|
||||
0.06022178561911132, 22.816128593987486
|
||||
0.06749139842577231, 19.341127110673213
|
||||
0.0712798217098369, 15.170261103173615
|
||||
0.07913412555157995, 12.258083166075508
|
||||
0.09664166785420591, 3.5849864915110174
|
||||
0.10796819434192814, -1.0882645021981716
|
||||
0.1141976318209941, -3.9301189130712118
|
||||
0.1267749937019914, -6.534350345290861
|
||||
0.14261594775394998, -10.742305494509637
|
||||
0.1598035731056198, -14.325908936864437
|
||||
0.21110865624422062, -13.789056692815535
|
||||
0.22620814486083277, -11.824407895811774
|
||||
0.23711101402763388, -10.085918620485003
|
||||
0.24085901318801684, -6.3443056024377285
|
||||
0.24710462255133808, -3.6313957713956313
|
||||
0.26015950566370194, -0.033565042360223174
|
||||
0.28686328631045366, -0.910273981434429
|
||||
0.2964987673667321, -4.2195276306655956
|
||||
0.31933165898824933, -7.21543656274568
|
||||
0.34691165560371984, -10.078136819343868
|
||||
0.3828558530175462, -11.954850879328987
|
||||
0.4142750321947221, -13.461419652716444
|
||||
0.45419384207271957, -13.826768878248359
|
||||
0.4993265535554681, -14.164196467902443
|
||||
0.5497299709846418, -14.40547016691741
|
||||
0.6039574874685586, -15.150951461031894
|
||||
0.6694646186438977, -15.910354080084602
|
||||
0.7258696016658309, -16.965025890507164
|
||||
0.7980527549804437, -17.742318129699655
|
||||
0.8399877353186979, -18.933650698959227
|
||||
0.9098119581183669, -19.29472363791524
|
||||
0.9789667482887976, -20.30149270832534
|
||||
0.1739189634250042, -15.855390908409234
|
||||
0.19308776967885272, -16.270539595038684
|
||||
|
|
|
@ -0,0 +1,163 @@
|
|||
0.15032812166700694, 0.0
|
||||
0.16032812166700694, 0.01961500190165455
|
||||
0.34845369405091375, 0.059700796018409275
|
||||
0.5006140834790749, 0.16329662992247496
|
||||
0.4093178498221768, 0.1244150593773472
|
||||
0.4093178498221768, 0.0906118418293842
|
||||
0.8150788882972755, 0.3331118754930362
|
||||
0.8657990181066602, 0.2465215856809544
|
||||
1.6387737964017148, 0.4787787668616006
|
||||
1.9743961410832611, 0.5382101476752852
|
||||
1.9309217441037845, 0.5140344165406052
|
||||
1.6266009652474658, 0.4332560511816812
|
||||
3.1482048595290735, 0.5310409635141923
|
||||
4.5632964812109655, 0.5243365821830758
|
||||
5.741954267012183, 0.5142249159966201
|
||||
6.64028579690536, 0.4666902214862809
|
||||
7.827136834445014, 0.4271801731487652
|
||||
7.408695763517571, 0.45929471644382436
|
||||
9.064200800495968, 0.4053522843185473
|
||||
9.223554226515276, 0.3821476500337533
|
||||
10.756224330937108, 0.45357383559532427
|
||||
11.378391256598924, 0.5035393820175469
|
||||
11.109236434410441, 0.5544580451840877
|
||||
12.379268484837489, 0.47750120258040196
|
||||
13.053846211302336, 0.43630691071396543
|
||||
12.998834378201387, 0.3936147717956584
|
||||
12.886469782931364, 0.35960925671845567
|
||||
14.431482967894226, 0.42918831695139126
|
||||
14.56632048221826, 0.39711288667951217
|
||||
15.303646254990142, 0.48294004119639067
|
||||
15.608757477427915, 0.44197323562346624
|
||||
16.00575776620866, 0.410269994421816
|
||||
16.733084427675273, 0.44898104039258446
|
||||
17.11886953810236, 0.48359181120097405
|
||||
17.686043209465353, 0.5001006849190412
|
||||
18.51640419177331, 0.46231802969871216
|
||||
18.242515490802624, 0.5083043535996394
|
||||
18.944243404400723, 0.4210685904078364
|
||||
19.003317437943423, 0.3841744147611368
|
||||
20.33062421957061, 0.4415713272112005
|
||||
21.666124252936243, 0.4089112997950468
|
||||
23.016004279148923, 0.42211523724997835
|
||||
23.320325058005245, 0.38941137226931244
|
||||
24.798454555307373, 0.3807106130028681
|
||||
24.872026611734178, 0.3372287101873339
|
||||
24.70518221269687, 0.2986669272883944
|
||||
26.10413561125759, 0.3271958873252696
|
||||
26.276584052609508, 0.3181965622240903
|
||||
27.483723142072925, 0.2106604302132551
|
||||
27.311274700721007, 0.3205393075302858
|
||||
27.92667894240823, 0.27096422837559575
|
||||
28.00783115010325, 0.24395090747978188
|
||||
28.81855761717408, 0.21201289022196623
|
||||
29.99944158061851, 0.19094820919327082
|
||||
30.171890021970427, 0.1574215794511613
|
||||
29.80670508734284, 0.12709955342025858
|
||||
31.323627123488194, 0.18468726248039657
|
||||
31.7543580720233, 0.14602198042364534
|
||||
32.68253644753508, 0.11386374202825045
|
||||
33.38551744669318, 0.13792462829757635
|
||||
34.32497359224493, 0.1397554295105783
|
||||
35.30882476906514, 0.11209951227163062
|
||||
35.40620741829916, 0.19032173464032343
|
||||
35.467071574070424, 0.15573182458465462
|
||||
37.833613160235466, 0.0985808349900239
|
||||
38.71721749225595, 0.14469419155413532
|
||||
40.069338122005256, 0.14141309693923554
|
||||
41.37089468388306, 0.180812792744397
|
||||
41.59696154817633, 0.13816033948211914
|
||||
42.70990611085087, 0.14342676069908045
|
||||
44.03877351185681, 0.1330589063273624
|
||||
44.04891753781869, 0.10939752852878515
|
||||
45.49951325036715, 0.15208959457334248
|
||||
45.82802362959411, 0.19637027472789126
|
||||
46.83127894450508, 0.13142168302387236
|
||||
47.5060015856265, 0.11557147033758275
|
||||
47.5384624687045, 0.20543796636851885
|
||||
48.18051964135041, 0.16021549777721633
|
||||
48.91804999951983, 0.12484093357074655
|
||||
49.602771751946555, 0.14255275269418322
|
||||
50.08664179032811, 0.10901660286421655
|
||||
50.55732459495922, 0.07380167503655888
|
||||
51.94386802929126, 0.11136586932995929
|
||||
53.12235860587332, 0.10601932571840389
|
||||
53.30026921505087, 0.19275360498409322
|
||||
53.513293760250285, 0.14126230433403286
|
||||
54.60182577692867, 0.11573889011649197
|
||||
55.92612279261112, 0.10730938328306117
|
||||
56.50578141900413, 0.0746650249243146
|
||||
56.58693362669914, 0.12399967900390818
|
||||
57.80421674212443, 0.05677133942110668
|
||||
58.19088314349481, 0.009692088250138564
|
||||
58.93629003946993, -0.032494483170965704
|
||||
59.346108688329785, 0.048368095093141994
|
||||
59.3866847921773, 0.005281026825523449
|
||||
60.50832423424773, 0.10831250085857702
|
||||
60.7471776858879, 0.04817956641590926
|
||||
60.7797976909418, 0.0038380559154918004
|
||||
61.09088115377269, -0.030355667766003736
|
||||
61.63865855571408, 0.10490442461567073
|
||||
61.64735343510997, 0.06073563657823433
|
||||
62.04441959418917, 0.00841243835080041
|
||||
61.699522711485336, 0.040307966878432966
|
||||
63.39435535680824, -0.004942120896467284
|
||||
64.11669918354411, -0.04329417299809357
|
||||
63.95149647502212, -0.07442883711537074
|
||||
64.77316257793419, -0.0006169107352662628
|
||||
65.48324439526561, -0.012929343702744012
|
||||
66.76198837387167, 0.015513488005437504
|
||||
66.98253143243107, 0.04497002129291228
|
||||
66.93384010781406, 0.08382700423488232
|
||||
68.17546888554787, 0.0022387588875019127
|
||||
68.51630815786694, -0.034823586511212756
|
||||
69.29232614395056, 0.015797901390544933
|
||||
69.86343480560427, 0.06915606094001792
|
||||
69.85531958483475, 0.117331206212969
|
||||
70.73550891444998, 0.006070264823256677
|
||||
71.93230890052916, -0.0053623521524317486
|
||||
72.69087319488423, -0.04507895155993613
|
||||
72.79708711377918, -0.06615446007646697
|
||||
73.71317068910568, 0.0063269598038304675
|
||||
73.8723538657382, -0.037967534971397265
|
||||
74.90236265571343, 0.05973455017830975
|
||||
76.33300473477647, 0.06700237096168316
|
||||
77.64593152355658, 0.06162314118014578
|
||||
78.87082265845328, 0.08817377765854673
|
||||
78.68062217166809, 0.12890903777545804
|
||||
79.82351576337294, 0.06791137729469554
|
||||
80.864969095459, 0.12358867105545279
|
||||
80.65870723423419, 0.08851570129226172
|
||||
81.29778086983245, 0.13213938535331793
|
||||
81.71706727625673, 0.07809038265644164
|
||||
82.28378019332695, 0.05620470494269081
|
||||
83.31644203624606, 0.05331403648705435
|
||||
84.16515887505645, 0.011908010750497411
|
||||
84.66559748917572, -0.016304442838810163
|
||||
85.43654346227842, -0.046285286466138054
|
||||
85.74955912053065, -0.08244384190424947
|
||||
86.75120922693773, -0.1187791182675535
|
||||
86.61904706012012, -0.1567145022925589
|
||||
87.32333229118763, -0.06753133670379263
|
||||
87.99283800467151, -0.036231252960286175
|
||||
88.79928806864078, -0.0010532121211976886
|
||||
89.54721490590688, -0.03807239244931049
|
||||
90.1568968765387, 0.0005518801049846367
|
||||
90.30567592397958, -0.0398560727702999
|
||||
91.35051059805295, 0.013192373342836738
|
||||
92.76922508614979, 0.01452253026219541
|
||||
93.44017994619969, 0.04027424455074691
|
||||
94.10533821998564, 0.0008207217782598697
|
||||
94.70818319143436, -0.022449740405715346
|
||||
95.46391312559422, 0.02289651773556378
|
||||
96.98334330002686, 0.007185598363625534
|
||||
97.19549835728668, -0.020632793778543546
|
||||
97.70067085018817, 0.030265818418672596
|
||||
98.38843581040348, -0.00038395209635599947
|
||||
98.63001969023404, -0.04121865493133292
|
||||
98.52233695310025, -0.07313875312396911
|
||||
99.97346656175196, -0.018583509637895235
|
||||
100.44970188585694, -0.030885508509012283
|
||||
101.5127958066617, -0.013302992680489956
|
||||
102.56703675935427, 0.015422667828318692
|
||||
102.84369201286003, 0.057977111134029924
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
0.00994201972979121, 208.68403805739553
|
||||
0.01965283909830782, 301.42022548252976
|
||||
0.029788545740700834, 449.5654809856659
|
||||
0.03984045719914174, 501.33754456528453
|
||||
0.04946032472848147, 622.5278693519462
|
||||
0.05986250453120402, 612.7634650294007
|
||||
0.06951949999667396, 655.196461586201
|
||||
0.07811613301846505, 780.2161334399888
|
||||
0.08993373307826741, 700.87582401045
|
||||
0.10021577036628318, 820.8544884390259
|
||||
0.1183050981190574, 794.6073790233836
|
||||
0.10619783771751122, 774.7406272652577
|
||||
0.1264096274608344, 743.7990622582565
|
||||
0.1362198262847902, 756.4693949788527
|
||||
0.1455489777525337, 702.2513660995241
|
||||
0.15424543732708648, 679.4979531623308
|
||||
0.16483591710962825, 679.6817406116235
|
||||
0.17471319287762252, 708.6264890252398
|
||||
0.18512541109532454, 641.6504827900333
|
||||
0.19784326305975242, 652.5586934838628
|
||||
0.20619364824369257, 605.7267684651924
|
||||
0.21312778271818372, 571.6403499546706
|
||||
0.2258947120162923, 591.0617481005786
|
||||
0.23349982337407454, 567.129930702057
|
||||
0.2516254594977962, 581.5942523676994
|
||||
0.24335076676511905, 522.0810774443811
|
||||
0.2600733208957837, 535.3783554098208
|
||||
0.27797517410084666, 577.024799650656
|
||||
0.27117773010846835, 616.5451026959714
|
||||
0.2922175787282973, 621.8688253744132
|
||||
0.30455122760853576, 577.2394081400793
|
||||
0.32550878062641114, 617.0038019367776
|
||||
0.3450201136039855, 648.636557291633
|
||||
0.32830508024154526, 692.9912510897346
|
||||
0.3097390039861339, 659.1954027639667
|
||||
0.34797144046073747, 716.5355285364053
|
||||
0.3596669491306908, 670.6285479120788
|
||||
0.368795859966534, 722.6737837361204
|
||||
0.39086652096611296, 728.8646227581253
|
||||
0.39406746702692075, 682.0985638062803
|
||||
0.4006061680881932, 638.3547293636794
|
||||
0.42110126224573224, 665.517038428563
|
||||
0.44260486689788164, 665.6520383319795
|
||||
0.4729598690037959, 644.1062415858806
|
||||
0.4768244838184285, 597.8000807547629
|
||||
0.5053510001367622, 597.9415572781495
|
||||
0.5224589344279743, 623.3421205120959
|
||||
0.5630051026830666, 633.9605152727336
|
||||
0.5490788037627518, 593.203559865994
|
||||
0.6015957093637104, 603.3493466526487
|
||||
0.6375983232796368, 608.5179839593013
|
||||
0.6063907843659734, 511.1489637498726
|
||||
0.6480841266691797, 532.9346349819548
|
||||
0.7042135049618448, 546.5453009283129
|
||||
0.7779854721300917, 551.3205007814964
|
||||
0.778140249852636, 603.981958184248
|
||||
0.7161055857001525, 584.0767845253869
|
||||
0.7103144668603236, 634.560865637873
|
||||
0.7465597885142636, 624.2488747607023
|
||||
0.6645214999781779, 569.5507219750505
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
0.005882980963756872, 102.44943079341334
|
||||
0.006321892776496878, 112.73061748287437
|
||||
0.006934247426913607, 120.68642563907385
|
||||
0.007352641319997127, 132.2082740856117
|
||||
0.008044640915465882, 139.78439227929272
|
||||
0.008547220691988409, 152.7071501737727
|
||||
0.009220092624345937, 163.0911842890766
|
||||
0.010037549208567753, 177.07662197057607
|
||||
0.01160166848239897, 201.57720610012908
|
||||
0.013861774208748508, 237.98401287222893
|
||||
0.01528737515766478, 259.01825940426863
|
||||
0.01698508762984476, 286.31757483116473
|
||||
0.018517285429921745, 301.1669394814342
|
||||
0.02025183342722396, 324.73178942493684
|
||||
0.022833702085805166, 365.5721032018692
|
||||
0.025163344126252436, 392.5445073744971
|
||||
0.030274206834207007, 450.67622425193457
|
||||
0.03315742752544999, 479.50738814243505
|
||||
0.036703317006045115, 501.896308237242
|
||||
0.04369113241027732, 577.3935723346373
|
||||
0.048415956269220725, 597.2623442763154
|
||||
0.052468686844114716, 635.8842510471892
|
||||
0.05736068595100212, 653.2095800775558
|
||||
0.06292959804963047, 681.3020027381964
|
||||
0.07349813397858602, 718.877339756025
|
||||
0.0973275883090837, 768.6148255416629
|
||||
0.10733715131015999, 768.2655929935821
|
||||
0.11905530680082556, 748.0820271116239
|
||||
0.13055041932087447, 701.8489870456316
|
||||
0.1551521110519069, 637.4183385448554
|
||||
0.17050056588571114, 594.2548252092799
|
||||
0.1850474371062606, 549.5326652444342
|
||||
0.2030194686272644, 500.30287347427185
|
||||
0.24998693871450442, 441.57290843531365
|
||||
0.6254875026749902, 649.599015294992
|
||||
0.6903513101203981, 658.419203210231
|
||||
0.7662048777360122, 652.1315545769653
|
||||
0.838583336292554, 658.8078992230292
|
||||
0.9414346269922733, 634.5336652818113
|
||||
0.2124546921856066, 460.2303629089681
|
||||
0.23170676607110727, 430.3959833735598
|
||||
0.04062562526619677, 542.3402107502363
|
||||
0.08492105123042716, 741.1244647274418
|
||||
0.2655450337823016, 506.6532911310271
|
||||
0.3005770942540235, 585.7028989406101
|
||||
0.34661410715050983, 656.8244645512272
|
||||
0.4122788080121125, 688.9858864038532
|
||||
0.48135239198432217, 652.0048126280743
|
||||
0.5414893850236479, 643.8473052248758
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
0.010054690066605167, 74.19089337628664
|
||||
0.019917353283478035, 55.82069615777481
|
||||
0.030273328716680713, 51.57491946255991
|
||||
0.039118642784318654, 43.516853932584276
|
||||
0.048022267233644146, 31.15467117152511
|
||||
0.05945827817104874, 36.99579633849297
|
||||
0.06816868497421112, 25.63636363636364
|
||||
0.07815513254092053, 22.619627563447793
|
||||
0.08733689170669556, 16.81881040308008
|
||||
0.09759733500539242, 11.270802231476381
|
||||
0.10721526245220483, 8.501571462245622
|
||||
0.11879168806378043, 6.744637385086818
|
||||
0.12397667582861294, 1.1881433173568041
|
||||
0.13503546827474783, -1.0765302113616713
|
||||
0.15350045099443405, -4.347136010057355
|
||||
0.1409294602049498, -6.127406301563596
|
||||
0.16435993077018, -8.889211911683816
|
||||
0.17598767083595032, -11.156006914433888
|
||||
0.179020933323283, -13.68197532804274
|
||||
0.19333073301628728, -12.661192739844424
|
||||
0.20350056436029912, -16.19415416044629
|
||||
0.2216529344645187, -13.402647913883868
|
||||
0.21238290245602634, -11.132670700086436
|
||||
0.22935944668438388, -11.1231240669443
|
||||
0.24769298834805542, -8.838296534925732
|
||||
0.23331260659858966, -4.547968885047524
|
||||
0.2585042255225783, -3.5240040858018347
|
||||
0.2674919972283277, -5.795042036615058
|
||||
0.2744373098983422, -8.825567690736221
|
||||
0.29637409047494867, -8.816021057594085
|
||||
0.317341249989578, -8.30191718393965
|
||||
0.3397917435480417, -8.293431287813306
|
||||
0.3228108337661253, -5.771705822267606
|
||||
0.28156295457299263, -1.238115816767504
|
||||
0.3093101473487335, -1.2264477095937707
|
||||
0.3486142874973326, -13.346428852046827
|
||||
0.37648030590981413, -14.095309185196825
|
||||
0.3607350395780945, -17.134320735444334
|
||||
0.38956991415272646, -17.630392079830287
|
||||
0.3996849265219071, -19.144063801367167
|
||||
0.420709665993252, -20.40174432309263
|
||||
0.45823721579410204, -21.149563919226836
|
||||
0.4353370571885235, -23.93682721772609
|
||||
0.4661352335948131, -23.422723344071656
|
||||
0.4948657968665293, -23.668107173725147
|
||||
0.5208973626374446, -22.650506796574206
|
||||
0.5577485532245389, -25.928537754380443
|
||||
0.5972068029850763, -25.920051858254098
|
||||
0.5298753690076262, -28.715801052879698
|
||||
0.5722302503726073, -28.70625441973756
|
||||
0.6127130163236779, -28.697768523611217
|
||||
0.6286218417070527, -30.96986721144023
|
||||
0.6905706568533473, -36.01437887954742
|
||||
0.7268969408421965, -36.766441423744794
|
||||
0.7850004789470142, -36.50408580183861
|
||||
0.7085010218073678, -39.550522511196675
|
||||
0.7586243437101259, -39.79484560383435
|
||||
0.6673673779709912, -28.93997014221732
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
0.0016230069659065394, 68.51258844318353
|
||||
0.0017894805979403084, 69.92682269516624
|
||||
0.001981075023711212, 71.01637522232203
|
||||
0.002175347005942156, 72.38120358887329
|
||||
0.002398406294038447, 73.39796975495648
|
||||
0.002644335779616519, 74.40304568321909
|
||||
0.0029262370966230138, 75.22939189524344
|
||||
0.003214335204307316, 75.99234897820367
|
||||
0.003543824831367994, 76.5882665827462
|
||||
0.003931069819940169, 76.90394392211303
|
||||
0.004307456671219626, 77.34756299247002
|
||||
0.0047489024341077594, 77.66291488931877
|
||||
0.005223878242051486, 77.66582507815188
|
||||
0.00577190191748804, 77.68572631634643
|
||||
0.006363242993236788, 77.5919198894751
|
||||
0.007025366461365055, 77.14722489219673
|
||||
0.007733565519073517, 76.83148538252429
|
||||
0.008525611715058768, 76.29578796603526
|
||||
0.009377634031063944, 75.2707365758459
|
||||
0.010288516897658091, 73.99209538653604
|
||||
0.011421290798118607, 73.1596126096371
|
||||
0.012590459146931889, 72.00199454109352
|
||||
0.013879172414632662, 70.70409361870307
|
||||
0.015299575242855804, 69.20745865336286
|
||||
0.01686517300231551, 67.57054083417576
|
||||
0.018590587306550357, 65.64136706947431
|
||||
0.02042788311044648, 63.81958355825158
|
||||
0.02340216174780462, 60.29901497982623
|
||||
0.02599323000131415, 58.40157716233294
|
||||
0.029673234651124772, 54.80018070677989
|
||||
0.033641720805786826, 51.505073783821054
|
||||
0.03708130276438172, 48.75758337167943
|
||||
0.039877385752041805, 44.71497733027724
|
||||
0.04045367862495193, 46.62704886861669
|
||||
0.044456247913371987, 43.29346106405589
|
||||
0.04852725232009909, 40.94229816646239
|
||||
0.05236066361676323, 37.72630384552487
|
||||
0.06213501092232448, 30.810476229974682
|
||||
0.07263089059382863, 25.680150858458063
|
||||
0.07973785077938983, 22.227140505080826
|
||||
0.08852814132126907, 15.888442297686993
|
||||
0.1313210683839263, -0.3825230517447551
|
||||
0.13980321321263592, -2.6727153403205506
|
||||
0.15951047363996412, -9.043480060902112
|
||||
0.1685232405598339, -11.013611187920986
|
||||
0.1820479109420658, -12.691296097477064
|
||||
0.24654815028140795, 3.9998440269486224
|
||||
0.25139763190300163, 7.696053936914154
|
||||
0.2544479452382793, 10.995146261937748
|
||||
0.26054370657705644, 14.317306851665478
|
||||
0.2794090508713625, 17.55362946234243
|
||||
0.3022619859454255, 16.40709237848432
|
||||
0.31833647359253875, 12.478621978091041
|
||||
0.3351128860085122, 8.811987721826625
|
||||
0.3480688750116132, 5.620042950459009
|
||||
0.36580565403678955, 3.138511634046452
|
||||
0.4011168378550611, 0.07666928367034131
|
||||
0.42454791748383025, -1.7066290751404267
|
||||
0.5049561561566234, -4.627405098940912
|
||||
0.5319374585929404, -6.249790323718457
|
||||
0.5788187417614254, -7.280336538037574
|
||||
0.6271767836304454, -9.510572481724125
|
||||
0.6899190580746317, -11.296871334908843
|
||||
0.7402619324022981, -13.263357472872798
|
||||
0.8062864075607442, -14.459628620491046
|
||||
0.8504422500478985, -16.69777027980352
|
||||
0.9206217516821765, -17.6998197353859
|
||||
0.9903490771618708, -19.776998714737942
|
||||
0.09968155273417816, 11.622847241205989
|
||||
0.11339436399895483, 5.9820239680426255
|
||||
0.12093785444556582, 2.5991172917346432
|
||||
0.14863231475504507, -6.801196638477592
|
||||
0.19875101295700137, -11.52436927363955
|
||||
0.2162258857198929, -8.347214751192652
|
||||
0.23224343502493247, -3.4809878219768677
|
||||
0.23837870899200597, -0.48418885195015093
|
||||
|
|
|
@ -0,0 +1,101 @@
|
|||
Frequency,Gain,Phase Shift
|
||||
0.01,1146.074233563938,81.81264356673023
|
||||
0.010722672220103232,1231.7860778927097,71.94815203271283
|
||||
0.011497569953977356,1285.4721085546023,61.251712426137
|
||||
0.012328467394420659,1299.0630265377479,51.73447651413698
|
||||
0.013219411484660288,1403.2985847353125,48.80791833965525
|
||||
0.014174741629268055,1650.6130405060749,70.080671242512
|
||||
0.01519911082952934,1787.6842596623862,66.99409837883644
|
||||
0.016297508346206444,1999.370734972236,63.77706778099183
|
||||
0.01747528400007684,2248.4667569692456,60.67635715121203
|
||||
0.01873817422860384,2544.0651694823705,57.04134023011015
|
||||
0.02009233002565047,2795.629651086688,51.6546002549819
|
||||
0.021544346900318846,2823.865954728686,44.08042934771636
|
||||
0.023101297000831605,2893.9757426458546,35.181469260339874
|
||||
0.024770763559917114,2867.5832648363858,26.753054907599473
|
||||
0.026560877829466867,2849.0272895421867,21.442531155055946
|
||||
0.02848035868435802,2977.348689337829,21.507181354515957
|
||||
0.030538555088334154,3071.3537066955246,15.625091748574468
|
||||
0.03274549162877728,3144.697047597304,8.986894863683382
|
||||
0.03511191734215131,2966.160795432347,1.8508235003722213
|
||||
0.037649358067924674,2764.2308054746422,-4.3142986373377985
|
||||
0.040370172585965536,2589.4539448088526,-6.892860712023916
|
||||
0.04328761281083057,2624.4669288036457,-7.068562929882581
|
||||
0.046415888336127795,2623.3660431453973,-12.04723830316807
|
||||
0.049770235643321115,2415.464954399881,-16.197226863128606
|
||||
0.0533669923120631,2244.3858344407795,-17.061985110318986
|
||||
0.05722367659350217,2282.81831667776,-18.786808649777548
|
||||
0.06135907273413173,2179.1035132391876,-22.113224026737406
|
||||
0.06579332246575682,2019.8669703962346,-22.542684590638217
|
||||
0.07054802310718646,2051.303054203294,-24.575992180361975
|
||||
0.07564633275546291,1926.8504040352047,-26.308688707358897
|
||||
0.08111308307896872,1869.3117062105907,-26.95513647756953
|
||||
0.08697490026177834,1813.6427846757601,-28.70377752136994
|
||||
0.093260334688322,1734.2493475569274,-29.281961183428713
|
||||
0.1,1682.3449186421244,-30.481354700960082
|
||||
0.10722672220103231,1627.0179180106982,-31.393993415349964
|
||||
0.11497569953977356,1534.391654281848,-31.42295851502176
|
||||
0.12328467394420659,1540.3625823906716,-32.704891624857176
|
||||
0.13219411484660293,1450.0156854190075,-33.326325371583216
|
||||
0.14174741629268056,1362.084133410815,-32.56733012892254
|
||||
0.1519911082952934,1325.4959091407802,-33.353359780442304
|
||||
0.16297508346206444,1286.7560725562544,-33.522646168925164
|
||||
0.17475284000076838,1241.086831021606,-33.542210636396305
|
||||
0.1873817422860384,1195.0155337642873,-32.960081781749395
|
||||
0.20092330025650468,1151.3146989868608,-32.00351876729402
|
||||
0.21544346900318845,1111.537609743689,-30.613123713900094
|
||||
0.23101297000831605,1107.4591249917323,-30.310596164852114
|
||||
0.24770763559917114,1128.8883358689243,-29.66253833256429
|
||||
0.26560877829466867,1104.7437083144468,-30.132158755863067
|
||||
0.2848035868435802,1109.5071648297157,-32.309726162321475
|
||||
0.30538555088334157,1045.117380203344,-33.4198490926963
|
||||
0.32745491628777285,1010.8540829862422,-34.709301665583695
|
||||
0.3511191734215131,969.5472529948222,-34.803528865691504
|
||||
0.37649358067924676,927.0353802832942,-34.73010403056957
|
||||
0.4037017258596556,884.4219213238499,-33.77039140790306
|
||||
0.43287612810830595,859.0220445517493,-33.48266650996903
|
||||
0.464158883361278,842.6835747261783,-32.17915749852805
|
||||
0.49770235643321115,828.7763475711106,-31.65303136984643
|
||||
0.533669923120631,812.5149580534621,-31.188574932840375
|
||||
0.5722367659350217,802.6861869296548,-31.147413991779178
|
||||
0.6135907273413173,795.2916868045367,-31.640543122519134
|
||||
0.6579332246575682,763.1680118487856,-31.665309458420538
|
||||
0.7054802310718645,742.9889989486951,-31.12420062315484
|
||||
0.7564633275546291,725.1603610567051,-30.772930777966426
|
||||
0.8111308307896873,717.3702244196443,-30.67308633654604
|
||||
0.8697490026177834,703.8588361705903,-30.896427193138695
|
||||
0.9326033468832199,694.4620857398462,-30.991856726985635
|
||||
1.0,686.3687697706915,-30.939720937065626
|
||||
1.072267222010323,666.6880037812233,-31.33255702901791
|
||||
1.1497569953977356,659.3889551603706,-31.62058718492888
|
||||
1.232846739442066,651.7028406006291,-31.786611730421974
|
||||
1.3219411484660286,639.8065750738759,-32.56890888586609
|
||||
1.4174741629268048,634.8701233357842,-33.29826771286554
|
||||
1.5199110829529332,622.0117753697469,-33.09210630957695
|
||||
1.629750834620645,611.6047712747283,-34.549802458224384
|
||||
1.7475284000076847,599.5702993400071,-35.04410066489372
|
||||
1.873817422860385,587.1152225345501,-35.42940386963194
|
||||
2.0092330025650478,578.3133091509237,-36.83858275371932
|
||||
2.1544346900318843,561.283355621315,-38.26640464237512
|
||||
2.31012970008316,554.6203559741931,-39.708204582777824
|
||||
2.4770763559917115,539.84198871137,-41.158546011694355
|
||||
2.656087782946687,524.32206057246,-42.61113359414526
|
||||
2.848035868435802,511.49962894963625,-42.4269131424429
|
||||
3.0538555088334154,500.1884894606764,-43.743257974732806
|
||||
3.2745491628777286,482.2440230993308,-46.90446171024766
|
||||
3.511191734215131,467.8410206066785,-46.27058750930554
|
||||
3.7649358067924674,452.204317689174,-47.45728501072167
|
||||
4.037017258596554,438.06840684121227,-50.88689116259867
|
||||
4.328761281083057,420.8942258958632,-52.08414790440658
|
||||
4.641588833612782,405.04560857109107,-53.188690080209554
|
||||
4.9770235643321135,390.3691210041418,-54.180864506943045
|
||||
5.336699231206313,371.73621309715395,-58.09636507097755
|
||||
5.72236765935022,355.91894847448464,-55.73747766950216
|
||||
6.135907273413176,340.0759931316985,-59.765470342519514
|
||||
6.5793322465756825,322.52211960360034,-64.08455485631376
|
||||
7.054802310718645,306.92724869461574,-64.67366363254118
|
||||
7.56463327554629,290.7276052155158,-65.01323403794404
|
||||
8.111308307896872,275.81972730624057,-65.06412253205855
|
||||
8.697490026177835,260.59156408381665,-69.7661259199897
|
||||
9.326033468832199,245.9259839068575,-69.46450645703625
|
||||
10.0,231.43224637940062,-68.7549354157014
|
||||
|
|
|
@ -0,0 +1,100 @@
|
|||
Frequency,Gain,Phase Shift
|
||||
0.01,220.19387293518795,80.50057021588066
|
||||
0.010722672220103232,236.70104101625427,80.0761859443582
|
||||
0.011497569953977356,254.48396163220497,79.58506537106489
|
||||
0.012328467394420659,273.66801393258834,79.00032568734409
|
||||
0.014174741629268055,313.8667175404565,76.9920921751088
|
||||
0.01519911082952934,337.565609758117,76.08571916494142
|
||||
0.016297508346206444,363.76823440102373,75.07578696327589
|
||||
0.01747528400007684,391.58679648903563,73.9530650031109
|
||||
0.01873817422860384,421.21368444672567,72.71616739667536
|
||||
0.02009233002565047,453.05706536189734,71.3402179140011
|
||||
0.021544346900318846,485.15178250394035,69.83001647158538
|
||||
0.023101297000831605,518.2692935004452,68.1657512004327
|
||||
0.024770763559917114,552.7021616993961,66.35041469126122
|
||||
0.026560877829466867,588.8380050299379,64.28193867917398
|
||||
0.02848035868435802,630.0594257061659,62.15542775368108
|
||||
0.030538555088334154,674.9988396218982,59.84077690943435
|
||||
0.03274549162877728,719.5027831537267,57.41106113334317
|
||||
0.03511191734215131,758.3151075622218,54.800469728407975
|
||||
0.037649358067924674,793.595727250963,52.05201305948053
|
||||
0.040370172585965536,833.2776710157118,49.152110782049434
|
||||
0.04328761281083057,882.6101512292354,46.156475833373285
|
||||
0.046415888336127795,925.9560697011904,43.02965027489212
|
||||
0.049770235643321115,950.6414705143214,39.83719353484202
|
||||
0.0533669923120631,979.3483732249202,36.53955592622064
|
||||
0.05722367659350217,1025.6485212148855,33.212979340706084
|
||||
0.06135907273413173,1046.68655711471,29.81242285321696
|
||||
0.06579332246575682,1055.0746455924393,26.42545467899218
|
||||
0.07054802310718646,1093.2529793469694,22.999571629318623
|
||||
0.07564633275546291,1089.9173227039485,19.590654523436697
|
||||
0.08111308307896872,1100.70356035175,16.17308188654193
|
||||
0.08697490026177834,1105.0686528124154,12.80706740102761
|
||||
0.093260334688322,1091.204908104804,9.511293961041144
|
||||
0.1,1085.4451765777007,6.359831525952216
|
||||
0.10722672220103231,1067.2930015371114,3.3790012482272025
|
||||
0.11497569953977356,1031.8009648089153,0.5928860097172293
|
||||
0.12328467394420659,1020.1660817297715,-1.907196703825238
|
||||
0.13219411484660293,975.4537614764196,-4.16579067144758
|
||||
0.14174741629268056,927.4290415026715,-6.009931245736417
|
||||
0.1519911082952934,890.5799256097292,-7.4021816745104285
|
||||
0.16297508346206444,852.0913553902974,-8.123872469906754
|
||||
0.17475284000076838,809.12745917102,-8.210332155773925
|
||||
0.1873817422860384,765.927423881993,-7.1932426038342685
|
||||
0.20092330025650468,727.1524421509358,-4.950184557531216
|
||||
0.21544346900318845,699.9021664987617,-1.2344001497543078
|
||||
0.23101297000831605,701.6366202806848,3.441377730507161
|
||||
0.24770763559917114,748.4946379648229,8.3736352230671
|
||||
0.26560877829466867,820.2535006842639,11.26151387845391
|
||||
0.2848035868435802,950.2010473535097,10.280367415286383
|
||||
0.30538555088334157,1038.6467258266605,5.074217925068369
|
||||
0.32745491628777285,1091.595070728228,-2.626649855773613
|
||||
0.3511191734215131,1073.5829411929217,-9.656470436723094
|
||||
0.37649358067924676,1003.5064520031937,-14.668615366948663
|
||||
0.4037017258596556,920.4172572936515,-16.88519570395153
|
||||
0.43287612810830595,859.3101390984806,-17.36138263479891
|
||||
0.464158883361278,832.1675495537379,-16.488493924866013
|
||||
0.49770235643321115,816.0265779086102,-15.113609572990393
|
||||
0.533669923120631,817.502285446095,-14.676976438982786
|
||||
0.5722367659350217,831.7652140596552,-15.737640753740902
|
||||
0.6135907273413173,838.8307773904822,-18.28120269301172
|
||||
0.6579332246575682,806.2271817517609,-20.356270366126722
|
||||
0.7054802310718645,782.0547808780727,-21.827361475980066
|
||||
0.7564633275546291,752.3892881938554,-22.537921133159028
|
||||
0.8111308307896873,735.6257747400025,-22.307699153851665
|
||||
0.8697490026177834,728.0265534939301,-22.424826188569735
|
||||
0.9326033468832199,723.5867020211075,-23.51106372392066
|
||||
1.0,712.240583044953,-24.63718519062579
|
||||
1.072267222010323,689.7087561289599,-25.803282259189164
|
||||
1.1497569953977356,676.6381736034295,-26.350489320775313
|
||||
1.232846739442066,672.1059674470275,-26.8420276834678
|
||||
1.3219411484660286,660.0868327947155,-28.781826457276207
|
||||
1.4174741629268048,650.6254522241564,-29.237503357637358
|
||||
1.5199110829529332,638.3290106357223,-29.60872669804071
|
||||
1.629750834620645,625.6583035197766,-31.748467123771032
|
||||
1.7475284000076847,614.0011225296023,-32.040320607900064
|
||||
1.873817422860385,600.0691957491798,-33.28216727147428
|
||||
2.0092330025650478,590.7936452231676,-34.536171331613915
|
||||
2.1544346900318843,570.6066671175951,-35.79760434286229
|
||||
2.31012970008316,563.4191099401156,-37.06099094392848
|
||||
2.4770763559917115,549.0013581907199,-38.320025597097526
|
||||
2.656087782946687,531.1462139281607,-41.089307394355586
|
||||
2.848035868435802,517.7006626725588,-40.79510879081191
|
||||
3.0538555088334154,506.8545424905964,-41.99352765574508
|
||||
3.2745491628777286,486.95254552503263,-45.02828324183946
|
||||
3.511191734215131,471.8203449054437,-46.27058750930554
|
||||
3.7649358067924674,455.65051146502105,-47.45728501072167
|
||||
4.037017258596554,441.7540978557993,-50.88689116259867
|
||||
4.328761281083057,423.2065384158195,-52.08414790440658
|
||||
4.641588833612782,407.5948042148054,-53.188690080209554
|
||||
4.9770235643321135,392.51479551028257,-54.180864506943045
|
||||
5.336699231206313,372.7691145041375,-55.038661646192
|
||||
5.72236765935022,357.247189191809,-55.73747766950216
|
||||
6.135907273413176,341.0652343385019,-59.765470342519514
|
||||
6.5793322465756825,322.7619277011835,-60.31487515888606
|
||||
7.054802310718645,307.37292165073194,-64.67366363254118
|
||||
7.56463327554629,290.99797251716825,-65.01323403794404
|
||||
8.111308307896872,275.48924768215727,-65.06412253205855
|
||||
8.697490026177835,260.5392614167983,-69.7661259199897
|
||||
9.326033468832199,245.75385985813827,-69.46450645703625
|
||||
10.0,230.80387024307927,-68.7549354157014
|
||||
|
|
|
@ -0,0 +1,100 @@
|
|||
Frequency,Gain,Phase Shift
|
||||
0.01,147.2932536306147,79.01660952649182
|
||||
0.010722672220103232,157.95894331308705,78.68772361326837
|
||||
0.011497569953977356,169.39716496089176,78.30047901667717
|
||||
0.012328467394420659,181.67668543543525,77.8277528990663
|
||||
0.014174741629268055,209.01700561393972,76.66723102669063
|
||||
0.01519911082952934,224.37106283089378,75.97250932756656
|
||||
0.016297508346206444,240.95819185862717,75.17850259220566
|
||||
0.01747528400007684,258.7393244831204,74.30350600975983
|
||||
0.01873817422860384,277.66782012966314,73.3281298271509
|
||||
0.02009233002565047,297.59790656279193,72.24967042573353
|
||||
0.021544346900318846,318.3103502885496,71.05207261984188
|
||||
0.023101297000831605,339.82417030950955,69.74084331554957
|
||||
0.024770763559917114,362.43822416408483,68.32318637940779
|
||||
0.026560877829466867,386.78357214925177,66.76251538483338
|
||||
0.02848035868435802,413.5191104682189,65.10899363013577
|
||||
0.030538555088334154,442.25130390691925,63.287745637843344
|
||||
0.03274549162877728,471.1813759835906,61.3697977016881
|
||||
0.03511191734215131,498.41464773733884,59.32694024562229
|
||||
0.037649358067924674,524.8853023998423,57.14288545153916
|
||||
0.040370172585965536,554.6349906354086,54.8421904302303
|
||||
0.04328761281083057,588.8731139901845,52.431375557093496
|
||||
0.046415888336127795,620.4493082468421,49.890991295239346
|
||||
0.049770235643321115,644.5807560241237,47.27993334342748
|
||||
0.0533669923120631,672.5120687382117,44.52016186491787
|
||||
0.05722367659350217,708.2721289677473,41.671961245841636
|
||||
0.06135907273413173,731.1037478587493,38.742087245571895
|
||||
0.06579332246575682,750.6268304060725,35.736563531647164
|
||||
0.07054802310718646,783.9388723690048,32.57935805488731
|
||||
0.07564633275546291,794.1494641538148,29.429323941180307
|
||||
0.08111308307896872,814.9412336657997,26.118597759300357
|
||||
0.08697490026177834,826.7398533806424,22.8234897652562
|
||||
0.093260334688322,831.7716710345621,19.45006180797076
|
||||
0.1,834.7221315401662,16.10011404317647
|
||||
0.10722672220103231,833.0179830048193,12.840204743263929
|
||||
0.11497569953977356,813.8542111831325,9.683804825383907
|
||||
0.12328467394420659,808.6555437788758,6.781143835822979
|
||||
0.13219411484660293,780.8430430808187,4.16579067144844
|
||||
0.14174741629268056,745.8080255932448,1.9491668905091581
|
||||
0.1519911082952934,715.3199626773553,0.17416898057705957
|
||||
0.16297508346206444,682.441674737515,-0.7470227558538729
|
||||
0.17475284000076838,645.2153062172775,-1.0012600189971255
|
||||
0.1873817422860384,606.9080611585603,0.0
|
||||
0.20092330025650468,571.6977016885592,2.5326525643185707
|
||||
0.21544346900318845,545.995005149394,6.7892008236465875
|
||||
0.23101297000831605,543.0269939121841,12.574264784546438
|
||||
0.24770763559917114,574.313788999637,19.018086777814887
|
||||
0.26560877829466867,634.2394177408524,24.349219196656282
|
||||
0.2848035868435802,753.6678481901063,26.10886962612092
|
||||
0.30538555088334157,877.9213469454888,23.096440210657807
|
||||
0.32745491628777285,993.3163272094745,15.384663440961104
|
||||
0.3511191734215131,1039.1667856487638,5.834117555521083
|
||||
0.37649358067924676,993.745252490223,-2.3728642505360833
|
||||
0.4037017258596556,906.8083147955874,-6.939121522171952
|
||||
0.43287612810830595,837.1800227294358,-8.432671565473273
|
||||
0.464158883361278,800.4002806497554,-7.712360061631364
|
||||
0.49770235643321115,785.7662276605035,-6.273573785015309
|
||||
0.533669923120631,796.3767090550393,-5.503866164617459
|
||||
0.5722367659350217,827.2168050509996,-6.557350314059951
|
||||
0.6135907273413173,849.4617166730577,-9.84372452700662
|
||||
0.6579332246575682,824.2499076094366,-13.570846910750435
|
||||
0.7054802310718645,798.0384719285927,-15.764205510428898
|
||||
0.7564633275546291,763.0528924932165,-17.33686241012252
|
||||
0.8111308307896873,743.6766046461845,-17.195518097760218
|
||||
0.8697490026177834,737.7465657014492,-17.441531479997423
|
||||
0.9326033468832199,738.0261410120191,-19.236324865026823
|
||||
1.0,728.3546170510576,-20.626480624710418
|
||||
1.072267222010323,702.7647431908629,-22.731462942621523
|
||||
1.1497569953977356,688.1342137153221,-23.056678155677933
|
||||
1.232846739442066,684.036473288725,-24.016551085206554
|
||||
1.3219411484660286,672.6626598339567,-25.75216051440775
|
||||
1.4174741629268048,662.2444129429579,-26.801044744498604
|
||||
1.5199110829529332,648.8522150656842,-27.867036892275067
|
||||
1.629750834620645,636.4291499550952,-28.947131789322988
|
||||
1.7475284000076847,623.7893847611203,-30.03780056990809
|
||||
1.873817422860385,609.0310323966073,-31.134930673310514
|
||||
2.0092330025650478,599.6548599228588,-32.2337599095085
|
||||
2.1544346900318843,578.5014614706892,-34.563204193109385
|
||||
2.31012970008316,571.0387027855404,-35.737384124503805
|
||||
2.4770763559917115,555.8949208775166,-38.320025597097526
|
||||
2.656087782946687,537.4506535615967,-39.56748119456592
|
||||
2.848035868435802,523.5386132598018,-40.79510879081191
|
||||
3.0538555088334154,512.2380970006969,-41.99352765574508
|
||||
3.2745491628777286,491.7526361335141,-45.02828324183946
|
||||
3.511191734215131,476.1470922641623,-46.27058750930554
|
||||
3.7649358067924674,459.54101305570254,-47.45728501072167
|
||||
4.037017258596554,445.2308350429201,-48.57385065519706
|
||||
4.328761281083057,426.27537110397293,-49.60395038513771
|
||||
4.641588833612782,410.30883295952975,-53.188690080209554
|
||||
4.9770235643321135,394.9208724628923,-54.180864506943045
|
||||
5.336699231206313,374.8272376410723,-55.038661646192
|
||||
5.72236765935022,359.0402585218749,-55.73747766950216
|
||||
6.135907273413176,342.6656112395641,-59.765470342519514
|
||||
6.5793322465756825,324.09750356687067,-60.31487515888606
|
||||
7.054802310718645,308.57845964030906,-64.67366363254118
|
||||
7.56463327554629,291.98729815328136,-65.01323403794404
|
||||
8.111308307896872,276.3269321408793,-65.06412253205855
|
||||
8.697490026177835,261.246385974658,-69.7661259199897
|
||||
9.326033468832199,246.3455900807085,-69.46450645703625
|
||||
10.0,231.2994388020676,-68.7549354157014
|
||||
|
168
dynamic_model/msrDynamics_implementation/frq_script.py
Normal file
|
|
@ -0,0 +1,168 @@
|
|||
# Imports
|
||||
from parameters_U233 import *
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
from jitcdde import t
|
||||
from msrDynamics.system_objects import Node, System
|
||||
import pandas as pd
|
||||
import sympy as sp
|
||||
from concurrent.futures import ProcessPoolExecutor
|
||||
from scipy.signal import find_peaks
|
||||
|
||||
f_range = np.logspace(-2, 1, num=100)
|
||||
# tau_l = 2 * tau_l
|
||||
# tau_c = 2*tau_c
|
||||
# tau_c_hx = 2 * tau_c_hx
|
||||
# tau_hx_c = 2 * tau_hx_c
|
||||
def process_frequency(f):
|
||||
|
||||
MSRE = System()
|
||||
|
||||
# radiator
|
||||
T_out_rc = Node(m = mn_rp, scp = mcp_rpn/mn_rp, W = W_rp, y0 = T0_rp)
|
||||
T_out_air = Node(m = mn_rs, scp = mcp_rsn/mn_rs, W = W_rs, y0 = T0_rs)
|
||||
|
||||
# heat exchanger
|
||||
T_hf1 = Node(m = mn_p, scp = mcp_pn/mn_p, W = W_p, y0 = T0_p1)
|
||||
T_hf2 = Node(m = mn_p, scp = mcp_pn/mn_p, W = W_p, y0 = T0_p2)
|
||||
T_hf3 = Node(m = mn_p, scp = mcp_pn/mn_p, W = W_p, y0 = T0_p3)
|
||||
T_hf4 = Node(m = mn_p, scp = mcp_pn/mn_p, W = W_p, y0 = T0_p4)
|
||||
T_ht1 = Node(m = m_tn, scp = scp_t, y0 = T0_t1)
|
||||
T_ht2 = Node(m = m_tn, scp = scp_t, y0 = T0_t2)
|
||||
T_hc1 = Node(m = mn_s, scp = mcp_sn/mn_s, W = W_s, y0 = T0_s1)
|
||||
T_hc2 = Node(m = mn_s, scp = mcp_sn/mn_s, W = W_s, y0 = T0_s2)
|
||||
T_hc3 = Node(m = mn_s, scp = mcp_sn/mn_s, W = W_s, y0 = T0_s3)
|
||||
T_hc4 = Node(m = mn_s, scp = mcp_sn/mn_s, W = W_s, y0 = T0_s4)
|
||||
|
||||
# core
|
||||
n = Node(y0 = n_frac0)
|
||||
C1 = Node(y0 = C0[0])
|
||||
C2 = Node(y0 = C0[1])
|
||||
C3 = Node(y0 = C0[2])
|
||||
C4 = Node(y0 = C0[3])
|
||||
C5 = Node(y0 = C0[4])
|
||||
C6 = Node(y0 = C0[5])
|
||||
rho = Node(y0 = 0.0)
|
||||
|
||||
# add reactivity input
|
||||
r = 1e-5
|
||||
def rho_insert(t):
|
||||
return r*sp.sin(f*t)
|
||||
|
||||
rho_ext = MSRE.add_input(rho_insert, T)
|
||||
|
||||
T_cg = Node(m = mcp_g1/scp_g, scp = scp_g, y0 = T0_g1)
|
||||
T_cf1 = Node(m = mn_f, scp = scp_f, W = W_f, y0 = T0_f1)
|
||||
T_cf2 = Node(m = mn_f, scp = scp_f, W = W_f, y0 = T0_f2)
|
||||
|
||||
MSRE.add_nodes([T_out_rc,T_out_air,T_hf1,T_hf2,T_hf3,T_hf4,T_ht1,T_ht2,T_hc1,
|
||||
T_hc2,T_hc3,T_hc4,n,C1,C2,C3,C4,C5,C6,T_cg,T_cf1,T_cf2,rho])
|
||||
|
||||
# dynamics
|
||||
|
||||
# radiator
|
||||
T_out_rc.set_dTdt_advective(source = T_hc4.y(t-tau_hx_r))
|
||||
T_out_rc.set_dTdt_convective(source = [T_out_air.y()], hA = [hA_rpn])
|
||||
|
||||
T_out_air.set_dTdt_advective(source = Trs_in)
|
||||
T_out_air.set_dTdt_convective(source = [T_out_rc.y()], hA = [hA_rsn])
|
||||
|
||||
# heat exchanger
|
||||
T_hf1.set_dTdt_advective(source = T_cf2.y(t-tau_c_hx))
|
||||
T_hf1.set_dTdt_convective(source = [T_ht1.y()], hA = [hA_pn])
|
||||
|
||||
T_hf2.set_dTdt_advective(source = T_hf1.y())
|
||||
T_hf2.dTdt_convective = T_hf1.dTdt_convective
|
||||
|
||||
T_hf3.set_dTdt_advective(source = T_hf2.y())
|
||||
T_hf3.set_dTdt_convective(source = [T_ht2.y()], hA = [hA_pn])
|
||||
|
||||
T_hf4.set_dTdt_advective(source = T_hf3.y())
|
||||
# T_hf4.set_dTdt_convective(source = [T_ht2.y()], hA = [hA_pn])
|
||||
T_hf4.dTdt_convective = T_hf3.dTdt_convective
|
||||
|
||||
# T_ht1.set_dTdt_convective(source = [T_hf1.y(),T_hf2.y(),T_hc3.y(),T_hc4.y()], hA = [hA_pn,hA_pn,hA_sn,hA_sn])
|
||||
# T_ht2.set_dTdt_convective(source = [T_hf3.y(),T_hf4.y(),T_hc1.y(),T_hc2.y()], hA = [hA_pn,hA_pn,hA_sn,hA_sn])
|
||||
T_ht1.set_dTdt_convective(source = [T_hf1.y(),T_hf1.y(),T_hc3.y(),T_hc3.y()], hA = [hA_pn,hA_pn,hA_sn,hA_sn])
|
||||
T_ht2.set_dTdt_convective(source = [T_hf3.y(),T_hf3.y(),T_hc1.y(),T_hc1.y()], hA = [hA_pn,hA_pn,hA_sn,hA_sn])
|
||||
|
||||
T_hc1.set_dTdt_advective(source = T_out_rc.y(t-tau_r_hx))
|
||||
T_hc1.set_dTdt_convective(source = [T_ht2.y()], hA = [hA_sn])
|
||||
|
||||
T_hc2.set_dTdt_advective(source = T_hc1.y())
|
||||
T_hc2.dTdt_convective = T_hc1.dTdt_convective
|
||||
|
||||
T_hc3.set_dTdt_advective(source = T_hc2.y())
|
||||
T_hc3.set_dTdt_convective(source = [T_ht1.y()], hA = [hA_sn])
|
||||
|
||||
T_hc4.set_dTdt_advective(source = T_hc3.y())
|
||||
T_hc4.dTdt_convective = T_hc3.dTdt_convective
|
||||
|
||||
# core
|
||||
n.set_dndt(r = rho.y()+rho_ext, beta_eff = beta_t, Lambda = Lam, lam = lam, C = [C1.y(),C2.y(),C3.y(),C4.y(),C5.y(),C6.y()])
|
||||
C1.set_dcdt(n.y(),beta[0],Lam,lam[0],tau_c,tau_l)
|
||||
C2.set_dcdt(n.y(),beta[1],Lam,lam[1],tau_c,tau_l)
|
||||
C3.set_dcdt(n.y(),beta[2],Lam,lam[2],tau_c,tau_l)
|
||||
C4.set_dcdt(n.y(),beta[3],Lam,lam[3],tau_c,tau_l)
|
||||
C5.set_dcdt(n.y(),beta[4],Lam,lam[4],tau_c,tau_l)
|
||||
C6.set_dcdt(n.y(),beta[5],Lam,lam[5],tau_c,tau_l)
|
||||
|
||||
T_cg.set_dTdt_convective(source = [T_cf1.y()], hA = [hA_fg])
|
||||
T_cg.set_dTdt_internal(source = n.y(), k = k_g*P)
|
||||
|
||||
T_cf1.set_dTdt_advective(source = T_hf4.y(t-tau_hx_c))
|
||||
T_cf1.set_dTdt_convective(source = [T_cg.y()], hA = [k_1*hA_fg])
|
||||
T_cf1.set_dTdt_internal(source = n.y(), k = k_f1*P)
|
||||
|
||||
T_cf2.set_dTdt_advective(source = T_cf1.y())
|
||||
T_cf2.dTdt_convective = T_cf1.dTdt_convective
|
||||
T_cf2.set_dTdt_internal(source = n.y(), k = k_f2*P)
|
||||
|
||||
rho.set_drdt(sources = [T_cf1.dydt(), T_cf2.dydt(), T_cg.dydt()], coeffs = [a_f/2,a_f/2,a_g])
|
||||
|
||||
MSRE.solve(T)
|
||||
|
||||
i_out = [i for i in range(len(T)) if T[i] >= 500]
|
||||
n0 = n.y_out[i_out[0]-25]
|
||||
n_out = np.array(n.y_out)[i_out]
|
||||
|
||||
# calculate output amplitude
|
||||
peaks, _ = find_peaks(n_out)
|
||||
troughs, _ = find_peaks(-n_out)
|
||||
amplitude = (np.mean(n_out[peaks]) - np.mean(n_out[troughs]))/2
|
||||
|
||||
# calculate Gain
|
||||
input_amplitude = r
|
||||
gain = amplitude / (input_amplitude*n0)
|
||||
|
||||
# calculate Phase Shift
|
||||
peak_times = T[i_out][peaks]
|
||||
input_period = 2 * np.pi / f
|
||||
input_signal = [i[0] for i in MSRE.input.get_state(T)]
|
||||
input_peaks, _ = find_peaks(input_signal)
|
||||
time_differences = [abs(T[input_peaks[i]] - peak_times[0]) for i in range(len(input_peaks))]
|
||||
closest_peak_index = np.argmin(time_differences)
|
||||
closest_peak_time = T[input_peaks[closest_peak_index]]
|
||||
|
||||
# calculate Phase Shift
|
||||
phase_shift = 360*(closest_peak_time-peak_times[0])/input_period
|
||||
|
||||
if (phase_shift>180):
|
||||
phase_shift = -360+phase_shift
|
||||
elif (phase_shift<-180):
|
||||
phase_shift = 360-phase_shift
|
||||
|
||||
return f, gain, phase_shift
|
||||
|
||||
with ProcessPoolExecutor() as executor:
|
||||
results = list(executor.map(process_frequency, f_range))
|
||||
|
||||
# Process the results
|
||||
results_df = pd.DataFrame(results, columns=['Frequency', 'Gain', 'Phase Shift'])
|
||||
|
||||
# Write to CSV file
|
||||
# csv_filename = f"frequency_response_results_{P}_MW_double_tau.csv"
|
||||
csv_filename = f"frequency_response_results_{P}_MW.csv"
|
||||
results_df.to_csv(csv_filename, index=False)
|
||||
|
||||
print(f"Results written to {csv_filename}")
|
||||
283
dynamic_model/msrDynamics_implementation/model_step.ipynb
Normal file
151
dynamic_model/msrDynamics_implementation/parameters_U233.py
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
import numpy as np
|
||||
|
||||
# domain
|
||||
t0 = 0.0
|
||||
tf = 5000.00
|
||||
T = np.arange(t0,tf,0.01)
|
||||
|
||||
# REACTIVITY INSERTION
|
||||
inserted = 1.39e-4 # 1MW
|
||||
# inserted = 1.96e-4 # 5MW
|
||||
# inserted = 2.48e-4 # 8MW
|
||||
|
||||
# NEUTRONICS DATA
|
||||
tau_l = 16.73
|
||||
tau_c = 8.46
|
||||
# P = 0.1
|
||||
# P = 5
|
||||
P = 8
|
||||
n_frac0 = 1 # initial fractional neutron density n/n0
|
||||
Lam = 4.0E-04
|
||||
lam = np.array([1.260E-02, 3.370E-02, 1.390E-01, 3.250E-01, 1.130E+00, 2.500E+00])
|
||||
beta = np.array([0.00023, 0.00079, 0.00067, 0.00073, 0.00013, 0.00009])
|
||||
beta_t = np.sum(beta) # total delayed neutron fraction MSRE
|
||||
rho_0 = beta_t-sum(np.divide(beta,1+np.divide(1-np.exp(-lam*tau_l),lam*tau_c))) # reactivity change in going from stationary to circulating fuel
|
||||
C0 = beta / Lam * (1.0 / (lam - (np.exp(-lam * tau_l) - 1.0) / tau_c))
|
||||
|
||||
# Feedback coefficients
|
||||
a_f = -11.034E-5
|
||||
a_g = -05.814E-5
|
||||
|
||||
# CORE HEAT TRANSFER PARAMETERS
|
||||
vdot_f = 7.5708E-02
|
||||
rho_f = 2.14647E+03
|
||||
W_f = 1.623879934566580e+02
|
||||
m_f = W_f * tau_c
|
||||
nn_f = 2
|
||||
mn_f = m_f / nn_f
|
||||
scp_f = 1.9665E-3
|
||||
|
||||
# Core Upflow
|
||||
v_g = 1.95386
|
||||
rho_g = 1.860E3
|
||||
m_g = v_g * rho_g
|
||||
scp_g = 1.773E-3
|
||||
mcp_g1 = m_g * scp_g
|
||||
mcp_f1 = mn_f * scp_f
|
||||
mcp_f2 = mn_f * scp_f
|
||||
hA_fg = 0.02 * 9 / 5
|
||||
k_g = 0.07
|
||||
k_1 = 0.5
|
||||
k_2 = 0.5
|
||||
k_f = 0.93
|
||||
k_f1 = k_f / nn_f
|
||||
k_f2 = k_f / nn_f
|
||||
|
||||
# Heat Exchanger
|
||||
d_he = 16
|
||||
h_he = 72
|
||||
od_tube = 0.5
|
||||
id_tube = od_tube - 2 * 0.042
|
||||
n_tube = 159
|
||||
a_tube = 254 * 144
|
||||
l_tube = a_tube / n_tube / (np.pi * od_tube)
|
||||
v_tube = n_tube * np.pi * (od_tube / 2) ** 2 * l_tube
|
||||
v_cool = n_tube * np.pi * (id_tube / 2) ** 2 * l_tube
|
||||
v_he = (d_he / 2) ** 2 * np.pi * h_he
|
||||
v_he_fuel = v_he - v_tube
|
||||
in_m = 1.63871e-5
|
||||
W_p = W_f
|
||||
m_p = v_he_fuel * in_m * rho_f
|
||||
nn_p = 4
|
||||
mn_p = m_p / nn_p
|
||||
cp_p = scp_f
|
||||
vdot_s = 5.36265E-02
|
||||
rho_s = 1.922e3
|
||||
W_s = 1.005793369810108e+02
|
||||
m_s = v_cool * in_m * rho_s
|
||||
nn_s = 4
|
||||
mn_s = m_s / nn_s
|
||||
scp_s = 2.39E-3
|
||||
A_phe = 2.359E+01
|
||||
ha_p = 6.480E-01
|
||||
ha_s = 3.060E-01
|
||||
mcp_pn = mn_p * cp_p
|
||||
hA_pn = ha_p / nn_s
|
||||
nn_t = 2
|
||||
rho_tube = 8.7745E+03
|
||||
m_tn = (v_tube - v_cool) * in_m * rho_tube / nn_t
|
||||
scp_t = 5.778E-04
|
||||
mcp_tn = m_tn * scp_t
|
||||
mcp_sn = mn_s * scp_s
|
||||
hA_sn = ha_s / nn_s
|
||||
|
||||
# Initial conditions
|
||||
Tf_in = 6.3222E+02
|
||||
T0_f2 = 6.5727E+02
|
||||
T0_f1 = Tf_in + (T0_f2 - Tf_in) / 2
|
||||
T0_g1 = T0_f1 + (k_g * P / hA_fg)
|
||||
Tp_in = T0_f2
|
||||
T0_p4 = Tf_in
|
||||
T0_p1 = Tp_in - (Tp_in - T0_p4) / 4
|
||||
T0_p2 = Tp_in - 2 * (Tp_in - T0_p4) / 4
|
||||
T0_p3 = Tp_in - 3 * (Tp_in - T0_p4) / 4
|
||||
Ts_in = 5.4611E+02
|
||||
T0_s4 = 5.7939E+02
|
||||
T0_s1 = Ts_in + (T0_s4 - Ts_in) / nn_s
|
||||
T0_s2 = Ts_in + 2 * (T0_s4 - Ts_in) / nn_s
|
||||
T0_s3 = Ts_in + 3 * (T0_s4 - Ts_in) / nn_s
|
||||
T0_t1 = (T0_p1 * hA_pn + T0_s3 * hA_sn) / (hA_pn + hA_sn)
|
||||
T0_t2 = (T0_p3 * hA_pn + T0_s1 * hA_sn) / (hA_pn + hA_sn)
|
||||
|
||||
# Radiator Parameters
|
||||
Trp_in = T0_s4
|
||||
T0_rp = Ts_in
|
||||
Trs_in = 37.78
|
||||
T0_rs = 148.9
|
||||
od_rad = 0.01905
|
||||
tube_wall_thick = 0.0018288
|
||||
id_rad = od_rad - 2 * tube_wall_thick
|
||||
n_rtubes = 120
|
||||
l_rtube = 9.144
|
||||
v_rp = np.pi * (id_rad / 2) ** 2 * l_rtube * n_rtubes
|
||||
n_tpr = 12
|
||||
n_row = 10
|
||||
tube_space = 0.0381
|
||||
v_rs = (n_row * od_rad + (n_row - 1) * tube_space) * (n_tpr * od_rad + (n_tpr - 1) * tube_space) * l_rtube
|
||||
W_rp = W_s
|
||||
m_rp = v_rp * rho_s
|
||||
nn_rp = 1
|
||||
mn_rp = m_rp / nn_rp
|
||||
cp_rp = scp_s
|
||||
vdot_rs = 94.389
|
||||
rho_rs = 1.1237
|
||||
W_rs = vdot_rs * rho_rs
|
||||
m_rs = v_rs * rho_rs
|
||||
nn_rs = 1
|
||||
mn_rs = m_rs / nn_rs
|
||||
scp_rs = 1.0085E-3
|
||||
A_rad = 6.503E1
|
||||
h_roverall = P / A_rad / ((T0_rp + Trp_in) / 2 - (T0_rs + Trs_in) / 2)
|
||||
mcp_rpn = mn_rp * cp_rp
|
||||
hA_rpn = h_roverall * A_rad / nn_rs
|
||||
mcp_rsn = mn_rs * scp_rs
|
||||
hA_rsn = h_roverall * A_rad / nn_rs
|
||||
|
||||
# Pure time delays between components
|
||||
tau_hx_c = 8.67 #+2.145
|
||||
tau_c_hx = 3.77 #+2.145
|
||||
tau_hx_r = 4.71
|
||||
tau_r_hx = 8.24
|
||||
|
||||
201
dynamic_model/msrDynamics_implementation/parameters_U235.py
Normal file
|
|
@ -0,0 +1,201 @@
|
|||
import numpy as np
|
||||
import math
|
||||
pi = math.pi
|
||||
|
||||
# domain
|
||||
t0 = 0.0
|
||||
tf = 1000.00
|
||||
T = np.arange(t0,tf,0.01)
|
||||
|
||||
# NEUTRONICS DATA
|
||||
tau_l = 16.73 # ORNL-TM-0728 %16.44; % (s)
|
||||
tau_c = 8.46 # ORNL-TM-0728 %8.460; % (s)
|
||||
P = 8.0 # Thermal Power in MW ORNL-TM-1070, p.2
|
||||
n_frac0 = 1.0 # initial fractional neutron density n/n0 (n/cm^3/s)
|
||||
Lam = 2.400E-04 # mean generation time ORNL-TM-1070 p.15 U235
|
||||
# Lam = 4.0E-04; # mean generation time ORNL-TM-1070 p.15 U233
|
||||
lam = np.array([1.240E-02, 3.05E-02, 1.11E-01, 3.01E-01, 1.140E+00, 3.014E+00])
|
||||
beta = np.array([0.000223, 0.001457, 0.001307, 0.002628, 0.000766, 0.00023]) # U235
|
||||
# beta = np.array([0.00023, 0.00079, 0.00067, 0.00073, 0.00013, 0.00009]) # U233
|
||||
beta_t = np.sum(beta) # total delayed neutron fraction MSRE
|
||||
rho_0 = beta_t-sum(np.divide(beta,1+np.divide(1-np.exp(-lam*tau_l),lam*tau_c))) # reactivity change in going from stationary to circulating fuel
|
||||
C0 = beta / Lam * (1.0 / (lam - (np.exp(-lam * tau_l) - 1.0) / tau_c))
|
||||
|
||||
# Feedback co-efficients
|
||||
a_f = -8.71E-05 # U235 (drho/°C) fuel salt temperature-reactivity feedback coefficient ORNL-TM-1647 p.3 % -5.904E-05; % ORNL-TM-0728 p. 101 %
|
||||
a_g = -6.66E-05 # U235 (drho/°C) graphite temperature-reactivity feedback coefficient ORNL-TM-1647 p.3 % -6.624E-05; % ORNL-TM-0728 p.101
|
||||
|
||||
# CORE HEAT TRANSFER PARAMETERS
|
||||
# FUEL PARAMETERS - DONE
|
||||
vdot_f = 7.5708E-02 # ORNL-TM-0728 % 7.571e-2; % vol. flow rate (m^3/s) ORNL-TM-1647 p.3, ORNL-TM-0728 p.12
|
||||
rho_f = 2.14647E+03 # (partially enriched U-235)ORNL-TM-0728 p.8 2.243E+03; % (Th-U) density of fuel salt (kg/m^3) ORNL-TM-0728 p.8
|
||||
W_f = 1.623879934566580e+02 # 1.83085e+02;%vdot_f*rho_f; % 182.78; % calcd from m_dot*cp*delT=P; vdot_f*rho_f; % fuel flow rate (kg/s)
|
||||
# tau_f_c = tau_c; % ORNL-TM-0728 % 8.45; % transit time of fuel in core (s) ORNL-TM-1070 p.15, TDAMSRE p.5
|
||||
m_f = W_f * tau_c # fuel mass in core (kg)
|
||||
nn_f = 2 # number of fuel nodes in core model
|
||||
mn_f = m_f / nn_f # fuel mass per node (kg)
|
||||
# cp_f = 4.2*9/5; % (MJ/deg-C) total fuel heat capacity TDAMSRE p.5
|
||||
scp_f = 1.9665E-3 # specific heat capacity of fuel salt (MJ/kg-C) ORNL-TM-0728 p.8
|
||||
|
||||
# Core Upflow - DONE
|
||||
v_g = 1.95386 # graphite volume(m^3) ORNL-TM-0728 p. 101
|
||||
rho_g = 1.860E3 # graphite density (kg/m^3) ORNL-3812 p.77, ORNL-TM-0728 p.87
|
||||
m_g = v_g * rho_g # graphite mass (kg)
|
||||
cp_g = 3.6 * 9 / 5 # TDAMSRE p.5 graphite total heat capacity (MW-s/C) ORNL-TM-1647 p.3
|
||||
scp_g = 1.773E-3 # cp_g/m_g; % graphite specific heat capacity (MW-s/kg-C) ORNL-TM-1647 p.3
|
||||
mcp_g1 = m_g * scp_g # (mass of material x heat capacity of material) of graphite per lump (MW-s/°C)
|
||||
mcp_f1 = mn_f * scp_f # (mass of material x heat capacity of material) of fuel salt per lump (MW-s/°C)
|
||||
mcp_f2 = mn_f * scp_f # (mass of material x heat capacity of material) of fuel salt per lump (MW-s/°C)
|
||||
hA_fg = 0.02 * 9 / 5 # (fuel to graphite heat transfer coeff x heat transfer area) (MW/°C) ORNL-TM-1647 p.3, TDAMSRE p.5
|
||||
k_g = 0.07 # fraction of total power generated in the graphite ORNL-TM-0728 p.9
|
||||
k_1 = 0.5 # fraction of heat transferred from graphite which goes to the first fuel lump
|
||||
k_2 = 0.5 # fraction of heat transferred from graphite which goes to the second fuel lump
|
||||
k_f = 0.93 # fraction of heat generated in fuel - that generated in the external loop ORNL-TM-0728 p.9
|
||||
k_f1 = k_f / nn_f # fraction of total power generated in lump f1
|
||||
k_f2 = k_f / nn_f # fraction of total power generated in lump f2
|
||||
|
||||
# New node for power deposited in fuel outside the core
|
||||
k_out = 1 - (k_g + k_f) # fraction of power generated in fuel in external loop ORNL-TM-0728 p.9
|
||||
m_out = W_f # (kg) Mass of node such that resident time is 1 sec (W_f needs to be defined)
|
||||
|
||||
# Initial conditions - DONE
|
||||
Tf_in = 6.3222E+02 # in °C ORNL-TM-1647 p.2
|
||||
T0_f2 = 6.5727E+02 # 6.5444E+02; % in °C 6.461904761904777e+02; ORNL-TM-1647 p.2
|
||||
T0_f1 = Tf_in + (T0_f2 - Tf_in) / 2 # 6.405952380952389e+02; in °C
|
||||
T0_g1 = T0_f1 + (k_g * P / hA_fg) # 6.589285714285924e+02; in °C
|
||||
# T0_out = k_out * P / m_out / scp_f + T0_f2 # in °C (scp_f needs to be defined)
|
||||
|
||||
|
||||
# Heat Exchanger - DONE
|
||||
# Geometry
|
||||
d_he = 16 # (in) he diameter ORNL-TM-0728 p. 164
|
||||
h_he = 72 # (in) active height % 96; %(in) he height ORNL-TM-0728 p. 164
|
||||
od_tube = 0.5 # (in) coolant tube OD ORNL-TM-0728 p. 164
|
||||
id_tube = od_tube - 2 * 0.042 # (in) coolant tube ID ORNL-TM-0728 p. 164
|
||||
n_tube = 159 # number of coolant tubes ORNL-TM-0728 p. 164
|
||||
a_tube = 254 * 144 # (in^2) total area of tubes ORNL-TM-0728 p. 164
|
||||
l_tube = a_tube / n_tube / (np.pi * od_tube) # (in) tube length
|
||||
v_tube = n_tube * np.pi * (od_tube / 2) ** 2 * l_tube # (in^3) hx shell volume occupied by tubes
|
||||
v_cool = n_tube * np.pi * (id_tube / 2) ** 2 * l_tube # (in^3) hx volume occupied by coolant
|
||||
v_he = (d_he / 2) ** 2 * np.pi * h_he # (in^3) volume of heat exchanger shell
|
||||
v_he_fuel = v_he - v_tube # (in^3) volume available to fuel in shell
|
||||
|
||||
# Unit conversions
|
||||
in_m = 1.63871e-5 # 1 cubic inch = 1.63871e-5 cubic meters
|
||||
|
||||
# PRIMARY FLOW PARAMETERS - DONE
|
||||
W_p = W_f # fuel flow rate (kg/s)
|
||||
|
||||
m_p = v_he_fuel * in_m * rho_f # fuel mass in PHE (kg)
|
||||
nn_p = 4 # number of fuel nodes in PHE
|
||||
mn_p = m_p / nn_p # fuel mass per node (kg)
|
||||
cp_p = scp_f # fuel heat capacity (MJ/(kg-C))
|
||||
|
||||
# SECONDARY FLOW PARAMETERS - DONE
|
||||
vdot_s = 5.36265E-02 # ORNL-TM-0728 p. 164 % 5.236E-02; % coolant volume flow rate (m^3/s) ORNL-TM-1647 p.3
|
||||
rho_s = 1.922e3 # coolant salt density (kg/m^3) ORNL-TM-0728 p.8
|
||||
W_s = 1.005793369810108e+02 # vdot_s*rho_s; % calcd from mdot*cp*delT; vdot_s*rho_s; % coolant flow rate (kg/s) ORNL-TM-1647 p.3
|
||||
|
||||
m_s = v_cool * in_m * rho_s # coolant mass in PHE (kg)
|
||||
nn_s = 4 # number of coolant nodes in PHE
|
||||
mn_s = m_s / nn_s # coolant mass per node (kg)
|
||||
scp_s = 2.39E-3 # cp_s/m_s; % specific heat capacity of coolant (MJ/(kg-C) ORNL-TM-0728 p.8
|
||||
|
||||
A_phe = 2.359E+01 # effective area for heat transfer (primary and secondary, m^2) ORNL-TM-0728 p.164
|
||||
|
||||
ha_p = 6.480E-01 # heat transfer*area coefficient from primary to tubes (MW/C) ORNL-TM-1647 p.3
|
||||
ha_s = 3.060E-01 # heat transfer*area coefficient from tubes to secondary (MW/C) ORNL-TM-1647 p.3
|
||||
|
||||
# Primary Side
|
||||
mcp_pn = mn_p * cp_p # (mass of material x heat capacity of material) of fuel salt per lump in MW-s/°C
|
||||
hA_pn = ha_p / nn_s # 3.030; % (primary to tube heat transfer coeff x heat transfer area) in MW/°C
|
||||
|
||||
# Tubes - DONE
|
||||
nn_t = 2 # number of nodes of tubes in the model
|
||||
rho_tube = 8.7745E+03 # (kg/m^3) density of INOR-8 ORNL-TM-0728 p.20
|
||||
m_tn = (v_tube - v_cool) * in_m * rho_tube / nn_t # mass of tubes (kg)
|
||||
scp_t = 5.778E-04 # specific heat capacity of tubes (MJ/(kg-C)) ORNL-TM-0728 p.20
|
||||
mcp_tn = m_tn * scp_t # mass*(heat capacity) of tubes per lump in MW-s/°C
|
||||
|
||||
# Secondary Side - DONE
|
||||
mcp_sn = mn_s * scp_s # (mass of material x heat capacity of material) of coolant salt per lump in MW-s/°C
|
||||
hA_sn = ha_s / nn_s # (tube to secondary heat transfer coeff x heat transfer area) in MW/°C
|
||||
|
||||
# Initial conditions - DONE
|
||||
# Primary nodes
|
||||
Tp_in = T0_f2 # in °C ORNL-TM-1647 p.2
|
||||
T0_p4 = Tf_in # 6.5444E+02; % in °C 6.461904761904777e+02; ORNL-TM-1647 p.2
|
||||
T0_p1 = Tp_in + (T0_p4 - Tp_in) / 4 # in °C
|
||||
T0_p2 = Tp_in + 2 * (T0_p4 - Tp_in) / 4 # in °C
|
||||
T0_p3 = Tp_in + 3 * (T0_p4 - Tp_in) / 4 # in °C
|
||||
|
||||
# Secondary nodes
|
||||
Ts_in = 5.4611E+02 # in °C ORNL-TM-1647 p.2
|
||||
T0_s4 = 5.7939E+02 # in °C ORNL-TM-1647 p.2
|
||||
T0_s1 = Ts_in + (T0_s4 - Ts_in) / nn_s # in °C
|
||||
T0_s2 = Ts_in + 2 * (T0_s4 - Ts_in) / nn_s # in °C
|
||||
T0_s3 = Ts_in + 3 * (T0_s4 - Ts_in) / nn_s # in °C
|
||||
# Tube nodes
|
||||
T0_t1 = (T0_p1 * hA_pn + T0_s3 * hA_sn) / (hA_pn + hA_sn) # in °C
|
||||
T0_t2 = (T0_p3 * hA_pn + T0_s1 * hA_sn) / (hA_pn + hA_sn) # in °C
|
||||
|
||||
# Radiator Parameters - DONE
|
||||
|
||||
# Initial conditions - DONE
|
||||
# Primary nodes
|
||||
Trp_in = T0_s4 # 5.933E+02; % in °C ORNL-TM-1647 p.2
|
||||
T0_rp = Ts_in # in °C ORNL-TM-1647 p.2
|
||||
|
||||
# Secondary nodes - DONE
|
||||
Trs_in = 37.78 # (C) air inlet temperature ORNL-TM-1647 p.2
|
||||
T0_rs = 148.9 # (C) air exit temperature ORNL-TM-1647 p.2
|
||||
|
||||
# Radiator Geometry
|
||||
od_rad = 0.01905 # (m) outer diameter of tubes in the radiator ORNL-TM-0728 p.296
|
||||
tube_wall_thick = 0.0018288 # (m) thickness of tubes in the radiator ORNL-TM-0728 p.296
|
||||
id_rad = od_rad - 2 * tube_wall_thick
|
||||
n_rtubes = 120 # number of tubes in the radiator (rows times tubes per row) ORNL-TM-0728 p.296
|
||||
l_rtube = 9.144 # (m) length of tubes in the radiator ORNL-TM-0728 p.296
|
||||
v_rp = pi * (id_rad / 2) ** 2 * l_rtube * n_rtubes # volume available to salt in the radiator
|
||||
# v_rtube = pi * (od_rad / 2) ** 2 * l_rtube * n_rtubes - v_rp # volume of metal in radiator tubes *TUBES NOT MODELED
|
||||
|
||||
n_tpr = 12 # number of tubes per row in the radiator matrix
|
||||
n_row = 10 # number rows in the radiator matrix
|
||||
tube_space = 0.0381 # (m) spacing between tubes and rows of matrix
|
||||
v_rs = (n_row * od_rad + (n_row - 1) * tube_space) * (n_tpr * od_rad + (n_tpr - 1) * tube_space) * l_rtube # volume of air inside radiator
|
||||
|
||||
# PRIMARY FLOW PARAMETERS - DONE
|
||||
W_rp = W_s # coolant salt flow rate (kg/s)
|
||||
m_rp = v_rp * rho_s # coolant salt mass in rad (kg)
|
||||
nn_rp = 1 # number of coolant salt nodes in the radiator
|
||||
mn_rp = m_rp / nn_rp # coolant mass per node (kg)
|
||||
cp_rp = scp_s # coolant specific heat capacity (MJ/(kg-C))
|
||||
|
||||
# SECONDARY FLOW PARAMETERS - DONE
|
||||
vdot_rs = 94.389 # ORNL-TM-0728 p. 296; 78.82; % air volume flow rate (m^3/s) ORNL-TM-1647 p.2
|
||||
rho_rs = 1.1237 # air density (kg/m^3) REFPROP (310K and 0.1MPa)
|
||||
W_rs = vdot_rs * rho_rs # air flow rate (kg/s)
|
||||
|
||||
m_rs = v_rs * rho_rs # coolant air mass in rad (kg)
|
||||
nn_rs = 1 # number of coolant nodes in rad
|
||||
mn_rs = m_rs / nn_rs # coolant mass per node (kg)
|
||||
scp_rs = 1.0085E-3 # (MJ/kg-C) specific heat capacity of air at (air_out+air_in)/2 REFPROP
|
||||
|
||||
A_rad = 6.503E1 # (m^2) surface area of the radiator ORNL-TM-0728 p.14
|
||||
h_roverall = P / A_rad / ((T0_rp + Trp_in) / 2 - (T0_rs + Trs_in) / 2) # cald as: P/A_rad/((T0_rp+Trp_in)/2-(T0_rs+Trs_in)/2) 3.168E-4; % (MW/m^2-C) polimi thesis
|
||||
|
||||
# Primary Side
|
||||
mcp_rpn = mn_rp * cp_rp # (mass of material x heat capacity of material) of fuel salt per lump in MW-s/°C
|
||||
hA_rpn = h_roverall * A_rad / nn_rs # 3.030; % (primary to secondary heat transfer coeff x heat transfer area) in MW/°C
|
||||
|
||||
# Secondary Side - DONE
|
||||
mcp_rsn = mn_rs * scp_rs # (mass of material x heat capacity of material) of coolant salt per lump in MW-s/°C
|
||||
hA_rsn = h_roverall * A_rad / nn_rs # (tube to secondary heat transfer coeff x heat transfer area) in MW/°C
|
||||
|
||||
# Pure time delays between components - DONE
|
||||
tau_hx_c = 8.67 # (sec) delay from hx to core TDAMSRE p.6
|
||||
tau_c_hx = 3.77 # (sec) subtracted 1 sec for external loop power generation node resident time; delay from core to fuel hx TDAMSRE p.6
|
||||
tau_hx_r = 4.71 # (sec) fertile hx to core TDAMSRE p.6
|
||||
tau_r_hx = 8.24 # (sec) core to fertile hx TDAMSRE p.6
|
||||
|
||||
first_val = (rho_0 - beta_t) * n_frac0 / Lam + lam[0] * C0[0] + lam[1] * C0[1] + lam[2] * C0[2] + lam[3] * C0[3] + lam[4] * C0[4] + lam[5] * C0[5]
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
0.0, 205.26315789473685
|
||||
0.9046563192904662, 206.3397129186603
|
||||
1.9157427937915745, 208.4928229665072
|
||||
2.926829268292683, 186.96172248803828
|
||||
3.884700665188471, 171.88995215311007
|
||||
4.8957871396895785, 144.97607655502395
|
||||
5.906873614190688, 142.82296650717706
|
||||
6.917960088691797, 130.622009569378
|
||||
7.929046563192904, 119.4976076555024
|
||||
8.886917960088692, 104.42583732057417
|
||||
9.951219512195124, 99.04306220095697
|
||||
10.90909090909091, 88.99521531100478
|
||||
11.92017738359202, 86.84210526315792
|
||||
12.931263858093129, 83.61244019138758
|
||||
13.942350332594234, 81.45933014354068
|
||||
15.059866962305989, 79.66507177033495
|
||||
15.964523281596453, 71.77033492822966
|
||||
16.922394678492243, 64.23444976076556
|
||||
17.98669623059867, 66.02870813397129
|
||||
18.944567627494457, 62.08133971291866
|
||||
19.955654101995567, 53.82775119617227
|
||||
20.966740576496676, 60.28708133971293
|
||||
21.924611973392462, 56.3397129186603
|
||||
22.988913525498894, 57.057416267942614
|
||||
23.946784922394677, 59.21052631578948
|
||||
25.01108647450111, 59.9282296650718
|
||||
25.9689578713969, 52.03349282296651
|
||||
26.926829268292682, 41.626794258373224
|
||||
27.937915742793795, 44.85645933014354
|
||||
28.9490022172949, 40.550239234449776
|
||||
29.960088691796006, 40.550239234449776
|
||||
30.97117516629712, 36.961722488038305
|
||||
31.982261640798225, 43.42105263157896
|
||||
33.046563192904664, 35.5263157894737
|
||||
33.95121951219513, 31.57894736842107
|
||||
35.06873614190688, 28.708133971291886
|
||||
35.97339246119735, 28.708133971291886
|
||||
37.03769401330377, 31.937799043062228
|
||||
37.99556541019957, 30.143540669856492
|
||||
39.00665188470067, 32.655502392344516
|
||||
39.85809312638582, 30.143540669856492
|
||||
40.97560975609757, 35.88516746411486
|
||||
41.880266075388036, 30.861244019138752
|
||||
42.99778270509979, 25.837320574162703
|
||||
43.902439024390254, 16.14832535885168
|
||||
45.019955654102, 20.095693779904337
|
||||
45.97782705099779, 20.813397129186626
|
||||
46.988913525498894, 24.401913875598098
|
||||
48.00000000000001, 20.813397129186626
|
||||
48.9578713968958, 24.401913875598098
|
||||
50.07538802660755, 20.454545454545467
|
||||
50.980044345898015, 21.889952153110073
|
||||
51.9379157427938, 16.866028708133967
|
||||
52.89578713968958, 19.01913875598089
|
||||
53.96008869179602, 19.01913875598089
|
||||
54.97117516629712, 18.66028708133973
|
||||
55.92904656319291, 19.37799043062202
|
||||
56.99334811529934, 18.301435406698573
|
||||
57.951219512195124, 21.531100478468915
|
||||
58.90909090909092, 19.37799043062202
|
||||
59.97339246119734, 15.43062200956939
|
||||
60.931263858093125, 6.818181818181841
|
||||
61.94235033259424, 9.330143540669894
|
||||
63.006651884700666, 11.84210526315789
|
||||
63.96452328159645, 7.894736842105289
|
||||
64.97560975609755, 7.177033492823
|
||||
65.98669623059867, 8.612440191387549
|
||||
67.0509977827051, 8.612440191387549
|
||||
67.90243902439025, 8.971291866028707
|
||||
68.96674057649668, 8.253588516746419
|
||||
69.97782705099779, 7.177033492823
|
||||
70.93569844789357, 7.894736842105289
|
||||
72, 8.971291866028707
|
||||
|
48
dynamic_model/pump_transient_benchmark/data/ornl_spinup.csv
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
0.0, 0.35928164309859767
|
||||
1.0136592379583034, -2.046391876691928
|
||||
1.99352983465133, 3.3239141576573275
|
||||
2.93961179007908, -6.257502949583625
|
||||
3.9532710280373826, 20.045387470375147
|
||||
4.966930265995687, 42.75976114392245
|
||||
5.98058950395399, 72.05308218589082
|
||||
6.960460100647017, 100.74874707191478
|
||||
8.007907979870597, 129.4435520210237
|
||||
8.987778576563624, 164.1200781510668
|
||||
9.967649173256651, 190.42339853948312
|
||||
10.947519769949677, 225.09992466952622
|
||||
11.961179007907981, 250.20664284068118
|
||||
12.974838245866282, 280.0980500070515
|
||||
13.988497483824586, 278.2908925801203
|
||||
14.96836808051761, 278.8765096192543
|
||||
16.015815959741193, 247.16461600376994
|
||||
17.029475197699497, 219.0416691031546
|
||||
17.975557153127244, 223.8143189815595
|
||||
18.98921639108555, 221.4090754302264
|
||||
19.969086987778574, 216.61191734974324
|
||||
20.9489575844716, 200.4511229056236
|
||||
22.03019410496046, 205.2220529101985
|
||||
22.97627606038821, 201.02341092257473
|
||||
23.989935298346513, 201.0105118688493
|
||||
25.037383177570096, 204.58569959307783
|
||||
26.01725377426312, 200.38662763699654
|
||||
27.030913012221426, 204.56033145408452
|
||||
28.044572250179726, 207.5378630223687
|
||||
28.9568655643422, 203.3396510032024
|
||||
30.00431344356578, 205.1205803542252
|
||||
30.984184040258803, 199.72533614934008
|
||||
31.930265995686554, 215.26353626697946
|
||||
32.97771387491014, 206.8770015031697
|
||||
33.99137311286844, 209.25644694705196
|
||||
34.97124370956146, 211.63632235939173
|
||||
36.018691588785046, 214.01533783481642
|
||||
36.99856218547807, 219.98372999356766
|
||||
38.04601006470165, 214.58762585176748
|
||||
38.92451473759885, 209.79175767665683
|
||||
40.005751258087706, 204.39522356639915
|
||||
40.95183321351546, 209.1678734448041
|
||||
41.96549245147376, 216.93009400830357
|
||||
42.979151689432065, 218.11336720338198
|
||||
44.02659956865565, 207.3344879419646
|
||||
44.97268152408339, 204.3320182031446
|
||||
46.020129403306974, 198.93591406134445
|
||||
46.966211358734725, 203.11047781534745
|
||||
|
29
dynamic_model/pump_transient_benchmark/data/spindown.csv
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
0.0, 100.00
|
||||
0.44195755537515935, 99.52055134938121
|
||||
0.6700104372028297, 98.59561637481153
|
||||
0.912849356372492, 97.06151322874041
|
||||
1.064420735242955, 95.83655009029007
|
||||
1.2906181143453552, 92.47825582743823
|
||||
1.6068073756233332, 87.13788704627159
|
||||
2.0433723762031772, 79.66170209241065
|
||||
2.4787776875797283, 70.66466758337336
|
||||
2.8983532413313227, 60.90803664617882
|
||||
3.0331671112141945, 57.70679743543015
|
||||
3.5299199814449724, 49.162704395222065
|
||||
3.906645019134871, 43.21068239426117
|
||||
4.389423634465963, 36.340352214178026
|
||||
4.8273802620897595, 30.689186726528717
|
||||
5.7500869766902465, 20.75313530259605
|
||||
6.568943523135799, 14.625006212620733
|
||||
7.00979937376783, 12.775964612912304
|
||||
8.409776179983766, 8.745547621808768
|
||||
9.76562681201438, 6.846805056244918
|
||||
10.847326916386407, 5.419227646990592
|
||||
12.005276585874984, 3.987508490581675
|
||||
12.995941087788474, 3.1732409999834346
|
||||
14.61150411689667, 1.8687563161644078
|
||||
15.404267656268118, 1.5215122347211008
|
||||
16.639278673315548, 1.1502460197809654
|
||||
17.843789864316363, 0.7806365037027234
|
||||
18.956685608256986, 0.2639121286923398
|
||||
20.0, 0.25
|
||||
|
37
dynamic_model/pump_transient_benchmark/data/spinup.csv
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
0.0, 0.04304757443473761
|
||||
0.2471035766638533, 0.22234516401286442
|
||||
0.5283342688575431, 0.40358110591076013
|
||||
0.9885233389734, 0.7621762850669995
|
||||
1.413967443757496, 7.260179378354252
|
||||
1.6260171301886257, 16.8204560781479
|
||||
1.8210214309078352, 26.380086660501618
|
||||
1.9986714210141616, 38.838846195781656
|
||||
2.2107574515512876, 48.05797288729693
|
||||
2.40581626842949, 57.105878457233075
|
||||
2.618174879761583, 63.76638008666049
|
||||
2.830660695464659, 69.23285668711358
|
||||
3.0262101577738023, 73.67523714529162
|
||||
3.2133096154389755, 77.43499452819293
|
||||
3.4090226262251, 80.34219994911825
|
||||
3.613294673973177, 82.90857842048514
|
||||
3.8176394099332476, 84.79265687529528
|
||||
4.004938760181397, 86.67608921266552
|
||||
4.200778975338504, 88.3892696046165
|
||||
4.41368274826053, 89.93252110986822
|
||||
4.609559307523633, 91.30455149354084
|
||||
4.796895001877778, 92.84683382263268
|
||||
5.018375983814757, 93.87868337418679
|
||||
5.205784366380893, 94.73866568672187
|
||||
5.401733613855988, 95.42839605383773
|
||||
5.623250939898963, 96.11909559711347
|
||||
5.802209317821131, 96.29645483437183
|
||||
5.9982130814552175, 96.47446018907011
|
||||
6.245316658119071, 96.99555390436655
|
||||
6.509483792547842, 97.3467187329637
|
||||
6.765146406173652, 97.5269854987017
|
||||
6.995349973549566, 96.68283306344469
|
||||
7.268003456728303, 97.37547095904019
|
||||
7.498079819733233, 97.72534355275751
|
||||
7.770787819070964, 97.90625643593543
|
||||
7.992341489219934, 98.25580597093278
|
||||
8.239445065883785, 98.77689968622921
|
||||
|
348
dynamic_model/pump_transient_benchmark/model.ipynb
Normal file
|
|
@ -0,0 +1,217 @@
|
|||
import numpy as np
|
||||
import math
|
||||
pi = math.pi
|
||||
|
||||
# domain
|
||||
t0 = 0.0
|
||||
tf = 10000.00
|
||||
T = np.arange(t0,tf,0.01)
|
||||
|
||||
# NEUTRONICS DATA
|
||||
tau_l = 16.73 # ORNL-TM-0728 %16.44; % (s)
|
||||
tau_c = 8.46 # ORNL-TM-0728 %8.460; % (s)
|
||||
# P = 8.0 # Thermal Power in MW ORNL-TM-1070, p.2
|
||||
P = 1.0e-5 # 10 W
|
||||
n_frac0 = 1.0 # initial fractional neutron density n/n0 (n/cm^3/s)
|
||||
Lam = 2.400E-04 # mean generation time ORNL-TM-1070 p.15 U235
|
||||
# Lam = 4.0E-04; # mean generation time ORNL-TM-1070 p.15 U233
|
||||
lam = np.array([1.240E-02, 3.05E-02, 1.11E-01, 3.01E-01, 1.140E+00, 3.014E+00])
|
||||
beta = np.array([0.000223, 0.001457, 0.001307, 0.002628, 0.000766, 0.00023]) # U235
|
||||
# beta = np.array([0.00023, 0.00079, 0.00067, 0.00073, 0.00013, 0.00009]) # U233
|
||||
beta_t = np.sum(beta) # total delayed neutron fraction MSRE
|
||||
rho_0 = beta_t-sum(np.divide(beta,1+np.divide(1-np.exp(-lam*tau_l),lam*tau_c))) # reactivity change in going from stationary to circulating fuel
|
||||
C0 = beta / Lam * (1.0 / (lam - (np.exp(-lam * tau_l) - 1.0) / tau_c))
|
||||
|
||||
# Feedback co-efficients
|
||||
# a_f = -8.71E-05 # U235 (drho/°C) fuel salt temperature-reactivity feedback coefficient ORNL-TM-1647 p.3 % -5.904E-05; % ORNL-TM-0728 p. 101 %
|
||||
# a_g = -6.66E-05 # U235 (drho/°C) graphite temperature-reactivity feedback coefficient ORNL-TM-1647 p.3 % -6.624E-05; % ORNL-TM-0728 p.101
|
||||
|
||||
# low power coefficients
|
||||
a_f = (-4.1e-5)*5/9
|
||||
a_g = (-4.0e-5)*5/9
|
||||
|
||||
# CORE HEAT TRANSFER PARAMETERS
|
||||
# FUEL PARAMETERS - DONE
|
||||
vdot_f = 7.5708E-02 # ORNL-TM-0728 % 7.571e-2; % vol. flow rate (m^3/s) ORNL-TM-1647 p.3, ORNL-TM-0728 p.12
|
||||
rho_f = 2.14647E+03 # (partially enriched U-235)ORNL-TM-0728 p.8 2.243E+03; % (Th-U) density of fuel salt (kg/m^3) ORNL-TM-0728 p.8
|
||||
|
||||
# W_f = 1.623879934566580e+02 # 1.83085e+02;%vdot_f*rho_f; % 182.78; % calcd from m_dot*cp*delT=P; vdot_f*rho_f; % fuel flow rate (kg/s)
|
||||
|
||||
W_f = 1200*(1/264.172)*(1/60)*(rho_f) # gpm -> kg/s
|
||||
|
||||
# tau_f_c = tau_c; % ORNL-TM-0728 % 8.45; % transit time of fuel in core (s) ORNL-TM-1070 p.15, TDAMSRE p.5
|
||||
m_f = W_f * tau_c # fuel mass in core (kg)
|
||||
nn_f = 2 # number of fuel nodes in core model
|
||||
mn_f = m_f / nn_f # fuel mass per node (kg)
|
||||
# cp_f = 4.2*9/5; % (MJ/deg-C) total fuel heat capacity TDAMSRE p.5
|
||||
scp_f = 1.9665E-3 # specific heat capacity of fuel salt (MJ/kg-C) ORNL-TM-0728 p.8
|
||||
|
||||
# Core Upflow - DONE
|
||||
v_g = 1.95386 # graphite volume(m^3) ORNL-TM-0728 p. 101
|
||||
rho_g = 1.860E3 # graphite density (kg/m^3) ORNL-3812 p.77, ORNL-TM-0728 p.87
|
||||
m_g = v_g * rho_g # graphite mass (kg)
|
||||
cp_g = 3.6 * 9 / 5 # TDAMSRE p.5 graphite total heat capacity (MW-s/C) ORNL-TM-1647 p.3
|
||||
scp_g = 1.773E-3 # cp_g/m_g; % graphite specific heat capacity (MW-s/kg-C) ORNL-TM-1647 p.3
|
||||
mcp_g1 = m_g * scp_g # (mass of material x heat capacity of material) of graphite per lump (MW-s/°C)
|
||||
mcp_f1 = mn_f * scp_f # (mass of material x heat capacity of material) of fuel salt per lump (MW-s/°C)
|
||||
mcp_f2 = mn_f * scp_f # (mass of material x heat capacity of material) of fuel salt per lump (MW-s/°C)
|
||||
hA_fg = 0.02 * 9 / 5 # (fuel to graphite heat transfer coeff x heat transfer area) (MW/°C) ORNL-TM-1647 p.3, TDAMSRE p.5
|
||||
k_g = 0.07 # fraction of total power generated in the graphite ORNL-TM-0728 p.9
|
||||
k_1 = 0.5 # fraction of heat transferred from graphite which goes to the first fuel lump
|
||||
k_2 = 0.5 # fraction of heat transferred from graphite which goes to the second fuel lump
|
||||
k_f = 0.93 # fraction of heat generated in fuel - that generated in the external loop ORNL-TM-0728 p.9
|
||||
k_f1 = k_f / nn_f # fraction of total power generated in lump f1
|
||||
k_f2 = k_f / nn_f # fraction of total power generated in lump f2
|
||||
|
||||
# New node for power deposited in fuel outside the core
|
||||
k_out = 1 - (k_g + k_f) # fraction of power generated in fuel in external loop ORNL-TM-0728 p.9
|
||||
m_out = W_f # (kg) Mass of node such that resident time is 1 sec (W_f needs to be defined)
|
||||
|
||||
# Initial conditions - DONE
|
||||
Tf_in = 648.85 # in °C ORNL-TM-1647 p.2
|
||||
T0_f2 = 648.85 # 6.5444E+02; % in °C 6.461904761904777e+02; ORNL-TM-1647 p.2
|
||||
T0_f1 = Tf_in + (T0_f2 - Tf_in) / 2 # 6.405952380952389e+02; in °C
|
||||
T0_g1 = T0_f1 + (k_g * P / hA_fg) # 6.589285714285924e+02; in °C
|
||||
# T0_out = k_out * P / m_out / scp_f + T0_f2 # in °C (scp_f needs to be defined)
|
||||
|
||||
|
||||
# Heat Exchanger - DONE
|
||||
# Geometry
|
||||
d_he = 16 # (in) he diameter ORNL-TM-0728 p. 164
|
||||
h_he = 72 # (in) active height % 96; %(in) he height ORNL-TM-0728 p. 164
|
||||
od_tube = 0.5 # (in) coolant tube OD ORNL-TM-0728 p. 164
|
||||
id_tube = od_tube - 2 * 0.042 # (in) coolant tube ID ORNL-TM-0728 p. 164
|
||||
n_tube = 159 # number of coolant tubes ORNL-TM-0728 p. 164
|
||||
a_tube = 254 * 144 # (in^2) total area of tubes ORNL-TM-0728 p. 164
|
||||
l_tube = a_tube / n_tube / (np.pi * od_tube) # (in) tube length
|
||||
v_tube = n_tube * np.pi * (od_tube / 2) ** 2 * l_tube # (in^3) hx shell volume occupied by tubes
|
||||
v_cool = n_tube * np.pi * (id_tube / 2) ** 2 * l_tube # (in^3) hx volume occupied by coolant
|
||||
v_he = (d_he / 2) ** 2 * np.pi * h_he # (in^3) volume of heat exchanger shell
|
||||
v_he_fuel = v_he - v_tube # (in^3) volume available to fuel in shell
|
||||
|
||||
# Unit conversions
|
||||
in_m = 1.63871e-5 # 1 cubic inch = 1.63871e-5 cubic meters
|
||||
|
||||
# PRIMARY FLOW PARAMETERS - DONE
|
||||
W_p = W_f # fuel flow rate (kg/s)
|
||||
|
||||
m_p = v_he_fuel * in_m * rho_f # fuel mass in PHE (kg)
|
||||
nn_p = 4 # number of fuel nodes in PHE
|
||||
mn_p = m_p / nn_p # fuel mass per node (kg)
|
||||
cp_p = scp_f # fuel heat capacity (MJ/(kg-C))
|
||||
|
||||
# SECONDARY FLOW PARAMETERS - DONE
|
||||
vdot_s = 5.36265E-02 # ORNL-TM-0728 p. 164 % 5.236E-02; % coolant volume flow rate (m^3/s) ORNL-TM-1647 p.3
|
||||
rho_s = 1.922e3 # coolant salt density (kg/m^3) ORNL-TM-0728 p.8
|
||||
W_s = 1.005793369810108e+02 # vdot_s*rho_s; % calcd from mdot*cp*delT; vdot_s*rho_s; % coolant flow rate (kg/s) ORNL-TM-1647 p.3
|
||||
|
||||
m_s = v_cool * in_m * rho_s # coolant mass in PHE (kg)
|
||||
nn_s = 4 # number of coolant nodes in PHE
|
||||
mn_s = m_s / nn_s # coolant mass per node (kg)
|
||||
scp_s = 2.39E-3 # cp_s/m_s; % specific heat capacity of coolant (MJ/(kg-C) ORNL-TM-0728 p.8
|
||||
|
||||
A_phe = 2.359E+01 # effective area for heat transfer (primary and secondary, m^2) ORNL-TM-0728 p.164
|
||||
|
||||
ha_p = 6.480E-01 # heat transfer*area coefficient from primary to tubes (MW/C) ORNL-TM-1647 p.3
|
||||
ha_s = 3.060E-01 # heat transfer*area coefficient from tubes to secondary (MW/C) ORNL-TM-1647 p.3
|
||||
|
||||
# Primary Side
|
||||
mcp_pn = mn_p * cp_p # (mass of material x heat capacity of material) of fuel salt per lump in MW-s/°C
|
||||
hA_pn = ha_p / nn_s # 3.030; % (primary to tube heat transfer coeff x heat transfer area) in MW/°C
|
||||
|
||||
# Tubes - DONE
|
||||
nn_t = 2 # number of nodes of tubes in the model
|
||||
rho_tube = 8.7745E+03 # (kg/m^3) density of INOR-8 ORNL-TM-0728 p.20
|
||||
m_tn = (v_tube - v_cool) * in_m * rho_tube / nn_t # mass of tubes (kg)
|
||||
scp_t = 5.778E-04 # specific heat capacity of tubes (MJ/(kg-C)) ORNL-TM-0728 p.20
|
||||
mcp_tn = m_tn * scp_t # mass*(heat capacity) of tubes per lump in MW-s/°C
|
||||
|
||||
# Secondary Side - DONE
|
||||
mcp_sn = mn_s * scp_s # (mass of material x heat capacity of material) of coolant salt per lump in MW-s/°C
|
||||
hA_sn = ha_s / nn_s # (tube to secondary heat transfer coeff x heat transfer area) in MW/°C
|
||||
|
||||
# Initial conditions - DONE
|
||||
# Primary nodes
|
||||
Tp_in = T0_f2 # in °C ORNL-TM-1647 p.2
|
||||
T0_p4 = Tf_in # 6.5444E+02; % in °C 6.461904761904777e+02; ORNL-TM-1647 p.2
|
||||
T0_p1 = Tp_in + (T0_p4 - Tp_in) / 4 # in °C
|
||||
T0_p2 = Tp_in + 2 * (T0_p4 - Tp_in) / 4 # in °C
|
||||
T0_p3 = Tp_in + 3 * (T0_p4 - Tp_in) / 4 # in °C
|
||||
|
||||
# Secondary nodes
|
||||
hx_f_temp = 648.85-(3e-4)
|
||||
Ts_in = hx_f_temp # in °C ORNL-TM-1647 p.2
|
||||
T0_s4 = hx_f_temp # in °C ORNL-TM-1647 p.2
|
||||
T0_s1 = Ts_in + (T0_s4 - Ts_in) / nn_s # in °C
|
||||
T0_s2 = Ts_in + 2 * (T0_s4 - Ts_in) / nn_s # in °C
|
||||
T0_s3 = Ts_in + 3 * (T0_s4 - Ts_in) / nn_s # in °C
|
||||
# Tube nodes
|
||||
T0_t1 = (T0_p1 * hA_pn + T0_s3 * hA_sn) / (hA_pn + hA_sn) # in °C
|
||||
T0_t2 = (T0_p3 * hA_pn + T0_s1 * hA_sn) / (hA_pn + hA_sn) # in °C
|
||||
|
||||
# Radiator Parameters - DONE
|
||||
|
||||
# Initial conditions - DONE
|
||||
# Primary nodes
|
||||
Trp_in = T0_s4 # 5.933E+02; % in °C ORNL-TM-1647 p.2
|
||||
T0_rp = Ts_in # in °C ORNL-TM-1647 p.2
|
||||
|
||||
# Secondary nodes - DONE
|
||||
Trs_in = 37.78 # (C) air inlet temperature ORNL-TM-1647 p.2
|
||||
T0_rs = 148.9 # (C) air exit temperature ORNL-TM-1647 p.2
|
||||
|
||||
# Radiator Geometry
|
||||
od_rad = 0.01905 # (m) outer diameter of tubes in the radiator ORNL-TM-0728 p.296
|
||||
tube_wall_thick = 0.0018288 # (m) thickness of tubes in the radiator ORNL-TM-0728 p.296
|
||||
id_rad = od_rad - 2 * tube_wall_thick
|
||||
n_rtubes = 120 # number of tubes in the radiator (rows times tubes per row) ORNL-TM-0728 p.296
|
||||
l_rtube = 9.144 # (m) length of tubes in the radiator ORNL-TM-0728 p.296
|
||||
v_rp = pi * (id_rad / 2) ** 2 * l_rtube * n_rtubes # volume available to salt in the radiator
|
||||
# v_rtube = pi * (od_rad / 2) ** 2 * l_rtube * n_rtubes - v_rp # volume of metal in radiator tubes *TUBES NOT MODELED
|
||||
|
||||
n_tpr = 12 # number of tubes per row in the radiator matrix
|
||||
n_row = 10 # number rows in the radiator matrix
|
||||
tube_space = 0.0381 # (m) spacing between tubes and rows of matrix
|
||||
v_rs = (n_row * od_rad + (n_row - 1) * tube_space) * (n_tpr * od_rad + (n_tpr - 1) * tube_space) * l_rtube # volume of air inside radiator
|
||||
|
||||
# PRIMARY FLOW PARAMETERS - DONE
|
||||
W_rp = W_s # coolant salt flow rate (kg/s)
|
||||
m_rp = v_rp * rho_s # coolant salt mass in rad (kg)
|
||||
nn_rp = 1 # number of coolant salt nodes in the radiator
|
||||
mn_rp = m_rp / nn_rp # coolant mass per node (kg)
|
||||
cp_rp = scp_s # coolant specific heat capacity (MJ/(kg-C))
|
||||
|
||||
# SECONDARY FLOW PARAMETERS - DONE
|
||||
# assume only convection airflow
|
||||
# vdot_rs = 94.389 # ORNL-TM-0728 p. 296; 78.82; % air volume flow rate (m^3/s) ORNL-TM-1647 p.2
|
||||
vdot_rs = 1.0
|
||||
rho_rs = 1.1237 # air density (kg/m^3) REFPROP (310K and 0.1MPa)
|
||||
W_rs = vdot_rs * rho_rs # air flow rate (kg/s)
|
||||
|
||||
|
||||
|
||||
m_rs = v_rs * rho_rs # coolant air mass in rad (kg)
|
||||
nn_rs = 1 # number of coolant nodes in rad
|
||||
mn_rs = m_rs / nn_rs # coolant mass per node (kg)
|
||||
scp_rs = 1.0085E-3 # (MJ/kg-C) specific heat capacity of air at (air_out+air_in)/2 REFPROP
|
||||
|
||||
A_rad = 6.503E1 # (m^2) surface area of the radiator ORNL-TM-0728 p.14
|
||||
h_roverall = P / A_rad / ((T0_rp + Trp_in) / 2 - (T0_rs + Trs_in) / 2) # cald as: P/A_rad/((T0_rp+Trp_in)/2-(T0_rs+Trs_in)/2) 3.168E-4; % (MW/m^2-C) polimi thesis
|
||||
# h_roverall = 3.0
|
||||
|
||||
# Primary Side
|
||||
mcp_rpn = mn_rp * cp_rp # (mass of material x heat capacity of material) of fuel salt per lump in MW-s/°C
|
||||
hA_rpn = h_roverall * A_rad / nn_rs # 3.030; % (primary to secondary heat transfer coeff x heat transfer area) in MW/°C
|
||||
|
||||
# Secondary Side - DONE
|
||||
mcp_rsn = mn_rs * scp_rs # (mass of material x heat capacity of material) of coolant salt per lump in MW-s/°C
|
||||
hA_rsn = h_roverall * A_rad / nn_rs # (tube to secondary heat transfer coeff x heat transfer area) in MW/°C
|
||||
|
||||
# Pure time delays between components - DONE
|
||||
tau_hx_c = 8.67 # (sec) delay from hx to core TDAMSRE p.6
|
||||
tau_c_hx = 3.77 # (sec) subtracted 1 sec for external loop power generation node resident time; delay from core to fuel hx TDAMSRE p.6
|
||||
tau_hx_r = 4.71 # (sec) fertile hx to core TDAMSRE p.6
|
||||
tau_r_hx = 8.24 # (sec) core to fertile hx TDAMSRE p.6
|
||||
|
||||
first_val = (rho_0 - beta_t) * n_frac0 / Lam + lam[0] * C0[0] + lam[1] * C0[1] + lam[2] * C0[2] + lam[3] * C0[3] + lam[4] * C0[4] + lam[5] * C0[5]
|
||||
|
||||
338
dynamic_model/pump_transient_benchmark/pump_transients.ipynb
Normal file
253
dynamic_model/scipyODE_implementation/main.py
Normal file
|
|
@ -0,0 +1,253 @@
|
|||
from parameters import *
|
||||
import numpy as np
|
||||
from scipy.integrate import ode
|
||||
import matplotlib.pyplot as plt
|
||||
import copy
|
||||
|
||||
def dydtMSRE(t,y,delays,rho_ext):
|
||||
|
||||
'''
|
||||
Returns derivative of state vector y; y' or dy/dt, of the MSRE system.
|
||||
|
||||
The y vector contains the following:
|
||||
|
||||
T_in_rc = Inlet temperature (°C) of radiator coolant, will be equal to
|
||||
the outlet temperature of the heat exchanger (T_hc4) plus
|
||||
relevant time delay
|
||||
|
||||
T_out_rc = Outlet temperature (°C) of radiator coolant
|
||||
|
||||
T_in_air = Inlet temperature (°C) of air in radiator
|
||||
|
||||
T_out_air = Outlet temperature (°C) of air in radiator
|
||||
|
||||
T_in_hf = Inlet temperature (°C) of heat exchanger fuel, will be equal
|
||||
to the outlet temperature of the core (T_cf2) plus relevant
|
||||
time delay
|
||||
|
||||
T_hf* = Temperature (°C) of heat exchanger fuel node *
|
||||
|
||||
T_ht* = Temperature (°C) of heat exchanger tube node *
|
||||
|
||||
T_hc* = Temperature (°C) of heat exchanger coolant node *
|
||||
|
||||
T_in_cf = Inlet temperature (°C) of core fuel, will be equal to the
|
||||
outlet temperature of the heat exchanger (T_hf4) plus
|
||||
relevant time dela
|
||||
|
||||
S = neutro source perturbation term
|
||||
|
||||
rho_fb = feedback reactivity (from fuel and graphite temperatures)
|
||||
|
||||
rho_ext = external reactivity (reactivity insertion)
|
||||
|
||||
rho_tot = total reactivity = rho_0 + rho_fb + rho_ext (rho_0 =
|
||||
steady-state reactivity, constant)
|
||||
|
||||
n = neutron density n(t)
|
||||
|
||||
C* = precursor concentration of group *
|
||||
|
||||
T_cg = Temperature (°C) of core graphite node
|
||||
|
||||
T_cf* = Temperature (°C) of core fuel node *
|
||||
|
||||
*_delay = Parameter at time t = t - delay
|
||||
|
||||
Other parameters are defined in parameters.py
|
||||
'''
|
||||
|
||||
# unpack state variables
|
||||
T_out_rc, T_out_air, T_hf1, T_hf2, T_hf3, T_hf4, T_ht1, T_ht2, T_hc1, \
|
||||
T_hc2, T_hc3, T_hc4, n, C1, C2, C3, C4, C5, C6, T_cg, T_cf1, T_cf2 = y
|
||||
|
||||
# delay terms
|
||||
T_out_rc_delay, T_hc4_delay, T_cf2_delay, T_hf4_delay, C1_delay, \
|
||||
C2_delay, C3_delay, C4_delay, C5_delay, C6_delay = delays
|
||||
|
||||
# reactivity
|
||||
rho = (a_f/2)*((-T0_f1+T_cf1)+(-T0_f2+T_cf2)) + a_g*(-T0_g1+T_cg) + rho_ext
|
||||
|
||||
# derivatives
|
||||
dydt = [
|
||||
(W_rp/mn_rp)*(T_hc4_delay-T_out_rc) + (hA_rpn/mcp_rpn)*(T_out_air-T_out_rc), # T_out_rc # T_out_rc
|
||||
-((W_rs/mn_rs)+(hA_rsn/mcp_rsn))*T_out_air + (hA_rsn/mcp_rsn)*T_out_rc + (W_rs/mn_rs)*Trs_in, # T_out_air
|
||||
-((W_p/mn_p)+(hA_pn/mcp_pn))*T_hf1 + (hA_pn/mcp_pn)*T_ht1 + (W_p/mn_p)*T_cf2_delay, # T_hf1
|
||||
(W_p/mn_p)*(T_hf1-T_hf2) + (hA_pn/mcp_pn)*(T_ht1-T_hf1), # T_hf2
|
||||
-((W_p/mn_p)+(hA_pn/mcp_pn))*T_hf3 + (hA_pn/mcp_pn)*T_ht2 + (W_p/mn_p)*T_hf2, # T_hf3
|
||||
(W_p/mn_p)*(T_hf3-T_hf4) + (hA_pn/mcp_pn)*(T_ht2-T_hf3), # T_hf4
|
||||
(2*hA_pn/mcp_tn)*(T_hf1-T_ht1) + (2*hA_sn/mcp_tn)*(T_hc3-T_ht1), # T_ht1
|
||||
(2*hA_pn/mcp_tn)*(T_hf3-T_ht2) + (2*hA_sn/mcp_tn)*(T_hc1-T_ht2), # T_ht2
|
||||
-((W_s/mn_s)+(hA_sn/mcp_sn))*T_hc1 + (hA_sn/mcp_sn)*T_ht2 + (W_s/mn_s)*T_out_rc_delay, # T_hc1
|
||||
(W_s/mn_s)*(T_hc1-T_hc2) + (hA_sn/mcp_sn)*(T_ht2-T_hc1), # T_hc2
|
||||
-((W_s/mn_s)+(hA_sn/mcp_sn))*T_hc3 + (hA_sn/mcp_sn)*T_ht1 + (W_s/mn_s)*T_hc2, # T_hc3
|
||||
(W_s/mn_s)*(T_hc3-T_hc4) + (hA_sn/mcp_sn)*(T_ht1-T_hc3), # T_hc4
|
||||
(rho-beta_t)*n/Lam+lam[0]*C1+lam[1]*C2+lam[2]*C3+lam[3]*C4+lam[4]*C5+lam[5]*C6, # n (no source insertion)
|
||||
n*beta[0]/Lam-lam[0]*C1-C1/tau_c+C1_delay*np.exp(-lam[0]*tau_l)/tau_c, # C1
|
||||
n*beta[1]/Lam-lam[1]*C2-C2/tau_c+C2_delay*np.exp(-lam[1]*tau_l)/tau_c, # C2
|
||||
n*beta[2]/Lam-lam[2]*C3-C3/tau_c+C3_delay*np.exp(-lam[2]*tau_l)/tau_c, # C3
|
||||
n*beta[3]/Lam-lam[3]*C4-C4/tau_c+C4_delay*np.exp(-lam[3]*tau_l)/tau_c, # C4
|
||||
n*beta[4]/Lam-lam[4]*C5-C5/tau_c+C5_delay*np.exp(-lam[4]*tau_l)/tau_c, # C5
|
||||
n*beta[5]/Lam-lam[5]*C6-C6/tau_c+C6_delay*np.exp(-lam[5]*tau_l)/tau_c, # C6
|
||||
(hA_fg/mcp_g1)*(T_cf1 - T_cg) + k_g*P*n/mcp_g1, # T_cg
|
||||
W_f/mn_f*(T_hf4_delay-T_cf1) + (k_f1*P*n/mcp_f1) + (hA_fg*k_1*(T_cg - T_cf1)/mcp_f1), # T_cf1
|
||||
W_f/mn_f*(T_cf1 - T_cf2) + (k_f2*P*n/mcp_f2) + (hA_fg*k_2*(T_cg - T_cf1)/mcp_f2), # T_cf2
|
||||
|
||||
]
|
||||
return dydt
|
||||
|
||||
def get_tIdx(t,tao,timeVec):
|
||||
'''
|
||||
Returns index of time t = t-tau
|
||||
'''
|
||||
td = t-tao
|
||||
diff_min = 999999.9999999
|
||||
idx = 0
|
||||
for t in enumerate(timeVec):
|
||||
diff = abs(td-t[1])
|
||||
if (diff<diff_min):
|
||||
diff_min = abs(td-t[1])
|
||||
idx = t[0]
|
||||
return idx, timeVec[idx]-td
|
||||
|
||||
def main():
|
||||
'''
|
||||
Sets initial conditions and calls the solver
|
||||
'''
|
||||
|
||||
# initial conditions
|
||||
y0 = [T0_rp, T0_rs, T0_p1,T0_p2, T0_p3, T0_p4, T0_t1, T0_t2, T0_s1, T0_s2,
|
||||
T0_s3, T0_s4, n_frac0, C0[0], C0[1], C0[2], C0[3], C0[4], C0[5],
|
||||
T0_g1, T0_f1, T0_f2]
|
||||
|
||||
# initial delay terms
|
||||
d0 = [T0_rp, T0_rs, T0_f2, T0_p4, C0[0], C0[1], C0[2], C0[3], C0[4], C0[5]]
|
||||
|
||||
# solver
|
||||
backend = 'dopri5'
|
||||
r = ode(dydtMSRE).set_integrator(backend,max_step=0.10)
|
||||
|
||||
sol_interim = []
|
||||
def solout(t, y):
|
||||
sol_interim.append([t, *y])
|
||||
r.set_solout(solout)
|
||||
|
||||
# timing parameters
|
||||
t0 = 0.0
|
||||
t_start = t0
|
||||
t_stop = 500.00
|
||||
|
||||
# solution
|
||||
sol = []
|
||||
|
||||
# step-reactivity insertion
|
||||
t_insert = 2500.00
|
||||
insert = 1.0e-4
|
||||
if (t_start>=t_insert):
|
||||
rho_ext = insert
|
||||
else:
|
||||
rho_ext = 0.0
|
||||
|
||||
# delay parameters
|
||||
d_terms = []
|
||||
derivs = [dydtMSRE(t0,y0,d0,rho_ext)]
|
||||
|
||||
# takes one step at a time and then accounts for delay terms
|
||||
i = 0
|
||||
while (t_start < t_stop):
|
||||
# take one step
|
||||
if (i == 0):
|
||||
t_start = t0
|
||||
r.set_initial_value(y0,t0).set_f_params(d0,0.0)
|
||||
r.integrate(1.0)
|
||||
sol.append(sol_interim[0])
|
||||
sol.append(sol_interim[1])
|
||||
else:
|
||||
t_start = sol[-1][0]
|
||||
if (t_start>=t_insert):
|
||||
rho_ext = insert
|
||||
else:
|
||||
rho_ext = 0.0
|
||||
r.set_initial_value(y_next,t_start).set_f_params(d_new,rho_ext)
|
||||
r.integrate(t_start+1.0)
|
||||
sol.append(sol_interim[1])
|
||||
derivs.append(dydtMSRE(t_start,y_next,d_new,rho_ext))
|
||||
|
||||
# account for delays, linear interpolation for time differences
|
||||
# core fuel inlet
|
||||
d_new = [0]*10
|
||||
idx_cf_in = 0
|
||||
dt_cf = 0.0
|
||||
if (t_start > tau_hx_c):
|
||||
idx_cf_in, dt_cf = get_tIdx(t_start,tau_hx_c,[s[0] for s in sol])
|
||||
d_new[3] = sol[idx_cf_in][6] + dt_cf*derivs[idx_cf_in][5]
|
||||
|
||||
# heat exchanger fuel inlet
|
||||
idx_hf_in = 0
|
||||
dt_hf = 0.0
|
||||
if (t_start > tau_c_hx):
|
||||
idx_hf_in, dt_hf = get_tIdx(t_start,tau_c_hx,[s[0] for s in sol])
|
||||
d_new[2] = sol[idx_hf_in][22] + dt_hf*derivs[idx_hf_in][21]
|
||||
|
||||
# heat exchanger coolant inlet
|
||||
idx_hc_in = 0
|
||||
dt_hc = 0.0
|
||||
if (t_start > tau_r_hx):
|
||||
idx_hc_in, dt_hc = get_tIdx(t_start,tau_r_hx,[s[0] for s in sol])
|
||||
d_new[0] = sol[idx_hc_in][1] + dt_hc*derivs[idx_hc_in][0]
|
||||
|
||||
# radiator coolant inlet
|
||||
idx_rc_in = 0
|
||||
dt_rc = 0.0
|
||||
if (t_start > tau_hx_r):
|
||||
idx_rc_in, dt_rc = get_tIdx(t_start,tau_hx_r,[s[0] for s in sol])
|
||||
d_new[1] = sol[idx_rc_in][12] + dt_rc*derivs[idx_rc_in][11]
|
||||
|
||||
# precursors
|
||||
idx_c = 0
|
||||
dt_c = 0.0
|
||||
if (t_start > tau_l):
|
||||
idx_c, dt_c = get_tIdx(t_start,tau_l,[s[0] for s in sol])
|
||||
d_new[4] = sol[idx_c][14] + dt_c*derivs[idx_c][13]
|
||||
d_new[5] = sol[idx_c][15] + dt_c*derivs[idx_c][14]
|
||||
d_new[6] = sol[idx_c][16] + dt_c*derivs[idx_c][15]
|
||||
d_new[7] = sol[idx_c][17] + dt_c*derivs[idx_c][16]
|
||||
d_new[8] = sol[idx_c][18] + dt_c*derivs[idx_c][17]
|
||||
d_new[9] = sol[idx_c][19] + dt_c*derivs[idx_c][18]
|
||||
|
||||
d_terms.append(d_new)
|
||||
|
||||
# initial condiiton for next step
|
||||
y_next = sol[-1][1:]
|
||||
|
||||
# empty interim solution
|
||||
sol_interim = []
|
||||
|
||||
# display progress
|
||||
#print(f"{t_start}")
|
||||
|
||||
i += 1
|
||||
|
||||
# plot single parameter
|
||||
#of_interest = 13
|
||||
#ti = [s[0] for s in sol]
|
||||
#oi = [s[of_interest] for s in sol]
|
||||
#print(type(ti[0]))
|
||||
#plt.plot(ti,oi)
|
||||
#plt.show()
|
||||
|
||||
# check delay behavior
|
||||
# for i in range(len(sol)-1):
|
||||
# print(f"t: {sol[i][0]}, hf4: {sol[i][6]}, c1_delay: {d_terms[i][3]}")
|
||||
|
||||
# write output data
|
||||
output_filename = f"sim_out_{t_stop}_{P}"
|
||||
results = open(output_filename,'w+')
|
||||
for k in range(len(sol)):
|
||||
for col in range(len(sol[0])):
|
||||
results.write(f"{sol[k][col]} ")
|
||||
results.write("\n")
|
||||
|
||||
return None
|
||||
|
||||
main()
|
||||
234
dynamic_model/scipyODE_implementation/parameters.py
Normal file
|
|
@ -0,0 +1,234 @@
|
|||
import numpy as np
|
||||
import pandas as pd
|
||||
import math
|
||||
pi = math.pi
|
||||
|
||||
# Perturbations
|
||||
# SOURCE INSERTION
|
||||
# No source insertion
|
||||
sourcedata = np.array([0, 0, 0])
|
||||
sourcetime = np.array([0, 50, 100])
|
||||
# % 1 (n/no)/s for 10 seconds
|
||||
# sourcedata = np.array([0, 10, 0])
|
||||
# sourcetime = np.array([0, 10, 20])
|
||||
source = pd.Series(sourcedata, index=sourcetime)
|
||||
|
||||
# REACTIVITY INSERTION
|
||||
# No reactivity insertion
|
||||
simtime = 10
|
||||
reactdata = np.array([0, 5E-4])
|
||||
reacttime = np.array([0, 2500])
|
||||
# Periodic 60 PCM for 50 seconds
|
||||
# simtime = 500
|
||||
# periodic = np.array([[0, 0], [50, 6e-4], [100, 0], [150, -6e-4], [200, 0], [250, 6e-4], [300, 0], [350, -6e-4], [400, 0]])
|
||||
# reactdata = periodic[:, 1]
|
||||
# reacttime = periodic[:, 0]
|
||||
# Step up 60 pcm
|
||||
# simtime = 1000
|
||||
# reactdata = np.array([0, 6e-3])
|
||||
# reacttime = np.array([0, 300])
|
||||
# # Step down -60 pcm for 10 sec
|
||||
# simtime = 100
|
||||
# reactdata = np.array([0, -6e-4])
|
||||
# reacttime = np.array([0, 50])
|
||||
# # Pulse 600 pcm for 0.1 sec
|
||||
# simtime = 30
|
||||
# reactdata = np.array([0, 6e-3, 0])
|
||||
# reacttime = np.array([0, 10, 10.1])
|
||||
|
||||
react = pd.Series(reactdata, index=reacttime)
|
||||
|
||||
ts_max = 1e-1 # maximum timestep (s)
|
||||
|
||||
# NEUTRONICS DATA
|
||||
tau_l = 16.73 # ORNL-TM-0728 %16.44; % (s)
|
||||
tau_c = 8.46 # ORNL-TM-0728 %8.460; % (s)
|
||||
P = 8 # Thermal Power in MW ORNL-TM-1070, p.2
|
||||
n_frac0 = 1.0 # initial fractional neutron density n/n0 (n/cm^3/s)
|
||||
Lam = 2.400E-04 # mean generation time ORNL-TM-1070 p.15 U235
|
||||
# Lam = 4.0E-04; # mean generation time ORNL-TM-1070 p.15 U233
|
||||
lam = np.array([1.240E-02, 3.05E-02, 1.11E-01, 3.01E-01, 1.140E+00, 3.014E+00])
|
||||
beta = np.array([0.000223, 0.001457, 0.001307, 0.002628, 0.000766, 0.00023]) # U235
|
||||
# beta = np.array([0.00023, 0.00079, 0.00067, 0.00073, 0.00013, 0.00009]) # U233
|
||||
beta_t = np.sum(beta) # total delayed neutron fraction MSRE
|
||||
rho_0 = beta_t-sum(np.divide(beta,1+np.divide(1-np.exp(-lam*tau_l),lam*tau_c))) # reactivity change in going from stationary to circulating fuel
|
||||
C0 = beta / Lam * (1.0 / (lam - (np.exp(-lam * tau_l) - 1.0) / tau_c))
|
||||
|
||||
# Feedback co-efficients
|
||||
a_f = -8.71E-05 # U235 (drho/°C) fuel salt temperature-reactivity feedback coefficient ORNL-TM-1647 p.3 % -5.904E-05; % ORNL-TM-0728 p. 101 %
|
||||
a_g = -6.66E-05 # U235 (drho/°C) graphite temperature-reactivity feedback coefficient ORNL-TM-1647 p.3 % -6.624E-05; % ORNL-TM-0728 p.101
|
||||
|
||||
# CORE HEAT TRANSFER PARAMETERS
|
||||
# FUEL PARAMETERS - DONE
|
||||
vdot_f = 7.5708E-02 # ORNL-TM-0728 % 7.571e-2; % vol. flow rate (m^3/s) ORNL-TM-1647 p.3, ORNL-TM-0728 p.12
|
||||
rho_f = 2.14647E+03 # (partially enriched U-235)ORNL-TM-0728 p.8 2.243E+03; % (Th-U) density of fuel salt (kg/m^3) ORNL-TM-0728 p.8
|
||||
W_f = 1.623879934566580e+02 # 1.83085e+02;%vdot_f*rho_f; % 182.78; % calcd from m_dot*cp*delT=P; vdot_f*rho_f; % fuel flow rate (kg/s)
|
||||
# tau_f_c = tau_c; % ORNL-TM-0728 % 8.45; % transit time of fuel in core (s) ORNL-TM-1070 p.15, TDAMSRE p.5
|
||||
m_f = W_f * tau_c # fuel mass in core (kg)
|
||||
nn_f = 2 # number of fuel nodes in core model
|
||||
mn_f = m_f / nn_f # fuel mass per node (kg)
|
||||
# cp_f = 4.2*9/5; % (MJ/deg-C) total fuel heat capacity TDAMSRE p.5
|
||||
scp_f = 1.9665E-3 # specific heat capacity of fuel salt (MJ/kg-C) ORNL-TM-0728 p.8
|
||||
|
||||
# Core Upflow - DONE
|
||||
v_g = 1.95386 # graphite volume(m^3) ORNL-TM-0728 p. 101
|
||||
rho_g = 1.860E3 # graphite density (kg/m^3) ORNL-3812 p.77, ORNL-TM-0728 p.87
|
||||
m_g = v_g * rho_g # graphite mass (kg)
|
||||
cp_g = 3.6 * 9 / 5 # TDAMSRE p.5 graphite total heat capacity (MW-s/C) ORNL-TM-1647 p.3
|
||||
scp_g = 1.773E-3 # cp_g/m_g; % graphite specific heat capacity (MW-s/kg-C) ORNL-TM-1647 p.3
|
||||
mcp_g1 = m_g * scp_g # (mass of material x heat capacity of material) of graphite per lump (MW-s/°C)
|
||||
mcp_f1 = mn_f * scp_f # (mass of material x heat capacity of material) of fuel salt per lump (MW-s/°C)
|
||||
mcp_f2 = mn_f * scp_f # (mass of material x heat capacity of material) of fuel salt per lump (MW-s/°C)
|
||||
hA_fg = 0.02 * 9 / 5 # (fuel to graphite heat transfer coeff x heat transfer area) (MW/°C) ORNL-TM-1647 p.3, TDAMSRE p.5
|
||||
k_g = 0.07 # fraction of total power generated in the graphite ORNL-TM-0728 p.9
|
||||
k_1 = 0.5 # fraction of heat transferred from graphite which goes to the first fuel lump
|
||||
k_2 = 0.5 # fraction of heat transferred from graphite which goes to the second fuel lump
|
||||
k_f = 0.93 # fraction of heat generated in fuel - that generated in the external loop ORNL-TM-0728 p.9
|
||||
k_f1 = k_f / nn_f # fraction of total power generated in lump f1
|
||||
k_f2 = k_f / nn_f # fraction of total power generated in lump f2
|
||||
|
||||
# New node for power deposited in fuel outside the core
|
||||
k_out = 1 - (k_g + k_f) # fraction of power generated in fuel in external loop ORNL-TM-0728 p.9
|
||||
m_out = W_f # (kg) Mass of node such that resident time is 1 sec (W_f needs to be defined)
|
||||
|
||||
# Initial conditions - DONE
|
||||
Tf_in = 6.3222E+02 # in °C ORNL-TM-1647 p.2
|
||||
T0_f2 = 6.5727E+02 # 6.5444E+02; % in °C 6.461904761904777e+02; ORNL-TM-1647 p.2
|
||||
T0_f1 = Tf_in + (T0_f2 - Tf_in) / 2 # 6.405952380952389e+02; in °C
|
||||
T0_g1 = T0_f1 + (k_g * P / hA_fg) # 6.589285714285924e+02; in °C
|
||||
# T0_out = k_out * P / m_out / scp_f + T0_f2 # in °C (scp_f needs to be defined)
|
||||
|
||||
|
||||
# Heat Exchanger - DONE
|
||||
# Geometry
|
||||
d_he = 16 # (in) he diameter ORNL-TM-0728 p. 164
|
||||
h_he = 72 # (in) active height % 96; %(in) he height ORNL-TM-0728 p. 164
|
||||
od_tube = 0.5 # (in) coolant tube OD ORNL-TM-0728 p. 164
|
||||
id_tube = od_tube - 2 * 0.042 # (in) coolant tube ID ORNL-TM-0728 p. 164
|
||||
n_tube = 159 # number of coolant tubes ORNL-TM-0728 p. 164
|
||||
a_tube = 254 * 144 # (in^2) total area of tubes ORNL-TM-0728 p. 164
|
||||
l_tube = a_tube / n_tube / (np.pi * od_tube) # (in) tube length
|
||||
v_tube = n_tube * np.pi * (od_tube / 2) ** 2 * l_tube # (in^3) hx shell volume occupied by tubes
|
||||
v_cool = n_tube * np.pi * (id_tube / 2) ** 2 * l_tube # (in^3) hx volume occupied by coolant
|
||||
v_he = (d_he / 2) ** 2 * np.pi * h_he # (in^3) volume of heat exchanger shell
|
||||
v_he_fuel = v_he - v_tube # (in^3) volume available to fuel in shell
|
||||
|
||||
# Unit conversions
|
||||
in_m = 1.63871e-5 # 1 cubic inch = 1.63871e-5 cubic meters
|
||||
|
||||
# PRIMARY FLOW PARAMETERS - DONE
|
||||
W_p = W_f # fuel flow rate (kg/s)
|
||||
|
||||
m_p = v_he_fuel * in_m * rho_f # fuel mass in PHE (kg)
|
||||
nn_p = 4 # number of fuel nodes in PHE
|
||||
mn_p = m_p / nn_p # fuel mass per node (kg)
|
||||
cp_p = scp_f # fuel heat capacity (MJ/(kg-C))
|
||||
|
||||
# SECONDARY FLOW PARAMETERS - DONE
|
||||
vdot_s = 5.36265E-02 # ORNL-TM-0728 p. 164 % 5.236E-02; % coolant volume flow rate (m^3/s) ORNL-TM-1647 p.3
|
||||
rho_s = 1.922e3 # coolant salt density (kg/m^3) ORNL-TM-0728 p.8
|
||||
W_s = 1.005793369810108e+02 # vdot_s*rho_s; % calcd from mdot*cp*delT; vdot_s*rho_s; % coolant flow rate (kg/s) ORNL-TM-1647 p.3
|
||||
|
||||
m_s = v_cool * in_m * rho_s # coolant mass in PHE (kg)
|
||||
nn_s = 4 # number of coolant nodes in PHE
|
||||
mn_s = m_s / nn_s # coolant mass per node (kg)
|
||||
scp_s = 2.39E-3 # cp_s/m_s; % specific heat capacity of coolant (MJ/(kg-C) ORNL-TM-0728 p.8
|
||||
|
||||
A_phe = 2.359E+01 # effective area for heat transfer (primary and secondary, m^2) ORNL-TM-0728 p.164
|
||||
|
||||
ha_p = 6.480E-01 # heat transfer*area coefficient from primary to tubes (MW/C) ORNL-TM-1647 p.3
|
||||
ha_s = 3.060E-01 # heat transfer*area coefficient from tubes to secondary (MW/C) ORNL-TM-1647 p.3
|
||||
|
||||
# Primary Side
|
||||
mcp_pn = mn_p * cp_p # (mass of material x heat capacity of material) of fuel salt per lump in MW-s/°C
|
||||
hA_pn = ha_p / nn_s # 3.030; % (primary to tube heat transfer coeff x heat transfer area) in MW/°C
|
||||
|
||||
# Tubes - DONE
|
||||
nn_t = 2 # number of nodes of tubes in the model
|
||||
rho_tube = 8.7745E+03 # (kg/m^3) density of INOR-8 ORNL-TM-0728 p.20
|
||||
m_tn = (v_tube - v_cool) * in_m * rho_tube / nn_t # mass of tubes (kg)
|
||||
scp_t = 5.778E-04 # specific heat capacity of tubes (MJ/(kg-C)) ORNL-TM-0728 p.20
|
||||
mcp_tn = m_tn * scp_t # mass*(heat capacity) of tubes per lump in MW-s/°C
|
||||
|
||||
# Secondary Side - DONE
|
||||
mcp_sn = mn_s * scp_s # (mass of material x heat capacity of material) of coolant salt per lump in MW-s/°C
|
||||
hA_sn = ha_s / nn_s # (tube to secondary heat transfer coeff x heat transfer area) in MW/°C
|
||||
|
||||
# Initial conditions - DONE
|
||||
# Primary nodes
|
||||
Tp_in = T0_f2 # in °C ORNL-TM-1647 p.2
|
||||
T0_p4 = Tf_in # 6.5444E+02; % in °C 6.461904761904777e+02; ORNL-TM-1647 p.2
|
||||
T0_p1 = Tp_in + (T0_p4 - Tp_in) / 4 # in °C
|
||||
T0_p2 = Tp_in + 2 * (T0_p4 - Tp_in) / 4 # in °C
|
||||
T0_p3 = Tp_in + 3 * (T0_p4 - Tp_in) / 4 # in °C
|
||||
|
||||
# Secondary nodes
|
||||
Ts_in = 5.4611E+02 # in °C ORNL-TM-1647 p.2
|
||||
T0_s4 = 5.7939E+02 # in °C ORNL-TM-1647 p.2
|
||||
T0_s1 = Ts_in + (T0_s4 - Ts_in) / nn_s # in °C
|
||||
T0_s2 = Ts_in + 2 * (T0_s4 - Ts_in) / nn_s # in °C
|
||||
T0_s3 = Ts_in + 3 * (T0_s4 - Ts_in) / nn_s # in °C
|
||||
# Tube nodes
|
||||
T0_t1 = (T0_p1 * hA_pn + T0_s3 * hA_sn) / (hA_pn + hA_sn) # in °C
|
||||
T0_t2 = (T0_p3 * hA_pn + T0_s1 * hA_sn) / (hA_pn + hA_sn) # in °C
|
||||
|
||||
# Radiator Parameters - DONE
|
||||
|
||||
# Initial conditions - DONE
|
||||
# Primary nodes
|
||||
Trp_in = T0_s4 # 5.933E+02; % in °C ORNL-TM-1647 p.2
|
||||
T0_rp = Ts_in # in °C ORNL-TM-1647 p.2
|
||||
|
||||
# Secondary nodes - DONE
|
||||
Trs_in = 37.78 # (C) air inlet temperature ORNL-TM-1647 p.2
|
||||
T0_rs = 148.9 # (C) air exit temperature ORNL-TM-1647 p.2
|
||||
|
||||
# Radiator Geometry
|
||||
od_rad = 0.01905 # (m) outer diameter of tubes in the radiator ORNL-TM-0728 p.296
|
||||
tube_wall_thick = 0.0018288 # (m) thickness of tubes in the radiator ORNL-TM-0728 p.296
|
||||
id_rad = od_rad - 2 * tube_wall_thick
|
||||
n_rtubes = 120 # number of tubes in the radiator (rows times tubes per row) ORNL-TM-0728 p.296
|
||||
l_rtube = 9.144 # (m) length of tubes in the radiator ORNL-TM-0728 p.296
|
||||
v_rp = pi * (id_rad / 2) ** 2 * l_rtube * n_rtubes # volume available to salt in the radiator
|
||||
# v_rtube = pi * (od_rad / 2) ** 2 * l_rtube * n_rtubes - v_rp # volume of metal in radiator tubes *TUBES NOT MODELED
|
||||
|
||||
n_tpr = 12 # number of tubes per row in the radiator matrix
|
||||
n_row = 10 # number rows in the radiator matrix
|
||||
tube_space = 0.0381 # (m) spacing between tubes and rows of matrix
|
||||
v_rs = (n_row * od_rad + (n_row - 1) * tube_space) * (n_tpr * od_rad + (n_tpr - 1) * tube_space) * l_rtube # volume of air inside radiator
|
||||
|
||||
# PRIMARY FLOW PARAMETERS - DONE
|
||||
W_rp = W_s # coolant salt flow rate (kg/s)
|
||||
m_rp = v_rp * rho_s # coolant salt mass in rad (kg)
|
||||
nn_rp = 1 # number of coolant salt nodes in the radiator
|
||||
mn_rp = m_rp / nn_rp # coolant mass per node (kg)
|
||||
cp_rp = scp_s # coolant specific heat capacity (MJ/(kg-C))
|
||||
|
||||
# SECONDARY FLOW PARAMETERS - DONE
|
||||
vdot_rs = 94.389 # ORNL-TM-0728 p. 296; 78.82; % air volume flow rate (m^3/s) ORNL-TM-1647 p.2
|
||||
rho_rs = 1.1237 # air density (kg/m^3) REFPROP (310K and 0.1MPa)
|
||||
W_rs = vdot_rs * rho_rs # air flow rate (kg/s)
|
||||
|
||||
m_rs = v_rs * rho_rs # coolant air mass in rad (kg)
|
||||
nn_rs = 1 # number of coolant nodes in rad
|
||||
mn_rs = m_rs / nn_rs # coolant mass per node (kg)
|
||||
scp_rs = 1.0085E-3 # (MJ/kg-C) specific heat capacity of air at (air_out+air_in)/2 REFPROP
|
||||
|
||||
A_rad = 6.503E1 # (m^2) surface area of the radiator ORNL-TM-0728 p.14
|
||||
h_roverall = P / A_rad / ((T0_rp + Trp_in) / 2 - (T0_rs + Trs_in) / 2) # cald as: P/A_rad/((T0_rp+Trp_in)/2-(T0_rs+Trs_in)/2) 3.168E-4; % (MW/m^2-C) polimi thesis
|
||||
|
||||
# Primary Side
|
||||
mcp_rpn = mn_rp * cp_rp # (mass of material x heat capacity of material) of fuel salt per lump in MW-s/°C
|
||||
hA_rpn = h_roverall * A_rad / nn_rs # 3.030; % (primary to secondary heat transfer coeff x heat transfer area) in MW/°C
|
||||
|
||||
# Secondary Side - DONE
|
||||
mcp_rsn = mn_rs * scp_rs # (mass of material x heat capacity of material) of coolant salt per lump in MW-s/°C
|
||||
hA_rsn = h_roverall * A_rad / nn_rs # (tube to secondary heat transfer coeff x heat transfer area) in MW/°C
|
||||
|
||||
# Pure time delays between components - DONE
|
||||
tau_hx_c = 8.67 # (sec) delay from hx to core TDAMSRE p.6
|
||||
tau_c_hx = 3.77 # (sec) subtracted 1 sec for external loop power generation node resident time; delay from core to fuel hx TDAMSRE p.6
|
||||
tau_hx_r = 4.71 # (sec) fertile hx to core TDAMSRE p.6
|
||||
tau_r_hx = 8.24 # (sec) core to fertile hx TDAMSRE p.6
|
||||
|
||||
first_val = (rho_0 - beta_t) * n_frac0 / Lam + lam[0] * C0[0] + lam[1] * C0[1] + lam[2] * C0[2] + lam[3] * C0[3] + lam[4] * C0[4] + lam[5] * C0[5]
|
||||
94
dynamic_model/scipyODE_implementation/plot_results.py
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
import matplotlib.pyplot as plt
|
||||
from parameters import *
|
||||
|
||||
# 1: radiatior coolant inlet temp
|
||||
# 2: radiator coolant outlet temp
|
||||
# 3: radiator air outlet temp
|
||||
# 4: heat exchanger fuel inlet temp
|
||||
# 5: heat exchanger fuel node 1 temp
|
||||
# 6: heat exchanger fuel node 2 temp
|
||||
# 7: heat exchanger fuel node 3 temp
|
||||
# 8: heat exchanger fuel node 4 temp
|
||||
# 9: heat exchanger tube node 1 temp
|
||||
# 10: heat exchanger tube node 2 temp
|
||||
# 11: heat exchanger coolant inlet temp
|
||||
# 12: heat exchanger coolant node 1
|
||||
# 13: heat exchanger coolant node 2
|
||||
# 14: heat exchanger coolant node 3
|
||||
# 15: heat exchanger coolant node 4
|
||||
# 16: core fuel inlet temp
|
||||
# 17: k
|
||||
# 18: C1
|
||||
# 19: C2
|
||||
# 20: C3
|
||||
# 21: C4
|
||||
# 22: C5
|
||||
# 23: C6
|
||||
# 24: core graphite temp
|
||||
# 25: core fuel node 1 temp
|
||||
# 26: core fuel node 2 temp
|
||||
|
||||
filename1 = "sim_out_1000.0_1.txt"
|
||||
filename5 = "sim_out_1000.0_5.txt"
|
||||
filename8 = "sim_out_1000.0_8.txt"
|
||||
|
||||
sol1 = []
|
||||
k_file = open(filename1, 'r')
|
||||
for k in k_file.readlines():
|
||||
sol1.append(k.split())
|
||||
k_file.close()
|
||||
|
||||
sol5 = []
|
||||
k_file = open(filename5, 'r')
|
||||
for k in k_file.readlines():
|
||||
sol5.append(k.split())
|
||||
k_file.close()
|
||||
|
||||
sol8 = []
|
||||
k_file = open(filename8, 'r')
|
||||
for k in k_file.readlines():
|
||||
sol8.append(k.split())
|
||||
k_file.close()
|
||||
|
||||
sol1 = [[float(j) for j in s] for s in sol1]
|
||||
sol5 = [[float(j) for j in s] for s in sol5]
|
||||
sol8 = [[float(j) for j in s] for s in sol8]
|
||||
|
||||
k = 10000
|
||||
test_pow1 = [(1*s[13]-1) for s in sol1]
|
||||
test_pow5 = [(5*s[13]-5) for s in sol5]
|
||||
test_pow8 = [(8*s[13]-8) for s in sol8]
|
||||
tidx1 = [t[0] for t in enumerate(sol1) if (t[1][0] >= 500.00 and t[1][0] <= 800.00)]
|
||||
tidx5 = [t[0] for t in enumerate(sol5) if (t[1][0] >= 500.00 and t[1][0] <= 800.00)]
|
||||
tidx8 = [t[0] for t in enumerate(sol8) if (t[1][0] >= 500.00 and t[1][0] <= 800.00)]
|
||||
t1 = [s[0] for s in sol1[tidx1[0]:tidx1[-1]]]
|
||||
t5 = [s[0] for s in sol5[tidx5[0]:tidx5[-1]]]
|
||||
t8 = [s[0] for s in sol8[tidx8[0]:tidx8[-1]]]
|
||||
|
||||
# Create a figure and a 3x1 grid of subplots
|
||||
fig, axs = plt.subplots(3, 1, figsize=(6, 12))
|
||||
|
||||
# Plot data on the first subplot
|
||||
axs[0].plot(t1, test_pow1[tidx1[0]:tidx1[-1]])
|
||||
axs[0].set_title('1 MW')
|
||||
#axs[0].set_xlabel('x')
|
||||
axs[0].set_ylabel('dP')
|
||||
axs[0].set_xticklabels([])
|
||||
axs[0].set_xticks([])
|
||||
|
||||
# Plot data on the second subplot
|
||||
axs[1].plot(t5, test_pow5[tidx5[0]:tidx5[-1]])
|
||||
axs[1].set_title('5 MW')
|
||||
#axs[1].set_xlabel('x')
|
||||
axs[1].set_ylabel('dP')
|
||||
axs[1].set_xticklabels([])
|
||||
axs[1].set_xticks([])
|
||||
|
||||
# Plot data on the third subplot
|
||||
axs[2].plot(t8, test_pow8[tidx8[0]:tidx8[-1]])
|
||||
axs[2].set_title('8 MW')
|
||||
axs[2].set_xlabel('x')
|
||||
axs[2].set_ylabel('dP')
|
||||
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
1
h5m/.gitattributes
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
*.h5m filter=lfs diff=lfs merge=lfs -text
|
||||
BIN
h5m/msre_control_rod.h5m
(Stored with Git LFS)
Normal file
BIN
h5m/msre_full.h5m
(Stored with Git LFS)
Normal file
23
heatexchanger/hx.md
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
|
||||
### msre primary heat exchanger
|
||||

|
||||
|
||||
[onshape primary heat exchanger cad model](https://cad.onshape.com/documents/03be2f510296a2e264886390/w/8cfbca3b7b9682dd4e53a998/e/54728fd981a1b4f5594c73d6), open to copy and use freely. chapter 4.1 in the [thesis](https://ltu.diva-portal.org/smash/get/diva2:1546993/FULLTEXT01.pdf) mentioned above covers the cad construction details extensively with references to original msre reports.
|
||||
|
||||

|
||||
|
||||
[simscale primary heat exchanger simulation model](https://www.simscale.com/projects/MalcolmAkner/phex_-_final_version/). simulation results for primary heat exchanger can be viewed in chapter 6.2.2.1 of the [thesis](https://ltu.diva-portal.org/smash/get/diva2:1546993/FULLTEXT01.pdf), with comparisons to msre data in chapter 7.1.1.
|
||||
|
||||

|
||||
|
||||
primary heat exchanger produced and installed in the msre.
|
||||
|
||||
|
||||
### msre radiator
|
||||

|
||||
|
||||
[onshape radiator cad model](https://cad.onshape.com/documents/bf944323ed6a82e05924078c/w/2a25d73c5a3a66824d2d5fbd/e/a83d5535602a053216fedff4) open to copy and use freely. chapter 4.2 of the [thesis](https://ltu.diva-portal.org/smash/get/diva2:1546993/FULLTEXT01.pdf) covers the cad construction details with origianl references to msre reports.
|
||||
|
||||

|
||||
|
||||
radiator produced and installed in the msre.
|
||||
4
msre_docker/.gitattributes
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
msre_simple.h5m filter=lfs diff=lfs merge=lfs -text
|
||||
dagmc_controlrods.h5m filter=lfs diff=lfs merge=lfs -text
|
||||
msre_control_in.h5m filter=lfs diff=lfs merge=lfs -text
|
||||
msre_control_out.h5m filter=lfs diff=lfs merge=lfs -text
|
||||
1
msre_docker/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
notebooks/
|
||||
BIN
msre_docker/.images/Debian.png
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
BIN
msre_docker/.images/WSL_2.png
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
msre_docker/.images/chmod.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
msre_docker/.images/cmd_prompt_pull.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
msre_docker/.images/cont_run_log_and_URL.png
Normal file
|
After Width: | Height: | Size: 110 KiB |
BIN
msre_docker/.images/container_opts_annotated.png
Normal file
|
After Width: | Height: | Size: 87 KiB |
BIN
msre_docker/.images/docker_2.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
msre_docker/.images/image_dld_and_run_button.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
msre_docker/.images/wget.png
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
59
msre_docker/Dockerfile
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
FROM debian:11
|
||||
|
||||
ARG compile_cores=8
|
||||
|
||||
#update system
|
||||
RUN apt-get --allow-releaseinfo-change update
|
||||
RUN DEBIAN_FRONTEND=noninteractive && apt-get --yes update && apt-get --yes upgrade
|
||||
RUN DEBIAN_FRONTEND=noninteractive && apt-get --yes install git sudo bash wget apt-utils xz-utils python3 python3-pip
|
||||
|
||||
#RUN git clone git@github.com:openmsr/openmc_install_scripts
|
||||
|
||||
RUN groupadd -g 1000 usr
|
||||
RUN useradd -rm -u 1000 usr -G sudo -g usr -s /bin/bash \
|
||||
&& sed -i '/%sudo.*ALL/a %sudo ALL=(ALL) NOPASSWD: ALL' /etc/sudoers
|
||||
USER usr
|
||||
WORKDIR /home/usr
|
||||
|
||||
#clone the install scripts and run them
|
||||
#RUN git clone git@github.com:openmsr/openmc_install_scripts.git
|
||||
#this is done step by step to avoid invalidating the docker cache.
|
||||
COPY openmc_install_scripts/Debian11/nuclear_data-install.sh .
|
||||
RUN ./nuclear_data-install.sh
|
||||
|
||||
COPY openmc_install_scripts/Debian11/embree-install.sh .
|
||||
RUN ./embree-install.sh "$compile_cores"
|
||||
|
||||
COPY openmc_install_scripts/Debian11/moab-install.sh .
|
||||
RUN ./moab-install.sh "$compile_cores"
|
||||
|
||||
COPY openmc_install_scripts/Debian11/double_down-install.sh .
|
||||
RUN ./double_down-install.sh "$compile_cores"
|
||||
|
||||
COPY openmc_install_scripts/Debian11/dagmc-install.sh .
|
||||
RUN DEBIAN_FRONTEND=noninteractive && ./dagmc-install.sh "$compile_cores"
|
||||
|
||||
COPY openmc_install_scripts/Debian11/openmc-install.sh .
|
||||
RUN DEBIAN_FRONTEND=noninteractive && ./openmc-install.sh "$compile_cores"
|
||||
|
||||
#clean up a bit
|
||||
RUN rm *-install.sh
|
||||
RUN rm *-install.sh.done
|
||||
RUN rm $HOME/openmc/nuclear_data/*.xz
|
||||
RUN rm $HOME/openmc/nuclear_data/*-install.sh.done
|
||||
|
||||
RUN sudo pip install --no-cache-dir requests jupyterlab
|
||||
|
||||
#Here should be added COPYING in MSRE-data directories - probably needs meshes and h5m-files as well
|
||||
#include neither cubit nor onshape can be distributed like this.
|
||||
RUN mkdir msre
|
||||
COPY msre_simple.h5m msre/
|
||||
COPY msre_control*.h5m msre/
|
||||
#COPY msre_*.py msre/
|
||||
RUN mkdir example_notebooks
|
||||
COPY MSRE.ipynb example_notebooks/
|
||||
ENV OPENMC_CROSS_SECTIONS=/home/usr/openmc/nuclear_data/mcnp_endfb71/cross_sections.xml
|
||||
|
||||
#we are now ready to run the msre
|
||||
EXPOSE 8888
|
||||
ENTRYPOINT ["jupyter","lab","--ip=0.0.0.0","--allow-root"]
|
||||
632
msre_docker/MSRE.ipynb
Normal file
|
|
@ -0,0 +1,632 @@
|
|||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "a28f447d-a699-4495-bf71-bace1a4c0833",
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"# Notebook for running MSRE calculations directly from a CAD drawing\n",
|
||||
"This notebook show an example of running computations of a model of the Moten Salt Reactor Experiment of MSRE in short.\n",
|
||||
"The model itself has been generated from tehe original drawings from Oak Ridge National lab \n",
|
||||
"\n",
|
||||
"The CAD-model is available on github at https://github.com/openmsr/msre, which in turn is generated from a long list of documents which have been compiled at https://github.com/openmsr/msr-archive\n",
|
||||
"\n",
|
||||
"The simulation backend is run using the Open Source Monte Carlo particle transport code OpenMC (https://openmc.org), through its' python interface.\n",
|
||||
"\n",
|
||||
"**Important: If you want your work to be available after you shutdown the docker, you must copy your notebooks to a location mounted on your local machine.**\n",
|
||||
"\n",
|
||||
"If you started the docker using the supplied ```run_docker.sh```-script, the ```notebooks```-directory has been mounted like this."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "fb624881-ed0a-4962-b528-fb1ee5141f35",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## The (obvious) 1st step is to import the OpenMC python interface"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "85306562-ad94-4072-9cd4-1734fc7b0ab0",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import openmc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "51730852-f7a5-4491-8b1d-de7609dce96f",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Next we define a set of materials objects that form the core of the MSRE, graphite, hastelloy N / inor-8, inconel, the fuel salt, and helium. Lastly these are exported to am OpenMC-xml control file."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "6df036db-7b00-4a73-a4e0-dd9a407d7395",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"graphite=openmc.Material(name='graphite')\n",
|
||||
"graphite.add_element('C',1.0,'ao')\n",
|
||||
"graphite.set_density('g/cc',2.26)\n",
|
||||
"\n",
|
||||
"#Hastelloy N / INOR-8 nominal material composition from\n",
|
||||
"#ORNL-TM-4189\n",
|
||||
"inor=openmc.Material(name='inor')\n",
|
||||
"inor.add_element('Ni',0.72)\n",
|
||||
"inor.add_element('Mo',0.16)\n",
|
||||
"inor.add_element('Cr',0.07)\n",
|
||||
"inor.add_element('Fe',0.05)\n",
|
||||
"inor.set_density('g/cc',9)\n",
|
||||
"\n",
|
||||
"# LiF,BeF2,UF4,ZrF4 [0.67,0.23,0.05,0.0079] mol % @ 33% enrichment \n",
|
||||
"molar_comp={'LiF':0.67,'BeF2':0.23, 'ZrF4':0.05, 'UF4':0.0079}\n",
|
||||
"enrichment=0.3333\n",
|
||||
"salt=openmc.Material(name='salt')\n",
|
||||
"salt.add_element('F',molar_comp['LiF']*1/2+molar_comp['BeF2']*2/3+molar_comp['ZrF4']*4/5+molar_comp['UF4']*4/5,'ao')\n",
|
||||
"salt.add_nuclide('Li7',molar_comp['LiF']*1/2,'ao')\n",
|
||||
"salt.add_element('Be',molar_comp['BeF2']*1/3,'ao')\n",
|
||||
"salt.add_element('Zr',molar_comp['ZrF4']*1/5,'ao')\n",
|
||||
"salt.add_nuclide('U235',enrichment*molar_comp['UF4']*1/5,'ao')\n",
|
||||
"salt.add_nuclide('U238',(1-enrichment)*molar_comp['UF4']*1/5,'ao')\n",
|
||||
"salt.set_density('g/cc',2.2)\n",
|
||||
"\n",
|
||||
"# The natural isotopes have been used for this alloy\n",
|
||||
"# The density is set to that of Ni.\n",
|
||||
"inconel=openmc.Material(name='inconel')\n",
|
||||
"inconel.add_element('Ni',0.72,'ao')\n",
|
||||
"inconel.add_element('Cr',0.20,'ao')\n",
|
||||
"inconel.add_element('Fe',0.08,'ao')\n",
|
||||
"inconel.set_density('g/cc',8.9)\n",
|
||||
"\n",
|
||||
"helium=openmc.Material(name='helium')\n",
|
||||
"helium.add_nuclide('He4',1.0,'ao')\n",
|
||||
"helium.set_density('g/cc',1.0e-4)\n",
|
||||
"\n",
|
||||
"materials=openmc.Materials([helium,salt,graphite,inconel,inor])\n",
|
||||
"materials.export_to_xml()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "3e21759c-4d3f-44f4-8b61-eb1a519d7d68",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"As a control we can inspect the materials object. Notice how OpenMC has in the revant cases expanded our material definition to consist the naturally occurring isotope concentrations."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "82b7ea1e-28d6-450d-9bad-e5f5262c5272",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"materials"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "1a5f8f08-ec15-4ab4-b091-c3e0b2147490",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#geometry\n",
|
||||
"h5m_filepath=\"../msre/msre_simple.h5m\"\n",
|
||||
"dag_univ = openmc.DAGMCUniverse(h5m_filepath)\n",
|
||||
"geom = openmc.Geometry(root=dag_univ)\n",
|
||||
"geom.export_to_xml()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "be73fe16-ea81-4efa-939f-3934bc5b77bc",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"We can now plot our geometry to verify that this is in fact the geometry we want. We plot two slices (xz and xy) through the centre of the MSRE core, and color the geometry by constituent material."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "dde16460-008e-4e6f-ac81-32e82dd066d4",
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"xwidth = 350\n",
|
||||
"yheight = 350\n",
|
||||
"material_colors={salt:'red', inor:'lightblue', inconel:'blue',helium:'white',graphite:'gray'}\n",
|
||||
"#xz plot\n",
|
||||
"p1 = openmc.Plot()\n",
|
||||
"p1.background='white'\n",
|
||||
"p1.basis = 'xz'\n",
|
||||
"p1.width = (xwidth,yheight)\n",
|
||||
"p1.origin=(0,0,125)\n",
|
||||
"p1.pixels = (800, 800)\n",
|
||||
"p1.color_by = 'material'\n",
|
||||
"p1.colors=material_colors\n",
|
||||
"#xy plot\n",
|
||||
"p2 = openmc.Plot()\n",
|
||||
"p2.background='white'\n",
|
||||
"p2.basis='xy'\n",
|
||||
"p2.width=(xwidth, yheight)\n",
|
||||
"p2.pixels = (800,800)\n",
|
||||
"p2.origin=(0,0,100)\n",
|
||||
"p2.color_by='material'\n",
|
||||
"p2.colors=material_colors\n",
|
||||
"\n",
|
||||
"plots=openmc.Plots([p1,p2])\n",
|
||||
"openmc.plot_inline(plots)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "8d02c4c6-2f47-44ac-989c-1ecaf9441450",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Now we need to define som settings for our calculations.\n",
|
||||
"\n",
|
||||
"First of all - we need to some neutrons to kick-start or chain reaction. In OpenMC this is doen by defining a source region. Here this is simply defined as being a region that encloses the MSRE core.\n",
|
||||
"\n",
|
||||
"Next we define some settings for the Monte Carlo-computation, such as how many particles we would initially run with. \n",
|
||||
"\n",
|
||||
"After the members of the settings python object have been filled to our desires, we export this to a settings xml-file"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "6a17a765-10dd-4666-9f66-2d7f7931bb3e",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Create a neutron source for kick-starting\n",
|
||||
"source_volume=openmc.stats.Box([-125,-125,0],[125,125,500], only_fissionable=True)\n",
|
||||
"source = openmc.Source(space=source_volume)\n",
|
||||
"source.angle=openmc.stats.Isotropic()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "ee524ba8-d65f-48ab-8024-e05f3409a6ef",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#Finally we build a settings object for OpenMC where we define parameters for the run.\n",
|
||||
"settings = openmc.Settings()\n",
|
||||
"settings.source = source\n",
|
||||
"settings.batches = 20\n",
|
||||
"settings.inactive = 5\n",
|
||||
"settings.particles = 20000\n",
|
||||
"settings.export_to_xml()\n",
|
||||
"\n",
|
||||
"openmc.run()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "dfadbeb7-077b-42c6-8714-c92829536998",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Now that we have a running model let's try to do some more useful work with and extract some data from the model. To do this we need to specify what information we want to extract before \n",
|
||||
"starting simulations. In many Monte Carlo particle transport codes, we add objects known as tallies to our models. In this respect OpenMC is no different.\n",
|
||||
"\n",
|
||||
"We will add tallies to monitor the neutron flux, and the fission sites in volumes along the geomtrical slices through our reactor that we plotted earlier.\n",
|
||||
"\n",
|
||||
"A tally needs to know what to measure and where to measure that. In OpenMC the \"where\" is known as a filter and the \"what\" is known as a score.\n",
|
||||
"In or case we'd like to spatially resolve the flux so we first generate mesh object as filters and then add that to tally objects. In addtion we assign a list of scores to the score-member of the tallies. Lastly (as always) we export this to an xml-file which will be read by OpenMC."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "3383b0ba-4cec-4733-a271-a032079d0b00",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"mesh1=openmc.RegularMesh()\n",
|
||||
"mesh1.dimension = [400,400,1]\n",
|
||||
"mesh1.lower_left = [-125, -125, 90]\n",
|
||||
"mesh1.upper_right = [125, 125, 110]\n",
|
||||
"mesh1_filter = openmc.MeshFilter(mesh1)\n",
|
||||
"\n",
|
||||
"mesh2=openmc.RegularMesh()\n",
|
||||
"mesh2.dimension = [400,1,400]\n",
|
||||
"mesh2.lower_left = [-175, -10, -50]\n",
|
||||
"mesh2.upper_right = [175, 10, 400]\n",
|
||||
"mesh2_filter = openmc.MeshFilter(mesh2)\n",
|
||||
"\n",
|
||||
"t1 = openmc.Tally(name='flux1')\n",
|
||||
"t1.filters =[mesh1_filter]\n",
|
||||
"t1.scores = ['flux','fission']\n",
|
||||
"\n",
|
||||
"t2 = openmc.Tally(name='flux2')\n",
|
||||
"t2.filters =[mesh2_filter]\n",
|
||||
"t2.scores = ['flux','fission']\n",
|
||||
"\n",
|
||||
"tallies=openmc.Tallies([t1,t2])\n",
|
||||
"tallies.export_to_xml()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "e62c1ebc-75bf-44eb-8dde-90fef06e0030",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"We have to re-run our simulation after generating the ```tallies.xml``` file.\n",
|
||||
"\n",
|
||||
"Note that we forcibly remove the _old_ datafiles first."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "4e624e13-f734-4e58-9307-f3b4d56151a1",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import os\n",
|
||||
"os.system(\"rm -f summary.h5 statepoint.20.h5\")\n",
|
||||
"openmc.run()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "430aff88-5238-4a68-8d7a-2d0de99eb77d",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"After the run has finished the data we are after resides in the \"statepoint\" file that OpenMC saves.\n",
|
||||
"In the below code, we will open that and extract the mean values for neutron flux."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "d7bebead-b04a-4a38-8802-0d01239e2c57",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"sp=openmc.StatePoint('statepoint.20.h5')\n",
|
||||
"\n",
|
||||
"tl1=sp.get_tally(name='flux1')\n",
|
||||
"tl2=sp.get_tally(name='flux2')\n",
|
||||
"\n",
|
||||
"flux1=tl1.get_slice(scores=['flux'])\n",
|
||||
"flux2=tl2.get_slice(scores=['flux'])\n",
|
||||
"\n",
|
||||
"flux1.mean.shape=(400,400)\n",
|
||||
"flux2.mean.shape=(400,400)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "8205bf93-0351-458e-9d44-f8b43b0509ac",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The last 2 lines are necessary to reshape the flux maps into a 400x400 grid.\n",
|
||||
"\n",
|
||||
"In the end we plot the maps using matplotlib"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "84b1be81-188c-467a-9da5-74e7054792d4",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy as np\n",
|
||||
"fig,(ax1,ax2)=plt.subplots(ncols=2,figsize=(20,16), constrained_layout=True)\n",
|
||||
"\n",
|
||||
"ax1.set_xticks(np.arange(0,401,399/4))\n",
|
||||
"ax1.set_xticklabels(np.arange(-175,176,350./4))\n",
|
||||
"ax2.set_xticks(np.arange(0,400,399/4))\n",
|
||||
"ax2.set_xticklabels(np.arange(-175,176,350./4))\n",
|
||||
"ax1.set_yticks(np.arange(0,400,399/4))\n",
|
||||
"ax1.set_yticklabels(np.arange(-175,176,350./4))\n",
|
||||
"ax2.set_yticks(np.arange(0,400,399/4))\n",
|
||||
"ax2.set_yticklabels(np.arange(-175,176,350./4))\n",
|
||||
"ax1.set_xlabel('X / cm')\n",
|
||||
"ax1.set_ylabel('Y / cm')\n",
|
||||
"\n",
|
||||
"ax2.set_xlabel('X / cm')\n",
|
||||
"ax2.set_ylabel('Z / cm')\n",
|
||||
"im1=ax1.imshow(flux1.mean)\n",
|
||||
"fig.colorbar(im1,ax=ax1,shrink=0.4)\n",
|
||||
"im2=ax2.imshow(flux2.mean)\n",
|
||||
"fig.colorbar(im2,ax=ax2,shrink=0.4)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "1099e99a-e4a8-46c8-b3e4-00259de64c82",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#Similarly we can plot fission reactions:\n",
|
||||
"\n",
|
||||
"fission1=tl1.get_slice(scores=['fission'])\n",
|
||||
"fission2=tl2.get_slice(scores=['fission'])\n",
|
||||
"\n",
|
||||
"fission1.mean.shape=(400,400)\n",
|
||||
"fission2.mean.shape=(400,400)\n",
|
||||
"\n",
|
||||
"fig,(ax1,ax2)=plt.subplots(ncols=2,figsize=(20,16), constrained_layout=True)\n",
|
||||
"\n",
|
||||
"ax1.set_xticks(np.arange(0,401,399/4))\n",
|
||||
"ax1.set_xticklabels(np.arange(-175,176,350./4))\n",
|
||||
"ax2.set_xticks(np.arange(0,400,399/4))\n",
|
||||
"ax2.set_xticklabels(np.arange(-175,176,350./4))\n",
|
||||
"ax1.set_yticks(np.arange(0,400,399/4))\n",
|
||||
"ax1.set_yticklabels(np.arange(-175,176,350./4))\n",
|
||||
"ax2.set_yticks(np.arange(0,400,399/4))\n",
|
||||
"ax2.set_yticklabels(np.arange(-175,176,350./4))\n",
|
||||
"ax1.set_xlabel('X / cm')\n",
|
||||
"ax1.set_ylabel('Y / cm')\n",
|
||||
"\n",
|
||||
"ax2.set_xlabel('X / cm')\n",
|
||||
"ax2.set_ylabel('Z / cm')\n",
|
||||
"im1=ax1.imshow(fission1.mean)\n",
|
||||
"fig.colorbar(im1,ax=ax1,shrink=0.4)\n",
|
||||
"im2=ax2.imshow(fission2.mean)\n",
|
||||
"fig.colorbar(im2,ax=ax2,shrink=0.4)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "cd6f56f4-6ade-4e4f-b751-e67df40b3d8c",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Suppose we now would like to see what the energy spectrum of the neutrons generated in our reactor is. To explore this we will add another talliy to our simulation. This time however, instead of a spatial regular mesh, the tally will have an energy filter. Furthermore, we restrict the tally to neutron flux and fission events within the fuel salt, by means of a material filter. Unfortunately to fill the new tally we have to re-run the simulation."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "e440a7a0-3f4d-4067-ba47-09245d82400e",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#define a lograrithmic binning from 1keV to 10 MeV\n",
|
||||
"ef=energyrange=openmc.EnergyFilter(np.logspace(3,7,200))\n",
|
||||
"te = openmc.Tally(name='energy')\n",
|
||||
"\n",
|
||||
"sf = openmc.MaterialFilter(salt)\n",
|
||||
"te.filters =[ef,sf]\n",
|
||||
"te.scores = ['flux','fission']\n",
|
||||
"\n",
|
||||
"tallies.append(te)\n",
|
||||
"tallies.export_to_xml()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "aa856b84-144c-49fc-8184-1c35eedc0449",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"os.system(\"rm -f summary.h5 statepoint.20.h5\")\n",
|
||||
"openmc.run()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "7f431317-75ca-4960-ba3a-fae1c13e643b",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"sp=openmc.StatePoint('statepoint.20.h5')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "4920fa40-9468-4fdc-a7e6-4cfe1a88612d",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"tl=sp.get_tally(name='energy')\n",
|
||||
"\n",
|
||||
"e1=tl.get_slice(scores=['flux'])\n",
|
||||
"e2=tl.get_slice(scores=['fission'])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "22a6b009-f2d9-441b-ac98-4cb71c6c99a7",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"fig,ax=plt.subplots(figsize=(7,3.5),squeeze=True)\n",
|
||||
"ax.plot(ef.values[:199],e1.mean[:,0,0])\n",
|
||||
"ax.plot(ef.values[:199],e2.mean[:,0,0])\n",
|
||||
"ax.set_xscale('log')\n",
|
||||
"ax.set_yscale('log')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "a9aefede-8fdf-4494-b0c0-d19e41fb6c4f",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"A reactor with a k_{eff} significantly higher than 1 is likely not what you want. Therefore we need to modify our initial model to also include a set of control rods. In the MSRE these rods consisted of three sets of cylindrical elements made from a Al_2O_3/Gd_2O_3-mixture. These absorb neutrons to \"dampen\" the nuclear process - something also known as poisoning.\n",
|
||||
"The cylindrical elements were stacked to form the control rods (~=80''), which can be inserted into the reactor core in 3 of the 4 voids visible in the centre of the XZ-geometry of the reactor.\n",
|
||||
"\n",
|
||||
"To run our reactor model with control-rods we will now simply point openmc at a different geometry-file, and append the missing materials to the materials list. To visualize we also add tallies to track the absorption."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "57d11f47-2c4a-4549-8944-ef1aacf81c7e",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#geometry\n",
|
||||
"os.system('rm -f materials.xml geometry.xml tallies.xml')\n",
|
||||
"h5m_filepath=\"../msre/msre_control_in.h5m\"\n",
|
||||
"dag_univ = openmc.DAGMCUniverse(h5m_filepath)\n",
|
||||
"geom = openmc.Geometry(root=dag_univ)\n",
|
||||
"geom.export_to_xml()\n",
|
||||
"\n",
|
||||
"b_w_conc={'Al2O3':0.3,'Gd2O3':0.7} # Wt. (D. Shen et.al. Nucl. Sc. & Eng., v. 195, pp. 825, 2021)\n",
|
||||
"A_w={'Al':26.9815385,'Gd':157.25, 'O':15.99} #g/mol, (Webelements.com)\n",
|
||||
"rho={'Al2O3':3.987,'Gd2O3':7.07} # g /cc, (Wikipedia: Aluminium_oxide & Gadolinium(III)_oxide)\n",
|
||||
"b_mol_w={'Al2O3':2*A_w['Al']+ 3*A_w['O'],'Gd2O3':2*A_w['Gd']+3*A_w['O']}\n",
|
||||
"bush_mol_comp={'Al2O3':(b_w_conc['Al2O3']/b_mol_w['Al2O3'])/( b_w_conc['Al2O3']/b_mol_w['Al2O3'] + b_w_conc['Gd2O3']/b_mol_w['Gd2O3'] ),\n",
|
||||
" 'Gd2O3':(b_w_conc['Gd2O3']/b_mol_w['Gd2O3'])/( b_w_conc['Al2O3']/b_mol_w['Al2O3'] + b_w_conc['Gd2O3']/b_mol_w['Gd2O3'] )}\n",
|
||||
"\n",
|
||||
"bush=openmc.Material(name='bush')\n",
|
||||
"bush.add_element('Al',2/5*bush_mol_comp['Al2O3'],'ao')\n",
|
||||
"bush.add_element('Gd',2/5*bush_mol_comp['Gd2O3'],'ao')\n",
|
||||
"bush.add_element('O',3/5*bush_mol_comp['Al2O3']+3/5*bush_mol_comp['Gd2O3'],'ao')\n",
|
||||
"bush.set_density('g/cc',b_w_conc['Al2O3']*rho['Al2O3'] +b_w_conc['Gd2O3']*rho['Gd2O3'] )\n",
|
||||
"\n",
|
||||
"t1 = openmc.Tally(name='flux1')\n",
|
||||
"t1.filters =[mesh1_filter]\n",
|
||||
"t1.scores = ['flux','fission','absorption']\n",
|
||||
"\n",
|
||||
"t2 = openmc.Tally(name='flux2')\n",
|
||||
"t2.filters =[mesh2_filter]\n",
|
||||
"t2.scores = ['flux','fission','absorption']\n",
|
||||
"\n",
|
||||
"tallies=openmc.Tallies([t1,t2])\n",
|
||||
"tallies.export_to_xml()\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"materials=openmc.Materials([helium,salt,graphite,inconel,inor,bush])\n",
|
||||
"materials.export_to_xml()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "ea8d4900-f24e-4f0e-b5af-39ad3342bebc",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"xwidth = 350\n",
|
||||
"yheight = 350\n",
|
||||
"material_colors={salt:'red', inor:'lightblue', inconel:'blue',helium:'white',graphite:'gray',bush:'purple'}\n",
|
||||
"#xz plot\n",
|
||||
"p1 = openmc.Plot()\n",
|
||||
"p1.background='white'\n",
|
||||
"p1.basis = 'xz'\n",
|
||||
"p1.width = (xwidth,yheight)\n",
|
||||
"p1.origin=(0,0,125)\n",
|
||||
"p1.pixels = (800, 800)\n",
|
||||
"p1.color_by = 'material'\n",
|
||||
"p1.colors=material_colors\n",
|
||||
"#xy plot\n",
|
||||
"p2 = openmc.Plot()\n",
|
||||
"p2.background='white'\n",
|
||||
"p2.basis='xy'\n",
|
||||
"p2.width=(xwidth, yheight)\n",
|
||||
"p2.pixels = (800,800)\n",
|
||||
"p2.origin=(0,0,100)\n",
|
||||
"p2.color_by='material'\n",
|
||||
"p2.colors=material_colors\n",
|
||||
"\n",
|
||||
"p3 = openmc.Plot()\n",
|
||||
"p3.background='white'\n",
|
||||
"p3.basis='xy'\n",
|
||||
"p3.width=(xwidth/10, yheight/10)\n",
|
||||
"p3.pixels = (800,800)\n",
|
||||
"p3.origin=(0,0,100)\n",
|
||||
"p3.color_by='material'\n",
|
||||
"p3.colors=material_colors\n",
|
||||
"\n",
|
||||
"plots=openmc.Plots([p1,p2,p3])\n",
|
||||
"openmc.plot_inline(plots)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "c024f9cd-3ca8-4f8d-a5d0-60eca95cac3c",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"os.system(\"rm -f summary.h5 statepoint.20.h5\")\n",
|
||||
"openmc.run()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "046eb354-e11f-4dfa-90e8-59768cc4c063",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#Plot maps of the absorption\n",
|
||||
"sp=openmc.StatePoint('statepoint.20.h5')\n",
|
||||
"\n",
|
||||
"tl1=sp.get_tally(name='flux1')\n",
|
||||
"tl2=sp.get_tally(name='flux2')\n",
|
||||
"\n",
|
||||
"abs1=tl1.get_slice(scores=['absorption'])\n",
|
||||
"abs2=tl2.get_slice(scores=['absorption'])\n",
|
||||
"\n",
|
||||
"abs1.mean.shape=(400,400)\n",
|
||||
"abs2.mean.shape=(400,400)\n",
|
||||
"\n",
|
||||
"fig,(ax1,ax2)=plt.subplots(ncols=2,figsize=(20,16), constrained_layout=True)\n",
|
||||
"\n",
|
||||
"ax1.set_xticks(np.arange(0,401,399/4))\n",
|
||||
"ax1.set_xticklabels(np.arange(-175,176,350./4))\n",
|
||||
"ax2.set_xticks(np.arange(0,400,399/4))\n",
|
||||
"ax2.set_xticklabels(np.arange(-175,176,350./4))\n",
|
||||
"ax1.set_yticks(np.arange(0,400,399/4))\n",
|
||||
"ax1.set_yticklabels(np.arange(-175,176,350./4))\n",
|
||||
"ax2.set_yticks(np.arange(0,400,399/4))\n",
|
||||
"ax2.set_yticklabels(np.arange(-175,176,350./4))\n",
|
||||
"ax1.set_xlabel('X / cm')\n",
|
||||
"ax1.set_ylabel('Y / cm')\n",
|
||||
"\n",
|
||||
"ax2.set_xlabel('X / cm')\n",
|
||||
"ax2.set_ylabel('Z / cm')\n",
|
||||
"im1=ax1.imshow(abs1.mean)\n",
|
||||
"fig.colorbar(im1,ax=ax1,shrink=0.4)\n",
|
||||
"im2=ax2.imshow(abs2.mean)\n",
|
||||
"fig.colorbar(im2,ax=ax2,shrink=0.4)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.2"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
61
msre_docker/README.md
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
# docker-msre
|
||||
This repository is created for the purpose of creating a docker conatiner which includes not only support for OpenMC with DAGMC/MOAB, embree, and double_down libraries, but also a Jupyter notebook server. The "raison d'etre" for this is to run a virtual version of The Molten Salt Reactor Experiment (MSRE). The experiment itself was performed physically in the '60s at Oak Ridge National Lab (ORNL), Tennessee, US.
|
||||
|
||||
# Getting started:
|
||||
1. Install the docker engine on your system (for windows and MacOS: docker-desktop, for Linux: docker server)
|
||||
Instructions for how to do this may be found on the Docker website at: [Docker installation](https://docs.docker.com/engine/install/)
|
||||
2. Run the msre docker container.
|
||||
- Linux:
|
||||
1. Open a terminal, navigate to a directory where you want to run.
|
||||
2. Download the msre-docker runscript, and run it:
|
||||
```{bash tidy=false}
|
||||
wget https://raw.githubusercontent.com/openmsr/msre_docker/main/run_docker.sh
|
||||
chmod u+x run_docker.sh
|
||||
./run_docker.sh
|
||||
```
|
||||
The script contains a call to ```docker run``` with some options preset. Among other things it sets up a subdirectory called notebooks which is shared between the conatiner and the host so that you can keep data between runs.
|
||||
Feel free to inspect the runscript if you prefer to run your docker manually. If you'd prefer for instance to run commands in the docker from a shell
|
||||
you may do so by adding the option ```--entrypoint /bin/bash``` to the docker run command.
|
||||
3. If you used the run-script "as is" you should now be able to open a browser and point it to "https://127.0.0.1:8888" and be treated with a login page to Jupyter.
|
||||
Please enter "docker" in the password box, which should provide you with the base Jupter Lab screen.
|
||||
4. In the example_notebooks folder open the MSRE.ipynb file. You are now ready to run!
|
||||
|
||||
## Troubleshooting:
|
||||
- If the wget command fails with a message complaining about certificates you may bypass this by adding ```--no-check-certificate``` to the command.
|
||||
- If you get an error message saying: "docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?." that likely means that you need to start the docker engine. This can be done using the command:
|
||||
```sudo dockerd```
|
||||
- If you get an error similar to: "Got permission denied while trying to connect to the Docker daemon socket...", it is likely that your user needs to be added to the "docker" group. To check which groups your user belongs to you may use the groups command. To add your user to the docker group you may use:
|
||||
```sudo usermod -aG docker <username>```
|
||||
where \<username\> is your unix username.
|
||||
|
||||
- Windows:
|
||||
There are two options for running the docker on a windows system:
|
||||
1. Install the docker-desktop application.
|
||||
Once you have downloaded and installed the application in the normal manner from docker.com, you may proceed by:
|
||||
1. Open the command prompt and issue: docker pull copenhagenatomics/msre:0.1.0. This will look like this 
|
||||
3. Open the docker-desktop application. The msre docker image should now be visible on the "images"-tab. 
|
||||
4. Click on the run-button and then on options. Here we need to set a few parameters to mimic the run_docker.sh script. You should now have a dialog: 
|
||||
4. Once the docker has been downloaded and started, you should see among many other messages something about a Jupyter Server at "http://127.0.0.1:8888/lab?token=...".  Please copy this entire URL and paste it into the adress field of your browser. You should now see the Jupyter lab interface and may proceed.
|
||||
|
||||
2. Install Windows Subsystem for Linux (WSL) and run the docker from the command-line there.
|
||||
N.b. In fact the docker-desktop application also relies on WSL.
|
||||
WSL is a native windows system that enables users to run anyh and all Linux applications natively on Windows 10 and 11, including parallelization and even access to acceleration through GPUs.
|
||||
Please note that the process may require updates to Windows to be installed and also rebooting your system. Furthermore, it may also require you to edit settings in the BIOS to enable virtualization on your system.
|
||||
First you must install a Linux kernel in WSL. Open a command prompt and run the command
|
||||
```wsl --install --distribution debian``` (or shorter ```wsl --install -d debian```)
|
||||

|
||||
|
||||
Once this is done wsl will start and you can proceed proceed to get the run-script using wget:
|
||||
```wget --no-check-certificate https://raw.githubusercontent.com/openmsr/msre_docker/main/run_docker.sh```
|
||||
Set the executable bit on this script and run it to start the docker as if on Linux:
|
||||
```chmod u+x run_docker.sh```
|
||||
At this point you should be able to run the script ```./run_docker.sh``` and point your browser to "127.0.0.1:8888" or "localhost:8888" to get into Jupyter notebook.
|
||||
|
||||
## Troubleshooting:
|
||||
Should you run into problems, please ensure that the following options have been set.
|
||||
First, we need to tell docker to use the debian kernel in WSL. This is done in the setting pane under resources 
|
||||
Second, a number of windows features need to be turned on:
|
||||
|
||||
Should you still have problems - please contact us (for instance by opening an issue in this repo) and we'll help you out.
|
||||
3. Jupiter notebook
|
||||
The default password for the jupyter notebook is 'docker'.
|
||||
2
msre_docker/build_docker.sh
Executable file
|
|
@ -0,0 +1,2 @@
|
|||
#!/usr/bin/env bash
|
||||
docker build -t copenhagenatomics/msre:0.1.1 .
|
||||
BIN
msre_docker/msre_control_in.h5m
(Stored with Git LFS)
Normal file
BIN
msre_docker/msre_control_out.h5m
(Stored with Git LFS)
Normal file
BIN
msre_docker/msre_simple.h5m
(Stored with Git LFS)
Normal file
12
msre_docker/run_docker.sh
Executable file
|
|
@ -0,0 +1,12 @@
|
|||
#!/usr/bin/env bash
|
||||
PWD=`pwd`
|
||||
|
||||
mountdir=$1
|
||||
if [ "a$1" == "a" ]; then
|
||||
mountdir=notebooks
|
||||
fi
|
||||
if [ ! -d $mountdir ]; then
|
||||
mkdir $mountdir
|
||||
fi
|
||||
|
||||
docker run -it -p 8888:8888 -e JUPYTER_ENABLE_LAB=yes -e JUPYTER_TOKEN=docker -v ${PWD}/${mountdir}:/home/usr/notebooks copenhagenatomics/msre:0.1.1
|
||||
12
msre_docker/run_docker_daemon.sh
Executable file
|
|
@ -0,0 +1,12 @@
|
|||
#!/usr/bin/env bash
|
||||
PWD=`pwd`
|
||||
|
||||
mountdir=$1
|
||||
if [ "a$1" == "a" ]; then
|
||||
mountdir=notebooks
|
||||
fi
|
||||
if [ ! -d $mountdir ]; then
|
||||
mkdir $mountdir
|
||||
fi
|
||||
|
||||
docker run -d --restart unless-stopped -p 8888:8888 -e JUPYTER_ENABLE_LAB=yes -e JUPYTER_TOKEN=docker -v ${PWD}/${mountdir}:/home/usr/notebooks copenhagenatomics/msre:0.1.1
|
||||
7
openmc_notebooks/README.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# OpenMC MSRE notebooks
|
||||
[](https://www.gnu.org/licenses/gpl-3.0)
|
||||
|
||||
<img src="images/lat.png" width="700" height="500"/>
|
||||
|
||||
`OpenMC` simulation examples of the Molten Salt Reactor Experiment (MSRE), operated at ORNL in the 1960s.
|
||||
All scripts are set up using the [h5m meshed files](https://github.com/openmsr/msre/tree/master/h5m) obtained with the open source meshing tool [CAD-to-OpenMC](https://github.com/openmsr/CAD_to_OpenMC) from a CAD version of the the MSRE, designed with the CAE tool `OnShape` and available for export here: [onshape msre model](https://cad.onshape.com/documents/4f04f63bfd4138a61a54b3f8/v/b8c29a0cedda86dfc6948111/).
|
||||
BIN
openmc_notebooks/images/control_rod.jpg
Normal file
|
After Width: | Height: | Size: 101 KiB |
BIN
openmc_notebooks/images/lat.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
openmc_notebooks/images/msre_assembly.jpg
Normal file
|
After Width: | Height: | Size: 97 KiB |
BIN
openmc_notebooks/images/msre_core.jpg
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
openmc_notebooks/images/plot_1.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
openmc_notebooks/images/plot_3.png
Normal file
|
After Width: | Height: | Size: 192 KiB |