From dd92a4312bd760686440f316b38a789e13a406bd Mon Sep 17 00:00:00 2001 From: pgleeson Date: Wed, 1 May 2024 16:45:33 +0100 Subject: [PATCH 01/14] Update to v0.4.11 --- examples/ACT-R/addition.json | 2 +- examples/ACT-R/addition.yaml | 2 +- examples/ACT-R/count.json | 2 +- examples/ACT-R/count.yaml | 2 +- examples/MDF/ABCD.json | 2 +- examples/MDF/ABCD.yaml | 2 +- examples/MDF/Arrays.json | 2 +- examples/MDF/Arrays.yaml | 2 +- examples/MDF/ParametersFunctions.json | 2 +- examples/MDF/ParametersFunctions.yaml | 2 +- examples/MDF/RNN/IAF_net.json | 2 +- examples/MDF/RNN/IAF_net.yaml | 2 +- examples/MDF/RNN/IAF_net2.json | 2 +- examples/MDF/RNN/IAF_net2.yaml | 2 +- examples/MDF/RNN/IAFs.json | 2 +- examples/MDF/RNN/IAFs.yaml | 2 +- examples/MDF/RNN/RNNs.json | 2 +- examples/MDF/RNN/RNNs.yaml | 2 +- examples/MDF/Simple.bson | Bin 901 -> 901 bytes examples/MDF/Simple.json | 2 +- examples/MDF/Simple.yaml | 2 +- examples/MDF/States.json | 2 +- examples/MDF/States.yaml | 2 +- examples/MDF/abc_conditions.json | 2 +- examples/MDF/abc_conditions.yaml | 2 +- .../MDF/conditions/Composite_mdf_condition.json | 2 +- .../MDF/conditions/Composite_mdf_condition.yaml | 2 +- .../MDF/conditions/everyncalls_condition.json | 2 +- .../MDF/conditions/everyncalls_condition.yaml | 2 +- .../MDF/conditions/threshold_condition.json | 2 +- .../MDF/conditions/threshold_condition.yaml | 2 +- .../MDF/conditions/timeinterval_condition.json | 2 +- .../MDF/conditions/timeinterval_condition.yaml | 2 +- examples/ONNX/ab.json | 2 +- examples/ONNX/ab.yaml | 2 +- examples/ONNX/abc.json | 2 +- examples/ONNX/abc.yaml | 2 +- examples/ONNX/abc_basic-mdf.json | 2 +- examples/ONNX/abc_basic-mdf.yaml | 2 +- examples/ONNX/abcd.json | 2 +- examples/ONNX/abcd.yaml | 2 +- examples/PyTorch/MDF_PyTorch/ABCD_pytorch.py | 2 +- examples/PyTorch/MDF_PyTorch/Arrays_pytorch.py | 2 +- examples/PyTorch/MDF_PyTorch/Simple_pytorch.py | 2 +- .../squeezenet1_1_benchmark.json | 6 +++--- examples/PyTorch/inception.json | 2 +- examples/PyTorch/mlp_pure_mdf.json | 2 +- examples/PyTorch/mlp_pure_mdf.yaml | 2 +- examples/PyTorch/simple_pytorch_to_mdf.json | 2 +- .../TensorFlow/Keras/IRIS/keras_to_MDF.json | 2 +- .../TensorFlow/Keras/IRIS/keras_to_MDF.yaml | 2 +- .../TensorFlow/Keras/MNIST/keras_to_MDF.json | 2 +- .../TensorFlow/Keras/MNIST/keras_to_MDF.yaml | 2 +- src/modeci_mdf/__init__.py | 2 +- 54 files changed, 55 insertions(+), 55 deletions(-) diff --git a/examples/ACT-R/addition.json b/examples/ACT-R/addition.json index 822c40b1..41714f7e 100644 --- a/examples/ACT-R/addition.json +++ b/examples/ACT-R/addition.json @@ -1,7 +1,7 @@ { "addition": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "addition_graph": { "nodes": { diff --git a/examples/ACT-R/addition.yaml b/examples/ACT-R/addition.yaml index fbb416ee..6362d6b4 100644 --- a/examples/ACT-R/addition.yaml +++ b/examples/ACT-R/addition.yaml @@ -1,6 +1,6 @@ addition: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: addition_graph: nodes: diff --git a/examples/ACT-R/count.json b/examples/ACT-R/count.json index 8dfa41fd..c6103a9d 100644 --- a/examples/ACT-R/count.json +++ b/examples/ACT-R/count.json @@ -1,7 +1,7 @@ { "count": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "count_graph": { "nodes": { diff --git a/examples/ACT-R/count.yaml b/examples/ACT-R/count.yaml index 2776344d..7d5c3cd2 100644 --- a/examples/ACT-R/count.yaml +++ b/examples/ACT-R/count.yaml @@ -1,6 +1,6 @@ count: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: count_graph: nodes: diff --git a/examples/MDF/ABCD.json b/examples/MDF/ABCD.json index 89b88a7a..34c683b7 100644 --- a/examples/MDF/ABCD.json +++ b/examples/MDF/ABCD.json @@ -1,7 +1,7 @@ { "ABCD": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "abcd_example": { "nodes": { diff --git a/examples/MDF/ABCD.yaml b/examples/MDF/ABCD.yaml index cd614f7d..a01e9628 100644 --- a/examples/MDF/ABCD.yaml +++ b/examples/MDF/ABCD.yaml @@ -1,6 +1,6 @@ ABCD: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: abcd_example: nodes: diff --git a/examples/MDF/Arrays.json b/examples/MDF/Arrays.json index 8ca82454..70eb9e54 100644 --- a/examples/MDF/Arrays.json +++ b/examples/MDF/Arrays.json @@ -1,7 +1,7 @@ { "Arrays": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "array_example": { "nodes": { diff --git a/examples/MDF/Arrays.yaml b/examples/MDF/Arrays.yaml index cc585cae..2d8940c9 100644 --- a/examples/MDF/Arrays.yaml +++ b/examples/MDF/Arrays.yaml @@ -1,6 +1,6 @@ Arrays: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: array_example: nodes: diff --git a/examples/MDF/ParametersFunctions.json b/examples/MDF/ParametersFunctions.json index 10e1b13a..590849ec 100644 --- a/examples/MDF/ParametersFunctions.json +++ b/examples/MDF/ParametersFunctions.json @@ -1,7 +1,7 @@ { "ParametersFunctions": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "params_funcs_example": { "nodes": { diff --git a/examples/MDF/ParametersFunctions.yaml b/examples/MDF/ParametersFunctions.yaml index 2207e5c0..e31de033 100644 --- a/examples/MDF/ParametersFunctions.yaml +++ b/examples/MDF/ParametersFunctions.yaml @@ -1,6 +1,6 @@ ParametersFunctions: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: params_funcs_example: nodes: diff --git a/examples/MDF/RNN/IAF_net.json b/examples/MDF/RNN/IAF_net.json index a005bcfb..7bfc8dc8 100644 --- a/examples/MDF/RNN/IAF_net.json +++ b/examples/MDF/RNN/IAF_net.json @@ -1,7 +1,7 @@ { "IAF_net": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "iaf_example": { "nodes": { diff --git a/examples/MDF/RNN/IAF_net.yaml b/examples/MDF/RNN/IAF_net.yaml index 3704a1bb..6286ac83 100644 --- a/examples/MDF/RNN/IAF_net.yaml +++ b/examples/MDF/RNN/IAF_net.yaml @@ -1,6 +1,6 @@ IAF_net: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: iaf_example: nodes: diff --git a/examples/MDF/RNN/IAF_net2.json b/examples/MDF/RNN/IAF_net2.json index b816852b..e40acdf1 100644 --- a/examples/MDF/RNN/IAF_net2.json +++ b/examples/MDF/RNN/IAF_net2.json @@ -1,7 +1,7 @@ { "IAF_net2": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "iaf_example": { "nodes": { diff --git a/examples/MDF/RNN/IAF_net2.yaml b/examples/MDF/RNN/IAF_net2.yaml index db46f9c5..0d38fc58 100644 --- a/examples/MDF/RNN/IAF_net2.yaml +++ b/examples/MDF/RNN/IAF_net2.yaml @@ -1,6 +1,6 @@ IAF_net2: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: iaf_example: nodes: diff --git a/examples/MDF/RNN/IAFs.json b/examples/MDF/RNN/IAFs.json index d75f9e5a..fd17895b 100644 --- a/examples/MDF/RNN/IAFs.json +++ b/examples/MDF/RNN/IAFs.json @@ -1,7 +1,7 @@ { "IAFs": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "iaf_example": { "nodes": { diff --git a/examples/MDF/RNN/IAFs.yaml b/examples/MDF/RNN/IAFs.yaml index 84e4c4bd..e605acfb 100644 --- a/examples/MDF/RNN/IAFs.yaml +++ b/examples/MDF/RNN/IAFs.yaml @@ -1,6 +1,6 @@ IAFs: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: iaf_example: nodes: diff --git a/examples/MDF/RNN/RNNs.json b/examples/MDF/RNN/RNNs.json index 6028d355..b6bb950b 100644 --- a/examples/MDF/RNN/RNNs.json +++ b/examples/MDF/RNN/RNNs.json @@ -1,7 +1,7 @@ { "RNNs": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "rnn_example": { "nodes": { diff --git a/examples/MDF/RNN/RNNs.yaml b/examples/MDF/RNN/RNNs.yaml index 8e2f517b..9fa817ac 100644 --- a/examples/MDF/RNN/RNNs.yaml +++ b/examples/MDF/RNN/RNNs.yaml @@ -1,6 +1,6 @@ RNNs: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: rnn_example: nodes: diff --git a/examples/MDF/Simple.bson b/examples/MDF/Simple.bson index dac44ab07bc8075b55dab0943e62db7de1c5a577..a28157476ba9ef37c9e0f88a86ae0121c4c522c5 100644 GIT binary patch delta 12 TcmZo=Z)Km5z-YKJQH2=*7*hju delta 12 TcmZo=Z)Km5z-X{BQH2=*7)}Fo diff --git a/examples/MDF/Simple.json b/examples/MDF/Simple.json index 9f14ee1e..e0f57946 100644 --- a/examples/MDF/Simple.json +++ b/examples/MDF/Simple.json @@ -1,7 +1,7 @@ { "Simple": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "simple_example": { "nodes": { diff --git a/examples/MDF/Simple.yaml b/examples/MDF/Simple.yaml index e0f33ea9..face1c9a 100644 --- a/examples/MDF/Simple.yaml +++ b/examples/MDF/Simple.yaml @@ -1,6 +1,6 @@ Simple: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: simple_example: nodes: diff --git a/examples/MDF/States.json b/examples/MDF/States.json index 9f9eecef..38013f84 100644 --- a/examples/MDF/States.json +++ b/examples/MDF/States.json @@ -1,7 +1,7 @@ { "States": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "state_example": { "nodes": { diff --git a/examples/MDF/States.yaml b/examples/MDF/States.yaml index 241a1a8d..b1940eb1 100644 --- a/examples/MDF/States.yaml +++ b/examples/MDF/States.yaml @@ -1,6 +1,6 @@ States: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: state_example: nodes: diff --git a/examples/MDF/abc_conditions.json b/examples/MDF/abc_conditions.json index dfee679b..b3b5078d 100644 --- a/examples/MDF/abc_conditions.json +++ b/examples/MDF/abc_conditions.json @@ -1,7 +1,7 @@ { "abc_conditions": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "abc_conditions_example": { "nodes": { diff --git a/examples/MDF/abc_conditions.yaml b/examples/MDF/abc_conditions.yaml index 4d9df027..a2821f19 100644 --- a/examples/MDF/abc_conditions.yaml +++ b/examples/MDF/abc_conditions.yaml @@ -1,6 +1,6 @@ abc_conditions: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: abc_conditions_example: nodes: diff --git a/examples/MDF/conditions/Composite_mdf_condition.json b/examples/MDF/conditions/Composite_mdf_condition.json index 66e05b34..d72a7374 100644 --- a/examples/MDF/conditions/Composite_mdf_condition.json +++ b/examples/MDF/conditions/Composite_mdf_condition.json @@ -1,7 +1,7 @@ { "Composite_mdf_condition": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "Composite_mdf_condition_example": { "nodes": { diff --git a/examples/MDF/conditions/Composite_mdf_condition.yaml b/examples/MDF/conditions/Composite_mdf_condition.yaml index 02375bda..11ff5f6c 100644 --- a/examples/MDF/conditions/Composite_mdf_condition.yaml +++ b/examples/MDF/conditions/Composite_mdf_condition.yaml @@ -1,6 +1,6 @@ Composite_mdf_condition: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: Composite_mdf_condition_example: nodes: diff --git a/examples/MDF/conditions/everyncalls_condition.json b/examples/MDF/conditions/everyncalls_condition.json index 1965342c..5c7b6b49 100644 --- a/examples/MDF/conditions/everyncalls_condition.json +++ b/examples/MDF/conditions/everyncalls_condition.json @@ -1,7 +1,7 @@ { "everyncalls_condition": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "everyncalls_example": { "nodes": { diff --git a/examples/MDF/conditions/everyncalls_condition.yaml b/examples/MDF/conditions/everyncalls_condition.yaml index 29c9f5ae..8ec701fd 100644 --- a/examples/MDF/conditions/everyncalls_condition.yaml +++ b/examples/MDF/conditions/everyncalls_condition.yaml @@ -1,6 +1,6 @@ everyncalls_condition: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: everyncalls_example: nodes: diff --git a/examples/MDF/conditions/threshold_condition.json b/examples/MDF/conditions/threshold_condition.json index c78655e1..ba6c5f3f 100644 --- a/examples/MDF/conditions/threshold_condition.json +++ b/examples/MDF/conditions/threshold_condition.json @@ -1,7 +1,7 @@ { "threshold_condition": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "threshold_example": { "nodes": { diff --git a/examples/MDF/conditions/threshold_condition.yaml b/examples/MDF/conditions/threshold_condition.yaml index 2307d798..4b527354 100644 --- a/examples/MDF/conditions/threshold_condition.yaml +++ b/examples/MDF/conditions/threshold_condition.yaml @@ -1,6 +1,6 @@ threshold_condition: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: threshold_example: nodes: diff --git a/examples/MDF/conditions/timeinterval_condition.json b/examples/MDF/conditions/timeinterval_condition.json index 84c1afb0..3b0ef172 100644 --- a/examples/MDF/conditions/timeinterval_condition.json +++ b/examples/MDF/conditions/timeinterval_condition.json @@ -1,7 +1,7 @@ { "timeinterval_condition": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "timeinterval_example": { "nodes": { diff --git a/examples/MDF/conditions/timeinterval_condition.yaml b/examples/MDF/conditions/timeinterval_condition.yaml index afb5e60d..8e0164e5 100644 --- a/examples/MDF/conditions/timeinterval_condition.yaml +++ b/examples/MDF/conditions/timeinterval_condition.yaml @@ -1,6 +1,6 @@ timeinterval_condition: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: timeinterval_example: nodes: diff --git a/examples/ONNX/ab.json b/examples/ONNX/ab.json index b267c60a..b3667e81 100644 --- a/examples/ONNX/ab.json +++ b/examples/ONNX/ab.json @@ -1,7 +1,7 @@ { "ONNX Model": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "main_graph": { "nodes": { diff --git a/examples/ONNX/ab.yaml b/examples/ONNX/ab.yaml index 1fd617bf..bb4cbbfb 100644 --- a/examples/ONNX/ab.yaml +++ b/examples/ONNX/ab.yaml @@ -1,6 +1,6 @@ ONNX Model: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: main_graph: nodes: diff --git a/examples/ONNX/abc.json b/examples/ONNX/abc.json index ad053f45..bd05d90c 100644 --- a/examples/ONNX/abc.json +++ b/examples/ONNX/abc.json @@ -1,7 +1,7 @@ { "ONNX Model": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "main_graph": { "nodes": { diff --git a/examples/ONNX/abc.yaml b/examples/ONNX/abc.yaml index ca3a28b3..87383f11 100644 --- a/examples/ONNX/abc.yaml +++ b/examples/ONNX/abc.yaml @@ -1,6 +1,6 @@ ONNX Model: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: main_graph: nodes: diff --git a/examples/ONNX/abc_basic-mdf.json b/examples/ONNX/abc_basic-mdf.json index af718d46..8549a6b3 100644 --- a/examples/ONNX/abc_basic-mdf.json +++ b/examples/ONNX/abc_basic-mdf.json @@ -1,7 +1,7 @@ { "ONNX Model": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "main_graph": { "nodes": { diff --git a/examples/ONNX/abc_basic-mdf.yaml b/examples/ONNX/abc_basic-mdf.yaml index 37fc162f..260cfa8a 100644 --- a/examples/ONNX/abc_basic-mdf.yaml +++ b/examples/ONNX/abc_basic-mdf.yaml @@ -1,6 +1,6 @@ ONNX Model: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: main_graph: nodes: diff --git a/examples/ONNX/abcd.json b/examples/ONNX/abcd.json index 1f8bca22..7e1a2615 100644 --- a/examples/ONNX/abcd.json +++ b/examples/ONNX/abcd.json @@ -1,7 +1,7 @@ { "ONNX Model": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "main_graph": { "nodes": { diff --git a/examples/ONNX/abcd.yaml b/examples/ONNX/abcd.yaml index 98ad05ee..72636f88 100644 --- a/examples/ONNX/abcd.yaml +++ b/examples/ONNX/abcd.yaml @@ -1,6 +1,6 @@ ONNX Model: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: main_graph: nodes: diff --git a/examples/PyTorch/MDF_PyTorch/ABCD_pytorch.py b/examples/PyTorch/MDF_PyTorch/ABCD_pytorch.py index 613b85fd..32d8e509 100644 --- a/examples/PyTorch/MDF_PyTorch/ABCD_pytorch.py +++ b/examples/PyTorch/MDF_PyTorch/ABCD_pytorch.py @@ -1,5 +1,5 @@ """ -This script has been generated by modeci_mdf v0.4.10. +This script has been generated by modeci_mdf v0.4.11. It is an export of a MDF model (mdf.s - MDF stateful, i.e. full MDF allowing stateful parameters) to PyTorch """ diff --git a/examples/PyTorch/MDF_PyTorch/Arrays_pytorch.py b/examples/PyTorch/MDF_PyTorch/Arrays_pytorch.py index 9969414e..8239d64f 100644 --- a/examples/PyTorch/MDF_PyTorch/Arrays_pytorch.py +++ b/examples/PyTorch/MDF_PyTorch/Arrays_pytorch.py @@ -1,5 +1,5 @@ """ -This script has been generated by modeci_mdf v0.4.10. +This script has been generated by modeci_mdf v0.4.11. It is an export of a MDF model (mdf.s - MDF stateful, i.e. full MDF allowing stateful parameters) to PyTorch """ diff --git a/examples/PyTorch/MDF_PyTorch/Simple_pytorch.py b/examples/PyTorch/MDF_PyTorch/Simple_pytorch.py index 4a728b18..94a230a0 100644 --- a/examples/PyTorch/MDF_PyTorch/Simple_pytorch.py +++ b/examples/PyTorch/MDF_PyTorch/Simple_pytorch.py @@ -1,5 +1,5 @@ """ -This script has been generated by modeci_mdf v0.4.10. +This script has been generated by modeci_mdf v0.4.11. It is an export of a MDF model (mdf.s - MDF stateful, i.e. full MDF allowing stateful parameters) to PyTorch """ diff --git a/examples/PyTorch/PyTorch_MDF/benchmark_script/squeezenet1_1_benchmark.json b/examples/PyTorch/PyTorch_MDF/benchmark_script/squeezenet1_1_benchmark.json index f49ac8cb..de6ed70e 100644 --- a/examples/PyTorch/PyTorch_MDF/benchmark_script/squeezenet1_1_benchmark.json +++ b/examples/PyTorch/PyTorch_MDF/benchmark_script/squeezenet1_1_benchmark.json @@ -2,11 +2,11 @@ { "model_name": "squeezenet1_1", "model_type": "SqueezeNet", - "pytorch_time": 0.0743, + "pytorch_time": 0.067, "pytorch_predictions": 10, - "mdf_time": 0.6978, + "mdf_time": 3.6506, "mdf_predictions": 10, "node density": 66, - "mdf : pytorch ratio": "9.39" + "mdf : pytorch ratio": "54.51" } ] diff --git a/examples/PyTorch/inception.json b/examples/PyTorch/inception.json index 5bd31bad..9e232050 100644 --- a/examples/PyTorch/inception.json +++ b/examples/PyTorch/inception.json @@ -1,7 +1,7 @@ { "InceptionBlocks": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "InceptionBlocksGraph": { "nodes": { diff --git a/examples/PyTorch/mlp_pure_mdf.json b/examples/PyTorch/mlp_pure_mdf.json index ab922c19..5da6e378 100644 --- a/examples/PyTorch/mlp_pure_mdf.json +++ b/examples/PyTorch/mlp_pure_mdf.json @@ -1,7 +1,7 @@ { "mlp_pure_mdf": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "mlp_pure_mdf": { "nodes": { diff --git a/examples/PyTorch/mlp_pure_mdf.yaml b/examples/PyTorch/mlp_pure_mdf.yaml index 2c031141..023f2d67 100644 --- a/examples/PyTorch/mlp_pure_mdf.yaml +++ b/examples/PyTorch/mlp_pure_mdf.yaml @@ -1,6 +1,6 @@ mlp_pure_mdf: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: mlp_pure_mdf: nodes: diff --git a/examples/PyTorch/simple_pytorch_to_mdf.json b/examples/PyTorch/simple_pytorch_to_mdf.json index 759a7c5f..1c1066eb 100644 --- a/examples/PyTorch/simple_pytorch_to_mdf.json +++ b/examples/PyTorch/simple_pytorch_to_mdf.json @@ -1,7 +1,7 @@ { "SimpleNet": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "SimpleNetGraph": { "nodes": { diff --git a/examples/TensorFlow/Keras/IRIS/keras_to_MDF.json b/examples/TensorFlow/Keras/IRIS/keras_to_MDF.json index 38fa64a3..bd7e964f 100644 --- a/examples/TensorFlow/Keras/IRIS/keras_to_MDF.json +++ b/examples/TensorFlow/Keras/IRIS/keras_to_MDF.json @@ -1,7 +1,7 @@ { "Sequential": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "Sequential_graph": { "nodes": { diff --git a/examples/TensorFlow/Keras/IRIS/keras_to_MDF.yaml b/examples/TensorFlow/Keras/IRIS/keras_to_MDF.yaml index f0a72479..03158435 100644 --- a/examples/TensorFlow/Keras/IRIS/keras_to_MDF.yaml +++ b/examples/TensorFlow/Keras/IRIS/keras_to_MDF.yaml @@ -1,6 +1,6 @@ Sequential: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: Sequential_graph: nodes: diff --git a/examples/TensorFlow/Keras/MNIST/keras_to_MDF.json b/examples/TensorFlow/Keras/MNIST/keras_to_MDF.json index d44cb2fa..df2d2477 100644 --- a/examples/TensorFlow/Keras/MNIST/keras_to_MDF.json +++ b/examples/TensorFlow/Keras/MNIST/keras_to_MDF.json @@ -1,7 +1,7 @@ { "Sequential": { "format": "ModECI MDF v0.4", - "generating_application": "Python modeci-mdf v0.4.10", + "generating_application": "Python modeci-mdf v0.4.11", "graphs": { "Sequential_graph": { "nodes": { diff --git a/examples/TensorFlow/Keras/MNIST/keras_to_MDF.yaml b/examples/TensorFlow/Keras/MNIST/keras_to_MDF.yaml index 14291fe5..19b82bde 100644 --- a/examples/TensorFlow/Keras/MNIST/keras_to_MDF.yaml +++ b/examples/TensorFlow/Keras/MNIST/keras_to_MDF.yaml @@ -1,6 +1,6 @@ Sequential: format: ModECI MDF v0.4 - generating_application: Python modeci-mdf v0.4.10 + generating_application: Python modeci-mdf v0.4.11 graphs: Sequential_graph: nodes: diff --git a/src/modeci_mdf/__init__.py b/src/modeci_mdf/__init__.py index 54b224e3..b613cea3 100644 --- a/src/modeci_mdf/__init__.py +++ b/src/modeci_mdf/__init__.py @@ -13,4 +13,4 @@ MODECI_MDF_VERSION = "0.4" # Version of the Python module. -__version__ = "0.4.10" +__version__ = "0.4.11" From 5287b12fe6319a4f8eebca3571ea00f14ae4df66 Mon Sep 17 00:00:00 2001 From: pgleeson Date: Thu, 23 May 2024 12:46:49 +0100 Subject: [PATCH 02/14] Regenerated --- examples/NeuroML/LEMS_SimABCD.xml | 2 +- examples/NeuroML/LEMS_SimFN.xml | 2 +- examples/NeuroML/LEMS_SimIzhikevichTest.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/NeuroML/LEMS_SimABCD.xml b/examples/NeuroML/LEMS_SimABCD.xml index 9236e0a1..60f9f168 100644 --- a/examples/NeuroML/LEMS_SimABCD.xml +++ b/examples/NeuroML/LEMS_SimABCD.xml @@ -2,7 +2,7 @@ diff --git a/examples/NeuroML/LEMS_SimFN.xml b/examples/NeuroML/LEMS_SimFN.xml index 20334f61..46cc5f1b 100644 --- a/examples/NeuroML/LEMS_SimFN.xml +++ b/examples/NeuroML/LEMS_SimFN.xml @@ -2,7 +2,7 @@ diff --git a/examples/NeuroML/LEMS_SimIzhikevichTest.xml b/examples/NeuroML/LEMS_SimIzhikevichTest.xml index d5d1bc62..c943d4a5 100644 --- a/examples/NeuroML/LEMS_SimIzhikevichTest.xml +++ b/examples/NeuroML/LEMS_SimIzhikevichTest.xml @@ -2,7 +2,7 @@ From dc9448e05d426cbeb1afde94f157c9e8ed5d88dd Mon Sep 17 00:00:00 2001 From: Rimjhim Mittal Date: Thu, 30 May 2024 22:29:02 +0530 Subject: [PATCH 03/14] Newton's Law of Cooling Example --- examples/MDF/NewtonCoolingModel.json | 38 ++++++++++++++ examples/MDF/NewtonCoolingModel.yaml | 23 +++++++++ examples/MDF/newton.png | Bin 0 -> 19704 bytes examples/MDF/newton.py | 72 +++++++++++++++++++++++++++ examples/MDF/newton_plot.png | Bin 0 -> 22967 bytes test_all.sh | 1 + 6 files changed, 134 insertions(+) create mode 100644 examples/MDF/NewtonCoolingModel.json create mode 100644 examples/MDF/NewtonCoolingModel.yaml create mode 100644 examples/MDF/newton.png create mode 100644 examples/MDF/newton.py create mode 100644 examples/MDF/newton_plot.png diff --git a/examples/MDF/NewtonCoolingModel.json b/examples/MDF/NewtonCoolingModel.json new file mode 100644 index 00000000..2a19e80d --- /dev/null +++ b/examples/MDF/NewtonCoolingModel.json @@ -0,0 +1,38 @@ +{ + "NewtonCoolingModel": { + "format": "ModECI MDF v0.4", + "generating_application": "Python modeci-mdf v0.4.11", + "graphs": { + "cooling_process": { + "nodes": { + "cool_node": { + "parameters": { + "cooling_coeff": { + "value": 0.1 + }, + "T_a": { + "value": 20 + }, + "T_curr": { + "default_initial_value": 90, + "time_derivative": "dT_dt" + }, + "dT_dt": { + "value": "-cooling_coeff*(T_curr - T_a)", + "default_initial_value": 0 + } + }, + "output_ports": { + "out_port": { + "value": "T_curr" + }, + "out_port2": { + "value": "dT_dt" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/examples/MDF/NewtonCoolingModel.yaml b/examples/MDF/NewtonCoolingModel.yaml new file mode 100644 index 00000000..361f3dad --- /dev/null +++ b/examples/MDF/NewtonCoolingModel.yaml @@ -0,0 +1,23 @@ +NewtonCoolingModel: + format: ModECI MDF v0.4 + generating_application: Python modeci-mdf v0.4.11 + graphs: + cooling_process: + nodes: + cool_node: + parameters: + cooling_coeff: + value: 0.1 + T_a: + value: 20 + T_curr: + default_initial_value: 90 + time_derivative: dT_dt + dT_dt: + value: -cooling_coeff*(T_curr - T_a) + default_initial_value: 0 + output_ports: + out_port: + value: T_curr + out_port2: + value: dT_dt diff --git a/examples/MDF/newton.png b/examples/MDF/newton.png new file mode 100644 index 0000000000000000000000000000000000000000..c25aadbb8d1e8f0523555e23cc492a42ffaf07bc GIT binary patch literal 19704 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 BL0$j= literal 0 HcmV?d00001 diff --git a/examples/MDF/newton.py b/examples/MDF/newton.py new file mode 100644 index 00000000..2ed7e0bd --- /dev/null +++ b/examples/MDF/newton.py @@ -0,0 +1,72 @@ +from modeci_mdf.mdf import Model, Graph, Node, Parameter, OutputPort +from modeci_mdf.execution_engine import EvaluableGraph +import matplotlib.pyplot as plt +import sys, os + +def main(): + # Creating the model and graph + mod = Model(id="NewtonCoolingModel") + mod_graph = Graph(id="cooling_process") + mod.graphs.append(mod_graph) + + # Defining Nodes and Parameters + cool_node = Node(id="cool_node") + cool_node.parameters.append(Parameter(id="cooling_coeff", value=0.1)) + cool_node.parameters.append(Parameter(id="T_a", value=20)) + s1 = Parameter(id="T_curr", default_initial_value=90, time_derivative="dT_dt") + cool_node.parameters.append(s1) + s2 = Parameter(id="dT_dt", default_initial_value=0, value="-cooling_coeff*(T_curr - T_a)") + cool_node.parameters.append(s2) + + # Output Ports + op1 = OutputPort(id="out_port", value="T_curr") + cool_node.output_ports.append(op1) + op2 = OutputPort(id="out_port2", value="dT_dt") + cool_node.output_ports.append(op2) + + mod_graph.nodes.append(cool_node) + new_file = mod.to_json_file("%s.json" % mod.id) + new_file = mod.to_yaml_file("%s.yaml" % mod.id) + + if "-run" in sys.argv: + # Running the Model + verbose = True + eg = EvaluableGraph(mod_graph, verbose=verbose) + dt = 0.1 + duration = 100 + t = 0 + times = [] + s = [] + + while t <= duration: + times.append(t) + print(f"====== Evaluating at t = {t:.1f} ======") + if t == 0: + eg.evaluate() + else: + eg.evaluate(time_increment=dt) + s.append(eg.enodes["cool_node"].evaluable_outputs["out_port"].curr_value) + t += dt + + # Plotting the results + plt.plot(times, s) + plt.xlabel('Time') + plt.ylabel('Temperature') + plt.title("Newton's Cooling Law Simulation") + plt.savefig('newton_plot.png') + plt.show() + + if "-graph" in sys.argv: + mod.to_graph_image( + engine="dot", + output_format="png", + view_on_render=False, + level=3, + filename_root="newton", + only_warn_on_fail=( + os.name == "nt" + ), # Makes sure test of this doesn't fail on Windows on GitHub Actions + ) + +if __name__ == "__main__": + main() diff --git a/examples/MDF/newton_plot.png b/examples/MDF/newton_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..dba7b1a365fc6cfe8ddda1fa7cd7502d13781dc1 GIT binary patch literal 22967 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 literal 0 HcmV?d00001 diff --git a/test_all.sh b/test_all.sh index 7146f7f6..03269d02 100755 --- a/test_all.sh +++ b/test_all.sh @@ -21,6 +21,7 @@ python arrays.py -run python states.py -run -nogui python abc_conditions.py -run python params_funcs.py -run +python newton.py -run ## Test exporting to NeuroML From 9d6dde9a14665aedd271c02ea839f0c6a9413750 Mon Sep 17 00:00:00 2001 From: Rimjhim Mittal Date: Thu, 30 May 2024 22:45:38 +0530 Subject: [PATCH 04/14] fixing some indentation issue --- examples/MDF/NewtonCoolingModel.json | 2 +- examples/MDF/newton.py | 30 +++++++++++++++------------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/examples/MDF/NewtonCoolingModel.json b/examples/MDF/NewtonCoolingModel.json index 2a19e80d..60162e25 100644 --- a/examples/MDF/NewtonCoolingModel.json +++ b/examples/MDF/NewtonCoolingModel.json @@ -35,4 +35,4 @@ } } } -} \ No newline at end of file +} diff --git a/examples/MDF/newton.py b/examples/MDF/newton.py index 2ed7e0bd..f620c0b1 100644 --- a/examples/MDF/newton.py +++ b/examples/MDF/newton.py @@ -15,7 +15,9 @@ def main(): cool_node.parameters.append(Parameter(id="T_a", value=20)) s1 = Parameter(id="T_curr", default_initial_value=90, time_derivative="dT_dt") cool_node.parameters.append(s1) - s2 = Parameter(id="dT_dt", default_initial_value=0, value="-cooling_coeff*(T_curr - T_a)") + s2 = Parameter( + id="dT_dt", default_initial_value=0, value="-cooling_coeff*(T_curr - T_a)" + ) cool_node.parameters.append(s2) # Output Ports @@ -50,23 +52,23 @@ def main(): # Plotting the results plt.plot(times, s) - plt.xlabel('Time') - plt.ylabel('Temperature') + plt.xlabel("Time") + plt.ylabel("Temperature") plt.title("Newton's Cooling Law Simulation") - plt.savefig('newton_plot.png') + plt.savefig("newton_plot.png") plt.show() if "-graph" in sys.argv: - mod.to_graph_image( - engine="dot", - output_format="png", - view_on_render=False, - level=3, - filename_root="newton", - only_warn_on_fail=( - os.name == "nt" - ), # Makes sure test of this doesn't fail on Windows on GitHub Actions - ) + mod.to_graph_image( + engine="dot", + output_format="png", + view_on_render=False, + level=3, + filename_root="newton", + only_warn_on_fail=( + os.name == "nt" + ), # Makes sure test of this doesn't fail on Windows on GitHub Actions + ) if __name__ == "__main__": main() From b6b7bf37d36e541c0adedb64d695aed914370908 Mon Sep 17 00:00:00 2001 From: Rimjhim Mittal Date: Thu, 30 May 2024 23:07:52 +0530 Subject: [PATCH 05/14] black formatted --- examples/MDF/newton.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/MDF/newton.py b/examples/MDF/newton.py index f620c0b1..ab3ae5d7 100644 --- a/examples/MDF/newton.py +++ b/examples/MDF/newton.py @@ -3,6 +3,7 @@ import matplotlib.pyplot as plt import sys, os + def main(): # Creating the model and graph mod = Model(id="NewtonCoolingModel") @@ -17,7 +18,7 @@ def main(): cool_node.parameters.append(s1) s2 = Parameter( id="dT_dt", default_initial_value=0, value="-cooling_coeff*(T_curr - T_a)" - ) + ) cool_node.parameters.append(s2) # Output Ports @@ -70,5 +71,6 @@ def main(): ), # Makes sure test of this doesn't fail on Windows on GitHub Actions ) + if __name__ == "__main__": main() From 1b181c6602181a37b81c7e9d09c1240801adfcf0 Mon Sep 17 00:00:00 2001 From: Rimjhim Mittal Date: Mon, 3 Jun 2024 11:58:46 +0530 Subject: [PATCH 06/14] Update README.md --- examples/MDF/README.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/examples/MDF/README.md b/examples/MDF/README.md index 27211f24..c716a777 100644 --- a/examples/MDF/README.md +++ b/examples/MDF/README.md @@ -2,7 +2,7 @@ Examples of [Python](https://python.org), [JSON](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON#:~:text=JavaScript%20Object%20Notation%20(JSON)%20is,page%2C%20or%20vice%20versa) and [YAML](https://circleci.com/blog/what-is-yaml-a-beginner-s-guide/) files to illustrate the structure and usage of MDF. - Simple | ABCD | Arrays | States | Conditions | Parameters and Functions + Simple | ABCD | Arrays | States | Conditions | Parameters and Functions | Newton'a Law of Cooling

@@ -73,6 +73,16 @@ A simple 3 [Nodes](https://mdf.readthedocs.io/en/latest/api/Specification.html#n A simple [Node](https://mdf.readthedocs.io/en/latest/api/Specification.html#node) with a number of different types of [Parameters](https://mdf.readthedocs.io/en/latest/api/Specification.html#parameter) (in blue; fixed and **stateful**) and [Functions](https://mdf.readthedocs.io/en/latest/api/Specification.html#function) (in purple; can be built in or ONNX based). +

+ +## Newton's Law of Cooling + +[Python Source](https://github.com/ModECI/MDF/blob/main/examples/MDF/newton.py) | [JSON](https://github.com/ModECI/MDF/blob/main/examples/MDF/NewtonCoolingModel.json) | [YAML](https://github.com/ModECI/MDF/blob/main/examples/MDF/NewtonCoolingModel.yaml) + +A simple [Newtonian cooling process](https://en.wikipedia.org/wiki/Newton%27s_law_of_cooling) model which simulates the cooling of an object to the ambient temperature over time. + + + ## More examples From d82719da9434af17ab0b88b73d8739179ccb6c55 Mon Sep 17 00:00:00 2001 From: Rimjhim Mittal Date: Mon, 3 Jun 2024 12:07:45 +0530 Subject: [PATCH 07/14] Update README.md --- examples/MDF/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/MDF/README.md b/examples/MDF/README.md index c716a777..e9694b3d 100644 --- a/examples/MDF/README.md +++ b/examples/MDF/README.md @@ -79,7 +79,7 @@ A simple [Node](https://mdf.readthedocs.io/en/latest/api/Specification.html#node [Python Source](https://github.com/ModECI/MDF/blob/main/examples/MDF/newton.py) | [JSON](https://github.com/ModECI/MDF/blob/main/examples/MDF/NewtonCoolingModel.json) | [YAML](https://github.com/ModECI/MDF/blob/main/examples/MDF/NewtonCoolingModel.yaml) -A simple [Newtonian cooling process](https://en.wikipedia.org/wiki/Newton%27s_law_of_cooling) model which simulates the cooling of an object to the ambient temperature over time. +A simple [Newtonian cooling process](https://en.wikipedia.org/wiki/Newton%27s_law_of_cooling) model that demonstrates the use of time derivative simulating the cooling of an object to the ambient temperature over time. From 7cc4341f9a6e45b730ef8b38f68b6b49271cdc05 Mon Sep 17 00:00:00 2001 From: Rimjhim Mittal Date: Mon, 3 Jun 2024 14:04:53 +0530 Subject: [PATCH 08/14] Uploading the notebook --- examples/MDF/Newton_Law_of_Cooling.ipynb | 3494 ++++++++++++++++++++++ 1 file changed, 3494 insertions(+) create mode 100644 examples/MDF/Newton_Law_of_Cooling.ipynb diff --git a/examples/MDF/Newton_Law_of_Cooling.ipynb b/examples/MDF/Newton_Law_of_Cooling.ipynb new file mode 100644 index 00000000..5a827325 --- /dev/null +++ b/examples/MDF/Newton_Law_of_Cooling.ipynb @@ -0,0 +1,3494 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "4581f50f-39bd-44e2-9287-160f904cd43b", + "metadata": { + "id": "4581f50f-39bd-44e2-9287-160f904cd43b" + }, + "source": [ + "# Implementing Model Description Format for Newton's Law of Cooling\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "5e8d408f-beb4-41ab-9124-1dc1655eb312", + "metadata": { + "id": "5e8d408f-beb4-41ab-9124-1dc1655eb312" + }, + "source": [ + "

\n", + "\n", + "## 1. Newton's Law of Cooling Process Model: Introduction\n", + "\n", + "In this notebook, a simple Newtonian cooling process model is implemented using the MDF library. The model simulates the cooling of an object to the ambient temperature over time.\n", + "\n", + "Newton's Law of Cooling is expressed by the differential equation:\n", + "$$\n", + "\\frac{dT}{dt} = -k(T - T_{\\text{ambient}})\n", + "$$\n", + "The temperature of the object is denoted by $T$,\\\n", + "The ambient temperature is denoted by $T_{\\text{ambient}}$,\\\n", + "The cooling coefficient is represented by $k$,\\\n", + "The rate of change of the temperature over time is given by $\\frac{dT}{dt}$.\\\n", + "\n" + ] + }, + { + "cell_type": "code", + "source": [ + "!pip install modeci_mdf" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "N_GWvBGgN4Fs", + "outputId": "a92af041-98fd-46d7-87d3-88beadc4670e" + }, + "id": "N_GWvBGgN4Fs", + "execution_count": 1, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: modeci_mdf in /usr/local/lib/python3.10/dist-packages (0.4.10)\n", + "Requirement already satisfied: graph-scheduler>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (1.2.1)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (1.25.2)\n", + "Requirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (3.7.1)\n", + "Requirement already satisfied: graphviz in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (0.20.3)\n", + "Requirement already satisfied: h5py in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (3.9.0)\n", + "Requirement already satisfied: onnxruntime in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (1.18.0)\n", + "Requirement already satisfied: onnx in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (1.16.1)\n", + "Requirement already satisfied: skl2onnx in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (1.17.0)\n", + "Requirement already satisfied: attrs>=21.1.0 in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (23.2.0)\n", + "Requirement already satisfied: cattrs in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (23.2.3)\n", + "Requirement already satisfied: modelspec<0.4,>=0.3.0 in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (0.3.4)\n", + "Requirement already satisfied: glom in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (23.5.0)\n", + "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from graph-scheduler>=1.1.1->modeci_mdf) (3.3)\n", + "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from graph-scheduler>=1.1.1->modeci_mdf) (2.0.3)\n", + "Requirement already satisfied: pint in /usr/local/lib/python3.10/dist-packages (from graph-scheduler>=1.1.1->modeci_mdf) (0.23)\n", + "Requirement already satisfied: scipy in /usr/local/lib/python3.10/dist-packages (from graph-scheduler>=1.1.1->modeci_mdf) (1.11.4)\n", + "Requirement already satisfied: toposort in /usr/local/lib/python3.10/dist-packages (from graph-scheduler>=1.1.1->modeci_mdf) (1.10)\n", + "Requirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from modelspec<0.4,>=0.3.0->modeci_mdf) (6.0.1)\n", + "Requirement already satisfied: pymongo in /usr/local/lib/python3.10/dist-packages (from modelspec<0.4,>=0.3.0->modeci_mdf) (4.7.2)\n", + "Requirement already satisfied: tabulate in /usr/local/lib/python3.10/dist-packages (from modelspec<0.4,>=0.3.0->modeci_mdf) (0.9.0)\n", + "Requirement already satisfied: docstring-parser in /usr/local/lib/python3.10/dist-packages (from modelspec<0.4,>=0.3.0->modeci_mdf) (0.16)\n", + "Requirement already satisfied: exceptiongroup>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from cattrs->modeci_mdf) (1.2.1)\n", + "Requirement already satisfied: typing-extensions!=4.6.3,>=4.1.0 in /usr/local/lib/python3.10/dist-packages (from cattrs->modeci_mdf) (4.11.0)\n", + "Requirement already satisfied: boltons>=19.3.0 in /usr/local/lib/python3.10/dist-packages (from glom->modeci_mdf) (24.0.0)\n", + "Requirement already satisfied: face==20.1.1 in /usr/local/lib/python3.10/dist-packages (from glom->modeci_mdf) (20.1.1)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->modeci_mdf) (1.2.1)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib->modeci_mdf) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->modeci_mdf) (4.51.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->modeci_mdf) (1.4.5)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->modeci_mdf) (24.0)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->modeci_mdf) (9.4.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->modeci_mdf) (3.1.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib->modeci_mdf) (2.8.2)\n", + "Requirement already satisfied: protobuf>=3.20.2 in /usr/local/lib/python3.10/dist-packages (from onnx->modeci_mdf) (3.20.2)\n", + "Requirement already satisfied: coloredlogs in /usr/local/lib/python3.10/dist-packages (from onnxruntime->modeci_mdf) (15.0.1)\n", + "Requirement already satisfied: flatbuffers in /usr/local/lib/python3.10/dist-packages (from onnxruntime->modeci_mdf) (24.3.25)\n", + "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from onnxruntime->modeci_mdf) (1.12)\n", + "Requirement already satisfied: scikit-learn>=1.1 in /usr/local/lib/python3.10/dist-packages (from skl2onnx->modeci_mdf) (1.2.2)\n", + "Requirement already satisfied: onnxconverter-common>=1.7.0 in /usr/local/lib/python3.10/dist-packages (from skl2onnx->modeci_mdf) (1.14.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib->modeci_mdf) (1.16.0)\n", + "Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=1.1->skl2onnx->modeci_mdf) (1.4.2)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=1.1->skl2onnx->modeci_mdf) (3.5.0)\n", + "Requirement already satisfied: humanfriendly>=9.1 in /usr/local/lib/python3.10/dist-packages (from coloredlogs->onnxruntime->modeci_mdf) (10.0)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->graph-scheduler>=1.1.1->modeci_mdf) (2023.4)\n", + "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas->graph-scheduler>=1.1.1->modeci_mdf) (2024.1)\n", + "Requirement already satisfied: dnspython<3.0.0,>=1.16.0 in /usr/local/lib/python3.10/dist-packages (from pymongo->modelspec<0.4,>=0.3.0->modeci_mdf) (2.6.1)\n", + "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->onnxruntime->modeci_mdf) (1.3.0)\n" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c9108ee9-870c-43ef-a6d6-0cc0656403ca", + "metadata": { + "id": "c9108ee9-870c-43ef-a6d6-0cc0656403ca" + }, + "outputs": [], + "source": [ + "from modeci_mdf.mdf import Model, Graph, Node, Parameter, OutputPort, Function, InputPort" + ] + }, + { + "cell_type": "markdown", + "id": "e392770f-6610-448f-a17e-92d2f19bf213", + "metadata": { + "tags": [], + "id": "e392770f-6610-448f-a17e-92d2f19bf213" + }, + "source": [ + "## 2. Creating the Model and Graph\n", + "First, we initialize the model and a graph to hold our computational nodes." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "42d29dbe-9da6-421c-b5f1-6c0ba65cd9a8", + "metadata": { + "id": "42d29dbe-9da6-421c-b5f1-6c0ba65cd9a8" + }, + "outputs": [], + "source": [ + "mod = Model(id=\"NewtonCoolingModel\")\n", + "mod_graph = Graph(id=\"cooling_process\")\n", + "mod.graphs.append(mod_graph)" + ] + }, + { + "cell_type": "markdown", + "id": "13452273-3035-4c7d-98a0-5a4bf1fc936d", + "metadata": { + "id": "13452273-3035-4c7d-98a0-5a4bf1fc936d" + }, + "source": [ + "### 2.1 Defining Nodes and Parameters\n", + "We define a single node with parameters for the cooling coefficient, ambient temperature (\\`T_a\\`), current temperature (\\`T_curr\\`), and the rate of temperature change (\\`dT_dt\\`). These parameters are essential for modeling the cooling process according to Newton's law of cooling." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "b285917f-c263-4cb4-bb77-410dfd239bc6", + "metadata": { + "id": "b285917f-c263-4cb4-bb77-410dfd239bc6" + }, + "outputs": [], + "source": [ + "cool_node = Node(id=\"cool_node\")\n", + "cool_node.parameters.append(Parameter(id=\"cooling_coeff\", value=0.1))\n", + "cool_node.parameters.append(Parameter(id=\"T_a\", value=20))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "9ebb4a51-e0eb-4966-9fa5-f86933fada67", + "metadata": { + "id": "9ebb4a51-e0eb-4966-9fa5-f86933fada67" + }, + "outputs": [], + "source": [ + "s1 = Parameter(\n", + " id=\"T_curr\", default_initial_value=90, time_derivative=\"dT_dt\"\n", + ")\n", + "cool_node.parameters.append(s1)\n", + "\n", + "s2 = Parameter(\n", + " id=\"dT_dt\",\n", + " default_initial_value=0,\n", + " value=\"-cooling_coeff*(T_curr - T_a)\",\n", + ")\n", + "cool_node.parameters.append(s2)" + ] + }, + { + "cell_type": "markdown", + "id": "f45f4dc5-db21-4623-b95b-caeb23a27a2c", + "metadata": { + "id": "f45f4dc5-db21-4623-b95b-caeb23a27a2c" + }, + "source": [ + "### 2.2 Output Ports\n", + "An output port is defined to represent the current temperature of the object and the rate of change of the temperature over time 'dT_dt'." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "f5130413-ac3b-45cb-bca1-2bc43907cbd3", + "metadata": { + "id": "f5130413-ac3b-45cb-bca1-2bc43907cbd3" + }, + "outputs": [], + "source": [ + "op1 = OutputPort(id=\"out_port\", value=\"T_curr\")\n", + "cool_node.output_ports.append(op1)\n", + "op2 = OutputPort(id=\"out_port2\", value=\"dT_dt\")\n", + "cool_node.output_ports.append(op2)" + ] + }, + { + "cell_type": "markdown", + "id": "f5644dcf-218c-41e5-9458-7ab4baf06da2", + "metadata": { + "tags": [], + "id": "f5644dcf-218c-41e5-9458-7ab4baf06da2" + }, + "source": [ + "## 3. Visualizing the Model\n", + "The MDF library allows for the visualization of the model structure, which can be generated as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "61cf61d9-3a05-4f93-a37e-6603ce16118c", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 291 + }, + "id": "61cf61d9-3a05-4f93-a37e-6603ce16118c", + "outputId": "e9ea80d7-10cf-4145-ca4d-9fd7390d9c1e" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Converting MDF graph: cooling_process to graphviz (level: 3, format: png)\n", + " Node: cool_node\n", + "Written graph image to: NewtonsLawOfCooling.png\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 7 + } + ], + "source": [ + "mod_graph.nodes.append(cool_node)\n", + "mod.to_graph_image(\n", + " engine=\"dot\",\n", + " output_format=\"png\",\n", + " view_on_render=False,\n", + " level=3,\n", + " filename_root=\"NewtonsLawOfCooling\",\n", + " is_horizontal=True\n", + " )\n", + "\n", + "from IPython.display import Image\n", + "Image(filename=\"NewtonsLawOfCooling.png\")" + ] + }, + { + "cell_type": "markdown", + "id": "8d5adafb-e704-41c7-ab91-d83f887e0d29", + "metadata": { + "tags": [], + "id": "8d5adafb-e704-41c7-ab91-d83f887e0d29" + }, + "source": [ + "## 4. Print the structure as yaml" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "af51ce0d-5b55-431e-b6c6-dafa53d74ab7", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "af51ce0d-5b55-431e-b6c6-dafa53d74ab7", + "outputId": "6a625ee0-e7e5-40db-d929-24d8d0597bb5" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "cooling_process:\n", + " nodes:\n", + " cool_node:\n", + " parameters:\n", + " cooling_coeff:\n", + " value: 0.1\n", + " T_a:\n", + " value: 20\n", + " T_curr:\n", + " default_initial_value: 90\n", + " time_derivative: dT_dt\n", + " dT_dt:\n", + " value: -cooling_coeff*(T_curr - T_a)\n", + " default_initial_value: 0\n", + " output_ports:\n", + " out_port:\n", + " value: T_curr\n", + " out_port2:\n", + " value: dT_dt\n", + "\n" + ] + } + ], + "source": [ + "print(mod_graph.to_yaml())" + ] + }, + { + "cell_type": "markdown", + "id": "3b8e928c-517d-4873-90d5-4e6cea5bc4bf", + "metadata": { + "tags": [], + "id": "3b8e928c-517d-4873-90d5-4e6cea5bc4bf" + }, + "source": [ + "## 5. Running the Model\n", + "We can execute the model simulation over a specified duration. This is achieved using the \\`EvaluableGraph\\` class from MDF's execution engine, illustrating how the temperature of the object changes over time." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "4ac2c8b0-7578-4442-9b33-b713a7f2008f", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "4ac2c8b0-7578-4442-9b33-b713a7f2008f", + "outputId": "6673188f-f389-4389-fd34-0ceb8329b205" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "Init graph: cooling_process\n", + "====== Evaluating at t = 0.0 ======\n", + "dT_dt= None\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 0.1 ======\n", + "dT_dt= -7\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 0.2 ======\n", + "dT_dt= -6.93\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 0.3 ======\n", + "dT_dt= -6.8607000000000005\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 0.4 ======\n", + "dT_dt= -6.792093\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 0.5 ======\n", + "dT_dt= -6.724172070000001\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 0.6 ======\n", + "dT_dt= -6.656930349300001\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 0.7 ======\n", + "dT_dt= -6.5903610458070006\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 0.8 ======\n", + "dT_dt= -6.52445743534893\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 0.9 ======\n", + "dT_dt= -6.45921286099544\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 1.0 ======\n", + "dT_dt= -6.394620732385485\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 1.1 ======\n", + "dT_dt= -6.330674525061631\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 1.2 ======\n", + "dT_dt= -6.267367779811014\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 1.3 ======\n", + "dT_dt= -6.204694102012903\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 1.4 ======\n", + "dT_dt= -6.142647160992773\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 1.5 ======\n", + "dT_dt= -6.081220689382846\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 1.6 ======\n", + "dT_dt= -6.020408482489017\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 1.7 ======\n", + "dT_dt= -5.9602043976641275\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 1.8 ======\n", + "dT_dt= -5.9006023536874865\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 1.9 ======\n", + "dT_dt= -5.841596330150612\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 2.0 ======\n", + "dT_dt= -5.7831803668491055\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 2.1 ======\n", + "dT_dt= -5.7253485631806145\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 2.2 ======\n", + "dT_dt= -5.668095077548809\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 2.3 ======\n", + "dT_dt= -5.611414126773321\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 2.4 ======\n", + "dT_dt= -5.555299985505588\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 2.5 ======\n", + "dT_dt= -5.499746985650532\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 2.6 ======\n", + "dT_dt= -5.444749515794027\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 2.7 ======\n", + "dT_dt= -5.390302020636087\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 2.8 ======\n", + "dT_dt= -5.336399000429726\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 2.9 ======\n", + "dT_dt= -5.2830350104254284\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 3.0 ======\n", + "dT_dt= -5.230204660321174\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 3.1 ======\n", + "dT_dt= -5.177902613717961\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 3.2 ======\n", + "dT_dt= -5.126123587580782\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 3.3 ======\n", + "dT_dt= -5.074862351704974\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 3.4 ======\n", + "dT_dt= -5.024113728187924\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 3.5 ======\n", + "dT_dt= -4.973872590906044\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 3.6 ======\n", + "dT_dt= -4.924133864996984\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 3.7 ======\n", + "dT_dt= -4.874892526347015\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 3.8 ======\n", + "dT_dt= -4.826143601083544\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 3.9 ======\n", + "dT_dt= -4.777882165072708\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 4.0 ======\n", + "dT_dt= -4.730103343421982\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 4.1 ======\n", + "dT_dt= -4.682802309987763\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 4.2 ======\n", + "dT_dt= -4.635974286887886\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 4.3 ======\n", + "dT_dt= -4.589614544019007\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 4.4 ======\n", + "dT_dt= -4.543718398578817\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 4.5 ======\n", + "dT_dt= -4.498281214593028\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 4.6 ======\n", + "dT_dt= -4.453298402447098\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 4.7 ======\n", + "dT_dt= -4.408765418422627\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 4.8 ======\n", + "dT_dt= -4.3646777642384\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 4.9 ======\n", + "dT_dt= -4.321030986596017\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 5.0 ======\n", + "dT_dt= -4.277820676730056\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 5.1 ======\n", + "dT_dt= -4.235042469962756\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 5.2 ======\n", + "dT_dt= -4.192692045263128\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 5.3 ======\n", + "dT_dt= -4.150765124810497\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 5.4 ======\n", + "dT_dt= -4.1092574735623915\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 5.5 ======\n", + "dT_dt= -4.068164898826768\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 5.6 ======\n", + "dT_dt= -4.027483249838499\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 5.7 ======\n", + "dT_dt= -3.987208417340115\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 5.8 ======\n", + "dT_dt= -3.9473363331667137\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 5.9 ======\n", + "dT_dt= -3.907862969835047\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 6.0 ======\n", + "dT_dt= -3.8687843401366964\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 6.1 ======\n", + "dT_dt= -3.8300964967353295\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 6.2 ======\n", + "dT_dt= -3.7917955317679763\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 6.3 ======\n", + "dT_dt= -3.7538775764502965\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 6.4 ======\n", + "dT_dt= -3.7163388006857936\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 6.5 ======\n", + "dT_dt= -3.6791754126789358\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 6.6 ======\n", + "dT_dt= -3.6423836585521467\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 6.7 ======\n", + "dT_dt= -3.605959821966625\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 6.8 ======\n", + "dT_dt= -3.569900223746959\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 6.9 ======\n", + "dT_dt= -3.5342012215094893\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 7.0 ======\n", + "dT_dt= -3.498859209294394\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 7.1 ======\n", + "dT_dt= -3.4638706172014504\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 7.2 ======\n", + "dT_dt= -3.429231911029436\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 7.3 ======\n", + "dT_dt= -3.394939591919142\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 7.4 ======\n", + "dT_dt= -3.3609901959999506\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 7.5 ======\n", + "dT_dt= -3.3273802940399513\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 7.6 ======\n", + "dT_dt= -3.2941064910995514\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 7.7 ======\n", + "dT_dt= -3.2611654261885565\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 7.8 ======\n", + "dT_dt= -3.228553771926671\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 7.9 ======\n", + "dT_dt= -3.196268234207404\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 8.0 ======\n", + "dT_dt= -3.16430555186533\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 8.1 ======\n", + "dT_dt= -3.1326624963466765\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 8.2 ======\n", + "dT_dt= -3.1013358713832098\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 8.3 ======\n", + "dT_dt= -3.0703225126693776\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 8.4 ======\n", + "dT_dt= -3.0396192875426835\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 8.5 ======\n", + "dT_dt= -3.0092230946672567\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 8.6 ======\n", + "dT_dt= -2.979130863720584\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 8.7 ======\n", + "dT_dt= -2.9493395550833785\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 8.8 ======\n", + "dT_dt= -2.9198461595325442\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 8.9 ======\n", + "dT_dt= -2.8906476979372187\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 9.0 ======\n", + "dT_dt= -2.861741220957846\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 9.1 ======\n", + "dT_dt= -2.8331238087482675\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 9.2 ======\n", + "dT_dt= -2.8047925706607852\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 9.3 ======\n", + "dT_dt= -2.7767446449541775\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 9.4 ======\n", + "dT_dt= -2.7489771985046354\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 9.5 ======\n", + "dT_dt= -2.721487426519589\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 9.6 ======\n", + "dT_dt= -2.694272552254393\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 9.7 ======\n", + "dT_dt= -2.6673298267318497\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 9.8 ======\n", + "dT_dt= -2.640656528464531\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 9.9 ======\n", + "dT_dt= -2.6142499631798857\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 10.0 ======\n", + "dT_dt= -2.5881074635480865\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 10.1 ======\n", + "dT_dt= -2.5622263889126056\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 10.2 ======\n", + "dT_dt= -2.5366041250234797\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 10.3 ======\n", + "dT_dt= -2.511238083773245\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 10.4 ======\n", + "dT_dt= -2.4861257029355124\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 10.5 ======\n", + "dT_dt= -2.4612644459061572\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 10.6 ======\n", + "dT_dt= -2.4366518014470957\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 10.7 ======\n", + "dT_dt= -2.4122852834326247\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 10.8 ======\n", + "dT_dt= -2.3881624305982982\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 10.9 ======\n", + "dT_dt= -2.364280806292315\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 11.0 ======\n", + "dT_dt= -2.340637998229392\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 11.1 ======\n", + "dT_dt= -2.317231618247098\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 11.2 ======\n", + "dT_dt= -2.294059302064627\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 11.3 ======\n", + "dT_dt= -2.271118709043981\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 11.4 ======\n", + "dT_dt= -2.2484075219535415\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 11.5 ======\n", + "dT_dt= -2.2259234467340057\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 11.6 ======\n", + "dT_dt= -2.203664212266666\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 11.7 ======\n", + "dT_dt= -2.1816275701439993\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 11.8 ======\n", + "dT_dt= -2.1598112944425596\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 11.9 ======\n", + "dT_dt= -2.1382131814981338\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 12.0 ======\n", + "dT_dt= -2.1168310496831526\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 12.1 ======\n", + "dT_dt= -2.095662739186321\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 12.2 ======\n", + "dT_dt= -2.0747061117944576\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 12.3 ======\n", + "dT_dt= -2.053959050676513\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 12.4 ======\n", + "dT_dt= -2.0334194601697475\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 12.5 ======\n", + "dT_dt= -2.01308526556805\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 12.6 ======\n", + "dT_dt= -1.9929544129123693\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 12.7 ======\n", + "dT_dt= -1.973024868783246\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 12.8 ======\n", + "dT_dt= -1.9532946200954138\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 12.9 ======\n", + "dT_dt= -1.9337616738944599\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 13.0 ======\n", + "dT_dt= -1.9144240571555153\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 13.1 ======\n", + "dT_dt= -1.8952798165839604\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 13.2 ======\n", + "dT_dt= -1.876327018418121\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 13.3 ======\n", + "dT_dt= -1.8575637482339395\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 13.4 ======\n", + "dT_dt= -1.8389881107516004\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 13.5 ======\n", + "dT_dt= -1.8205982296440846\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 13.6 ======\n", + "dT_dt= -1.8023922473476433\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 13.7 ======\n", + "dT_dt= -1.784368324874167\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 13.8 ======\n", + "dT_dt= -1.7665246416254257\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 13.9 ======\n", + "dT_dt= -1.7488593952091713\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 14.0 ======\n", + "dT_dt= -1.7313708012570794\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 14.1 ======\n", + "dT_dt= -1.7140570932445087\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 14.2 ======\n", + "dT_dt= -1.6969165223120635\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 14.3 ======\n", + "dT_dt= -1.6799473570889427\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 14.4 ======\n", + "dT_dt= -1.663147883518053\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 14.5 ======\n", + "dT_dt= -1.6465164046828726\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 14.6 ======\n", + "dT_dt= -1.6300512406360441\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 14.7 ======\n", + "dT_dt= -1.613750728229684\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 14.8 ======\n", + "dT_dt= -1.5976132209473868\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 14.9 ======\n", + "dT_dt= -1.581637088737913\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 15.0 ======\n", + "dT_dt= -1.5658207178505337\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 15.1 ======\n", + "dT_dt= -1.5501625106720285\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 15.2 ======\n", + "dT_dt= -1.534660885565308\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 15.3 ======\n", + "dT_dt= -1.5193142767096555\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 15.4 ======\n", + "dT_dt= -1.5041211339425589\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 15.5 ======\n", + "dT_dt= -1.4890799226031335\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 15.6 ======\n", + "dT_dt= -1.4741891233771023\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 15.7 ======\n", + "dT_dt= -1.459447232143331\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 15.8 ======\n", + "dT_dt= -1.4448527598218974\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 15.9 ======\n", + "dT_dt= -1.4304042322236783\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 16.0 ======\n", + "dT_dt= -1.4161001899014416\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 16.1 ======\n", + "dT_dt= -1.4019391880024274\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 16.2 ======\n", + "dT_dt= -1.387919796122403\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 16.3 ======\n", + "dT_dt= -1.3740405981611787\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 16.4 ======\n", + "dT_dt= -1.3603001921795668\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 16.5 ======\n", + "dT_dt= -1.3466971902577711\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 16.6 ======\n", + "dT_dt= -1.3332302183551932\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 16.7 ======\n", + "dT_dt= -1.3198979161716409\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 16.8 ======\n", + "dT_dt= -1.3066989370099245\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 16.9 ======\n", + "dT_dt= -1.2936319476398255\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 17.0 ======\n", + "dT_dt= -1.2806956281634272\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 17.1 ======\n", + "dT_dt= -1.267888671881793\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 17.2 ======\n", + "dT_dt= -1.2552097851629747\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 17.3 ======\n", + "dT_dt= -1.2426576873113448\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 17.4 ======\n", + "dT_dt= -1.2302311104382313\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 17.5 ======\n", + "dT_dt= -1.2179287993338492\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 17.6 ======\n", + "dT_dt= -1.2057495113405103\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 17.7 ======\n", + "dT_dt= -1.1936920162271052\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 17.8 ======\n", + "dT_dt= -1.181755096064834\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 17.9 ======\n", + "dT_dt= -1.1699375451041856\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 18.0 ======\n", + "dT_dt= -1.1582381696531439\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 18.1 ======\n", + "dT_dt= -1.1466557879566126\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 18.2 ======\n", + "dT_dt= -1.1351892300770463\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 18.3 ======\n", + "dT_dt= -1.123837337776276\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 18.4 ======\n", + "dT_dt= -1.1125989643985132\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 18.5 ======\n", + "dT_dt= -1.1014729747545282\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 18.6 ======\n", + "dT_dt= -1.0904582450069829\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 18.7 ======\n", + "dT_dt= -1.079553662556913\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 18.8 ======\n", + "dT_dt= -1.0687581259313441\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 18.9 ======\n", + "dT_dt= -1.0580705446720307\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 19.0 ======\n", + "dT_dt= -1.0474898392253102\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 19.1 ======\n", + "dT_dt= -1.0370149408330573\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 19.2 ======\n", + "dT_dt= -1.0266447914247265\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 19.3 ======\n", + "dT_dt= -1.0163783435104794\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 19.4 ======\n", + "dT_dt= -1.0062145600753745\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 19.5 ======\n", + "dT_dt= -0.9961524144746208\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 19.6 ======\n", + "dT_dt= -0.9861908903298744\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 19.7 ======\n", + "dT_dt= -0.9763289814265758\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 19.8 ======\n", + "dT_dt= -0.9665656916123102\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 19.9 ======\n", + "dT_dt= -0.9569000346961872\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 20.0 ======\n", + "dT_dt= -0.9473310343492252\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 20.1 ======\n", + "dT_dt= -0.9378577240057329\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 20.2 ======\n", + "dT_dt= -0.9284791467656757\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 20.3 ======\n", + "dT_dt= -0.9191943552980189\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 20.4 ======\n", + "dT_dt= -0.9100024117450385\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 20.5 ======\n", + "dT_dt= -0.900902387627588\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 20.6 ======\n", + "dT_dt= -0.8918933637513121\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 20.7 ======\n", + "dT_dt= -0.882974430113799\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 20.8 ======\n", + "dT_dt= -0.8741446858126608\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 20.9 ======\n", + "dT_dt= -0.8654032389545343\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 21.0 ======\n", + "dT_dt= -0.8567492065649891\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 21.1 ======\n", + "dT_dt= -0.8481817144993393\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 21.2 ======\n", + "dT_dt= -0.8396998973543458\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 21.3 ======\n", + "dT_dt= -0.8313028983808025\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 21.4 ======\n", + "dT_dt= -0.8229898693969944\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 21.5 ======\n", + "dT_dt= -0.8147599707030246\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 21.6 ======\n", + "dT_dt= -0.8066123709959943\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 21.7 ======\n", + "dT_dt= -0.7985462472860345\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 21.8 ======\n", + "dT_dt= -0.7905607848131742\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 21.9 ======\n", + "dT_dt= -0.7826551769650423\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 22.0 ======\n", + "dT_dt= -0.7748286251953918\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 22.1 ======\n", + "dT_dt= -0.767080338943438\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 22.2 ======\n", + "dT_dt= -0.7594095355540035\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 22.3 ======\n", + "dT_dt= -0.7518154401984636\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 22.4 ======\n", + "dT_dt= -0.744297285796479\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 22.5 ======\n", + "dT_dt= -0.7368543129385142\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 22.6 ======\n", + "dT_dt= -0.7294857698091293\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 22.7 ======\n", + "dT_dt= -0.7221909121110379\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 22.8 ======\n", + "dT_dt= -0.7149690029899276\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 22.9 ======\n", + "dT_dt= -0.7078193129600283\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 23.0 ======\n", + "dT_dt= -0.700741119830428\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 23.1 ======\n", + "dT_dt= -0.6937337086321236\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 23.2 ======\n", + "dT_dt= -0.6867963715458025\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 23.3 ======\n", + "dT_dt= -0.6799284078303445\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 23.4 ======\n", + "dT_dt= -0.6731291237520409\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 23.5 ======\n", + "dT_dt= -0.6663978325145206\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 23.6 ======\n", + "dT_dt= -0.6597338541893752\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 23.7 ======\n", + "dT_dt= -0.6531365156474813\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 23.8 ======\n", + "dT_dt= -0.6466051504910066\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 23.9 ======\n", + "dT_dt= -0.6401390989860964\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 24.0 ======\n", + "dT_dt= -0.6337377079962355\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 24.1 ======\n", + "dT_dt= -0.6274003309162733\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 24.2 ======\n", + "dT_dt= -0.6211263276071105\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 24.3 ======\n", + "dT_dt= -0.6149150643310393\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 24.4 ======\n", + "dT_dt= -0.6087659136877289\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 24.5 ======\n", + "dT_dt= -0.6026782545508518\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 24.6 ======\n", + "dT_dt= -0.5966514720053432\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 24.7 ======\n", + "dT_dt= -0.5906849572852899\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 24.8 ======\n", + "dT_dt= -0.5847781077124371\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 24.9 ======\n", + "dT_dt= -0.5789303266353126\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 25.0 ======\n", + "dT_dt= -0.5731410233689594\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 25.1 ======\n", + "dT_dt= -0.5674096131352698\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 25.2 ======\n", + "dT_dt= -0.5617355170039172\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 25.3 ======\n", + "dT_dt= -0.5561181618338779\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 25.4 ======\n", + "dT_dt= -0.5505569802155392\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 25.5 ======\n", + "dT_dt= -0.5450514104133838\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 25.6 ======\n", + "dT_dt= -0.5396008963092499\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 25.7 ======\n", + "dT_dt= -0.5342048873461572\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 25.8 ======\n", + "dT_dt= -0.5288628384726956\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 25.9 ======\n", + "dT_dt= -0.5235742100879687\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 26.0 ======\n", + "dT_dt= -0.518338467987089\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 26.1 ======\n", + "dT_dt= -0.5131550833072183\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 26.2 ======\n", + "dT_dt= -0.5080235324741462\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 26.3 ======\n", + "dT_dt= -0.5029432971494047\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 26.4 ======\n", + "dT_dt= -0.49791386417791056\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 26.5 ======\n", + "dT_dt= -0.49293472553613144\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 26.6 ======\n", + "dT_dt= -0.48800537828077\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 26.7 ======\n", + "dT_dt= -0.48312532449796247\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 26.8 ======\n", + "dT_dt= -0.4782940712529829\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 26.9 ======\n", + "dT_dt= -0.473511130540453\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 27.0 ======\n", + "dT_dt= -0.4687760192350485\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 27.1 ======\n", + "dT_dt= -0.464088259042698\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 27.2 ======\n", + "dT_dt= -0.4594473764522711\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 27.3 ======\n", + "dT_dt= -0.4548529026877482\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 27.4 ======\n", + "dT_dt= -0.45030437366087067\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 27.5 ======\n", + "dT_dt= -0.44580132992426197\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 27.6 ======\n", + "dT_dt= -0.44134331662501936\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 27.7 ======\n", + "dT_dt= -0.4369298834587692\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 27.8 ======\n", + "dT_dt= -0.4325605846241814\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 27.9 ======\n", + "dT_dt= -0.4282349787779396\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 28.0 ======\n", + "dT_dt= -0.4239526289901601\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 28.1 ======\n", + "dT_dt= -0.4197131027002584\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 28.2 ======\n", + "dT_dt= -0.41551597167325593\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 28.3 ======\n", + "dT_dt= -0.4113608119565232\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 28.4 ======\n", + "dT_dt= -0.4072472038369579\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 28.5 ======\n", + "dT_dt= -0.40317473179858826\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 28.6 ======\n", + "dT_dt= -0.3991429844806025\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 28.7 ======\n", + "dT_dt= -0.39515155463579643\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 28.8 ======\n", + "dT_dt= -0.39120003908943846\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 28.9 ======\n", + "dT_dt= -0.387288038698544\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 29.0 ======\n", + "dT_dt= -0.3834151583115585\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 29.1 ======\n", + "dT_dt= -0.37958100672844286\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 29.2 ======\n", + "dT_dt= -0.3757851966611583\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 29.3 ======\n", + "dT_dt= -0.3720273446945466\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 29.4 ======\n", + "dT_dt= -0.3683070712476013\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 29.5 ======\n", + "dT_dt= -0.3646240005351253\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 29.6 ======\n", + "dT_dt= -0.36097776052977404\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 29.7 ======\n", + "dT_dt= -0.3573679829244764\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 29.8 ======\n", + "dT_dt= -0.3537943030952317\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 29.9 ======\n", + "dT_dt= -0.35025636006427946\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 30.0 ======\n", + "dT_dt= -0.34675379646363674\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 30.1 ======\n", + "dT_dt= -0.3432862584990005\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 30.2 ======\n", + "dT_dt= -0.33985339591401065\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 30.3 ======\n", + "dT_dt= -0.3364548619548707\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 30.4 ======\n", + "dT_dt= -0.33309031333532213\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 30.5 ======\n", + "dT_dt= -0.3297594102019691\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 30.6 ======\n", + "dT_dt= -0.32646181609994934\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 30.7 ======\n", + "dT_dt= -0.3231971979389499\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 30.8 ======\n", + "dT_dt= -0.31996522595956023\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 30.9 ======\n", + "dT_dt= -0.31676557369996455\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 31.0 ======\n", + "dT_dt= -0.3135979179629647\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 31.1 ======\n", + "dT_dt= -0.31046193878333495\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 31.2 ======\n", + "dT_dt= -0.3073573193955017\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 31.3 ======\n", + "dT_dt= -0.30428374620154663\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 31.4 ======\n", + "dT_dt= -0.30124090873953124\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 31.5 ======\n", + "dT_dt= -0.29822849965213577\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 31.6 ======\n", + "dT_dt= -0.2952462146556144\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 31.7 ======\n", + "dT_dt= -0.2922937525090582\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 31.8 ======\n", + "dT_dt= -0.2893708149839675\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 31.9 ======\n", + "dT_dt= -0.2864771068341277\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 32.0 ======\n", + "dT_dt= -0.2836123357657865\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 32.1 ======\n", + "dT_dt= -0.2807762124081286\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 32.2 ======\n", + "dT_dt= -0.2779684502840475\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 32.3 ======\n", + "dT_dt= -0.275188765781207\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 32.4 ======\n", + "dT_dt= -0.2724368781233949\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 32.5 ======\n", + "dT_dt= -0.2697125093421608\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 32.6 ======\n", + "dT_dt= -0.2670153842487391\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 32.7 ======\n", + "dT_dt= -0.26434523040625174\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 32.8 ======\n", + "dT_dt= -0.2617017781021893\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 32.9 ======\n", + "dT_dt= -0.25908476032116745\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 33.0 ======\n", + "dT_dt= -0.2564939127179557\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 33.1 ======\n", + "dT_dt= -0.25392897359077615\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 33.2 ======\n", + "dT_dt= -0.25138968385486854\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 33.3 ======\n", + "dT_dt= -0.24887578701631982\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 33.4 ======\n", + "dT_dt= -0.2463870291461568\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 33.5 ======\n", + "dT_dt= -0.2439231588546953\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 33.6 ======\n", + "dT_dt= -0.24148392726614817\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 33.7 ======\n", + "dT_dt= -0.23906908799348658\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 33.8 ======\n", + "dT_dt= -0.23667839711355187\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 33.9 ======\n", + "dT_dt= -0.23431161314241644\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 34.0 ======\n", + "dT_dt= -0.2319684970109922\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 34.1 ======\n", + "dT_dt= -0.22964881204088244\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 34.2 ======\n", + "dT_dt= -0.22735232392047353\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 34.3 ======\n", + "dT_dt= -0.22507880068126873\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 34.4 ======\n", + "dT_dt= -0.22282801267445615\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 34.5 ======\n", + "dT_dt= -0.22059973254771173\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 34.6 ======\n", + "dT_dt= -0.21839373522223476\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 34.7 ======\n", + "dT_dt= -0.2162097978700125\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 34.8 ======\n", + "dT_dt= -0.21404769989131225\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 34.9 ======\n", + "dT_dt= -0.21190722289239902\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 35.0 ======\n", + "dT_dt= -0.20978815066347495\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 35.1 ======\n", + "dT_dt= -0.2076902691568403\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 35.2 ======\n", + "dT_dt= -0.20561336646527195\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 35.3 ======\n", + "dT_dt= -0.20355723280061933\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 35.4 ======\n", + "dT_dt= -0.2015216604726131\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 35.5 ======\n", + "dT_dt= -0.19950644386788705\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 35.6 ======\n", + "dT_dt= -0.19751137942920816\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 35.7 ======\n", + "dT_dt= -0.1955362656349159\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 35.8 ======\n", + "dT_dt= -0.19358090297856664\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 35.9 ======\n", + "dT_dt= -0.19164509394878096\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 36.0 ======\n", + "dT_dt= -0.18972864300929332\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 36.1 ======\n", + "dT_dt= -0.18783135657920022\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 36.2 ======\n", + "dT_dt= -0.18595304301340826\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 36.3 ======\n", + "dT_dt= -0.18409351258327433\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 36.4 ======\n", + "dT_dt= -0.1822525774574416\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 36.5 ======\n", + "dT_dt= -0.1804300516828672\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 36.6 ======\n", + "dT_dt= -0.17862575116603843\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 36.7 ======\n", + "dT_dt= -0.1768394936543782\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 36.8 ======\n", + "dT_dt= -0.17507109871783444\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 36.9 ======\n", + "dT_dt= -0.17332038773065614\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 37.0 ======\n", + "dT_dt= -0.1715871838533495\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 37.1 ======\n", + "dT_dt= -0.16987131201481598\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 37.2 ======\n", + "dT_dt= -0.16817259889466776\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 37.3 ======\n", + "dT_dt= -0.16649087290572098\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 37.4 ======\n", + "dT_dt= -0.16482596417666395\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 37.5 ======\n", + "dT_dt= -0.16317770453489722\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 37.6 ======\n", + "dT_dt= -0.1615459274895482\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 37.7 ======\n", + "dT_dt= -0.1599304682146528\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 37.8 ======\n", + "dT_dt= -0.1583311635325064\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 37.9 ======\n", + "dT_dt= -0.15674785189718143\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 38.0 ======\n", + "dT_dt= -0.15518037337820978\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 38.1 ======\n", + "dT_dt= -0.15362856964442778\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 38.2 ======\n", + "dT_dt= -0.15209228394798338\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 38.3 ======\n", + "dT_dt= -0.15057136110850353\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 38.4 ======\n", + "dT_dt= -0.1490656474974184\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 38.5 ======\n", + "dT_dt= -0.1475749910224444\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 38.6 ======\n", + "dT_dt= -0.14609924111221986\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 38.7 ======\n", + "dT_dt= -0.14463824870109754\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 38.8 ======\n", + "dT_dt= -0.1431918662140866\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 38.9 ======\n", + "dT_dt= -0.1417599475519456\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 39.0 ======\n", + "dT_dt= -0.14034234807642607\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 39.1 ======\n", + "dT_dt= -0.13893892459566182\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 39.2 ======\n", + "dT_dt= -0.13754953534970513\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 39.3 ======\n", + "dT_dt= -0.13617403999620806\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 39.4 ======\n", + "dT_dt= -0.13481229959624594\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 39.5 ======\n", + "dT_dt= -0.1334641766002836\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 39.6 ======\n", + "dT_dt= -0.1321295348342808\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 39.7 ======\n", + "dT_dt= -0.13080823948593798\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 39.8 ======\n", + "dT_dt= -0.12950015709107845\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 39.9 ======\n", + "dT_dt= -0.1282051555201676\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 40.0 ======\n", + "dT_dt= -0.12692310396496573\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 40.1 ======\n", + "dT_dt= -0.12565387292531618\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 40.2 ======\n", + "dT_dt= -0.12439733419606291\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 40.3 ======\n", + "dT_dt= -0.12315336085410244\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 40.4 ======\n", + "dT_dt= -0.12192182724556133\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 40.5 ======\n", + "dT_dt= -0.1207026089731059\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 40.6 ======\n", + "dT_dt= -0.11949558288337486\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 40.7 ======\n", + "dT_dt= -0.11830062705454125\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 40.8 ======\n", + "dT_dt= -0.11711762078399596\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 40.9 ======\n", + "dT_dt= -0.11594644457615609\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 41.0 ======\n", + "dT_dt= -0.11478698013039441\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 41.1 ======\n", + "dT_dt= -0.11363911032909045\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 41.2 ======\n", + "dT_dt= -0.11250271922579956\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 41.3 ======\n", + "dT_dt= -0.11137769203354148\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 41.4 ======\n", + "dT_dt= -0.11026391511320598\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 41.5 ======\n", + "dT_dt= -0.10916127596207376\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 41.6 ======\n", + "dT_dt= -0.10806966320245302\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 41.7 ======\n", + "dT_dt= -0.10698896657042845\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 41.8 ======\n", + "dT_dt= -0.10591907690472412\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 41.9 ======\n", + "dT_dt= -0.10485988613567693\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 42.0 ======\n", + "dT_dt= -0.10381128727432021\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 42.1 ======\n", + "dT_dt= -0.1027731744015771\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 42.2 ======\n", + "dT_dt= -0.10174544265756147\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 42.3 ======\n", + "dT_dt= -0.10072798823098594\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 42.4 ======\n", + "dT_dt= -0.09972070834867602\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 42.5 ======\n", + "dT_dt= -0.09872350126518939\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 42.6 ======\n", + "dT_dt= -0.09773626625253762\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 42.7 ======\n", + "dT_dt= -0.09675890359001223\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 42.8 ======\n", + "dT_dt= -0.09579131455411201\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 42.9 ======\n", + "dT_dt= -0.09483340140857095\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 43.0 ======\n", + "dT_dt= -0.09388506739448524\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 43.1 ======\n", + "dT_dt= -0.09294621672054043\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 43.2 ======\n", + "dT_dt= -0.09201675455333494\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 43.3 ======\n", + "dT_dt= -0.0910965870078016\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 43.4 ======\n", + "dT_dt= -0.09018562113772362\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 43.5 ======\n", + "dT_dt= -0.08928376492634627\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 43.6 ======\n", + "dT_dt= -0.08839092727708292\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 43.7 ======\n", + "dT_dt= -0.0875070180043121\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 43.8 ======\n", + "dT_dt= -0.08663194782426907\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 43.9 ======\n", + "dT_dt= -0.08576562834602655\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 44.0 ======\n", + "dT_dt= -0.08490797206256638\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 44.1 ======\n", + "dT_dt= -0.08405889234194071\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 44.2 ======\n", + "dT_dt= -0.08321830341852135\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 44.3 ======\n", + "dT_dt= -0.08238612038433608\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 44.4 ======\n", + "dT_dt= -0.08156225918049281\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 44.5 ======\n", + "dT_dt= -0.0807466365886878\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 44.6 ======\n", + "dT_dt= -0.07993917022280109\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 44.7 ======\n", + "dT_dt= -0.07913977852057315\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 44.8 ======\n", + "dT_dt= -0.0783483807353676\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 44.9 ======\n", + "dT_dt= -0.07756489692801374\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 45.0 ======\n", + "dT_dt= -0.0767892479587335\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 45.1 ======\n", + "dT_dt= -0.07602135547914629\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 45.2 ======\n", + "dT_dt= -0.07526114192435465\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 45.3 ======\n", + "dT_dt= -0.07450853050511093\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 45.4 ======\n", + "dT_dt= -0.07376344520005987\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 45.5 ======\n", + "dT_dt= -0.07302581074805943\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 45.6 ======\n", + "dT_dt= -0.07229555264057873\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 45.7 ======\n", + "dT_dt= -0.07157259711417296\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 45.8 ======\n", + "dT_dt= -0.07085687114303134\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 45.9 ======\n", + "dT_dt= -0.0701483024316012\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 46.0 ======\n", + "dT_dt= -0.06944681940728507\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 46.1 ======\n", + "dT_dt= -0.0687523512132124\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 46.2 ======\n", + "dT_dt= -0.06806482770108034\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 46.3 ======\n", + "dT_dt= -0.06738417942406941\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 46.4 ======\n", + "dT_dt= -0.06671033762982859\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 46.5 ======\n", + "dT_dt= -0.06604323425353016\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 46.6 ======\n", + "dT_dt= -0.06538280191099481\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 46.7 ======\n", + "dT_dt= -0.06472897389188503\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 46.8 ======\n", + "dT_dt= -0.06408168415296629\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 46.9 ======\n", + "dT_dt= -0.06344086731143649\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 47.0 ======\n", + "dT_dt= -0.06280645863832213\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 47.1 ======\n", + "dT_dt= -0.06217839405193892\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 47.2 ======\n", + "dT_dt= -0.06155661011141938\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 47.3 ======\n", + "dT_dt= -0.06094104401030514\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 47.4 ======\n", + "dT_dt= -0.060331633570202214\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 47.5 ======\n", + "dT_dt= -0.059728317234500145\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 47.6 ======\n", + "dT_dt= -0.05913103406215506\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 47.7 ======\n", + "dT_dt= -0.05853972372153358\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 47.8 ======\n", + "dT_dt= -0.057954326484318135\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 47.9 ======\n", + "dT_dt= -0.057374783219474784\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 48.0 ======\n", + "dT_dt= -0.056801035387280055\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 48.1 ======\n", + "dT_dt= -0.0562330250334071\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 48.2 ======\n", + "dT_dt= -0.05567069478307296\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 48.3 ======\n", + "dT_dt= -0.05511398783524229\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 48.4 ======\n", + "dT_dt= -0.05456284795688973\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 48.5 ======\n", + "dT_dt= -0.054017219477320924\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 48.6 ======\n", + "dT_dt= -0.05347704728254783\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 48.7 ======\n", + "dT_dt= -0.05294227680972235\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 48.8 ======\n", + "dT_dt= -0.05241285404162497\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 48.9 ======\n", + "dT_dt= -0.05188872550120856\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 49.0 ======\n", + "dT_dt= -0.05136983824619641\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 49.1 ======\n", + "dT_dt= -0.050856139863734384\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 49.2 ======\n", + "dT_dt= -0.05034757846509699\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 49.3 ======\n", + "dT_dt= -0.04984410268044606\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 49.4 ======\n", + "dT_dt= -0.049345661653641675\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 49.5 ======\n", + "dT_dt= -0.04885220503710528\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 49.6 ======\n", + "dT_dt= -0.04836368298673435\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 49.7 ======\n", + "dT_dt= -0.0478800461568671\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 49.8 ======\n", + "dT_dt= -0.047401245695298404\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 49.9 ======\n", + "dT_dt= -0.046927233238345425\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 50.0 ======\n", + "dT_dt= -0.04645796090596193\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 50.1 ======\n", + "dT_dt= -0.045993381296902315\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 50.2 ======\n", + "dT_dt= -0.04553344748393329\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 50.3 ======\n", + "dT_dt= -0.04507811300909381\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 50.4 ======\n", + "dT_dt= -0.044627331879002696\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 50.5 ======\n", + "dT_dt= -0.044181058560212705\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 50.6 ======\n", + "dT_dt= -0.04373924797461051\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 50.7 ======\n", + "dT_dt= -0.04330185549486423\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 50.8 ======\n", + "dT_dt= -0.04286883693991542\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 50.9 ======\n", + "dT_dt= -0.042440148570516104\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 51.0 ======\n", + "dT_dt= -0.04201574708481104\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 51.1 ======\n", + "dT_dt= -0.04159558961396286\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 51.2 ======\n", + "dT_dt= -0.0411796337178231\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 51.3 ======\n", + "dT_dt= -0.04076783738064478\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 51.4 ======\n", + "dT_dt= -0.04036015900683836\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 51.5 ======\n", + "dT_dt= -0.039956557416769914\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 51.6 ======\n", + "dT_dt= -0.039556991842602335\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 51.7 ======\n", + "dT_dt= -0.039161421924176314\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 51.8 ======\n", + "dT_dt= -0.03876980770493468\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 51.9 ======\n", + "dT_dt= -0.03838210962788544\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 52.0 ======\n", + "dT_dt= -0.037998288531606764\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 52.1 ======\n", + "dT_dt= -0.03761830564629065\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 52.2 ======\n", + "dT_dt= -0.03724212258982789\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 52.3 ======\n", + "dT_dt= -0.03686970136392951\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 52.4 ======\n", + "dT_dt= -0.036501004350290245\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 52.5 ======\n", + "dT_dt= -0.03613599430678747\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 52.6 ======\n", + "dT_dt= -0.035774634363719575\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 52.7 ======\n", + "dT_dt= -0.03541688802008238\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 52.8 ======\n", + "dT_dt= -0.03506271913988144\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 52.9 ======\n", + "dT_dt= -0.03471209194848264\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 53.0 ======\n", + "dT_dt= -0.034364971028997715\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 53.1 ======\n", + "dT_dt= -0.03402132131870772\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 53.2 ======\n", + "dT_dt= -0.03368110810552061\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 53.3 ======\n", + "dT_dt= -0.03334429702446542\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 53.4 ======\n", + "dT_dt= -0.03301085405422093\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 53.5 ======\n", + "dT_dt= -0.03268074551367874\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 53.6 ======\n", + "dT_dt= -0.03235393805854194\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 53.7 ======\n", + "dT_dt= -0.03203039867795639\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 53.8 ======\n", + "dT_dt= -0.03171009469117685\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 53.9 ======\n", + "dT_dt= -0.031392993744265144\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 54.0 ======\n", + "dT_dt= -0.03107906380682266\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 54.1 ======\n", + "dT_dt= -0.030768273168754592\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 54.2 ======\n", + "dT_dt= -0.030460590437067128\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 54.3 ======\n", + "dT_dt= -0.030155984532696325\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 54.4 ======\n", + "dT_dt= -0.029854424687369277\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 54.5 ======\n", + "dT_dt= -0.029555880440495487\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 54.6 ======\n", + "dT_dt= -0.029260321636090582\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 54.7 ======\n", + "dT_dt= -0.02896771841972985\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 54.8 ======\n", + "dT_dt= -0.028678041235532706\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 54.9 ======\n", + "dT_dt= -0.028391260823177333\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 55.0 ======\n", + "dT_dt= -0.028107348214945562\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 55.1 ======\n", + "dT_dt= -0.02782627473279611\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 55.2 ======\n", + "dT_dt= -0.02754801198546808\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 55.3 ======\n", + "dT_dt= -0.02727253186561356\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 55.4 ======\n", + "dT_dt= -0.026999806546957574\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 55.5 ======\n", + "dT_dt= -0.026729808481487895\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 55.6 ======\n", + "dT_dt= -0.02646251039667291\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 55.7 ======\n", + "dT_dt= -0.026197885292706148\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 55.8 ======\n", + "dT_dt= -0.02593590643977919\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 55.9 ======\n", + "dT_dt= -0.025676547375381276\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 56.0 ======\n", + "dT_dt= -0.025419781901627303\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 56.1 ======\n", + "dT_dt= -0.025165584082611048\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 56.2 ======\n", + "dT_dt= -0.024913928241785045\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 56.3 ======\n", + "dT_dt= -0.024664788959367103\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 56.4 ======\n", + "dT_dt= -0.02441814106977347\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 56.5 ======\n", + "dT_dt= -0.024173959659075806\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 56.6 ======\n", + "dT_dt= -0.023932220062485146\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 56.7 ======\n", + "dT_dt= -0.023692897861860376\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 56.8 ======\n", + "dT_dt= -0.0234559688832416\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 56.9 ======\n", + "dT_dt= -0.02322140919440905\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 57.0 ======\n", + "dT_dt= -0.022989195102465134\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 57.1 ======\n", + "dT_dt= -0.02275930315144059\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 57.2 ======\n", + "dT_dt= -0.022531710119926274\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 57.3 ======\n", + "dT_dt= -0.022306393018726924\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 57.4 ======\n", + "dT_dt= -0.022083329088539827\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 57.5 ======\n", + "dT_dt= -0.02186249579765445\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 57.6 ======\n", + "dT_dt= -0.02164387083967796\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 57.7 ======\n", + "dT_dt= -0.021427432131281066\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 57.8 ======\n", + "dT_dt= -0.02121315780996831\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 57.9 ======\n", + "dT_dt= -0.021001026231868638\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 58.0 ======\n", + "dT_dt= -0.020791015969549777\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 58.1 ======\n", + "dT_dt= -0.020583105809854275\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 58.2 ======\n", + "dT_dt= -0.020377274751755794\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 58.3 ======\n", + "dT_dt= -0.020173502004238134\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 58.4 ======\n", + "dT_dt= -0.019971766984195585\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 58.5 ======\n", + "dT_dt= -0.019772049314353526\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 58.6 ======\n", + "dT_dt= -0.019574328821209977\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 58.7 ======\n", + "dT_dt= -0.01937858553299776\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 58.8 ======\n", + "dT_dt= -0.019184799677667643\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 58.9 ======\n", + "dT_dt= -0.01899295168089097\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 59.0 ======\n", + "dT_dt= -0.018803022164081896\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 59.1 ======\n", + "dT_dt= -0.01861499194244125\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 59.2 ======\n", + "dT_dt= -0.018428842023016756\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 59.3 ======\n", + "dT_dt= -0.018244553602786696\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 59.4 ======\n", + "dT_dt= -0.018062108066758852\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 59.5 ======\n", + "dT_dt= -0.017881486986091134\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 59.6 ======\n", + "dT_dt= -0.01770267211623029\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 59.7 ======\n", + "dT_dt= -0.017525645395068068\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 59.8 ======\n", + "dT_dt= -0.017350388941117244\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 59.9 ======\n", + "dT_dt= -0.01717688505170614\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 60.0 ======\n", + "dT_dt= -0.017005116201189097\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 60.1 ======\n", + "dT_dt= -0.016835065039177265\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 60.2 ======\n", + "dT_dt= -0.016666714388785666\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 60.3 ======\n", + "dT_dt= -0.016500047244897686\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 60.4 ======\n", + "dT_dt= -0.01633504677244879\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 60.5 ======\n", + "dT_dt= -0.016171696304724394\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 60.6 ======\n", + "dT_dt= -0.016009979341677295\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 60.7 ======\n", + "dT_dt= -0.015849879548260403\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 60.8 ======\n", + "dT_dt= -0.015691380752777918\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 60.9 ======\n", + "dT_dt= -0.015534466945250004\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 61.0 ======\n", + "dT_dt= -0.015379122275797387\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 61.1 ======\n", + "dT_dt= -0.015225331053039427\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 61.2 ======\n", + "dT_dt= -0.0150730777425089\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 61.3 ======\n", + "dT_dt= -0.014922346965083834\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 61.4 ======\n", + "dT_dt= -0.014773123495432828\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 61.5 ======\n", + "dT_dt= -0.014625392260478522\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 61.6 ======\n", + "dT_dt= -0.014479138337873822\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 61.7 ======\n", + "dT_dt= -0.014334346954495203\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 61.8 ======\n", + "dT_dt= -0.014191003484950216\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 61.9 ======\n", + "dT_dt= -0.014049093450100615\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 62.0 ======\n", + "dT_dt= -0.013908602515599711\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 62.1 ======\n", + "dT_dt= -0.013769516490443579\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 62.2 ======\n", + "dT_dt= -0.013631821325539306\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 62.3 ======\n", + "dT_dt= -0.013495503112283914\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 62.4 ======\n", + "dT_dt= -0.01336054808116103\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 62.5 ======\n", + "dT_dt= -0.01322694260034929\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 62.6 ======\n", + "dT_dt= -0.013094673174345673\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 62.7 ======\n", + "dT_dt= -0.012963726442602309\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 62.8 ======\n", + "dT_dt= -0.012834089178176456\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 62.9 ======\n", + "dT_dt= -0.012705748286394682\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 63.0 ======\n", + "dT_dt= -0.012578690803530891\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 63.1 ======\n", + "dT_dt= -0.012452903895495738\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 63.2 ======\n", + "dT_dt= -0.012328374856540947\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 63.3 ======\n", + "dT_dt= -0.012205091107975364\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 63.4 ======\n", + "dT_dt= -0.012083040196895567\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 63.5 ======\n", + "dT_dt= -0.011962209794926439\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 63.6 ======\n", + "dT_dt= -0.011842587696977347\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 63.7 ======\n", + "dT_dt= -0.011724161820007595\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 63.8 ======\n", + "dT_dt= -0.01160692020180747\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 63.9 ======\n", + "dT_dt= -0.01149085099978926\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 64.0 ======\n", + "dT_dt= -0.011375942489791414\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 64.1 ======\n", + "dT_dt= -0.01126218306489335\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 64.2 ======\n", + "dT_dt= -0.011149561234244487\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 64.3 ======\n", + "dT_dt= -0.01103806562190215\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 64.4 ======\n", + "dT_dt= -0.010927684965682971\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 64.5 ======\n", + "dT_dt= -0.010818408116026036\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 64.6 ======\n", + "dT_dt= -0.010710224034865946\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 64.7 ======\n", + "dT_dt= -0.010603121794517278\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 64.8 ======\n", + "dT_dt= -0.010497090576572178\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 64.9 ======\n", + "dT_dt= -0.010392119670806466\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 65.0 ======\n", + "dT_dt= -0.010288198474098564\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 65.1 ======\n", + "dT_dt= -0.010185316489357632\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 65.2 ======\n", + "dT_dt= -0.010083463324464149\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 65.3 ======\n", + "dT_dt= -0.009982628691219375\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 65.4 ======\n", + "dT_dt= -0.009882802404307257\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 65.5 ======\n", + "dT_dt= -0.009783974380264127\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 65.6 ======\n", + "dT_dt= -0.009686134636461575\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 65.7 ======\n", + "dT_dt= -0.009589273290097112\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 65.8 ======\n", + "dT_dt= -0.009493380557196219\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 65.9 ======\n", + "dT_dt= -0.009398446751624335\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 66.0 ======\n", + "dT_dt= -0.009304462284108084\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 66.1 ======\n", + "dT_dt= -0.009211417661267164\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 66.2 ======\n", + "dT_dt= -0.009119303484654395\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 66.3 ======\n", + "dT_dt= -0.009028110449807869\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 66.4 ======\n", + "dT_dt= -0.008937829345309822\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 66.5 ======\n", + "dT_dt= -0.0088484510518569\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 66.6 ======\n", + "dT_dt= -0.008759966541338217\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 66.7 ======\n", + "dT_dt= -0.00867236687592481\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 66.8 ======\n", + "dT_dt= -0.00858564320716546\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 66.9 ======\n", + "dT_dt= -0.00849978677509391\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 67.0 ======\n", + "dT_dt= -0.008414788907342796\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 67.1 ======\n", + "dT_dt= -0.008330641018269348\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 67.2 ======\n", + "dT_dt= -0.008247334608086732\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 67.3 ======\n", + "dT_dt= -0.00816486126200573\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 67.4 ======\n", + "dT_dt= -0.00808321264938563\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 67.5 ======\n", + "dT_dt= -0.008002380522891884\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 67.6 ======\n", + "dT_dt= -0.007922356717662993\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 67.7 ======\n", + "dT_dt= -0.007843133150486282\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 67.8 ======\n", + "dT_dt= -0.007764701818981479\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 67.9 ======\n", + "dT_dt= -0.007687054800791771\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 68.0 ======\n", + "dT_dt= -0.007610184252783725\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 68.1 ======\n", + "dT_dt= -0.00753408241025575\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 68.2 ======\n", + "dT_dt= -0.007458741586153295\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 68.3 ======\n", + "dT_dt= -0.007384154170291879\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 68.4 ======\n", + "dT_dt= -0.007310312628588989\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 68.5 ======\n", + "dT_dt= -0.0072372095023030885\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 68.6 ======\n", + "dT_dt= -0.007164837407280089\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 68.7 ======\n", + "dT_dt= -0.007093189033207281\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 68.8 ======\n", + "dT_dt= -0.007022257142875077\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 68.9 ======\n", + "dT_dt= -0.0069520345714462195\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 69.0 ======\n", + "dT_dt= -0.00688251422573174\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 69.1 ======\n", + "dT_dt= -0.006813689083474373\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 69.2 ======\n", + "dT_dt= -0.006745552192639792\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 69.3 ======\n", + "dT_dt= -0.0066780966707135295\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 69.4 ======\n", + "dT_dt= -0.006611315704006415\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 69.5 ======\n", + "dT_dt= -0.006545202546966423\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 69.6 ======\n", + "dT_dt= -0.006479750521496897\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 69.7 ======\n", + "dT_dt= -0.0064149530162819\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 69.8 ======\n", + "dT_dt= -0.006350803486119006\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 69.9 ======\n", + "dT_dt= -0.006287295451257791\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 70.0 ======\n", + "dT_dt= -0.006224422496745064\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 70.1 ======\n", + "dT_dt= -0.006162178271777563\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 70.2 ======\n", + "dT_dt= -0.006100556489059628\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 70.3 ======\n", + "dT_dt= -0.006039550924169035\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 70.4 ======\n", + "dT_dt= -0.005979155414927462\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 70.5 ======\n", + "dT_dt= -0.005919363860778049\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 70.6 ======\n", + "dT_dt= -0.005860170222170425\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 70.7 ======\n", + "dT_dt= -0.005801568519948575\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 70.8 ======\n", + "dT_dt= -0.005743552834749011\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 70.9 ======\n", + "dT_dt= -0.005686117306401429\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 71.0 ======\n", + "dT_dt= -0.005629256133337535\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 71.1 ======\n", + "dT_dt= -0.005572963572004142\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 71.2 ======\n", + "dT_dt= -0.005517233936284072\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 71.3 ======\n", + "dT_dt= -0.005462061596921331\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 71.4 ======\n", + "dT_dt= -0.0054074409809519615\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 71.5 ======\n", + "dT_dt= -0.00535336657114236\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 71.6 ======\n", + "dT_dt= -0.00529983290543079\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 71.7 ======\n", + "dT_dt= -0.005246834576376359\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 71.8 ======\n", + "dT_dt= -0.005194366230612602\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 71.9 ======\n", + "dT_dt= -0.005142422568306416\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 72.0 ======\n", + "dT_dt= -0.005090998342623366\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 72.1 ======\n", + "dT_dt= -0.005040088359197271\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 72.2 ======\n", + "dT_dt= -0.004989687475605464\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 72.3 ======\n", + "dT_dt= -0.004939790600849392\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 72.4 ======\n", + "dT_dt= -0.004890392694840884\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 72.5 ======\n", + "dT_dt= -0.004841488767892344\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 72.6 ======\n", + "dT_dt= -0.004793073880213328\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 72.7 ======\n", + "dT_dt= -0.004745143141411035\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 72.8 ======\n", + "dT_dt= -0.0046976917099968325\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 72.9 ======\n", + "dT_dt= -0.004650714792896693\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 73.0 ======\n", + "dT_dt= -0.004604207644967673\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 73.1 ======\n", + "dT_dt= -0.004558165568517936\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 73.2 ======\n", + "dT_dt= -0.004512583912832824\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 73.3 ======\n", + "dT_dt= -0.004467458073704478\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 73.4 ======\n", + "dT_dt= -0.004422783492967497\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 73.5 ======\n", + "dT_dt= -0.004378555658037797\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 73.6 ======\n", + "dT_dt= -0.004334770101457508\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 73.7 ======\n", + "dT_dt= -0.004291422400443068\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 73.8 ======\n", + "dT_dt= -0.004248508176438648\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 73.9 ======\n", + "dT_dt= -0.004206023094674194\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 74.0 ======\n", + "dT_dt= -0.004163962863727377\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 74.1 ======\n", + "dT_dt= -0.004122323235090164\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 74.2 ======\n", + "dT_dt= -0.004081100002739291\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 74.3 ======\n", + "dT_dt= -0.004040289002712072\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 74.4 ======\n", + "dT_dt= -0.003999886112685047\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 74.5 ======\n", + "dT_dt= -0.003959887251558314\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 74.6 ======\n", + "dT_dt= -0.003920288379042703\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 74.7 ======\n", + "dT_dt= -0.003881085495252279\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 74.8 ======\n", + "dT_dt= -0.0038422746402996923\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 74.9 ======\n", + "dT_dt= -0.003803851893896848\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 75.0 ======\n", + "dT_dt= -0.003765813374957716\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 75.1 ======\n", + "dT_dt= -0.003728155241208242\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 75.2 ======\n", + "dT_dt= -0.003690873688796259\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 75.3 ======\n", + "dT_dt= -0.003653964951908151\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 75.4 ======\n", + "dT_dt= -0.0036174253023890657\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 75.5 ======\n", + "dT_dt= -0.003581251049365264\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 75.6 ======\n", + "dT_dt= -0.003545438538871437\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 75.7 ======\n", + "dT_dt= -0.0035099841534826483\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 75.8 ======\n", + "dT_dt= -0.0034748843119476905\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 75.9 ======\n", + "dT_dt= -0.0034401354688281317\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 76.0 ======\n", + "dT_dt= -0.003405734114139847\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 76.1 ======\n", + "dT_dt= -0.0033716767729984557\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 76.2 ======\n", + "dT_dt= -0.0033379600052683145\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 76.3 ======\n", + "dT_dt= -0.003304580405215774\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 76.4 ======\n", + "dT_dt= -0.0032715346011634953\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 76.5 ======\n", + "dT_dt= -0.0032388192551518814\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 76.6 ======\n", + "dT_dt= -0.003206431062600501\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 76.7 ======\n", + "dT_dt= -0.0031743667519744893\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 76.8 ======\n", + "dT_dt= -0.0031426230844548543\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 76.9 ======\n", + "dT_dt= -0.00311119685361021\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 77.0 ======\n", + "dT_dt= -0.003080084885074186\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 77.1 ======\n", + "dT_dt= -0.0030492840362235543\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 77.2 ======\n", + "dT_dt= -0.0030187911958613257\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 77.3 ======\n", + "dT_dt= -0.002988603283902691\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 77.4 ======\n", + "dT_dt= -0.002958717251063803\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 77.5 ======\n", + "dT_dt= -0.002929130078553044\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 77.6 ======\n", + "dT_dt= -0.0028998387777676273\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 77.7 ======\n", + "dT_dt= -0.0028708403899898372\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 77.8 ======\n", + "dT_dt= -0.002842131986090024\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 77.9 ======\n", + "dT_dt= -0.002813710666229241\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 78.0 ======\n", + "dT_dt= -0.0027855735595668563\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 78.1 ======\n", + "dT_dt= -0.002757717823971362\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 78.2 ======\n", + "dT_dt= -0.0027301406457315384\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 78.3 ======\n", + "dT_dt= -0.0027028392392743684\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 78.4 ======\n", + "dT_dt= -0.0026758108468815326\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 78.5 ======\n", + "dT_dt= -0.0026490527384126494\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 78.6 ======\n", + "dT_dt= -0.002622562211028523\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 78.7 ======\n", + "dT_dt= -0.002596336588918291\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 78.8 ======\n", + "dT_dt= -0.0025703732230290656\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 78.9 ======\n", + "dT_dt= -0.002544669490798768\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 79.0 ======\n", + "dT_dt= -0.002519222795890741\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 79.1 ======\n", + "dT_dt= -0.0024940305679319154\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 79.2 ======\n", + "dT_dt= -0.002469090262252749\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 79.3 ======\n", + "dT_dt= -0.002444399359630367\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 79.4 ======\n", + "dT_dt= -0.002419955366034188\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 79.5 ======\n", + "dT_dt= -0.002395755812373679\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 79.6 ======\n", + "dT_dt= -0.002371798254250024\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 79.7 ======\n", + "dT_dt= -0.0023480802717074315\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 79.8 ======\n", + "dT_dt= -0.002324599468990485\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 79.9 ======\n", + "dT_dt= -0.0023013534743004274\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 80.0 ======\n", + "dT_dt= -0.0022783399395574833\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 80.1 ======\n", + "dT_dt= -0.0022555565401617627\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 80.2 ======\n", + "dT_dt= -0.002233000974760202\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 80.3 ======\n", + "dT_dt= -0.0022106709650124403\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 80.4 ======\n", + "dT_dt= -0.0021885642553623797\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 80.5 ======\n", + "dT_dt= -0.0021666786128086814\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 80.6 ======\n", + "dT_dt= -0.0021450118266805873\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 80.7 ======\n", + "dT_dt= -0.002123561708413746\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 80.8 ======\n", + "dT_dt= -0.0021023260913295874\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 80.9 ======\n", + "dT_dt= -0.002081302830416121\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 81.0 ======\n", + "dT_dt= -0.002060489802111931\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 81.1 ======\n", + "dT_dt= -0.002039884904090883\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 81.2 ======\n", + "dT_dt= -0.002019486055050024\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 81.3 ======\n", + "dT_dt= -0.0019992911944996194\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 81.4 ======\n", + "dT_dt= -0.001979298282554609\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 81.5 ======\n", + "dT_dt= -0.001959505299728903\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 81.6 ======\n", + "dT_dt= -0.0019399102467314577\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 81.7 ======\n", + "dT_dt= -0.0019205111442641256\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 81.8 ======\n", + "dT_dt= -0.001901306032821637\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 81.9 ======\n", + "dT_dt= -0.0018822929724933602\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 82.0 ======\n", + "dT_dt= -0.001863470042768256\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 82.1 ======\n", + "dT_dt= -0.0018448353423405452\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 82.2 ======\n", + "dT_dt= -0.0018263869889171504\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 82.3 ======\n", + "dT_dt= -0.0018081231190279824\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 82.4 ======\n", + "dT_dt= -0.0017900418878376457\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 82.5 ======\n", + "dT_dt= -0.0017721414689592764\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 82.6 ======\n", + "dT_dt= -0.001754420054269801\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 82.7 ======\n", + "dT_dt= -0.0017368758537269714\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 82.8 ======\n", + "dT_dt= -0.0017195070951895987\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 82.9 ======\n", + "dT_dt= -0.0017023120242377844\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 83.0 ======\n", + "dT_dt= -0.0016852889039952858\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 83.1 ======\n", + "dT_dt= -0.0016684360149554324\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 83.2 ======\n", + "dT_dt= -0.0016517516548059776\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 83.3 ======\n", + "dT_dt= -0.0016352341382578574\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 83.4 ======\n", + "dT_dt= -0.0016188817968753712\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 83.5 ======\n", + "dT_dt= -0.001602692978906717\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 83.6 ======\n", + "dT_dt= -0.0015866660491177242\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 83.7 ======\n", + "dT_dt= -0.0015707993886266538\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 83.8 ======\n", + "dT_dt= -0.0015550913947404155\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 83.9 ======\n", + "dT_dt= -0.0015395404807929227\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 84.0 ======\n", + "dT_dt= -0.0015241450759848618\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 84.1 ======\n", + "dT_dt= -0.001508903625224889\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 84.2 ======\n", + "dT_dt= -0.0014938145889725975\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 84.3 ======\n", + "dT_dt= -0.0014788764430829105\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 84.4 ======\n", + "dT_dt= -0.0014640876786522483\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 84.5 ======\n", + "dT_dt= -0.0014494468018657614\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 84.6 ======\n", + "dT_dt= -0.0014349523338470505\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 84.7 ======\n", + "dT_dt= -0.0014206028105085977\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 84.8 ======\n", + "dT_dt= -0.0014063967824036183\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 84.9 ======\n", + "dT_dt= -0.0013923328145796889\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 85.0 ======\n", + "dT_dt= -0.001378409486433796\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 85.1 ======\n", + "dT_dt= -0.0013646253915695185\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 85.2 ======\n", + "dT_dt= -0.0013509791376538516\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 85.3 ======\n", + "dT_dt= -0.0013374693462772315\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 85.4 ======\n", + "dT_dt= -0.0013240946528146225\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 85.5 ======\n", + "dT_dt= -0.0013108537062866078\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 85.6 ======\n", + "dT_dt= -0.0012977451692236742\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 85.7 ======\n", + "dT_dt= -0.0012847677175315654\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 85.8 ======\n", + "dT_dt= -0.0012719200403562782\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 85.9 ======\n", + "dT_dt= -0.0012592008399526123\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 86.0 ======\n", + "dT_dt= -0.0012466088315530755\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 86.1 ======\n", + "dT_dt= -0.0012341427432374986\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 86.2 ======\n", + "dT_dt= -0.001221801315805138\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 86.3 ======\n", + "dT_dt= -0.0012095833026471326\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 86.4 ======\n", + "dT_dt= -0.0011974874696207395\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 86.5 ======\n", + "dT_dt= -0.0011855125949246316\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 86.6 ======\n", + "dT_dt= -0.0011736574689752645\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 86.7 ======\n", + "dT_dt= -0.0011619208942853733\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 86.8 ======\n", + "dT_dt= -0.0011503016853424697\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 86.9 ======\n", + "dT_dt= -0.0011387986684891162\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 87.0 ======\n", + "dT_dt= -0.001127410681804264\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 87.1 ======\n", + "dT_dt= -0.0011161365749863706\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 87.2 ======\n", + "dT_dt= -0.001104975209236514\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 87.3 ======\n", + "dT_dt= -0.001093925457143996\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 87.4 ======\n", + "dT_dt= -0.0010829862025726557\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 87.5 ======\n", + "dT_dt= -0.001072156340546826\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 87.6 ======\n", + "dT_dt= -0.0010614347771412014\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 87.7 ======\n", + "dT_dt= -0.0010508204293696367\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 87.8 ======\n", + "dT_dt= -0.001040312225076079\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 87.9 ======\n", + "dT_dt= -0.0010299091028251439\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 88.0 ======\n", + "dT_dt= -0.0010196100117969564\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 88.1 ======\n", + "dT_dt= -0.0010094139116791467\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 88.2 ======\n", + "dT_dt= -0.0009993197725624015\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 88.3 ======\n", + "dT_dt= -0.0009893265748367242\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 88.4 ======\n", + "dT_dt= -0.0009794333090884066\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 88.5 ======\n", + "dT_dt= -0.0009696389759973556\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 88.6 ======\n", + "dT_dt= -0.0009599425862372613\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 88.7 ======\n", + "dT_dt= -0.0009503431603750557\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 88.8 ======\n", + "dT_dt= -0.0009408397287714366\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 88.9 ======\n", + "dT_dt= -0.0009314313314838785\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 89.0 ======\n", + "dT_dt= -0.0009221170181689331\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 89.1 ======\n", + "dT_dt= -0.0009128958479873717\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 89.2 ======\n", + "dT_dt= -0.0009037668895075512\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 89.3 ======\n", + "dT_dt= -0.0008947292206123337\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 89.4 ======\n", + "dT_dt= -0.0008857819284063596\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 89.5 ======\n", + "dT_dt= -0.0008769241091222569\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 89.6 ======\n", + "dT_dt= -0.0008681548680311125\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 89.7 ======\n", + "dT_dt= -0.000859473319350812\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 89.8 ======\n", + "dT_dt= -0.0008508785861572222\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 89.9 ======\n", + "dT_dt= -0.0008423698002957281\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 90.0 ======\n", + "dT_dt= -0.0008339461022927708\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 90.1 ======\n", + "dT_dt= -0.0008256066412698715\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 90.2 ======\n", + "dT_dt= -0.0008173505748573008\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 90.3 ======\n", + "dT_dt= -0.000809177069108813\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 90.4 ======\n", + "dT_dt= -0.000801085298417803\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 90.5 ======\n", + "dT_dt= -0.0007930744454334615\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 90.6 ======\n", + "dT_dt= -0.000785143700979063\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 90.7 ======\n", + "dT_dt= -0.0007772922639691871\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 90.8 ======\n", + "dT_dt= -0.0007695193413294277\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 90.9 ======\n", + "dT_dt= -0.0007618241479161015\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 91.0 ======\n", + "dT_dt= -0.0007542059064370222\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 91.1 ======\n", + "dT_dt= -0.0007466638473726307\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 91.2 ======\n", + "dT_dt= -0.0007391972088989008\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 91.3 ======\n", + "dT_dt= -0.0007318052368098905\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 91.4 ======\n", + "dT_dt= -0.0007244871844417134\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 91.5 ======\n", + "dT_dt= -0.0007172423125972216\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 91.6 ======\n", + "dT_dt= -0.0007100698894713987\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 91.7 ======\n", + "dT_dt= -0.0007029691905767522\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 91.8 ======\n", + "dT_dt= -0.000695939498670839\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 91.9 ======\n", + "dT_dt= -0.0006889801036841448\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 92.0 ======\n", + "dT_dt= -0.0006820903026472536\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 92.1 ======\n", + "dT_dt= -0.0006752693996208592\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 92.2 ======\n", + "dT_dt= -0.0006685167056247111\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 92.3 ======\n", + "dT_dt= -0.0006618315385683361\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 92.4 ======\n", + "dT_dt= -0.0006552132231828268\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 92.5 ======\n", + "dT_dt= -0.0006486610909508528\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 92.6 ======\n", + "dT_dt= -0.000642174480041291\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 92.7 ======\n", + "dT_dt= -0.0006357527352410131\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 92.8 ======\n", + "dT_dt= -0.0006293952078884502\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 92.9 ======\n", + "dT_dt= -0.0006231012558096439\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 93.0 ======\n", + "dT_dt= -0.000616870243251455\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 93.1 ======\n", + "dT_dt= -0.0006107015408190364\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 93.2 ======\n", + "dT_dt= -0.0006045945254108177\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 93.3 ======\n", + "dT_dt= -0.0005985485801566882\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 93.4 ======\n", + "dT_dt= -0.0005925630943551142\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 93.5 ======\n", + "dT_dt= -0.0005866374634116767\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 93.6 ======\n", + "dT_dt= -0.0005807710887776096\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 93.7 ======\n", + "dT_dt= -0.0005749633778897589\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 93.8 ======\n", + "dT_dt= -0.0005692137441108969\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 93.9 ======\n", + "dT_dt= -0.0005635216066696814\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 94.0 ======\n", + "dT_dt= -0.0005578863906031018\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 94.1 ======\n", + "dT_dt= -0.0005523075266971489\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 94.2 ======\n", + "dT_dt= -0.0005467844514303266\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 94.3 ======\n", + "dT_dt= -0.000541316606916098\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 94.4 ======\n", + "dT_dt= -0.0005359034408471075\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 94.5 ======\n", + "dT_dt= -0.0005305444064386933\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 94.6 ======\n", + "dT_dt= -0.000525238962374175\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 94.7 ======\n", + "dT_dt= -0.0005199865727504972\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 94.8 ======\n", + "dT_dt= -0.0005147867070231627\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 94.9 ======\n", + "dT_dt= -0.0005096388399529417\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 95.0 ======\n", + "dT_dt= -0.0005045424515532915\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 95.1 ======\n", + "dT_dt= -0.0004994970270377763\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 95.2 ======\n", + "dT_dt= -0.0004945020567674874\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 95.3 ======\n", + "dT_dt= -0.0004895570361998835\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 95.4 ======\n", + "dT_dt= -0.00048466146583798776\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 95.5 ======\n", + "dT_dt= -0.00047981485117958305\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 95.6 ======\n", + "dT_dt= -0.0004750167026678298\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 95.7 ======\n", + "dT_dt= -0.00047026653564117286\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 95.8 ======\n", + "dT_dt= -0.00046556387028466877\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 95.9 ======\n", + "dT_dt= -0.0004609082315816693\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 96.0 ======\n", + "dT_dt= -0.0004562991492658597\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 96.1 ======\n", + "dT_dt= -0.00045173615777329703\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 96.2 ======\n", + "dT_dt= -0.00044721879619551434\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 96.3 ======\n", + "dT_dt= -0.0004427466082336906\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 96.4 ======\n", + "dT_dt= -0.0004383191421513999\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 96.5 ======\n", + "dT_dt= -0.00043393595072984683\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 96.6 ======\n", + "dT_dt= -0.00042959659122239203\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 96.7 ======\n", + "dT_dt= -0.0004253006253101433\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 96.8 ======\n", + "dT_dt= -0.00042104761905719106\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 96.9 ======\n", + "dT_dt= -0.00041683714286655515\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 97.0 ======\n", + "dT_dt= -0.0004126687714379074\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 97.1 ======\n", + "dT_dt= -0.00040854208372351767\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 97.2 ======\n", + "dT_dt= -0.00040445666288633223\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 97.3 ======\n", + "dT_dt= -0.000400412096257341\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 97.4 ======\n", + "dT_dt= -0.0003964079752947214\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 97.5 ======\n", + "dT_dt= -0.0003924438955419163\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 97.6 ======\n", + "dT_dt= -0.0003885194565864225\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 97.7 ======\n", + "dT_dt= -0.0003846342620207111\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 97.8 ======\n", + "dT_dt= -0.00038078791940066026\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 97.9 ======\n", + "dT_dt= -0.0003769800402068313\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 98.0 ======\n", + "dT_dt= -0.00037321023980467776\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 98.1 ======\n", + "dT_dt= -0.0003694781374065315\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 98.2 ======\n", + "dT_dt= -0.000365783356032523\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 98.3 ======\n", + "dT_dt= -0.000362125522472212\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 98.4 ======\n", + "dT_dt= -0.0003585042672476391\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 98.5 ======\n", + "dT_dt= -0.0003549192245753119\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 98.6 ======\n", + "dT_dt= -0.00035137003232961207\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 98.7 ======\n", + "dT_dt= -0.0003478563320062023\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 98.8 ======\n", + "dT_dt= -0.0003443777686861438\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 98.9 ======\n", + "dT_dt= -0.0003409339909993037\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 99.0 ======\n", + "dT_dt= -0.00033752465108918275\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 99.1 ======\n", + "dT_dt= -0.00033414940457845434\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 99.2 ======\n", + "dT_dt= -0.00033080791053272666\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 99.3 ======\n", + "dT_dt= -0.0003274998314275024\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 99.4 ======\n", + "dT_dt= -0.0003242248331133624\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 99.5 ======\n", + "dT_dt= -0.00032098258478221455\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 99.6 ======\n", + "dT_dt= -0.00031777275893425384\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 99.7 ======\n", + "dT_dt= -0.00031459503134492197\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 99.8 ======\n", + "dT_dt= -0.00031144908103151184\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 99.9 ======\n", + "dT_dt= -0.00030833459022119316\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", + "====== Evaluating at t = 100.0 ======\n", + "dT_dt= -0.00030525124431903807\n", + "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "

" + ], + "image/png": "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\n" + }, + "metadata": {} + } + ], + "source": [ + "from modeci_mdf.utils import load_mdf, print_summary\n", + "from modeci_mdf.execution_engine import EvaluableGraph\n", + "import matplotlib.pyplot as plt\n", + "\n", + "verbose = False\n", + "eg = EvaluableGraph(mod_graph, verbose=verbose)\n", + "dt = 0.1\n", + "\n", + "duration = 100\n", + "t = 0\n", + "recorded = {}\n", + "times = []\n", + "s = []\n", + "\n", + "# Execute the simulation\n", + "while t <= duration:\n", + " times.append(t)\n", + " print(f\"====== Evaluating at t = {t:.1f} ======\")\n", + "\n", + " print(\"dT_dt=\", eg.enodes[\"cool_node\"].evaluable_outputs[\"out_port2\"].curr_value)\n", + " if t == 0:\n", + " eg.evaluate()\n", + " else:\n", + " eg.evaluate(time_increment=dt)\n", + "\n", + " s.append(eg.enodes[\"cool_node\"].evaluable_outputs[\"out_port\"].curr_value)\n", + " t += dt\n", + "\n", + "# Plotting the results\n", + "plt.plot(times, s)\n", + "plt.xlabel('Time')\n", + "plt.ylabel('Temperature')\n", + "plt.title('Cooling Process Simulation')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "8d80f88d-7413-4c9b-a12c-ea1aa380a1f1", + "metadata": { + "tags": [], + "id": "8d80f88d-7413-4c9b-a12c-ea1aa380a1f1" + }, + "source": [ + "## 6. Manual Algorithm for Finding Temperature at Time $t$\n", + "For each time step from 0 to $t$:\n", + "\n", + "1. Calculate the rate of temperature change $\\frac{dT}{dt}$ using the formula: $-k(T - T_{\\text{ambient}})$.\n", + "2. Update the temperature of the object for the next time step: $T_{\\text{new}} = T + \\frac{dT}{dt} \\times dt$.\n", + "3. Repeat the process, using $T_{\\text{new}}$ as the new $T$ for the next iteration.\n", + "\n", + "### Example Calculation:\n", + "\n", + "Let's manually compute the temperature at time $t$ for an object with the following parameters:\n", + "\n", + "- Initial temperature $T_0 = 90$°C,\n", + "- Ambient temperature $T_{\\text{ambient}} = 20$°C,\n", + "- Cooling constant $k = 0.1$,\n", + "- Time step $dt = 1$ minute,\n", + "- Calculate the temperature after $t = 3$ minutes.\n", + "\n", + "Iterations:\n", + "\n", + "#### Initial Condition:\n", + "\n", + "- $T_0 = 90$°C\n", + "\n", + "#### Iteration 1:\n", + "\n", + "- $\\frac{dT}{dt} = -0.1(90 - 20) = -7$°C/min\n", + "- $T_{\\text{new}} = 90 + (-7) \\times 1 = 83$°C\n", + "\n", + "#### Iteration 2:\n", + "\n", + "- $\\frac{dT}{dt} = -0.1(83 - 20) = -6.3$°C/min (approximately)\n", + "- $T_{\\text{new}} = 83 + (-6.3) \\times 1 = 76.7$°C (approximately)\n", + "\n", + "#### Iteration 3:\n", + "\n", + "- $\\frac{dT}{dt} = -0.1(76.7 - 20) = -5.67$°C/min (approximately)\n", + "- $T_{\\text{new}} = 76.7 + (-5.67) \\times 1 = 71.03$°C (approximately)\n", + "\n", + "After 3 minutes, the temperature of the object is approximately 71.03°C, demonstrating how it cools towards the ambient temperature over time according to Newton's Law of Cooling. This manual method provides a simple way to estimate temperature changes over discrete time intervals.\n" + ] + } + ], + "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.7" + }, + "colab": { + "provenance": [] + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file From c53c9dcc8637e103cbf6532e0352ac4916921a2f Mon Sep 17 00:00:00 2001 From: Rimjhim Mittal Date: Mon, 3 Jun 2024 14:11:32 +0530 Subject: [PATCH 09/14] fix end-of-file --- examples/MDF/Newton_Law_of_Cooling.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/MDF/Newton_Law_of_Cooling.ipynb b/examples/MDF/Newton_Law_of_Cooling.ipynb index 5a827325..22ff0e11 100644 --- a/examples/MDF/Newton_Law_of_Cooling.ipynb +++ b/examples/MDF/Newton_Law_of_Cooling.ipynb @@ -3491,4 +3491,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} From 0eac2be93c5151201e9cb62cf71e693a8939a757 Mon Sep 17 00:00:00 2001 From: Padraig Gleeson Date: Wed, 5 Jun 2024 18:24:34 +0100 Subject: [PATCH 10/14] Remove pin to grpcio-tools==1.42.0 --- setup.cfg | 1 - 1 file changed, 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 2750dbca..c8059367 100644 --- a/setup.cfg +++ b/setup.cfg @@ -55,7 +55,6 @@ package_dir = [options.extras_require] psyneulink = - grpcio-tools==1.42.0 psyneulink neuroml = From ed349811ce4e3d9ce825cfbec36027d9aadbb5a3 Mon Sep 17 00:00:00 2001 From: Padraig Gleeson Date: Thu, 6 Jun 2024 10:56:00 +0100 Subject: [PATCH 11/14] Test psyneulink on py3.11 --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aff27071..e602ae01 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -102,7 +102,6 @@ jobs: python -m pytest -v -m "tensorflow" tests/ - name: Test interface PsyNeuLink - if: ${{ matrix.python-version != '3.11'}} run: | python -m pip install .[psyneulink] python -m pytest -v -m "psyneulink" tests/ From f1bba2a1e2bf364a7330439b2aa01fa0417604bd Mon Sep 17 00:00:00 2001 From: Rimjhim Mittal Date: Fri, 7 Jun 2024 06:44:51 +0530 Subject: [PATCH 12/14] all changes made --- examples/MDF/Newton_Law_of_Cooling.ipynb | 3494 --------------------- examples/MDF/README.md | 4 +- examples/MDF/{ => images}/newton.png | Bin examples/MDF/{ => images}/newton_plot.png | Bin examples/MDF/newton.py | 5 +- examples/Newton_Law_of_Cooling.ipynb | 428 +++ src/modeci_mdf/execution_engine.py | 10 +- test_all.sh | 3 + 8 files changed, 441 insertions(+), 3503 deletions(-) delete mode 100644 examples/MDF/Newton_Law_of_Cooling.ipynb rename examples/MDF/{ => images}/newton.png (100%) rename examples/MDF/{ => images}/newton_plot.png (100%) create mode 100644 examples/Newton_Law_of_Cooling.ipynb diff --git a/examples/MDF/Newton_Law_of_Cooling.ipynb b/examples/MDF/Newton_Law_of_Cooling.ipynb deleted file mode 100644 index 22ff0e11..00000000 --- a/examples/MDF/Newton_Law_of_Cooling.ipynb +++ /dev/null @@ -1,3494 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "4581f50f-39bd-44e2-9287-160f904cd43b", - "metadata": { - "id": "4581f50f-39bd-44e2-9287-160f904cd43b" - }, - "source": [ - "# Implementing Model Description Format for Newton's Law of Cooling\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "id": "5e8d408f-beb4-41ab-9124-1dc1655eb312", - "metadata": { - "id": "5e8d408f-beb4-41ab-9124-1dc1655eb312" - }, - "source": [ - "

\n", - "\n", - "## 1. Newton's Law of Cooling Process Model: Introduction\n", - "\n", - "In this notebook, a simple Newtonian cooling process model is implemented using the MDF library. The model simulates the cooling of an object to the ambient temperature over time.\n", - "\n", - "Newton's Law of Cooling is expressed by the differential equation:\n", - "$$\n", - "\\frac{dT}{dt} = -k(T - T_{\\text{ambient}})\n", - "$$\n", - "The temperature of the object is denoted by $T$,\\\n", - "The ambient temperature is denoted by $T_{\\text{ambient}}$,\\\n", - "The cooling coefficient is represented by $k$,\\\n", - "The rate of change of the temperature over time is given by $\\frac{dT}{dt}$.\\\n", - "\n" - ] - }, - { - "cell_type": "code", - "source": [ - "!pip install modeci_mdf" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "N_GWvBGgN4Fs", - "outputId": "a92af041-98fd-46d7-87d3-88beadc4670e" - }, - "id": "N_GWvBGgN4Fs", - "execution_count": 1, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Requirement already satisfied: modeci_mdf in /usr/local/lib/python3.10/dist-packages (0.4.10)\n", - "Requirement already satisfied: graph-scheduler>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (1.2.1)\n", - "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (1.25.2)\n", - "Requirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (3.7.1)\n", - "Requirement already satisfied: graphviz in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (0.20.3)\n", - "Requirement already satisfied: h5py in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (3.9.0)\n", - "Requirement already satisfied: onnxruntime in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (1.18.0)\n", - "Requirement already satisfied: onnx in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (1.16.1)\n", - "Requirement already satisfied: skl2onnx in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (1.17.0)\n", - "Requirement already satisfied: attrs>=21.1.0 in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (23.2.0)\n", - "Requirement already satisfied: cattrs in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (23.2.3)\n", - "Requirement already satisfied: modelspec<0.4,>=0.3.0 in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (0.3.4)\n", - "Requirement already satisfied: glom in /usr/local/lib/python3.10/dist-packages (from modeci_mdf) (23.5.0)\n", - "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from graph-scheduler>=1.1.1->modeci_mdf) (3.3)\n", - "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from graph-scheduler>=1.1.1->modeci_mdf) (2.0.3)\n", - "Requirement already satisfied: pint in /usr/local/lib/python3.10/dist-packages (from graph-scheduler>=1.1.1->modeci_mdf) (0.23)\n", - "Requirement already satisfied: scipy in /usr/local/lib/python3.10/dist-packages (from graph-scheduler>=1.1.1->modeci_mdf) (1.11.4)\n", - "Requirement already satisfied: toposort in /usr/local/lib/python3.10/dist-packages (from graph-scheduler>=1.1.1->modeci_mdf) (1.10)\n", - "Requirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from modelspec<0.4,>=0.3.0->modeci_mdf) (6.0.1)\n", - "Requirement already satisfied: pymongo in /usr/local/lib/python3.10/dist-packages (from modelspec<0.4,>=0.3.0->modeci_mdf) (4.7.2)\n", - "Requirement already satisfied: tabulate in /usr/local/lib/python3.10/dist-packages (from modelspec<0.4,>=0.3.0->modeci_mdf) (0.9.0)\n", - "Requirement already satisfied: docstring-parser in /usr/local/lib/python3.10/dist-packages (from modelspec<0.4,>=0.3.0->modeci_mdf) (0.16)\n", - "Requirement already satisfied: exceptiongroup>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from cattrs->modeci_mdf) (1.2.1)\n", - "Requirement already satisfied: typing-extensions!=4.6.3,>=4.1.0 in /usr/local/lib/python3.10/dist-packages (from cattrs->modeci_mdf) (4.11.0)\n", - "Requirement already satisfied: boltons>=19.3.0 in /usr/local/lib/python3.10/dist-packages (from glom->modeci_mdf) (24.0.0)\n", - "Requirement already satisfied: face==20.1.1 in /usr/local/lib/python3.10/dist-packages (from glom->modeci_mdf) (20.1.1)\n", - "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->modeci_mdf) (1.2.1)\n", - "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib->modeci_mdf) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->modeci_mdf) (4.51.0)\n", - "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->modeci_mdf) (1.4.5)\n", - "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->modeci_mdf) (24.0)\n", - "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->modeci_mdf) (9.4.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->modeci_mdf) (3.1.2)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib->modeci_mdf) (2.8.2)\n", - "Requirement already satisfied: protobuf>=3.20.2 in /usr/local/lib/python3.10/dist-packages (from onnx->modeci_mdf) (3.20.2)\n", - "Requirement already satisfied: coloredlogs in /usr/local/lib/python3.10/dist-packages (from onnxruntime->modeci_mdf) (15.0.1)\n", - "Requirement already satisfied: flatbuffers in /usr/local/lib/python3.10/dist-packages (from onnxruntime->modeci_mdf) (24.3.25)\n", - "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from onnxruntime->modeci_mdf) (1.12)\n", - "Requirement already satisfied: scikit-learn>=1.1 in /usr/local/lib/python3.10/dist-packages (from skl2onnx->modeci_mdf) (1.2.2)\n", - "Requirement already satisfied: onnxconverter-common>=1.7.0 in /usr/local/lib/python3.10/dist-packages (from skl2onnx->modeci_mdf) (1.14.0)\n", - "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib->modeci_mdf) (1.16.0)\n", - "Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=1.1->skl2onnx->modeci_mdf) (1.4.2)\n", - "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=1.1->skl2onnx->modeci_mdf) (3.5.0)\n", - "Requirement already satisfied: humanfriendly>=9.1 in /usr/local/lib/python3.10/dist-packages (from coloredlogs->onnxruntime->modeci_mdf) (10.0)\n", - "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->graph-scheduler>=1.1.1->modeci_mdf) (2023.4)\n", - "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas->graph-scheduler>=1.1.1->modeci_mdf) (2024.1)\n", - "Requirement already satisfied: dnspython<3.0.0,>=1.16.0 in /usr/local/lib/python3.10/dist-packages (from pymongo->modelspec<0.4,>=0.3.0->modeci_mdf) (2.6.1)\n", - "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->onnxruntime->modeci_mdf) (1.3.0)\n" - ] - } - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c9108ee9-870c-43ef-a6d6-0cc0656403ca", - "metadata": { - "id": "c9108ee9-870c-43ef-a6d6-0cc0656403ca" - }, - "outputs": [], - "source": [ - "from modeci_mdf.mdf import Model, Graph, Node, Parameter, OutputPort, Function, InputPort" - ] - }, - { - "cell_type": "markdown", - "id": "e392770f-6610-448f-a17e-92d2f19bf213", - "metadata": { - "tags": [], - "id": "e392770f-6610-448f-a17e-92d2f19bf213" - }, - "source": [ - "## 2. Creating the Model and Graph\n", - "First, we initialize the model and a graph to hold our computational nodes." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "42d29dbe-9da6-421c-b5f1-6c0ba65cd9a8", - "metadata": { - "id": "42d29dbe-9da6-421c-b5f1-6c0ba65cd9a8" - }, - "outputs": [], - "source": [ - "mod = Model(id=\"NewtonCoolingModel\")\n", - "mod_graph = Graph(id=\"cooling_process\")\n", - "mod.graphs.append(mod_graph)" - ] - }, - { - "cell_type": "markdown", - "id": "13452273-3035-4c7d-98a0-5a4bf1fc936d", - "metadata": { - "id": "13452273-3035-4c7d-98a0-5a4bf1fc936d" - }, - "source": [ - "### 2.1 Defining Nodes and Parameters\n", - "We define a single node with parameters for the cooling coefficient, ambient temperature (\\`T_a\\`), current temperature (\\`T_curr\\`), and the rate of temperature change (\\`dT_dt\\`). These parameters are essential for modeling the cooling process according to Newton's law of cooling." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "b285917f-c263-4cb4-bb77-410dfd239bc6", - "metadata": { - "id": "b285917f-c263-4cb4-bb77-410dfd239bc6" - }, - "outputs": [], - "source": [ - "cool_node = Node(id=\"cool_node\")\n", - "cool_node.parameters.append(Parameter(id=\"cooling_coeff\", value=0.1))\n", - "cool_node.parameters.append(Parameter(id=\"T_a\", value=20))" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "9ebb4a51-e0eb-4966-9fa5-f86933fada67", - "metadata": { - "id": "9ebb4a51-e0eb-4966-9fa5-f86933fada67" - }, - "outputs": [], - "source": [ - "s1 = Parameter(\n", - " id=\"T_curr\", default_initial_value=90, time_derivative=\"dT_dt\"\n", - ")\n", - "cool_node.parameters.append(s1)\n", - "\n", - "s2 = Parameter(\n", - " id=\"dT_dt\",\n", - " default_initial_value=0,\n", - " value=\"-cooling_coeff*(T_curr - T_a)\",\n", - ")\n", - "cool_node.parameters.append(s2)" - ] - }, - { - "cell_type": "markdown", - "id": "f45f4dc5-db21-4623-b95b-caeb23a27a2c", - "metadata": { - "id": "f45f4dc5-db21-4623-b95b-caeb23a27a2c" - }, - "source": [ - "### 2.2 Output Ports\n", - "An output port is defined to represent the current temperature of the object and the rate of change of the temperature over time 'dT_dt'." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "f5130413-ac3b-45cb-bca1-2bc43907cbd3", - "metadata": { - "id": "f5130413-ac3b-45cb-bca1-2bc43907cbd3" - }, - "outputs": [], - "source": [ - "op1 = OutputPort(id=\"out_port\", value=\"T_curr\")\n", - "cool_node.output_ports.append(op1)\n", - "op2 = OutputPort(id=\"out_port2\", value=\"dT_dt\")\n", - "cool_node.output_ports.append(op2)" - ] - }, - { - "cell_type": "markdown", - "id": "f5644dcf-218c-41e5-9458-7ab4baf06da2", - "metadata": { - "tags": [], - "id": "f5644dcf-218c-41e5-9458-7ab4baf06da2" - }, - "source": [ - "## 3. Visualizing the Model\n", - "The MDF library allows for the visualization of the model structure, which can be generated as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "61cf61d9-3a05-4f93-a37e-6603ce16118c", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 291 - }, - "id": "61cf61d9-3a05-4f93-a37e-6603ce16118c", - "outputId": "e9ea80d7-10cf-4145-ca4d-9fd7390d9c1e" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Converting MDF graph: cooling_process to graphviz (level: 3, format: png)\n", - " Node: cool_node\n", - "Written graph image to: NewtonsLawOfCooling.png\n" - ] - }, - { - "output_type": "execute_result", - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "execution_count": 7 - } - ], - "source": [ - "mod_graph.nodes.append(cool_node)\n", - "mod.to_graph_image(\n", - " engine=\"dot\",\n", - " output_format=\"png\",\n", - " view_on_render=False,\n", - " level=3,\n", - " filename_root=\"NewtonsLawOfCooling\",\n", - " is_horizontal=True\n", - " )\n", - "\n", - "from IPython.display import Image\n", - "Image(filename=\"NewtonsLawOfCooling.png\")" - ] - }, - { - "cell_type": "markdown", - "id": "8d5adafb-e704-41c7-ab91-d83f887e0d29", - "metadata": { - "tags": [], - "id": "8d5adafb-e704-41c7-ab91-d83f887e0d29" - }, - "source": [ - "## 4. Print the structure as yaml" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "af51ce0d-5b55-431e-b6c6-dafa53d74ab7", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "af51ce0d-5b55-431e-b6c6-dafa53d74ab7", - "outputId": "6a625ee0-e7e5-40db-d929-24d8d0597bb5" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "cooling_process:\n", - " nodes:\n", - " cool_node:\n", - " parameters:\n", - " cooling_coeff:\n", - " value: 0.1\n", - " T_a:\n", - " value: 20\n", - " T_curr:\n", - " default_initial_value: 90\n", - " time_derivative: dT_dt\n", - " dT_dt:\n", - " value: -cooling_coeff*(T_curr - T_a)\n", - " default_initial_value: 0\n", - " output_ports:\n", - " out_port:\n", - " value: T_curr\n", - " out_port2:\n", - " value: dT_dt\n", - "\n" - ] - } - ], - "source": [ - "print(mod_graph.to_yaml())" - ] - }, - { - "cell_type": "markdown", - "id": "3b8e928c-517d-4873-90d5-4e6cea5bc4bf", - "metadata": { - "tags": [], - "id": "3b8e928c-517d-4873-90d5-4e6cea5bc4bf" - }, - "source": [ - "## 5. Running the Model\n", - "We can execute the model simulation over a specified duration. This is achieved using the \\`EvaluableGraph\\` class from MDF's execution engine, illustrating how the temperature of the object changes over time." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "4ac2c8b0-7578-4442-9b33-b713a7f2008f", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000 - }, - "id": "4ac2c8b0-7578-4442-9b33-b713a7f2008f", - "outputId": "6673188f-f389-4389-fd34-0ceb8329b205" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "\n", - "Init graph: cooling_process\n", - "====== Evaluating at t = 0.0 ======\n", - "dT_dt= None\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 0.1 ======\n", - "dT_dt= -7\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 0.2 ======\n", - "dT_dt= -6.93\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 0.3 ======\n", - "dT_dt= -6.8607000000000005\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 0.4 ======\n", - "dT_dt= -6.792093\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 0.5 ======\n", - "dT_dt= -6.724172070000001\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 0.6 ======\n", - "dT_dt= -6.656930349300001\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 0.7 ======\n", - "dT_dt= -6.5903610458070006\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 0.8 ======\n", - "dT_dt= -6.52445743534893\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 0.9 ======\n", - "dT_dt= -6.45921286099544\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 1.0 ======\n", - "dT_dt= -6.394620732385485\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 1.1 ======\n", - "dT_dt= -6.330674525061631\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 1.2 ======\n", - "dT_dt= -6.267367779811014\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 1.3 ======\n", - "dT_dt= -6.204694102012903\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 1.4 ======\n", - "dT_dt= -6.142647160992773\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 1.5 ======\n", - "dT_dt= -6.081220689382846\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 1.6 ======\n", - "dT_dt= -6.020408482489017\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 1.7 ======\n", - "dT_dt= -5.9602043976641275\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 1.8 ======\n", - "dT_dt= -5.9006023536874865\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 1.9 ======\n", - "dT_dt= -5.841596330150612\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 2.0 ======\n", - "dT_dt= -5.7831803668491055\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 2.1 ======\n", - "dT_dt= -5.7253485631806145\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 2.2 ======\n", - "dT_dt= -5.668095077548809\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 2.3 ======\n", - "dT_dt= -5.611414126773321\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 2.4 ======\n", - "dT_dt= -5.555299985505588\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 2.5 ======\n", - "dT_dt= -5.499746985650532\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 2.6 ======\n", - "dT_dt= -5.444749515794027\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 2.7 ======\n", - "dT_dt= -5.390302020636087\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 2.8 ======\n", - "dT_dt= -5.336399000429726\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 2.9 ======\n", - "dT_dt= -5.2830350104254284\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 3.0 ======\n", - "dT_dt= -5.230204660321174\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 3.1 ======\n", - "dT_dt= -5.177902613717961\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 3.2 ======\n", - "dT_dt= -5.126123587580782\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 3.3 ======\n", - "dT_dt= -5.074862351704974\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 3.4 ======\n", - "dT_dt= -5.024113728187924\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 3.5 ======\n", - "dT_dt= -4.973872590906044\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 3.6 ======\n", - "dT_dt= -4.924133864996984\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 3.7 ======\n", - "dT_dt= -4.874892526347015\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 3.8 ======\n", - "dT_dt= -4.826143601083544\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 3.9 ======\n", - "dT_dt= -4.777882165072708\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 4.0 ======\n", - "dT_dt= -4.730103343421982\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 4.1 ======\n", - "dT_dt= -4.682802309987763\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 4.2 ======\n", - "dT_dt= -4.635974286887886\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 4.3 ======\n", - "dT_dt= -4.589614544019007\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 4.4 ======\n", - "dT_dt= -4.543718398578817\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 4.5 ======\n", - "dT_dt= -4.498281214593028\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 4.6 ======\n", - "dT_dt= -4.453298402447098\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 4.7 ======\n", - "dT_dt= -4.408765418422627\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 4.8 ======\n", - "dT_dt= -4.3646777642384\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 4.9 ======\n", - "dT_dt= -4.321030986596017\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 5.0 ======\n", - "dT_dt= -4.277820676730056\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 5.1 ======\n", - "dT_dt= -4.235042469962756\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 5.2 ======\n", - "dT_dt= -4.192692045263128\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 5.3 ======\n", - "dT_dt= -4.150765124810497\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 5.4 ======\n", - "dT_dt= -4.1092574735623915\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 5.5 ======\n", - "dT_dt= -4.068164898826768\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 5.6 ======\n", - "dT_dt= -4.027483249838499\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 5.7 ======\n", - "dT_dt= -3.987208417340115\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 5.8 ======\n", - "dT_dt= -3.9473363331667137\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 5.9 ======\n", - "dT_dt= -3.907862969835047\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 6.0 ======\n", - "dT_dt= -3.8687843401366964\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 6.1 ======\n", - "dT_dt= -3.8300964967353295\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 6.2 ======\n", - "dT_dt= -3.7917955317679763\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 6.3 ======\n", - "dT_dt= -3.7538775764502965\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 6.4 ======\n", - "dT_dt= -3.7163388006857936\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 6.5 ======\n", - "dT_dt= -3.6791754126789358\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 6.6 ======\n", - "dT_dt= -3.6423836585521467\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 6.7 ======\n", - "dT_dt= -3.605959821966625\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 6.8 ======\n", - "dT_dt= -3.569900223746959\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 6.9 ======\n", - "dT_dt= -3.5342012215094893\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 7.0 ======\n", - "dT_dt= -3.498859209294394\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 7.1 ======\n", - "dT_dt= -3.4638706172014504\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 7.2 ======\n", - "dT_dt= -3.429231911029436\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 7.3 ======\n", - "dT_dt= -3.394939591919142\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 7.4 ======\n", - "dT_dt= -3.3609901959999506\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 7.5 ======\n", - "dT_dt= -3.3273802940399513\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 7.6 ======\n", - "dT_dt= -3.2941064910995514\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 7.7 ======\n", - "dT_dt= -3.2611654261885565\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 7.8 ======\n", - "dT_dt= -3.228553771926671\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 7.9 ======\n", - "dT_dt= -3.196268234207404\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 8.0 ======\n", - "dT_dt= -3.16430555186533\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 8.1 ======\n", - "dT_dt= -3.1326624963466765\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 8.2 ======\n", - "dT_dt= -3.1013358713832098\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 8.3 ======\n", - "dT_dt= -3.0703225126693776\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 8.4 ======\n", - "dT_dt= -3.0396192875426835\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 8.5 ======\n", - "dT_dt= -3.0092230946672567\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 8.6 ======\n", - "dT_dt= -2.979130863720584\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 8.7 ======\n", - "dT_dt= -2.9493395550833785\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 8.8 ======\n", - "dT_dt= -2.9198461595325442\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 8.9 ======\n", - "dT_dt= -2.8906476979372187\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 9.0 ======\n", - "dT_dt= -2.861741220957846\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 9.1 ======\n", - "dT_dt= -2.8331238087482675\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 9.2 ======\n", - "dT_dt= -2.8047925706607852\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 9.3 ======\n", - "dT_dt= -2.7767446449541775\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 9.4 ======\n", - "dT_dt= -2.7489771985046354\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 9.5 ======\n", - "dT_dt= -2.721487426519589\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 9.6 ======\n", - "dT_dt= -2.694272552254393\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 9.7 ======\n", - "dT_dt= -2.6673298267318497\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 9.8 ======\n", - "dT_dt= -2.640656528464531\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 9.9 ======\n", - "dT_dt= -2.6142499631798857\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 10.0 ======\n", - "dT_dt= -2.5881074635480865\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 10.1 ======\n", - "dT_dt= -2.5622263889126056\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 10.2 ======\n", - "dT_dt= -2.5366041250234797\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 10.3 ======\n", - "dT_dt= -2.511238083773245\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 10.4 ======\n", - "dT_dt= -2.4861257029355124\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 10.5 ======\n", - "dT_dt= -2.4612644459061572\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 10.6 ======\n", - "dT_dt= -2.4366518014470957\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 10.7 ======\n", - "dT_dt= -2.4122852834326247\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 10.8 ======\n", - "dT_dt= -2.3881624305982982\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 10.9 ======\n", - "dT_dt= -2.364280806292315\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 11.0 ======\n", - "dT_dt= -2.340637998229392\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 11.1 ======\n", - "dT_dt= -2.317231618247098\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 11.2 ======\n", - "dT_dt= -2.294059302064627\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 11.3 ======\n", - "dT_dt= -2.271118709043981\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 11.4 ======\n", - "dT_dt= -2.2484075219535415\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 11.5 ======\n", - "dT_dt= -2.2259234467340057\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 11.6 ======\n", - "dT_dt= -2.203664212266666\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 11.7 ======\n", - "dT_dt= -2.1816275701439993\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 11.8 ======\n", - "dT_dt= -2.1598112944425596\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 11.9 ======\n", - "dT_dt= -2.1382131814981338\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 12.0 ======\n", - "dT_dt= -2.1168310496831526\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 12.1 ======\n", - "dT_dt= -2.095662739186321\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 12.2 ======\n", - "dT_dt= -2.0747061117944576\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 12.3 ======\n", - "dT_dt= -2.053959050676513\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 12.4 ======\n", - "dT_dt= -2.0334194601697475\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 12.5 ======\n", - "dT_dt= -2.01308526556805\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 12.6 ======\n", - "dT_dt= -1.9929544129123693\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 12.7 ======\n", - "dT_dt= -1.973024868783246\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 12.8 ======\n", - "dT_dt= -1.9532946200954138\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 12.9 ======\n", - "dT_dt= -1.9337616738944599\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 13.0 ======\n", - "dT_dt= -1.9144240571555153\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 13.1 ======\n", - "dT_dt= -1.8952798165839604\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 13.2 ======\n", - "dT_dt= -1.876327018418121\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 13.3 ======\n", - "dT_dt= -1.8575637482339395\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 13.4 ======\n", - "dT_dt= -1.8389881107516004\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 13.5 ======\n", - "dT_dt= -1.8205982296440846\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 13.6 ======\n", - "dT_dt= -1.8023922473476433\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 13.7 ======\n", - "dT_dt= -1.784368324874167\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 13.8 ======\n", - "dT_dt= -1.7665246416254257\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 13.9 ======\n", - "dT_dt= -1.7488593952091713\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 14.0 ======\n", - "dT_dt= -1.7313708012570794\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 14.1 ======\n", - "dT_dt= -1.7140570932445087\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 14.2 ======\n", - "dT_dt= -1.6969165223120635\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 14.3 ======\n", - "dT_dt= -1.6799473570889427\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 14.4 ======\n", - "dT_dt= -1.663147883518053\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 14.5 ======\n", - "dT_dt= -1.6465164046828726\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 14.6 ======\n", - "dT_dt= -1.6300512406360441\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 14.7 ======\n", - "dT_dt= -1.613750728229684\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 14.8 ======\n", - "dT_dt= -1.5976132209473868\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 14.9 ======\n", - "dT_dt= -1.581637088737913\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 15.0 ======\n", - "dT_dt= -1.5658207178505337\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 15.1 ======\n", - "dT_dt= -1.5501625106720285\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 15.2 ======\n", - "dT_dt= -1.534660885565308\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 15.3 ======\n", - "dT_dt= -1.5193142767096555\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 15.4 ======\n", - "dT_dt= -1.5041211339425589\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 15.5 ======\n", - "dT_dt= -1.4890799226031335\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 15.6 ======\n", - "dT_dt= -1.4741891233771023\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 15.7 ======\n", - "dT_dt= -1.459447232143331\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 15.8 ======\n", - "dT_dt= -1.4448527598218974\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 15.9 ======\n", - "dT_dt= -1.4304042322236783\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 16.0 ======\n", - "dT_dt= -1.4161001899014416\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 16.1 ======\n", - "dT_dt= -1.4019391880024274\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 16.2 ======\n", - "dT_dt= -1.387919796122403\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 16.3 ======\n", - "dT_dt= -1.3740405981611787\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 16.4 ======\n", - "dT_dt= -1.3603001921795668\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 16.5 ======\n", - "dT_dt= -1.3466971902577711\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 16.6 ======\n", - "dT_dt= -1.3332302183551932\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 16.7 ======\n", - "dT_dt= -1.3198979161716409\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 16.8 ======\n", - "dT_dt= -1.3066989370099245\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 16.9 ======\n", - "dT_dt= -1.2936319476398255\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 17.0 ======\n", - "dT_dt= -1.2806956281634272\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 17.1 ======\n", - "dT_dt= -1.267888671881793\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 17.2 ======\n", - "dT_dt= -1.2552097851629747\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 17.3 ======\n", - "dT_dt= -1.2426576873113448\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 17.4 ======\n", - "dT_dt= -1.2302311104382313\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 17.5 ======\n", - "dT_dt= -1.2179287993338492\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 17.6 ======\n", - "dT_dt= -1.2057495113405103\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 17.7 ======\n", - "dT_dt= -1.1936920162271052\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 17.8 ======\n", - "dT_dt= -1.181755096064834\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 17.9 ======\n", - "dT_dt= -1.1699375451041856\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 18.0 ======\n", - "dT_dt= -1.1582381696531439\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 18.1 ======\n", - "dT_dt= -1.1466557879566126\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 18.2 ======\n", - "dT_dt= -1.1351892300770463\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 18.3 ======\n", - "dT_dt= -1.123837337776276\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 18.4 ======\n", - "dT_dt= -1.1125989643985132\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 18.5 ======\n", - "dT_dt= -1.1014729747545282\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 18.6 ======\n", - "dT_dt= -1.0904582450069829\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 18.7 ======\n", - "dT_dt= -1.079553662556913\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 18.8 ======\n", - "dT_dt= -1.0687581259313441\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 18.9 ======\n", - "dT_dt= -1.0580705446720307\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 19.0 ======\n", - "dT_dt= -1.0474898392253102\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 19.1 ======\n", - "dT_dt= -1.0370149408330573\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 19.2 ======\n", - "dT_dt= -1.0266447914247265\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 19.3 ======\n", - "dT_dt= -1.0163783435104794\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 19.4 ======\n", - "dT_dt= -1.0062145600753745\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 19.5 ======\n", - "dT_dt= -0.9961524144746208\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 19.6 ======\n", - "dT_dt= -0.9861908903298744\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 19.7 ======\n", - "dT_dt= -0.9763289814265758\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 19.8 ======\n", - "dT_dt= -0.9665656916123102\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 19.9 ======\n", - "dT_dt= -0.9569000346961872\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 20.0 ======\n", - "dT_dt= -0.9473310343492252\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 20.1 ======\n", - "dT_dt= -0.9378577240057329\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 20.2 ======\n", - "dT_dt= -0.9284791467656757\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 20.3 ======\n", - "dT_dt= -0.9191943552980189\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 20.4 ======\n", - "dT_dt= -0.9100024117450385\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 20.5 ======\n", - "dT_dt= -0.900902387627588\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 20.6 ======\n", - "dT_dt= -0.8918933637513121\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 20.7 ======\n", - "dT_dt= -0.882974430113799\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 20.8 ======\n", - "dT_dt= -0.8741446858126608\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 20.9 ======\n", - "dT_dt= -0.8654032389545343\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 21.0 ======\n", - "dT_dt= -0.8567492065649891\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 21.1 ======\n", - "dT_dt= -0.8481817144993393\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 21.2 ======\n", - "dT_dt= -0.8396998973543458\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 21.3 ======\n", - "dT_dt= -0.8313028983808025\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 21.4 ======\n", - "dT_dt= -0.8229898693969944\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 21.5 ======\n", - "dT_dt= -0.8147599707030246\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 21.6 ======\n", - "dT_dt= -0.8066123709959943\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 21.7 ======\n", - "dT_dt= -0.7985462472860345\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 21.8 ======\n", - "dT_dt= -0.7905607848131742\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 21.9 ======\n", - "dT_dt= -0.7826551769650423\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 22.0 ======\n", - "dT_dt= -0.7748286251953918\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 22.1 ======\n", - "dT_dt= -0.767080338943438\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 22.2 ======\n", - "dT_dt= -0.7594095355540035\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 22.3 ======\n", - "dT_dt= -0.7518154401984636\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 22.4 ======\n", - "dT_dt= -0.744297285796479\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 22.5 ======\n", - "dT_dt= -0.7368543129385142\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 22.6 ======\n", - "dT_dt= -0.7294857698091293\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 22.7 ======\n", - "dT_dt= -0.7221909121110379\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 22.8 ======\n", - "dT_dt= -0.7149690029899276\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 22.9 ======\n", - "dT_dt= -0.7078193129600283\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 23.0 ======\n", - "dT_dt= -0.700741119830428\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 23.1 ======\n", - "dT_dt= -0.6937337086321236\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 23.2 ======\n", - "dT_dt= -0.6867963715458025\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 23.3 ======\n", - "dT_dt= -0.6799284078303445\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 23.4 ======\n", - "dT_dt= -0.6731291237520409\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 23.5 ======\n", - "dT_dt= -0.6663978325145206\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 23.6 ======\n", - "dT_dt= -0.6597338541893752\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 23.7 ======\n", - "dT_dt= -0.6531365156474813\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 23.8 ======\n", - "dT_dt= -0.6466051504910066\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 23.9 ======\n", - "dT_dt= -0.6401390989860964\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 24.0 ======\n", - "dT_dt= -0.6337377079962355\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 24.1 ======\n", - "dT_dt= -0.6274003309162733\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 24.2 ======\n", - "dT_dt= -0.6211263276071105\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 24.3 ======\n", - "dT_dt= -0.6149150643310393\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 24.4 ======\n", - "dT_dt= -0.6087659136877289\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 24.5 ======\n", - "dT_dt= -0.6026782545508518\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 24.6 ======\n", - "dT_dt= -0.5966514720053432\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 24.7 ======\n", - "dT_dt= -0.5906849572852899\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 24.8 ======\n", - "dT_dt= -0.5847781077124371\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 24.9 ======\n", - "dT_dt= -0.5789303266353126\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 25.0 ======\n", - "dT_dt= -0.5731410233689594\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 25.1 ======\n", - "dT_dt= -0.5674096131352698\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 25.2 ======\n", - "dT_dt= -0.5617355170039172\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 25.3 ======\n", - "dT_dt= -0.5561181618338779\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 25.4 ======\n", - "dT_dt= -0.5505569802155392\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 25.5 ======\n", - "dT_dt= -0.5450514104133838\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 25.6 ======\n", - "dT_dt= -0.5396008963092499\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 25.7 ======\n", - "dT_dt= -0.5342048873461572\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 25.8 ======\n", - "dT_dt= -0.5288628384726956\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 25.9 ======\n", - "dT_dt= -0.5235742100879687\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 26.0 ======\n", - "dT_dt= -0.518338467987089\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 26.1 ======\n", - "dT_dt= -0.5131550833072183\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 26.2 ======\n", - "dT_dt= -0.5080235324741462\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 26.3 ======\n", - "dT_dt= -0.5029432971494047\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 26.4 ======\n", - "dT_dt= -0.49791386417791056\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 26.5 ======\n", - "dT_dt= -0.49293472553613144\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 26.6 ======\n", - "dT_dt= -0.48800537828077\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 26.7 ======\n", - "dT_dt= -0.48312532449796247\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 26.8 ======\n", - "dT_dt= -0.4782940712529829\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 26.9 ======\n", - "dT_dt= -0.473511130540453\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 27.0 ======\n", - "dT_dt= -0.4687760192350485\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 27.1 ======\n", - "dT_dt= -0.464088259042698\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 27.2 ======\n", - "dT_dt= -0.4594473764522711\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 27.3 ======\n", - "dT_dt= -0.4548529026877482\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 27.4 ======\n", - "dT_dt= -0.45030437366087067\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 27.5 ======\n", - "dT_dt= -0.44580132992426197\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 27.6 ======\n", - "dT_dt= -0.44134331662501936\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 27.7 ======\n", - "dT_dt= -0.4369298834587692\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 27.8 ======\n", - "dT_dt= -0.4325605846241814\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 27.9 ======\n", - "dT_dt= -0.4282349787779396\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 28.0 ======\n", - "dT_dt= -0.4239526289901601\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 28.1 ======\n", - "dT_dt= -0.4197131027002584\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 28.2 ======\n", - "dT_dt= -0.41551597167325593\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 28.3 ======\n", - "dT_dt= -0.4113608119565232\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 28.4 ======\n", - "dT_dt= -0.4072472038369579\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 28.5 ======\n", - "dT_dt= -0.40317473179858826\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 28.6 ======\n", - "dT_dt= -0.3991429844806025\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 28.7 ======\n", - "dT_dt= -0.39515155463579643\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 28.8 ======\n", - "dT_dt= -0.39120003908943846\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 28.9 ======\n", - "dT_dt= -0.387288038698544\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 29.0 ======\n", - "dT_dt= -0.3834151583115585\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 29.1 ======\n", - "dT_dt= -0.37958100672844286\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 29.2 ======\n", - "dT_dt= -0.3757851966611583\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 29.3 ======\n", - "dT_dt= -0.3720273446945466\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 29.4 ======\n", - "dT_dt= -0.3683070712476013\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 29.5 ======\n", - "dT_dt= -0.3646240005351253\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 29.6 ======\n", - "dT_dt= -0.36097776052977404\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 29.7 ======\n", - "dT_dt= -0.3573679829244764\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 29.8 ======\n", - "dT_dt= -0.3537943030952317\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 29.9 ======\n", - "dT_dt= -0.35025636006427946\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 30.0 ======\n", - "dT_dt= -0.34675379646363674\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 30.1 ======\n", - "dT_dt= -0.3432862584990005\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 30.2 ======\n", - "dT_dt= -0.33985339591401065\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 30.3 ======\n", - "dT_dt= -0.3364548619548707\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 30.4 ======\n", - "dT_dt= -0.33309031333532213\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 30.5 ======\n", - "dT_dt= -0.3297594102019691\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 30.6 ======\n", - "dT_dt= -0.32646181609994934\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 30.7 ======\n", - "dT_dt= -0.3231971979389499\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 30.8 ======\n", - "dT_dt= -0.31996522595956023\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 30.9 ======\n", - "dT_dt= -0.31676557369996455\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 31.0 ======\n", - "dT_dt= -0.3135979179629647\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 31.1 ======\n", - "dT_dt= -0.31046193878333495\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 31.2 ======\n", - "dT_dt= -0.3073573193955017\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 31.3 ======\n", - "dT_dt= -0.30428374620154663\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 31.4 ======\n", - "dT_dt= -0.30124090873953124\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 31.5 ======\n", - "dT_dt= -0.29822849965213577\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 31.6 ======\n", - "dT_dt= -0.2952462146556144\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 31.7 ======\n", - "dT_dt= -0.2922937525090582\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 31.8 ======\n", - "dT_dt= -0.2893708149839675\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 31.9 ======\n", - "dT_dt= -0.2864771068341277\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 32.0 ======\n", - "dT_dt= -0.2836123357657865\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 32.1 ======\n", - "dT_dt= -0.2807762124081286\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 32.2 ======\n", - "dT_dt= -0.2779684502840475\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 32.3 ======\n", - "dT_dt= -0.275188765781207\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 32.4 ======\n", - "dT_dt= -0.2724368781233949\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 32.5 ======\n", - "dT_dt= -0.2697125093421608\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 32.6 ======\n", - "dT_dt= -0.2670153842487391\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 32.7 ======\n", - "dT_dt= -0.26434523040625174\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 32.8 ======\n", - "dT_dt= -0.2617017781021893\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 32.9 ======\n", - "dT_dt= -0.25908476032116745\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 33.0 ======\n", - "dT_dt= -0.2564939127179557\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 33.1 ======\n", - "dT_dt= -0.25392897359077615\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 33.2 ======\n", - "dT_dt= -0.25138968385486854\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 33.3 ======\n", - "dT_dt= -0.24887578701631982\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 33.4 ======\n", - "dT_dt= -0.2463870291461568\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 33.5 ======\n", - "dT_dt= -0.2439231588546953\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 33.6 ======\n", - "dT_dt= -0.24148392726614817\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 33.7 ======\n", - "dT_dt= -0.23906908799348658\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 33.8 ======\n", - "dT_dt= -0.23667839711355187\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 33.9 ======\n", - "dT_dt= -0.23431161314241644\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 34.0 ======\n", - "dT_dt= -0.2319684970109922\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 34.1 ======\n", - "dT_dt= -0.22964881204088244\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 34.2 ======\n", - "dT_dt= -0.22735232392047353\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 34.3 ======\n", - "dT_dt= -0.22507880068126873\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 34.4 ======\n", - "dT_dt= -0.22282801267445615\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 34.5 ======\n", - "dT_dt= -0.22059973254771173\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 34.6 ======\n", - "dT_dt= -0.21839373522223476\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 34.7 ======\n", - "dT_dt= -0.2162097978700125\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 34.8 ======\n", - "dT_dt= -0.21404769989131225\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 34.9 ======\n", - "dT_dt= -0.21190722289239902\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 35.0 ======\n", - "dT_dt= -0.20978815066347495\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 35.1 ======\n", - "dT_dt= -0.2076902691568403\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 35.2 ======\n", - "dT_dt= -0.20561336646527195\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 35.3 ======\n", - "dT_dt= -0.20355723280061933\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 35.4 ======\n", - "dT_dt= -0.2015216604726131\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 35.5 ======\n", - "dT_dt= -0.19950644386788705\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 35.6 ======\n", - "dT_dt= -0.19751137942920816\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 35.7 ======\n", - "dT_dt= -0.1955362656349159\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 35.8 ======\n", - "dT_dt= -0.19358090297856664\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 35.9 ======\n", - "dT_dt= -0.19164509394878096\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 36.0 ======\n", - "dT_dt= -0.18972864300929332\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 36.1 ======\n", - "dT_dt= -0.18783135657920022\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 36.2 ======\n", - "dT_dt= -0.18595304301340826\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 36.3 ======\n", - "dT_dt= -0.18409351258327433\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 36.4 ======\n", - "dT_dt= -0.1822525774574416\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 36.5 ======\n", - "dT_dt= -0.1804300516828672\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 36.6 ======\n", - "dT_dt= -0.17862575116603843\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 36.7 ======\n", - "dT_dt= -0.1768394936543782\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 36.8 ======\n", - "dT_dt= -0.17507109871783444\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 36.9 ======\n", - "dT_dt= -0.17332038773065614\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 37.0 ======\n", - "dT_dt= -0.1715871838533495\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 37.1 ======\n", - "dT_dt= -0.16987131201481598\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 37.2 ======\n", - "dT_dt= -0.16817259889466776\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 37.3 ======\n", - "dT_dt= -0.16649087290572098\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 37.4 ======\n", - "dT_dt= -0.16482596417666395\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 37.5 ======\n", - "dT_dt= -0.16317770453489722\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 37.6 ======\n", - "dT_dt= -0.1615459274895482\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 37.7 ======\n", - "dT_dt= -0.1599304682146528\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 37.8 ======\n", - "dT_dt= -0.1583311635325064\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 37.9 ======\n", - "dT_dt= -0.15674785189718143\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 38.0 ======\n", - "dT_dt= -0.15518037337820978\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 38.1 ======\n", - "dT_dt= -0.15362856964442778\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 38.2 ======\n", - "dT_dt= -0.15209228394798338\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 38.3 ======\n", - "dT_dt= -0.15057136110850353\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 38.4 ======\n", - "dT_dt= -0.1490656474974184\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 38.5 ======\n", - "dT_dt= -0.1475749910224444\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 38.6 ======\n", - "dT_dt= -0.14609924111221986\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 38.7 ======\n", - "dT_dt= -0.14463824870109754\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 38.8 ======\n", - "dT_dt= -0.1431918662140866\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 38.9 ======\n", - "dT_dt= -0.1417599475519456\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 39.0 ======\n", - "dT_dt= -0.14034234807642607\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 39.1 ======\n", - "dT_dt= -0.13893892459566182\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 39.2 ======\n", - "dT_dt= -0.13754953534970513\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 39.3 ======\n", - "dT_dt= -0.13617403999620806\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 39.4 ======\n", - "dT_dt= -0.13481229959624594\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 39.5 ======\n", - "dT_dt= -0.1334641766002836\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 39.6 ======\n", - "dT_dt= -0.1321295348342808\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 39.7 ======\n", - "dT_dt= -0.13080823948593798\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 39.8 ======\n", - "dT_dt= -0.12950015709107845\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 39.9 ======\n", - "dT_dt= -0.1282051555201676\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 40.0 ======\n", - "dT_dt= -0.12692310396496573\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 40.1 ======\n", - "dT_dt= -0.12565387292531618\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 40.2 ======\n", - "dT_dt= -0.12439733419606291\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 40.3 ======\n", - "dT_dt= -0.12315336085410244\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 40.4 ======\n", - "dT_dt= -0.12192182724556133\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 40.5 ======\n", - "dT_dt= -0.1207026089731059\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 40.6 ======\n", - "dT_dt= -0.11949558288337486\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 40.7 ======\n", - "dT_dt= -0.11830062705454125\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 40.8 ======\n", - "dT_dt= -0.11711762078399596\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 40.9 ======\n", - "dT_dt= -0.11594644457615609\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 41.0 ======\n", - "dT_dt= -0.11478698013039441\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 41.1 ======\n", - "dT_dt= -0.11363911032909045\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 41.2 ======\n", - "dT_dt= -0.11250271922579956\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 41.3 ======\n", - "dT_dt= -0.11137769203354148\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 41.4 ======\n", - "dT_dt= -0.11026391511320598\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 41.5 ======\n", - "dT_dt= -0.10916127596207376\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 41.6 ======\n", - "dT_dt= -0.10806966320245302\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 41.7 ======\n", - "dT_dt= -0.10698896657042845\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 41.8 ======\n", - "dT_dt= -0.10591907690472412\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 41.9 ======\n", - "dT_dt= -0.10485988613567693\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 42.0 ======\n", - "dT_dt= -0.10381128727432021\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 42.1 ======\n", - "dT_dt= -0.1027731744015771\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 42.2 ======\n", - "dT_dt= -0.10174544265756147\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 42.3 ======\n", - "dT_dt= -0.10072798823098594\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 42.4 ======\n", - "dT_dt= -0.09972070834867602\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 42.5 ======\n", - "dT_dt= -0.09872350126518939\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 42.6 ======\n", - "dT_dt= -0.09773626625253762\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 42.7 ======\n", - "dT_dt= -0.09675890359001223\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 42.8 ======\n", - "dT_dt= -0.09579131455411201\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 42.9 ======\n", - "dT_dt= -0.09483340140857095\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 43.0 ======\n", - "dT_dt= -0.09388506739448524\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 43.1 ======\n", - "dT_dt= -0.09294621672054043\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 43.2 ======\n", - "dT_dt= -0.09201675455333494\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 43.3 ======\n", - "dT_dt= -0.0910965870078016\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 43.4 ======\n", - "dT_dt= -0.09018562113772362\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 43.5 ======\n", - "dT_dt= -0.08928376492634627\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 43.6 ======\n", - "dT_dt= -0.08839092727708292\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 43.7 ======\n", - "dT_dt= -0.0875070180043121\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 43.8 ======\n", - "dT_dt= -0.08663194782426907\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 43.9 ======\n", - "dT_dt= -0.08576562834602655\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 44.0 ======\n", - "dT_dt= -0.08490797206256638\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 44.1 ======\n", - "dT_dt= -0.08405889234194071\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 44.2 ======\n", - "dT_dt= -0.08321830341852135\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 44.3 ======\n", - "dT_dt= -0.08238612038433608\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 44.4 ======\n", - "dT_dt= -0.08156225918049281\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 44.5 ======\n", - "dT_dt= -0.0807466365886878\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 44.6 ======\n", - "dT_dt= -0.07993917022280109\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 44.7 ======\n", - "dT_dt= -0.07913977852057315\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 44.8 ======\n", - "dT_dt= -0.0783483807353676\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 44.9 ======\n", - "dT_dt= -0.07756489692801374\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 45.0 ======\n", - "dT_dt= -0.0767892479587335\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 45.1 ======\n", - "dT_dt= -0.07602135547914629\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 45.2 ======\n", - "dT_dt= -0.07526114192435465\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 45.3 ======\n", - "dT_dt= -0.07450853050511093\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 45.4 ======\n", - "dT_dt= -0.07376344520005987\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 45.5 ======\n", - "dT_dt= -0.07302581074805943\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 45.6 ======\n", - "dT_dt= -0.07229555264057873\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 45.7 ======\n", - "dT_dt= -0.07157259711417296\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 45.8 ======\n", - "dT_dt= -0.07085687114303134\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 45.9 ======\n", - "dT_dt= -0.0701483024316012\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 46.0 ======\n", - "dT_dt= -0.06944681940728507\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 46.1 ======\n", - "dT_dt= -0.0687523512132124\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 46.2 ======\n", - "dT_dt= -0.06806482770108034\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 46.3 ======\n", - "dT_dt= -0.06738417942406941\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 46.4 ======\n", - "dT_dt= -0.06671033762982859\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 46.5 ======\n", - "dT_dt= -0.06604323425353016\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 46.6 ======\n", - "dT_dt= -0.06538280191099481\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 46.7 ======\n", - "dT_dt= -0.06472897389188503\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 46.8 ======\n", - "dT_dt= -0.06408168415296629\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 46.9 ======\n", - "dT_dt= -0.06344086731143649\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 47.0 ======\n", - "dT_dt= -0.06280645863832213\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 47.1 ======\n", - "dT_dt= -0.06217839405193892\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 47.2 ======\n", - "dT_dt= -0.06155661011141938\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 47.3 ======\n", - "dT_dt= -0.06094104401030514\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 47.4 ======\n", - "dT_dt= -0.060331633570202214\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 47.5 ======\n", - "dT_dt= -0.059728317234500145\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 47.6 ======\n", - "dT_dt= -0.05913103406215506\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 47.7 ======\n", - "dT_dt= -0.05853972372153358\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 47.8 ======\n", - "dT_dt= -0.057954326484318135\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 47.9 ======\n", - "dT_dt= -0.057374783219474784\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 48.0 ======\n", - "dT_dt= -0.056801035387280055\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 48.1 ======\n", - "dT_dt= -0.0562330250334071\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 48.2 ======\n", - "dT_dt= -0.05567069478307296\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 48.3 ======\n", - "dT_dt= -0.05511398783524229\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 48.4 ======\n", - "dT_dt= -0.05456284795688973\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 48.5 ======\n", - "dT_dt= -0.054017219477320924\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 48.6 ======\n", - "dT_dt= -0.05347704728254783\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 48.7 ======\n", - "dT_dt= -0.05294227680972235\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 48.8 ======\n", - "dT_dt= -0.05241285404162497\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 48.9 ======\n", - "dT_dt= -0.05188872550120856\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 49.0 ======\n", - "dT_dt= -0.05136983824619641\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 49.1 ======\n", - "dT_dt= -0.050856139863734384\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 49.2 ======\n", - "dT_dt= -0.05034757846509699\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 49.3 ======\n", - "dT_dt= -0.04984410268044606\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 49.4 ======\n", - "dT_dt= -0.049345661653641675\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 49.5 ======\n", - "dT_dt= -0.04885220503710528\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 49.6 ======\n", - "dT_dt= -0.04836368298673435\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 49.7 ======\n", - "dT_dt= -0.0478800461568671\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 49.8 ======\n", - "dT_dt= -0.047401245695298404\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 49.9 ======\n", - "dT_dt= -0.046927233238345425\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 50.0 ======\n", - "dT_dt= -0.04645796090596193\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 50.1 ======\n", - "dT_dt= -0.045993381296902315\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 50.2 ======\n", - "dT_dt= -0.04553344748393329\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 50.3 ======\n", - "dT_dt= -0.04507811300909381\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 50.4 ======\n", - "dT_dt= -0.044627331879002696\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 50.5 ======\n", - "dT_dt= -0.044181058560212705\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 50.6 ======\n", - "dT_dt= -0.04373924797461051\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 50.7 ======\n", - "dT_dt= -0.04330185549486423\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 50.8 ======\n", - "dT_dt= -0.04286883693991542\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 50.9 ======\n", - "dT_dt= -0.042440148570516104\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 51.0 ======\n", - "dT_dt= -0.04201574708481104\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 51.1 ======\n", - "dT_dt= -0.04159558961396286\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 51.2 ======\n", - "dT_dt= -0.0411796337178231\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 51.3 ======\n", - "dT_dt= -0.04076783738064478\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 51.4 ======\n", - "dT_dt= -0.04036015900683836\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 51.5 ======\n", - "dT_dt= -0.039956557416769914\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 51.6 ======\n", - "dT_dt= -0.039556991842602335\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 51.7 ======\n", - "dT_dt= -0.039161421924176314\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 51.8 ======\n", - "dT_dt= -0.03876980770493468\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 51.9 ======\n", - "dT_dt= -0.03838210962788544\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 52.0 ======\n", - "dT_dt= -0.037998288531606764\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 52.1 ======\n", - "dT_dt= -0.03761830564629065\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 52.2 ======\n", - "dT_dt= -0.03724212258982789\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 52.3 ======\n", - "dT_dt= -0.03686970136392951\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 52.4 ======\n", - "dT_dt= -0.036501004350290245\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 52.5 ======\n", - "dT_dt= -0.03613599430678747\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 52.6 ======\n", - "dT_dt= -0.035774634363719575\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 52.7 ======\n", - "dT_dt= -0.03541688802008238\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 52.8 ======\n", - "dT_dt= -0.03506271913988144\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 52.9 ======\n", - "dT_dt= -0.03471209194848264\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 53.0 ======\n", - "dT_dt= -0.034364971028997715\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 53.1 ======\n", - "dT_dt= -0.03402132131870772\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 53.2 ======\n", - "dT_dt= -0.03368110810552061\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 53.3 ======\n", - "dT_dt= -0.03334429702446542\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 53.4 ======\n", - "dT_dt= -0.03301085405422093\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 53.5 ======\n", - "dT_dt= -0.03268074551367874\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 53.6 ======\n", - "dT_dt= -0.03235393805854194\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 53.7 ======\n", - "dT_dt= -0.03203039867795639\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 53.8 ======\n", - "dT_dt= -0.03171009469117685\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 53.9 ======\n", - "dT_dt= -0.031392993744265144\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 54.0 ======\n", - "dT_dt= -0.03107906380682266\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 54.1 ======\n", - "dT_dt= -0.030768273168754592\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 54.2 ======\n", - "dT_dt= -0.030460590437067128\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 54.3 ======\n", - "dT_dt= -0.030155984532696325\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 54.4 ======\n", - "dT_dt= -0.029854424687369277\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 54.5 ======\n", - "dT_dt= -0.029555880440495487\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 54.6 ======\n", - "dT_dt= -0.029260321636090582\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 54.7 ======\n", - "dT_dt= -0.02896771841972985\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 54.8 ======\n", - "dT_dt= -0.028678041235532706\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 54.9 ======\n", - "dT_dt= -0.028391260823177333\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 55.0 ======\n", - "dT_dt= -0.028107348214945562\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 55.1 ======\n", - "dT_dt= -0.02782627473279611\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 55.2 ======\n", - "dT_dt= -0.02754801198546808\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 55.3 ======\n", - "dT_dt= -0.02727253186561356\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 55.4 ======\n", - "dT_dt= -0.026999806546957574\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 55.5 ======\n", - "dT_dt= -0.026729808481487895\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 55.6 ======\n", - "dT_dt= -0.02646251039667291\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 55.7 ======\n", - "dT_dt= -0.026197885292706148\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 55.8 ======\n", - "dT_dt= -0.02593590643977919\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 55.9 ======\n", - "dT_dt= -0.025676547375381276\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 56.0 ======\n", - "dT_dt= -0.025419781901627303\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 56.1 ======\n", - "dT_dt= -0.025165584082611048\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 56.2 ======\n", - "dT_dt= -0.024913928241785045\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 56.3 ======\n", - "dT_dt= -0.024664788959367103\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 56.4 ======\n", - "dT_dt= -0.02441814106977347\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 56.5 ======\n", - "dT_dt= -0.024173959659075806\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 56.6 ======\n", - "dT_dt= -0.023932220062485146\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 56.7 ======\n", - "dT_dt= -0.023692897861860376\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 56.8 ======\n", - "dT_dt= -0.0234559688832416\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 56.9 ======\n", - "dT_dt= -0.02322140919440905\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 57.0 ======\n", - "dT_dt= -0.022989195102465134\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 57.1 ======\n", - "dT_dt= -0.02275930315144059\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 57.2 ======\n", - "dT_dt= -0.022531710119926274\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 57.3 ======\n", - "dT_dt= -0.022306393018726924\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 57.4 ======\n", - "dT_dt= -0.022083329088539827\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 57.5 ======\n", - "dT_dt= -0.02186249579765445\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 57.6 ======\n", - "dT_dt= -0.02164387083967796\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 57.7 ======\n", - "dT_dt= -0.021427432131281066\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 57.8 ======\n", - "dT_dt= -0.02121315780996831\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 57.9 ======\n", - "dT_dt= -0.021001026231868638\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 58.0 ======\n", - "dT_dt= -0.020791015969549777\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 58.1 ======\n", - "dT_dt= -0.020583105809854275\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 58.2 ======\n", - "dT_dt= -0.020377274751755794\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 58.3 ======\n", - "dT_dt= -0.020173502004238134\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 58.4 ======\n", - "dT_dt= -0.019971766984195585\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 58.5 ======\n", - "dT_dt= -0.019772049314353526\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 58.6 ======\n", - "dT_dt= -0.019574328821209977\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 58.7 ======\n", - "dT_dt= -0.01937858553299776\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 58.8 ======\n", - "dT_dt= -0.019184799677667643\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 58.9 ======\n", - "dT_dt= -0.01899295168089097\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 59.0 ======\n", - "dT_dt= -0.018803022164081896\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 59.1 ======\n", - "dT_dt= -0.01861499194244125\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 59.2 ======\n", - "dT_dt= -0.018428842023016756\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 59.3 ======\n", - "dT_dt= -0.018244553602786696\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 59.4 ======\n", - "dT_dt= -0.018062108066758852\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 59.5 ======\n", - "dT_dt= -0.017881486986091134\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 59.6 ======\n", - "dT_dt= -0.01770267211623029\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 59.7 ======\n", - "dT_dt= -0.017525645395068068\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 59.8 ======\n", - "dT_dt= -0.017350388941117244\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 59.9 ======\n", - "dT_dt= -0.01717688505170614\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 60.0 ======\n", - "dT_dt= -0.017005116201189097\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 60.1 ======\n", - "dT_dt= -0.016835065039177265\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 60.2 ======\n", - "dT_dt= -0.016666714388785666\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 60.3 ======\n", - "dT_dt= -0.016500047244897686\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 60.4 ======\n", - "dT_dt= -0.01633504677244879\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 60.5 ======\n", - "dT_dt= -0.016171696304724394\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 60.6 ======\n", - "dT_dt= -0.016009979341677295\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 60.7 ======\n", - "dT_dt= -0.015849879548260403\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 60.8 ======\n", - "dT_dt= -0.015691380752777918\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 60.9 ======\n", - "dT_dt= -0.015534466945250004\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 61.0 ======\n", - "dT_dt= -0.015379122275797387\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 61.1 ======\n", - "dT_dt= -0.015225331053039427\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 61.2 ======\n", - "dT_dt= -0.0150730777425089\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 61.3 ======\n", - "dT_dt= -0.014922346965083834\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 61.4 ======\n", - "dT_dt= -0.014773123495432828\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 61.5 ======\n", - "dT_dt= -0.014625392260478522\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 61.6 ======\n", - "dT_dt= -0.014479138337873822\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 61.7 ======\n", - "dT_dt= -0.014334346954495203\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 61.8 ======\n", - "dT_dt= -0.014191003484950216\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 61.9 ======\n", - "dT_dt= -0.014049093450100615\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 62.0 ======\n", - "dT_dt= -0.013908602515599711\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 62.1 ======\n", - "dT_dt= -0.013769516490443579\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 62.2 ======\n", - "dT_dt= -0.013631821325539306\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 62.3 ======\n", - "dT_dt= -0.013495503112283914\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 62.4 ======\n", - "dT_dt= -0.01336054808116103\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 62.5 ======\n", - "dT_dt= -0.01322694260034929\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 62.6 ======\n", - "dT_dt= -0.013094673174345673\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 62.7 ======\n", - "dT_dt= -0.012963726442602309\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 62.8 ======\n", - "dT_dt= -0.012834089178176456\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 62.9 ======\n", - "dT_dt= -0.012705748286394682\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 63.0 ======\n", - "dT_dt= -0.012578690803530891\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 63.1 ======\n", - "dT_dt= -0.012452903895495738\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 63.2 ======\n", - "dT_dt= -0.012328374856540947\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 63.3 ======\n", - "dT_dt= -0.012205091107975364\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 63.4 ======\n", - "dT_dt= -0.012083040196895567\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 63.5 ======\n", - "dT_dt= -0.011962209794926439\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 63.6 ======\n", - "dT_dt= -0.011842587696977347\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 63.7 ======\n", - "dT_dt= -0.011724161820007595\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 63.8 ======\n", - "dT_dt= -0.01160692020180747\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 63.9 ======\n", - "dT_dt= -0.01149085099978926\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 64.0 ======\n", - "dT_dt= -0.011375942489791414\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 64.1 ======\n", - "dT_dt= -0.01126218306489335\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 64.2 ======\n", - "dT_dt= -0.011149561234244487\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 64.3 ======\n", - "dT_dt= -0.01103806562190215\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 64.4 ======\n", - "dT_dt= -0.010927684965682971\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 64.5 ======\n", - "dT_dt= -0.010818408116026036\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 64.6 ======\n", - "dT_dt= -0.010710224034865946\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 64.7 ======\n", - "dT_dt= -0.010603121794517278\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 64.8 ======\n", - "dT_dt= -0.010497090576572178\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 64.9 ======\n", - "dT_dt= -0.010392119670806466\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 65.0 ======\n", - "dT_dt= -0.010288198474098564\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 65.1 ======\n", - "dT_dt= -0.010185316489357632\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 65.2 ======\n", - "dT_dt= -0.010083463324464149\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 65.3 ======\n", - "dT_dt= -0.009982628691219375\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 65.4 ======\n", - "dT_dt= -0.009882802404307257\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 65.5 ======\n", - "dT_dt= -0.009783974380264127\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 65.6 ======\n", - "dT_dt= -0.009686134636461575\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 65.7 ======\n", - "dT_dt= -0.009589273290097112\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 65.8 ======\n", - "dT_dt= -0.009493380557196219\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 65.9 ======\n", - "dT_dt= -0.009398446751624335\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 66.0 ======\n", - "dT_dt= -0.009304462284108084\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 66.1 ======\n", - "dT_dt= -0.009211417661267164\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 66.2 ======\n", - "dT_dt= -0.009119303484654395\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 66.3 ======\n", - "dT_dt= -0.009028110449807869\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 66.4 ======\n", - "dT_dt= -0.008937829345309822\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 66.5 ======\n", - "dT_dt= -0.0088484510518569\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 66.6 ======\n", - "dT_dt= -0.008759966541338217\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 66.7 ======\n", - "dT_dt= -0.00867236687592481\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 66.8 ======\n", - "dT_dt= -0.00858564320716546\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 66.9 ======\n", - "dT_dt= -0.00849978677509391\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 67.0 ======\n", - "dT_dt= -0.008414788907342796\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 67.1 ======\n", - "dT_dt= -0.008330641018269348\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 67.2 ======\n", - "dT_dt= -0.008247334608086732\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 67.3 ======\n", - "dT_dt= -0.00816486126200573\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 67.4 ======\n", - "dT_dt= -0.00808321264938563\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 67.5 ======\n", - "dT_dt= -0.008002380522891884\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 67.6 ======\n", - "dT_dt= -0.007922356717662993\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 67.7 ======\n", - "dT_dt= -0.007843133150486282\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 67.8 ======\n", - "dT_dt= -0.007764701818981479\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 67.9 ======\n", - "dT_dt= -0.007687054800791771\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 68.0 ======\n", - "dT_dt= -0.007610184252783725\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 68.1 ======\n", - "dT_dt= -0.00753408241025575\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 68.2 ======\n", - "dT_dt= -0.007458741586153295\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 68.3 ======\n", - "dT_dt= -0.007384154170291879\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 68.4 ======\n", - "dT_dt= -0.007310312628588989\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 68.5 ======\n", - "dT_dt= -0.0072372095023030885\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 68.6 ======\n", - "dT_dt= -0.007164837407280089\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 68.7 ======\n", - "dT_dt= -0.007093189033207281\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 68.8 ======\n", - "dT_dt= -0.007022257142875077\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 68.9 ======\n", - "dT_dt= -0.0069520345714462195\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 69.0 ======\n", - "dT_dt= -0.00688251422573174\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 69.1 ======\n", - "dT_dt= -0.006813689083474373\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 69.2 ======\n", - "dT_dt= -0.006745552192639792\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 69.3 ======\n", - "dT_dt= -0.0066780966707135295\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 69.4 ======\n", - "dT_dt= -0.006611315704006415\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 69.5 ======\n", - "dT_dt= -0.006545202546966423\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 69.6 ======\n", - "dT_dt= -0.006479750521496897\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 69.7 ======\n", - "dT_dt= -0.0064149530162819\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 69.8 ======\n", - "dT_dt= -0.006350803486119006\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 69.9 ======\n", - "dT_dt= -0.006287295451257791\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 70.0 ======\n", - "dT_dt= -0.006224422496745064\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 70.1 ======\n", - "dT_dt= -0.006162178271777563\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 70.2 ======\n", - "dT_dt= -0.006100556489059628\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 70.3 ======\n", - "dT_dt= -0.006039550924169035\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 70.4 ======\n", - "dT_dt= -0.005979155414927462\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 70.5 ======\n", - "dT_dt= -0.005919363860778049\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 70.6 ======\n", - "dT_dt= -0.005860170222170425\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 70.7 ======\n", - "dT_dt= -0.005801568519948575\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 70.8 ======\n", - "dT_dt= -0.005743552834749011\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 70.9 ======\n", - "dT_dt= -0.005686117306401429\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 71.0 ======\n", - "dT_dt= -0.005629256133337535\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 71.1 ======\n", - "dT_dt= -0.005572963572004142\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 71.2 ======\n", - "dT_dt= -0.005517233936284072\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 71.3 ======\n", - "dT_dt= -0.005462061596921331\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 71.4 ======\n", - "dT_dt= -0.0054074409809519615\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 71.5 ======\n", - "dT_dt= -0.00535336657114236\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 71.6 ======\n", - "dT_dt= -0.00529983290543079\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 71.7 ======\n", - "dT_dt= -0.005246834576376359\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 71.8 ======\n", - "dT_dt= -0.005194366230612602\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 71.9 ======\n", - "dT_dt= -0.005142422568306416\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 72.0 ======\n", - "dT_dt= -0.005090998342623366\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 72.1 ======\n", - "dT_dt= -0.005040088359197271\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 72.2 ======\n", - "dT_dt= -0.004989687475605464\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 72.3 ======\n", - "dT_dt= -0.004939790600849392\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 72.4 ======\n", - "dT_dt= -0.004890392694840884\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 72.5 ======\n", - "dT_dt= -0.004841488767892344\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 72.6 ======\n", - "dT_dt= -0.004793073880213328\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 72.7 ======\n", - "dT_dt= -0.004745143141411035\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 72.8 ======\n", - "dT_dt= -0.0046976917099968325\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 72.9 ======\n", - "dT_dt= -0.004650714792896693\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 73.0 ======\n", - "dT_dt= -0.004604207644967673\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 73.1 ======\n", - "dT_dt= -0.004558165568517936\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 73.2 ======\n", - "dT_dt= -0.004512583912832824\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 73.3 ======\n", - "dT_dt= -0.004467458073704478\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 73.4 ======\n", - "dT_dt= -0.004422783492967497\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 73.5 ======\n", - "dT_dt= -0.004378555658037797\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 73.6 ======\n", - "dT_dt= -0.004334770101457508\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 73.7 ======\n", - "dT_dt= -0.004291422400443068\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 73.8 ======\n", - "dT_dt= -0.004248508176438648\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 73.9 ======\n", - "dT_dt= -0.004206023094674194\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 74.0 ======\n", - "dT_dt= -0.004163962863727377\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 74.1 ======\n", - "dT_dt= -0.004122323235090164\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 74.2 ======\n", - "dT_dt= -0.004081100002739291\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 74.3 ======\n", - "dT_dt= -0.004040289002712072\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 74.4 ======\n", - "dT_dt= -0.003999886112685047\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 74.5 ======\n", - "dT_dt= -0.003959887251558314\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 74.6 ======\n", - "dT_dt= -0.003920288379042703\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 74.7 ======\n", - "dT_dt= -0.003881085495252279\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 74.8 ======\n", - "dT_dt= -0.0038422746402996923\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 74.9 ======\n", - "dT_dt= -0.003803851893896848\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 75.0 ======\n", - "dT_dt= -0.003765813374957716\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 75.1 ======\n", - "dT_dt= -0.003728155241208242\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 75.2 ======\n", - "dT_dt= -0.003690873688796259\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 75.3 ======\n", - "dT_dt= -0.003653964951908151\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 75.4 ======\n", - "dT_dt= -0.0036174253023890657\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 75.5 ======\n", - "dT_dt= -0.003581251049365264\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 75.6 ======\n", - "dT_dt= -0.003545438538871437\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 75.7 ======\n", - "dT_dt= -0.0035099841534826483\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 75.8 ======\n", - "dT_dt= -0.0034748843119476905\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 75.9 ======\n", - "dT_dt= -0.0034401354688281317\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 76.0 ======\n", - "dT_dt= -0.003405734114139847\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 76.1 ======\n", - "dT_dt= -0.0033716767729984557\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 76.2 ======\n", - "dT_dt= -0.0033379600052683145\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 76.3 ======\n", - "dT_dt= -0.003304580405215774\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 76.4 ======\n", - "dT_dt= -0.0032715346011634953\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 76.5 ======\n", - "dT_dt= -0.0032388192551518814\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 76.6 ======\n", - "dT_dt= -0.003206431062600501\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 76.7 ======\n", - "dT_dt= -0.0031743667519744893\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 76.8 ======\n", - "dT_dt= -0.0031426230844548543\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 76.9 ======\n", - "dT_dt= -0.00311119685361021\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 77.0 ======\n", - "dT_dt= -0.003080084885074186\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 77.1 ======\n", - "dT_dt= -0.0030492840362235543\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 77.2 ======\n", - "dT_dt= -0.0030187911958613257\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 77.3 ======\n", - "dT_dt= -0.002988603283902691\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 77.4 ======\n", - "dT_dt= -0.002958717251063803\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 77.5 ======\n", - "dT_dt= -0.002929130078553044\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 77.6 ======\n", - "dT_dt= -0.0028998387777676273\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 77.7 ======\n", - "dT_dt= -0.0028708403899898372\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 77.8 ======\n", - "dT_dt= -0.002842131986090024\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 77.9 ======\n", - "dT_dt= -0.002813710666229241\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 78.0 ======\n", - "dT_dt= -0.0027855735595668563\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 78.1 ======\n", - "dT_dt= -0.002757717823971362\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 78.2 ======\n", - "dT_dt= -0.0027301406457315384\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 78.3 ======\n", - "dT_dt= -0.0027028392392743684\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 78.4 ======\n", - "dT_dt= -0.0026758108468815326\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 78.5 ======\n", - "dT_dt= -0.0026490527384126494\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 78.6 ======\n", - "dT_dt= -0.002622562211028523\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 78.7 ======\n", - "dT_dt= -0.002596336588918291\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 78.8 ======\n", - "dT_dt= -0.0025703732230290656\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 78.9 ======\n", - "dT_dt= -0.002544669490798768\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 79.0 ======\n", - "dT_dt= -0.002519222795890741\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 79.1 ======\n", - "dT_dt= -0.0024940305679319154\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 79.2 ======\n", - "dT_dt= -0.002469090262252749\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 79.3 ======\n", - "dT_dt= -0.002444399359630367\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 79.4 ======\n", - "dT_dt= -0.002419955366034188\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 79.5 ======\n", - "dT_dt= -0.002395755812373679\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 79.6 ======\n", - "dT_dt= -0.002371798254250024\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 79.7 ======\n", - "dT_dt= -0.0023480802717074315\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 79.8 ======\n", - "dT_dt= -0.002324599468990485\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 79.9 ======\n", - "dT_dt= -0.0023013534743004274\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 80.0 ======\n", - "dT_dt= -0.0022783399395574833\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 80.1 ======\n", - "dT_dt= -0.0022555565401617627\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 80.2 ======\n", - "dT_dt= -0.002233000974760202\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 80.3 ======\n", - "dT_dt= -0.0022106709650124403\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 80.4 ======\n", - "dT_dt= -0.0021885642553623797\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 80.5 ======\n", - "dT_dt= -0.0021666786128086814\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 80.6 ======\n", - "dT_dt= -0.0021450118266805873\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 80.7 ======\n", - "dT_dt= -0.002123561708413746\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 80.8 ======\n", - "dT_dt= -0.0021023260913295874\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 80.9 ======\n", - "dT_dt= -0.002081302830416121\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 81.0 ======\n", - "dT_dt= -0.002060489802111931\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 81.1 ======\n", - "dT_dt= -0.002039884904090883\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 81.2 ======\n", - "dT_dt= -0.002019486055050024\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 81.3 ======\n", - "dT_dt= -0.0019992911944996194\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 81.4 ======\n", - "dT_dt= -0.001979298282554609\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 81.5 ======\n", - "dT_dt= -0.001959505299728903\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 81.6 ======\n", - "dT_dt= -0.0019399102467314577\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 81.7 ======\n", - "dT_dt= -0.0019205111442641256\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 81.8 ======\n", - "dT_dt= -0.001901306032821637\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 81.9 ======\n", - "dT_dt= -0.0018822929724933602\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 82.0 ======\n", - "dT_dt= -0.001863470042768256\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 82.1 ======\n", - "dT_dt= -0.0018448353423405452\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 82.2 ======\n", - "dT_dt= -0.0018263869889171504\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 82.3 ======\n", - "dT_dt= -0.0018081231190279824\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 82.4 ======\n", - "dT_dt= -0.0017900418878376457\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 82.5 ======\n", - "dT_dt= -0.0017721414689592764\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 82.6 ======\n", - "dT_dt= -0.001754420054269801\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 82.7 ======\n", - "dT_dt= -0.0017368758537269714\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 82.8 ======\n", - "dT_dt= -0.0017195070951895987\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 82.9 ======\n", - "dT_dt= -0.0017023120242377844\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 83.0 ======\n", - "dT_dt= -0.0016852889039952858\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 83.1 ======\n", - "dT_dt= -0.0016684360149554324\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 83.2 ======\n", - "dT_dt= -0.0016517516548059776\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 83.3 ======\n", - "dT_dt= -0.0016352341382578574\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 83.4 ======\n", - "dT_dt= -0.0016188817968753712\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 83.5 ======\n", - "dT_dt= -0.001602692978906717\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 83.6 ======\n", - "dT_dt= -0.0015866660491177242\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 83.7 ======\n", - "dT_dt= -0.0015707993886266538\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 83.8 ======\n", - "dT_dt= -0.0015550913947404155\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 83.9 ======\n", - "dT_dt= -0.0015395404807929227\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 84.0 ======\n", - "dT_dt= -0.0015241450759848618\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 84.1 ======\n", - "dT_dt= -0.001508903625224889\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 84.2 ======\n", - "dT_dt= -0.0014938145889725975\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 84.3 ======\n", - "dT_dt= -0.0014788764430829105\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 84.4 ======\n", - "dT_dt= -0.0014640876786522483\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 84.5 ======\n", - "dT_dt= -0.0014494468018657614\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 84.6 ======\n", - "dT_dt= -0.0014349523338470505\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 84.7 ======\n", - "dT_dt= -0.0014206028105085977\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 84.8 ======\n", - "dT_dt= -0.0014063967824036183\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 84.9 ======\n", - "dT_dt= -0.0013923328145796889\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 85.0 ======\n", - "dT_dt= -0.001378409486433796\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 85.1 ======\n", - "dT_dt= -0.0013646253915695185\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 85.2 ======\n", - "dT_dt= -0.0013509791376538516\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 85.3 ======\n", - "dT_dt= -0.0013374693462772315\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 85.4 ======\n", - "dT_dt= -0.0013240946528146225\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 85.5 ======\n", - "dT_dt= -0.0013108537062866078\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 85.6 ======\n", - "dT_dt= -0.0012977451692236742\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 85.7 ======\n", - "dT_dt= -0.0012847677175315654\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 85.8 ======\n", - "dT_dt= -0.0012719200403562782\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 85.9 ======\n", - "dT_dt= -0.0012592008399526123\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 86.0 ======\n", - "dT_dt= -0.0012466088315530755\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 86.1 ======\n", - "dT_dt= -0.0012341427432374986\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 86.2 ======\n", - "dT_dt= -0.001221801315805138\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 86.3 ======\n", - "dT_dt= -0.0012095833026471326\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 86.4 ======\n", - "dT_dt= -0.0011974874696207395\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 86.5 ======\n", - "dT_dt= -0.0011855125949246316\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 86.6 ======\n", - "dT_dt= -0.0011736574689752645\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 86.7 ======\n", - "dT_dt= -0.0011619208942853733\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 86.8 ======\n", - "dT_dt= -0.0011503016853424697\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 86.9 ======\n", - "dT_dt= -0.0011387986684891162\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 87.0 ======\n", - "dT_dt= -0.001127410681804264\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 87.1 ======\n", - "dT_dt= -0.0011161365749863706\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 87.2 ======\n", - "dT_dt= -0.001104975209236514\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 87.3 ======\n", - "dT_dt= -0.001093925457143996\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 87.4 ======\n", - "dT_dt= -0.0010829862025726557\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 87.5 ======\n", - "dT_dt= -0.001072156340546826\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 87.6 ======\n", - "dT_dt= -0.0010614347771412014\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 87.7 ======\n", - "dT_dt= -0.0010508204293696367\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 87.8 ======\n", - "dT_dt= -0.001040312225076079\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 87.9 ======\n", - "dT_dt= -0.0010299091028251439\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 88.0 ======\n", - "dT_dt= -0.0010196100117969564\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 88.1 ======\n", - "dT_dt= -0.0010094139116791467\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 88.2 ======\n", - "dT_dt= -0.0009993197725624015\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 88.3 ======\n", - "dT_dt= -0.0009893265748367242\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 88.4 ======\n", - "dT_dt= -0.0009794333090884066\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 88.5 ======\n", - "dT_dt= -0.0009696389759973556\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 88.6 ======\n", - "dT_dt= -0.0009599425862372613\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 88.7 ======\n", - "dT_dt= -0.0009503431603750557\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 88.8 ======\n", - "dT_dt= -0.0009408397287714366\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 88.9 ======\n", - "dT_dt= -0.0009314313314838785\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 89.0 ======\n", - "dT_dt= -0.0009221170181689331\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 89.1 ======\n", - "dT_dt= -0.0009128958479873717\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 89.2 ======\n", - "dT_dt= -0.0009037668895075512\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 89.3 ======\n", - "dT_dt= -0.0008947292206123337\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 89.4 ======\n", - "dT_dt= -0.0008857819284063596\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 89.5 ======\n", - "dT_dt= -0.0008769241091222569\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 89.6 ======\n", - "dT_dt= -0.0008681548680311125\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 89.7 ======\n", - "dT_dt= -0.000859473319350812\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 89.8 ======\n", - "dT_dt= -0.0008508785861572222\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 89.9 ======\n", - "dT_dt= -0.0008423698002957281\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 90.0 ======\n", - "dT_dt= -0.0008339461022927708\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 90.1 ======\n", - "dT_dt= -0.0008256066412698715\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 90.2 ======\n", - "dT_dt= -0.0008173505748573008\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 90.3 ======\n", - "dT_dt= -0.000809177069108813\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 90.4 ======\n", - "dT_dt= -0.000801085298417803\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 90.5 ======\n", - "dT_dt= -0.0007930744454334615\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 90.6 ======\n", - "dT_dt= -0.000785143700979063\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 90.7 ======\n", - "dT_dt= -0.0007772922639691871\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 90.8 ======\n", - "dT_dt= -0.0007695193413294277\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 90.9 ======\n", - "dT_dt= -0.0007618241479161015\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 91.0 ======\n", - "dT_dt= -0.0007542059064370222\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 91.1 ======\n", - "dT_dt= -0.0007466638473726307\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 91.2 ======\n", - "dT_dt= -0.0007391972088989008\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 91.3 ======\n", - "dT_dt= -0.0007318052368098905\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 91.4 ======\n", - "dT_dt= -0.0007244871844417134\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 91.5 ======\n", - "dT_dt= -0.0007172423125972216\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 91.6 ======\n", - "dT_dt= -0.0007100698894713987\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 91.7 ======\n", - "dT_dt= -0.0007029691905767522\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 91.8 ======\n", - "dT_dt= -0.000695939498670839\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 91.9 ======\n", - "dT_dt= -0.0006889801036841448\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 92.0 ======\n", - "dT_dt= -0.0006820903026472536\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 92.1 ======\n", - "dT_dt= -0.0006752693996208592\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 92.2 ======\n", - "dT_dt= -0.0006685167056247111\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 92.3 ======\n", - "dT_dt= -0.0006618315385683361\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 92.4 ======\n", - "dT_dt= -0.0006552132231828268\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 92.5 ======\n", - "dT_dt= -0.0006486610909508528\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 92.6 ======\n", - "dT_dt= -0.000642174480041291\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 92.7 ======\n", - "dT_dt= -0.0006357527352410131\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 92.8 ======\n", - "dT_dt= -0.0006293952078884502\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 92.9 ======\n", - "dT_dt= -0.0006231012558096439\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 93.0 ======\n", - "dT_dt= -0.000616870243251455\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 93.1 ======\n", - "dT_dt= -0.0006107015408190364\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 93.2 ======\n", - "dT_dt= -0.0006045945254108177\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 93.3 ======\n", - "dT_dt= -0.0005985485801566882\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 93.4 ======\n", - "dT_dt= -0.0005925630943551142\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 93.5 ======\n", - "dT_dt= -0.0005866374634116767\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 93.6 ======\n", - "dT_dt= -0.0005807710887776096\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 93.7 ======\n", - "dT_dt= -0.0005749633778897589\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 93.8 ======\n", - "dT_dt= -0.0005692137441108969\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 93.9 ======\n", - "dT_dt= -0.0005635216066696814\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 94.0 ======\n", - "dT_dt= -0.0005578863906031018\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 94.1 ======\n", - "dT_dt= -0.0005523075266971489\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 94.2 ======\n", - "dT_dt= -0.0005467844514303266\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 94.3 ======\n", - "dT_dt= -0.000541316606916098\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 94.4 ======\n", - "dT_dt= -0.0005359034408471075\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 94.5 ======\n", - "dT_dt= -0.0005305444064386933\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 94.6 ======\n", - "dT_dt= -0.000525238962374175\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 94.7 ======\n", - "dT_dt= -0.0005199865727504972\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 94.8 ======\n", - "dT_dt= -0.0005147867070231627\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 94.9 ======\n", - "dT_dt= -0.0005096388399529417\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 95.0 ======\n", - "dT_dt= -0.0005045424515532915\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 95.1 ======\n", - "dT_dt= -0.0004994970270377763\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 95.2 ======\n", - "dT_dt= -0.0004945020567674874\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 95.3 ======\n", - "dT_dt= -0.0004895570361998835\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 95.4 ======\n", - "dT_dt= -0.00048466146583798776\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 95.5 ======\n", - "dT_dt= -0.00047981485117958305\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 95.6 ======\n", - "dT_dt= -0.0004750167026678298\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 95.7 ======\n", - "dT_dt= -0.00047026653564117286\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 95.8 ======\n", - "dT_dt= -0.00046556387028466877\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 95.9 ======\n", - "dT_dt= -0.0004609082315816693\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 96.0 ======\n", - "dT_dt= -0.0004562991492658597\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 96.1 ======\n", - "dT_dt= -0.00045173615777329703\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 96.2 ======\n", - "dT_dt= -0.00044721879619551434\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 96.3 ======\n", - "dT_dt= -0.0004427466082336906\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 96.4 ======\n", - "dT_dt= -0.0004383191421513999\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 96.5 ======\n", - "dT_dt= -0.00043393595072984683\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 96.6 ======\n", - "dT_dt= -0.00042959659122239203\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 96.7 ======\n", - "dT_dt= -0.0004253006253101433\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 96.8 ======\n", - "dT_dt= -0.00042104761905719106\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 96.9 ======\n", - "dT_dt= -0.00041683714286655515\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 97.0 ======\n", - "dT_dt= -0.0004126687714379074\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 97.1 ======\n", - "dT_dt= -0.00040854208372351767\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 97.2 ======\n", - "dT_dt= -0.00040445666288633223\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 97.3 ======\n", - "dT_dt= -0.000400412096257341\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 97.4 ======\n", - "dT_dt= -0.0003964079752947214\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 97.5 ======\n", - "dT_dt= -0.0003924438955419163\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 97.6 ======\n", - "dT_dt= -0.0003885194565864225\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 97.7 ======\n", - "dT_dt= -0.0003846342620207111\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 97.8 ======\n", - "dT_dt= -0.00038078791940066026\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 97.9 ======\n", - "dT_dt= -0.0003769800402068313\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 98.0 ======\n", - "dT_dt= -0.00037321023980467776\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 98.1 ======\n", - "dT_dt= -0.0003694781374065315\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 98.2 ======\n", - "dT_dt= -0.000365783356032523\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 98.3 ======\n", - "dT_dt= -0.000362125522472212\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 98.4 ======\n", - "dT_dt= -0.0003585042672476391\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 98.5 ======\n", - "dT_dt= -0.0003549192245753119\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 98.6 ======\n", - "dT_dt= -0.00035137003232961207\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 98.7 ======\n", - "dT_dt= -0.0003478563320062023\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 98.8 ======\n", - "dT_dt= -0.0003443777686861438\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 98.9 ======\n", - "dT_dt= -0.0003409339909993037\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 99.0 ======\n", - "dT_dt= -0.00033752465108918275\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 99.1 ======\n", - "dT_dt= -0.00033414940457845434\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 99.2 ======\n", - "dT_dt= -0.00033080791053272666\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 99.3 ======\n", - "dT_dt= -0.0003274998314275024\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 99.4 ======\n", - "dT_dt= -0.0003242248331133624\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 99.5 ======\n", - "dT_dt= -0.00032098258478221455\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 99.6 ======\n", - "dT_dt= -0.00031777275893425384\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 99.7 ======\n", - "dT_dt= -0.00031459503134492197\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 99.8 ======\n", - "dT_dt= -0.00031144908103151184\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 99.9 ======\n", - "dT_dt= -0.00030833459022119316\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n", - "====== Evaluating at t = 100.0 ======\n", - "dT_dt= -0.00030525124431903807\n", - "Evaluating graph: cooling_process, root nodes: ['cool_node'], with array format numpy\n" - ] - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - "

" - ], - "image/png": "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\n" - }, - "metadata": {} - } - ], - "source": [ - "from modeci_mdf.utils import load_mdf, print_summary\n", - "from modeci_mdf.execution_engine import EvaluableGraph\n", - "import matplotlib.pyplot as plt\n", - "\n", - "verbose = False\n", - "eg = EvaluableGraph(mod_graph, verbose=verbose)\n", - "dt = 0.1\n", - "\n", - "duration = 100\n", - "t = 0\n", - "recorded = {}\n", - "times = []\n", - "s = []\n", - "\n", - "# Execute the simulation\n", - "while t <= duration:\n", - " times.append(t)\n", - " print(f\"====== Evaluating at t = {t:.1f} ======\")\n", - "\n", - " print(\"dT_dt=\", eg.enodes[\"cool_node\"].evaluable_outputs[\"out_port2\"].curr_value)\n", - " if t == 0:\n", - " eg.evaluate()\n", - " else:\n", - " eg.evaluate(time_increment=dt)\n", - "\n", - " s.append(eg.enodes[\"cool_node\"].evaluable_outputs[\"out_port\"].curr_value)\n", - " t += dt\n", - "\n", - "# Plotting the results\n", - "plt.plot(times, s)\n", - "plt.xlabel('Time')\n", - "plt.ylabel('Temperature')\n", - "plt.title('Cooling Process Simulation')\n", - "plt.show()\n" - ] - }, - { - "cell_type": "markdown", - "id": "8d80f88d-7413-4c9b-a12c-ea1aa380a1f1", - "metadata": { - "tags": [], - "id": "8d80f88d-7413-4c9b-a12c-ea1aa380a1f1" - }, - "source": [ - "## 6. Manual Algorithm for Finding Temperature at Time $t$\n", - "For each time step from 0 to $t$:\n", - "\n", - "1. Calculate the rate of temperature change $\\frac{dT}{dt}$ using the formula: $-k(T - T_{\\text{ambient}})$.\n", - "2. Update the temperature of the object for the next time step: $T_{\\text{new}} = T + \\frac{dT}{dt} \\times dt$.\n", - "3. Repeat the process, using $T_{\\text{new}}$ as the new $T$ for the next iteration.\n", - "\n", - "### Example Calculation:\n", - "\n", - "Let's manually compute the temperature at time $t$ for an object with the following parameters:\n", - "\n", - "- Initial temperature $T_0 = 90$°C,\n", - "- Ambient temperature $T_{\\text{ambient}} = 20$°C,\n", - "- Cooling constant $k = 0.1$,\n", - "- Time step $dt = 1$ minute,\n", - "- Calculate the temperature after $t = 3$ minutes.\n", - "\n", - "Iterations:\n", - "\n", - "#### Initial Condition:\n", - "\n", - "- $T_0 = 90$°C\n", - "\n", - "#### Iteration 1:\n", - "\n", - "- $\\frac{dT}{dt} = -0.1(90 - 20) = -7$°C/min\n", - "- $T_{\\text{new}} = 90 + (-7) \\times 1 = 83$°C\n", - "\n", - "#### Iteration 2:\n", - "\n", - "- $\\frac{dT}{dt} = -0.1(83 - 20) = -6.3$°C/min (approximately)\n", - "- $T_{\\text{new}} = 83 + (-6.3) \\times 1 = 76.7$°C (approximately)\n", - "\n", - "#### Iteration 3:\n", - "\n", - "- $\\frac{dT}{dt} = -0.1(76.7 - 20) = -5.67$°C/min (approximately)\n", - "- $T_{\\text{new}} = 76.7 + (-5.67) \\times 1 = 71.03$°C (approximately)\n", - "\n", - "After 3 minutes, the temperature of the object is approximately 71.03°C, demonstrating how it cools towards the ambient temperature over time according to Newton's Law of Cooling. This manual method provides a simple way to estimate temperature changes over discrete time intervals.\n" - ] - } - ], - "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.7" - }, - "colab": { - "provenance": [] - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/MDF/README.md b/examples/MDF/README.md index e9694b3d..16f4e57f 100644 --- a/examples/MDF/README.md +++ b/examples/MDF/README.md @@ -81,8 +81,8 @@ A simple [Node](https://mdf.readthedocs.io/en/latest/api/Specification.html#node A simple [Newtonian cooling process](https://en.wikipedia.org/wiki/Newton%27s_law_of_cooling) model that demonstrates the use of time derivative simulating the cooling of an object to the ambient temperature over time. - - + + ## More examples diff --git a/examples/MDF/newton.png b/examples/MDF/images/newton.png similarity index 100% rename from examples/MDF/newton.png rename to examples/MDF/images/newton.png diff --git a/examples/MDF/newton_plot.png b/examples/MDF/images/newton_plot.png similarity index 100% rename from examples/MDF/newton_plot.png rename to examples/MDF/images/newton_plot.png diff --git a/examples/MDF/newton.py b/examples/MDF/newton.py index ab3ae5d7..4787c4a5 100644 --- a/examples/MDF/newton.py +++ b/examples/MDF/newton.py @@ -33,7 +33,7 @@ def main(): if "-run" in sys.argv: # Running the Model - verbose = True + verbose = False eg = EvaluableGraph(mod_graph, verbose=verbose) dt = 0.1 duration = 100 @@ -43,7 +43,8 @@ def main(): while t <= duration: times.append(t) - print(f"====== Evaluating at t = {t:.1f} ======") + if verbose: + print(f"====== Evaluating at t = {t:.1f} ======") if t == 0: eg.evaluate() else: diff --git a/examples/Newton_Law_of_Cooling.ipynb b/examples/Newton_Law_of_Cooling.ipynb new file mode 100644 index 00000000..3fac0ee1 --- /dev/null +++ b/examples/Newton_Law_of_Cooling.ipynb @@ -0,0 +1,428 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "4581f50f-39bd-44e2-9287-160f904cd43b", + "metadata": { + "id": "4581f50f-39bd-44e2-9287-160f904cd43b" + }, + "source": [ + "# Implementing Model Description Format for Newton's Law of Cooling\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "5e8d408f-beb4-41ab-9124-1dc1655eb312", + "metadata": { + "id": "5e8d408f-beb4-41ab-9124-1dc1655eb312" + }, + "source": [ + "

\n", + "\n", + "## 1. Newton's Law of Cooling Process Model: Introduction\n", + "\n", + "In this notebook, a simple Newtonian cooling process model is implemented using the MDF library. The model simulates the cooling of an object to the ambient temperature over time.\n", + "\n", + "Newton's Law of Cooling is expressed by the differential equation:\n", + "$$\n", + "\\frac{dT}{dt} = -k(T - T_{\\text{ambient}})\n", + "$$\n", + "The temperature of the object is denoted by $T$,\\\n", + "The ambient temperature is denoted by $T_{\\text{ambient}}$,\\\n", + "The cooling coefficient is represented by $k$,\\\n", + "The rate of change of the temperature over time is given by $\\frac{dT}{dt}$.\\\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "c9108ee9-870c-43ef-a6d6-0cc0656403ca", + "metadata": { + "id": "c9108ee9-870c-43ef-a6d6-0cc0656403ca" + }, + "outputs": [], + "source": [ + "from modeci_mdf.mdf import Model, Graph, Node, Parameter, OutputPort, Function, InputPort" + ] + }, + { + "cell_type": "markdown", + "id": "e392770f-6610-448f-a17e-92d2f19bf213", + "metadata": { + "id": "e392770f-6610-448f-a17e-92d2f19bf213", + "tags": [] + }, + "source": [ + "## 2. Creating the Model and Graph\n", + "First, we initialize the model and a graph to hold our computational nodes." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "42d29dbe-9da6-421c-b5f1-6c0ba65cd9a8", + "metadata": { + "id": "42d29dbe-9da6-421c-b5f1-6c0ba65cd9a8" + }, + "outputs": [], + "source": [ + "mod = Model(id=\"NewtonCoolingModel\")\n", + "mod_graph = Graph(id=\"cooling_process\")\n", + "mod.graphs.append(mod_graph)" + ] + }, + { + "cell_type": "markdown", + "id": "13452273-3035-4c7d-98a0-5a4bf1fc936d", + "metadata": { + "id": "13452273-3035-4c7d-98a0-5a4bf1fc936d" + }, + "source": [ + "### 2.1 Defining Nodes and Parameters\n", + "We define a single node with parameters for the cooling coefficient, ambient temperature (\\`T_a\\`), current temperature (\\`T_curr\\`), and the rate of temperature change (\\`dT_dt\\`). These parameters are essential for modeling the cooling process according to Newton's law of cooling." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "b285917f-c263-4cb4-bb77-410dfd239bc6", + "metadata": { + "id": "b285917f-c263-4cb4-bb77-410dfd239bc6" + }, + "outputs": [], + "source": [ + "cool_node = Node(id=\"cool_node\")\n", + "cool_node.parameters.append(Parameter(id=\"cooling_coeff\", value=0.1))\n", + "cool_node.parameters.append(Parameter(id=\"T_a\", value=20))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9ebb4a51-e0eb-4966-9fa5-f86933fada67", + "metadata": { + "id": "9ebb4a51-e0eb-4966-9fa5-f86933fada67" + }, + "outputs": [], + "source": [ + "s1 = Parameter(\n", + " id=\"T_curr\", default_initial_value=90, time_derivative=\"dT_dt\"\n", + ")\n", + "cool_node.parameters.append(s1)\n", + "\n", + "s2 = Parameter(\n", + " id=\"dT_dt\",\n", + " default_initial_value=0,\n", + " value=\"-cooling_coeff*(T_curr - T_a)\",\n", + ")\n", + "cool_node.parameters.append(s2)" + ] + }, + { + "cell_type": "markdown", + "id": "f45f4dc5-db21-4623-b95b-caeb23a27a2c", + "metadata": { + "id": "f45f4dc5-db21-4623-b95b-caeb23a27a2c" + }, + "source": [ + "### 2.2 Output Ports\n", + "An output port is defined to represent the current temperature of the object and the rate of change of the temperature over time 'dT_dt'." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "f5130413-ac3b-45cb-bca1-2bc43907cbd3", + "metadata": { + "id": "f5130413-ac3b-45cb-bca1-2bc43907cbd3" + }, + "outputs": [], + "source": [ + "op1 = OutputPort(id=\"out_port\", value=\"T_curr\")\n", + "cool_node.output_ports.append(op1)\n", + "op2 = OutputPort(id=\"out_port2\", value=\"dT_dt\")\n", + "cool_node.output_ports.append(op2)" + ] + }, + { + "cell_type": "markdown", + "id": "f5644dcf-218c-41e5-9458-7ab4baf06da2", + "metadata": { + "id": "f5644dcf-218c-41e5-9458-7ab4baf06da2", + "tags": [] + }, + "source": [ + "## 3. Visualizing the Model\n", + "The MDF library allows for the visualization of the model structure, which can be generated as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "61cf61d9-3a05-4f93-a37e-6603ce16118c", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 291 + }, + "id": "61cf61d9-3a05-4f93-a37e-6603ce16118c", + "outputId": "e9ea80d7-10cf-4145-ca4d-9fd7390d9c1e" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Converting MDF graph: cooling_process to graphviz (level: 3, format: png)\n", + " Node: cool_node\n", + "Written graph image to: NewtonsLawOfCooling.png\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mod_graph.nodes.append(cool_node)\n", + "mod.to_graph_image(\n", + " engine=\"dot\",\n", + " output_format=\"png\",\n", + " view_on_render=False,\n", + " level=3,\n", + " filename_root=\"NewtonsLawOfCooling\",\n", + " is_horizontal=True\n", + " )\n", + "\n", + "from IPython.display import Image\n", + "Image(filename=\"NewtonsLawOfCooling.png\")" + ] + }, + { + "cell_type": "markdown", + "id": "8d5adafb-e704-41c7-ab91-d83f887e0d29", + "metadata": { + "id": "8d5adafb-e704-41c7-ab91-d83f887e0d29", + "tags": [] + }, + "source": [ + "## 4. Print the structure as yaml" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "af51ce0d-5b55-431e-b6c6-dafa53d74ab7", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "af51ce0d-5b55-431e-b6c6-dafa53d74ab7", + "outputId": "6a625ee0-e7e5-40db-d929-24d8d0597bb5" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cooling_process:\n", + " nodes:\n", + " cool_node:\n", + " parameters:\n", + " cooling_coeff:\n", + " value: 0.1\n", + " T_a:\n", + " value: 20\n", + " T_curr:\n", + " default_initial_value: 90\n", + " time_derivative: dT_dt\n", + " dT_dt:\n", + " value: -cooling_coeff*(T_curr - T_a)\n", + " default_initial_value: 0\n", + " output_ports:\n", + " out_port:\n", + " value: T_curr\n", + " out_port2:\n", + " value: dT_dt\n", + "\n" + ] + } + ], + "source": [ + "print(mod_graph.to_yaml())" + ] + }, + { + "cell_type": "markdown", + "id": "3b8e928c-517d-4873-90d5-4e6cea5bc4bf", + "metadata": { + "id": "3b8e928c-517d-4873-90d5-4e6cea5bc4bf", + "tags": [] + }, + "source": [ + "## 5. Running the Model\n", + "We can execute the model simulation over a specified duration. This is achieved using the \\`EvaluableGraph\\` class from MDF's execution engine, illustrating how the temperature of the object changes over time." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "4ac2c8b0-7578-4442-9b33-b713a7f2008f", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "4ac2c8b0-7578-4442-9b33-b713a7f2008f", + "outputId": "6673188f-f389-4389-fd34-0ceb8329b205" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Init graph: cooling_process\n", + "Executing the simulation for cooling_process graph.\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "

" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from modeci_mdf.utils import load_mdf, print_summary\n", + "from modeci_mdf.execution_engine import EvaluableGraph\n", + "import matplotlib.pyplot as plt\n", + "\n", + "verbose = False\n", + "eg = EvaluableGraph(mod_graph, verbose=verbose)\n", + "dt = 0.1\n", + "\n", + "duration = 100\n", + "t = 0\n", + "recorded = {}\n", + "times = []\n", + "s = []\n", + "print(\"Executing the simulation for\", mod_graph.id, \"graph.\")\n", + "# Execute the simulation\n", + "while t <= duration:\n", + " times.append(t)\n", + "\n", + " if verbose:\n", + " print(f\"====== Evaluating at t = {t:.1f} ======\")\n", + " print(\"dT_dt=\", eg.enodes[\"cool_node\"].evaluable_outputs[\"out_port2\"].curr_value)\n", + " if t == 0:\n", + " eg.evaluate()\n", + " else:\n", + " eg.evaluate(time_increment=dt)\n", + "\n", + " s.append(eg.enodes[\"cool_node\"].evaluable_outputs[\"out_port\"].curr_value)\n", + " t += dt\n", + "\n", + "# Plotting the results\n", + "plt.plot(times, s)\n", + "plt.xlabel('Time')\n", + "plt.ylabel('Temperature')\n", + "plt.title('Cooling Process Simulation')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "8d80f88d-7413-4c9b-a12c-ea1aa380a1f1", + "metadata": { + "id": "8d80f88d-7413-4c9b-a12c-ea1aa380a1f1", + "tags": [] + }, + "source": [ + "## 6. Manual Algorithm for Finding Temperature at Time $t$\n", + "For each time step from 0 to $t$:\n", + "\n", + "1. Calculate the rate of temperature change $\\frac{dT}{dt}$ using the formula: $-k(T - T_{\\text{ambient}})$.\n", + "2. Update the temperature of the object for the next time step: $T_{\\text{new}} = T + \\frac{dT}{dt} \\times dt$.\n", + "3. Repeat the process, using $T_{\\text{new}}$ as the new $T$ for the next iteration.\n", + "\n", + "### Example Calculation:\n", + "\n", + "Let's manually compute the temperature at time $t$ for an object with the following parameters:\n", + "\n", + "- Initial temperature $T_0 = 90$°C,\n", + "- Ambient temperature $T_{\\text{ambient}} = 20$°C,\n", + "- Cooling constant $k = 0.1$,\n", + "- Time step $dt = 1$ minute,\n", + "- Calculate the temperature after $t = 3$ minutes.\n", + "\n", + "Iterations:\n", + "\n", + "#### Initial Condition:\n", + "\n", + "- $T_0 = 90$°C\n", + "\n", + "#### Iteration 1:\n", + "\n", + "- $\\frac{dT}{dt} = -0.1(90 - 20) = -7$°C/min\n", + "- $T_{\\text{new}} = 90 + (-7) \\times 1 = 83$°C\n", + "\n", + "#### Iteration 2:\n", + "\n", + "- $\\frac{dT}{dt} = -0.1(83 - 20) = -6.3$°C/min (approximately)\n", + "- $T_{\\text{new}} = 83 + (-6.3) \\times 1 = 76.7$°C (approximately)\n", + "\n", + "#### Iteration 3:\n", + "\n", + "- $\\frac{dT}{dt} = -0.1(76.7 - 20) = -5.67$°C/min (approximately)\n", + "- $T_{\\text{new}} = 76.7 + (-5.67) \\times 1 = 71.03$°C (approximately)\n", + "\n", + "After 3 minutes, the temperature of the object is approximately 71.03°C, demonstrating how it cools towards the ambient temperature over time according to Newton's Law of Cooling. This manual method provides a simple way to estimate temperature changes over discrete time intervals.\n" + ] + }, + { + "cell_type": "markdown", + "id": "3e603e26", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "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.10.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/modeci_mdf/execution_engine.py b/src/modeci_mdf/execution_engine.py index 8f5a8703..50558b49 100644 --- a/src/modeci_mdf/execution_engine.py +++ b/src/modeci_mdf/execution_engine.py @@ -1109,11 +1109,11 @@ def evaluate( for inp_name, inp in en.evaluable_inputs.items(): if initializer and inp_name in initializer: inp.set_input_value(initializer[inp_name]) - - print( - "Evaluating graph: %s, root nodes: %s, with array format %s" - % (self.graph.id, self.root_nodes, array_format) - ) + if self.verbose: + print( + "Evaluating graph: %s, root nodes: %s, with array format %s" + % (self.graph.id, self.root_nodes, array_format) + ) str_conds_nb = "\n ".join( [ f"{node.id}: {cond}" diff --git a/test_all.sh b/test_all.sh index 03269d02..cf0792b1 100755 --- a/test_all.sh +++ b/test_all.sh @@ -48,6 +48,9 @@ python -m modeci_mdf.interfaces.graphviz.exporter abc_conditions.yaml 3 -noview mv abc_conditions_example.gv.png images/abc_conditions.png python -m modeci_mdf.interfaces.graphviz.exporter ParametersFunctions.yaml 3 -noview mv params_funcs_example.gv.png images/params_funcs.png +python -m modeci_mdf.interfaces.graphviz.exporter NewtonCoolingModel.yaml 3 -noview +mv cooling_process.gv.png images/newton.png +mv newton_plot.png images/newton_plot.png cd conditions python everyNCalls.py -graph From 575403c817d0f6e708ab0b3a41d5c47b67202f2b Mon Sep 17 00:00:00 2001 From: pgleeson Date: Fri, 14 Jun 2024 14:56:57 +0100 Subject: [PATCH 13/14] Fix typo & regenerate files --- .gitignore | 2 ++ docs/sphinx/source/api/export_format/MDF/MDF.md | 12 +++++++++++- examples/MDF/README.md | 2 +- examples/MDF/newton.py | 15 ++++++++------- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 6cfc7c16..d0a1ba4e 100644 --- a/.gitignore +++ b/.gitignore @@ -311,3 +311,5 @@ examples/TensorFlow/Keras/keras_to_MDF /examples/TensorFlow/Keras/IRIS/keras_model_on_iris.keras /examples/TensorFlow/Keras/MNIST/kr_N_model.keras /checkoutpngs.sh +/docs/sphinx/source/api/export_format/MDF/images/newton.png +/docs/sphinx/source/api/export_format/MDF/images/newton_plot.png diff --git a/docs/sphinx/source/api/export_format/MDF/MDF.md b/docs/sphinx/source/api/export_format/MDF/MDF.md index 27211f24..f63b8518 100644 --- a/docs/sphinx/source/api/export_format/MDF/MDF.md +++ b/docs/sphinx/source/api/export_format/MDF/MDF.md @@ -2,7 +2,7 @@ Examples of [Python](https://python.org), [JSON](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON#:~:text=JavaScript%20Object%20Notation%20(JSON)%20is,page%2C%20or%20vice%20versa) and [YAML](https://circleci.com/blog/what-is-yaml-a-beginner-s-guide/) files to illustrate the structure and usage of MDF. - Simple | ABCD | Arrays | States | Conditions | Parameters and Functions + Simple | ABCD | Arrays | States | Conditions | Parameters and Functions | Newton's Law of Cooling

@@ -73,6 +73,16 @@ A simple 3 [Nodes](https://mdf.readthedocs.io/en/latest/api/Specification.html#n A simple [Node](https://mdf.readthedocs.io/en/latest/api/Specification.html#node) with a number of different types of [Parameters](https://mdf.readthedocs.io/en/latest/api/Specification.html#parameter) (in blue; fixed and **stateful**) and [Functions](https://mdf.readthedocs.io/en/latest/api/Specification.html#function) (in purple; can be built in or ONNX based). +

+ +## Newton's Law of Cooling + +[Python Source](https://github.com/ModECI/MDF/blob/main/examples/MDF/newton.py) | [JSON](https://github.com/ModECI/MDF/blob/main/examples/MDF/NewtonCoolingModel.json) | [YAML](https://github.com/ModECI/MDF/blob/main/examples/MDF/NewtonCoolingModel.yaml) + +A simple [Newtonian cooling process](https://en.wikipedia.org/wiki/Newton%27s_law_of_cooling) model that demonstrates the use of time derivative simulating the cooling of an object to the ambient temperature over time. + + + ## More examples diff --git a/examples/MDF/README.md b/examples/MDF/README.md index 16f4e57f..f63b8518 100644 --- a/examples/MDF/README.md +++ b/examples/MDF/README.md @@ -2,7 +2,7 @@ Examples of [Python](https://python.org), [JSON](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON#:~:text=JavaScript%20Object%20Notation%20(JSON)%20is,page%2C%20or%20vice%20versa) and [YAML](https://circleci.com/blog/what-is-yaml-a-beginner-s-guide/) files to illustrate the structure and usage of MDF. - Simple | ABCD | Arrays | States | Conditions | Parameters and Functions | Newton'a Law of Cooling + Simple | ABCD | Arrays | States | Conditions | Parameters and Functions | Newton's Law of Cooling

diff --git a/examples/MDF/newton.py b/examples/MDF/newton.py index 4787c4a5..62130e4b 100644 --- a/examples/MDF/newton.py +++ b/examples/MDF/newton.py @@ -52,13 +52,14 @@ def main(): s.append(eg.enodes["cool_node"].evaluable_outputs["out_port"].curr_value) t += dt - # Plotting the results - plt.plot(times, s) - plt.xlabel("Time") - plt.ylabel("Temperature") - plt.title("Newton's Cooling Law Simulation") - plt.savefig("newton_plot.png") - plt.show() + if "-nogui" not in sys.argv: + # Plotting the results + plt.plot(times, s) + plt.xlabel("Time") + plt.ylabel("Temperature") + plt.title("Newton's Cooling Law Simulation") + plt.savefig("newton_plot.png") + plt.show() if "-graph" in sys.argv: mod.to_graph_image( From 98ecf2ea0b211301414bd8be8b7c2c9282a80059 Mon Sep 17 00:00:00 2001 From: pgleeson Date: Tue, 18 Jun 2024 14:28:52 +0100 Subject: [PATCH 14/14] Ensure numpy<2.0.0 in tests, due to lingering issues with other modules & numpy v2... --- .github/workflows/ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e602ae01..35ebd692 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -58,11 +58,13 @@ jobs: brew install hdf5 - name: Install core package - run: python -m pip install .[dev] + run: | + pip install 'numpy<2.0.0' # due to lingering issues with other modules & numpy v2... + python -m pip install .[dev] - name: Version info for installed packages run: | - pip list + pip list - name: Test core package run: |