CFD Online Logo CFD Online URL
Home > Forums > Main CFD Forum

2N Storage Runge kutta-part2

Register Blogs Members List Search Today's Posts Mark Forums Read

LinkBack Thread Tools Display Modes
Old   August 5, 2005, 09:45
Default 2N Storage Runge kutta-part2
Posts: n/a
Hi ,

Last time, I asked how to derive the order equations for 2N storage.Thanks to "Runge_Kutta",who showed me the way.I derived the order equations but they are horribly nonlinear.Even Maple can hardly solve more than 7 equations at one time.Is there any other software(for solvong nonlinear-sys of equations) that can make life easy.

Thank you all Vasanth
  Reply With Quote

Old   August 6, 2005, 13:16
Default Re: 2N Storage Runge kutta-part2
Posts: n/a
If you are trying to solve low-storage schemes that remove many degrees of freedom from the ERK or you have a bunch of stages, skip the symbolic manipulators and go straight to a nonlinear equation solver. If, on the other hand, you want to solve for full storage methods, use the symbolic manipulator. What follows is for the latter scenario. First, write the ERK method in terms of vectors and matrices like this below (Mathematica). For an example, lets solve for the general solution of the 4-stage, 4th-order ERK with c2 and c3 being the 2 unused degrees of freedom (see Butcher's 1987 book, p197). The "classic Runge-Kutta" is a special case of this solution for c2 = 1/2 and c3 = 1.

b = {b1,b2,b3,b4}; c = {0,c2,c3,c4}; e = {1,1,1,1}; a = {{0,0,0,0}, {a21,0,0,0}, {a31,a32,0,0}, {a41,a42,a43,0}};

(* Row-Sum condition *)

ae = a.e; ans = Solve[{ae[[2]]==c2,ae[[3]]==c3,ae[[4]]==c4},{a21,a31,a41}]; a21 = Simplify[Part[a21 /. ans, 1]]; a31 = Simplify[Part[a31 /. ans, 1]]; a41 = Simplify[Part[a41 /. ans, 1]];

(* Quadrature Order conditions *)

t11 = Simplify[ b.e - 1/1!]; t21 = Simplify[ b.c - 1/2!]; t31 = Simplify[ b.c^2/2! - 1/3!]; t41 = Simplify[ b.c^3/3! - 1/4!];

ans = Solve[{t11==0,t21==0,t31==0,t41==0},{b1,b2,b3,b4}]; b1 = Simplify[Part[b1 /. ans, 1]]; b2 = Simplify[Part[b2 /. ans, 1]]; b3 = Simplify[Part[b3 /. ans, 1]]; b4 = Simplify[Part[b4 /. ans, 1]];

(* Other Order conditions *)

t32 = b.a.c - 1/3!; t42 = (b*c).a.c - 3/4!; t43 = b.a.c^2/2 - 1/4!; t44 = b.a.a.c - 1/4!;

ans = Solve[{t32==0,t42==0,t43==0},{a32,a42,a43}]; a32 = Simplify[Part[a32 /. ans, 1]]; a42 = Simplify[Part[a42 /. ans, 1]]; a43 = Simplify[Part[a43 /. ans, 1]];

ans = Solve[{t44==0},{c4}]; c4 = Simplify[Part[c4 /. ans, 1]];

a = Simplify[ a ] b = Simplify[ b ] c = Simplify[ c ]

This can be written more effectively but that is not the point here. The key is knowing how to slice through these nonlinear equations. If you're good at it then you can solve for lots of methods. If you're not, you get nothing.
  Reply With Quote


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
1D Burgers euqation with 4th Runge Kutta dokeun Main CFD Forum 3 August 8, 2011 06:34
Runge Kutta Optimization vasanth Main CFD Forum 6 December 2, 2005 14:07
2N Storage runge kutta Vasanth Main CFD Forum 3 August 2, 2005 10:44
Navier Stokes - Runge Kutta CFDtoy Main CFD Forum 3 July 7, 2004 14:13
Diagonally Dominate Runge Kutta Method Anthony Iannetti Main CFD Forum 0 January 23, 2001 22:27

All times are GMT -4. The time now is 09:23.