# 2N Storage Runge kutta-part2

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

 August 5, 2005, 09:45 2N Storage Runge kutta-part2 #1 vasanth Guest   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

 August 6, 2005, 13:16 Re: 2N Storage Runge kutta-part2 #2 Runge_Kutta Guest   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.

 Thread Tools Display Modes Linear Mode

 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 OffTrackbacks are On Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post dokeun Main CFD Forum 3 August 8, 2011 06:34 vasanth Main CFD Forum 6 December 2, 2005 14:07 Vasanth Main CFD Forum 3 August 2, 2005 10:44 CFDtoy Main CFD Forum 3 July 7, 2004 14:13 Anthony Iannetti Main CFD Forum 0 January 23, 2001 22:27

All times are GMT -4. The time now is 02:16.