From d1bcea116f47d9c830040834d01eff6681c4e4c4 Mon Sep 17 00:00:00 2001 From: Sceki Date: Fri, 5 Jul 2024 15:15:51 +0200 Subject: [PATCH] batching: fixes & improvements --- doc/notebooks/covariance_propagation.ipynb | 23 +- doc/notebooks/sgp4_partial_derivatives.ipynb | 545 ++++++++++--------- doc/notebooks/tle_propagation.ipynb | 21 +- dsgp4/__init__.py | 3 +- dsgp4/sgp4_batched.py | 95 +--- dsgp4/sgp4init.py | 6 +- dsgp4/sgp4init_batch.py | 268 +++++++++ dsgp4/util.py | 53 +- tests/test_batched_sgp4.py | 8 +- 9 files changed, 613 insertions(+), 409 deletions(-) create mode 100644 dsgp4/sgp4init_batch.py diff --git a/doc/notebooks/covariance_propagation.ipynb b/doc/notebooks/covariance_propagation.ipynb index ca68c39..89814d0 100644 --- a/doc/notebooks/covariance_propagation.ipynb +++ b/doc/notebooks/covariance_propagation.ipynb @@ -28,7 +28,8 @@ "source": [ "import dsgp4\n", "import torch\n", - "import numpy as np" + "import numpy as np\n", + "torch.set_default_dtype(torch.float32)" ] }, { @@ -40,7 +41,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -82,14 +83,14 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "#we initialize the TLEs w gradients:\n", - "tle_elements=dsgp4.initialize_tle(tles,with_grad=True)\n", + "tle_elements,tle_batch=dsgp4.initialize_tle(tles,with_grad=True)\n", "#propagate the orbits:\n", - "state_teme=dsgp4.propagate_batch(tles,tsinces)" + "state_teme=dsgp4.propagate_batch(tle_batch,tsinces)" ] }, { @@ -101,7 +102,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -123,7 +124,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -207,7 +208,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -232,7 +233,7 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -241,13 +242,13 @@ "Text(0, 0.5, 'Frobenius norm of the covariance matrix')" ] }, - "execution_count": 71, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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", + "image/png": "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+PHjvPvuuwQFBbF06VIiIyNp1aqVU9caPnw4w4cPP+/+t956i0mTJnH//fcDjhalZcuW8f777zNjxowqxwYHB9O2bVvWrFnDuHHjarzejBkzeOGFF5yKsa7Y7SqfrHNMKZ/YKwadtvZjwc9MK5dFAoUQF+QeCB5B4BUOHe+BHZ9DUapjez0508XSuXNnevTowUcffURycnKVdWL+7LHHHuOXX35h0KBBvPjii/Tu3RtPT0+2bdvGq6++yqeffkpERASjR4+mf//+3H333dVajbRaLYHnGa/42muv8d///pd58+YRExNTea6Hhwce56woX1FRQUZGRpXp5TNmzOCmm27innvuueBzW61WMjIyqk0vb9++Pf/85z+rHFtaWlotfhcXF3zPWSakoKCg8npHjx5l2rRpxMfH07JlywvGIS7C2aleq1atUl1dXdXBgwerBoNBPX78uKqqjqmCt9xyi7OXq4I/Ta+rqKhQtVqtunDhwirHPfLII2rfvn1VVVXVjIyMyqllhYWFakJCgrp79+7z3qO8vFwtLCysfJ06deqKTS9fcTBDjf73z2rr55aqRWXmWp9nLShQD7RqrR5o3kItP3GiHiMUQjSUOp1ebilXVbvd8We73fG+ns2cOVONjo5WDQaD2rFjR3X16tUXPae8vFydMWOG2qZNG9VoNKp+fn5qr1691Llz56oWi0WdO3euCpz3FR0dfd5rR0dH13jO1KlTK4+ZMGFC5XadTqcGBgaqgwcPVmfPnq3abLYLxj516tTKc7Varern56f27t1bffvtt9Xy8qrf7379+tUYy7BhwyqPOXe7oihqaGioevvtt1d+xl6v6mJ6udOJTvfu3dU333xTVVXHmjpn/hK2bNmihoWFOXu5qsH8KdFJTU1VAXX9+vVVjps+fboaHx+vqqqqbtu2TW3Xrp3atm1btU2bNuqsWbOcuueVXEfnjg83qtH//ll96ef9Tp2Xv3CReqB5C/X4TTfXU2RCiIZW5+voCHENqItEx+muq7179zJv3rxq2wMDA8nNzXX2crVyodH8nTp1qjIQ7Wq1L7WQjSdy0WoU7u3l3AC3ytlW0m0lhBBCOMXpBQN9fHxqXJJ7586dVZbVrguXOpq/NmbOnElCQgJdunS5rOvU1ienyz2MaBNKuI/rRY4+y2b6//buOyyqo+0D8O/ssstSFpAOSrMC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", "text/plain": [ "
" ] diff --git a/doc/notebooks/sgp4_partial_derivatives.ipynb b/doc/notebooks/sgp4_partial_derivatives.ipynb index bf29a25..6c70df3 100644 --- a/doc/notebooks/sgp4_partial_derivatives.ipynb +++ b/doc/notebooks/sgp4_partial_derivatives.ipynb @@ -84,35 +84,35 @@ "name": "stdout", "output_type": "stream", "text": [ - "tensor([[[ 1.4324e+03, -6.9744e+03, 3.9044e+02],\n", - " [ 1.9394e+00, 7.9228e-01, 7.1912e+00]],\n", + "tensor([[[ 1.3801e+03, -6.9928e+03, 1.9835e+02],\n", + " [ 1.9807e+00, 5.8705e-01, 7.1998e+00]],\n", "\n", - " [[ 1.4096e+03, -6.9831e+03, 3.0627e+02],\n", - " [ 1.9577e+00, 7.0238e-01, 7.1957e+00]],\n", + " [[ 1.3596e+03, -6.9984e+03, 1.2413e+02],\n", + " [ 1.9962e+00, 5.0767e-01, 7.2017e+00]],\n", "\n", - " [[ 1.3535e+03, -7.0000e+03, 1.0194e+02],\n", - " [ 2.0008e+00, 4.8392e-01, 7.2021e+00]],\n", + " [[ 1.3946e+03, -6.9883e+03, 2.5111e+02],\n", + " [ 1.9695e+00, 6.4345e-01, 7.1980e+00]],\n", "\n", - " [[ 1.3436e+03, -7.0023e+03, 6.6410e+01],\n", - " [ 2.0081e+00, 4.4589e-01, 7.2025e+00]],\n", + " [[ 1.3492e+03, -7.0010e+03, 8.6688e+01],\n", + " [ 2.0040e+00, 4.6760e-01, 7.2023e+00]],\n", "\n", - " [[ 1.3465e+03, -7.0016e+03, 7.6861e+01],\n", - " [ 2.0060e+00, 4.5708e-01, 7.2024e+00]],\n", + " [[ 1.3540e+03, -6.9998e+03, 1.0394e+02],\n", + " [ 2.0004e+00, 4.8606e-01, 7.2020e+00]],\n", "\n", - " [[ 1.3664e+03, -6.9967e+03, 1.4850e+02],\n", - " [ 1.9911e+00, 5.3373e-01, 7.2012e+00]],\n", + " [[ 1.4152e+03, -6.9811e+03, 3.2657e+02],\n", + " [ 1.9533e+00, 7.2407e-01, 7.1947e+00]],\n", "\n", - " [[ 1.3373e+03, -7.0036e+03, 4.4048e+01],\n", - " [ 2.0127e+00, 4.2196e-01, 7.2027e+00]],\n", + " [[ 1.4245e+03, -6.9776e+03, 3.6089e+02],\n", + " [ 1.9458e+00, 7.6073e-01, 7.1929e+00]],\n", "\n", - " [[ 1.4265e+03, -6.9768e+03, 3.6857e+02],\n", - " [ 1.9441e+00, 7.6892e-01, 7.1924e+00]],\n", + " [[ 1.3690e+03, -6.9960e+03, 1.5791e+02],\n", + " [ 1.9892e+00, 5.4380e-01, 7.2009e+00]],\n", "\n", - " [[ 1.4082e+03, -6.9836e+03, 3.0110e+02],\n", - " [ 1.9588e+00, 6.9686e-01, 7.1959e+00]],\n", + " [[ 1.3816e+03, -6.9924e+03, 2.0371e+02],\n", + " [ 1.9795e+00, 5.9278e-01, 7.1997e+00]],\n", "\n", - " [[ 1.3772e+03, -6.9937e+03, 1.8760e+02],\n", - " [ 1.9829e+00, 5.7555e-01, 7.2002e+00]]],\n", + " [[ 1.3448e+03, -7.0020e+03, 7.0776e+01],\n", + " [ 2.0073e+00, 4.5057e-01, 7.2025e+00]]],\n", " grad_fn=)\n" ] } @@ -154,35 +154,35 @@ "name": "stdout", "output_type": "stream", "text": [ - "tensor([[[ 1.1636e+02, 4.7537e+01, 4.3147e+02],\n", - " [-9.4609e-02, 4.6064e-01, -2.5855e-02]],\n", + "tensor([[[ 1.1884e+02, 3.5223e+01, 4.3199e+02],\n", + " [-9.1163e-02, 4.6190e-01, -1.3136e-02]],\n", "\n", - " [[ 1.1746e+02, 4.2143e+01, 4.3174e+02],\n", - " [-9.3107e-02, 4.6124e-01, -2.0282e-02]],\n", + " [[ 1.1977e+02, 3.0460e+01, 4.3210e+02],\n", + " [-8.9812e-02, 4.6229e-01, -8.2214e-03]],\n", "\n", - " [[ 1.2005e+02, 2.9035e+01, 4.3213e+02],\n", - " [-8.9406e-02, 4.6240e-01, -6.7516e-03]],\n", + " [[ 1.1817e+02, 3.8607e+01, 4.3188e+02],\n", + " [-9.2116e-02, 4.6159e-01, -1.6630e-02]],\n", "\n", - " [[ 1.2049e+02, 2.6754e+01, 4.3215e+02],\n", - " [-8.8754e-02, 4.6256e-01, -4.3986e-03]],\n", + " [[ 1.2024e+02, 2.8056e+01, 4.3214e+02],\n", + " [-8.9127e-02, 4.6247e-01, -5.7415e-03]],\n", "\n", - " [[ 1.2036e+02, 2.7425e+01, 4.3215e+02],\n", - " [-8.8946e-02, 4.6251e-01, -5.0907e-03]],\n", + " [[ 1.2003e+02, 2.9164e+01, 4.3212e+02],\n", + " [-8.9443e-02, 4.6239e-01, -6.8839e-03]],\n", "\n", - " [[ 1.1947e+02, 3.2024e+01, 4.3207e+02],\n", - " [-9.0257e-02, 4.6217e-01, -9.8352e-03]],\n", + " [[ 1.1720e+02, 4.3444e+01, 4.3168e+02],\n", + " [-9.3471e-02, 4.6110e-01, -2.1626e-02]],\n", "\n", - " [[ 1.2077e+02, 2.5318e+01, 4.3216e+02],\n", - " [-8.8343e-02, 4.6265e-01, -2.9176e-03]],\n", + " [[ 1.1675e+02, 4.5644e+01, 4.3157e+02],\n", + " [-9.4083e-02, 4.6086e-01, -2.3898e-02]],\n", "\n", - " [[ 1.1665e+02, 4.6136e+01, 4.3155e+02],\n", - " [-9.4220e-02, 4.6080e-01, -2.4406e-02]],\n", + " [[ 1.1935e+02, 3.2628e+01, 4.3206e+02],\n", + " [-9.0428e-02, 4.6212e-01, -1.0458e-02]],\n", "\n", - " [[ 1.1753e+02, 4.1812e+01, 4.3176e+02],\n", - " [-9.3015e-02, 4.6127e-01, -1.9940e-02]],\n", + " [[ 1.1877e+02, 3.5567e+01, 4.3198e+02],\n", + " [-9.1260e-02, 4.6187e-01, -1.3491e-02]],\n", "\n", - " [[ 1.1898e+02, 3.4533e+01, 4.3201e+02],\n", - " [-9.0968e-02, 4.6196e-01, -1.2424e-02]]])\n" + " [[ 1.2044e+02, 2.7034e+01, 4.3215e+02],\n", + " [-8.8835e-02, 4.6254e-01, -4.6878e-03]]])\n" ] } ], @@ -247,14 +247,15 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ + "#let's initialize the TLEs:\n", + "_,tle_batch=dsgp4.initialize_tle(tles)\n", "#let's propagate the batch:\n", - "state_teme = dsgp4.propagate_batch(tles,\n", - " tsinces=tsinces,\n", - " initialized=False)" + "state_teme = dsgp4.propagate_batch(tle_batch,\n", + " tsinces=tsinces)" ] }, { @@ -266,30 +267,30 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor([[[ 5.4025e+01, -4.2648e+01, 4.4350e+02],\n", - " [-2.0308e-01, -4.2630e-01, -1.2250e-02]],\n", + "tensor([[[ 5.7015e+01, -3.6352e+01, 4.4362e+02],\n", + " [-2.0210e-01, -4.2678e-01, -4.9904e-03]],\n", "\n", - " [[ 2.8727e+01, -6.2794e+01, 4.4374e+02],\n", - " [-4.1113e-01, -2.3223e-01, -5.5870e-03]],\n", + " [[ 1.2403e+01, -7.1946e+01, 4.4313e+02],\n", + " [-4.1210e-01, -2.2931e-01, -2.5077e-02]],\n", "\n", - " [[-1.0698e+02, -3.8831e+01, 4.4205e+02],\n", - " [ 9.7992e-02, -4.8842e-01, -1.9301e-02]],\n", + " [[-1.0693e+02, -3.9097e+01, 4.4204e+02],\n", + " [ 9.8062e-02, -4.8840e-01, -1.9590e-02]],\n", "\n", - " [[-2.8367e+01, -1.0994e+02, 4.4098e+02],\n", - " [ 4.5503e-01, -1.9636e-01, -1.7090e-02]],\n", + " [[-2.3161e+01, -1.1218e+02, 4.4075e+02],\n", + " [ 4.5547e-01, -1.9488e-01, -2.3106e-02]],\n", "\n", - " [[-8.6062e+01, -7.2340e+01, 4.4194e+02],\n", - " [ 3.0114e-01, -3.9458e-01, -3.4948e-03]],\n", + " [[-7.2915e+01, -8.9360e+01, 4.4129e+02],\n", + " [ 3.0545e-01, -3.9066e-01, -2.6374e-02]],\n", "\n", - " [[ 4.5807e+01, -3.7642e+02, -2.2897e+02],\n", - " [ 3.9648e-02, 2.3558e-01, -3.7947e-01]]])\n" + " [[ 4.6004e+01, -3.7524e+02, -2.3086e+02],\n", + " [ 3.9414e-02, 2.3749e-01, -3.7830e-01]]])\n" ] } ], @@ -359,7 +360,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -387,7 +388,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -399,142 +400,142 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor([[[-6.4523e-05, 0.0000e+00, 0.0000e+00, 9.4688e+02, 1.8970e+03,\n", - " -1.3843e+02, 1.9118e+03, -1.3927e+04, 6.9973e+03],\n", - " [-3.2480e-04, 0.0000e+00, 0.0000e+00, 6.4275e+03, 5.1484e+02,\n", - " -2.9536e+01, 5.0358e+02, 7.4557e+04, 1.3641e+03],\n", - " [-4.3288e-04, 0.0000e+00, 0.0000e+00, 7.4336e+03, 6.8559e+03,\n", - " 3.6047e+01, 6.8995e+03, 5.9987e+02, 0.0000e+00],\n", - " [-6.4902e-07, 0.0000e+00, 0.0000e+00, 8.7493e-01, -1.4304e+00,\n", - " -7.0725e+00, -1.4391e+00, 1.0128e+01, -5.2510e-01],\n", - " [-3.8817e-07, 0.0000e+00, 0.0000e+00, 4.5053e+00, 7.3591e+00,\n", - " -1.3399e+00, 7.3813e+00, 5.1095e+00, 1.9928e+00],\n", - " [-2.4810e-06, 0.0000e+00, 0.0000e+00, 5.9443e+00, -1.3321e-01,\n", - " 2.0514e+00, -1.4851e-01, 3.8287e+01, 0.0000e+00]],\n", - "\n", - " [[-1.5784e-04, 0.0000e+00, 0.0000e+00, 9.6539e+02, 1.8644e+03,\n", - " -2.9674e+02, 1.8790e+03, -1.3708e+04, 6.9836e+03],\n", - " [-7.1066e-04, 0.0000e+00, 0.0000e+00, 6.5314e+03, 6.7948e+02,\n", - " -5.9530e+01, 6.6870e+02, 7.4713e+04, 1.4084e+03],\n", - " [-1.0042e-03, 0.0000e+00, 0.0000e+00, 7.5646e+03, 6.8510e+03,\n", - " 8.1968e+01, 6.8942e+03, 1.4552e+03, 0.0000e+00],\n", - " [-1.3692e-06, 0.0000e+00, 0.0000e+00, 7.6603e-01, -1.4769e+00,\n", - " -7.0671e+00, -1.4857e+00, 9.3776e+00, -6.9742e-01],\n", - " [-9.2182e-07, 0.0000e+00, 0.0000e+00, 4.7759e+00, 7.3449e+00,\n", - " -1.3390e+00, 7.3662e+00, 8.7716e+00, 1.9587e+00],\n", - " [-5.3008e-06, 0.0000e+00, 0.0000e+00, 5.7453e+00, -3.0261e-01,\n", - " 2.0499e+00, -3.1894e-01, 3.8087e+01, 0.0000e+00]],\n", - "\n", - " [[-1.5725e-04, 0.0000e+00, 0.0000e+00, 9.6529e+02, 1.8646e+03,\n", - " -2.9582e+02, 1.8792e+03, -1.3710e+04, 6.9837e+03],\n", - " [-7.0839e-04, 0.0000e+00, 0.0000e+00, 6.5308e+03, 6.7853e+02,\n", - " -5.9358e+01, 6.6774e+02, 7.4712e+04, 1.4081e+03],\n", - " [-1.0007e-03, 0.0000e+00, 0.0000e+00, 7.5639e+03, 6.8511e+03,\n", - " 8.1704e+01, 6.8943e+03, 1.4503e+03, 0.0000e+00],\n", - " [-1.3651e-06, 0.0000e+00, 0.0000e+00, 7.6666e-01, -1.4766e+00,\n", - " -7.0671e+00, -1.4854e+00, 9.3821e+00, -6.9643e-01],\n", - " [-9.1848e-07, 0.0000e+00, 0.0000e+00, 4.7743e+00, 7.3450e+00,\n", - " -1.3391e+00, 7.3663e+00, 8.7505e+00, 1.9589e+00],\n", - " [-5.2847e-06, 0.0000e+00, 0.0000e+00, 5.7465e+00, -3.0163e-01,\n", - " 2.0499e+00, -3.1796e-01, 3.8089e+01, 0.0000e+00]],\n", - "\n", - " [[-1.0884e-04, 0.0000e+00, 0.0000e+00, 9.5647e+02, 1.8808e+03,\n", - " -2.1790e+02, 1.8955e+03, -1.3815e+04, 6.9909e+03],\n", - " [-5.1662e-04, 0.0000e+00, 0.0000e+00, 6.4789e+03, 5.9751e+02,\n", - " -4.4593e+01, 5.8649e+02, 7.4625e+04, 1.3864e+03],\n", - " [-7.0979e-04, 0.0000e+00, 0.0000e+00, 7.4999e+03, 6.8539e+03,\n", - " 5.9099e+01, 6.8973e+03, 1.0297e+03, 0.0000e+00],\n", - " [-1.0139e-06, 0.0000e+00, 0.0000e+00, 8.2050e-01, -1.4538e+00,\n", - " -7.0703e+00, -1.4625e+00, 9.7565e+00, -6.1163e-01],\n", - " [-6.4445e-07, 0.0000e+00, 0.0000e+00, 4.6424e+00, 7.3525e+00,\n", - " -1.3396e+00, 7.3743e+00, 6.9494e+00, 1.9758e+00],\n", - " [-3.9006e-06, 0.0000e+00, 0.0000e+00, 5.8460e+00, -2.1825e-01,\n", - " 2.0508e+00, -2.3407e-01, 3.8205e+01, 0.0000e+00]],\n", - "\n", - " [[-1.1683e-04, 0.0000e+00, 0.0000e+00, 9.5804e+02, 1.8780e+03,\n", - " -2.3133e+02, 1.8927e+03, -1.3797e+04, 6.9897e+03],\n", - " [-5.4941e-04, 0.0000e+00, 0.0000e+00, 6.4877e+03, 6.1148e+02,\n", - " -4.7138e+01, 6.0050e+02, 7.4639e+04, 1.3902e+03],\n", - " [-7.5857e-04, 0.0000e+00, 0.0000e+00, 7.5111e+03, 6.8535e+03,\n", - " 6.2996e+01, 6.8969e+03, 1.1023e+03, 0.0000e+00],\n", - " [-1.0750e-06, 0.0000e+00, 0.0000e+00, 8.1125e-01, -1.4578e+00,\n", - " -7.0698e+00, -1.4665e+00, 9.6926e+00, -6.2626e-01],\n", - " [-6.9009e-07, 0.0000e+00, 0.0000e+00, 4.6653e+00, 7.3513e+00,\n", - " -1.3395e+00, 7.3730e+00, 7.2601e+00, 1.9729e+00],\n", - " [-4.1398e-06, 0.0000e+00, 0.0000e+00, 5.8291e+00, -2.3262e-01,\n", - " 2.0507e+00, -2.4853e-01, 3.8188e+01, 0.0000e+00]],\n", - "\n", - " [[-1.0549e-04, 0.0000e+00, 0.0000e+00, 9.5581e+02, 1.8819e+03,\n", - " -2.1219e+02, 1.8967e+03, -1.3823e+04, 6.9914e+03],\n", - " [-5.0273e-04, 0.0000e+00, 0.0000e+00, 6.4751e+03, 5.9158e+02,\n", - " -4.3512e+01, 5.8054e+02, 7.4620e+04, 1.3848e+03],\n", - " [-6.8925e-04, 0.0000e+00, 0.0000e+00, 7.4952e+03, 6.8541e+03,\n", - " 5.7444e+01, 6.8975e+03, 9.9891e+02, 0.0000e+00],\n", - " [-9.8798e-07, 0.0000e+00, 0.0000e+00, 8.2442e-01, -1.4522e+00,\n", - " -7.0705e+00, -1.4609e+00, 9.7835e+00, -6.0543e-01],\n", - " [-6.2527e-07, 0.0000e+00, 0.0000e+00, 4.6326e+00, 7.3530e+00,\n", - " -1.3396e+00, 7.3748e+00, 6.8174e+00, 1.9770e+00],\n", - " [-3.7990e-06, 0.0000e+00, 0.0000e+00, 5.8532e+00, -2.1214e-01,\n", - " 2.0509e+00, -2.2793e-01, 3.8212e+01, 0.0000e+00]],\n", - "\n", - " [[-5.8663e-05, 0.0000e+00, 0.0000e+00, 9.4547e+02, 1.8993e+03,\n", - " -1.2717e+02, 1.9141e+03, -1.3943e+04, 6.9981e+03],\n", - " [-2.9791e-04, 0.0000e+00, 0.0000e+00, 6.4203e+03, 5.0313e+02,\n", - " -2.7403e+01, 4.9183e+02, 7.4549e+04, 1.3610e+03],\n", - " [-3.9527e-04, 0.0000e+00, 0.0000e+00, 7.4242e+03, 6.8561e+03,\n", - " 3.2781e+01, 6.8997e+03, 5.3892e+02, 0.0000e+00],\n", - " [-5.9678e-07, 0.0000e+00, 0.0000e+00, 8.8260e-01, -1.4271e+00,\n", - " -7.0727e+00, -1.4357e+00, 1.0180e+01, -5.1283e-01],\n", - " [-3.5377e-07, 0.0000e+00, 0.0000e+00, 4.4857e+00, 7.3600e+00,\n", - " -1.3399e+00, 7.3822e+00, 4.8486e+00, 1.9952e+00],\n", - " [-2.2793e-06, 0.0000e+00, 0.0000e+00, 5.9579e+00, -1.2116e-01,\n", - " 2.0514e+00, -1.3638e-01, 3.8296e+01, 0.0000e+00]],\n", - "\n", - " [[-9.0232e-05, 0.0000e+00, 0.0000e+00, 9.5266e+02, 1.8874e+03,\n", - " -1.8564e+02, 1.9021e+03, -1.3860e+04, 6.9936e+03],\n", - " [-4.3833e-04, 0.0000e+00, 0.0000e+00, 6.4578e+03, 5.6397e+02,\n", - " -3.8482e+01, 5.5285e+02, 7.4595e+04, 1.3774e+03],\n", - " [-5.9500e-04, 0.0000e+00, 0.0000e+00, 7.4732e+03, 6.8548e+03,\n", - " 4.9743e+01, 6.8983e+03, 8.5537e+02, 0.0000e+00],\n", - " [-8.6666e-07, 0.0000e+00, 0.0000e+00, 8.4265e-01, -1.4444e+00,\n", - " -7.0713e+00, -1.4530e+00, 9.9085e+00, -5.7652e-01],\n", - " [-5.3760e-07, 0.0000e+00, 0.0000e+00, 4.5871e+00, 7.3553e+00,\n", - " -1.3397e+00, 7.3772e+00, 6.2030e+00, 1.9828e+00],\n", - " [-3.3255e-06, 0.0000e+00, 0.0000e+00, 5.8863e+00, -1.8373e-01,\n", - " 2.0511e+00, -1.9934e-01, 3.8243e+01, 0.0000e+00]],\n", - "\n", - " [[-1.6118e-05, 0.0000e+00, 0.0000e+00, 9.3394e+02, 1.9170e+03,\n", - " -3.8365e+01, 1.9319e+03, -1.4073e+04, 7.0039e+03],\n", - " [-8.8157e-05, 0.0000e+00, 0.0000e+00, 6.3650e+03, 4.1069e+02,\n", - " -1.0579e+01, 3.9911e+02, 7.4502e+04, 1.3358e+03],\n", - " [-1.1272e-04, 0.0000e+00, 0.0000e+00, 7.3486e+03, 6.8570e+03,\n", - " 7.0229e+00, 6.9008e+03, 5.7830e+01, 0.0000e+00],\n", - " [-1.8001e-07, 0.0000e+00, 0.0000e+00, 9.4275e-01, -1.4007e+00,\n", - " -7.0739e+00, -1.4092e+00, 1.0581e+01, -4.1607e-01],\n", - " [-9.9270e-08, 0.0000e+00, 0.0000e+00, 4.3292e+00, 7.3660e+00,\n", - " -1.3401e+00, 7.3887e+00, 2.7891e+00, 2.0139e+00],\n", - " [-6.8267e-07, 0.0000e+00, 0.0000e+00, 6.0633e+00, -2.6142e-02,\n", - " 2.0517e+00, -4.0765e-02, 3.8337e+01, 0.0000e+00]],\n", - "\n", - " [[-7.2283e-06, 0.0000e+00, 0.0000e+00, 9.3117e+02, 1.9211e+03,\n", - " -1.7857e+01, 1.9360e+03, -1.4104e+04, 7.0051e+03],\n", - " [-4.0268e-05, 0.0000e+00, 0.0000e+00, 6.3525e+03, 3.8933e+02,\n", - " -6.6944e+00, 3.7768e+02, 7.4494e+04, 1.3299e+03],\n", - " [-5.1027e-05, 0.0000e+00, 0.0000e+00, 7.3310e+03, 6.8571e+03,\n", - " 1.0745e+00, 6.9009e+03, -5.3319e+01, 0.0000e+00],\n", - " [-8.2577e-08, 0.0000e+00, 0.0000e+00, 9.5655e-01, -1.3945e+00,\n", - " -7.0740e+00, -1.4030e+00, 1.0672e+01, -3.9371e-01],\n", - " [-4.4758e-08, 0.0000e+00, 0.0000e+00, 4.2926e+00, 7.3672e+00,\n", - " -1.3401e+00, 7.3900e+00, 2.3131e+00, 2.0181e+00],\n", - " [-3.1266e-07, 0.0000e+00, 0.0000e+00, 6.0870e+00, -4.1983e-03,\n", - " 2.0517e+00, -1.8682e-02, 3.8340e+01, 0.0000e+00]]])\n" + "tensor([[[-6.3133e-05, 0.0000e+00, 0.0000e+00, 9.4655e+02, 1.8975e+03,\n", + " -1.3577e+02, 1.9123e+03, -1.3931e+04, 6.9975e+03],\n", + " [-3.1846e-04, 0.0000e+00, 0.0000e+00, 6.4258e+03, 5.1208e+02,\n", + " -2.9033e+01, 5.0081e+02, 7.4555e+04, 1.3634e+03],\n", + " [-4.2398e-04, 0.0000e+00, 0.0000e+00, 7.4314e+03, 6.8559e+03,\n", + " 3.5277e+01, 6.8995e+03, 5.8550e+02, 0.0000e+00],\n", + " [-6.3672e-07, 0.0000e+00, 0.0000e+00, 8.7674e-01, -1.4296e+00,\n", + " -7.0726e+00, -1.4383e+00, 1.0140e+01, -5.2221e-01],\n", + " [-3.8001e-07, 0.0000e+00, 0.0000e+00, 4.5007e+00, 7.3593e+00,\n", + " -1.3399e+00, 7.3815e+00, 5.0480e+00, 1.9934e+00],\n", + " [-2.4335e-06, 0.0000e+00, 0.0000e+00, 5.9475e+00, -1.3037e-01,\n", + " 2.0514e+00, -1.4565e-01, 3.8289e+01, 0.0000e+00]],\n", + "\n", + " [[-1.2694e-04, 0.0000e+00, 0.0000e+00, 9.5994e+02, 1.8746e+03,\n", + " -2.4796e+02, 1.8892e+03, -1.3774e+04, 6.9882e+03],\n", + " [-5.9015e-04, 0.0000e+00, 0.0000e+00, 6.4987e+03, 6.2877e+02,\n", + " -5.0289e+01, 6.1785e+02, 7.4656e+04, 1.3948e+03],\n", + " [-8.1975e-04, 0.0000e+00, 0.0000e+00, 7.5247e+03, 6.8529e+03,\n", + " 6.7820e+01, 6.8962e+03, 1.1921e+03, 0.0000e+00],\n", + " [-1.1502e-06, 0.0000e+00, 0.0000e+00, 7.9978e-01, -1.4626e+00,\n", + " -7.0692e+00, -1.4714e+00, 9.6132e+00, -6.4435e-01],\n", + " [-7.4752e-07, 0.0000e+00, 0.0000e+00, 4.6936e+00, 7.3497e+00,\n", + " -1.3394e+00, 7.3713e+00, 7.6446e+00, 1.9693e+00],\n", + " [-4.4356e-06, 0.0000e+00, 0.0000e+00, 5.8080e+00, -2.5042e-01,\n", + " 2.0505e+00, -2.6643e-01, 3.8165e+01, 0.0000e+00]],\n", + "\n", + " [[-2.0085e-05, 0.0000e+00, 0.0000e+00, 9.3513e+02, 1.9152e+03,\n", + " -4.7261e+01, 1.9302e+03, -1.4060e+04, 7.0034e+03],\n", + " [-1.0899e-04, 0.0000e+00, 0.0000e+00, 6.3704e+03, 4.1995e+02,\n", + " -1.2265e+01, 4.0840e+02, 7.4505e+04, 1.3383e+03],\n", + " [-1.3989e-04, 0.0000e+00, 0.0000e+00, 7.3562e+03, 6.8570e+03,\n", + " 9.6033e+00, 6.9007e+03, 1.0604e+02, 0.0000e+00],\n", + " [-2.2213e-07, 0.0000e+00, 0.0000e+00, 9.3676e-01, -1.4033e+00,\n", + " -7.0738e+00, -1.4119e+00, 1.0542e+01, -4.2576e-01],\n", + " [-1.2342e-07, 0.0000e+00, 0.0000e+00, 4.3450e+00, 7.3655e+00,\n", + " -1.3401e+00, 7.3881e+00, 2.9956e+00, 2.0120e+00],\n", + " [-8.4303e-07, 0.0000e+00, 0.0000e+00, 6.0529e+00, -3.5661e-02,\n", + " 2.0517e+00, -5.0344e-02, 3.8335e+01, 0.0000e+00]],\n", + "\n", + " [[-1.7044e-04, 0.0000e+00, 0.0000e+00, 9.6745e+02, 1.8604e+03,\n", + " -3.1581e+02, 1.8750e+03, -1.3683e+04, 6.9817e+03],\n", + " [-7.5819e-04, 0.0000e+00, 0.0000e+00, 6.5444e+03, 6.9929e+02,\n", + " -6.3144e+01, 6.8857e+02, 7.4737e+04, 1.4137e+03],\n", + " [-1.0784e-03, 0.0000e+00, 0.0000e+00, 7.5801e+03, 6.8502e+03,\n", + " 8.7500e+01, 6.8933e+03, 1.5580e+03, 0.0000e+00],\n", + " [-1.4541e-06, 0.0000e+00, 0.0000e+00, 7.5279e-01, -1.4824e+00,\n", + " -7.0662e+00, -1.4912e+00, 9.2845e+00, -7.1817e-01],\n", + " [-9.9233e-07, 0.0000e+00, 0.0000e+00, 4.8078e+00, 7.3429e+00,\n", + " -1.3389e+00, 7.3641e+00, 9.2118e+00, 1.9545e+00],\n", + " [-5.6382e-06, 0.0000e+00, 0.0000e+00, 5.7204e+00, -3.2301e-01,\n", + " 2.0497e+00, -3.3947e-01, 3.8053e+01, 0.0000e+00]],\n", + "\n", + " [[-5.0739e-05, 0.0000e+00, 0.0000e+00, 9.4351e+02, 1.9024e+03,\n", + " -1.1161e+02, 1.9172e+03, -1.3965e+04, 6.9992e+03],\n", + " [-2.6088e-04, 0.0000e+00, 0.0000e+00, 6.4105e+03, 4.8694e+02,\n", + " -2.4456e+01, 4.7559e+02, 7.4539e+04, 1.3566e+03],\n", + " [-3.4397e-04, 0.0000e+00, 0.0000e+00, 7.4110e+03, 6.8563e+03,\n", + " 2.8269e+01, 6.9000e+03, 4.5469e+02, 0.0000e+00],\n", + " [-5.2438e-07, 0.0000e+00, 0.0000e+00, 8.9318e-01, -1.4225e+00,\n", + " -7.0730e+00, -1.4311e+00, 1.0251e+01, -4.9589e-01],\n", + " [-3.0704e-07, 0.0000e+00, 0.0000e+00, 4.4585e+00, 7.3611e+00,\n", + " -1.3400e+00, 7.3834e+00, 4.4881e+00, 1.9985e+00],\n", + " [-2.0003e-06, 0.0000e+00, 0.0000e+00, 5.9767e+00, -1.0452e-01,\n", + " 2.0515e+00, -1.1964e-01, 3.8306e+01, 0.0000e+00]],\n", + "\n", + " [[-2.4430e-04, 0.0000e+00, 0.0000e+00, 9.7810e+02, 1.8384e+03,\n", + " -4.1995e+02, 1.8528e+03, -1.3550e+04, 6.9702e+03],\n", + " [-1.0222e-03, 0.0000e+00, 0.0000e+00, 6.6166e+03, 8.0747e+02,\n", + " -8.2878e+01, 7.9706e+02, 7.4891e+04, 1.4423e+03],\n", + " [-1.5035e-03, 0.0000e+00, 0.0000e+00, 7.6635e+03, 6.8446e+03,\n", + " 1.1771e+02, 6.8875e+03, 2.1174e+03, 0.0000e+00],\n", + " [-1.9108e-06, 0.0000e+00, 0.0000e+00, 6.8001e-01, -1.5125e+00,\n", + " -7.0602e+00, -1.5214e+00, 8.7656e+00, -8.3139e-01],\n", + " [-1.4007e-06, 0.0000e+00, 0.0000e+00, 4.9793e+00, 7.3309e+00,\n", + " -1.3379e+00, 7.3516e+00, 1.1612e+01, 1.9313e+00],\n", + " [-7.4715e-06, 0.0000e+00, 0.0000e+00, 5.5814e+00, -4.3445e-01,\n", + " 2.0480e+00, -4.5157e-01, 3.7828e+01, 0.0000e+00]],\n", + "\n", + " [[-1.0495e-04, 0.0000e+00, 0.0000e+00, 9.5570e+02, 1.8821e+03,\n", + " -2.1129e+02, 1.8969e+03, -1.3824e+04, 6.9914e+03],\n", + " [-5.0052e-04, 0.0000e+00, 0.0000e+00, 6.4746e+03, 5.9064e+02,\n", + " -4.3340e+01, 5.7960e+02, 7.4619e+04, 1.3846e+03],\n", + " [-6.8599e-04, 0.0000e+00, 0.0000e+00, 7.4945e+03, 6.8541e+03,\n", + " 5.7181e+01, 6.8975e+03, 9.9401e+02, 0.0000e+00],\n", + " [-9.8384e-07, 0.0000e+00, 0.0000e+00, 8.2504e-01, -1.4519e+00,\n", + " -7.0705e+00, -1.4606e+00, 9.7878e+00, -6.0444e-01],\n", + " [-6.2223e-07, 0.0000e+00, 0.0000e+00, 4.6311e+00, 7.3531e+00,\n", + " -1.3396e+00, 7.3749e+00, 6.7965e+00, 1.9772e+00],\n", + " [-3.7829e-06, 0.0000e+00, 0.0000e+00, 5.8543e+00, -2.1117e-01,\n", + " 2.0509e+00, -2.2695e-01, 3.8213e+01, 0.0000e+00]],\n", + "\n", + " [[-1.3075e-04, 0.0000e+00, 0.0000e+00, 9.6065e+02, 1.8733e+03,\n", + " -2.5414e+02, 1.8880e+03, -1.3765e+04, 6.9876e+03],\n", + " [-6.0534e-04, 0.0000e+00, 0.0000e+00, 6.5029e+03, 6.3520e+02,\n", + " -5.1460e+01, 6.2429e+02, 7.4663e+04, 1.3965e+03],\n", + " [-8.4270e-04, 0.0000e+00, 0.0000e+00, 7.5298e+03, 6.8527e+03,\n", + " 6.9612e+01, 6.8960e+03, 1.2255e+03, 0.0000e+00],\n", + " [-1.1781e-06, 0.0000e+00, 0.0000e+00, 7.9551e-01, -1.4644e+00,\n", + " -7.0689e+00, -1.4732e+00, 9.5836e+00, -6.5108e-01],\n", + " [-7.6912e-07, 0.0000e+00, 0.0000e+00, 4.7041e+00, 7.3491e+00,\n", + " -1.3394e+00, 7.3707e+00, 7.7875e+00, 1.9680e+00],\n", + " [-4.5454e-06, 0.0000e+00, 0.0000e+00, 5.8001e+00, -2.5703e-01,\n", + " 2.0504e+00, -2.7309e-01, 3.8155e+01, 0.0000e+00]],\n", + "\n", + " [[-1.4665e-04, 0.0000e+00, 0.0000e+00, 9.6348e+02, 1.8680e+03,\n", + " -2.7943e+02, 1.8827e+03, -1.3731e+04, 6.9853e+03],\n", + " [-6.6771e-04, 0.0000e+00, 0.0000e+00, 6.5198e+03, 6.6148e+02,\n", + " -5.6250e+01, 6.5065e+02, 7.4692e+04, 1.4036e+03],\n", + " [-9.3788e-04, 0.0000e+00, 0.0000e+00, 7.5505e+03, 6.8517e+03,\n", + " 7.6947e+01, 6.8950e+03, 1.3619e+03, 0.0000e+00],\n", + " [-1.2918e-06, 0.0000e+00, 0.0000e+00, 7.7803e-01, -1.4718e+00,\n", + " -7.0679e+00, -1.4806e+00, 9.4617e+00, -6.7859e-01],\n", + " [-8.5896e-07, 0.0000e+00, 0.0000e+00, 4.7468e+00, 7.3466e+00,\n", + " -1.3392e+00, 7.3681e+00, 8.3717e+00, 1.9624e+00],\n", + " [-4.9941e-06, 0.0000e+00, 0.0000e+00, 5.7677e+00, -2.8408e-01,\n", + " 2.0502e+00, -3.0031e-01, 3.8116e+01, 0.0000e+00]],\n", + "\n", + " [[-9.8138e-05, 0.0000e+00, 0.0000e+00, 9.5431e+02, 1.8845e+03,\n", + " -1.9953e+02, 1.8993e+03, -1.3840e+04, 6.9924e+03],\n", + " [-4.7196e-04, 0.0000e+00, 0.0000e+00, 6.4669e+03, 5.7841e+02,\n", + " -4.1113e+01, 5.6733e+02, 7.4608e+04, 1.3813e+03],\n", + " [-6.4401e-04, 0.0000e+00, 0.0000e+00, 7.4847e+03, 6.8545e+03,\n", + " 5.3771e+01, 6.8979e+03, 9.3046e+02, 0.0000e+00],\n", + " [-9.3020e-07, 0.0000e+00, 0.0000e+00, 8.3312e-01, -1.4484e+00,\n", + " -7.0709e+00, -1.4571e+00, 9.8433e+00, -5.9164e-01],\n", + " [-5.8312e-07, 0.0000e+00, 0.0000e+00, 4.6109e+00, 7.3541e+00,\n", + " -1.3397e+00, 7.3760e+00, 6.5244e+00, 1.9798e+00],\n", + " [-3.5733e-06, 0.0000e+00, 0.0000e+00, 5.8690e+00, -1.9859e-01,\n", + " 2.0510e+00, -2.1429e-01, 3.8227e+01, 0.0000e+00]]])\n" ] } ], @@ -561,7 +562,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -599,22 +600,22 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "#let's now initialize the TLEs, activating the gradient tracking for the TLE parameters:\n", - "tle_elements=dsgp4.initialize_tle(tles,with_grad=True)" + "tle_elements,tle_batch=dsgp4.initialize_tle(tles,with_grad=True)\n" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "#let's now propagate the batch of TLEs:\n", - "state_teme = dsgp4.propagate_batch(tles,tsinces)" + "state_teme = dsgp4.propagate_batch(tle_batch,tsinces)" ] }, { @@ -626,90 +627,90 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor([[[-4.7024e-04, 0.0000e+00, 0.0000e+00, -1.2286e+03, 7.9988e+02,\n", - " 3.3369e+02, 7.7575e+02, -3.1876e+04, -6.4058e+03],\n", - " [-2.2363e-03, 0.0000e+00, 0.0000e+00, 2.3340e+03, -7.9925e+02,\n", - " -1.5947e+02, -8.4529e+02, -6.8224e+04, 3.0828e+03],\n", - " [ 3.4920e-03, 0.0000e+00, 0.0000e+00, -1.3916e+04, 7.0305e+03,\n", - " -5.3544e+01, 7.0161e+03, 1.7906e+03, 0.0000e+00],\n", - " [-1.5772e-06, 0.0000e+00, 0.0000e+00, 3.1322e+00, -3.2498e+00,\n", - " 6.6740e+00, -3.2411e+00, 1.6212e+00, 8.8900e-01],\n", - " [-1.3577e-06, 0.0000e+00, 0.0000e+00, 6.7933e+00, -6.7337e+00,\n", - " -3.1490e+00, -6.7346e+00, -1.0225e+01, 8.1509e-01],\n", - " [-5.5853e-06, 0.0000e+00, 0.0000e+00, -4.2693e-01, -4.4474e-01,\n", - " -1.1140e+00, -3.8970e-01, 3.8645e+01, 0.0000e+00]],\n", - "\n", - " [[-3.0412e-04, 0.0000e+00, 0.0000e+00, -4.9268e+03, 2.9541e+02,\n", - " 1.3106e+02, 2.9342e+02, -6.5451e+04, -3.4748e+03],\n", - " [-3.2372e-04, 0.0000e+00, 0.0000e+00, -1.0373e+03, -1.0876e+03,\n", - " -2.3494e+02, -1.0897e+03, -3.7353e+04, 6.2099e+03],\n", - " [ 8.4753e-04, 0.0000e+00, 0.0000e+00, -9.8484e+03, 7.0334e+03,\n", - " -3.9317e+01, 7.0386e+03, 1.2649e+03, 0.0000e+00],\n", - " [-7.1538e-07, 0.0000e+00, 0.0000e+00, 4.7109e+00, -6.5345e+00,\n", - " 3.6434e+00, -6.5369e+00, -2.2708e+00, 1.1429e+00],\n", - " [ 4.1246e-07, 0.0000e+00, 0.0000e+00, 1.6792e+00, -3.6559e+00,\n", - " -6.4254e+00, -3.6577e+00, -8.2071e+00, 3.0736e-01],\n", - " [-4.5782e-06, 0.0000e+00, 0.0000e+00, 5.5729e+00, -2.8624e-01,\n", - " -1.1432e+00, -2.8371e-01, 3.8921e+01, 0.0000e+00]],\n", - "\n", - " [[-1.2351e-03, 0.0000e+00, 0.0000e+00, 6.6825e+02, -1.6048e+03,\n", - " 3.6140e+02, -1.6254e+03, 1.2872e+04, -6.7810e+03],\n", - " [ 6.9955e-03, 0.0000e+00, 0.0000e+00, -6.9611e+03, -6.9967e+02,\n", - " 7.2004e+01, -6.9911e+02, -6.9945e+04, -1.3865e+03],\n", - " [-3.7224e-04, 0.0000e+00, 0.0000e+00, 2.5368e+03, 6.7086e+03,\n", - " 8.9678e+01, 6.7877e+03, 1.7343e+03, 0.0000e+00],\n", - " [ 6.6018e-06, 0.0000e+00, 0.0000e+00, -1.3890e+00, 1.5214e+00,\n", - " 7.2283e+00, 1.5326e+00, -7.7337e+00, 7.5778e-01],\n", - " [ 2.4385e-06, 0.0000e+00, 0.0000e+00, -2.3602e+00, -7.4521e+00,\n", - " 1.3789e+00, -7.4949e+00, -1.0031e+01, -1.7605e+00],\n", - " [-2.7257e-05, 0.0000e+00, 0.0000e+00, 7.1054e+00, -3.9580e-01,\n", - " 1.8672e+00, -4.0754e-01, 3.7375e+01, 0.0000e+00]],\n", - "\n", - " [[-9.5164e-04, 0.0000e+00, 0.0000e+00, 5.0543e+03, -6.0123e+02,\n", - " 3.3871e+01, -5.7884e+02, 6.5070e+04, -2.7883e+03],\n", - " [-1.7954e-04, 0.0000e+00, 0.0000e+00, 6.4431e+02, -1.6079e+03,\n", - " 8.4173e+01, -1.6311e+03, -2.8843e+04, -6.3658e+03],\n", - " [ 2.1579e-03, 0.0000e+00, 0.0000e+00, -1.0348e+04, 6.7366e+03,\n", - " 1.9183e+01, 6.7845e+03, 3.1610e+02, 0.0000e+00],\n", - " [ 1.6366e-06, 0.0000e+00, 0.0000e+00, -5.7327e+00, 6.9606e+00,\n", - " 2.9691e+00, 6.9829e+00, -1.8529e+00, 1.7656e+00],\n", - " [ 8.3539e-07, 0.0000e+00, 0.0000e+00, 1.1849e+00, -3.0402e+00,\n", - " 6.7237e+00, -3.0585e+00, -9.6153e+00, -6.2636e-01],\n", - " [-5.5992e-06, 0.0000e+00, 0.0000e+00, 4.8556e+00, -1.2909e-01,\n", - " 1.8639e+00, -9.8784e-02, 3.7671e+01, 0.0000e+00]],\n", - "\n", - " [[-3.3420e-04, 0.0000e+00, 0.0000e+00, 5.0205e+03, -1.3441e+03,\n", - " 1.8241e+01, -1.3443e+03, 4.3170e+04, -5.5254e+03],\n", - " [ 2.4464e-04, 0.0000e+00, 0.0000e+00, -3.5608e+03, -1.0626e+03,\n", - " 1.7656e+01, -1.0966e+03, -5.6766e+04, -4.2092e+03],\n", - " [ 4.6359e-04, 0.0000e+00, 0.0000e+00, -7.2364e+03, 6.7330e+03,\n", - " 2.5734e+00, 6.8146e+03, -1.9453e+01, 0.0000e+00],\n", - " [ 4.7430e-07, 0.0000e+00, 0.0000e+00, -3.7069e+00, 4.6159e+00,\n", - " 5.8591e+00, 4.6384e+00, -7.2311e+00, 1.1838e+00],\n", - " [ 4.3889e-08, 0.0000e+00, 0.0000e+00, 2.2495e+00, -6.0476e+00,\n", - " 4.4577e+00, -6.0889e+00, -6.3383e+00, -1.4510e+00],\n", - " [-1.5873e-06, 0.0000e+00, 0.0000e+00, 6.2547e+00, -5.4538e-02,\n", - " 1.8673e+00, -2.6858e-02, 3.7855e+01, 0.0000e+00]],\n", - "\n", - " [[-4.3813e-06, 0.0000e+00, 0.0000e+00, -6.0989e+02, 7.6713e+02,\n", - " 6.1071e+03, 7.6423e+02, 7.1735e+03, 3.9427e+03],\n", - " [ 1.7087e-05, 0.0000e+00, 0.0000e+00, -4.1257e+03, -6.1475e+03,\n", - " 2.5651e+02, -6.1245e+03, 4.1319e+04, -6.3391e+02],\n", - " [ 2.5883e-05, 0.0000e+00, 0.0000e+00, 5.9840e+03, -3.8802e+03,\n", - " 7.9953e+02, -3.8654e+03, -6.8153e+04, 0.0000e+00],\n", - " [-1.0574e-07, 0.0000e+00, 0.0000e+00, -7.6491e-01, 6.4143e-01,\n", - " -3.9130e+00, 6.4020e-01, 4.4189e+00, 6.2088e+00],\n", - " [ 8.4333e-07, 0.0000e+00, 0.0000e+00, 6.2731e+00, 3.9830e+00,\n", - " -1.6350e-01, 3.9757e+00, -3.2812e+01, 7.7412e-01],\n", - " [ 5.3544e-07, 0.0000e+00, 0.0000e+00, 3.8275e+00, -6.1867e+00,\n", - " -5.1040e-01, -6.1750e+00, -2.3275e+01, 0.0000e+00]]])\n" + "tensor([[[-4.5677e-04, 0.0000e+00, 0.0000e+00, -1.2328e+03, 8.0426e+02,\n", + " 3.2469e+02, 7.8012e+02, -3.1878e+04, -6.4070e+03],\n", + " [-2.1749e-03, 0.0000e+00, 0.0000e+00, 2.3248e+03, -7.9018e+02,\n", + " -1.5523e+02, -8.3622e+02, -6.8210e+04, 3.0817e+03],\n", + " [ 3.3992e-03, 0.0000e+00, 0.0000e+00, -1.3915e+04, 7.0311e+03,\n", + " -5.2043e+01, 7.0166e+03, 1.7385e+03, 0.0000e+00],\n", + " [-1.5335e-06, 0.0000e+00, 0.0000e+00, 3.1287e+00, -3.2486e+00,\n", + " 6.6745e+00, -3.2398e+00, 1.7192e+00, 8.7945e-01],\n", + " [-1.3208e-06, 0.0000e+00, 0.0000e+00, 6.7934e+00, -6.7348e+00,\n", + " -3.1492e+00, -6.7356e+00, -1.0024e+01, 8.1968e-01],\n", + " [-5.4282e-06, 0.0000e+00, 0.0000e+00, -4.4793e-01, -4.3423e-01,\n", + " -1.1140e+00, -3.7920e-01, 3.8665e+01, 0.0000e+00]],\n", + "\n", + " [[-2.4632e-04, 0.0000e+00, 0.0000e+00, -4.9585e+03, 3.3911e+02,\n", + " 1.0669e+02, 3.3713e+02, -6.5439e+04, -3.4823e+03],\n", + " [-2.6540e-04, 0.0000e+00, 0.0000e+00, -1.0486e+03, -1.0632e+03,\n", + " -1.9196e+02, -1.0652e+03, -3.7300e+04, 6.2076e+03],\n", + " [ 7.0437e-04, 0.0000e+00, 0.0000e+00, -9.8855e+03, 7.0351e+03,\n", + " -3.1670e+01, 7.0403e+03, 1.0043e+03, 0.0000e+00],\n", + " [-5.9236e-07, 0.0000e+00, 0.0000e+00, 4.7741e+00, -6.5320e+00,\n", + " 3.6443e+00, -6.5344e+00, -1.2981e+00, 1.1172e+00],\n", + " [ 3.3050e-07, 0.0000e+00, 0.0000e+00, 1.7274e+00, -3.6638e+00,\n", + " -6.4269e+00, -3.6656e+00, -7.6670e+00, 3.5326e-01],\n", + " [-3.7291e-06, 0.0000e+00, 0.0000e+00, 5.5037e+00, -2.3410e-01,\n", + " -1.1435e+00, -2.3152e-01, 3.8987e+01, 0.0000e+00]],\n", + "\n", + " [[-9.9311e-04, 0.0000e+00, 0.0000e+00, 6.8390e+02, -1.6215e+03,\n", + " 2.8161e+02, -1.6422e+03, 1.2960e+04, -6.7888e+03],\n", + " [ 5.4352e-03, 0.0000e+00, 0.0000e+00, -6.9360e+03, -6.1739e+02,\n", + " 5.6783e+01, -6.1635e+02, -6.9844e+04, -1.3669e+03],\n", + " [-1.6030e-04, 0.0000e+00, 0.0000e+00, 2.4581e+03, 6.7125e+03,\n", + " 6.9066e+01, 6.7917e+03, 1.3209e+03, 0.0000e+00],\n", + " [ 5.1879e-06, 0.0000e+00, 0.0000e+00, -1.4338e+00, 1.5000e+00,\n", + " 7.2326e+00, 1.5110e+00, -8.1224e+00, 6.6802e-01],\n", + " [ 1.6747e-06, 0.0000e+00, 0.0000e+00, -2.1872e+00, -7.4606e+00,\n", + " 1.3797e+00, -7.5037e+00, -8.1978e+00, -1.7788e+00],\n", + " [-2.1242e-05, 0.0000e+00, 0.0000e+00, 7.1514e+00, -3.0678e-01,\n", + " 1.8682e+00, -3.1748e-01, 3.7529e+01, 0.0000e+00]],\n", + "\n", + " [[-1.4628e-03, 0.0000e+00, 0.0000e+00, 5.0160e+03, -5.5457e+02,\n", + " 5.3768e+01, -5.3202e+02, 6.5061e+04, -2.7763e+03],\n", + " [-2.7292e-04, 0.0000e+00, 0.0000e+00, 6.5206e+02, -1.6282e+03,\n", + " 1.2923e+02, -1.6515e+03, -2.8909e+04, -6.3698e+03],\n", + " [ 3.3061e-03, 0.0000e+00, 0.0000e+00, -1.0315e+04, 6.7356e+03,\n", + " 3.1674e+01, 6.7836e+03, 5.6846e+02, 0.0000e+00],\n", + " [ 2.4927e-06, 0.0000e+00, 0.0000e+00, -5.6737e+00, 6.9653e+00,\n", + " 2.9686e+00, 6.9881e+00, -8.1135e-01, 1.7878e+00],\n", + " [ 1.3210e-06, 0.0000e+00, 0.0000e+00, 1.1364e+00, -3.0274e+00,\n", + " 6.7228e+00, -3.0458e+00, -1.0067e+01, -5.7562e-01],\n", + " [-8.7028e-06, 0.0000e+00, 0.0000e+00, 4.9364e+00, -1.8291e-01,\n", + " 1.8637e+00, -1.5300e-01, 3.7639e+01, 0.0000e+00]],\n", + "\n", + " [[-4.0716e-03, 0.0000e+00, 0.0000e+00, 4.8832e+03, -1.1657e+03,\n", + " 2.4313e+02, -1.1650e+03, 4.2969e+04, -5.4751e+03],\n", + " [ 3.0932e-03, 0.0000e+00, 0.0000e+00, -3.4839e+03, -1.2939e+03,\n", + " 1.8877e+02, -1.3295e+03, -5.7109e+04, -4.2612e+03],\n", + " [ 5.3813e-03, 0.0000e+00, 0.0000e+00, -6.9899e+03, 6.7250e+03,\n", + " 7.4256e+01, 6.8076e+03, 1.4305e+03, 0.0000e+00],\n", + " [ 5.5784e-06, 0.0000e+00, 0.0000e+00, -3.4329e+00, 4.6738e+00,\n", + " 5.8529e+00, 4.6985e+00, -3.2261e+00, 1.4354e+00],\n", + " [ 1.2191e-06, 0.0000e+00, 0.0000e+00, 1.7606e+00, -5.9944e+00,\n", + " 4.4533e+00, -6.0369e+00, -1.1494e+01, -1.2572e+00],\n", + " [-2.0341e-05, 0.0000e+00, 0.0000e+00, 6.5614e+00, -3.6325e-01,\n", + " 1.8655e+00, -3.3942e-01, 3.7588e+01, 0.0000e+00]],\n", + "\n", + " [[-1.4194e-05, 0.0000e+00, 0.0000e+00, -6.2767e+02, 7.8154e+02,\n", + " 6.0163e+03, 7.7861e+02, 7.2778e+03, 4.0831e+03],\n", + " [ 7.1785e-05, 0.0000e+00, 0.0000e+00, -3.9847e+03, -6.0551e+03,\n", + " 2.5272e+02, -6.0323e+03, 4.0595e+04, -6.1611e+02],\n", + " [ 8.0533e-05, 0.0000e+00, 0.0000e+00, 6.0744e+03, -4.0201e+03,\n", + " 7.8769e+02, -4.0051e+03, -6.8718e+04, 0.0000e+00],\n", + " [-2.4235e-07, 0.0000e+00, 0.0000e+00, -7.9414e-01, 6.2343e-01,\n", + " -4.0542e+00, 6.2227e-01, 4.7284e+00, 6.1154e+00],\n", + " [ 1.8907e-06, 0.0000e+00, 0.0000e+00, 6.0874e+00, 4.1254e+00,\n", + " -1.6954e-01, 4.1176e+00, -3.0698e+01, 7.8868e-01],\n", + " [ 1.2407e-06, 0.0000e+00, 0.0000e+00, 4.1111e+00, -6.0949e+00,\n", + " -5.2876e-01, -6.0835e+00, -2.6332e+01, 0.0000e+00]]])\n" ] } ], diff --git a/doc/notebooks/tle_propagation.ipynb b/doc/notebooks/tle_propagation.ipynb index fa59ead..7bb79f8 100644 --- a/doc/notebooks/tle_propagation.ipynb +++ b/doc/notebooks/tle_propagation.ipynb @@ -43,7 +43,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -53,7 +53,7 @@ " 5.5809e-01, 6.2651e-02, 4.8993e+00])" ] }, - "execution_count": 10, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -126,34 +126,33 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "#we first need to prepare the data, the API requires that there are as many TLEs as times. Let us assume we want to\n", "#propagate each of the \n", + "tles_=[]\n", + "for tle in tles:\n", + " tles_+=[tle]*10000\n", "tsinces = torch.cat([torch.linspace(0,24*60,10000)]*len(tles))\n", "#first let's initialize them:\n", - "dsgp4.initialize_tle(tles)\n", - "#then let's construct the TLEs batch by making sure there are as many TLEs as times:\n", - "tles_batch=[]\n", - "for tle in tles:\n", - " tles_batch+=[tle]*10000" + "_,tle_batch=dsgp4.initialize_tle(tles_)" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "#we propagate the batch of 3,000 TLEs for 1 day:\n", - "states_teme=dsgp4.propagate_batch(tles_batch,tsinces)" + "states_teme=dsgp4.propagate_batch(tle_batch,tsinces)" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 16, "metadata": {}, "outputs": [ { diff --git a/dsgp4/__init__.py b/dsgp4/__init__.py index 2b7b624..7396994 100644 --- a/dsgp4/__init__.py +++ b/dsgp4/__init__.py @@ -1,10 +1,11 @@ -__version__ = '0.1.2' +__version__ = '1.0.0' import torch torch.set_default_dtype(torch.float64) from .sgp4 import sgp4 from .initl import initl from .sgp4init import sgp4init +from .sgp4init_batch import sgp4init_batch from .newton_method import newton_method, update_TLE from .sgp4_batched import sgp4_batched from .util import propagate, initialize_tle, propagate_batch diff --git a/dsgp4/sgp4_batched.py b/dsgp4/sgp4_batched.py index 289b0f7..b04ef2d 100644 --- a/dsgp4/sgp4_batched.py +++ b/dsgp4/sgp4_batched.py @@ -2,7 +2,7 @@ import numpy from .tle import TLE -def sgp4_batched(satellite, tsince): +def sgp4_batched(satellite_batch, tsince): """ This function represents the batch SGP4 propagator. It resembles `sgp4`, but accepts batches of TLEs. @@ -12,99 +12,25 @@ def sgp4_batched(satellite, tsince): in km and km/s, respectively, after `tsince` minutes. Args: - - satellite (``dsgp4.tle.TLE``): TLE object - - tsince (``torch.tensor``): time to propagate, since the TLE epoch, in minutes + - satellite (``dsgp4.tle.TLE``): TLE batch object (with attributes that are N-dimensional tensors) + - tsince (``torch.tensor``): time to propagate, since the TLE epoch, in minutes (also an N-dimensional tensor) Returns: - batch_state (``torch.tensor``): a batch of 2x3 tensors, where the first row represents the spacecraft position (in km) and the second the spacecraft velocity (in km/s) """ - if not isinstance(satellite, list): - raise ValueError("satellite should be a list of TLE objects.") - if not isinstance(satellite[0],TLE): - raise ValueError("satellite should be a list of TLE objects.") + if not isinstance(satellite_batch, TLE): + raise ValueError("satellite_batch should be a TLE object.") if not torch.is_tensor(tsince): raise ValueError("tsince must be a tensor.") if tsince.ndim!=1: raise ValueError("tsince should be a one dimensional tensor.") - if len(tsince)!=len(satellite): - raise ValueError("in batch mode, tsince and satellite shall be of same length.") - if not hasattr(satellite[0], '_radiusearthkm'): - raise AttributeError('It looks like the satellite has not been initialized. Please use the `initialize_tle` method or directly `sgp4init` to initialize the satellite. Otherwise, if you are propagating, another option is to use `dsgp4.propagate` and pass `initialized=True` in the arguments.') + if len(tsince)!=len(satellite_batch._argpo): + raise ValueError(f"in batch mode, tsince and satellite_batch shall have attributes of same length. Instead {len(tsince)} for time, and {len(satellite_batch._argpo)} for satellites' attributes found") + if not hasattr(satellite_batch, '_radiusearthkm'): + raise AttributeError('It looks like the satellite_batch has not been initialized. Please use the `initialize_tle` method or directly `sgp4init` to initialize the satellite_batch. Otherwise, if you are propagating, another option is to use `dsgp4.propagate` and pass `initialized=True` in the arguments.') - batch_size = len(satellite) - - satellite_batch=satellite[0].copy() - satellite_batch._bstar=torch.stack([s._bstar for s in satellite]) - satellite_batch._ndot=torch.stack([s._ndot for s in satellite]) - satellite_batch._nddot=torch.stack([s._nddot for s in satellite]) - satellite_batch._ecco=torch.stack([s._ecco for s in satellite]) - satellite_batch._argpo=torch.stack([s._argpo for s in satellite]) - satellite_batch._inclo=torch.stack([s._inclo for s in satellite]) - satellite_batch._mo=torch.stack([s._mo for s in satellite]) - - satellite_batch._no_kozai=torch.stack([s._no_kozai for s in satellite]) - satellite_batch._nodeo=torch.stack([s._nodeo for s in satellite]) - satellite_batch.satellite_catalog_number=torch.tensor([s.satellite_catalog_number for s in satellite]) - satellite_batch._jdsatepoch=torch.stack([s._jdsatepoch for s in satellite]) - satellite_batch._jdsatepochF=torch.stack([s._jdsatepochF for s in satellite]) - satellite_batch._isimp=torch.tensor([s._isimp for s in satellite]) - satellite_batch._method=[s._method for s in satellite] - - satellite_batch._mdot=torch.stack([s._mdot for s in satellite]) - satellite_batch._argpdot=torch.stack([s._argpdot for s in satellite]) - satellite_batch._nodedot=torch.stack([s._nodedot for s in satellite]) - satellite_batch._nodecf=torch.stack([s._nodecf for s in satellite]) - satellite_batch._cc1=torch.stack([s._cc1 for s in satellite]) - satellite_batch._cc4=torch.stack([s._cc4 for s in satellite]) - satellite_batch._cc5=torch.stack([s._cc5 for s in satellite]) - satellite_batch._t2cof=torch.stack([s._t2cof for s in satellite]) - - satellite_batch._omgcof=torch.stack([s._omgcof for s in satellite]) - satellite_batch._eta=torch.stack([s._eta for s in satellite]) - satellite_batch._xmcof=torch.stack([s._xmcof for s in satellite]) - satellite_batch._delmo=torch.stack([s._delmo for s in satellite]) - satellite_batch._d2=torch.stack([s._d2 for s in satellite]) - satellite_batch._d3=torch.stack([s._d3 for s in satellite]) - satellite_batch._d4=torch.stack([s._d4 for s in satellite]) - satellite_batch._cc5=torch.stack([s._cc5 for s in satellite]) - satellite_batch._sinmao=torch.stack([s._sinmao for s in satellite]) - satellite_batch._t3cof=torch.stack([s._t3cof for s in satellite]) - satellite_batch._t4cof=torch.stack([s._t4cof for s in satellite]) - satellite_batch._t5cof=torch.stack([s._t5cof for s in satellite]) - - satellite_batch._xke=torch.stack([s._xke for s in satellite]) - satellite_batch._radiusearthkm=torch.stack([s._radiusearthkm for s in satellite]) - satellite_batch._t=torch.stack([s._t for s in satellite]) - satellite_batch._aycof=torch.stack([s._aycof for s in satellite]) - satellite_batch._x1mth2=torch.stack([s._x1mth2 for s in satellite]) - satellite_batch._con41=torch.stack([s._con41 for s in satellite]) - satellite_batch._x7thm1=torch.stack([s._x7thm1 for s in satellite]) - satellite_batch._xlcof=torch.stack([s._xlcof for s in satellite]) - satellite_batch._tumin=torch.stack([s._tumin for s in satellite]) - satellite_batch._mu=torch.stack([s._mu for s in satellite]) - satellite_batch._j2=torch.stack([s._j2 for s in satellite]) - satellite_batch._j3=torch.stack([s._j3 for s in satellite]) - satellite_batch._j4=torch.stack([s._j4 for s in satellite]) - satellite_batch._j3oj2=torch.stack([s._j3oj2 for s in satellite]) - satellite_batch._error=torch.stack([s._error for s in satellite]) - satellite_batch._operationmode=[s._operationmode for s in satellite] - satellite_batch._satnum=torch.tensor([s._satnum for s in satellite]) - satellite_batch._am=torch.stack([s._am for s in satellite]) - satellite_batch._em=torch.stack([s._em for s in satellite]) - satellite_batch._im=torch.stack([s._im for s in satellite]) - satellite_batch._Om=torch.stack([s._Om for s in satellite]) - satellite_batch._mm=torch.stack([s._mm for s in satellite]) - satellite_batch._nm=torch.stack([s._nm for s in satellite]) - satellite_batch._init=[s._init for s in satellite] - - satellite_batch._no_unkozai=torch.stack([s._no_unkozai for s in satellite]) - satellite_batch._a=torch.stack([s._a for s in satellite]) - satellite_batch._alta=torch.stack([s._altp for s in satellite]) - - - - + batch_size = len(tsince) mrt = torch.zeros(batch_size) x2o3 = torch.tensor(2.0 / 3.0) @@ -125,7 +51,6 @@ def sgp4_batched(satellite, tsince): tempe1 = satellite_batch._bstar * satellite_batch._cc4 * satellite_batch._t templ1 = satellite_batch._t2cof * t2 - delomg = satellite_batch._omgcof * satellite_batch._t diff --git a/dsgp4/sgp4init.py b/dsgp4/sgp4init.py index 3f0087b..907748c 100644 --- a/dsgp4/sgp4init.py +++ b/dsgp4/sgp4init.py @@ -42,7 +42,7 @@ def sgp4init( temp4 = torch.tensor(1.5e-12) # ----------- set all near earth variables to zero ------------ - satellite._isimp = torch.tensor(0); satellite._method = 'n'; satellite._aycof = torch.tensor(0.0); + satellite._isimp = torch.tensor(0); satellite._method = 'n'; satellite._aycof = torch.tensor(0.0); satellite._con41 = torch.tensor(0.0); satellite._cc1 = torch.tensor(0.0); satellite._cc4 = torch.tensor(0.0); satellite._cc5 = torch.tensor(0.0); satellite._d2 = torch.tensor(0.0); satellite._d3 = torch.tensor(0.0); satellite._d4 = torch.tensor(0.0); satellite._delmo = torch.tensor(0.0); satellite._eta = torch.tensor(0.0); @@ -198,6 +198,6 @@ def sgp4init( 12.0 * satellite._cc1 * satellite._d3 + 6.0 * satellite._d2 * satellite._d2 + 15.0 * cc1sq * (2.0 * satellite._d2 + cc1sq)) - sgp4(satellite, torch.zeros(1,1)) + sgp4(satellite, torch.zeros(1,1)); - satellite._init = 'n' + satellite._init = 'n' \ No newline at end of file diff --git a/dsgp4/sgp4init_batch.py b/dsgp4/sgp4init_batch.py new file mode 100644 index 0000000..cf46536 --- /dev/null +++ b/dsgp4/sgp4init_batch.py @@ -0,0 +1,268 @@ +import numpy as np +import torch +from .sgp4_batched import sgp4_batched +from .util import gstime + +def initl_batch( + xke, j2, + ecco, epoch, inclo, no, + method, + opsmode, batch_size + ): + + x2o3 = torch.full((batch_size,),2.0 / 3.0); + + eccsq = ecco * ecco; + omeosq = 1.0 - eccsq; + rteosq = omeosq.sqrt(); + cosio = inclo.cos(); + cosio2 = cosio * cosio; + + ak = torch.pow(xke / no, x2o3); + d1 = 0.75 * j2 * (3.0 * cosio2 - 1.0) / (rteosq * omeosq); + del_ = d1 / (ak * ak); + adel = ak * (1.0 - del_ * del_ - del_ * + (1.0 / 3.0 + 134.0 * del_ * del_ / 81.0)); + del_ = d1/(adel * adel); + no = no / (1.0 + del_); + + ao = torch.pow(xke / no, x2o3); + sinio = inclo.sin(); + po = ao * omeosq; + con42 = 1.0 - 5.0 * cosio2; + con41 = -con42-cosio2-cosio2; + ainv = 1.0 / ao; + posq = po * po; + rp = ao * (1.0 - ecco); + method = ['n']*batch_size; + + if opsmode == 'a': + # gst time + ts70 = epoch - 7305.0; + ds70 = torch.floor_divide(ts70 + 1.0e-8,1); + tfrac = ts70 - ds70; + # find greenwich location at epoch + c1 = torch.tensor(1.72027916940703639e-2); + thgr70= torch.tensor(1.7321343856509374); + fk5r = torch.tensor(5.07551419432269442e-15); + c1p2p = c1 + (2*numpy.pi); + gsto = (thgr70 + c1*ds70 + c1p2p*tfrac + ts70*ts70*fk5r) % (2*numpy.pi) + if gsto < 0.0: + gsto = gsto + (2*numpy.pi); + + else: + gsto = gstime(epoch + 2433281.5); + + return ( + no, + method, + ainv, ao, con41, con42, cosio, + cosio2,eccsq, omeosq, posq, + rp, rteosq,sinio , gsto, + ) + + +def sgp4init_batch( + whichconst, opsmode, satn, epoch, + xbstar, xndot, xnddot, xecco, xargpo, + xinclo, xmo, xno_kozai, + xnodeo, satellite_batch + ): + """ + This function initializes the sgp4 propagator. + Args: + - whichconst (``tuple``): this contains all the necessary constants (tumin, mu, radiusearthkm, xke, + j2, j3, j4, j3oj2)), according to the chosen gravitational model (wgs-72, wgs-84, + wgs-72old are three possible choices) + - opsmode (``str``): mode of operation (possibilities: afspc or improved, 'a' and 'i', respectively) + - satn (``str``): satellite catalog number + - epoch (``torch.float``): TLE days since 1949 December 31 00:00 UT + - xbstar (``torch.float``): drag coefficient (in 1/earth_radii) + - xndot (``torch.float``): first derivative of mean motion (in revs/day**2) + - xnddot (``torch.float``): second derivative mean motion (in revs/day**3) + - xecco (``torch.float``): eccentricity + - xargpo (``torch.float``): argument of perigee [rad] + - xinclo (``torch.float``): inclination [rad] + - xmo (``torch.float``): mean anomaly [rad] + - xno_kozai (``torch.float``): mean motion (radians/minute) + - xnodeo (``torch.float``): right ascension of the ascending node [rad] + - satellite_batch (``dsgp4.tle.TLE``): TLE object, that represents the batch of TLEs (each element is an N-dimensional tensor) + + ..Note: + If satellite_batch._error is different than 0 once this routine is called, then the satellite propagation + has had an error. In particular, the following error values hold for `satellite_batch._error`: + * `1` -> eccentricity `>=1.` or `<-0.001` or semi-major axis (in Earth radii) `<0.95` + * `2` -> mean_motion `<0.` + * `3` -> eccentricity `<0.` or `>1.` + * `4` -> semi-latus rectum `<0.` + * `5` -> epoch elements are sub-orbital + * `6` -> satellite has decayed + """ + batch_size = len(xecco) + temp4 = torch.tensor(1.5e-12) + + # ----------- set all near earth variables to zero ------------ + satellite_batch._isimp = torch.full((batch_size,),0); satellite_batch._method = ["n"]*batch_size; satellite_batch._aycof = torch.full((batch_size,),0.0); + satellite_batch._con41 = torch.full((batch_size,),0.0); satellite_batch._cc1 = torch.full((batch_size,),0.0); satellite_batch._cc4 = torch.full((batch_size,),0.0); + satellite_batch._cc5 = torch.full((batch_size,),0.0); satellite_batch._d2 = torch.full((batch_size,),0.0); satellite_batch._d3 = torch.full((batch_size,),0.0); + satellite_batch._d4 = torch.full((batch_size,),0.0); satellite_batch._delmo = torch.full((batch_size,),0.0); satellite_batch._eta = torch.full((batch_size,),0.0); + satellite_batch._argpdot = torch.full((batch_size,),0.0); satellite_batch._omgcof = torch.full((batch_size,),0.0); satellite_batch._sinmao = torch.full((batch_size,),0.0); + satellite_batch._t = torch.full((batch_size,),0.0); satellite_batch._t2cof = torch.full((batch_size,),0.0); satellite_batch._t3cof = torch.full((batch_size,),0.0); + satellite_batch._t4cof = torch.full((batch_size,),0.0); satellite_batch._t5cof = torch.full((batch_size,),0.0); satellite_batch._x1mth2 = torch.full((batch_size,),0.0); + satellite_batch._x7thm1 = torch.full((batch_size,),0.0); satellite_batch._mdot = torch.full((batch_size,),0.0); satellite_batch._nodedot = torch.full((batch_size,),0.0); + satellite_batch._xlcof = torch.full((batch_size,),0.0); satellite_batch._xmcof = torch.full((batch_size,),0.0); satellite_batch._nodecf = torch.full((batch_size,),0.0); + + # ------------------------ earth constants ----------------------- + # sgp4fix identify constants and allow alternate values + # this is now the only call for the constants + (satellite_batch._tumin, satellite_batch._mu, satellite_batch._radiusearthkm, satellite_batch._xke, + satellite_batch._j2, satellite_batch._j3, satellite_batch._j4, satellite_batch._j3oj2) = whichconst + + # ------------------------------------------------------------------------- + + satellite_batch._error = torch.full((batch_size,),0) + satellite_batch._operationmode = opsmode + satellite_batch._satnum = satn + + satellite_batch._bstar = xbstar.clone() + # sgp4fix allow additional parameters in the struct + satellite_batch._ndot = xndot.clone() + satellite_batch._nddot = xnddot.clone() + satellite_batch._ecco = xecco.clone() + satellite_batch._argpo = xargpo.clone() + satellite_batch._inclo = xinclo.clone() + satellite_batch._mo = xmo.clone() + # sgp4fix rename variables to clarify which mean motion is intended + satellite_batch._no_kozai= xno_kozai.clone() + satellite_batch._nodeo = xnodeo.clone() + + # single averaged mean elements + satellite_batch._am = torch.full((batch_size,),0.0) + satellite_batch._em = torch.full((batch_size,),0.0) + satellite_batch._im = torch.full((batch_size,),0.0) + satellite_batch._Om = torch.full((batch_size,),0.0) + satellite_batch._mm = torch.full((batch_size,),0.0) + satellite_batch._nm = torch.full((batch_size,),0.0) + + ss = 78.0 / satellite_batch._radiusearthkm + 1.0 + + qzms2ttemp = (120.0 - 78.0) / satellite_batch._radiusearthkm + qzms2t = qzms2ttemp * qzms2ttemp * qzms2ttemp * qzms2ttemp + x2o3 = 2.0 / 3.0 + + satellite_batch._init = 'y' + satellite_batch._t = 0.0 + + # sgp4fix remove satn as it is not needed in initl + ( + satellite_batch._no_unkozai, + method, + ainv, ao, satellite_batch._con41, con42, cosio, + cosio2,eccsq, omeosq, posq, + rp, rteosq,sinio , satellite_batch._gsto, + ) = initl_batch( + satellite_batch._xke, satellite_batch._j2, satellite_batch._ecco, epoch, satellite_batch._inclo, satellite_batch._no_kozai, satellite_batch._method, + satellite_batch._operationmode,batch_size + ) + satellite_batch._a = torch.pow( satellite_batch._no_unkozai*satellite_batch._tumin , (-2.0/3.0) ) + satellite_batch._alta = satellite_batch._a*(1.0 + satellite_batch._ecco) - 1.0 + satellite_batch._altp = satellite_batch._a*(1.0 - satellite_batch._ecco) - 1.0 + + # Assuming all relevant variables are tensors. + condition1 = (omeosq >= 0.0) | (satellite_batch._no_unkozai >= 0.0) + + # Initialize all variables that will be conditionally assigned + satellite_batch._isimp = torch.where(condition1, torch.tensor(0), satellite_batch._isimp) + condition2 = condition1 & (rp < 220.0 / satellite_batch._radiusearthkm + 1.0) + satellite_batch._isimp = torch.where(condition2, torch.tensor(1), satellite_batch._isimp) + + sfour = torch.where(condition1, ss, torch.zeros_like(ss)) + qzms24 = torch.where(condition1, qzms2t, torch.zeros_like(qzms2t)) + perige = torch.where(condition1, (rp - 1.0) * satellite_batch._radiusearthkm, torch.zeros_like(rp)) + + condition3 = condition1 & (perige < 156.0) + sfour_temp1 = torch.where(perige < 98.0, torch.tensor(20.0), perige - 78.0) + sfour = torch.where(condition3, sfour_temp1, sfour) + qzms24temp = (120.0 - sfour) / satellite_batch._radiusearthkm + qzms24 = torch.where(condition3, qzms24temp ** 4, qzms24) + sfour = torch.where(condition3, sfour / satellite_batch._radiusearthkm + 1.0, sfour) + + pinvsq = 1.0 / posq + tsi = 1.0 / (ao - sfour) + satellite_batch._eta = ao * satellite_batch._ecco * tsi + etasq = satellite_batch._eta ** 2 + eeta = satellite_batch._ecco * satellite_batch._eta + psisq = torch.abs(1.0 - etasq) + coef = qzms24 * (tsi ** 4) + coef1 = coef / (psisq ** 3.5) + cc2 = coef1 * satellite_batch._no_unkozai * (ao * (1.0 + 1.5 * etasq + eeta * + (4.0 + etasq)) + 0.375 * satellite_batch._j2 * tsi / psisq * satellite_batch._con41 * + (8.0 + 3.0 * etasq * (8.0 + etasq))) + satellite_batch._cc1 = satellite_batch._bstar * cc2 + cc3 = torch.where(satellite_batch._ecco > 1.0e-4, + -2.0 * coef * tsi * satellite_batch._j3oj2 * satellite_batch._no_unkozai * sinio / satellite_batch._ecco, + torch.tensor(0.0)) + satellite_batch._x1mth2 = 1.0 - cosio2 + satellite_batch._cc4 = 2.0 * satellite_batch._no_unkozai * coef1 * ao * omeosq * \ + (satellite_batch._eta * (2.0 + 0.5 * etasq) + satellite_batch._ecco * + (0.5 + 2.0 * etasq) - satellite_batch._j2 * tsi / (ao * psisq) * + (-3.0 * satellite_batch._con41 * (1.0 - 2.0 * eeta + etasq * + (1.5 - 0.5 * eeta)) + 0.75 * satellite_batch._x1mth2 * + (2.0 * etasq - eeta * (1.0 + etasq)) * (2.0 * satellite_batch._argpo).cos())) + satellite_batch._cc5 = 2.0 * coef1 * ao * omeosq * (1.0 + 2.75 * + (etasq + eeta) + eeta * etasq) + cosio4 = cosio2 ** 2 + temp1 = 1.5 * satellite_batch._j2 * pinvsq * satellite_batch._no_unkozai + temp2 = 0.5 * temp1 * satellite_batch._j2 * pinvsq + temp3 = -0.46875 * satellite_batch._j4 * pinvsq * pinvsq * satellite_batch._no_unkozai + satellite_batch._mdot = satellite_batch._no_unkozai + 0.5 * temp1 * rteosq * satellite_batch._con41 + 0.0625 * \ + temp2 * rteosq * (13.0 - 78.0 * cosio2 + 137.0 * cosio4) + satellite_batch._argpdot = (-0.5 * temp1 * con42 + 0.0625 * temp2 * + (7.0 - 114.0 * cosio2 + 395.0 * cosio4) + + temp3 * (3.0 - 36.0 * cosio2 + 49.0 * cosio4)) + xhdot1 = -temp1 * cosio + satellite_batch._nodedot = xhdot1 + (0.5 * temp2 * (4.0 - 19.0 * cosio2) + + 2.0 * temp3 * (3.0 - 7.0 * cosio2)) * cosio + xpidot = satellite_batch._argpdot + satellite_batch._nodedot + satellite_batch._omgcof = satellite_batch._bstar * cc3 * satellite_batch._argpo.cos() + satellite_batch._xmcof = torch.where(satellite_batch._ecco > 1.0e-4, + -x2o3 * coef * satellite_batch._bstar / eeta, + satellite_batch._xmcof) + satellite_batch._nodecf = 3.5 * omeosq * xhdot1 * satellite_batch._cc1 + satellite_batch._t2cof = 1.5 * satellite_batch._cc1 + satellite_batch._xlcof = torch.where(torch.abs(cosio + 1.0) > 1.5e-12, + -0.25 * satellite_batch._j3oj2 * sinio * (3.0 + 5.0 * cosio) / (1.0 + cosio), + -0.25 * satellite_batch._j3oj2 * sinio * (3.0 + 5.0 * cosio) / temp4) + satellite_batch._aycof = -0.5 * satellite_batch._j3oj2 * sinio + delmotemp = 1.0 + satellite_batch._eta * satellite_batch._mo.cos() + satellite_batch._delmo = delmotemp ** 3 + satellite_batch._sinmao = satellite_batch._mo.sin() + satellite_batch._x7thm1 = 7.0 * cosio2 - 1.0 + + # Deep space initialization + deep_space_condition = (2 * np.pi / satellite_batch._no_unkozai >= 225.0) + if torch.any(deep_space_condition): + raise RuntimeError("Error: deep space propagation not supported (yet). One of the provided satellites has" + "an orbital period above 225 minutes. If you want to let us know you need it or you want to " + "contribute to implement it, open a PR or raise an issue at: https://github.com/esa/dSGP4.") + + isimp_condition = (satellite_batch._isimp != 1) + if torch.any(isimp_condition): + cc1sq = satellite_batch._cc1 ** 2 + d2 = 4.0 * ao * tsi * cc1sq + temp = d2 * tsi * satellite_batch._cc1 / 3.0 + d3 = (17.0 * ao + sfour) * temp + d4 = 0.5 * temp * ao * tsi * (221.0 * ao + 31.0 * sfour) * satellite_batch._cc1 + t3cof = d2 + 2.0 * cc1sq + t4cof = 0.25 * (3.0 * d3 + satellite_batch._cc1 * (12.0 * d2 + 10.0 * cc1sq)) + t5cof = 0.2 * (3.0 * d4 + 12.0 * satellite_batch._cc1 * d3 + + 6.0 * d2 ** 2 + 15.0 * cc1sq * (2.0 * d2 + cc1sq)) + satellite_batch._d2 = torch.where(isimp_condition, d2, satellite_batch._d2) + satellite_batch._d3 = torch.where(isimp_condition, d3, satellite_batch._d3) + satellite_batch._d4 = torch.where(isimp_condition, d4, satellite_batch._d4) + satellite_batch._t3cof = torch.where(isimp_condition, t3cof, satellite_batch._t3cof) + satellite_batch._t4cof = torch.where(isimp_condition, t4cof, satellite_batch._t4cof) + satellite_batch._t5cof = torch.where(isimp_condition, t5cof, satellite_batch._t5cof) + sgp4_batched(satellite_batch, torch.zeros((batch_size,))) + + satellite_batch._init = 'n' diff --git a/dsgp4/util.py b/dsgp4/util.py index b9834dc..8338441 100644 --- a/dsgp4/util.py +++ b/dsgp4/util.py @@ -76,7 +76,9 @@ def propagate(tle, tsinces, initialized=True): state=sgp4(tle, tsinces) return state -def initialize_tle(tles,gravity_constant_name="wgs-84",with_grad=False): +def initialize_tle(tles, + gravity_constant_name="wgs-84", + with_grad=False): """ This function takes a single `dsgp4.tle.TLE` object or a list of `dsgp4.tle.TLE` objects and initializes the SGP4 propagator. This is a necessary step to be ran before propagating TLEs (e.g. before calling `propagate` function). @@ -90,12 +92,12 @@ def initialize_tle(tles,gravity_constant_name="wgs-84",with_grad=False): - tle_elements (``torch.tensor``): tensor of TLE parameters (especially useful to retrieve gradients, when `with_grad` is `True`) """ from .sgp4init import sgp4init + from .sgp4init_batch import sgp4init_batch whichconst=get_gravity_constants(gravity_constant_name) deep_space_counter=0 if isinstance(tles,list): tle_elements=[]#torch.zeros((len(tles),9),requires_grad=with_grad) - for i, tle in enumerate(tles): - try: + for tle in tles: x=torch.tensor([tle._bstar, tle._ndot, tle._nddot, @@ -106,23 +108,31 @@ def initialize_tle(tles,gravity_constant_name="wgs-84",with_grad=False): tle._no_kozai, tle._nodeo ],requires_grad=with_grad) - sgp4init(whichconst=whichconst, - opsmode='i', - satn=tle.satellite_catalog_number, - epoch=(tle._jdsatepoch+tle._jdsatepochF)-2433281.5, - xbstar=x[0], - xndot=x[1], - xnddot=x[2], - xecco=x[3], - xargpo=x[4], - xinclo=x[5], - xmo=x[6], - xno_kozai=x[7], - xnodeo=x[8], - satellite=tle) tle_elements.append(x) - except: - deep_space_counter+=1 + xx=torch.stack(tle_elements) + try: + tles_batch=tles[0].copy() + sgp4init_batch(whichconst=whichconst, + opsmode='i', + satn=tle.satellite_catalog_number, + epoch=(tle._jdsatepoch+tle._jdsatepochF)-2433281.5, + xbstar=xx[:,0], + xndot=xx[:,1], + xnddot=xx[:,2], + xecco=xx[:,3], + xargpo=xx[:,4], + xinclo=xx[:,5], + xmo=xx[:,6], + xno_kozai=xx[:,7], + xnodeo=xx[:,8], + satellite_batch=tles_batch, + ) + except: + deep_space_counter+=1 + if deep_space_counter>0: + print("Warning: "+str(deep_space_counter)+" TLEs were not initialized because they are in deep space. Deep space propagation is currently not supported.") + return tle_elements, tles_batch + else: tle_elements=torch.tensor([tles._bstar, tles._ndot, @@ -148,10 +158,7 @@ def initialize_tle(tles,gravity_constant_name="wgs-84",with_grad=False): xno_kozai=tle_elements[7], xnodeo=tle_elements[8], satellite=tles) - - if deep_space_counter>0: - print("Warning: "+str(deep_space_counter)+" TLEs were not initialized because they are in deep space. Deep space propagation is currently not supported.") - return tle_elements + return tle_elements def from_year_day_to_date(y,d): return (datetime.datetime(y, 1, 1) + datetime.timedelta(d - 1)) diff --git a/tests/test_batched_sgp4.py b/tests/test_batched_sgp4.py index 8abef24..6bb8dcc 100644 --- a/tests/test_batched_sgp4.py +++ b/tests/test_batched_sgp4.py @@ -41,8 +41,9 @@ def test_sgp4_batched(self): self.assertTrue((str(e).split()==error_string.split()) or ((str(e).split()==error_string_isimp.split()))) tsinces_batch=torch.cat(tsinces_batch) out_non_batched=torch.cat(out_non_batched) - #we batch propagate all TLEs at all required times: - out_batched=dsgp4.propagate_batch(tles_batch,tsinces_batch) + #we initialize and then batch propagate all TLEs at all required times: + _,tle_batch=dsgp4.initialize_tle(tles_batch,gravity_constant_name="wgs-72") + out_batched=dsgp4.propagate_batch(tle_batch,tsinces_batch) self.assertTrue(np.allclose(out_non_batched.numpy(),out_batched.numpy())) def test_isimp_batched(self): @@ -68,7 +69,8 @@ def test_isimp_batched(self): self.assertTrue(str(e).split()==error_string.split()) tsinces_batch = torch.cat(tsinces_batch) out_non_batched = torch.cat(out_non_batched) - out_batched = dsgp4.propagate_batch(tles_batch,tsinces_batch) + _,tle_batch=dsgp4.initialize_tle(tles_batch) + out_batched = dsgp4.propagate_batch(tle_batch,tsinces_batch) self.assertTrue(torch.any(torch.tensor([tle._isimp==1 for tle in tles_batch]))) self.assertTrue(np.allclose(out_non_batched.numpy(),out_batched.numpy()))