/[MITgcm]/MITgcm_contrib/ecco_utils/lbfgs_jpl_version/lsopt.2/liblsopt_ecco.a
ViewVC logotype

Annotation of /MITgcm_contrib/ecco_utils/lbfgs_jpl_version/lsopt.2/liblsopt_ecco.a

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download) (as text)
Wed Apr 3 23:36:07 2013 UTC (12 years, 4 months ago) by heimbach
Branch: MAIN
CVS Tags: HEAD
File MIME type: application/octet-stream
Add L-BFGS code adapted to ECCO Production by JPL

1 heimbach 1.1 !<arch>
2     / 1361899272 0 0 0 1106 `
3     5]]]]]]]|.JJJJJJJ(mpi_parm_ph_opti_lsopt_top_mpi_sgi_private_status_mpi_sgi_private_unweighted_mpi_sgi_private_mpi_sgi_private_inplace_mpi_sgi_private_char_mpi_parm_lsupdxx_mpi_sgi_private_status_mpi_sgi_private_unweighted_mpi_sgi_private_mpi_sgi_private_inplace_mpi_sgi_private_char_mpi_parm_lsline_mpi_sgi_private_status_mpi_sgi_private_unweighted_mpi_sgi_private_mpi_sgi_private_inplace_mpi_sgi_private_char_mpi_parm_hessupd_mpi_sgi_private_status_mpi_sgi_private_unweighted_mpi_sgi_private_mpi_sgi_private_inplace_mpi_sgi_private_char_cubic_dgscale_mpi_sgi_private_status_mpi_sgi_private_unweighted_mpi_sgi_private_mpi_sgi_private_inplace_mpi_sgi_private_char_mpi_parm_mpi_parm_xxstore_instore_mpi_parm_xxstore_dostore_xxstore_outstore_lswri_distwork_pddot_mpi_sgi_private_status_mpi_sgi_private_mpi_sgi_private_inplace_mpi_sgi_private_char_lsupdxx_1_lsopt_top.o/ 1361899271 10100 26113 100644 61216 `
4     ELF> @@   #(L|000`0%%% %0%+X%<%M%^%o~@,#"'h,8I,ZDkt |&&`x,)P"9IY+i.y. .d' (,D<TLl\x)&($,,FX%V%f%v<\|! * H%  p'0 @P `*p  ), .8  &D H!P \| 0%?TPha|r@' )<&%5P`ahvpx  3 H ] r       
5     
6     /
7     D
8      Y
9     (n
10     0
11     8
12     @
13     H
14     P
15     X
16     ` h p+ x@ U j         # 4 E Z o          (, 0A 8V @k H P X ` h p x (=Rg|-BWl $,4<D)L>TS\hd}lt|%:Ody ! 6K`$u,4<DLT\dl2tG|\q.CXm (*,?4T<iD~LT\`hptx&;Pez "7Lav (0 8@3HHP]Xr`hpx/DY 
17       .8A0Ojl'<n+DUk6H76H76H76H$ 76H 76H 76H 76H$ 76H$ 76H$ 76H$ 76H$ 76H$76H$76H$76H 76H 76H 76H76H76H76H76H$76H$76H$76H$76H$76H76$
18     $
19      8
20     976H76$
21     $
22      8
23     976H$ 76H$ 76H 76H76H76H76H76$H76$H76$H76$H76$H76$H76$H76$H76$H76$H76$H76$H76$H76H$ 7UHHp
24     IL}IL}hH _BLeIHhHHM@H]HH3AAD9LuHEHEH?LmLLD3EUHEHEARpUHEUUEUD}E>
25     HE(D(EIIHH H3LXIHDžHDžX/L`AIILpIHH H3MKHDžLhHDžh/AIILIHH H3MK0HDžLxHDžx/AIILIHH H3MKHHDžLHDž$AHHHH@3Dž@XQIILIHH H3MK`HDžLHDž$AHMIHH3HHLLHAIILIHH H3MKxHDžLHDž$AHM IHH3HPLLPAIILIHH H3MHDžLHDž$AHMIHH3HXLLXAIILIHH H3MHDžLHDž$AHM0IHH3H`DD`AIILIHH H3MHDžLHDž$AHM8IHH3HhDDhAIILIHH H3MHDžLHDž$AHHHHp3DpIILIHH H3MHDžLHDž$AHHHHx3DxIIHH H3LIMHDžHDž$LAIHHHU3C vMAE>HE0D8E>HE8D8ED=HEff/EIIHH H3LhHMhHDžHDžhHpAHMIHH3HHHAHEhA0HE f/EIIHH H3LHMHDžHDžHAHM IHH3H`HH`AHEhAE/HE Hf/EIIHH H3LxHMHDžHDžxHAHM IHH3HHHAHEhAh.IHH HL3IHDžHDžLAIHH HL3IHDžHDž"L AHHHH03Dž0HHHH83Dž8HLUARIL]ASLmAUL}AWHEP3HURHuHUHMLELMAH0HD8EIHH HL3IHDžHDž!LAҋMIHH3H AЋMIHH3H((AHHMhHEHB9HE(D(E~nIIHH H3LPHMHDžHDžPHXAHEhA+}HE(D(E~nIIHH H3LHMHDžHDž+HAHEhA*}g9HHEHBEEIIHH H3LIMHDžHDžLAIHH HL3IHDžHDžLAHHHH3DžXQIHH HL3IHDžHDžLAHhIHH3HLLAI $IHH3HHADžH}HhHLHMH҉UIHH HL3IHDžHDžLAHHHH3DžXQHIHH3HLLAIHH HL3IHDžHDž%L AHhIHH3HLLAHhIHH3HLALAIHH HL(3IHDžHDž(%L0AI $IHH3HHAIL$IHH3HHAЋ3HcHX5HUXHt C5jZHyH;15փ+3HcHvH}XI?LHH;rH(HUX))D)D )D0HH;rH;sHUXH?H HH;r􃽐u]IHH HL83IHDžHDž8L@AHIHH3HhAIHLHH3AIHHH3HuXAH8u]IHH HLH3IHDžHDžHLPAHHLH3(HYHIHHHuII3LL$AHQEHE҉IHH HLX3IHDžHDžXL`AHMIHH3HHAHf/EvHEh?HHHHQuIHH HL3IHDžHDž+LAHIHH3HhLALhAHU@E􉅘;HE(D(EIIHH H3L`HMHDžHDž`!HhAӋHHH3H``HEhG!E6;HE(D(EIIHH H3LHM(HDžHDžHAӋHHH3HXXHEhe E;HE(D(EIIHH H3LhHM@HDžHDžhHpAӋHHH3HHEhEIHH HL3IHDžHDž*LAIHH HE33HDžAHIHH3HhAIHLHH3AHHHHUHHQ>%IHH HL3IHDžHDž-LAHIHH3HxLLxAIHH HL3IHDžHDž-LAHhIHH3HLLAHhIHH3HLALAIHH HL3IHDžHDž-LAI $IHH3HHAIL$IHH3HHAE.HE0DžpsDDpLH8IHH HL3IHDžHDž&LAIHH HL3IHDžHDžLAHHHH3DHcH~!H 3*HHLH}PHHIUHPD0EبHQ,uXhATuHuHHEPHUhLUARLM8L]ASHLAWHLEAUHPH8xIHH HL3IHDžHDžLAIHHH3HHDžHAHMhIHH3H DD AIHH HL3IHDžHDžLAIHHH3HHDžHAD}HHH3H0D0IHH HL03IHDžHDž0L8AIHHH@3HHDž@HHAЋMIHH3HHHAD}A}H8]IHH HL3IHDžHDžLAIHHH3HHDžHAHHHH(3D(IHH HL 3IHDžHDž L(AHhIHH3H8LL8AHhIHH3H@LAL@AIHH HLP3IHDžHDžPLXAI $IHH3HPHPAIL$IHH3HXHXAIHHH3HhAIHLHH3AHHLH3(HYHIHHHII3LL$AHQHHH3Hh(LYHARIHHH0II3RAHHHH3HuH(LYHARIHHH8II3RAHH8QHE(8IIHH H3LIMHDžHDž(LAIHHH3HHDž%HAIIHH H3L`HDžMD`AHMIHH3HhHhAЋMIHH3HppAIMIHH3HxHxAHIHH3HHAQ0HHHH3Q8YEHHH3HHEh u Dp3 u Dp" u
26     HEh3HcHHEXHt jXHzH;3ƃHcHv$ELEXLMH(AY A HH;rH}HEfLItzH}XLEHHt&HA ATA\ Ad0fALfATfA\(fAd8fYfYfYfY) )T)\ )d0HH;rNH}XLEHHA( A(TA(\ A(d0fYfYfYfY) )T)\ )d0HH;rH;s"EHUXH}H(Y  HH;rHHUPHt njZHxH;\փ+3HcHvH}PA\HH;rIHtuHUPHt&AALAT A\0fADfALfAT(fA\8f\f\Lf\T f\\0))L)T )\0HH;rNHUPA(A(LA(T A(\0f\f\Lf\T f\\0))L)T )\0HH;rH;sHEPA\HH;rHIHI3HuPHMXAHHIH(HHII3L(L$AHff/HE@҉DUҍBHE:IHH HL83IHDžHDž8L@AIHHHH3HHDžH'HPAIHHHX3HHDžXH`AHHHHX3DXыMIHH3H``AЋIHH3HhhA;~+EEE쉅;jH83IHH HL3IHDžHDž#LAIHHH3HHDžHAHHHH 3D ыIHH3H((AЋIHH3H00AЋ;~ +EEIIHHH3HUXA^QAIHHH3HUPAH8IHH HLp3IHDžHDžp+LxAHHHH@3D@ыMIHH3HHHAD}HHH3HPDPD}IHHH3GD?HuPDADEIHH3HHuXGLDAIHI3HuPHUXHMHA^MHU HHEf/'AD;DpHEhpHE E}HĐLPLLuL]LHUHH}L$HEL\$LELl$ILt$L|$ Ld$(HT$0HHhHuXHL$8HMHt$@H|$HHLMHD$P3LD$XLELL$`HuhLM@AHpH8IHH HLx3IHDžHDžxLAHMXIHH3HLLAHMXIHH3HLALAHH3HuX҃}uUEtEILUARHL]AS3LmAUHLuAVHM@HULELMAH HE(8H8 IHH HE33HDžAIILIHH H3LHDžMHDž$AҋpIHH3HppAIMHH H3LIHDžHDž$LAӋMIHH3HAIMHH H3LIHDžHDž$LAHM IHH3HLLAHHH3Hh(LYHARIH@HH0II3R@AHHHLH3(HYHSIHHHH8II3RHAHHE(D(A
27     *H8HHH HE33HDžHIHHHH H3LHDžLHDžAHIHH3HLLAILHH H3LIHDžHDžLAQ0HHHH3ѾL(HHH H3LIHDžHDžLQ8HHHH3HD8ET HEhD ED A HHH HE33HDžHIHHHH H3LxHDžL@HDžx AECA 
28     McHB$LHHH H3LhIHDžHDžhLpHHHH3DHHHH(3HHDž()H08 L\HHH H3LXIHDžHDžXL`HHHH3DHHHH3HHDž$H aL,HHH H3LHIHDžHDžHLPHHHH3DHHHH3HHDžHLHHH H3L8IHDžHDž8L@HHHH3DHHHH3HHDž&HLHHH H3L(IHDžHDž(L0HHHH3DHHHH3HHDžHLHHH H3LIHDžHDžL HHHH3DHHHH3HHDž)HLlHHH H3LIHDžHDžLHHHH3DHHHH3HHDž(H.L<HHH H3LIHDžHDžLHHHH3DHHHH3HHDž-HWL HHH H3LIHDžHDžLHHHH3DHHHH3HHDž%HLHHH H3LIHDžHDžLHHHH3DHHHH3HHDž HLHHH H3LIHDžHDžLHHHH3DHHHH3HHDžHL|HHH H3LIHDžHDžLHHHH3DHHHHx3HHDžxHHHH HE33HDžEHHH HE33HDžIIHH H3LHMHDžHDž$HAHHHH3DHHH HE33HDžH]LeLmLuL}H]A
29     IIHH H3LhHMPHDžHDžhHpAHHHH3DHEhAEIIHH H3LHM8HDžHDžHAHHHH3DHEhA0EIIHH H3LHM HDžHDžHAHHHH3DHEhAwHE(D(E~nIIHH H3LHMHDžHDž&HAHEhA3"HuP3I H HH;r3L3HEhDp HHEhDpD:IHH HL3IHDžHDžLAHMcM~+HMPH( HI;T
30     (_rMHIHHH (3AIHH HL3IHDžHDžLAHHHH3DžHLLHHH H3LpIHDžHDžpLxHHHH3DHHHH3HHDžHHĐLPLUL}HMHHH}XHEL,$LELT$LML\$IL|$HT$ HLd$(HL$0HMHhHt$8H|$@HHD$H3LD$PLELULL$XHuhLM@LT$`AHpEHHH3Hh(LYHARIHHH0II3RAHH8MHE(8IIHH H3L8IMXHDžHDž8(L@AIHHHH3HHDžH%HPAIIHH H3LHDžMdDžAHMIHH3HHAЋMIHH3HAHIHH3H LL AHMIHH3H(H(AQ0HHHH030HHHH83HDž8HE04HEh
31     HE(D(EIIHH H3LHMHDžHDžHAӋHHH3HHEhHt&H#B ;8888 8080808 8 8 8 8 88080808 8 8 888888808008008 8 8 8 88 8008 080080088808088 0 000088 88 888888 80080088 0 000088   888   8   808 8008 8 808080808 88 88 88 88 88 88 88 88 88 88 88 88 88 8?? _B#B ;?================================================== O P T I M I Z A T I O N ================================================== number of control variables....... precision on x.................... precision on g.................... expected optimal function value... maximal number of iterations...... maximal number of simulations..... information level................. number of updates................. size of used memory...............bnc: cold start before instore is bnc: cold start after instore is ERROR : m is set too small in instore ERROR : uncompatible floating point formatpathei-lsopt: warm start; read via dostorepathei-lsopt: warm; first dostore read: ff = bnc-lsopt: xx = bnc-lsopt: gg = ERROR : inconsistent nupdate = pathei: nach simul: nn, ff = pathei: nach simul: xx(1), xx(2) = pathei: nach simul: gg(1), gg(2) = pathei-lsopt: cold; first call simul: ff = Itn Step Nfun Objective Norm G Norm X Norm (X(k-1)-X(k))pathei-lsopt: ++++++++++++++++++++++++ Itn Step Nfun Objective Norm G Norm X Norm (X(k-1)-X(k))pathei-lsopt: pointers updated for first pointer update after cold start; pathei-lsopt: dostore at iiter, jmin, jmax number of iterations.............. number of simulations............. relative precision on g........... after optimization ifail.......... optimization stopped because : convergence achieved within precision cold start, no optimization done the function could not be improved maximal number of simulations reached maximal number of iterations reached the search direction is not a descent one the initial gradient is too small warm start file is corruptedpathei: vor instore ERROR : epsg = ERROR : epsg = ERROR : epsx = ERROR : nfunc = ERROR : itmax = ERROR : n = ERROR : reading restart file ERROR : inconsistent jmax = ERROR : inconsistent jmin = ERROR : inconsistent jmin = pathei-lsopt: cold startpathei-lsopt vor simulpathei-lsopt xx(1), gg(1) pathei: vor dostore pathei: vor gnorm0 pathei: gnorm0 = pathei-lsopt: entering iiter =pathei-lsopt: back from optline; ifail = bnc-lsopt: sflag = bnc-lsopt: tflag = pathei-lsopt: dostore 1,2 at iiter bnc-lsopt: dostore xxbnc-lsopt: dostore gg iiter, jmin, jmax = pathei-lsopt: iiter, jmin, jmax = bnc: max value of abs(gold) = pathei-lsopt: ys < 0; ifail = bnc-lsopt: write control cost function............... norm of x................... norm of g...................ifail = ifail = ifail = optline parameters wrongifail = ifail = the linesearch failedifail = ifail = ifail = ifail = ifail = ifail = an input argument is wrongifail = optimal solution foundifail = user request during simulx 0O   
32      D
33    
34     0O lsopt_top.f
35     lsopt_top_|ÄyÇs͍ nt
36     vsԉrfjj\Kmm%m^\\Y\
37     \V \^^! QYG`@Ew2  
38     D^]cb m"$@
39      QmMɽ^'^ϼlsopt_top.f.strtab.symtab.data.bss.textmpi_parm_ph_opti_lsopt_top_.rodata.L_2il0floatpacket.23for_write_seq_fmt.rodata.str1.32__STRLITPACK_150__STRLITPACK_148__STRLITPACK_146__STRLITPACK_144for_write_seq_fmt_xmit__STRLITPACK_142__STRLITPACK_140__STRLITPACK_138__STRLITPACK_136__STRLITPACK_134__STRLITPACK_132__STRLITPACK_130__STRLITPACK_128.rodata.str1.4__STRLITPACK_120__STRLITPACK_118__STRLITPACK_116for_write_seq_lis__STRLITPACK_115__STRLITPACK_114for_write_seq_lis_xmitinstore___STRLITPACK_113__STRLITPACK_111__STRLITPACK_109__STRLITPACK_105__STRLITPACK_104__STRLITPACK_103__STRLITPACK_102__STRLITPACK_101__STRLITPACK_100.L_2il0floatpacket.19__STRLITPACK_99dostore___STRLITPACK_98dnrm2_mpi_allreduce___STRLITPACK_97.L_2il0floatpacket.20__STRLITPACK_96__STRLITPACK_92__STRLITPACK_88__STRLITPACK_86__STRLITPACK_85__STRLITPACK_84__STRLITPACK_83__STRLITPACK_82__STRLITPACK_78__STRLITPACK_77_intel_fast_memcpy__STRLITPACK_76__STRLITPACK_75__STRLITPACK_74__STRLITPACK_73__STRLITPACK_72__STRLITPACK_71__STRLITPACK_70__STRLITPACK_69__STRLITPACK_68__STRLITPACK_67mpi_reduce___STRLITPACK_65__STRLITPACK_64ddot___STRLITPACK_61__STRLITPACK_60__STRLITPACK_59__STRLITPACK_58__STRLITPACK_57dscal___STRLITPACK_56dgscale_lsupdxx___STRLITPACK_55optim_write_control_outstore___STRLITPACK_53__STRLITPACK_51__STRLITPACK_49__STRLITPACK_47__STRLITPACK_45__STRLITPACK_43__STRLITPACK_41__STRLITPACK_3__STRLITPACK_2__STRLITPACK_6__STRLITPACK_5__STRLITPACK_9__STRLITPACK_8__STRLITPACK_12__STRLITPACK_11__STRLITPACK_15__STRLITPACK_14__STRLITPACK_18__STRLITPACK_17__STRLITPACK_21__STRLITPACK_20__STRLITPACK_24__STRLITPACK_23__STRLITPACK_27__STRLITPACK_26__STRLITPACK_30__STRLITPACK_29__STRLITPACK_33__STRLITPACK_32__STRLITPACK_36__STRLITPACK_35__STRLITPACK_0__STRLITPACK_122__STRLITPACK_124__STRLITPACK_126__STRLITPACK_107__STRLITPACK_63.L_2il0floatpacket.21.L_2il0floatpacket.24.L_2il0floatpacket.22__STRLITPACK_62__STRLITPACK_39__STRLITPACK_38__STRLITPACK_80__STRLITPACK_79__STRLITPACK_90lsopt_top_$format_pack.0.1__NLITPACK_6.0.1__STRLITPACK_156.0.1__STRLITPACK_157.0.1__STRLITPACK_158.0.1__STRLITPACK_159.0.1__STRLITPACK_160.0.1__STRLITPACK_161.0.1__STRLITPACK_162.0.1__STRLITPACK_163.0.1__STRLITPACK_164.0.1__STRLITPACK_165.0.1__STRLITPACK_166.0.1__STRLITPACK_167.0.1__STRLITPACK_168.0.1__STRLITPACK_169.0.1__STRLITPACK_170.0.1__STRLITPACK_171.0.1__STRLITPACK_172.0.1__STRLITPACK_173.0.1__STRLITPACK_174.0.1__STRLITPACK_175.0.1__STRLITPACK_176.0.1__STRLITPACK_189.0.1__STRLITPACK_187.0.1__STRLITPACK_188.0.1__STRLITPACK_185.0.1__STRLITPACK_186.0.1__STRLITPACK_183.0.1__STRLITPACK_184.0.1__STRLITPACK_181.0.1__STRLITPACK_182.0.1__STRLITPACK_179.0.1__STRLITPACK_180.0.1__STRLITPACK_177.0.1__STRLITPACK_178.0.1__STRLITPACK_190.0.1__STRLITPACK_191.0.1__STRLITPACK_192.0.1__STRLITPACK_193.0.1__STRLITPACK_194.0.1__STRLITPACK_195.0.1__STRLITPACK_198.0.1__STRLITPACK_197.0.1__STRLITPACK_196.0.1__STRLITPACK_230.0.1__STRLITPACK_231.0.1__NLITPACK_1.0.1__NLITPACK_5.0.1__NLITPACK_2.0.1__STRLITPACK_232.0.1__STRLITPACK_233.0.1__STRLITPACK_234.0.1__STRLITPACK_235.0.1__STRLITPACK_236.0.1__STRLITPACK_237.0.1__STRLITPACK_238.0.1__STRLITPACK_239.0.1__STRLITPACK_228.0.1__STRLITPACK_229.0.1__STRLITPACK_226.0.1__STRLITPACK_227.0.1__STRLITPACK_224.0.1__STRLITPACK_225.0.1__STRLITPACK_222.0.1__STRLITPACK_223.0.1__STRLITPACK_199.0.1__STRLITPACK_200.0.1__STRLITPACK_201.0.1__STRLITPACK_202.0.1__STRLITPACK_203.0.1__STRLITPACK_204.0.1__STRLITPACK_205.0.1__STRLITPACK_206.0.1__STRLITPACK_207.0.1__STRLITPACK_208.0.1__STRLITPACK_209.0.1__STRLITPACK_210.0.1__STRLITPACK_211.0.1__STRLITPACK_212.0.1__STRLITPACK_213.0.1__STRLITPACK_214.0.1__NLITPACK_0.0.1__NLITPACK_3.0.1__STRLITPACK_215.0.1__NLITPACK_4.0.1__STRLITPACK_216.0.1__STRLITPACK_217.0.1__STRLITPACK_218.0.1__STRLITPACK_219.0.1__STRLITPACK_240.0.1__STRLITPACK_241.0.1__STRLITPACK_242.0.1__STRLITPACK_243.0.1__STRLITPACK_244.0.1__STRLITPACK_245.0.1__STRLITPACK_246.0.1__STRLITPACK_247.0.1__STRLITPACK_248.0.1__STRLITPACK_249.0.1__STRLITPACK_250.0.1__STRLITPACK_251.0.1__STRLITPACK_252.0.1__STRLITPACK_253.0.1__STRLITPACK_254.0.1__STRLITPACK_255.0.1__STRLITPACK_256.0.1__STRLITPACK_257.0.1__STRLITPACK_258.0.1__STRLITPACK_259.0.1__STRLITPACK_260.0.1__STRLITPACK_261.0.1__STRLITPACK_262.0.1__STRLITPACK_263.0.1__STRLITPACK_264.0.1__STRLITPACK_265.0.1__STRLITPACK_266.0.1__STRLITPACK_267.0.1__STRLITPACK_268.0.1__STRLITPACK_269.0.1__STRLITPACK_270.0.1__STRLITPACK_271.0.1__STRLITPACK_272.0.1__STRLITPACK_273.0.1__STRLITPACK_274.0.1__STRLITPACK_275.0.1__STRLITPACK_276.0.1__STRLITPACK_277.0.1__STRLITPACK_278.0.1__STRLITPACK_289.0.1__STRLITPACK_290.0.1__STRLITPACK_291.0.1__STRLITPACK_292.0.1__STRLITPACK_293.0.1__STRLITPACK_283.0.1__STRLITPACK_284.0.1__STRLITPACK_285.0.1__STRLITPACK_286.0.1__STRLITPACK_287.0.1__STRLITPACK_288.0.1__STRLITPACK_294.0.1__STRLITPACK_295.0.1__STRLITPACK_296.0.1__STRLITPACK_297.0.1__STRLITPACK_279.0.1__STRLITPACK_280.0.1__STRLITPACK_281.0.1__STRLITPACK_282.0.1__STRLITPACK_298.0.1__STRLITPACK_299.0.1__STRLITPACK_300.0.1__STRLITPACK_301.0.1__STRLITPACK_302.0.1__STRLITPACK_303.0.1__STRLITPACK_304.0.1__STRLITPACK_305.0.1__STRLITPACK_306.0.1__STRLITPACK_307.0.1__STRLITPACK_308.0.1__STRLITPACK_309.0.1__STRLITPACK_310.0.1__STRLITPACK_311.0.1__STRLITPACK_312.0.1__STRLITPACK_313.0.1__STRLITPACK_314.0.1__STRLITPACK_357.0.1__STRLITPACK_358.0.1__STRLITPACK_359.0.1__STRLITPACK_360.0.1__STRLITPACK_315.0.1__STRLITPACK_316.0.1__STRLITPACK_353.0.1__STRLITPACK_354.0.1__STRLITPACK_355.0.1__STRLITPACK_350.0.1__STRLITPACK_351.0.1__STRLITPACK_352.0.1__STRLITPACK_347.0.1__STRLITPACK_348.0.1__STRLITPACK_349.0.1__STRLITPACK_344.0.1__STRLITPACK_345.0.1__STRLITPACK_346.0.1__STRLITPACK_341.0.1__STRLITPACK_342.0.1__STRLITPACK_343.0.1__STRLITPACK_338.0.1__STRLITPACK_339.0.1__STRLITPACK_340.0.1__STRLITPACK_335.0.1__STRLITPACK_336.0.1__STRLITPACK_337.0.1__STRLITPACK_332.0.1__STRLITPACK_333.0.1__STRLITPACK_334.0.1__STRLITPACK_329.0.1__STRLITPACK_330.0.1__STRLITPACK_331.0.1__STRLITPACK_326.0.1__STRLITPACK_327.0.1__STRLITPACK_328.0.1__STRLITPACK_323.0.1__STRLITPACK_324.0.1__STRLITPACK_325.0.1__STRLITPACK_320.0.1__STRLITPACK_321.0.1__STRLITPACK_322.0.1__STRLITPACK_317.0.1__STRLITPACK_318.0.1__STRLITPACK_319.0.1__STRLITPACK_356.0.1mpi_sgi_private_status_mpi_sgi_private_unweighted_mpi_sgi_private_mpi_sgi_private_inplace_mpi_sgi_private_char_mpi_null_copy_fn_mpi_null_delete_fn_mpi_dup_fn_mpi_comm_null_copy_fn_mpi_comm_null_delete_fn_mpi_comm_dup_fn_mpi_win_null_copy_fn_mpi_win_null_delete_fn_mpi_win_dup_fn_mpi_conversion_fn_null_.note.GNU-stack.eh_frame.trace.rela.text.rela.rodata.rela.eh_frame.rela.trace JAIL"h5 _i
40     zLp Lx5? PLpM L ?MIpzLM+LKML%M/V`qLML4gMxLM/9LYlM L68I~M@L ( M MW 0   L  *
41     M4
42      p
43     N
44     
45     
46     N
47     x * O; Z Ok  P I N  L OV | O  J  L  m w L   J!+LKX^N`OhN<pO OxOI,NL_!OON$"UO_ON# O*SO]ANat$QQQ I-NM`%RSI.NNa&OJN&9'cJmOwLH(=MGPL()M)0L*M 7NWj+NQQ'I1JVNv,ON -OOYON.O$MOWINT/(NH\[0OdTJJdIwNl1Ot2O%|LNl3O4O N= P 5z O  6 O 
48     !I!N=!P!7z!O!!8!O!!N
49     ""9N"OX""O""N"":#O##L#OV#z#Q###Q###R##$S$*$[$Rh$$$U$$$$R$%*%U;%L%V%r%I%%L%%;&M&$&<C&M&Lm& &M&&M&'M '$7'MA',m'M~'4'M'<**V++S#+4++I+N+l+=
50     ,O,t.,>M,O^,|q,?,O,,O,,O,V-Ii-N-D-@-O-L-A .O.T<.OF.\o.Oy.d..W.
51     /W/1/ID/Nd/w/B/O//O/0O 050QB0l0Qy00X0`1Y11I2N'2:2Ch2Or22O22Z2[L3I_3N33D3L334M4=4Ld4w4E4M44L4 5F95MC5 j5Rw555U5555R6$6/6U@6Q6[66I6N6(6G6L67,L7MV74}7L7<7H7M7D#8L>8LQ8I8M8T8I8N9t9J(9L99Y9x99L99K:M$:@:MQ:d:L:L::M:M:;M(;;;Nj;L;;O;M;;M;<PA<L\<o<Q<M<<M<<R=L3=F=So=M==M==T=L
52     >>UF>MW>s>M>>V>L>>W?M.?J?M[? n?X?L?(?Y?M@0!@M2@8E@Zt@L@@@[@M@H@M APA\KALfAXyA]AMA`AMAhA^"BL=BpPB_yBMBxBMBB`BLC'CaPCMaC}CMCCbCNC DN)D\EDODLoD`DcDMDhDNEp?EIELiEH|EdEMEPEFL"FX5FefFMwF`FFLFhFfGM0GpmGwGLGGg6HIaHNHHhHHIIOIFINfIyIiIOIILIJj;JMLJhJMyJJkJYJ`KRmKKKUKKKKI LLL3L FLlwLMLLmLLLLMM$M$KMMUM,MMM4MMM<MMMDNM)NLvNNLN8NnNMN@BB=Af@ ?(>0=8
53     =@3<H\;P:X9 K,K00000@" IH" #()(()0OLXx  |2xlo2T >  0
54     lsupdxx.o/ 1361899271 10100 26113 100644 10872 `
55     ELF>&@@   !&?,(*2HHW(~H`HH $",64J<^D 
56       ,6#Afr /HYoUHHL ILMHHLHLL`(HL0MMS0IHHLILIL@ILPIHwHJ@HHxHH8I_8HHI_HxHXHIZ IHR@H@L(Mu@HUH0HHEHHLuMu HhIt$IMh8IL`Mq0IHuHI8H@HLpMRLpIHMH(M{(ILULH
57     LLPLLH]H}HHHXM@0MI(H~HXLuL}LELMLL H8HPL`LhHxM[ M$$MuLhHxH`HPH@LHLMHJAL]LLLLHHHHHLLu3HHHuHEHM HYHT&H8HHUYHE(XYH^HcH H]@Ht  j[HrH; ؃+3HcHv,H}@LE8A HYW HH;rH]8H4HLM@(LU8A(A\HAd HAt0HfATIfA\fAd(fAt8ffYfYfYfYWWW'AW0A)A)\A)d A)t0HH;n}LM@(LU8H(HfH(((HfAYfAY\fAYd fAYl0IWWW'AW(A)A)\A)d A)l0HH;rH;s+H]@Hu8 HYW
58      HH;rH_H8LIHH HL3HHDžHDž'HAHHHH3HHDžHHHHH
59     HM@Ht 
60     jYHHYH; ȃ+3HHHcv6HH}@LE8HAWHH;rHHM8HH4HLLM@LU8Ht&HHHHHCCLCT C\0fCDfCLfCT(fC\8WW WWC)C)LC)T C)\0IL;rWHH]@Hu8(H((((W WTW\ Wd0) )T)\ )d0HH;rH;s.HHu@H}8HWHH;r~HHIH3HU@LMPH$HHHLAHxHtlH8u]IHH HL3HHDžHDž)HAHHI3HHu@HM8HHIH}HII3Hu0H]EH$AHHE0ff/HH:fIHH HL3HHDžHDžHAHHEXHcHH~/H]XHu@HDH H;T_ ~HuXHHIHH}HII3H]LUL$AHHEpH?HUXH]h^Hu`H H _BHf/rHUhfH~f/HvHEXHHEhf/vHUhHHHHH3HHu@EHYHIHHHII3H]H$AHQH8#IHH HL3HHDžHDžHAHMhIHH3HHHAIHH HL3HHDžHDžHAHHHH3HHHHcHMHHHuPHtwj^HzH;e+3HcHv+H}hLE@H}P(AY X  HH;rHu@H<HHuhH}@HuP D(\l |0fLf\fl(f|8fDfAYfAYfAYfDYdt DL0fTfdft(fDL8fXfXfXfEX))d)t D)L0HH;QHuhH}@HuP(f(((fY fY\fYl fY|0dt DD0fTfdft(fDD8fXfXfXfDX))d)t D)D0HH;vH;s*HUhHu@HUP(Y X  HH;rHHHPHHHQHHIIHIIHEL]LeLuHBHHMH}LML[0HMe8IMw@IHNHIx IMJ(IHEL]LpLXHBHHMH}LML[0HMe8IMw@IHNHIx IMJ(IL@LHLuHhHxH`LPL[0Me8Mw@H8LL L(L0HBHNIx MJ(H]33m3EHHHHH 3{HމHHH3 H8HHDž8HPHމHHH3 HHHDžHHvH88880808{Gz? _B?pathei-lsopt: no hessupd for first optim.pathei-lsopt: first estimate of dd via .01*ffbnc: initial stepsize tact = bnc: norm of dd = bnc: ifail = 4, dotdg > 0.x  (gD
61      lsupdxx.f lsupdxx_:::99:: ǻ99:: û: dzMóPXCP
62     ~FlMG\ j À| {{YZF vƟF lsupdxx.f.strtab.symtab.data.bss.textmpi_parm_lsupdxx_.rodata.L_2il0floatpacket.28.L_2il0floatpacket.31.L_2il0floatpacket.32.L_2il0floatpacket.29for_write_seq_lis.rodata.str1.32__STRLITPACK_5for_write_seq_lis_xmit.rodata.str1.4__STRLITPACK_4hessupd___STRLITPACK_3ddot_mpi_allreduce___STRLITPACK_2dnrm2___STRLITPACK_1__STRLITPACK_0for_dealloc_allocatablevar$101.0.1var$91.0.1var$81.0.1__STRLITPACK_11.0.1__STRLITPACK_9.0.1__STRLITPACK_10.0.1__NLITPACK_0.0.1__NLITPACK_2.0.1__NLITPACK_1.0.1__STRLITPACK_13.0.1__STRLITPACK_14.0.1__STRLITPACK_15.0.1__STRLITPACK_16.0.1__STRLITPACK_12.0.1mpi_sgi_private_status_mpi_sgi_private_unweighted_mpi_sgi_private_mpi_sgi_private_inplace_mpi_sgi_private_char_mpi_null_copy_fn_mpi_null_delete_fn_mpi_dup_fn_mpi_comm_null_copy_fn_mpi_comm_null_delete_fn_mpi_comm_dup_fn_mpi_win_null_copy_fn_mpi_win_null_delete_fn_mpi_win_dup_fn_mpi_conversion_fn_null_.note.GNU-stack.eh_frame.trace.rela.text.rela.eh_frame.rela.trace+``#AOd`pPPp=$P&p ' spPJPp(0$?&_r )* ) $I &i D|  `
63     
64     *
65     
66     +
67     
68     
69     *   E $` & $  ' , & 4% V '` <`t>,,, %,%00@ $  !&?2T2dhh n& &0
70     lsline.o/ 1361899272 10100 26113 100644 15920 `
71     ELF>p:@@ 
72       %OWf(HAPf,H`H H*; L]n (08@H7G Q
73     X c r+5!=u.?XnUHHHH8IHLxIHhHL0L(IL{0HLH`LX@HH Mb8LpHPL]ILPIL}IHMHMHHHz@IHL Mn(Ls0LMILuLxIH}HHZ(H]H(HH@ HMI@Hc6LHMl$8IHpHhILhHW L@MLPHXHHUH LHLXMMSIHHLUII|$IOMd$HIHXLeLIHXHM(HHEL`LpM@M[8MR0L}HHLmLEL]LxH}HL0L8LPLLH6Md$HYH}LELULHLmMyHHHLH`HLLLLLH@H+HHIHHH+HHHXHHH+HHHM0H`tlH8u]IHH HL3HHDžHDž HAI HJLHuHHH3HHuHHYHIHHHII3H]H$AHQHE  DžHHHHMXLLMHPI QHJHHuX3MHIMHHH+HHMIH3H}XI#LEP \l |0AATAd At0fADfATfAd(fAt8fLf\fl(f|8f\f\f\f\) )\)l )|0HH;jI;sHUXH}P\HI;rHIHLI3HAHHHHIHHHII3H]H$AHHMHHfHUH\)H\X^W ._Pf/ HM0H?HUMH"IHUXHtHHBL;L3H+HHIHvMHuXH}PHv(HY(YY AYLY^4\4HH;rILHLEX(LMP(HY(Y1D(DYA|D(fA|HfD(fYDYDYDYfHfYDY6fEHfA^D(D(DYDYDYE fELfD\E\(fE\fEE) fEYYfDYE| EL0fE|(fEL8fEfEfEYfEYfDYfDY(YfEfE^fffD^fD^ElfElA| fE\ET0fA|(fET8fA\fE\E)lA)| E)T0HH;PLEX(LMP(HYD(DYY1D(D(DYHDYDY HHf(fAYtDY&DY?fE(fED(fED(fEYLfEYd fEY|0YDYDYffYfDYfDYfDY(Yff^fEfEffE^fE^fD^EfEDE\Et fD\At0fE\fEt(fAt8fE\fE\fA\E)E)\E)t A)t0HH;I;sTHMXH]PHvH(HY(YY
74     AYLY^4\4HI;rH`HE(H8IHH HLp3HHDžHDžp'HxAPHHH3HHHHH3HHDžHIA8MIHEXHtHHPL;L3H+HHIHeHPHuPH]X(\YY X HH;rHMPHHPPHMXH]P((D(D((\\D\D\,DDD\ Dt0ffl(fDDD(fD\(D(fDt8fffEfEfYfY4fDYLfDYd fYD0fAYfEYfEYfXfAXfEXfDX)$)|D)T D)l0HH;&PDPHMXH]P(((D(D(A\A\A\E\fDfA(fA(fA(fEfY fYdfYt fDYD0fYfYlfY| fDYL0fXfXfXfEX) )d)t D)D0HH;WI;sDHPHMPHEX( \YYXHI;rH`HE0HU(PH8IHH HL3HHDžHDžHAPHHH3HLH`LDžHHHHMXLLMHPHE(HxHHHHLÉLXPIHE@HtHHPL;L3H+HHIHv&H]@HuPH\HH;rHMPHHHM@H]PH \l |0Td t0fDfTfd(ft8fLf\fl(f|8f\f\f\f\) )\)l )|0HH;rHM@H]PHH&HLT \0fDfLfT(f\8f\f\Lf\T f\\0))L)T )\0HH;rI;s&HE@HMPH\HI;rH]HILI3\HHu@PAHHIHHII3HuH]H$AHHE0HHMPY
75     Y f/H`HhtlH8u]IHH HLP3HHDžHDžPHXAHHI3HHu@HMHHHIHHHII3H]H$AHHHUYf/H`HhtlH8u]IHH HL`3HHDžHDž`HhAHxHp ;HE0HH]f/vHYMI HEXHtHk HPL;Y L3H+HHIH HH}PLHuX(A\YYXHH;rHH4HH]XHuPH((D(D($(|\\D\D\DT Dl0,DDD\ Dt0flfDDfD\(fDt8ffdf|fDT(fDl8fffEfEfYfYfYfDYfEYfDYfEYfAYfXfAXfEXfDX))tD)L D)d0HH;H]XHuPH((D(D(D(\\D\D\tDL Dd0fEf\A(ftA(fDL(E(fDd8fffEfEfYfY$fY|fDYT fDYl0fYfEYfEYfXfXfEXfEX))lD)D D)\0HH;'I;sCHH]PHHEX( \YYXHI;rHE0HxLH`L
76     Hh8HHUY
77     f/^HxHp;FHM0HH]I)Y()#HEXHtHHHL;L3H+HHIHHH}XLEPH(HY(YYAYLY^A4\4HH;rI\HLMX(LUP(HY(Y3D(DYA|D(fA|HfD(fYDYDYDYfHfYDY7fEIfA^D(D(DYDYEYE fELfD\E\(fE\fEE) fEYYfDYE| EL0fE|(fEL8fEfEfEYfEYfDYfDY(YfEfE^fffD^fD^ElfElA| fE\ET0fA|(fET8fA\fE\E)lA)| E)T0HH;PLMX(LUP(HYD(DYY3D(D(DYHDYDYHIf(fAYtDY'EY8fE(fED(fED(fEYLfEYd fEY|0YDYDYffYfDYfDYfDY(Yff^fEfEffE^fE^fD^EfEDE\Et fD\At0fE\fEt(fAt8fE\fE\fA\E)E)\E)t A)t0HH;I;scHH]XHuPHt&H|'(HY(YYAYTY^4\4HI;rHxLH`L3MIHE@HtHHPL;L3H+HHIHv#H]@HuXH}P\HH;rHMPHHHM@H]XHuP \l |0Td t0fDfTfd(ft8fLf\fl(f|8f\f\f\f\) )\)l )|0HH;rvHM@H]XHuPH&LT \0fDfLfT(f\8f\f\Lf\T f\\0))L)T )\0HH;rI;~HE@HMXH]P\HI;rMHUHH~%I  IHLH}PHuXHxH?HM0LH`LHIhHIH@HHHIIHIIHELxLeLhHBHHMH}LML[0HMe8IMw@IHNHIx IMJ(IHEL]LeLuHBHHXHpL`L[0HMe8IMw@IHNHIx IMJ(IL]LPLuHEHMH}LHL[0Me8Mw@H8LL L(L0HBHNIx MJ(H]33w3LHMX3HHHHI;r3333HMX3H]PHHHI;rLDHHH3 HIHDžLHމHHH3 HHHHDžHH`LDHHH3 HIHDžLKHMH3HITHI;rmHh MHNH HHt&88880880+??{Gz?MbP?@?@?lsopt: simul.lsopt: fails wolfe test 1lsopt: fails wolfe test 2< .01lsopt: trial stepsize =lsopt: using steepest descent, t value x ! (_
78     !lsline.f lsline_XΩYXʩYƩYçYרXYèWƩX˨XީYʩYK_\YÇy<M======2]ɬ@\B\ U?:?"݆LةW-W@  iƆ1(  wǞ
79     lsline.f.strtab.symtab.data.bss.textmpi_parm_lsline_for_write_seq_lis.rodata.rodata.str1.4__STRLITPACK_5_intel_fast_memcpydnrm2_mpi_allreduce_ddot_.L_2il0floatpacket.33.L_2il0floatpacket.27.L_2il0floatpacket.29.rodata.str1.32__STRLITPACK_4for_write_seq_lis_xmit__STRLITPACK_3.L_2il0floatpacket.32__STRLITPACK_2.L_2il0floatpacket.28__STRLITPACK_1.L_2il0floatpacket.30__STRLITPACK_0.L_2il0floatpacket.31.L_2il0floatpacket.26.L_2il0floatpacket.25for_dealloc_allocatablevar$116.0.1var$106.0.1var$96.0.1__STRLITPACK_9.0.1__NLITPACK_0.0.1__NLITPACK_2.0.1__NLITPACK_1.0.1__NLITPACK_3.0.1__STRLITPACK_15.0.1__STRLITPACK_16.0.1__STRLITPACK_10.0.1__STRLITPACK_11.0.1__STRLITPACK_12.0.1__STRLITPACK_13.0.1__STRLITPACK_14.0.1mpi_sgi_private_status_mpi_sgi_private_unweighted_mpi_sgi_private_mpi_sgi_private_inplace_mpi_sgi_private_char_mpi_null_copy_fn_mpi_null_delete_fn_mpi_dup_fn_mpi_comm_null_copy_fn_mpi_comm_null_delete_fn_mpi_comm_dup_fn_mpi_win_null_copy_fn_mpi_win_null_delete_fn_mpi_win_dup_fn_mpi_conversion_fn_null_.note.GNU-stack.eh_frame.trace.rela.text.rela.eh_frame.rela.trace 5``]5%D'dw ()*% r(+ *$5 WPipE( 
80     
81     %
82     ' (#  \ ,f 0 , 8  %4 K%'@ 8,BH+*0: hx%'#+GQ*bs %' ^}h=`hypyp1(`6i - -!-s!p!! &,&00@ %  %!O(W2h)h2)(7)G)Q*
83     x,~X00 c&: r>:0
84     hessupd.o/ 1361899272 10100 26113 100644 7904 `
85     ELF> @@   !&QYh 0 "5I ](q08@HPTX\BR \
86     c n },6
87     ?w9Jcy*UHH0HEHhL}ILuILpILxILMAXH8EIHH HL3IHDžHDžLAIHHH3HHDžHAAIHH3H00MAIHHH838AEMIHH3H@D@DHADHMAEM;}Aى;>LHAAL}DEUM]LmAL}HU/H:IHH HLH3HHDžHDžHHPAHHHHX3HHDžXH`HHHHU3DmыMHHH3HUMHMIHH3HU]AHUDD;~D+ILLH3HMDDDEAHILLLI3AHHIH}HHuII3LUEL$AHILLH3HMDDDEAHcHHUIc4$HHTHbUt}QHKH;=у+3HcHv&E(AY A\AHH;rEIfHA A\Al A|0fALfA\fAl(fA|8fYfYfYfYA(A(dA(t E(D0f\f\f\fD\A)A)dA)t E)D0HH;mxHA( A(\A(l A(|0fYfYfYfYA(A(dA(t E(D0f\f\f\fD\A)A)dA)t E)D0HH;rH;s&E(AY A\AHH;rAD;mLm]L}EMEILHH3HuAA$[HcHOLHt8j^HzH;&+3HcHvH}AYAHH;rHuH<HtpHuLT \0fDfLfT(f\8fAYfAYLfAYT fAY\0A)A)LA)T A)\0HH;rRHuA(A(LA(T A(\0fYfYLfYT fY\0A)A)LA)T A)\0HH;rH;sHUAYAHH;rE?A;LHƃLmuE]LmHEDD;~D+ILLH3HMDDDEAHILLLI3AHHIH}HHuII3LUEL$AHHcIILLH3HMADDLDM\EEAIc$HHEt}HQH;ƒ+3HcHv#E(AYLAX A HH;rEIDfHALATA\ Ad0fALfATfA\(fAd8fYfYfYfYfAX fAXTfAX\ fAXd0A) A)TA)\ A)d0HH;yhHt&A(LA(TA(\ A(d0fYfYfYfYfAX fAXTfAX\ fAXd0A) A)TA)\ A)d0HH;rH;s#E(AYLAX A HH;rAD;}QHhLxLpLuL}H]333Hv88   88   pathei-lsopt: in hessupd; jmin, jmax, mupd:j,jfin,jmin = pathei-lsopt: in hessupd; loop x 
88      
89     
90     :
91     
92     
93     hessupd.f hessupd_9DIeX`D PyY
94     hessupd.f.strtab.symtab.data.bss.textmpi_parm_hessupd_for_write_seq_lis.rodata.rodata.str1.4__STRLITPACK_3for_write_seq_lis_xmit__STRLITPACK_2.rodata.str1.32__STRLITPACK_1__STRLITPACK_0dostore_ddot_mpi_allreduce_hessupd_$ALPHA.0.1__STRLITPACK_7.0.1__STRLITPACK_8.0.1__STRLITPACK_9.0.1__STRLITPACK_10.0.1__STRLITPACK_11.0.1__STRLITPACK_12.0.1__STRLITPACK_13.0.1__STRLITPACK_14.0.1__STRLITPACK_15.0.1__STRLITPACK_16.0.1__NLITPACK_0.0.1__NLITPACK_1.0.1__NLITPACK_3.0.1__NLITPACK_2.0.1mpi_sgi_private_status_mpi_sgi_private_unweighted_mpi_sgi_private_mpi_sgi_private_inplace_mpi_sgi_private_char_mpi_null_copy_fn_mpi_null_delete_fn_mpi_dup_fn_mpi_comm_null_copy_fn_mpi_comm_null_delete_fn_mpi_comm_dup_fn_mpi_win_null_copy_fn_mpi_win_null_delete_fn_mpi_win_dup_fn_mpi_conversion_fn_null_.note.GNU-stack.eh_frame.trace.rela.text.rela.eh_frame.rela.traceJ#]%} &
95     &
96     0&Aa&k #%$(7 a&r0 &8&@&H3'CP_Ti(T)\X'P'PX'PT(#T-);\IXoy'P $,$0000000@X #!  &
97     Q8`Y2@2 BR\ c n }0
98     cubic.o/ 1361899272 10100 26113 100644 2528 `
99     ELF>@@   $1
100       * UHIAI(\\AY^2H((A LUHEAX \(XT.f/rB((YAYfE\fD/vfD/vHHfA/cdQm((^AYfEfA/\rfA/rQQY9fD/fD/H(IW&AW(QQY?H(((I\\)fD/W6w((\!AT ^YfA/v\XY^XZHX\\9AX Y H(A\"TYT:f/v\Y^XHHA_]fD/vHHfA/rIHH]ÐHt&H|'@?x ,  
101      cubic.f cubic_ cubic.f.strtab.symtab.data.bss.textcubic_.rodata.L_2il0floatpacket.8.L_2il0floatpacket.10.L_2il0floatpacket.11.L_2il0floatpacket.9.note.GNU-stack.eh_frame.trace.rela.text.rela.eh_frame.rela.trace (;$7 ,00@h $ 10H@ Vn0dgscale.o/ 1361899272 10100 26113 100644 3896 `
102     ELF> @@   !&>q  '.
103     9 H ,5Fj $:DVjvUHHPIL}ILmILeILHH3H]LuMHAHE3HcH~#ADYAYHH;XEErHHLUH}LUIHHuII3L]L$AHIIHHuLH3A^EEAHc 3HELH~ff/rI6H0HHH;rHɸ~"AYA^HXEEH;rHHLUH}LUIHHuII3L]L$AHHcH~jHf A\(A^\A^dY(^]ATYX\^Alf/rIILHH;~IHLHH3AH]LeLmLuL}H]H&?x l  
104       
105      dgscale.f dgscale_&&&  dgscale.f.strtab.symtab.data.bss.textdgscale_dostore_.rodatampi_allreduce_.L_2il0floatpacket.5dscal___NLITPACK_1.0.1__NLITPACK_0.0.1__NLITPACK_2.0.1__NLITPACK_3.0.1__NLITPACK_4.0.1mpi_sgi_private_status_mpi_sgi_private_unweighted_mpi_sgi_private_mpi_sgi_private_inplace_mpi_sgi_private_char_mpi_parm_mpi_null_copy_fn_mpi_null_delete_fn_mpi_dup_fn_mpi_comm_null_copy_fn_mpi_comm_null_delete_fn_mpi_comm_dup_fn_mpi_win_null_copy_fn_mpi_win_null_delete_fn_mpi_win_dup_fn_mpi_conversion_fn_null_.note.GNU-stack.eh_frame.trace.rela.text.rela.eh_frame.rela.trace
106     ,6 u 8HR ,0000@ !&>h  ' T. 9 H 0instore.o/ 1361899272 10100 26113 100644 7424 `
107     ELF>@@@   !&Zbq$
108     0 
109     %@<O@u (08@HP)X=`Qhepyx(
110     2FZn~ 
111       ,6 ?H)^UHH`HDHILmIHUH]HL}MLuMLeI[AB\DX9uTIH@H HLE3IHDž@HELMAIHHH@LIH [H0H HL3AIHDž@LLLHDž HDž(
112     AIIH H@HLE3A1HDž@H]A҅HH@HHU3LeхHH@HHU3Lmх|HH@HH3LхGHH@HH3LхHMIHH@3HHAЅHM IHH@3HHAЅHM(IHH@3HHAЅuhHM0IHH@3HHAЅu2HM8IHH@3HHAЃtk~]HIH H@HE333HDž@AH]LeLmLuL}H]HEIIH H@HE33A1HDž@AH8uIH@H HE33HDž@AIH@H HLI3IHDž@HDž$LALc#HHH@3H8D8HH@HH3HHDžHHHHH@3HUHc[]IH@H HE33HDž@AIH@H HLE3IHDž@HELMAHIIHH@3HUHMAHH@HHU3DeHH@HHU3]-H&88 888 00    06H$
113     H$78 8    8pathei: in instore OPWARMIunknownformattedsequential * pathei rectmp opening direct access with recl = x  % 
114      instore.f instore_X"""""%CD Swinstore.f.strtab.symtab.data.bss.textmpi_parm_xxstore_instore_for_write_seq_lis.rodata.rodata.str1.4__STRLITPACK_11__STRLITPACK_10__STRLITPACK_8__STRLITPACK_7for_open__STRLITPACK_9for_read_seq_lisfor_read_seq_lis_xmitfor_closefor_write_seq_fmt.rodata.str1.32__STRLITPACK_2for_write_seq_fmt_xmit__STRLITPACK_1__STRLITPACK_0for_write_seq_lis_xmit__STRLITPACK_12.0.1__STRLITPACK_13.0.1__STRLITPACK_14.0.1__STRLITPACK_15.0.1__STRLITPACK_16.0.1__STRLITPACK_17.0.1__STRLITPACK_18.0.1__STRLITPACK_19.0.1__STRLITPACK_20.0.1__STRLITPACK_21.0.1__STRLITPACK_22.0.1__STRLITPACK_23.0.1__STRLITPACK_35.0.1__STRLITPACK_24.0.1__STRLITPACK_25.0.1instore_$format_pack.0.1__STRLITPACK_26.0.1__STRLITPACK_27.0.1__STRLITPACK_28.0.1__STRLITPACK_29.0.1__STRLITPACK_30.0.1__STRLITPACK_32.0.1__STRLITPACK_33.0.1__STRLITPACK_34.0.1__STRLITPACK_31.0.1.note.GNU-stack.eh_frame.trace.rela.text.rela.eh_frame.rela.trace 21k4 
115       5+ n2x6 7(707/8S7d@7H7P7
116     X67@`l7vh28p
117     28/xO1^4~9:2:CVt2~:44<;Jh;y; 3,3000@ 1!&Z b2 P
118     2 (n~ @  0
119     dostore.o/ 1361899272 10100 26113 100644 4776 `
120     ELF>(@@
121      
122     !&HW$fw,4 @ -$A,THgP{    ,6 ? nUHH E3LeILuH]L}IMc4$MLmIMOHHeJHH+HHHAE1MID3HcHHt&Ll0d fLfDfl8fd(fZfZfZfZ))|HH;rI;sHZHI;rHIHHLIALHcGHpIH 3rH IIIHDžpLLLHDž LHDžLAEIAIH]LE3MIHpMLH EOHD LEMc3IIAsLpLuAHIH HpHE33sHDžpATHIHHL0IH`HpHcPL(IHhH qH3AIIHDžpL(L8L@HDžH LPHDžXAEIAME3MIHpMLH EOHE LEMc3IILuIAuLpH]AIIH HpHE33AqHDžpAA$HcHHHt jYH~H;ʃ+3HcHvHfZHH;rHZ)ZL)LZT)T Z\)\0HH;rH;sHfZHH;rHEHH]LeLmLuL}H]33HvHOPWARMDunknownunformatteddirectOPWARMDunknownunformatteddirect8 888 A8 888 Ax   
123     w  dostore.f dostore_YMyIyE\dostore.f.strtab.symtab.data.bss.textmpi_parm_xxstore_dostore_.rodata.str1.4__STRLITPACK_7.rodatafor_open__STRLITPACK_6__STRLITPACK_5__STRLITPACK_4for_write_dirfor_close__STRLITPACK_3__STRLITPACK_0__STRLITPACK_2__STRLITPACK_1for_read_dir__STRLITPACK_11.0.1__STRLITPACK_12.0.1__STRLITPACK_13.0.1__STRLITPACK_8.0.1__STRLITPACK_9.0.1__STRLITPACK_10.0.1.note.GNU-stack.eh_frame.trace.rela.text.rela.eh_frame.rela.trace " ,3 o
124     y  ! HNX"s P   dz #" $ ,000000@`
125     !& H2Hf X{` ` 
126     x x
127     : 0 outstore.o/ 1361899272 10100 26113 100644 4584 `
128     ELF>h@@
129      
130     "'@O^
131     v~  (0*8=@PHdPxX`hp    - 6mUHHHL}IIHH]HLuMLmMLeIHMIHxH0H HLP3IHDžHDžPLXHDž`
132     LhHDžp HEAHIH H3HDž1AIIE?HD}H HLEE9D3HDžAH HHH3HUHMI $HHH3HUHMHMIHH3HU]AAMHHH3HUMAHHH3HUMHMIHH3HU]AHMIHH3HU]AHM IHH3HUȋ]AHM(IHH3HUHH]AHHDH HE33HDžHIH HHE33sHDžAH]LeLmLuL}H]OPWARMIsequentialformatted8 88  00    0x l "
133     n
134     outstore.f outstore_  $Doutstore.f.strtab.symtab.data.bss.textxxstore_outstore_.rodata.str1.4__STRLITPACK_2__STRLITPACK_0for_open.rodata__STRLITPACK_1for_rewindfor_write_seq_lisfor_write_seq_lis_xmitfor_close__STRLITPACK_3.0.1__STRLITPACK_4.0.1__STRLITPACK_5.0.1__STRLITPACK_6.0.1__STRLITPACK_7.0.1__STRLITPACK_8.0.1__STRLITPACK_9.0.1__STRLITPACK_10.0.1__STRLITPACK_11.0.1__STRLITPACK_12.0.1__STRLITPACK_13.0.1__STRLITPACK_14.0.1__STRLITPACK_15.0.1.note.GNU-stack.eh_frame.trace.rela.text.rela.eh_frame.rela.trace ( R!v
135      "#;
136     b$l
137     $
138     ($
139     0$
140     8$
141     @8$B
142     He$o
143     P$
144     X$
145     `%
146     h$.%I
147     p  , 0@
148     "'@2P vpxpp 
149     070 lswri.o/ 1361899272 10100 26113 100644 1416 `
150     ELF>@@  $1AKR a
151     *UHH]Hx , 
152     >lswri.f lswri_5lswri.f.strtab.symtab.data.bss.textlswri_.note.GNU-stack.eh_frame.trace.rela.eh_frame.rela.trace  , 000@8 xx$x1AHK@ mR}a0lsopt_top.f/ 1361899270 10100 26113 100644 24763 `
153    
154    
155    
156     subroutine lsopt_top( nn, xx, ff, gg, simul, optline
157     $ , epsx, fmin, epsg
158     $ , iprint, itmax, nfunc, nupdate
159     $ , dd, gold, xdiff
160     $ , loffline
161     $ , ifail )
162    
163     c ==================================================================
164     c SUBROUTINE lsopt_top
165     c ==================================================================
166     c
167     c o uses a set of control variables, their adjoint variables,
168     c and a cost function value
169     c to compute an improved set of controls with respect to the
170     c cost function via a
171     c variable-storage Quasi-Newton method
172     c
173     c o Reference: J.C. Gilbert & C. Lemarechal
174     c Some numerical experiments with variable-storage
175     c quasi-Newton algorithms
176     c Mathematical Programming 45 (1989), pp. 407-435
177     c
178     c o started: ??? not reproducible
179     c
180     c o changed: Patrick Heimbach, MIT/EAPS
181     c
182     c o Version: 2.0, 24-Feb-2000:
183     c (Version 1.0 is considered as version
184     c starting from which changes were made).
185     c - severe changes in structure including various
186     c bug-fixes to enable multi-optimization runs;
187     c - routine lsoptw incorporated into lsoptv
188     c - optimization iteration loop restructured
189     c - complete restructuring of handling
190     c cold start cases
191     c - number of 3 control flags for error handling
192     c (indic, moderl, ifail) reduced to 1 (ifail)
193     c and homogenized with routine lsline
194     c
195     c o Version: 2.1, 29-Feb-2000:
196     c - handling of case ifail = 6 changed;
197     c leads to stop of optimization
198     c (similar to case ifail = 8)
199     c - logical lphprint included
200     c
201     c ==================================================================
202     c SUBROUTINE lsopt_top
203     c ==================================================================
204    
205     implicit none
206    
207     ccc#include <blas1.h>
208     include 'mpif.h' ! cheung
209     c-----------------------------------------
210     c declare arguments
211     c-----------------------------------------
212     integer nmax
213     parameter( nmax = 1372312408 )
214    
215     integer nn, iprint, itmax, nfunc, nupdate, ifail
216    
217     double precision xx(nn), gg(nn)
218     double precision dd(nn), gold(nn), xdiff(nn)
219    
220     double precision ff, epsx, fmin, epsg
221     cph(
222     integer phniter0, phniterold
223     double precision phff
224     COMMON /PH_OPTI/ phniter0, phniterold, phff
225     cph)
226    
227     external simul, optline
228    
229     c-----------------------------------------
230     C declare local variables
231     c-----------------------------------------
232     logical cold, lphprint, loffline,sflag,tflag,isforward
233     parameter (lphprint = .true.)
234    
235     integer mm, mupd, jmin, jmax, indic, isize, REAL_BYTE
236     integer i, iiter, ifunc
237    
238     double precision fupd
239     double precision r1, tmin, tmax, tact, gnorm, gnorm0, eps1
240     double precision fold, ys
241     double precision dotdg
242     double precision temp,temp1,temp2
243     !cheung
244     integer mylen, mystart,myend, pidlen, myindx(2)
245     integer ierr,myid,nprocs
246     integer status(MPI_STATUS_SIZE), requests(2)
247     integer time_array_0(8), time_array_1(8)
248     real start_time, finish_time
249     common /mpi_parm/ myid,nprocs,mystart,myend
250     !cheung
251    
252     external DDOT, DNRM2, DSCAL
253     double precision DDOT, DNRM2
254    
255     c-----------------------------------------
256     c parameters
257     c-----------------------------------------
258    
259     double precision rmin
260     parameter( rmin = 1.e-20 )
261    
262     character*(*) iform
263     parameter(iform='(i5,2x,1pe8.1,1x,i5,4x,1pe11.4,3(2x,1pe8.1))' )
264    
265     c ==================================================================
266     c
267     c-----------------------------------------
268     c initialization
269     c-----------------------------------------
270     cold = .true.
271     fupd = 1.0e+10
272     indic = 0
273     tmin = 0.
274     tmax = 1.0e+10
275     tact = 1.0
276     cph(
277     phniterold = 0
278     cph)
279     iiter = 0
280     eps1 = 1.0
281     ifunc = 0
282     ifail = 0
283     gnorm0 = 1.
284     sflag = .false.
285     tflag = .false.
286     c-----------------------------------------
287     c initialization for dd and dds
288     c-----------------------------------------
289    
290     jmin = 1
291     jmax = 0
292    
293     mm = nmax
294     mupd = nupdate
295    
296     REAL_BYTE = 4
297     isize = REAL_BYTE
298    
299     c-----------------------------------------
300     c print information
301     c-----------------------------------------
302     if (myid .eq. 0) then
303     if (iprint .ge. 1) then
304    
305     print '(2x,a)',
306     $ '==============================================='
307     print '(2x,a)',
308     $ '=== O P T I M I Z A T I O N ==='
309     print '(2x,a)',
310     $ '==============================================='
311     print '(a,i11)'
312     $ , ' number of control variables.......', nmax
313     print '(a,e9.2)'
314     $ , ' precision on x....................', epsx
315     print '(a,e9.2)'
316     $ , ' precision on g....................', epsg
317     print '(a,e9.2)'
318     $ , ' expected optimal function value...', fmin
319     print '(a,i9)'
320     $ , ' maximal number of iterations......', itmax
321     print '(a,i9)'
322     $ , ' maximal number of simulations.....', nfunc
323     print '(a,i9)'
324     $ , ' information level.................', iprint
325     print '(a,i9)'
326     $ , ' number of updates.................', nupdate
327     print '(a,i9)'
328     $ , ' size of used memory...............', 3*nn
329     endif
330    
331     c-----------------------------------------
332     c check arguments
333     c-----------------------------------------
334    
335     if (nn .le. 0) then
336     if (iprint.ge.1) then
337     print '(a,i6)' , ' ERROR : n = ', nn
338     endif
339     ifail = 1
340     goto 999
341     endif
342    
343     if (itmax .lt. 0) then
344     if (iprint.ge.1) then
345     print '(a,i6)' , ' ERROR : itmax = ', itmax
346     endif
347     ifail = 1
348     goto 999
349     endif
350    
351     if (nfunc .le. 0) then
352     if (iprint.ge.10) then
353     print '(a,i6)' , ' ERROR : nfunc = ', nfunc
354     endif
355     ifail = 1
356     goto 999
357     endif
358    
359     if (epsx .le. 0.) then
360     if (iprint.ge.1) then
361     print '(a,e9.2)', ' ERROR : epsx = ', epsx
362     endif
363     ifail = 1
364     goto 999
365     endif
366    
367     if (epsg .le. 0.) then
368     if (iprint.ge.1) then
369     print '(a,e9.2)', ' ERROR : epsg = ', epsg
370     endif
371     ifail = 1
372     goto 999
373     endif
374    
375     if (epsg .gt. 1.) then
376     if (iprint.ge.1) then
377     print '(a,e9.2)', ' ERROR : epsg = ', epsg
378     endif
379     ifail = 1
380     goto 999
381     endif
382    
383     cph(
384     print *, 'pathei: vor instore '
385     cph)
386     endif
387    
388     if (myid .eq. 0 ) print *,'bnc: cold start before instore is ',cold,sflag
389     call instore( nn, fupd, gnorm0, isize, mupd, jmin, jmax, cold,
390     & sflag, tflag, ifunc, tact )
391     if (myid .eq. 0 ) print *,'bnc: cold start after instore is ',cold,sflag
392    
393    
394     cph(
395     phff = fupd
396     cph)
397    
398     c-----------------------------------------
399     c check warm start parameters
400     c-----------------------------------------
401     if (myid .eq. 0 ) then
402    
403     if (ifail .ne. 0) then
404     if (iprint.ge.1) then
405     print '(a)', ' ERROR : reading restart file'
406     end if
407     ifail = 2
408     goto 999
409     end if
410    
411     if (isize .ne. REAL_BYTE) then
412     if (iprint.ge.1) then
413     print '(a)', ' ERROR : uncompatible floating point format'
414     end if
415     ifail = 2
416     goto 999
417     end if
418    
419     if (mupd .lt. 1) then
420     if (iprint .ge. 1) then
421     print '(a)', ' ERROR : m is set too small in instore'
422     endif
423     ifail = 2
424     goto 999
425     endif
426    
427     endif
428     c-----------------------------------------
429     c cold start or warm restart ?
430     c-----------------------------------------
431    
432     if (cold) then
433     c--- start if cold start ---
434     if (myid .eq. 0) then
435    
436     if (lphprint) then
437     print '(a)', 'pathei-lsopt: cold start'
438     end if
439    
440     print *, 'pathei-lsopt vor simul', nmax
441     print *, 'pathei-lsopt xx(1), gg(1) ',xx(1), gg(1)
442     end if
443    
444     isforward = .false.
445     call simul( indic, isforward, nn, xx, ff, gg )
446    
447     if (myid .eq. 0) then
448     print *, 'pathei: nach simul: nn, ff = ', nmax, ff
449     print *, 'pathei: nach simul: xx(1), xx(2) = ', xx(1), xx(2)
450     print *, 'pathei: nach simul: gg(1), gg(2) = ', gg(1), gg(2)
451     endif
452    
453     do i = 1, nn
454     xdiff(i) = 1.
455     end do
456    
457     cph(
458     if (myid .eq. 0) then
459     print *, 'pathei: vor dostore '
460     cph)
461     endif
462    
463     call dostore( nn, xx, .true., 1 )
464     call dostore( nn, gg, .true., 2 )
465     call dostore( nn, xdiff, .true., 3 )
466    
467     if (myid .eq. 0) then
468     cph(
469     print *, 'pathei: vor gnorm0 '
470     cph)
471     endif
472    
473     temp = DNRM2(nn,gg,1)
474     call MPI_ALLREDUCE(temp*temp,gnorm0,1,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,ierr)
475     gnorm0 = dsqrt(gnorm0)
476    
477     if (myid .eq. 0) then
478     cph
479     print *, 'pathei: gnorm0 = ', gnorm0
480     cph)
481     endif
482    
483     if (gnorm0 .lt. rmin) then
484     ifail = 3
485     goto 1000
486     endif
487    
488     cph(
489     phff = ff
490     cph)
491    
492     if (lphprint .and. myid .eq. 0)
493     & print *, 'pathei-lsopt: cold; first call simul: ff = ',
494     & phff
495    
496     c--- end if cold start ---
497     else
498     c--- start if warm start ---
499     if (mm .ne. nmax) then
500     if (iprint.ge.1) then
501     print '(a,i6)'
502     $ , ' ERROR : inconsistent nn = ', mm
503     endif
504     ifail = 2
505     goto 999
506     endif
507     if (mupd .ne. nupdate) then
508     if (iprint.ge.1) then
509     print '(a,i6)'
510     $ , ' ERROR : inconsistent nupdate = ', mupd
511     endif
512     ifail = 2
513     goto 999
514     endif
515     if (jmin .lt. 1) then
516     if (iprint.ge.1) then
517     print '(a,i6)'
518     $ , ' ERROR : inconsistent jmin = ', jmin
519     endif
520     ifail = 2
521     goto 999
522     endif
523     if (jmin .gt. mupd) then
524     if (iprint.ge.1) then
525     print '(a,i6)'
526     $ , ' ERROR : inconsistent jmin = ', jmin
527     endif
528     ifail = 2
529     goto 999
530     endif
531     if (jmax .gt. mupd) then
532     if (iprint.ge.1) then
533     print '(a,i6)'
534     $ , ' ERROR : inconsistent jmax = ', jmax
535     endif
536     ifail = 2
537     goto 999
538     endif
539    
540     if (lphprint .and. myid .eq. 0) then
541     print *, 'pathei-lsopt: warm start; read via dostore'
542     print *
543     endif
544    
545     call dostore( nn, xx, .false., 1 )
546     call dostore( nn, gg, .false., 2 )
547     ff = fupd
548    
549     cph(
550     phff = ff
551     cph)
552    
553     if (lphprint .and. myid .eq. 0) then
554     print *, 'pathei-lsopt: warm; first dostore read: ff = ',
555     & ff
556     print *, ' bnc-lsopt: xx = ',
557     & xx(1),xx(2)
558     print *, ' bnc-lsopt: gg = ',
559     & gg(1),gg(2)
560     endif
561    
562     c--- end if warm start ---
563     endif
564    
565     c-----------------------------------------
566     c print information line
567     c-----------------------------------------
568     if (cold) then
569    
570     temp = DNRM2(nn,xx,1)
571     call MPI_REDUCE(temp*temp,temp1,1,MPI_DOUBLE_PRECISION,
572     & MPI_SUM,0,MPI_COMM_WORLD,ierr)
573    
574     if(myid .eq. 0) then
575     if (iprint .ge. 1) then
576     print '(2a)', ' Itn Step Nfun Objective '
577     $ , 'Norm G Norm X Norm (X(k-1)-X(k))'
578     end if
579     print iform, iiter, tact, ifunc, ff, gnorm0
580     $ , dsqrt(temp1), 0.
581     endif
582    
583     if ( itmax .EQ. 0 ) then
584     ifail = 10
585     goto 1000
586     end if
587     end if
588    
589     c=======================================================================
590     c begin of loop
591     c compute x(k+1) out of x(k) + t*d, where t > 0.
592     c=======================================================================
593    
594     do iiter = 1, itmax
595    
596     if (lphprint .and. myid .eq. 0) then
597     print *, 'pathei-lsopt: ++++++++++++++++++++++++'
598     print *, 'pathei-lsopt: entering iiter =', iiter
599     endif
600     c-----------------------------------------
601     c store old values
602     c-----------------------------------------
603     do i = 1, nn
604     gold(i) = gg(i)
605     end do
606    
607     fold = ff
608     cph(
609     phniter0 = iiter
610     phff = ff
611     cph)
612    
613     c-----------------------------------------
614     c compute new dd and xx
615     c-----------------------------------------
616     c
617    
618     !cheung
619    
620     ! if (myid.eq.0) then
621     ! CALL date_and_time(values=time_array_0)
622     ! start_time = time_array_0 (5) * 3600 + time_array_0 (6) * 60
623     ! & + time_array_0 (7) + 0.001 * time_array_0 (8)
624     ! endif ! myid = 0
625    
626     if (cold) then
627     !get steepest descent controls
628     call lsupdxx(
629     & nn, ifail, lphprint
630     & , jmin, jmax, nupdate
631     & , ff, fmin, fold, gnorm0, dotdg
632     & , gg, dd, xx, xdiff
633     & , tmin, tmax, tact, epsx
634     & )
635    
636     endif
637    
638     ! if(myid.eq.0) then
639     ! CALL date_and_time(values=time_array_1)
640     ! finish_time = time_array_1 (5) * 3600 + time_array_1 (6) * 60
641     ! & + time_array_1 (7) + 0.001 * time_array_1 (8)
642    
643     ! write (*, '(8x, 1a, 1f16.6)') 'Clock (sec.) for lsupdxx :',
644     ! & finish_time - start_time
645     ! endif
646    
647     c-----------------------------------------
648     c check whether new direction is a descent one
649     c-----------------------------------------
650     ! if ( ifail .eq. 4) goto 1000
651    
652     c-----------------------------------------
653     c optline returns new values of x, f, and g
654     c-----------------------------------------
655    
656     c
657     if (.not. cold ) then
658     call optline(
659     & simul
660     & , nn, ifail, lphprint
661     & , ifunc, nfunc
662     & , ff, dotdg
663     & , sflag, tflag, tact, epsx
664     & , dd, gg, xx, xdiff
665     & )
666    
667     if (lphprint .and. myid .eq. 0 ) then
668     print *, 'pathei-lsopt: ',
669     & 'back from optline; ifail = ', ifail
670     print *, ' bnc-lsopt: ',
671     & ' sflag = ',sflag
672     print *, ' bnc-lsopt: ',
673     & ' tflag = ',tflag
674     endif
675     endif
676    
677     if (.not. sflag .and. ifunc .eq. 0 ) then
678    
679     if (lphprint .and. myid .eq. 0 ) then
680     print *, 'pathei-lsopt: ',
681     & 'dostore 1,2 at iiter ', iiter
682     print *,'bnc-lsopt: dostore xx',xx(1),xx(2)
683     print *,'bnc-lsopt: dostore gg',gg(1),gg(2)
684     endif
685    
686     call dostore( nn, xx, .true., 1 )
687     call dostore( nn, gg, .true., 2 )
688    
689     temp = DNRM2( nn, gg, 1 )
690     call MPI_ALLREDUCE(temp*temp,gnorm,1,MPI_DOUBLE_PRECISION,MPI_SUM,
691     & MPI_COMM_WORLD,ierr)
692     gnorm = dsqrt(gnorm)
693    
694     c-----------------------------------------
695     c print information line
696     c-----------------------------------------
697     temp = DNRM2(nn,xx,1)
698     call MPI_REDUCE(temp*temp,temp1,1,MPI_DOUBLE_PRECISION,MPI_SUM,0,
699     & MPI_COMM_WORLD,ierr)
700     temp = DNRM2(nn,dd,1)
701     call MPI_REDUCE(temp*temp,temp2,1,MPI_DOUBLE_PRECISION,MPI_SUM,0,
702     & MPI_COMM_WORLD,ierr)
703    
704     if (myid .eq. 0) then
705     if (iprint .ge. 1) then
706     print '(2a)', ' Itn Step Nfun Objective '
707     $ , 'Norm G Norm X Norm (X(k-1)-X(k))'
708     end if
709     print iform, iiter, tact, ifunc, ff, gnorm
710     $ , dsqrt(temp1), tact*dsqrt(temp2)
711     endif
712    
713     c-----------------------------------------
714     c check output mode of ifail
715     c-----------------------------------------
716     if ( ifail .eq. 8
717     & .or. ifail .eq. 9) goto 1000
718    
719     c-----------------------------------------
720     c maximal number of simulation reached
721     c no goto in order to update Hessian
722     c-----------------------------------------
723     if (ifail .eq. 6) ifail = 0
724    
725     c-----------------------------------------
726     c NOTE: stopping tests are now done
727     c after having updated the matrix,
728     c so that update information can be stored
729     c in case of a later warm restart
730     c-----------------------------------------
731     c-----------------------------------------
732     c compute new s, y
733     c-----------------------------------------
734     do i = 1, nn
735     xdiff(i) = tact*dd(i)
736     end do
737    
738     c-----------------------------------------
739     c compute ys
740     c-----------------------------------------
741     do i = 1, nn
742     gold(i) = gg(i)-gold(i)
743     end do
744    
745     temp = DDOT( nn, gold, 1, xdiff, 1 )
746     call MPI_ALLREDUCE(temp,ys,1,MPI_DOUBLE_PRECISION,MPI_SUM,
747     & MPI_COMM_WORLD,ierr)
748    
749     if (ys .le. 0.) then
750     ifail = 4
751     if (myid .eq. 0 ) then
752     print *, 'bnc: max value of abs(gold) = ',maxval(abs(gold))
753     print *, 'pathei-lsopt: ys < 0; ifail = ', ifail
754     endif
755     goto 1000
756     endif
757    
758     cph(
759     cph-----------------------------------------
760     cph at this point it is clear that xdiff
761     cph provides a true optimized solution;
762     cph i.e. take new gradient gg to compute new dd
763     cph-----------------------------------------
764     cph)
765    
766     c-----------------------------------------
767     c update pointers for hessupd
768     c-----------------------------------------
769     if (nupdate .gt. 0) then
770    
771     if (jmax .eq. 0) then
772     jmax = jmax+1
773     if (lphprint .and. myid .eq. 0)
774     & print *, 'pathei-lsopt: ',
775     & 'first pointer update after cold start; ',
776     & 'iiter, jmin, jmax = ', iiter, jmin, jmax
777     else
778     jmax = jmax+1
779     if (jmax .gt. nupdate) jmax = jmax-nupdate
780    
781     if (jmin .eq. jmax) then
782     if (lphprint .and. myid .eq. 0)
783     & print *, 'pathei-lsopt: pointers updated for ',
784     & ' iiter, jmin, jmax = ', iiter, jmin, jmax
785     jmin = jmin+1
786     if (jmin .gt. nupdate) jmin = jmin-nupdate
787     end if
788     end if
789    
790     c-----------------------------------------
791     c compute sbar, ybar store rec = min 4,5
792     c-----------------------------------------
793     r1 = sqrt(1./ys)
794     call DSCAL( nn, r1, xdiff, 1 )
795     call DSCAL( nn, r1, gold, 1 )
796    
797     if (lphprint .and. myid .eq. 0)
798     & print *, 'pathei-lsopt: dostore at iiter, jmin, jmax ',
799     & iiter, jmin, jmax
800    
801     call dostore( nn, gold, .true., 2*jmax+2 )
802     call dostore( nn, xdiff, .true., 2*jmax+3 )
803    
804     c-----------------------------------------
805     c compute the diagonal preconditioner
806     c use dd as temporary array
807     c-----------------------------------------
808     call dgscale( nn, gold, xdiff, dd, rmin )
809    
810     endif
811    
812     c-----------------------------------------
813     c test convergence and stopping criteria
814     c-----------------------------------------
815     eps1 = gnorm / gnorm0
816     gnorm0 = gnorm
817     if (eps1 .lt. epsg) then
818     ifail = 11
819     goto 1000
820     endif
821    
822     c=======================================================================
823     c return of loop
824     c=======================================================================
825    
826     endif !end sflag check
827    
828     end do
829    
830     iiter = iiter - 1
831     ifail = 5
832    
833     c-----------------------------------------
834     c loop exit
835     c-----------------------------------------
836     1000 continue
837     ! nfunc = ifunc
838     epsg = eps1
839    
840     c-----------------------------------------------------------------------
841     c compute dd(i+1), xx(i+1) based on latest available gg(i), xx(i)
842     c for offline version
843     c-----------------------------------------------------------------------
844    
845     if (.not. sflag .and. ifunc .eq. 0 ) then
846     call lsupdxx(
847     & nn, ifail, lphprint
848     & , jmin, jmax, nupdate
849     & , ff, fmin, fold, gnorm0, dotdg
850     & , gg, dd, xx, xdiff
851     & , tmin, tmax, tact, epsx
852     & )
853    
854     endif
855     c Save xx(i+1) to file for offline version.
856     if (myid .eq. 0) then
857     print *, ' bnc-lsopt: write control ',
858     & xdiff(1),xdiff(2)
859     endif
860    
861     call optim_write_control( nn, xdiff )
862    
863     c-----------------------------------------------------------------------
864     c save data for warm start
865     c-----------------------------------------------------------------------
866    
867     if ( ifunc .eq. 0 ) sflag = .not. sflag
868     if (cold) sflag = .false.
869     call outstore( nn, ff, gnorm0, nupdate, jmin, jmax, sflag, tflag, ifunc, tact )
870    
871    
872     c-----------------------------------------
873     c print final information
874     c-----------------------------------------
875     if (iprint .ge. 5 .and. myid .eq. 0 ) then
876     print *
877     print '(a,i9)'
878     $ , ' number of iterations..............', iiter
879     print '(a,i9)'
880     $ , ' number of simulations.............', ifunc
881     print '(a,e9.2)'
882     $ , ' relative precision on g...........', epsg
883     end if
884    
885    
886     temp = DNRM2(nn,xx,1)
887     call MPI_REDUCE(temp*temp,temp1,1,MPI_DOUBLE_PRECISION,MPI_SUM,0,
888     & MPI_COMM_WORLD,ierr)
889     temp = DNRM2(nn,gg,1)
890     call MPI_REDUCE(temp*temp,temp2,1,MPI_DOUBLE_PRECISION,MPI_SUM,0,
891     & MPI_COMM_WORLD,ierr)
892    
893     if (iprint.ge.10 .and. myid .eq. 0 ) then
894     print *
895     print '(a,e15.8)'
896     $ , ' cost function...............', ff
897     print '(a,e15.8)'
898     $ , ' norm of x...................', dsqrt(temp1)
899     print '(a,e15.8)'
900     $ , ' norm of g...................', dsqrt(temp2)
901     end if
902    
903     c-----------------------------------------
904     c print error message
905     c-----------------------------------------
906     999 continue
907    
908     if (myid .eq. 0 ) then
909    
910     if (ifail .ne. 0) then
911     if (iprint .ge. 5) then
912     print *
913     print '(a)', ' optimization stopped because :'
914     if (ifail .lt. 0) then
915     print '(2x,a8,I3,a)', 'ifail = ', ifail
916     $ , ' user request during simul'
917     else if (ifail .eq. 0) then
918     print '(2x,a8,I3,a)', 'ifail = ', ifail
919     $ , ' optimal solution found'
920     else if (ifail .eq. 1) then
921     print '(2x,a8,I3,a)', 'ifail = ', ifail
922     $ , ' an input argument is wrong'
923     else if (ifail .eq. 2) then
924     print '(2x,a8,I3,a)', 'ifail = ', ifail
925     $ , ' warm start file is corrupted'
926     else if (ifail .eq. 3) then
927     print '(2x,a8,I3,a)', 'ifail = ', ifail
928     $ , ' the initial gradient is too small'
929     else if (ifail .eq. 4) then
930     print '(2x,a8,I3,a)', 'ifail = ', ifail
931     $ , ' the search direction is not a descent one'
932     else if (ifail .eq. 5) then
933     print '(2x,a8,I3,a)', 'ifail = ', ifail
934     $ , ' maximal number of iterations reached'
935     else if (ifail .eq. 6) then
936     print '(2x,a8,I3,a)', 'ifail = ', ifail
937     $ , ' maximal number of simulations reached'
938     else if (ifail .eq. 7) then
939     print '(2x,a8,I3,a)', 'ifail = ', ifail
940     $ , ' the linesearch failed'
941     else if (ifail .eq. 8) then
942     print '(2x,a8,I3,a)', 'ifail = ', ifail
943     $ , ' the function could not be improved'
944     else if (ifail .eq. 9) then
945     print '(2x,a8,I3,a)', 'ifail = ', ifail
946     $ , ' optline parameters wrong'
947     else if (ifail .eq. 10) then
948     print '(2x,a8,I3,a)', 'ifail = ', ifail
949     $ , ' cold start, no optimization done'
950     else if (ifail .eq. 11) then
951     print '(2x,a8,I3,a)', 'ifail = ', ifail
952     $ , ' convergence achieved within precision'
953     end if
954     print *
955     else if (iprint .ge. 1) then
956     print *
957     print '(a,i9)'
958     $ , ' after optimization ifail..........', ifail
959     print *
960     end if
961     end if
962    
963     end if
964     c-----------------------------------------
965     c end of subroutine
966     c-----------------------------------------
967     return
968    
969     end
970    
971     lsupdxx.f/ 1361899256 10100 26113 100644 5032 `
972    
973    
974    
975     subroutine lsupdxx(
976     & nn, ifail, lphprint
977     & , jmin, jmax, nupdate
978     & , ff, fmin, fold, gnorm0, dotdg
979     & , gg, dd, xx, xdiff
980     & , tmin, tmax, tact, epsx
981     & )
982    
983     c ==================================================================
984     c SUBROUTINE lsupdxx
985     c ==================================================================
986     c
987     c o conceived for variable online/offline version
988     c computes - new descent direction dd based on latest
989     c available gradient
990     c - new tact based on new dd
991     c - new control vector xx needed for offline run
992     c
993     c o started: Patrick Heimbach, MIT/EAPS
994     c 29-Feb-2000:
995     c
996     c o Version 2.1.0, 02-Mar-2000: Patrick Heimbach, MIT/EAPS
997     c
998     c ==================================================================
999     c SUBROUTINE lsupdxx
1000     c ==================================================================
1001     c
1002    
1003    
1004    
1005    
1006     implicit none
1007     include 'mpif.h'
1008    
1009     c-----------------------------------------
1010     c declare arguments
1011     c-----------------------------------------
1012     integer nmax
1013     parameter( nmax = 1372312408 )
1014     integer nn, jmin, jmax, nupdate, ifail
1015     double precision ff, fmin, fold, gnorm0, dotdg,dnorm
1016     double precision gg(nn), dd(nn), xx(nn), xdiff(nn)
1017     double precision tmin, tmax, tact, epsx,temp
1018     logical lphprint
1019    
1020     integer pidlen,myindx(2)
1021     integer status(MPI_STATUS_SIZE),ierr
1022     integer myid, nprocs,mystart,myend
1023     common /mpi_parm/ myid,nprocs,mystart,myend
1024    
1025     c-----------------------------------------
1026     C declare local variables
1027     c-----------------------------------------
1028     integer i
1029     double precision fdiff, preco
1030    
1031     real*8,allocatable:: vv(:)
1032     integer, allocatable:: displs(:)
1033     integer, allocatable:: counts(:)
1034     double precision DDOT,DNRM2
1035     external DDOT,DNRM2
1036    
1037     c ==================================================================
1038    
1039     c-----------------------------------------
1040     c use Fletchers scaling
1041     c and initialize diagional to 1.
1042     c-----------------------------------------
1043     c
1044     if ( ( jmax .eq. 0 ) .or. (nupdate .eq. 0 ) ) then
1045    
1046     if (jmax .eq. 0) then
1047     fold = fmin
1048     ! if (lphprint .and. myid .eq. 0)
1049     ! & print *, 'pathei-lsopt: using fold = fmin = ', fmin
1050     end if
1051     ! fdiff = fold - ff
1052     fdiff = .01D0*ff
1053     if (jmax .eq. 0) fdiff = ABS(fdiff)
1054    
1055     preco = 2. * fdiff / (gnorm0*gnorm0)
1056     do i = 1, nn
1057     dd(i) = -gg(i)*preco
1058     end do
1059    
1060     if (lphprint .and. myid .eq. 0)
1061     & print *, 'pathei-lsopt: first estimate of dd via ',
1062     & '.01*ff'
1063    
1064     c-----------------------------------------
1065     c use the matrix stored in [diag]
1066     c and the (y,s) pairs
1067     c-----------------------------------------
1068    
1069     else
1070    
1071     do i = 1, nn
1072     dd(i) = -gg(i)
1073     end do
1074    
1075     if (jmax .gt. 0) then
1076     call hessupd( nn, nupdate, dd, jmin, jmax, xdiff,
1077     & lphprint )
1078     else
1079     if (lphprint .and. myid .eq. 0)
1080     & print *, 'pathei-lsopt: no hessupd for first optim.'
1081     end if
1082    
1083     endif
1084    
1085     c-----------------------------------------
1086     c check whether new direction is a descent one
1087     c-----------------------------------------
1088    
1089     temp = DDOT( nn, dd, 1, gg, 1 )
1090     call MPI_ALLREDUCE(temp,dotdg,1,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,ierr)
1091    
1092     if (dotdg .ge. 0.0) then
1093     ifail = 4
1094     if(myid .eq. 0) print *,'bnc: ifail = 4, dotdg > 0.'
1095     goto 999
1096     end if
1097    
1098     c----------------------------------
1099     c declare arguments
1100     c----------------------------------
1101    
1102     tmin = 0.
1103     do i = 1, nn
1104     tmin = max( tmin, abs(dd(i)) )
1105     end do
1106     temp = tmin
1107     call MPI_ALLREDUCE(temp,tmin,1,MPI_DOUBLE_PRECISION,MPI_MAX,MPI_COMM_WORLD,ierr)
1108     tmin = epsx/tmin
1109    
1110     c----------------------------------
1111     c make sure that t is between
1112     c tmin and tmax
1113     c----------------------------------
1114    
1115     tact = 1.0
1116     tmax = 1.0e+10
1117     if (tact.le.tmin) then
1118     tact = tmin
1119     if (tact.gt.tmax) then
1120     tmin = tmax
1121     endif
1122     endif
1123    
1124     if (tact .gt. tmax) then
1125     tact = tmax
1126     ifail = 7
1127     endif
1128    
1129     c----------------------------------
1130     c compute new x
1131     c----------------------------------
1132     temp = DNRM2(nn,dd,1)
1133     call MPI_ALLREDUCE(temp*temp,dnorm,1,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,ierr)
1134     dnorm = dsqrt(dnorm)
1135    
1136     if (myid .eq. 0) then
1137     print *,'bnc: initial stepsize tact = ',tact
1138     print *,'bnc: norm of dd = ',dnorm
1139     endif
1140    
1141     do i = 1, nn
1142     xdiff(i) = xx(i) + tact*dd(i)
1143     end do
1144    
1145     c----------------------------------
1146     c save new x to file for offline version
1147     c----------------------------------
1148    
1149     999 continue
1150    
1151     return
1152    
1153     end
1154     lsline.f/ 1361899257 10100 26113 100644 7069 `
1155    
1156    
1157    
1158     subroutine lsline(
1159     & simul
1160     & , nn, ifail, lphprint
1161     & , ifunc, nfunc
1162     & , ff, dotdg
1163     & , sflag, tflag, tact, epsx
1164     & , dd, gg, xx, xdiff
1165     & )
1166    
1167     c ==================================================================
1168     c SUBROUTINE lsline
1169     c ==================================================================
1170     c
1171     c o line search algorithm for determining control vector update;
1172     c After computing updated control vector from given gradient,
1173     c a forward and adjoint model run are performed (simul.F)
1174     c using the updated control vector.
1175     c Tests are then applied to see whether solution has improved.
1176     c
1177     c o Reference: J.C. Gilbert & C. Lemarechal
1178     c Some numerical experiments with variable-storage
1179     c quasi-Newton algorithms
1180     c Mathematical Programming 45 (1989), pp. 407-435
1181     c
1182     c o started: ??? not reproducible
1183     c
1184     c o changed: Benny Cheng, NASA/JPL
1185     c
1186     c ==================================================================
1187     c SUBROUTINE lsline
1188     c ==================================================================
1189    
1190    
1191    
1192    
1193    
1194     implicit none
1195     include 'mpif.h'
1196     c----------------------------------
1197     c declare arguments
1198     c----------------------------------
1199     integer nmax
1200     parameter( nmax = 1372312408 )
1201     integer nn, ifail, ifunc, nfunc
1202     double precision ff, dotdg, tact, epsx
1203     double precision xx(nn), gg(nn), xdiff(nn),dd(nn)
1204     logical tflag,sflag,isforward
1205     logical lphprint
1206    
1207     external simul
1208    
1209     integer pidlen,myindx(2)
1210     integer status(MPI_STATUS_SIZE),ierr
1211     common /mpi_parm/myid,nprocs,mystart,myend
1212     integer myid,nprocs,mystart,myend
1213     c----------------------------------
1214     c declare local variables
1215     c----------------------------------
1216    
1217     double precision xpara1, xpara2
1218     parameter( xpara1 = 0.001D0, xpara2=0.9D0 )
1219    
1220     double precision factor
1221     parameter( factor = 0.2 )
1222    
1223     double precision barmax
1224     parameter( barmax = 0.3 )
1225     double precision barmul
1226     parameter( barmul = 5.0 )
1227     double precision barmin
1228     parameter( barmin = 0.01 )
1229     double precision tmax
1230     parameter( tmax = 5. )
1231    
1232     integer i
1233    
1234     double precision tg, fg, td, ta
1235     double precision fa, fpa, fp
1236     double precision fnew, fdiff,ftemp
1237     double precision z, test, barr
1238     double precision left, right, told
1239     double precision t,a,b
1240     double precision xtemp(nn),gtemp(nn),gold(nn)
1241     external DDOT,DNRM2
1242     double precision DDOT, DNRM2
1243    
1244     double precision temp,gnorm0
1245     real*8,allocatable:: vv(:)
1246     integer, allocatable:: displs(:)
1247     integer, allocatable:: counts(:)
1248    
1249     c----------------------------------
1250     c check parameters
1251     c----------------------------------
1252    
1253     if ( (nn.le.0)
1254     & .or. (xpara1.le.0.0) .or. (xpara1.ge.0.5)
1255     & .or. (xpara2.le.xpara1) .or. (xpara2.ge.1.0) ) then
1256     ifail = 9
1257     go to 999
1258     endif
1259    
1260     c----------------------------------
1261     c initialization
1262     c----------------------------------
1263    
1264     c=======================================================================
1265     c begin of simulation iter.
1266     c=======================================================================
1267    
1268     if (lphprint .and. myid .eq. 0)
1269     & print *, 'lsopt: simul.'
1270    
1271     c------------------------------------
1272     c compute cost function and gradient
1273     c------------------------------------
1274    
1275     gold = gg
1276     temp = DNRM2(nn,gg,1)
1277     call MPI_ALLREDUCE(temp*temp,gnorm0,1,MPI_DOUBLE_PRECISION,
1278     & MPI_SUM,MPI_COMM_WORLD,ierr)
1279     gnorm0 = dsqrt(gnorm0)
1280    
1281     if (sflag ) then
1282    
1283     !get estimated cost from hessian update control, this is the trial step
1284     isforward = .true.
1285     call simul( 0, isforward,nn, xdiff, fnew, gg )
1286    
1287     xtemp = xdiff
1288     ! new direction vector dd
1289    
1290     temp = DDOT( nn, xdiff - xx, 1, gold, 1 )
1291     call MPI_ALLREDUCE(temp,b,1,MPI_DOUBLE_PRECISION,MPI_SUM,
1292     & MPI_COMM_WORLD,ierr)
1293     dotdg = b
1294    
1295     c-----------------------------------------
1296     c quadratic line search
1297     c-----------------------------------------
1298    
1299     a = fnew - ff - b
1300     t = -b/(2.*a)
1301     t = dmax1(t,0.D0)
1302    
1303     if (t <= 1.d-2 ) then
1304     tact = 1.
1305     xdiff = xx - 2.*(.01*ff)*gold*tact/(gnorm0*gnorm0)
1306     tflag = .false.
1307    
1308     if (lphprint .and. myid .eq. 0)
1309     & print *, 'lsopt: using steepest descent, t value ',t,'< .01'
1310    
1311     else
1312    
1313     xdiff = (1. - t)*xx + t*xdiff
1314     tact = t
1315     tflag = .true.
1316     endif
1317    
1318     if (lphprint .and. myid .eq. 0)
1319     & print *, 'lsopt: trial stepsize =',t
1320    
1321     ! no hessian update , get new adjoint run
1322     goto 999
1323    
1324     else
1325    
1326     !no line search
1327     !read new ctrl vector and new cost gradient and new cost
1328     isforward = .false.
1329     call simul( 0, isforward, nn, xdiff, fnew, gg )
1330    
1331     if (tflag) then
1332    
1333     !read in trial step adjoint output
1334     call simul( ifunc+1, isforward, nn, xtemp, ftemp, gtemp)
1335    
1336     dd = xtemp - xx
1337     c-----------------------------------------
1338     c apply 1st Wolfe test
1339     c-----------------------------------------
1340     fdiff = fnew - ff
1341    
1342     temp = DDOT( nn, dd, 1, gold, 1 )
1343     call MPI_ALLREDUCE(temp,dotdg,1,MPI_DOUBLE_PRECISION,MPI_SUM,
1344     & MPI_COMM_WORLD,ierr)
1345    
1346     if (fdiff .gt. tact*xpara1*dotdg) then
1347     ifail = 7
1348     if (lphprint .and. myid .eq. 0)
1349     & print *, 'lsopt: fails wolfe test 1'
1350    
1351     endif
1352    
1353     c-----------------------------------------
1354     c 1st Wolfe test 1 ok, apply 2nd Wolf test
1355     c-----------------------------------------
1356    
1357     temp = DDOT( nn, dd, 1, gg, 1 )
1358     call MPI_ALLREDUCE(temp,fp,1,MPI_DOUBLE_PRECISION,MPI_SUM,
1359     & MPI_COMM_WORLD,ierr)
1360    
1361     if (fp .lt. xpara2*dotdg) then
1362     ifail = 7
1363     if (lphprint .and. myid .eq. 0)
1364     & print *, 'lsopt: fails wolfe test 2'
1365     endif
1366    
1367     c-----------------------------------------
1368     c 2nd Wolfe test 2 ok, donc pas serieux, on sort
1369     c-----------------------------------------
1370    
1371     if (ifail .eq. 7 ) then
1372    
1373     if (ifunc .lt. nfunc) then
1374     t = dmin1(tact,tmax)
1375     if (t < 5.D0 ) t = .5*t
1376     xdiff = (1. - t)*xx + t*xtemp
1377     tact = t
1378     ifunc = ifunc + 1
1379     goto 999
1380     endif
1381    
1382     endif !end ifail = 7
1383    
1384     else
1385    
1386     if ( fnew > .999D0*ff ) then
1387    
1388     if (ifunc .lt. nfunc) then
1389     tact = tact*.5
1390     xdiff = xx - 2.*(.01*ff)*gold*tact/(gnorm0*gnorm0)
1391     ifunc = ifunc + 1
1392     goto 999
1393     endif
1394    
1395     endif
1396    
1397     endif ! end of tflag
1398    
1399     dd = xdiff - xx
1400     ff = fnew
1401     xx =xdiff
1402     ifunc = 0
1403     tact = 1.
1404     endif ! end of sflag
1405     c-----------------------------------------
1406     c end of routine
1407     c-----------------------------------------
1408     999 continue
1409    
1410     return
1411    
1412     end
1413    
1414     hessupd.f/ 1361899259 10100 26113 100644 3641 `
1415    
1416    
1417    
1418     subroutine hessupd( nn, mupd, dd, jmin, jmax, xdiff, lphprint )
1419    
1420     c ==================================================================
1421     c SUBROUTINE hessupd
1422     c ==================================================================
1423     c
1424     c o controls update of descent vector using available
1425     c approximation of Hessian Matrix based on gradients of
1426     c previous iterations
1427     c
1428     c o Reference: J.C. Gilbert & C. Lemarechal
1429     c Some numerical experiments with variable-storage
1430     c quasi-Newton algorithms
1431     c Mathematical Programming 45 (1989), pp. 407-435
1432     c
1433     c o started: ??? not reproducible
1434     c
1435     c o changed: Patrick Heimbach, MIT/EAPS
1436     c 24-Feb-2000:
1437     c - changed some variable names to be consistent
1438     c with routine lsoptv, lsline;
1439     c
1440     c o Version: 2.1.0, 02-Mar-2000: Patrick Heimbach, MIT/EAPS
1441     c
1442     c ==================================================================
1443     c SUBROUTINE hessupd
1444     c ==================================================================
1445    
1446     implicit none
1447    
1448    
1449    
1450    
1451     include 'mpif.h'
1452     c------------------------------------
1453     c declare arguments
1454     c------------------------------------
1455     integer nn, mupd, jmin, jmax
1456     double precision dd(nn), alpha(100), xdiff(nn)
1457     logical lphprint
1458     integer status(MPI_STATUS_SIZE),ierr
1459     integer myid, nprocs,mystart,myend
1460     common /mpi_parm/ myid,nprocs,mystart,myend
1461    
1462     c------------------------------------
1463     c declare local variables
1464     c------------------------------------
1465     external DDOT
1466     double precision DDOT
1467    
1468     integer jfin, i, j, jp
1469     double precision r
1470     double precision temp
1471    
1472     c------------------------------------
1473     c initialization
1474     c------------------------------------
1475     jfin = jmax
1476    
1477     if (lphprint .and. myid .eq. 0)
1478     & print *, 'pathei-lsopt: in hessupd; ',
1479     & 'jmin, jmax, mupd:', jmin, jmax, mupd
1480    
1481    
1482     if (jfin.lt.jmin) jfin = jmax+mupd
1483    
1484     c------------------------------------
1485     c compute right hand side
1486     c------------------------------------
1487     do j = jfin,jmin,-1
1488    
1489     if (lphprint .and. myid .eq. 0)
1490     & print *, 'pathei-lsopt: in hessupd; loop ',
1491     & 'j,jfin,jmin = ', j,jfin,jmin
1492    
1493     jp = j
1494     if (jp.gt.mupd) jp = jp-mupd
1495     call dostore( nn, xdiff, .false., 2*jp+3 )
1496    
1497     temp = DDOT( nn, dd, 1, xdiff, 1 )
1498     call MPI_ALLREDUCE(temp,r,1,MPI_DOUBLE_PRECISION,MPI_SUM,
1499     & MPI_COMM_WORLD,ierr)
1500     ! r = DDOT( nn, dd, 1, xdiff,1 )
1501    
1502     call dostore( nn, xdiff, .false., 2*jp+2 )
1503     alpha(jp) = r
1504     do i = 1, nn
1505     dd(i) = dd(i) - r*xdiff(i)
1506     end do
1507     end do
1508    
1509     c------------------------------------
1510     c multiply precondition matrix
1511     c------------------------------------
1512     if (mupd .ne. 0) then
1513     call dostore( nn, xdiff, .false., 3 )
1514     do i = 1, nn
1515     dd(i) = dd(i)*xdiff(i)
1516     end do
1517     end if
1518    
1519     c------------------------------------
1520     c compute left hand side
1521     c------------------------------------
1522     do j = jmin,jfin
1523     jp = j
1524     if (jp .gt. mupd) jp = jp-mupd
1525     call dostore( nn, xdiff, .false., 2*jp+2 )
1526    
1527     temp = DDOT( nn, dd, 1, xdiff, 1 )
1528     call MPI_ALLREDUCE(temp,r,1,MPI_DOUBLE_PRECISION,MPI_SUM,
1529     & MPI_COMM_WORLD,ierr)
1530     r = alpha(jp) - r
1531     ! r = alpha(jp) - DDOT( nn, dd,1 , xdiff, 1 )
1532    
1533     call dostore( nn, xdiff, .false., 2*jp+3 )
1534     do i = 1, nn
1535     dd(i) = dd(i) + r*xdiff(i)
1536     end do
1537     end do
1538    
1539     return
1540    
1541     end
1542    
1543     cubic.f/ 1361899270 10100 26113 100644 2199 `
1544    
1545    
1546    
1547     subroutine cubic( t, f, fp, ta, fa, fpa, tlower, tupper )
1548    
1549     c-----------------------------------------
1550     c arguments
1551     c-----------------------------------------
1552     double precision t, f, fp, ta, fa, fpa, tlower, tupper
1553    
1554     c-----------------------------------------
1555     c local variables
1556     c-----------------------------------------
1557     double precision sign, den, anum
1558     double precision z1, b, discri
1559    
1560     c-----------------------------------------
1561     c Using f and fp at t and ta,
1562     c computes new t by cubic formula
1563     c safeguarded inside [tlower,tupper].
1564     c-----------------------------------------
1565     z1 = dble(fp) + dble(fpa) - 3.d0*dble(fa-f)/dble(ta-t)
1566     b = z1 + dble(fp)
1567    
1568     c-----------------------------------------
1569     c first compute the discriminant
1570     c (without overflow)
1571     c-----------------------------------------
1572     if (abs(z1).le.1.) then
1573     discri = z1*z1-dble(fp)*dble(fpa)
1574     if (discri .lt. 0.d0) then
1575     if (fp.lt.0.) t = tupper
1576     if (fp.ge.0.) t = tlower
1577     return
1578     else
1579     discri = dsqrt(discri)
1580     end if
1581     else
1582     discri = dble(fp)/z1
1583     discri = discri*dble(fpa)
1584     discri = z1-discri
1585     if (z1.ge.0.d0 .and. discri.ge.0.d0) then
1586     discri = dsqrt(z1)*dsqrt(discri)
1587     else if (z1.le.0.d0 .and. discri.le.0.d0) then
1588     discri = dsqrt(-z1)*dsqrt(-discri)
1589     else
1590     if (fp.lt.0.) t = tupper
1591     if (fp.ge.0.) t = tlower
1592     return
1593     end if
1594     end if
1595    
1596     c-----------------------------------------
1597     c discriminant nonnegative,
1598     c compute solution (without overflow)
1599     c-----------------------------------------
1600     if (t-ta .lt. 0.0) then
1601     discri = -discri
1602     end if
1603    
1604     sign = (t-ta)/abs(t-ta)
1605     if (sngl(b)*sign .gt. 0.0) then
1606     t = t + fp*(ta-t)/sngl(b+discri)
1607     else
1608     den = sngl(z1+b+dble(fpa))
1609     anum = sngl(b-discri)
1610     if (abs((t-ta)*anum).lt.(tupper-tlower)*abs(den)) then
1611     t = t + anum*(ta-t)/den
1612     else
1613     t = tupper
1614     end if
1615     end if
1616    
1617     t = max( t, tlower )
1618     t = min( t, tupper )
1619    
1620     return
1621     end
1622    
1623     dgscale.f/ 1361899261 10100 26113 100644 2197 `
1624    
1625    
1626    
1627     subroutine dgscale( nn, gold, xdiff, diag, rmin )
1628    
1629    
1630     c ==================================================================
1631     c SUBROUTINE dgscale
1632     c ==================================================================
1633     c
1634     c o computes new preconditioner and writes it to OPWARMD
1635     c
1636     c o started: ??? not reproducible
1637     c
1638     c o Version: 2.1.0, 02-Mar-2000: Patrick Heimbach, MIT/EAPS
1639     c
1640     c ==================================================================
1641     c SUBROUTINE dgscale
1642     c ==================================================================
1643    
1644     implicit none
1645    
1646    
1647    
1648    
1649     include 'mpif.h'
1650    
1651     integer nn
1652     double precision gold(nn), xdiff(nn), diag(nn)
1653    
1654     integer i
1655     double precision r1, rmin, den
1656    
1657     double precision temp
1658     integer status(MPI_STATUS_SIZE),ierr
1659     integer myid, nprocs,mystart,myend
1660     common /mpi_parm/ myid,nprocs,mystart,myend
1661    
1662     c-----------------------------------------
1663     c read diagonal
1664     c-----------------------------------------
1665     call dostore( nn, diag, .false., 3 )
1666    
1667     r1 = 0.
1668     do i = 1, nn
1669     r1 = r1 + gold(i)*gold(i)*diag(i)
1670     end do
1671    
1672     temp = r1
1673     call MPI_ALLREDUCE(temp,r1,1,MPI_DOUBLE_PRECISION,MPI_SUM,
1674     & MPI_COMM_WORLD,ierr)
1675     r1 = 1.0 / r1
1676    
1677     call DSCAL( nn, r1, diag, 1 )
1678    
1679     c-----------------------------------------
1680     c update the diagonal
1681     c (gg is used as an auxiliary vector)
1682     c-----------------------------------------
1683    
1684     den = 0.0
1685    
1686     do i = 1, nn
1687     cph(
1688     if (diag(i).LE.0) then
1689     cph print *, 'pathei-lsopt: in dgscale; diag = 0 for i=', i
1690     diag(i) = rmin
1691     end if
1692     cph)
1693     den = den + xdiff(i)*xdiff(i) / diag(i)
1694     end do
1695    
1696     temp=den
1697     call MPI_ALLREDUCE(temp,den,1,MPI_DOUBLE_PRECISION,MPI_SUM,
1698     & MPI_COMM_WORLD,ierr)
1699    
1700     do i = 1, nn
1701     diag(i) = 1./
1702     $ (1./diag(i)+gold(i)**2-(xdiff(i)/diag(i))**2/den)
1703     if (diag(i).le.0.) then
1704     diag(i) = rmin
1705     endif
1706     end do
1707    
1708     c-----------------------------------------
1709     c write diagonal
1710     c-----------------------------------------
1711     call dostore( nn, diag, .true., 3 )
1712    
1713     return
1714     end
1715    
1716     instore.f/ 1361899270 10100 26113 100644 1780 `
1717    
1718    
1719     subroutine instore( n, fc, gnorm0, is, m, jmin, jmax,
1720     & cold, sflag, tflag, ifunc, tact)
1721     c
1722     c arguments
1723     c
1724     integer n, is, m, jmin, jmax, ifail, ifunc
1725     double precision fc, gnorm0,tact
1726     logical cold
1727     logical sflag, tflag
1728     integer*8 rectmp, tmp1, tmp2
1729     c----
1730     c
1731     common /xxstore/ itape, ntape, isize
1732     integer itape, ntape, isize
1733     common /mpi_parm/ myid,nprocs,mystart,myend
1734     integer myid, nprocs,mystart,myend
1735    
1736     ifail = 0
1737     itape = 91
1738     ntape = 92
1739     isize = is
1740     cold = .true.
1741    
1742     if (myid .eq. 0) print *, 'pathei: in instore '
1743    
1744     cc one record = two arrays of real*(isize)
1745    
1746     open( itape
1747     $ , file = 'OPWARMI'
1748     $ , status = 'unknown'
1749     $ , form = 'formatted'
1750     $ , access = 'sequential'
1751     $ )
1752    
1753     read( itape, *, end=800, err=900 ) n, fc, gnorm0,
1754     $ m, jmin, jmax,
1755     & sflag, tflag, ifunc, tact
1756     !Note: bnc read itape defaults to cold if OPWARMI has 0 size and
1757     ! skips the next line, due to end condition
1758    
1759     cold = .false.
1760    
1761     800 continue
1762     close(itape)
1763    
1764     if( myid .eq. 0) then
1765     print*
1766     write(*,'(a,i10,a,i2)')
1767     $ ' opening direct access with recl = ',n,' * ',isize
1768     print*
1769     endif
1770    
1771     tmp1 = n
1772     tmp2 = isize
1773     rectmp = tmp1*tmp2
1774    
1775     cph(
1776     if(myid .eq. 0) print *, 'pathei rectmp ', rectmp, n, isize
1777     cph)
1778    
1779     ! open( ntape
1780     ! $ , file = 'OPWARMD'
1781     ! $ , status = 'unknown'
1782     ! $ , form = 'unformatted'
1783     ! $ , access = 'direct'
1784     ! $ , recl = rectmp
1785     ! $ )
1786    
1787     return
1788    
1789     900 continue
1790     close(itape)
1791     ifail = 1
1792    
1793     return
1794     end
1795     dostore.f/ 1361899270 10100 26113 100644 1137 `
1796    
1797    
1798     subroutine dostore( n, x, store, j )
1799     c
1800     c arguments
1801     c
1802     integer n, i, j
1803     double precision x(n)
1804     real*4 tmpx(n)
1805     logical store
1806    
1807     common /xxstore/ itape, ntape, isize
1808     integer itape, ntape, isize
1809     common /mpi_parm/myid,nprocs,mystart,myend
1810     integer myid,nprocs,mystart,myend
1811    
1812     cph(
1813     cph print *, 'pathei in dostore ',
1814     cph & store, n, ntape, j
1815     cph)
1816    
1817    
1818     if (store) then
1819     do i = 1, n
1820     tmpx(i) = x(i)
1821     enddo
1822     !bnc may need to fix this
1823     open( ntape
1824     $ , file = 'OPWARMD'
1825     $ , status = 'unknown'
1826     $ , form = 'unformatted'
1827     $ , access = 'direct'
1828     $ , recl = isize*n
1829     $ )
1830     write( ntape, rec=(j-1)*nprocs+myid+1) tmpx
1831     close(ntape)
1832     else
1833     open( ntape
1834     $ , file = 'OPWARMD'
1835     $ , status = 'unknown'
1836     $ , form = 'unformatted'
1837     $ , access = 'direct'
1838     $ , recl = isize*n
1839     $ )
1840     read( ntape, rec=(j-1)*nprocs+myid+1) tmpx
1841     close(ntape)
1842     do i = 1, n
1843     x(i) = tmpx(i)
1844     enddo
1845     endif
1846    
1847     return
1848     end
1849    
1850     outstore.f/ 1361899270 10100 26113 100644 636 `
1851    
1852    
1853     subroutine outstore( n, fc, gnorm0, m, jmin, jmax, sflag, tflag, ifunc, tact )
1854     c
1855     c arguments
1856     c
1857     integer n, m, jmin, jmax, ifunc
1858     double precision fc, gnorm0, tact
1859     logical sflag, tflag
1860     c----
1861     c
1862     common /xxstore/ itape, ntape, isize
1863     integer itape, ntape, isize
1864    
1865     if (myid .eq. 0 ) then
1866     open( itape
1867     $ , file = 'OPWARMI'
1868     $ , access = 'sequential'
1869     $ , form = 'formatted' )
1870     rewind (itape)
1871    
1872     write( itape, * ) n, fc, gnorm0, m, jmin, jmax, sflag, tflag, ifunc, tact
1873    
1874     close(itape)
1875     endif
1876    
1877     close(ntape)
1878    
1879     return
1880     end
1881     lswri.f/ 1361899270 10100 26113 100644 1470 `
1882    
1883    
1884    
1885     subroutine lswri( isize, phniter, NN, xx, gg, lphprint )
1886    
1887     c ==================================================================
1888     c SUBROUTINE lswri
1889     c ==================================================================
1890     c
1891     c o writes formatted output of updated controls and
1892     c adjoint variables
1893     c
1894     c o started: Patrick Heimbach, MIT/EAPS
1895     c 01-Apr-1999
1896     c
1897     c ==================================================================
1898     c SUBROUTINE lswri
1899     c ==================================================================
1900    
1901     implicit none
1902    
1903     C ========= Routine arguments ======================================
1904    
1905     INTEGER isize, phniter, NN
1906     real*4 xx(NN), gg(NN)
1907     cph DOUBLE PRECISION xx(NN), gg(NN)
1908     LOGICAL lphprint
1909    
1910     cph CHARACTER yitnum*3
1911     c
1912    
1913     C ========= Local variables ========================================
1914    
1915    
1916     C=======================================================================
1917    
1918     c if (lphprint)
1919     c & print *, 'pathei: formatted output of xx, gg, in lswri: ',
1920     c & phniter
1921     c
1922     c open(95,
1923     c & FILE='PH_X.dat',
1924     c & FORM='UNFORMATTED',
1925     c & ACCESS='DIRECT',
1926     c & RECL=NN*isize)
1927     c write(95,REC=phniter+1) xx
1928     c close(95)
1929     c
1930     c open(95,
1931     c & FILE='PH_G.dat',
1932     c & FORM='UNFORMATTED',
1933     c & ACCESS='DIRECT',
1934     c & RECL=NN*isize)
1935     c write(95,REC=phniter+1) gg
1936     c close(95)
1937    
1938     end
1939     distwork.o/ 1361899272 10100 26113 100644 1552 `
1940     ELF>P@@  "'7GQX g
1941     -pUHDDЙ6t,DB+™AAED;Ay9Bu.E,DЙAADED;Ay9BuEAH]x ,p k
1942     _p
1943     distwork.f distwork_ distwork.f.strtab.symtab.data.bss.textdistwork_.note.GNU-stack.eh_frame.trace.rela.eh_frame.rela.trace  , 00000@8 x"x'xp7GHQ0` sXg0distwork.f/ 1361899270 10100 26113 100644 1000 `
1944    
1945    
1946     subroutine distwork(myid,numprocs,nmax,mystart,myend,my_veclen)
1947     ! There are numprocs of MPI processes calling this routine
1948     ! Distribute different sections to the processes
1949     implicit none
1950    
1951     ! Input variables
1952     integer :: myid,nmax,numprocs
1953     ! Output variables
1954     integer :: mystart,myend
1955     ! Local variables
1956     integer :: rest, my_veclen
1957    
1958     rest = mod(nmax,numprocs)
1959     ! if(rest.gt.numprocs/2) then
1960     if(rest .ne. 0) then
1961     ! If each process takes my_veclen, total will be bigger than nmax
1962     my_veclen = (nmax+(numprocs-rest))/numprocs
1963     mystart = 1 + myid*my_veclen
1964     myend = mystart + my_veclen - 1
1965     if(myid.eq.numprocs-1) myend = nmax
1966     else
1967     ! If each process takes my_veclen, total will be less than nmax
1968     my_veclen = nmax/numprocs
1969     mystart = 1 + myid*my_veclen
1970     myend = mystart + my_veclen - 1
1971     if(myid.eq.numprocs-1) myend = nmax
1972     endif
1973     end subroutine distwork
1974    
1975     pddot.o/ 1269896888 9435 26131 100644 8016 `
1976     ELF2@@pddot.f.strtab.symtab.textpddot_pddot_??unwSTRLITPACK_0$0STRLITPACK_5$0$0for_write_seq_lisSTRLITPACK_6$0$0for_write_seq_lis_xmitpddot_$STATUSES$0$0pddot_$REQUESTS$0$0STRLITPACK_7$0$0STRLITPACK_9$0$0LITPACK_4$0$0LITPACK_3$0$0LITPACK_2$0$0STRLITPACK_10$0$0LITPACK_0$0$0LITPACK_1$0$0STRLITPACK_8$0$0STRLITPACK_11$0$0LITPACK_5$0$0STRLITPACK_12$0$0for_emit_diagnosticddot_mpi_waitall_mpi_reduce_STRLITPACK_13$0$0STRLITPACK_14$0$0STRLITPACK_15$0$0STRLITPACK_16$0$0LITPACK_7$0$0LITPACK_6$0$0LITPACK_8$0$0LITPACK_10$0$0LITPACK_13$0$0LITPACK_12$0$0LITPACK_9$0$0LITPACK_11$0$0.IA_64.unwind_info__udt_pddot_??unw.IA_64.unwind.bss.rodata.sbss.sdata.rodata.str1.4mpi_sgi_private_status_mpi_sgi_private_mpi_sgi_private_inplace_mpi_sgi_private_char_mpi_win_dup_fn_mpi_win_null_delete_fn_mpi_win_null_copy_fn_mpi_comm_dup_fn_mpi_comm_null_delete_fn_mpi_comm_null_copy_fn_mpi_dup_fn_mpi_null_delete_fn_mpi_null_copy_fn_.trace.rela.text.rela.IA_64.unwind.rela.trace &`s0bpe A d .  ? _    $ ( , 0Q 4 8 < @ D H L PC T XQ \4 `% d
1977     2
1978         Ruq$<Rc|@TK``>#AH XN  )O aH@ ` bB`b`,p1HX `2! 3BgXl3@@pA!e`p8! H@ p a!`C0B 4t X8 (X@PPr% 0# Lp0# p@8 `H @$ A @ a @=A @p<A @bh0A 04H.PP\!0B X
1979     X$H2!#PV!p$cX$@#HZp$HA(0 B HO $(`!0,H`@X!7`h$H0 !H@$PH $H$ pN G h   `81 0t ((@Ht ,t  pBpl,
1980     14`WP!P@`!B@  pp!B` !BP0BPB`!B@ ( p!B` !BP@1BPB`!B@  px!B` !BP0PB`!B@ ( pt!B` !BPV!PL!Bs I pH! BsIX=?#s~FP lB  Pj!B` PxZ!B
1981      h^!B
1982     `V!B@ P8bB 8HHNH1 L03 J  H18t `$t t t <q!l, hdX`` h8 `8 ,I (I p@H `HH 04
1983     <`PaXB$b $`BX"@9` h!@BY !HB
1984     PV!H$4`$ H`BX@)` h! BY!$B
1985     PV!$b@$`BX4@9` h0!dBY2!lB
1986     PV!$4`x$H`BX @)` h!<BY!DB
1987     PV!
1988     p.pB@@I $H`@
1989     I?#~FP T@03 X
1990     |.pH@$BPb!Bl! $H$HPT1B
1991     pbB
1992     @UpH 61B`
1993     (a fort: (%d): Subscript #%d of the array %s has value %d which is less than the lower bound of %d
1994     fort: (%d): Subscript #%d of the array %s has value %d which is greater than the upper bound of %d
1995     8 XXYYXXYYnwork =
1996      pddot.f pddot_  _2**I0*I12
1997     *2 2 `*a*q********I2I2I2BI2I3I4I5p*r2 I2*2 2I2P* R2 I2*!2 I2@*#A*"RI3q**I4*%*(*'*$*&I5__ _'/0'/00 @6H/~
1998     @ @`@p0p2fvfH^0 pddot.f/ 1269896881 9435 26131 100644 1677 `
1999    
2000    
2001     FUNCTION PDDOT(nmax,X,xn,Y,yn,myid,my_veclen,numprocs)
2002     implicit none
2003     include 'mpif.h'
2004    
2005     integer :: xn, yn
2006     integer :: i,nmax,my_veclen,nwork,mystart,myend
2007     integer :: ierr, myid, numprocs
2008     integer :: requests(2)
2009     integer :: statuses(MPI_STATUS_SIZE,2)
2010    
2011     real(kind=8) :: answer, total, totend, DD
2012     real(kind=8) :: x(nmax), y(nmax)
2013     DOUBLE PRECISION PDDOT
2014    
2015     DOUBLE PRECISION DDOT
2016     EXTERNAL DDOT
2017     total = 0.0
2018     totend = 0.0
2019    
2020     nwork = nmax/(my_veclen*numprocs)
2021     write(*,*) "nwork = ", nwork
2022    
2023     do i=1,nwork
2024     !
2025     mystart = 1 + (i-1)*(my_veclen*numprocs) + myid*my_veclen
2026     myend = mystart + my_veclen - 1
2027     ! write(*,*)"myid mystart myend = ", myid, mystart, myend
2028    
2029     answer = DDOT( my_veclen, X(mystart:myend), xn, Y(mystart:myend), yn )
2030     ! write(*,*) "myid answer = ", myid, answer
2031    
2032     call MPI_WAITALL(2,requests,statuses,ierr)
2033     call MPI_REDUCE(answer,totend,1,MPI_DOUBLE_PRECISION,MPI_SUM,0,MPI_COMM_WORLD,ierr)
2034     total = total + totend
2035     enddo
2036    
2037    
2038     DD = (my_veclen*numprocs)*nwork
2039     ! Finish the rest
2040     answer = 0.0
2041     mystart = 1 + DD + myid*my_veclen
2042     myend = mystart + my_veclen - 1
2043     if(myend .gt. nmax) myend=nmax
2044     if (mystart.le.nmax) then
2045     answer = DDOT( my_veclen, X(mystart:myend), 1, Y(mystart:myend), 1 )
2046     ! write(*,*) "myid answer = ", myid, answer
2047     endif
2048     call MPI_WAITALL(2,requests,statuses,ierr)
2049     call MPI_REDUCE(answer,totend,1,MPI_DOUBLE_PRECISION,MPI_SUM,0,MPI_COMM_WORLD,ierr)
2050    
2051     PDDOT = total + totend
2052    
2053     return
2054     end function PDDOT
2055    
2056     lsupdxx_1.o/ 1270584817 9435 26131 100644 9952 `
2057     ELF2`#@@lsupdxx_1.f.strtab.symtab.textlsupdxx_1_lsupdxx_1_??unwSTRLITPACK_3$0STRLITPACK_4$0$0for_write_seq_lisSTRLITPACK_5$0$0for_write_seq_lis_xmitSTRLITPACK_8$0$0STRLITPACK_6$0$0STRLITPACK_7$0$0STRLITPACK_9$0$0STRLITPACK_10$0$0STRLITPACK_11$0$0for_emit_diagnosticSTRLITPACK_2$0STRLITPACK_12$0$0STRLITPACK_1$0STRLITPACK_13$0$0STRLITPACK_14$0$0STRLITPACK_15$0$0STRLITPACK_16$0$0STRLITPACK_17$0$0LITPACK_1$0$0LITPACK_0$0$0ddot_STRLITPACK_20$0$0STRLITPACK_19$0$0STRLITPACK_21$0$0STRLITPACK_22$0$0STRLITPACK_23$0$0STRLITPACK_24$0$0STRLITPACK_26$0$0STRLITPACK_25$0$0STRLITPACK_0$0STRLITPACK_18$0$0hessupd_.IA_64.unwind_info__udt_lsupdxx_1_??unw.IA_64.unwind.rodata.sdata.rodata.str1.4.rodata.str1.32.trace.rela.text.rela.IA_64.unwind.rela.trace .zbpeMp_#D (0V8h<z@DHLPTX\`dhl>p,t5
2058       (> 0#P `*
2059        #`^qHP0|FH  X`!3B`d\6,0 @ :1B)4QN`l0 ` P`!2BdP80 c @!01BdP@0 b 8!0B 8(B
2060     H0 &B D@ P(~B !@H A!H `0@ ` P0# H2OPH\1B ` @b!H$PP~B H@
2061     JqBP~ @LpH 0Z@B<! H 0B(X   H 1  FH p  
2062     \Da .A @A x<@A ø\@A 8A h4A `0A P(I sH$A cisACX !@BX @ !0@B !A B@Z b?~F@b80 HX$%`b@0 h $6`bH@6 8$`H`V<bB&
2063     ($p2 x0b0!@Brb b
2064     n!pB@rbB @rbB Pf!B px!B  n!pB x0 bPX!PBPf!B x `b!B ppx!BPX!PBPf!B  `b!B px!BPX!@BPf!B x `b!B ppx!BP@ H B ` ` .h@F`HDA1B@ Ȁ!0Br$p(@B4@ ` P20# D6HB` `2!PPB!0B `@t!HH`$H
2065     @@<0#PX!@!pc$C !AB`X ! AB@ !@ BX 2b@o~F 0bph0 Xx$%`&b D0 0 $`6`$bH6 $H V bЃB&
2066     $82 ~ 0b0@Bzb b
2067     h!@B@zbB @zbB Pb!B p~!B x h!@B p~0 bPX!PBPb!B h `^!B 8p~!BPX!PBPb!B  `^!B p~!BPX!@BPb!B h `^!B 8p~!BPx n B ` x<"@8l`HH`0C
2068     DPC@!H@ H!BP  `C $ `
2069      ! 1lB@C!HU
2070     60B
2071     A41C !AB`X !@ BP$@B`Z (bO~F`$bP,0 pXh$$`"b(0 x$ 6` b0H@& $H b$2 dbp b`84j@BP^B `ZB# phBRX!@BhP^ 0i`Z! (qphR ` D00 X!0 X(*PH 
2072       _B `e 5 @A a qH$A (A aA 8A  A 0A p8I `0A 5i Z$H  j#   Cj03 (  $sHvY03 *`BH03J !AB`X !H@ !AB`Z <b~F:b0 X$@'`6bd0 @  $@6`0b`H6 @ !pHW&b0 B p$@B4b B(!@ H h1`(!p@8L!B` `!B@b!BP
2073     P` `pB8N!B` n!B@r!BP
2074     Pb `pB8Z!B` `!B@b!BP
2075     P` `pB8\!B` n!B@r!BP
2076     Pb `B8^!B` `!B@b!BP
2077     PМ` ` BHv`@8j!B` n!B@r!BP P00 `@ Jp@08  Fb0B@!@ B `@$H@@`HH`!3B  @$H a@ ` @01# xPX!@HP!B  `H!B (pD!PX!H`*) aa`fort: (%d): Subscript #%d of the array %s has value %d which is less than the lower bound of %d
2078     fort: (%d): Subscript #%d of the array %s has value %d which is greater than the upper bound of %d
2079     80888XDIFFXDIFFDDDDGGGGDDDDGGGGDDDDXXXXDDDDfold - ffpathei-lsopt: first estimate of dd via pathei-lsopt: using fold = fmin = pathei-lsopt: no hessupd for first optim.
2080     j` lsupdxx_1.f
2081     lsupdxx_1_;;;;
2082      1ـ
2083     s2(* BI/a*rI0"2 B2
2084     ****I1I1I1RI12'*I/"2%1*RI02 2
2085     * *!*@*I1RI1I1I1Q *R *b I2
2086     2
2087     "
2088     2 q
2089     *
2090     *
2091     I1" I11 2
2092     2 2 * * * *! *# *"RI1I1I1rI1I1BI12)*I/BI3__`_'.0'. @P.0@z@p2h2xpxp"H0#0
2093     lsupdxx_1.f/ 1270584807 9435 26131 100644 4007 `
2094    
2095    
2096    
2097     subroutine lsupdxx_1(
2098     & nn, ifail, lphprint
2099     & , jmin, jmax, nupdate
2100     & , ff, fmin, fold, gnorm0, dotdg
2101     & , gg, dd, xx, xdiff
2102     & , tmin, tmax, tact, epsx
2103     & )
2104    
2105     c ==================================================================
2106     c SUBROUTINE lsupdxx
2107     c ==================================================================
2108     c
2109     c o conceived for variable online/offline version
2110     c computes - new descent direction dd based on latest
2111     c available gradient
2112     c - new tact based on new dd
2113     c - new control vector xx needed for offline run
2114     c
2115     c o started: Patrick Heimbach, MIT/EAPS
2116     c 29-Feb-2000:
2117     c
2118     c o Version 2.1.0, 02-Mar-2000: Patrick Heimbach, MIT/EAPS
2119     c
2120     c ==================================================================
2121     c SUBROUTINE lsupdxx
2122     c ==================================================================
2123     c
2124    
2125    
2126    
2127    
2128    
2129     implicit none
2130    
2131     c-----------------------------------------
2132     c declare arguments
2133     c-----------------------------------------
2134     integer nn, jmin, jmax, nupdate, ifail
2135     double precision ff, fmin, fold, gnorm0, dotdg
2136     double precision gg(nn), dd(nn), xx(nn), xdiff(nn)
2137     double precision tmin, tmax, tact, epsx
2138     logical lphprint
2139    
2140     c-----------------------------------------
2141     C declare local variables
2142     c-----------------------------------------
2143     integer i
2144     double precision fdiff, preco
2145    
2146     double precision DDOT
2147     external DDOT
2148    
2149     c ==================================================================
2150    
2151     c-----------------------------------------
2152     c use Fletchers scaling
2153     c and initialize diagional to 1.
2154     c-----------------------------------------
2155     c
2156     if ( ( jmax .eq. 0 ) .or. (nupdate .eq. 0 ) ) then
2157    
2158     if (jmax .eq. 0) then
2159     fold = fmin
2160     if (lphprint)
2161     & print *, 'pathei-lsopt: using fold = fmin = ', fmin
2162     end if
2163     fdiff = fold - ff
2164     if (jmax .eq. 0) fdiff = ABS(fdiff)
2165    
2166     preco = 2. * fdiff / (gnorm0*gnorm0)
2167     do i = 1, nn
2168     dd(i) = -gg(i)*preco
2169     end do
2170    
2171     if (lphprint)
2172     & print *, 'pathei-lsopt: first estimate of dd via ',
2173     & 'fold - ff'
2174    
2175     c-----------------------------------------
2176     c use the matrix stored in [diag]
2177     c and the (y,s) pairs
2178     c-----------------------------------------
2179    
2180     else
2181    
2182     do i = 1, nn
2183     dd(i) = -gg(i)
2184     end do
2185    
2186     if (jmax .gt. 0) then
2187     call hessupd( nn, nupdate, dd, jmin, jmax, xdiff,
2188     & lphprint )
2189     else
2190     if (lphprint)
2191     & print *, 'pathei-lsopt: no hessupd for first optim.'
2192     end if
2193    
2194     endif
2195    
2196     c-----------------------------------------
2197     c check whether new direction is a descent one
2198     c-----------------------------------------
2199     dotdg = DDOT( nn, dd, 1, gg, 1 )
2200     if (dotdg .ge. 0.0) then
2201     ifail = 4
2202     goto 999
2203     end if
2204    
2205     c----------------------------------
2206     c declare arguments
2207     c----------------------------------
2208    
2209     tmin = 0.
2210     do i = 1, nn
2211     tmin = max( tmin, abs(dd(i)) )
2212     end do
2213     tmin = epsx/tmin
2214    
2215     c----------------------------------
2216     c make sure that t is between
2217     c tmin and tmax
2218     c----------------------------------
2219    
2220     tact = 1.0
2221     tmax = 1.0e+10
2222     if (tact.le.tmin) then
2223     tact = tmin
2224     if (tact.gt.tmax) then
2225     tmin = tmax
2226     endif
2227     endif
2228    
2229     if (tact .gt. tmax) then
2230     tact = tmax
2231     ifail = 7
2232     endif
2233    
2234     c----------------------------------
2235     c compute new x
2236     c----------------------------------
2237     do i = 1, nn
2238     xdiff(i) = xx(i) + tact*dd(i)
2239     end do
2240    
2241     c----------------------------------
2242     c save new x to file for offline version
2243     c----------------------------------
2244    
2245     999 continue
2246    
2247     return
2248    
2249     end

  ViewVC Help
Powered by ViewVC 1.1.22