----------------------------------------------------------------------- -- package pc_1_coeff_17, coefficients for a Predictor-Corrector integrator -- Copyright (C) 2008-2009 Jonathan S. Parker. -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- You should have received a copy of the GNU General Public License -- along with this program. If not, see http://www.gnu.org/licenses/ -- -- As a special exception, if other files instantiate generics from -- this unit, or you link this unit with other files to produce an -- executable, this unit does not by itself cause the resulting -- executable to be covered by the GNU General Public License. This -- exception does not however invalidate any other reasons why the -- executable file might be covered by the GNU Public License. ----------------------------------------------------------------------- -- package pc_1_coeff_17 -- -- Predictor_Rule : Integration_Rule renames Predictor_32_17; -- -- Corrector_Rule : Integration_Rule renames Corrector_33_17; -- -- Final_Step_Corrector : Real renames Final_Step_Corrector_33_17; -- generic type Real is digits <>; package pc_1_coeff_17 is subtype PC_Rule_Range is Integer range 0..31; type Integration_Rule is array(PC_Rule_Range) of Real; Extrap_Factor: constant Real := 1.0 / 15.8; Predictor_32_17 : constant Integration_Rule := ( -1.62472980947547285227912948691595204E-1 , 1.51846575484458773430336413812753196E+0 , -5.68313970441214142340495425745202565E+0 , 1.00050734670521388742024808461071612E+1 , -5.61854336297953874414035267260123444E+0 , -6.41511270402391939529842383747530560E+0 , 6.59402419366119591267336173438292271E+0 , 6.73389647814116072687447173034733748E+0 , -4.86700881396898624573986118676698199E+0 , -8.64478706711790617969744057119346501E+0 , 6.63950727514010549784482933422989055E-1 , 9.20584617745705343258283037112855880E+0 , 5.19291395136070380968021848017215355E+0 , -5.96875633034033333049422865420452374E+0 , -9.72525166371917802502970850620895075E+0 , -9.95483190234079632968918740363838844E-1 , 9.52700922317356348545779899395211586E+0 , 8.36629002979632377094330540813030109E+0 , -3.85140687351134092395168103549558921E+0 , -1.19484970796233066876477705100278548E+1 , -4.44168726638781250188880979736295583E+0 , 1.01593092041960707363001655682217274E+1 , 1.14434446021422622131134674483204015E+1 , -5.04683008000810008640273594832825778E+0 , -1.56394540669719939074019577890952650E+1 , 4.58226091321959434664888304431326364E-1 , 1.90978849948879625945213856074456873E+1 , -1.62929715322749462770004952327020878E+0 , -2.47069184123582886764830758984010759E+1 , 2.64970064547578370104165815171826716E+1 , -1.32754569867641443423432949584113725E+1 , 4.15676238628928173030237375397761510E+0 ); Predictor_32_extrap_to_17 : constant Integration_Rule := ( 1.36170338100944228833244474089595536E-1 , -1.43627006830559893033227429680231347E+0 , 6.25426101053819487878676687905366217E+0 , -1.37007265543019152786589106916978149E+1 , 1.30180684411558539611462169446664638E+1 , 3.37161992934220452136765391206638380E+0 , -1.44967104901233064320465797867265537E+1 , -2.32976036259699042473128857293279032E+0 , 1.60135143422803149804126763227308538E+1 , 6.09415040781672732848112078705410452E+0 , -1.67176567383205210974706254692379378E+1 , -1.24784473750736143913368532411975415E+1 , 1.33560980157391979480655078492820117E+1 , 1.88295870130376820754771101489794362E+1 , -4.21972488741453009458242453116599415E+0 , -2.16905844193546925713292133005795100E+1 , -8.54977852575513347873329401429507024E+0 , 1.83162714746860914505261967956328830E+1 , 2.03691056825979617972191189828938736E+1 , -9.48894410534496198964999690653173315E+0 , -2.69829180340256333702722180576512020E+1 , -1.05463051869620197709087430018367894E+0 , 2.73423581859878178943934360569196619E+1 , 1.00399919777284775215768531822227871E+1 , -2.52328248015840951873717383878101787E+1 , -1.55533819955664366838517778040311197E+1 , 2.76995237685588538548398240808673052E+1 , 1.34928731717967644615465425025854988E+1 , -4.47413113609792192188253274754918855E+1 , 3.67681104676958786532390848303135661E+1 , -1.58467700133578032514837230255466989E+1 , 4.41873602373768882185576611252393568E+0 ); Corrector_33_17 : constant Integration_Rule := ( 4.98168398855966025659830340469982468E-3 , -4.51613208728487145714279319138577943E-2 , 1.62172454961820758387144902609866889E-1 , -2.66736718543866567001890246179627645E-1 , 1.17456847072785594212726095808335063E-1 , 1.96866047179146830607213954647420838E-1 , -1.36406446406406306686104779385869613E-1 , -2.10316570120453320678394972110799891E-1 , 7.08775822889284787661100350119805011E-2 , 2.42273511266352912579478510626232678E-1 , 6.07880076103313559217517180111815585E-2 , -2.08884152342191241654946666209678123E-1 , -2.06927786051030923340239805288218292E-1 , 6.27988202459660113353878599356576194E-2 , 2.64368799640054028698998748639507920E-1 , 1.46893121647767128072743038831631258E-1 , -1.58366061762764557700156430430808771E-1 , -2.87895985515915602425491040068879095E-1 , -6.97454945893382033173477264815729488E-2 , 2.53738018963797141239773267604182993E-1 , 2.80867798494825232899917918565546520E-1 , -6.06446297592698498469263002734874671E-2 , -3.58323214027075377289296944856532071E-1 , -1.78281079905509944614996373606226778E-1 , 3.01776031852680498634277131438819591E-1 , 3.68005656150613531276021055250876534E-1 , -2.15472206527322468891573729855813413E-1 , -5.07830439816322016584924426165303395E-1 , 2.84771043627340798318221042098526303E-1 , 5.99446533852551009537456116171727083E-1 , -1.00303000540072804419740748556957105E+0 , 1.20147256716041481639865238776711029E+0 ); Final_Step_Corrector_33_17 : constant Real := 2.94467585637107351658652771972942886E-1; Predictor_31_17 : constant Integration_Rule := ( 0.0, -1.66288025996788291979014146692279247E-1 , 1.61314625598600037148364551586909605E+0 , -6.34652284483809191615748750922343187E+0 , 1.20925290950580058969215358176485194E+1 , -8.55543001730046005814737604555588414E+0 , -6.03856653603814841772670915680964009E+0 , 9.87411753435123356567413853432060800E+0 , 5.84792178429449472740424201798429506E+0 , -8.79080704693799352277751159942444752E+0 , -8.68433491492276051348785151885634521E+0 , 5.23249514341292630582386320899518599E+0 , 1.15501269956505581429385972255865776E+1 , 1.19015803599446214851405436363081260E+0 , -1.12735863726613656709402177491395534E+1 , -8.58724535293452427603673411259105530E+0 , 6.11779894831184736325921309026516388E+0 , 1.33143757032492108804679352846582872E+1 , 2.54498194351809454946350642124060281E+0 , -1.26899547687530867831866333263973675E+1 , -1.10392955600528269217184624438165837E+1 , 7.22114406303264771332361646862478847E+0 , 1.64284437998856731324743466498097621E+1 , -5.67080726395450006591274670119935468E-2 , -1.90090554969964743313479857481245026E+1 , -5.16273643185844088179660001589396301E+0 , 2.25693367707791379806394135476958962E+1 , 3.23942573862421619313560030459267391E+0 , -3.16177593803619854016308619241162746E+1 , 3.01300772494106219311088419792550374E+1 , -1.41999300670040827526500215273680735E+1 , 4.25214182773744383761004386084408864E+0 ); Corrector_33_extrap_to_18 : constant Integration_Rule := ( 4.64957172265568290617642035306327849E-3 , -5.32364345477780197326227382703065444E-2 , 2.58904041696766065932598884556662776E-1 , -6.72055793630148256966630050895269478E-1 , 9.15794996938466947765310910581055406E-1 , -3.86620357119493628669435032828971106E-1 , -5.29883785715189114108400207057360403E-1 , 4.61979036844325805108905000116698707E-1 , 4.56013862422632895360734280356379472E-1 , -3.59931859280603516471244037106034340E-1 , -5.22220187225208102066130902592553281E-1 , 1.53874467374816594859432240887279253E-1 , 5.76875866062408347780792620531227060E-1 , 1.37956101295865753817956167030461936E-1 , -5.04828211846707284644976890397154485E-1 , -4.35382776657718965561179636154178742E-1 , 2.60044938908876237049241916677437476E-1 , 6.18922127068426163141800392336135070E-1 , 1.04569667951157313542505041254343853E-1 , -6.09174833550661787094532384167567230E-1 , -4.73809758741684910775201463003244463E-1 , 4.24807949760191321053725822758113827E-1 , 7.60794586900441190078935262601197249E-1 , -1.70176212754445615018762081075796958E-1 , -9.85612736737263156756894612628934325E-1 , -7.10483049990096277149603714051640309E-4 , 1.30351505862644156114775006541164752E+0 , -2.58013361253619469261814185766801641E-1 , -1.84206431797194761511067211764574917E+0 , 2.56815524822308907107299393885690785E+0 , -1.88282334284095169147611053155693178E+0 , 1.40485051786555008449720031230200151E+0 ); Final_Step_Corrector_33_extrap_to_18 : constant Real := 2.74836413261300194882473461828327737E-1; Corrector_33_18 : constant Integration_Rule := ( -4.29063799602363300332554290338226295E-3 , 4.38930332480966809796959379076409981E-2 , -1.84407586326769458272582523016445115E-1 , 3.86018410068741543924126535404563539E-1 , -3.39672522737244306236877595500955353E-1 , -1.15641698427106085154098431312500252E-1 , 3.67714580948230418726334597592131207E-1 , 8.51130013530862502298476133473910856E-2 , -3.54666284501439138817890595269239766E-1 , -1.81416311108832538094079171518532074E-1 , 2.88833826526463644786676422021725394E-1 , 3.22344332863848596675379797234396480E-1 , -1.21000123850099483378649506353159374E-1 , -4.05936344466723412585600990426609324E-1 , -1.33568166316278517562718545082911589E-1 , 3.36386586562306821405499326466245392E-1 , 3.72313509686552044866666445265398842E-1 , -9.84025206013759090927347524342649613E-2 , -4.67682460545670749579065020203992459E-1 , -2.14997145748892282681215582758083950E-1 , 3.66795460695756672861508217500605439E-1 , 4.70583855446769988483400163170587136E-1 , -1.30277395110943088424372240845988236E-1 , -6.01970902280695395288554055750991530E-1 , -1.23767834937687118949723498842400676E-1 , 6.63435227624153102184263640709067511E-1 , 2.88648820827314256520865647122187408E-1 , -8.20338185422574932346236812125224486E-1 , -1.72358326182689102131382649210764114E-1 , 1.25220166246515912046347289775591826E+0 , -1.34961004668931826085713491119588305E+0 , 1.29052692128136021194977625758860908E+0 ); Final_Step_Corrector_33_18 : constant Real := 2.85195263652524058398728925664860798E-1; Predictor_Rule : Integration_Rule renames Predictor_31_17; --Predictor_Rule : Integration_Rule renames Predictor_32_extrap_to_17; Corrector_Rule : Integration_Rule renames Corrector_33_17; --Corrector_Rule : Integration_Rule renames Corrector_33_extrap_to_18; Final_Step_Corrector : Real renames Final_Step_Corrector_33_17; --Final_Step_Corrector : Real renames Final_Step_Corrector_33_extrap_to_18; end pc_1_coeff_17;