Implicit Methods for Drag-Dependent Acceleration in Euler Integration

Click For Summary
SUMMARY

The discussion focuses on implementing the backward Euler method for integrating motion equations affected by drag, highlighting the challenge of calculating acceleration dependent on new position and velocity. The iterative nature of the backward Euler method is emphasized, where initial estimates are refined through successive iterations. Key formulas include v_{i+1}=v_{i}+a_{i+1}δ and x_{i+1}=x_{i}+v_{i+1}δ, with suggestions to start with a_{i+1}=a_i or use the extrapolation formula a_{i+1}=2a_i-a_{i-1} for improved accuracy. The importance of convergence and time step size is also noted.

PREREQUISITES
  • Understanding of the backward Euler method for numerical integration
  • Familiarity with motion equations and drag forces
  • Knowledge of iterative methods and convergence criteria
  • Basic proficiency in programming for implementing numerical algorithms
NEXT STEPS
  • Research the implementation of the backward Euler method in numerical simulations
  • Explore techniques for ensuring convergence in iterative methods
  • Learn about the effects of time step size on numerical accuracy
  • Investigate the role of drag in motion equations and its computational implications
USEFUL FOR

Mathematicians, physicists, and software developers involved in numerical simulations of motion, particularly those dealing with drag forces and iterative integration methods.

RH10
Messages
6
Reaction score
0
I'm trying to write a code to implement he backwards Euler method to integrate the equation of motion. The sticking point seems to be that the acceleration is due to drag, and thus is dependent on the new position and velocity.

I understand the method to be:

[itex]v_{i+1}=v_{i}+a_{i+1}δ[/itex]
[itex]x_{i+1}=x_{i}+v_{i+1}δ[/itex]

With only the current conditions I can’t evaluate [itex]a_{i+1}[/itex] and am stuck.

Any help on how the implicit methods work would be really appreciated.


I’ve considered using [itex]a_{i+1}= a_{i}+ (a_{i}-a_{i-1}){δ}[/itex] but then that’s not really an implicit method is it? – you’re simply reusing the acceleration from last time around.

Thanks in advance,
 
Physics news on Phys.org
The backwards Euler method is iterative. The first guess is usually the forward Euler method, so the right-hand side is determined using the information at time "i". You now have a first estimate of the properties at time "i+1". You can now use these estimates in the right-hand side to get a better estimate of the properties at time "i+1".

so for your example, first use a and v at time "i", then you have v and x at time "i+1". Now calculate a at "i+1" and recalculate v an x, but using your new estimate of a and v at "i+1":

first iteration:
[itex]v^1_{i+1}=v_{i}+a_{i}\Delta t[/itex]
[itex]x^1_{i+1}=x_{i}+v_{i}\Delta t[/itex]
calculate [itex]a_{i+1}=f(v^1_{x+1})\Delta t[/itex]
second iteration:
[itex]v^2_{i+1}=v_{i}+a^1_{i+1}\Delta t[/itex]
[itex]x^2_{i+1}=x_{i}+v^1_{i+1}\Delta t[/itex]
 
You take a guess at the starting value, and (with luck) the interations will converge to a better value. If they don't converge, try a smaller time step.

RH10 said:
I’ve considered using [itex]a_{i+1}= a_{i}+ (a_{i}-a_{i-1}){δ}[/itex]

That's not right, because the "dimensions" don't make sense. Multiplying ##a## by ##\delta## gives you a quantity that is a ##v##, not an ##a##.

You could just start with ##a_{i+1} = a_i##, or if you want to extrapolate, the right fomula is ##a_{i+1} = a_i + (a_i-a_{i-1}) = 2a_i - a_{i-1}##.

Whether it's "better" to extrapolate or not will depend on the problem you are solving and the size of the time steps.
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
6K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 7 ·
Replies
7
Views
17K
  • · Replies 1 ·
Replies
1
Views
10K
  • · Replies 6 ·
Replies
6
Views
1K
  • · Replies 1 ·
Replies
1
Views
5K
  • · Replies 18 ·
Replies
18
Views
4K
  • · Replies 5 ·
Replies
5
Views
6K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K