c----------------------------------------------------------------------- c c c BRUSS 1D problem c ODE of dimension 1000 c c c----------------------------------------------------------------------- SUBROUTINE PROB(PROBLM,NEQN,NDISC,T,IJAC,MLJAC,MUJAC) CHARACTER*(*) PROBLM INTEGER NEQN,IJAC,MLJAC,MUJAC,NDISC DOUBLE PRECISION T(0:*) PROBLM ='bruss' NEQN = 1000 NDISC = 0 T(0) = 0D0 T(1) = 10D0 IJAC = 1 MLJAC = 2 MUJAC = 2 RETURN END SUBROUTINE INIT(NEQN,Y) INTEGER NEQN DOUBLE PRECISION Y(NEQN) INTEGER N DOUBLE PRECISION ANP1,XI,PI PARAMETER (PI=3.14159265358979324D0) N=500 DO 1 I=1,N ANP1=DBLE(N+1) XI=DBLE(I)/ANP1 Y(2*I)=3.D0 1 Y(2*I-1)=1.D0+0.5D0*DSIN(2.D0*PI*XI) RETURN END SUBROUTINE FEVAL(NNN,X,Y,F,IERR,RPAR,IPAR) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION Y(NNN),F(NNN) INTEGER N,N2 DOUBLE PRECISION USDELQ,GAMMA,GAMMA2 N=500 N2=2*N USDELQ=(DBLE(N+1))**2 GAMMA=0.02D0*USDELQ GAMMA2=2.D0*GAMMA I=1 IU=2*I-1 IV=2*I UI=Y(IU) VI=Y(IV) UIM=1.D0 VIM=3.D0 UIP=Y(IU+2) VIP=Y(IV+2) PROD=UI*UI*VI F(IU)=1.D0+PROD-4.D0*UI+GAMMA*(UIM-2.D0*UI+UIP) F(IV)=3.D0*UI-PROD+GAMMA*(VIM-2.D0*VI+VIP) DO 5 I=2,N-1 IU=2*I-1 IV=2*I UI=Y(IU) VI=Y(IV) UIM=Y(IU-2) VIM=Y(IV-2) UIP=Y(IU+2) VIP=Y(IV+2) PROD=UI*UI*VI F(IU)=1.D0+PROD-4.D0*UI+GAMMA*(UIM-2.D0*UI+UIP) F(IV)=3.D0*UI-PROD+GAMMA*(VIM-2.D0*VI+VIP) 5 CONTINUE I=N IU=2*I-1 IV=2*I UI=Y(IU) VI=Y(IV) UIM=Y(IU-2) VIM=Y(IV-2) UIP=1.D0 VIP=3.D0 PROD=UI*UI*VI F(IU)=1.D0+PROD-4.D0*UI+GAMMA*(UIM-2.D0*UI+UIP) F(IV)=3.D0*UI-PROD+GAMMA*(VIM-2.D0*VI+VIP) RETURN END C SUBROUTINE JEVAL(NN,X,Y,DFY,LDFY,IERR,RPAR,IPAR) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION Y(NN),DFY(LDFY,NN) INTEGER N,N2 DOUBLE PRECISION USDELQ,GAMMA,GAMMA2 N=500 N2=2*N USDELQ=(DBLE(N+1))**2 GAMMA=0.02D0*USDELQ GAMMA2=2.D0*GAMMA DO 1 I=1,N IU=2*I-1 IV=2*I UI=Y(IU) VI=Y(IV) UIVI=UI*VI UI2=UI*UI DFY(3,IU)=2.D0*UIVI-4.D0-GAMMA2 DFY(2,IV)=UI2 DFY(4,IU)=3.D0-2.D0*UIVI DFY(3,IV)=-UI2-GAMMA2 DFY(2,IU)=0.D0 DFY(4,IV)=0.D0 1 CONTINUE DO 2 I=1,N2-2 DFY(1,I+2)=GAMMA DFY(5,I)=GAMMA 2 CONTINUE RETURN END SUBROUTINE SOLUT(NEQN,TRUE) INTEGER NEQN,I DOUBLE PRECISION TRUE(NEQN) DO I=1,NEQN TRUE(I)=0D0 END DO true(1)=0.9949197002317599D0 true(8)=3.0213845767604077D0 true(15)=0.9594350193986054D0 true(22)=3.0585989778165419D0 true(29)=0.9243010095428502D0 true(36)=3.0952478919989637D0 true(43)=0.8897959106772672D0 true(50)=3.1310118289054731D0 true(57)=0.8561653620284367D0 true(64)=3.1656101198770159D0 true(71)=0.8236197147449046D0 true(78)=3.1988043370624344D0 true(85)=0.7923328094811884D0 true(92)=3.2303999530641514D0 true(99)=0.7624421042573115D0 true(106)=3.2602463873623941D0 true(113)=0.7340499750795348D0 true(120)=3.2882356529108807D0 true(127)=0.7072259700779899D0 true(134)=3.3142998590079271D0 true(141)=0.6820097782458483D0 true(148)=3.3384078449410937D0 true(155)=0.6584146743834650D0 true(162)=3.3605612157873943D0 true(169)=0.6364312187752559D0 true(176)=3.3807900316323134D0 true(183)=0.6160310186921587D0 true(190)=3.3991483695914764D0 true(197)=0.5971703941198909D0 true(204)=3.4157099395342736D0 true(211)=0.5797938277687891D0 true(218)=3.4305638938070224D0 true(225)=0.5638371159206763D0 true(232)=3.4438109320334580D0 true(239)=0.5492301695479158D0 true(246)=3.4555597666485198D0 true(253)=0.5358994429426996D0 true(260)=3.4659239846027008D0 true(267)=0.5237699892215797D0 true(274)=3.4750193162238476D0 true(281)=0.5127671585747183D0 true(288)=3.4829613034792271D0 true(295)=0.5028179665048467D0 true(302)=3.4898633463634923D0 true(309)=0.4938521662914935D0 true(316)=3.4958350971335204D0 true(323)=0.4858030633656755D0 true(330)=3.5009811668111510D0 true(337)=0.4786081100251151D0 TRUE(344)=3.5054001059792705D0 true(351)=0.4722093177200750D0 true(358)=3.5091836216744015D0 true(365)=0.4665535216425440D0 true(372)=3.5124159935026285D0 true(379)=0.4615925290790646D0 true(386)=3.5151736544621075D0 true(393)=0.4572831793403656D0 true(400)=3.5175249049438184D0 true(407)=0.4535873393501199D0 true(414)=3.5195297317024448D0 true(421)=0.4504718553589467D0 true(428)=3.5212397070273984D0 true(435)=0.4479084778719241D0 true(442)=3.5226979467564341D0 true(449)=0.4458737738041973D0 true(456)=3.5239391090719634D0 true(463)=0.4443490371324889D0 true(470)=3.5249894191569453D0 true(477)=0.4433202068820853D0 true(484)=3.5258667077466495D0 true(491)=0.4427777991494095D0 true(498)=3.5265804544017270D0 true(505)=0.4427168579654424D0 true(512)=3.5271318289682063D0 true(519)=0.4431369281018266D0 true(526)=3.5275137272135266D0 true(533)=0.4440420513508381D0 true(540)=3.5277107990730161D0 true(547)=0.4454407863109616D0 true(554)=3.5276994703501980D0 true(561)=0.4473462502188303D0 true(568)=3.5274479611304068D0 true(575)=0.4497761798232572D0 true(582)=3.5269163066324394D0 true(589)=0.4527530066369863D0 true(596)=3.5260563887768472D0 true(603)=0.4563039400688689D0 true(610)=3.5248119894251024D0 true(617)=0.4604610498812091D0 true(624)=3.5231188790654930D0 true(631)=0.4652613370907894D0 true(638)=3.5209049576992761D0 true(645)=0.4707467798082714D0 true(652)=3.5180904678044698D0 true(659)=0.4769643375804777D0 true(666)=3.5145883024867057D0 true(673)=0.4839658945842979D0 true(680)=3.5103044351908528D0 true(687)=0.4918081185812277D0 true(694)=3.5051385005173827D0 true(701)=0.5005522089940899D0 true(708)=3.4989845585737802D0 true(715)=0.5102635039989190D0 true(722)=3.4917320776245013D0 true(729)=0.5210109134090777D0 true(736)=3.4832671712209993D0 true(743)=0.5328661417420937D0 true(750)=3.4734741260299615D0 true(757)=0.5459026646938675D0 true(764)=3.4622372546582585D0 true(771)=0.5601944229089820D0 true(778)=3.4494431032230182D0 true(785)=0.5758142001453760D0 true(792)=3.4349830354873361D0 true(799)=0.5928316594749734D0 true(806)=3.4187562033108012D0 true(813)=0.6113110218368440D0 true(820)=3.4006728962523969D0 true(827)=0.6313083867734524D0 true(834)=3.3806582409098729D0 true(841)=0.6528687160104193D0 true(848)=3.3586561928427350D0 true(855)=0.6760225267555723D0 true(862)=3.3346337311179157D0 true(869)=0.7007823726569721D0 true(876)=3.3085851288057930D0 true(883)=0.7271392249346637D0 true(890)=3.2805361342349380D0 true(897)=0.7550589020044152D0 true(904)=3.2505478606008622D0 true(911)=0.7844787296769868D0 true(918)=3.2187201496972175D0 true(925)=0.8153046416214843D0 true(932)=3.1851941538893653D0 true(939)=0.8474089465959840D0 true(946)=3.1501538739882800D0 true(953)=0.8806289904192589D0 true(960)=3.1138264039027113D0 true(967)=0.9147669230929857D0 true(974)=3.0764806689389470D0 true(981)=0.9495907429372025D0 true(988)=3.0384245041548366D0 true(995)=0.9848367306701233D0 RETURN END