# Most efficient (computationally) orbit propagation for simplified J2 effects

I am looking into modeling large scale constellation (hundreds of satellites) and there coverage over earth given a defined conical FOV. The simplified process is a user defines:

1. Constellation (starting with walker-delta)
2. Sensor FOV
3. Evaluation Time period, and time step
4. Grid density (how many points spaced out on earths surface)

And effectively the flow logic is at every deltaT, propagate the satellites and get their position coordinates, calculate their LOS and FOV access to the points on the ground and continue the process.

Now currently I have implemented a basic two body propagator which takes orbital elements, uses newtons method for the various "anomaly" calculations and conversions to effectively propagate using the orbital elements and then convert to cartesian at the end of each step.

I feel like this is an ineffecient method, since I have a fixed time step, and I also have the RV (position and velocity) componentes at the end of a time step. Is there a method to propogate in RV terms, instead of orbital elements that would be more accurate?

Some assumptions in my program:

1. Only care about simplified J2 effects
2. DO NOT care about drag
3. Only dealing with LEO and MEO circular or elliptical orbits.

I think the assumptions I have entering into the analysis allow for very efficient calculations.

Also when I say time step, I am dealing with the order of 10's of seconds to several minutes over several months.

• This is a great question! By the way if there were no $J_2$ and you were looking at strictly Kepler orbits, then while Newton's method is necessary to get $\theta(t)$, this answer explains that $t(\theta)$ can be found exactly analytically (you don't need to converge). Newton's method is so darn fast though that it may be faster than switching back and forth between $\theta(t)$ and $t(\theta)$. – uhoh Jul 18 '20 at 2:16
• About your question, I think here you are only asking for a way to incorporate $J_2$ effects into a cartesian ODE solving context, is that right? I always refer back to Equation 15 in Wikipedia (e.g. 1, 2, 3). – uhoh Jul 18 '20 at 2:23
• For "most efficient" do you mean computationally fastest or easiest and quickest to write and get running? If it's the latter then a few dozen lines of Python is all you need. If its the former then a compiled language may be necessary. Since you have a constellation, then you may gain computational speed by vectorizing; propagating groups of spacecraft together. The size of the group will have an optimum; too larger and it will slow down due to constant swapping due to limited on-chip cache size in your CPU. – uhoh Jul 18 '20 at 2:28
• @uhoh by most efficient I am looking for computational the fastest. I will be using fortran to write the analysis code. I feel like any form of integration of ODE would be slower then the original method I mentioned. It may be that using orbital elements and converting to cartesian coordinates may just be the fastest, but wanted to explore options. – S moran Jul 18 '20 at 16:42
• I see, well once you add $J_2$ then the original method will probably require a perturbation approach like the way that TLEs are propagated in SGP4. Even though Kepler orbits are 2D the problem with $J_2$ is now 3D and it will perturb and evolve most/all of the seven orbital elements. You can start reading about it here for example. – uhoh Jul 19 '20 at 2:16