From d682fae50678ed52534dee24afef635fedd9732a Mon Sep 17 00:00:00 2001 From: zolliker Date: Fri, 19 Aug 2022 15:22:33 +0200 Subject: [PATCH] Initial commit --- CVS/Entries | 14 + CVS/Repository | 1 + CVS/Root | 1 + README | 118 + fit_help.html | 137 + fitlor.py | 72 + gen/CVS/Entries | 99 + gen/CVS/Repository | 1 + gen/CVS/Root | 1 + gen/cho.f | 726 ++++++ gen/cho_deb.f | 725 ++++++ gen/cvt.f | 240 ++ gen/dat.inc | 14 + gen/dat_2t.f | 198 ++ gen/dat_5c2.f | 133 + gen/dat_c.c | 302 +++ gen/dat_ccl.f | 170 ++ gen/dat_d1a.f | 118 + gen/dat_fda.f | 168 ++ gen/dat_fit3.f | 144 ++ gen/dat_frm.f | 233 ++ gen/dat_fullp.f | 196 ++ gen/dat_ida.f | 165 ++ gen/dat_init.f | 28 + gen/dat_inx.f | 138 + gen/dat_lnsp.f | 290 +++ gen/dat_nexus.f | 906 +++++++ gen/dat_nexus.inc | 15 + gen/dat_nexus_dum.f | 2 + gen/dat_oldtas.f | 347 +++ gen/dat_open.f | 1326 ++++++++++ gen/dat_rita.f | 258 ++ gen/dat_sics.f | 317 +++ gen/dat_spec.f | 343 +++ gen/dat_table.f | 468 ++++ gen/dat_tascom_dir.c | 223 ++ gen/dat_tasmad.f | 467 ++++ gen/dat_utils.f | 626 +++++ gen/dat_utils.inc | 4 + gen/dat_xxx.f | 63 + gen/dat_xy.f | 144 ++ gen/dat_xys.f | 125 + gen/dat_xysm.f | 126 + gen/fifun.f | 232 ++ gen/fit.f | 64 + gen/fit.help | 748 ++++++ gen/fit.inc | 149 ++ gen/fit.vers | 2 + gen/fit_abskor.f | 262 ++ gen/fit_array.f | 92 + gen/fit_auto.f | 234 ++ gen/fit_bars.f | 28 + gen/fit_bgedit.f | 42 + gen/fit_command.f | 1005 ++++++++ gen/fit_connect.f | 29 + gen/fit_cor.f | 54 + gen/fit_dat.f | 718 ++++++ gen/fit_exit.f | 17 + gen/fit_export.f | 223 ++ gen/fit_file.f | 579 +++++ gen/fit_fit.f | 297 +++ gen/fit_fix.f | 36 + gen/fit_fun.f | 470 ++++ gen/fit_help.f_old | 36 + gen/fit_init.f | 66 + gen/fit_list.f | 35 + gen/fit_main.f | 49 + gen/fit_merge.f | 132 + gen/fit_mon.f | 93 + gen/fit_multiply.f | 138 + gen/fit_out.f | 179 ++ gen/fit_peak.f | 133 + gen/fit_plot.f | 976 +++++++ gen/fit_print.f | 200 ++ gen/fit_range.f | 17 + gen/fit_rel.f | 67 + gen/fit_scale.f | 38 + gen/fit_set.f | 81 + gen/fit_style.f | 106 + gen/fit_subtract.f | 76 + gen/fit_title.f | 18 + gen/fit_user.f | 498 ++++ gen/fit_user.inc | 11 + gen/fit_win.f | 280 ++ gen/fitexample.f | 69 + gen/fitlor.py | 118 + gen/fitv.f | 15 + gen/fvi.c | 50 + gen/fvi.f | 229 ++ gen/gra.f | 502 ++++ gen/inex.f | 173 ++ gen/intprt.f | 229 ++ gen/lib.fvi | 8 + gen/lib.fvi2 | 8 + gen/main.c | 6 + gen/make_custom.f | 51 + gen/make_fvi.f | 274 ++ gen/make_help.f | 161 ++ gen/make_vers.f | 37 + gen/metac.c | 334 +++ gen/metaf.f | 180 ++ gen/migrad.f | 338 +++ gen/myc_err.c | 136 + gen/myc_err.h | 85 + gen/myc_fortran.h | 73 + gen/myc_list.h | 11 + gen/myc_mem.h | 30 + gen/myc_str.c | 251 ++ gen/myc_str.h | 122 + gen/myfit_head | 36 + gen/napi_err.c | 47 + gen/quick_sort.f | 112 + gen/simplex.f | 233 ++ gen/str.f | 286 +++ gen/sys_util.h | 58 + gen/zm_fit | 1 + libs/CVS/Entries | 1 + libs/CVS/Repository | 1 + libs/CVS/Root | 1 + libs/cygwin/CVS/Entries | 2 + libs/cygwin/CVS/Repository | 1 + libs/cygwin/CVS/Root | 1 + libs/cygwin/include/CVS/Entries | 40 + libs/cygwin/include/CVS/Repository | 1 + libs/cygwin/include/CVS/Root | 1 + libs/cygwin/include/H5ACpublic.h | 40 + libs/cygwin/include/H5Apublic.h | 53 + libs/cygwin/include/H5Bpublic.h | 51 + libs/cygwin/include/H5Dpublic.h | 105 + libs/cygwin/include/H5Epublic.h | 263 ++ libs/cygwin/include/H5FDcore.h | 41 + libs/cygwin/include/H5FDfamily.h | 43 + libs/cygwin/include/H5FDgass.h | 69 + libs/cygwin/include/H5FDlog.h | 72 + libs/cygwin/include/H5FDmpi.h | 93 + libs/cygwin/include/H5FDmpio.h | 60 + libs/cygwin/include/H5FDmpiposix.h | 61 + libs/cygwin/include/H5FDmulti.h | 51 + libs/cygwin/include/H5FDpublic.h | 259 ++ libs/cygwin/include/H5FDsec2.h | 40 + libs/cygwin/include/H5FDsrb.h | 57 + libs/cygwin/include/H5FDstdio.h | 40 + libs/cygwin/include/H5FDstream.h | 82 + libs/cygwin/include/H5Fpublic.h | 122 + libs/cygwin/include/H5Gpublic.h | 138 + libs/cygwin/include/H5HGpublic.h | 32 + libs/cygwin/include/H5HLpublic.h | 40 + libs/cygwin/include/H5Ipublic.h | 74 + libs/cygwin/include/H5MMpublic.h | 45 + libs/cygwin/include/H5Opublic.h | 48 + libs/cygwin/include/H5Ppublic.h | 308 +++ libs/cygwin/include/H5Rpublic.h | 85 + libs/cygwin/include/H5Spublic.h | 149 ++ libs/cygwin/include/H5Tpublic.h | 566 ++++ libs/cygwin/include/H5Zpublic.h | 185 ++ libs/cygwin/include/H5api_adpt.h | 66 + libs/cygwin/include/H5pubconf.h | 537 ++++ libs/cygwin/include/H5public.h | 216 ++ libs/cygwin/include/hdf5.h | 55 + libs/cygwin/include/napi.h | 315 +++ libs/cygwin/include/napi4.h | 68 + libs/cygwin/include/napi5.h | 72 + libs/cygwin/include/napif.inc | 90 + libs/cygwin/include/napif__.inc | 89 + libs/cygwin/lib/CVS/Entries | 8 + libs/cygwin/lib/CVS/Repository | 1 + libs/cygwin/lib/CVS/Root | 1 + libs/cygwin/lib/libNeXus.a | Bin 0 -> 178171 bytes libs/cygwin/lib/libdf.a | Bin 0 -> 708662 bytes libs/cygwin/lib/libhdf5.a | Bin 0 -> 1439548 bytes libs/cygwin/lib/libhdf5.la | 32 + libs/cygwin/lib/libhdf5.settings | 52 + libs/cygwin/lib/libmfhdf.a | Bin 0 -> 174568 bytes libs/cygwin/lib/libudport.a | Bin 0 -> 486 bytes make_gen | 212 ++ makefile | 58 + makefile_alpha | 65 + makefile_alpha_f | 3 + makefile_cygwin | 51 + makefile_linux | 57 + makefile_macintel | 58 + makefile_macosx | 69 + makefile_rhel7 | 68 + makefile_sl-linux | 57 + makefile_sl5 | 60 + makefile_sl6 | 60 + makefile_sl6-64 | 68 + maketree | 32 + napif.o | Bin 0 -> 37344 bytes pgm/CVS/Entries | 16 + pgm/CVS/Repository | 1 + pgm/CVS/Root | 1 + pgm/abskor3.f | 175 ++ pgm/addchan.f | 52 + pgm/addei.f | 94 + pgm/addit.f | 67 + pgm/autofit.f | 152 ++ pgm/bose.f | 180 ++ pgm/brows.f | 216 ++ pgm/chooser.f | 3 + pgm/clamp.f | 152 ++ pgm/csc.f | 210 ++ pgm/csvsumvar.f | 319 +++ pgm/datafilepath | 97 + pgm/deteff.f | 190 ++ pgm/deteff2.f | 203 ++ pgm/getdatafilepath | 50 + pgm/polcal.f | 444 ++++ pgm/subit.f | 64 + pgm/sumvar.f | 271 ++ pgm/trics_ccl.f | 368 +++ pgm/tricslog.f | 260 ++ pgm/ufit.f | 92 + pgm/zm_fit | 1 + pgplot_rhel7/drivers.list | 114 + pgplot_rhel7/gidriv.o | Bin 0 -> 37064 bytes pgplot_rhel7/grarea.o | Bin 0 -> 8376 bytes pgplot_rhel7/grbpic.o | Bin 0 -> 8408 bytes pgplot_rhel7/grchsz.o | Bin 0 -> 8272 bytes pgplot_rhel7/grclip.o | Bin 0 -> 3288 bytes pgplot_rhel7/grclos.o | Bin 0 -> 7784 bytes pgplot_rhel7/grclpl.o | Bin 0 -> 9128 bytes pgplot_rhel7/grctoi.o | Bin 0 -> 5000 bytes pgplot_rhel7/grcurs.o | Bin 0 -> 11496 bytes pgplot_rhel7/grdate.o | Bin 0 -> 1776 bytes pgplot_rhel7/grdot0.o | Bin 0 -> 8112 bytes pgplot_rhel7/grdot1.o | Bin 0 -> 9808 bytes pgplot_rhel7/grdtyp.o | Bin 0 -> 9416 bytes pgplot_rhel7/grepic.o | Bin 0 -> 7552 bytes pgplot_rhel7/gresc.o | Bin 0 -> 7976 bytes pgplot_rhel7/gretxt.o | Bin 0 -> 7424 bytes pgplot_rhel7/grexec.f | 43 + pgplot_rhel7/grexec.o | Bin 0 -> 8264 bytes pgplot_rhel7/grfa.o | Bin 0 -> 13688 bytes pgplot_rhel7/grfao.o | Bin 0 -> 4640 bytes pgplot_rhel7/grfileio.o | Bin 0 -> 2520 bytes pgplot_rhel7/grflun.o | Bin 0 -> 2960 bytes pgplot_rhel7/grfont.dat | Bin 0 -> 66020 bytes pgplot_rhel7/grgcom.o | Bin 0 -> 5496 bytes pgplot_rhel7/grgenv.o | Bin 0 -> 5984 bytes pgplot_rhel7/grgetc.o | Bin 0 -> 3376 bytes pgplot_rhel7/grgfil.o | Bin 0 -> 8384 bytes pgplot_rhel7/grglun.o | Bin 0 -> 4216 bytes pgplot_rhel7/grgmem.o | Bin 0 -> 1576 bytes pgplot_rhel7/grgmsg.o | Bin 0 -> 4336 bytes pgplot_rhel7/grgray.o | Bin 0 -> 10912 bytes pgplot_rhel7/grimg0.o | Bin 0 -> 9792 bytes pgplot_rhel7/grimg1.o | Bin 0 -> 12800 bytes pgplot_rhel7/grimg2.o | Bin 0 -> 13440 bytes pgplot_rhel7/grimg3.o | Bin 0 -> 13848 bytes pgplot_rhel7/grinit.o | Bin 0 -> 7208 bytes pgplot_rhel7/gritoc.o | Bin 0 -> 4632 bytes pgplot_rhel7/grlen.o | Bin 0 -> 9880 bytes pgplot_rhel7/grlgtr.o | Bin 0 -> 3064 bytes pgplot_rhel7/grlin0.o | Bin 0 -> 8872 bytes pgplot_rhel7/grlin1.o | Bin 0 -> 9976 bytes pgplot_rhel7/grlin2.o | Bin 0 -> 8112 bytes pgplot_rhel7/grlin3.o | Bin 0 -> 10424 bytes pgplot_rhel7/grlina.o | Bin 0 -> 7296 bytes pgplot_rhel7/grmcur.o | Bin 0 -> 3736 bytes pgplot_rhel7/grmker.o | Bin 0 -> 17384 bytes pgplot_rhel7/grmova.o | Bin 0 -> 7000 bytes pgplot_rhel7/grmsg.o | Bin 0 -> 4432 bytes pgplot_rhel7/gropen.o | Bin 0 -> 12792 bytes pgplot_rhel7/groptx.o | Bin 0 -> 5016 bytes pgplot_rhel7/grpage.o | Bin 0 -> 7672 bytes pgplot_rhel7/grpars.o | Bin 0 -> 8040 bytes pgplot_rhel7/grpckg1.inc | 98 + pgplot_rhel7/grpixl.o | Bin 0 -> 13744 bytes pgplot_rhel7/grpocl.o | Bin 0 -> 5592 bytes pgplot_rhel7/grprom.o | Bin 0 -> 3408 bytes pgplot_rhel7/grpxpo.o | Bin 0 -> 9752 bytes pgplot_rhel7/grpxps.o | Bin 0 -> 11648 bytes pgplot_rhel7/grpxpx.o | Bin 0 -> 10184 bytes pgplot_rhel7/grpxre.o | Bin 0 -> 5560 bytes pgplot_rhel7/grqcap.o | Bin 0 -> 8120 bytes pgplot_rhel7/grqci.o | Bin 0 -> 7392 bytes pgplot_rhel7/grqcol.o | Bin 0 -> 7000 bytes pgplot_rhel7/grqcr.o | Bin 0 -> 8704 bytes pgplot_rhel7/grqdev.o | Bin 0 -> 8264 bytes pgplot_rhel7/grqdt.o | Bin 0 -> 11272 bytes pgplot_rhel7/grqfnt.o | Bin 0 -> 7400 bytes pgplot_rhel7/grqls.o | Bin 0 -> 7424 bytes pgplot_rhel7/grqlw.o | Bin 0 -> 7440 bytes pgplot_rhel7/grqpos.o | Bin 0 -> 6992 bytes pgplot_rhel7/grqtxt.o | Bin 0 -> 14256 bytes pgplot_rhel7/grqtyp.o | Bin 0 -> 9064 bytes pgplot_rhel7/grquit.o | Bin 0 -> 3832 bytes pgplot_rhel7/grrec0.o | Bin 0 -> 12096 bytes pgplot_rhel7/grrect.o | Bin 0 -> 8712 bytes pgplot_rhel7/grsci.o | Bin 0 -> 8432 bytes pgplot_rhel7/grscr.o | Bin 0 -> 9016 bytes pgplot_rhel7/grscrl.o | Bin 0 -> 8504 bytes pgplot_rhel7/grsetc.o | Bin 0 -> 7664 bytes pgplot_rhel7/grsets.o | Bin 0 -> 9232 bytes pgplot_rhel7/grsfnt.o | Bin 0 -> 7640 bytes pgplot_rhel7/grsize.o | Bin 0 -> 8784 bytes pgplot_rhel7/grskpb.o | Bin 0 -> 3976 bytes pgplot_rhel7/grslct.o | Bin 0 -> 7944 bytes pgplot_rhel7/grsls.o | Bin 0 -> 9592 bytes pgplot_rhel7/grslw.o | Bin 0 -> 8680 bytes pgplot_rhel7/grsy00.o | Bin 0 -> 7208 bytes pgplot_rhel7/grsyds.o | Bin 0 -> 8032 bytes pgplot_rhel7/grsymk.o | Bin 0 -> 8736 bytes pgplot_rhel7/grsyxd.o | Bin 0 -> 5056 bytes pgplot_rhel7/grterm.o | Bin 0 -> 7424 bytes pgplot_rhel7/grtermio.o | Bin 0 -> 3032 bytes pgplot_rhel7/grtext.o | Bin 0 -> 18768 bytes pgplot_rhel7/grtoup.o | Bin 0 -> 4944 bytes pgplot_rhel7/grtrim.o | Bin 0 -> 4048 bytes pgplot_rhel7/grtrml.o | Bin 0 -> 4000 bytes pgplot_rhel7/grtrn0.o | Bin 0 -> 8128 bytes pgplot_rhel7/grtter.o | Bin 0 -> 4016 bytes pgplot_rhel7/grtxy0.o | Bin 0 -> 7240 bytes pgplot_rhel7/gruser.o | Bin 0 -> 1696 bytes pgplot_rhel7/grvct0.o | Bin 0 -> 9232 bytes pgplot_rhel7/grwarn.o | Bin 0 -> 4512 bytes pgplot_rhel7/grxhls.o | Bin 0 -> 4608 bytes pgplot_rhel7/grxrgb.o | Bin 0 -> 5432 bytes pgplot_rhel7/libpgplot.a | Bin 0 -> 2104724 bytes pgplot_rhel7/libpgplot.so | Bin 0 -> 803039 bytes pgplot_rhel7/makefile | 932 +++++++ pgplot_rhel7/nudriv.o | Bin 0 -> 17256 bytes pgplot_rhel7/pgadvance.o | Bin 0 -> 3072 bytes pgplot_rhel7/pgarro.o | Bin 0 -> 8712 bytes pgplot_rhel7/pgask.o | Bin 0 -> 8152 bytes pgplot_rhel7/pgaxis.o | Bin 0 -> 9928 bytes pgplot_rhel7/pgaxlg.o | Bin 0 -> 10424 bytes pgplot_rhel7/pgband.o | Bin 0 -> 10232 bytes pgplot_rhel7/pgbbuf.o | Bin 0 -> 7720 bytes pgplot_rhel7/pgbeg.o | Bin 0 -> 4488 bytes pgplot_rhel7/pgbegin.o | Bin 0 -> 3928 bytes pgplot_rhel7/pgbin.o | Bin 0 -> 6736 bytes pgplot_rhel7/pgbox.o | Bin 0 -> 35512 bytes pgplot_rhel7/pgbox1.o | Bin 0 -> 3912 bytes pgplot_rhel7/pgcirc.o | Bin 0 -> 9344 bytes pgplot_rhel7/pgcl.o | Bin 0 -> 11376 bytes pgplot_rhel7/pgclos.o | Bin 0 -> 8112 bytes pgplot_rhel7/pgcn01.o | Bin 0 -> 8256 bytes pgplot_rhel7/pgcnsc.o | Bin 0 -> 10216 bytes pgplot_rhel7/pgconb.o | Bin 0 -> 9896 bytes pgplot_rhel7/pgconf.o | Bin 0 -> 7656 bytes pgplot_rhel7/pgconl.o | Bin 0 -> 10112 bytes pgplot_rhel7/pgcons.o | Bin 0 -> 9328 bytes pgplot_rhel7/pgcont.o | Bin 0 -> 9352 bytes pgplot_rhel7/pgconx.o | Bin 0 -> 8368 bytes pgplot_rhel7/pgcp.o | Bin 0 -> 8264 bytes pgplot_rhel7/pgctab.o | Bin 0 -> 9168 bytes pgplot_rhel7/pgcurs.o | Bin 0 -> 4688 bytes pgplot_rhel7/pgcurse.o | Bin 0 -> 3680 bytes pgplot_rhel7/pgdemo1 | Bin 0 -> 34132 bytes pgplot_rhel7/pgdemo10 | Bin 0 -> 11555 bytes pgplot_rhel7/pgdemo11 | Bin 0 -> 12361 bytes pgplot_rhel7/pgdemo12 | Bin 0 -> 9880 bytes pgplot_rhel7/pgdemo13 | Bin 0 -> 34540 bytes pgplot_rhel7/pgdemo14 | Bin 0 -> 19633 bytes pgplot_rhel7/pgdemo15 | Bin 0 -> 14344 bytes pgplot_rhel7/pgdemo16 | Bin 0 -> 19151 bytes pgplot_rhel7/pgdemo17 | Bin 0 -> 19045 bytes pgplot_rhel7/pgdemo2 | Bin 0 -> 25498 bytes pgplot_rhel7/pgdemo3 | Bin 0 -> 25297 bytes pgplot_rhel7/pgdemo4 | Bin 0 -> 21122 bytes pgplot_rhel7/pgdemo5 | Bin 0 -> 11360 bytes pgplot_rhel7/pgdemo6 | Bin 0 -> 12068 bytes pgplot_rhel7/pgdemo7 | Bin 0 -> 14607 bytes pgplot_rhel7/pgdemo8 | Bin 0 -> 15256 bytes pgplot_rhel7/pgdemo9 | Bin 0 -> 11799 bytes pgplot_rhel7/pgdraw.o | Bin 0 -> 3584 bytes pgplot_rhel7/pgebuf.o | Bin 0 -> 7816 bytes pgplot_rhel7/pgend.o | Bin 0 -> 7944 bytes pgplot_rhel7/pgenv.o | Bin 0 -> 7848 bytes pgplot_rhel7/pgeras.o | Bin 0 -> 4904 bytes pgplot_rhel7/pgerr1.o | Bin 0 -> 5640 bytes pgplot_rhel7/pgerrb.o | Bin 0 -> 5976 bytes pgplot_rhel7/pgerrx.o | Bin 0 -> 5144 bytes pgplot_rhel7/pgerry.o | Bin 0 -> 5144 bytes pgplot_rhel7/pgetxt.o | Bin 0 -> 3048 bytes pgplot_rhel7/pgfunt.o | Bin 0 -> 6976 bytes pgplot_rhel7/pgfunx.o | Bin 0 -> 6448 bytes pgplot_rhel7/pgfuny.o | Bin 0 -> 6208 bytes pgplot_rhel7/pggray.o | Bin 0 -> 10280 bytes pgplot_rhel7/pghi2d.o | Bin 0 -> 13904 bytes pgplot_rhel7/pghis1.o | Bin 0 -> 4416 bytes pgplot_rhel7/pghist.o | Bin 0 -> 9240 bytes pgplot_rhel7/pghtch.o | Bin 0 -> 11040 bytes pgplot_rhel7/pgiden.o | Bin 0 -> 10280 bytes pgplot_rhel7/pgimag.o | Bin 0 -> 10112 bytes pgplot_rhel7/pginit.o | Bin 0 -> 7984 bytes pgplot_rhel7/pglab.o | Bin 0 -> 5336 bytes pgplot_rhel7/pglabel.o | Bin 0 -> 4096 bytes pgplot_rhel7/pglcur.o | Bin 0 -> 8144 bytes pgplot_rhel7/pgldev.o | Bin 0 -> 6864 bytes pgplot_rhel7/pglen.o | Bin 0 -> 9824 bytes pgplot_rhel7/pgline.o | Bin 0 -> 4360 bytes pgplot_rhel7/pgmove.o | Bin 0 -> 3368 bytes pgplot_rhel7/pgmtext.o | Bin 0 -> 4088 bytes pgplot_rhel7/pgmtxt.o | Bin 0 -> 13184 bytes pgplot_rhel7/pgncur.o | Bin 0 -> 12144 bytes pgplot_rhel7/pgncurse.o | Bin 0 -> 3824 bytes pgplot_rhel7/pgnoto.o | Bin 0 -> 10208 bytes pgplot_rhel7/pgnpl.o | Bin 0 -> 3896 bytes pgplot_rhel7/pgnumb.o | Bin 0 -> 10224 bytes pgplot_rhel7/pgolin.o | Bin 0 -> 7008 bytes pgplot_rhel7/pgopen.o | Bin 0 -> 17048 bytes pgplot_rhel7/pgpage.o | Bin 0 -> 9736 bytes pgplot_rhel7/pgpanl.o | Bin 0 -> 8424 bytes pgplot_rhel7/pgpap.o | Bin 0 -> 10144 bytes pgplot_rhel7/pgpaper.o | Bin 0 -> 3440 bytes pgplot_rhel7/pgpixl.o | Bin 0 -> 5232 bytes pgplot_rhel7/pgplot.doc | 3846 ++++++++++++++++++++++++++++ pgplot_rhel7/pgplot.inc | 135 + pgplot_rhel7/pgpnts.o | Bin 0 -> 4424 bytes pgplot_rhel7/pgpoint.o | Bin 0 -> 3768 bytes pgplot_rhel7/pgpoly.o | Bin 0 -> 12416 bytes pgplot_rhel7/pgpt.o | Bin 0 -> 4528 bytes pgplot_rhel7/pgpt1.o | Bin 0 -> 4200 bytes pgplot_rhel7/pgptext.o | Bin 0 -> 3952 bytes pgplot_rhel7/pgptxt.o | Bin 0 -> 10840 bytes pgplot_rhel7/pgqah.o | Bin 0 -> 7808 bytes pgplot_rhel7/pgqcf.o | Bin 0 -> 3568 bytes pgplot_rhel7/pgqch.o | Bin 0 -> 7968 bytes pgplot_rhel7/pgqci.o | Bin 0 -> 3544 bytes pgplot_rhel7/pgqcir.o | Bin 0 -> 7616 bytes pgplot_rhel7/pgqclp.o | Bin 0 -> 7968 bytes pgplot_rhel7/pgqcol.o | Bin 0 -> 3376 bytes pgplot_rhel7/pgqcr.o | Bin 0 -> 3560 bytes pgplot_rhel7/pgqcs.o | Bin 0 -> 9056 bytes pgplot_rhel7/pgqdt.o | Bin 0 -> 6464 bytes pgplot_rhel7/pgqfs.o | Bin 0 -> 7936 bytes pgplot_rhel7/pgqhs.o | Bin 0 -> 7840 bytes pgplot_rhel7/pgqid.o | Bin 0 -> 7520 bytes pgplot_rhel7/pgqinf.o | Bin 0 -> 13936 bytes pgplot_rhel7/pgqitf.o | Bin 0 -> 7944 bytes pgplot_rhel7/pgqls.o | Bin 0 -> 3544 bytes pgplot_rhel7/pgqlw.o | Bin 0 -> 3544 bytes pgplot_rhel7/pgqndt.o | Bin 0 -> 4048 bytes pgplot_rhel7/pgqpos.o | Bin 0 -> 3368 bytes pgplot_rhel7/pgqtbg.o | Bin 0 -> 7968 bytes pgplot_rhel7/pgqtxt.o | Bin 0 -> 10408 bytes pgplot_rhel7/pgqvp.o | Bin 0 -> 9352 bytes pgplot_rhel7/pgqvsz.o | Bin 0 -> 9512 bytes pgplot_rhel7/pgqwin.o | Bin 0 -> 7840 bytes pgplot_rhel7/pgrect.o | Bin 0 -> 9320 bytes pgplot_rhel7/pgrnd.o | Bin 0 -> 5632 bytes pgplot_rhel7/pgrnge.o | Bin 0 -> 3520 bytes pgplot_rhel7/pgsah.o | Bin 0 -> 7992 bytes pgplot_rhel7/pgsave.o | Bin 0 -> 9184 bytes pgplot_rhel7/pgscf.o | Bin 0 -> 3552 bytes pgplot_rhel7/pgsch.o | Bin 0 -> 8968 bytes pgplot_rhel7/pgsci.o | Bin 0 -> 3520 bytes pgplot_rhel7/pgscir.o | Bin 0 -> 8064 bytes pgplot_rhel7/pgsclp.o | Bin 0 -> 8376 bytes pgplot_rhel7/pgscr.o | Bin 0 -> 3920 bytes pgplot_rhel7/pgscrl.o | Bin 0 -> 9448 bytes pgplot_rhel7/pgscrn.o | Bin 0 -> 10312 bytes pgplot_rhel7/pgsfs.o | Bin 0 -> 8128 bytes pgplot_rhel7/pgshls.o | Bin 0 -> 3864 bytes pgplot_rhel7/pgshs.o | Bin 0 -> 8944 bytes pgplot_rhel7/pgsitf.o | Bin 0 -> 8136 bytes pgplot_rhel7/pgslct.o | Bin 0 -> 8184 bytes pgplot_rhel7/pgsls.o | Bin 0 -> 3520 bytes pgplot_rhel7/pgslw.o | Bin 0 -> 3520 bytes pgplot_rhel7/pgstbg.o | Bin 0 -> 8016 bytes pgplot_rhel7/pgsubp.o | Bin 0 -> 9136 bytes pgplot_rhel7/pgsvp.o | Bin 0 -> 8880 bytes pgplot_rhel7/pgswin.o | Bin 0 -> 8680 bytes pgplot_rhel7/pgtbox.o | Bin 0 -> 60576 bytes pgplot_rhel7/pgtext.o | Bin 0 -> 4032 bytes pgplot_rhel7/pgtick.o | Bin 0 -> 8448 bytes pgplot_rhel7/pgtikl.o | Bin 0 -> 7768 bytes pgplot_rhel7/pgupdt.o | Bin 0 -> 3248 bytes pgplot_rhel7/pgvect.o | Bin 0 -> 7800 bytes pgplot_rhel7/pgvport.o | Bin 0 -> 3648 bytes pgplot_rhel7/pgvsiz.o | Bin 0 -> 8832 bytes pgplot_rhel7/pgvsize.o | Bin 0 -> 3648 bytes pgplot_rhel7/pgvstand.o | Bin 0 -> 3064 bytes pgplot_rhel7/pgvstd.o | Bin 0 -> 8664 bytes pgplot_rhel7/pgvw.o | Bin 0 -> 8352 bytes pgplot_rhel7/pgwedg.o | Bin 0 -> 13488 bytes pgplot_rhel7/pgwindow.o | Bin 0 -> 3536 bytes pgplot_rhel7/pgwnad.o | Bin 0 -> 9816 bytes pgplot_rhel7/pgxwin_server | Bin 0 -> 35975 bytes pgplot_rhel7/psdriv.o | Bin 0 -> 71736 bytes pgplot_rhel7/rgb.txt | 738 ++++++ pgplot_rhel7/ttdriv.o | Bin 0 -> 56656 bytes pgplot_rhel7/xwdriv.o | Bin 0 -> 41312 bytes pgplot_sl6/A_README.TXT | 2 + pgplot_sl6/drivers.list | 114 + pgplot_sl6/grexec.f | 43 + pgplot_sl6/grfont.dat | Bin 0 -> 66020 bytes pgplot_sl6/grpckg1.inc | 98 + pgplot_sl6/libpgplot.a | Bin 0 -> 1401592 bytes pgplot_sl6/makefile | 932 +++++++ pgplot_sl6/pgplot.doc | 3846 ++++++++++++++++++++++++++++ pgplot_sl6/pgplot.inc | 135 + pgplot_sl6/pgxwin_server | Bin 0 -> 30588 bytes pgplot_sl6/rgb.txt | 738 ++++++ rhel7/fit_help.html | 781 ++++++ rhel7/libreadline.so | 1 + rhel7/src | 1 + unix/CVS/Entries | 32 + unix/CVS/Repository | 1 + unix/CVS/Root | 1 + unix/cfg/CVS/Entries | 5 + unix/cfg/CVS/Repository | 1 + unix/cfg/CVS/Root | 1 + unix/cfg/linux | 46 + unix/cfg/macosx | 46 + unix/cfg/tru64 | 55 + unix/cfg/zm_fit | 1 + unix/fitv | 52 + unix/myc_tmp.c | 98 + unix/myc_tmp.h | 16 + unix/napif.f | 477 ++++ unix/sys.f | 382 +++ unix/sys1.f | 126 + unix/sys3.f | 26 + unix/sys_cmdpar.f | 23 + unix/sys_date.f | 21 + unix/sys_env.c | 181 ++ unix/sys_file.f | 19 + unix/sys_fun.c | 5 + unix/sys_fvi.c | 17 + unix/sys_getenv.f | 75 + unix/sys_home.f | 22 + unix/sys_lun.f | 44 + unix/sys_open.f | 54 + unix/sys_parse.f | 112 + unix/sys_rdline.c | 40 + unix/sys_rdline0.c | 29 + unix/sys_remote_host.f | 80 + unix/sys_try.c | 56 + unix/sys_unix.c | 167 ++ unix/sys_wait.f | 22 + unix/sysc.c | 274 ++ unix/sysc1.c | 100 + unix/terinq.f | 83 + unix/terinq_new.f | 88 + unix/terinq_old.f | 152 ++ unix/tru64/CVS/Entries | 3 + unix/tru64/CVS/Repository | 1 + unix/tru64/CVS/Root | 1 + unix/tru64/sys_open.f | 54 + unix/tru64/zm_fit | 1 + unix/zm_fit | 1 + 545 files changed, 48172 insertions(+) create mode 100644 CVS/Entries create mode 100644 CVS/Repository create mode 100644 CVS/Root create mode 100644 README create mode 100644 fit_help.html create mode 100755 fitlor.py create mode 100644 gen/CVS/Entries create mode 100644 gen/CVS/Repository create mode 100644 gen/CVS/Root create mode 100644 gen/cho.f create mode 100644 gen/cho_deb.f create mode 100644 gen/cvt.f create mode 100644 gen/dat.inc create mode 100644 gen/dat_2t.f create mode 100644 gen/dat_5c2.f create mode 100644 gen/dat_c.c create mode 100644 gen/dat_ccl.f create mode 100644 gen/dat_d1a.f create mode 100644 gen/dat_fda.f create mode 100644 gen/dat_fit3.f create mode 100644 gen/dat_frm.f create mode 100644 gen/dat_fullp.f create mode 100644 gen/dat_ida.f create mode 100644 gen/dat_init.f create mode 100644 gen/dat_inx.f create mode 100644 gen/dat_lnsp.f create mode 100644 gen/dat_nexus.f create mode 100644 gen/dat_nexus.inc create mode 100644 gen/dat_nexus_dum.f create mode 100644 gen/dat_oldtas.f create mode 100644 gen/dat_open.f create mode 100644 gen/dat_rita.f create mode 100644 gen/dat_sics.f create mode 100644 gen/dat_spec.f create mode 100644 gen/dat_table.f create mode 100644 gen/dat_tascom_dir.c create mode 100644 gen/dat_tasmad.f create mode 100644 gen/dat_utils.f create mode 100644 gen/dat_utils.inc create mode 100644 gen/dat_xxx.f create mode 100644 gen/dat_xy.f create mode 100644 gen/dat_xys.f create mode 100644 gen/dat_xysm.f create mode 100644 gen/fifun.f create mode 100644 gen/fit.f create mode 100644 gen/fit.help create mode 100755 gen/fit.inc create mode 100644 gen/fit.vers create mode 100644 gen/fit_abskor.f create mode 100644 gen/fit_array.f create mode 100644 gen/fit_auto.f create mode 100644 gen/fit_bars.f create mode 100644 gen/fit_bgedit.f create mode 100755 gen/fit_command.f create mode 100644 gen/fit_connect.f create mode 100644 gen/fit_cor.f create mode 100644 gen/fit_dat.f create mode 100644 gen/fit_exit.f create mode 100644 gen/fit_export.f create mode 100644 gen/fit_file.f create mode 100644 gen/fit_fit.f create mode 100644 gen/fit_fix.f create mode 100644 gen/fit_fun.f create mode 100644 gen/fit_help.f_old create mode 100755 gen/fit_init.f create mode 100644 gen/fit_list.f create mode 100644 gen/fit_main.f create mode 100644 gen/fit_merge.f create mode 100644 gen/fit_mon.f create mode 100644 gen/fit_multiply.f create mode 100644 gen/fit_out.f create mode 100644 gen/fit_peak.f create mode 100755 gen/fit_plot.f create mode 100644 gen/fit_print.f create mode 100644 gen/fit_range.f create mode 100644 gen/fit_rel.f create mode 100644 gen/fit_scale.f create mode 100644 gen/fit_set.f create mode 100644 gen/fit_style.f create mode 100644 gen/fit_subtract.f create mode 100644 gen/fit_title.f create mode 100644 gen/fit_user.f create mode 100644 gen/fit_user.inc create mode 100644 gen/fit_win.f create mode 100644 gen/fitexample.f create mode 100755 gen/fitlor.py create mode 100644 gen/fitv.f create mode 100644 gen/fvi.c create mode 100644 gen/fvi.f create mode 100755 gen/gra.f create mode 100644 gen/inex.f create mode 100644 gen/intprt.f create mode 100644 gen/lib.fvi create mode 100644 gen/lib.fvi2 create mode 100644 gen/main.c create mode 100644 gen/make_custom.f create mode 100644 gen/make_fvi.f create mode 100644 gen/make_help.f create mode 100644 gen/make_vers.f create mode 100644 gen/metac.c create mode 100644 gen/metaf.f create mode 100644 gen/migrad.f create mode 100644 gen/myc_err.c create mode 100644 gen/myc_err.h create mode 100644 gen/myc_fortran.h create mode 100644 gen/myc_list.h create mode 100644 gen/myc_mem.h create mode 100644 gen/myc_str.c create mode 100644 gen/myc_str.h create mode 100644 gen/myfit_head create mode 100644 gen/napi_err.c create mode 100644 gen/quick_sort.f create mode 100644 gen/simplex.f create mode 100644 gen/str.f create mode 100644 gen/sys_util.h create mode 100644 gen/zm_fit create mode 100644 libs/CVS/Entries create mode 100644 libs/CVS/Repository create mode 100644 libs/CVS/Root create mode 100644 libs/cygwin/CVS/Entries create mode 100644 libs/cygwin/CVS/Repository create mode 100644 libs/cygwin/CVS/Root create mode 100644 libs/cygwin/include/CVS/Entries create mode 100644 libs/cygwin/include/CVS/Repository create mode 100644 libs/cygwin/include/CVS/Root create mode 100755 libs/cygwin/include/H5ACpublic.h create mode 100755 libs/cygwin/include/H5Apublic.h create mode 100755 libs/cygwin/include/H5Bpublic.h create mode 100755 libs/cygwin/include/H5Dpublic.h create mode 100755 libs/cygwin/include/H5Epublic.h create mode 100755 libs/cygwin/include/H5FDcore.h create mode 100755 libs/cygwin/include/H5FDfamily.h create mode 100755 libs/cygwin/include/H5FDgass.h create mode 100755 libs/cygwin/include/H5FDlog.h create mode 100755 libs/cygwin/include/H5FDmpi.h create mode 100755 libs/cygwin/include/H5FDmpio.h create mode 100755 libs/cygwin/include/H5FDmpiposix.h create mode 100755 libs/cygwin/include/H5FDmulti.h create mode 100755 libs/cygwin/include/H5FDpublic.h create mode 100755 libs/cygwin/include/H5FDsec2.h create mode 100755 libs/cygwin/include/H5FDsrb.h create mode 100755 libs/cygwin/include/H5FDstdio.h create mode 100755 libs/cygwin/include/H5FDstream.h create mode 100755 libs/cygwin/include/H5Fpublic.h create mode 100755 libs/cygwin/include/H5Gpublic.h create mode 100755 libs/cygwin/include/H5HGpublic.h create mode 100755 libs/cygwin/include/H5HLpublic.h create mode 100755 libs/cygwin/include/H5Ipublic.h create mode 100755 libs/cygwin/include/H5MMpublic.h create mode 100755 libs/cygwin/include/H5Opublic.h create mode 100755 libs/cygwin/include/H5Ppublic.h create mode 100755 libs/cygwin/include/H5Rpublic.h create mode 100755 libs/cygwin/include/H5Spublic.h create mode 100755 libs/cygwin/include/H5Tpublic.h create mode 100755 libs/cygwin/include/H5Zpublic.h create mode 100755 libs/cygwin/include/H5api_adpt.h create mode 100755 libs/cygwin/include/H5pubconf.h create mode 100755 libs/cygwin/include/H5public.h create mode 100755 libs/cygwin/include/hdf5.h create mode 100755 libs/cygwin/include/napi.h create mode 100755 libs/cygwin/include/napi4.h create mode 100755 libs/cygwin/include/napi5.h create mode 100755 libs/cygwin/include/napif.inc create mode 100755 libs/cygwin/include/napif__.inc create mode 100644 libs/cygwin/lib/CVS/Entries create mode 100644 libs/cygwin/lib/CVS/Repository create mode 100644 libs/cygwin/lib/CVS/Root create mode 100755 libs/cygwin/lib/libNeXus.a create mode 100755 libs/cygwin/lib/libdf.a create mode 100755 libs/cygwin/lib/libhdf5.a create mode 100755 libs/cygwin/lib/libhdf5.la create mode 100755 libs/cygwin/lib/libhdf5.settings create mode 100755 libs/cygwin/lib/libmfhdf.a create mode 100755 libs/cygwin/lib/libudport.a create mode 100755 make_gen create mode 100644 makefile create mode 100644 makefile_alpha create mode 100644 makefile_alpha_f create mode 100755 makefile_cygwin create mode 100644 makefile_linux create mode 100644 makefile_macintel create mode 100644 makefile_macosx create mode 100644 makefile_rhel7 create mode 100644 makefile_sl-linux create mode 100644 makefile_sl5 create mode 100644 makefile_sl6 create mode 100644 makefile_sl6-64 create mode 100755 maketree create mode 100644 napif.o create mode 100644 pgm/CVS/Entries create mode 100644 pgm/CVS/Repository create mode 100644 pgm/CVS/Root create mode 100644 pgm/abskor3.f create mode 100644 pgm/addchan.f create mode 100644 pgm/addei.f create mode 100644 pgm/addit.f create mode 100644 pgm/autofit.f create mode 100644 pgm/bose.f create mode 100644 pgm/brows.f create mode 100644 pgm/chooser.f create mode 100644 pgm/clamp.f create mode 100644 pgm/csc.f create mode 100644 pgm/csvsumvar.f create mode 100755 pgm/datafilepath create mode 100644 pgm/deteff.f create mode 100644 pgm/deteff2.f create mode 100755 pgm/getdatafilepath create mode 100644 pgm/polcal.f create mode 100644 pgm/subit.f create mode 100644 pgm/sumvar.f create mode 100644 pgm/trics_ccl.f create mode 100644 pgm/tricslog.f create mode 100644 pgm/ufit.f create mode 100644 pgm/zm_fit create mode 100644 pgplot_rhel7/drivers.list create mode 100644 pgplot_rhel7/gidriv.o create mode 100644 pgplot_rhel7/grarea.o create mode 100644 pgplot_rhel7/grbpic.o create mode 100644 pgplot_rhel7/grchsz.o create mode 100644 pgplot_rhel7/grclip.o create mode 100644 pgplot_rhel7/grclos.o create mode 100644 pgplot_rhel7/grclpl.o create mode 100644 pgplot_rhel7/grctoi.o create mode 100644 pgplot_rhel7/grcurs.o create mode 100644 pgplot_rhel7/grdate.o create mode 100644 pgplot_rhel7/grdot0.o create mode 100644 pgplot_rhel7/grdot1.o create mode 100644 pgplot_rhel7/grdtyp.o create mode 100644 pgplot_rhel7/grepic.o create mode 100644 pgplot_rhel7/gresc.o create mode 100644 pgplot_rhel7/gretxt.o create mode 100644 pgplot_rhel7/grexec.f create mode 100644 pgplot_rhel7/grexec.o create mode 100644 pgplot_rhel7/grfa.o create mode 100644 pgplot_rhel7/grfao.o create mode 100644 pgplot_rhel7/grfileio.o create mode 100644 pgplot_rhel7/grflun.o create mode 100644 pgplot_rhel7/grfont.dat create mode 100644 pgplot_rhel7/grgcom.o create mode 100644 pgplot_rhel7/grgenv.o create mode 100644 pgplot_rhel7/grgetc.o create mode 100644 pgplot_rhel7/grgfil.o create mode 100644 pgplot_rhel7/grglun.o create mode 100644 pgplot_rhel7/grgmem.o create mode 100644 pgplot_rhel7/grgmsg.o create mode 100644 pgplot_rhel7/grgray.o create mode 100644 pgplot_rhel7/grimg0.o create mode 100644 pgplot_rhel7/grimg1.o create mode 100644 pgplot_rhel7/grimg2.o create mode 100644 pgplot_rhel7/grimg3.o create mode 100644 pgplot_rhel7/grinit.o create mode 100644 pgplot_rhel7/gritoc.o create mode 100644 pgplot_rhel7/grlen.o create mode 100644 pgplot_rhel7/grlgtr.o create mode 100644 pgplot_rhel7/grlin0.o create mode 100644 pgplot_rhel7/grlin1.o create mode 100644 pgplot_rhel7/grlin2.o create mode 100644 pgplot_rhel7/grlin3.o create mode 100644 pgplot_rhel7/grlina.o create mode 100644 pgplot_rhel7/grmcur.o create mode 100644 pgplot_rhel7/grmker.o create mode 100644 pgplot_rhel7/grmova.o create mode 100644 pgplot_rhel7/grmsg.o create mode 100644 pgplot_rhel7/gropen.o create mode 100644 pgplot_rhel7/groptx.o create mode 100644 pgplot_rhel7/grpage.o create mode 100644 pgplot_rhel7/grpars.o create mode 100644 pgplot_rhel7/grpckg1.inc create mode 100644 pgplot_rhel7/grpixl.o create mode 100644 pgplot_rhel7/grpocl.o create mode 100644 pgplot_rhel7/grprom.o create mode 100644 pgplot_rhel7/grpxpo.o create mode 100644 pgplot_rhel7/grpxps.o create mode 100644 pgplot_rhel7/grpxpx.o create mode 100644 pgplot_rhel7/grpxre.o create mode 100644 pgplot_rhel7/grqcap.o create mode 100644 pgplot_rhel7/grqci.o create mode 100644 pgplot_rhel7/grqcol.o create mode 100644 pgplot_rhel7/grqcr.o create mode 100644 pgplot_rhel7/grqdev.o create mode 100644 pgplot_rhel7/grqdt.o create mode 100644 pgplot_rhel7/grqfnt.o create mode 100644 pgplot_rhel7/grqls.o create mode 100644 pgplot_rhel7/grqlw.o create mode 100644 pgplot_rhel7/grqpos.o create mode 100644 pgplot_rhel7/grqtxt.o create mode 100644 pgplot_rhel7/grqtyp.o create mode 100644 pgplot_rhel7/grquit.o create mode 100644 pgplot_rhel7/grrec0.o create mode 100644 pgplot_rhel7/grrect.o create mode 100644 pgplot_rhel7/grsci.o create mode 100644 pgplot_rhel7/grscr.o create mode 100644 pgplot_rhel7/grscrl.o create mode 100644 pgplot_rhel7/grsetc.o create mode 100644 pgplot_rhel7/grsets.o create mode 100644 pgplot_rhel7/grsfnt.o create mode 100644 pgplot_rhel7/grsize.o create mode 100644 pgplot_rhel7/grskpb.o create mode 100644 pgplot_rhel7/grslct.o create mode 100644 pgplot_rhel7/grsls.o create mode 100644 pgplot_rhel7/grslw.o create mode 100644 pgplot_rhel7/grsy00.o create mode 100644 pgplot_rhel7/grsyds.o create mode 100644 pgplot_rhel7/grsymk.o create mode 100644 pgplot_rhel7/grsyxd.o create mode 100644 pgplot_rhel7/grterm.o create mode 100644 pgplot_rhel7/grtermio.o create mode 100644 pgplot_rhel7/grtext.o create mode 100644 pgplot_rhel7/grtoup.o create mode 100644 pgplot_rhel7/grtrim.o create mode 100644 pgplot_rhel7/grtrml.o create mode 100644 pgplot_rhel7/grtrn0.o create mode 100644 pgplot_rhel7/grtter.o create mode 100644 pgplot_rhel7/grtxy0.o create mode 100644 pgplot_rhel7/gruser.o create mode 100644 pgplot_rhel7/grvct0.o create mode 100644 pgplot_rhel7/grwarn.o create mode 100644 pgplot_rhel7/grxhls.o create mode 100644 pgplot_rhel7/grxrgb.o create mode 100644 pgplot_rhel7/libpgplot.a create mode 100755 pgplot_rhel7/libpgplot.so create mode 100644 pgplot_rhel7/makefile create mode 100644 pgplot_rhel7/nudriv.o create mode 100644 pgplot_rhel7/pgadvance.o create mode 100644 pgplot_rhel7/pgarro.o create mode 100644 pgplot_rhel7/pgask.o create mode 100644 pgplot_rhel7/pgaxis.o create mode 100644 pgplot_rhel7/pgaxlg.o create mode 100644 pgplot_rhel7/pgband.o create mode 100644 pgplot_rhel7/pgbbuf.o create mode 100644 pgplot_rhel7/pgbeg.o create mode 100644 pgplot_rhel7/pgbegin.o create mode 100644 pgplot_rhel7/pgbin.o create mode 100644 pgplot_rhel7/pgbox.o create mode 100644 pgplot_rhel7/pgbox1.o create mode 100644 pgplot_rhel7/pgcirc.o create mode 100644 pgplot_rhel7/pgcl.o create mode 100644 pgplot_rhel7/pgclos.o create mode 100644 pgplot_rhel7/pgcn01.o create mode 100644 pgplot_rhel7/pgcnsc.o create mode 100644 pgplot_rhel7/pgconb.o create mode 100644 pgplot_rhel7/pgconf.o create mode 100644 pgplot_rhel7/pgconl.o create mode 100644 pgplot_rhel7/pgcons.o create mode 100644 pgplot_rhel7/pgcont.o create mode 100644 pgplot_rhel7/pgconx.o create mode 100644 pgplot_rhel7/pgcp.o create mode 100644 pgplot_rhel7/pgctab.o create mode 100644 pgplot_rhel7/pgcurs.o create mode 100644 pgplot_rhel7/pgcurse.o create mode 100755 pgplot_rhel7/pgdemo1 create mode 100755 pgplot_rhel7/pgdemo10 create mode 100755 pgplot_rhel7/pgdemo11 create mode 100755 pgplot_rhel7/pgdemo12 create mode 100755 pgplot_rhel7/pgdemo13 create mode 100755 pgplot_rhel7/pgdemo14 create mode 100755 pgplot_rhel7/pgdemo15 create mode 100755 pgplot_rhel7/pgdemo16 create mode 100755 pgplot_rhel7/pgdemo17 create mode 100755 pgplot_rhel7/pgdemo2 create mode 100755 pgplot_rhel7/pgdemo3 create mode 100755 pgplot_rhel7/pgdemo4 create mode 100755 pgplot_rhel7/pgdemo5 create mode 100755 pgplot_rhel7/pgdemo6 create mode 100755 pgplot_rhel7/pgdemo7 create mode 100755 pgplot_rhel7/pgdemo8 create mode 100755 pgplot_rhel7/pgdemo9 create mode 100644 pgplot_rhel7/pgdraw.o create mode 100644 pgplot_rhel7/pgebuf.o create mode 100644 pgplot_rhel7/pgend.o create mode 100644 pgplot_rhel7/pgenv.o create mode 100644 pgplot_rhel7/pgeras.o create mode 100644 pgplot_rhel7/pgerr1.o create mode 100644 pgplot_rhel7/pgerrb.o create mode 100644 pgplot_rhel7/pgerrx.o create mode 100644 pgplot_rhel7/pgerry.o create mode 100644 pgplot_rhel7/pgetxt.o create mode 100644 pgplot_rhel7/pgfunt.o create mode 100644 pgplot_rhel7/pgfunx.o create mode 100644 pgplot_rhel7/pgfuny.o create mode 100644 pgplot_rhel7/pggray.o create mode 100644 pgplot_rhel7/pghi2d.o create mode 100644 pgplot_rhel7/pghis1.o create mode 100644 pgplot_rhel7/pghist.o create mode 100644 pgplot_rhel7/pghtch.o create mode 100644 pgplot_rhel7/pgiden.o create mode 100644 pgplot_rhel7/pgimag.o create mode 100644 pgplot_rhel7/pginit.o create mode 100644 pgplot_rhel7/pglab.o create mode 100644 pgplot_rhel7/pglabel.o create mode 100644 pgplot_rhel7/pglcur.o create mode 100644 pgplot_rhel7/pgldev.o create mode 100644 pgplot_rhel7/pglen.o create mode 100644 pgplot_rhel7/pgline.o create mode 100644 pgplot_rhel7/pgmove.o create mode 100644 pgplot_rhel7/pgmtext.o create mode 100644 pgplot_rhel7/pgmtxt.o create mode 100644 pgplot_rhel7/pgncur.o create mode 100644 pgplot_rhel7/pgncurse.o create mode 100644 pgplot_rhel7/pgnoto.o create mode 100644 pgplot_rhel7/pgnpl.o create mode 100644 pgplot_rhel7/pgnumb.o create mode 100644 pgplot_rhel7/pgolin.o create mode 100644 pgplot_rhel7/pgopen.o create mode 100644 pgplot_rhel7/pgpage.o create mode 100644 pgplot_rhel7/pgpanl.o create mode 100644 pgplot_rhel7/pgpap.o create mode 100644 pgplot_rhel7/pgpaper.o create mode 100644 pgplot_rhel7/pgpixl.o create mode 100644 pgplot_rhel7/pgplot.doc create mode 100644 pgplot_rhel7/pgplot.inc create mode 100644 pgplot_rhel7/pgpnts.o create mode 100644 pgplot_rhel7/pgpoint.o create mode 100644 pgplot_rhel7/pgpoly.o create mode 100644 pgplot_rhel7/pgpt.o create mode 100644 pgplot_rhel7/pgpt1.o create mode 100644 pgplot_rhel7/pgptext.o create mode 100644 pgplot_rhel7/pgptxt.o create mode 100644 pgplot_rhel7/pgqah.o create mode 100644 pgplot_rhel7/pgqcf.o create mode 100644 pgplot_rhel7/pgqch.o create mode 100644 pgplot_rhel7/pgqci.o create mode 100644 pgplot_rhel7/pgqcir.o create mode 100644 pgplot_rhel7/pgqclp.o create mode 100644 pgplot_rhel7/pgqcol.o create mode 100644 pgplot_rhel7/pgqcr.o create mode 100644 pgplot_rhel7/pgqcs.o create mode 100644 pgplot_rhel7/pgqdt.o create mode 100644 pgplot_rhel7/pgqfs.o create mode 100644 pgplot_rhel7/pgqhs.o create mode 100644 pgplot_rhel7/pgqid.o create mode 100644 pgplot_rhel7/pgqinf.o create mode 100644 pgplot_rhel7/pgqitf.o create mode 100644 pgplot_rhel7/pgqls.o create mode 100644 pgplot_rhel7/pgqlw.o create mode 100644 pgplot_rhel7/pgqndt.o create mode 100644 pgplot_rhel7/pgqpos.o create mode 100644 pgplot_rhel7/pgqtbg.o create mode 100644 pgplot_rhel7/pgqtxt.o create mode 100644 pgplot_rhel7/pgqvp.o create mode 100644 pgplot_rhel7/pgqvsz.o create mode 100644 pgplot_rhel7/pgqwin.o create mode 100644 pgplot_rhel7/pgrect.o create mode 100644 pgplot_rhel7/pgrnd.o create mode 100644 pgplot_rhel7/pgrnge.o create mode 100644 pgplot_rhel7/pgsah.o create mode 100644 pgplot_rhel7/pgsave.o create mode 100644 pgplot_rhel7/pgscf.o create mode 100644 pgplot_rhel7/pgsch.o create mode 100644 pgplot_rhel7/pgsci.o create mode 100644 pgplot_rhel7/pgscir.o create mode 100644 pgplot_rhel7/pgsclp.o create mode 100644 pgplot_rhel7/pgscr.o create mode 100644 pgplot_rhel7/pgscrl.o create mode 100644 pgplot_rhel7/pgscrn.o create mode 100644 pgplot_rhel7/pgsfs.o create mode 100644 pgplot_rhel7/pgshls.o create mode 100644 pgplot_rhel7/pgshs.o create mode 100644 pgplot_rhel7/pgsitf.o create mode 100644 pgplot_rhel7/pgslct.o create mode 100644 pgplot_rhel7/pgsls.o create mode 100644 pgplot_rhel7/pgslw.o create mode 100644 pgplot_rhel7/pgstbg.o create mode 100644 pgplot_rhel7/pgsubp.o create mode 100644 pgplot_rhel7/pgsvp.o create mode 100644 pgplot_rhel7/pgswin.o create mode 100644 pgplot_rhel7/pgtbox.o create mode 100644 pgplot_rhel7/pgtext.o create mode 100644 pgplot_rhel7/pgtick.o create mode 100644 pgplot_rhel7/pgtikl.o create mode 100644 pgplot_rhel7/pgupdt.o create mode 100644 pgplot_rhel7/pgvect.o create mode 100644 pgplot_rhel7/pgvport.o create mode 100644 pgplot_rhel7/pgvsiz.o create mode 100644 pgplot_rhel7/pgvsize.o create mode 100644 pgplot_rhel7/pgvstand.o create mode 100644 pgplot_rhel7/pgvstd.o create mode 100644 pgplot_rhel7/pgvw.o create mode 100644 pgplot_rhel7/pgwedg.o create mode 100644 pgplot_rhel7/pgwindow.o create mode 100644 pgplot_rhel7/pgwnad.o create mode 100755 pgplot_rhel7/pgxwin_server create mode 100644 pgplot_rhel7/psdriv.o create mode 100644 pgplot_rhel7/rgb.txt create mode 100644 pgplot_rhel7/ttdriv.o create mode 100644 pgplot_rhel7/xwdriv.o create mode 100644 pgplot_sl6/A_README.TXT create mode 100644 pgplot_sl6/drivers.list create mode 100644 pgplot_sl6/grexec.f create mode 100644 pgplot_sl6/grfont.dat create mode 100644 pgplot_sl6/grpckg1.inc create mode 100644 pgplot_sl6/libpgplot.a create mode 100644 pgplot_sl6/makefile create mode 100644 pgplot_sl6/pgplot.doc create mode 100644 pgplot_sl6/pgplot.inc create mode 100755 pgplot_sl6/pgxwin_server create mode 100644 pgplot_sl6/rgb.txt create mode 100644 rhel7/fit_help.html create mode 120000 rhel7/libreadline.so create mode 120000 rhel7/src create mode 100644 unix/CVS/Entries create mode 100644 unix/CVS/Repository create mode 100644 unix/CVS/Root create mode 100644 unix/cfg/CVS/Entries create mode 100644 unix/cfg/CVS/Repository create mode 100644 unix/cfg/CVS/Root create mode 100644 unix/cfg/linux create mode 100644 unix/cfg/macosx create mode 100644 unix/cfg/tru64 create mode 100644 unix/cfg/zm_fit create mode 100755 unix/fitv create mode 100755 unix/myc_tmp.c create mode 100755 unix/myc_tmp.h create mode 100644 unix/napif.f create mode 100755 unix/sys.f create mode 100644 unix/sys1.f create mode 100644 unix/sys3.f create mode 100644 unix/sys_cmdpar.f create mode 100644 unix/sys_date.f create mode 100755 unix/sys_env.c create mode 100644 unix/sys_file.f create mode 100644 unix/sys_fun.c create mode 100644 unix/sys_fvi.c create mode 100644 unix/sys_getenv.f create mode 100644 unix/sys_home.f create mode 100644 unix/sys_lun.f create mode 100644 unix/sys_open.f create mode 100644 unix/sys_parse.f create mode 100644 unix/sys_rdline.c create mode 100644 unix/sys_rdline0.c create mode 100755 unix/sys_remote_host.f create mode 100644 unix/sys_try.c create mode 100644 unix/sys_unix.c create mode 100644 unix/sys_wait.f create mode 100755 unix/sysc.c create mode 100644 unix/sysc1.c create mode 100644 unix/terinq.f create mode 100644 unix/terinq_new.f create mode 100644 unix/terinq_old.f create mode 100644 unix/tru64/CVS/Entries create mode 100644 unix/tru64/CVS/Repository create mode 100644 unix/tru64/CVS/Root create mode 100644 unix/tru64/sys_open.f create mode 100644 unix/tru64/zm_fit create mode 100644 unix/zm_fit diff --git a/CVS/Entries b/CVS/Entries new file mode 100644 index 0000000..3ad73f9 --- /dev/null +++ b/CVS/Entries @@ -0,0 +1,14 @@ +/makefile_alpha_f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/makefile_cygwin/1.1.1.1/Tue Nov 2 15:54:57 2004// +D/gen//// +D/libs//// +D/pgm//// +D/unix//// +D/vms//// +/makefile/1.2/Thu Nov 18 09:03:11 2004// +/maketree/1.2/Thu Nov 18 09:03:54 2004// +/README/1.2/Fri Dec 8 08:08:20 2006// +/makefile_alpha/1.3/Fri Dec 15 06:53:36 2006// +/makefile_macosx/1.4/Fri Jun 22 09:34:38 2007// +/makefile_linux/1.3/Fri Aug 19 13:16:13 2022// +/make_gen/1.9/Fri Jun 22 10:48:34 2018// diff --git a/CVS/Repository b/CVS/Repository new file mode 100644 index 0000000..8465196 --- /dev/null +++ b/CVS/Repository @@ -0,0 +1 @@ +analysis/fit diff --git a/CVS/Root b/CVS/Root new file mode 100644 index 0000000..710e291 --- /dev/null +++ b/CVS/Root @@ -0,0 +1 @@ +/afs/psi.ch/project/sinq/cvs diff --git a/README b/README new file mode 100644 index 0000000..dca8e0e --- /dev/null +++ b/README @@ -0,0 +1,118 @@ +FIT + +FIT is a program to display data files and to fit standard or user-defined +functions. It can read many types of data files, mainly neutron scattering +data. It is extensible for other datafiles types, please ask the author listed +below how to implement new data files structures. It may also be used as a +library for automatic fit programs or simply to convert data files. +The original FIT program was based on an old version of the CERN Minuit +library. Since 1990, it was extended and improved continuosly. +There is a built-in help facility, where you can find most of the features +FIT offers (HELP command). +For the copyright notice, look at the end of this file. + +Installations instructions +-------------------------- + +Various flavors of Unix (Tru64, Linux, Mac OS X): + + for installing fit from source you need the pgplot and readline libraries, + if you like nexus support you need also the nexus API, hdf and hdf5 + and the compilers gcc and g77 (other fortran compilers may need source + adjustments) + + Unpack the sources, creating the directory tree ./fitsrc/... + and go to the source directory: + + > gunzip fit.tar.gz + > tar -xvf fit.tar + > rm fit.tar (assuming you dont want fit.tar as a backup) + > cd fitsrc + + Here you can find several system specific makefiles: + + > ls makefile_* + makefile_alpha makefile_alpha_f makefile_linux makefile_macosx + + These files are for Tru64 Unix (normal and fast version), RedHat Linux + and Mac OS X. + + Edit one of these file to define where the needed libraries are. + + Define an environment variable for your version, for example + + > setenv FIT_VERSION linux + + You may define this also at login. + + Then simply enter + + > make all + + to make all of fit. + + On Linux and Mac OSX systems you should use DEB=D for the debugger + friendly, non-optimizing version. The optimized version is buggy. + On Tru64 Unix the optimized version is substantially faster. + +VMS: + + To build FIT and some related programs execute the CONFIG.COM command + file. It will give you further instructions. + + + Example: + + Let us assume that the sources are in directory [USER.FIT.SRC...] + and that the prompt is $ + + $ @[USER.FIT.SRC]CONFIG + DRA0:[USER.FIT.EXE] created + DRA0:[USER.FIT.DEB] created + DRA0:[USER.FIT.EXE]MAKE.CFG; created + modify this file to define where to find the libraries + then use MAKE to make all targets in directory DRA0:[USER.FIT.EXE] + or MAKE -D to make a debugger friendly version in directory + DRA0:[USER.FIT.DEB]. + To get some help on the MAKE command type MAKE ? + + $ MAKE + ... + +Last revision: 28.08.2003 (Version 4.6) +-- +Markus Zolliker +Laboratory for Neutron Scattering, ETH Zurich & PSI Villigen +CH-5232 Villigen PSI +Tel: +41 56 310 20 89 +Fax: +41 56 310 29 39 +E-mail: markus.zolliker@psi.ch +-- + + +Copyright notice + +The author hereby grant permission to use, copy, and distribute +this software for any purpose, provided that existing copyright notices +are retained in all copies and that this notice is included verbatim in +any distributions. Modifications are also allowed, but before distributing +modified software, you are kindly asked to notify the author, as long as +his address is still valid. +No written agreement, license, or royality fee is required for any of the +authorized uses. + +Ask the Author if this copyright is too strong for your purpose. + +IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY +FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY +DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE +IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE +NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR +MODIFICATIONS. + diff --git a/fit_help.html b/fit_help.html new file mode 100644 index 0000000..0d80305 --- /dev/null +++ b/fit_help.html @@ -0,0 +1,137 @@ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fitlor.py b/fitlor.py new file mode 100755 index 0000000..c72b494 --- /dev/null +++ b/fitlor.py @@ -0,0 +1,72 @@ +#!/usr/bin/python +import sys +from math import sin, cos, radians +from subprocess import call +from collections import Mapping +from tempfile import NamedTemporaryFile + +output_format = '{n:6d}{h:4d}{k:4d}{l:4d}'\ + '{i1:10.2f}{sigi1:10.2f}'\ + '{th1:8.2f}{p1:8.2f}{chi:8.2f}{phi:8.2f}' + +if len(sys.argv) > 0 and sys.argv[0] == '-fit': + call_fit = True + sys.argv.pop(0) +else: + call_fit = False + +if len(sys.argv) > 0: + datfile = sys.argv[0] + sys.argv.pop(0) +else: + datfile = 'fitlor_data.txt' + +if len(sys.argv) > 0: + outfile = sys.argv[0] + sys.argv.pop(0) +else: + outfile = 'fitlor_out.txt' + +if call_fit: + with NamedTemporaryFile('w') as cmdfil: + cmdfil.write('k h,k,l,i1,p1,intexp,two_theta,chi,phi\n') + cmdfil.write('open %s\n' % outfile) + call(('fit', '-F', cmdfil.name)) + +tilt_geometry = False +lorentz_correction = True + +class Row(object): + def __init__(self, keys, values): + if keys is None: + raise ValueError('no keys') + for k,v in zip(keys, values): + v = float(v) + if v == int(v): + v = int(v) + setattr(self, k.lower(), v) + +keys = None +rows = [] +with open(datfile) as inp: + for line in inp: + values = line.split() + try: + row = Row(keys, values) + except ValueError: + keys = values + continue + rows.append(row) + row.n = len(rows) + row.th1=row.two_theta * 0.2 + if lorentz_correction: + lor_cor = sin(abs(radians(row.two_theta))) + if tilt_geometry: + lor_cor *= cos(radians(row.chi)) + row.intcor = row.i1 * lor_cor + row.sigcor = row.sigi1 * lor_cor + +with open(outfile, 'w') as out: + for row in rows: + out.write(output_format.format(row.__dict__) + '\n') + \ No newline at end of file diff --git a/gen/CVS/Entries b/gen/CVS/Entries new file mode 100644 index 0000000..0403b73 --- /dev/null +++ b/gen/CVS/Entries @@ -0,0 +1,99 @@ +/cho_deb.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/dat_d1a.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/dat_fullp.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/dat_ida.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/dat_nexus_dum.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/dat_utils.inc/1.1.1.1/Tue Nov 2 15:54:57 2004// +/dat_xxx.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/dat_xy.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/dat_xys.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/dat_xysm.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit.vers/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_array.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_bars.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_connect.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_cor.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_exit.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_fit.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_fix.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_help.f_old/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_merge.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_peak.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_print.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_range.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_rel.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_scale.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_set.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_style.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_subtract.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_title.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fit_win.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/fitv.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/inex.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/intprt.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/lib.fvi/1.1.1.1/Tue Nov 2 15:54:57 2004// +/metaf.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/migrad.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/myc_err.c/1.1.1.1/Tue Nov 2 15:54:57 2004// +/myc_err.h/1.1.1.1/Tue Nov 2 15:54:57 2004// +/myc_list.h/1.1.1.1/Tue Nov 2 15:54:57 2004// +/myc_mem.h/1.1.1.1/Tue Nov 2 15:54:57 2004// +/myc_str.c/1.1.1.1/Tue Nov 2 15:54:57 2004// +/myc_str.h/1.1.1.1/Tue Nov 2 15:54:57 2004// +/quick_sort.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/simplex.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/zm_fit/1.1.1.1/Tue Nov 2 15:54:57 2004// +/dat_2t.f/1.2/Mon Nov 22 14:56:06 2004// +/dat_5c2.f/1.2/Mon Nov 22 14:56:05 2004// +/dat_oldtas.f/1.2/Mon Nov 22 14:56:01 2004// +/dat_rita.f/1.3/Wed Apr 13 07:34:34 2005// +/dat.inc/1.3/Fri Oct 21 07:16:05 2005// +/fit_user.inc/1.2/Fri Oct 21 07:17:42 2005// +/fit_bgedit.f/1.2/Fri Aug 25 07:00:13 2006// +/fit_user.f/1.4/Thu Dec 1 13:21:13 2005// +/make_custom.f/1.4/Fri Aug 25 07:03:16 2006// +/make_vers.f/1.2/Fri Aug 25 07:04:12 2006// +/dat_init.f/1.3/Wed Nov 8 12:01:08 2006// +/dat_inx.f/1.3/Fri Apr 20 13:46:31 2007// +/dat_lnsp.f/1.4/Tue Sep 19 13:37:14 2006// +/dat_sics.f/1.3/Thu Sep 3 11:26:43 2009// +/dat_tasmad.f/1.3/Fri May 29 08:36:13 2009// +/dat_utils.f/1.4/Fri Aug 15 07:23:39 2008// +/fifun.f/1.2/Mon Aug 28 08:51:40 2006// +/fit.f/1.3/Fri Dec 8 09:40:07 2006// +/fit_list.f/1.2/Wed Dec 19 09:10:36 2007// +/fit_mon.f/1.2/Wed Aug 26 11:37:49 2009// +/fit_multiply.f/1.3/Tue Dec 19 09:28:10 2006// +/fvi.f/1.3/Tue Jan 29 15:16:40 2008// +/make_fvi.f/1.4/Tue Jan 29 15:54:07 2008// +/make_help.f/1.3/Mon Mar 5 15:11:54 2007// +/myc_fortran.h/1.2/Wed Aug 26 11:54:28 2009// +/str.f/1.2/Tue Aug 25 11:24:48 2009// +/sys_util.h/1.2/Tue Jan 29 15:06:00 2008// +/cho.f/1.3/Mon Mar 12 15:57:43 2012// +/fit_init.f/1.2/Fri Feb 15 15:37:29 2008// +/dat_fit3.f/1.2/Mon Mar 12 16:11:40 2012// +/dat_spec.f/1.5/Mon Jul 25 07:46:42 2011// +/fit_abskor.f/1.5/Fri Aug 20 13:40:37 2010// +/fit_file.f/1.5/Mon Mar 12 16:13:11 2012// +/gra.f/1.3/Thu Feb 2 07:47:54 2012// +/fit.help/1.8/Thu Nov 29 09:14:34 2012// +/fit_plot.f/1.3/Thu Nov 29 09:19:48 2012// +/metac.c/1.4/Thu Sep 17 13:39:02 2015// +/dat_ccl.f/1.6/Tue Nov 17 12:07:20 2015// +/fit_export.f/1.4/Wed Mar 30 11:33:12 2016// +/napi_err.c/1.3/Fri May 13 05:50:48 2016// +/cvt.f/1.4/Wed Jan 10 16:07:55 2018// +/dat_c.c/1.6/Mon Apr 19 12:12:54 2021// +/dat_nexus.f/1.8/Mon Jan 17 10:26:01 2022// +/dat_nexus.inc/1.4/Wed Sep 20 07:44:22 2017// +/dat_open.f/1.9/Mon Sep 7 11:39:57 2020// +/dat_table.f/1.4/Fri Jan 19 15:01:12 2018// +/fit.inc/1.6/Mon May 30 12:00:34 2016// +/fit_auto.f/1.3/Fri Sep 9 09:27:53 2016// +/fit_command.f/1.9/Fri Jun 22 07:46:26 2018// +/fit_dat.f/1.4/Thu Nov 19 16:28:52 2020// +/fit_fun.f/1.2/Fri Sep 9 09:28:33 2016// +/fit_main.f/1.6/Fri Jun 22 07:30:18 2018// +/fit_out.f/1.6/Fri Jun 22 07:01:21 2018// +D diff --git a/gen/CVS/Repository b/gen/CVS/Repository new file mode 100644 index 0000000..b23fecb --- /dev/null +++ b/gen/CVS/Repository @@ -0,0 +1 @@ +analysis/fit/gen diff --git a/gen/CVS/Root b/gen/CVS/Root new file mode 100644 index 0000000..710e291 --- /dev/null +++ b/gen/CVS/Root @@ -0,0 +1 @@ +/afs/psi.ch/project/sinq/cvs diff --git a/gen/cho.f b/gen/cho.f new file mode 100644 index 0000000..bb4afb8 --- /dev/null +++ b/gen/cho.f @@ -0,0 +1,726 @@ + subroutine cho_inq(arg, gdev, pps, cols, rows) + + implicit none + + character arg*(*), pps*(*), gdev*(*) + integer cols, rows + + character str*80, old1*80, old2*80, line*80 + character typ*2, host*80, system*16 + integer c,r,i,l,cnt,inter,n,j + + cols=0 + rows=0 + call pgqndt(n) + str=' ' + pps=' ' + gdev=' ' + r=0 + c=0 + + call sys_remote_host(host, typ) + if (typ .eq. 'XW') then + gdev='XWINDOW' + goto 30 + endif + if (typ .eq. 'LO') goto 90 ! local without XWINDOW + call sys_check_system(system) + if (system .ne. 'TRU64') goto 90 ! on linux no other devices supported + + ! remote login without XWINDOW + if (arg .ne. ' ') then + cnt=5 + call str_trim(str, arg, l) + goto 21 + endif + cnt=0 +20 cnt=cnt+1 + if (cnt .eq. 2) then + old1=str + elseif (cnt .eq. 3) then + if (str .eq. old1) goto 80 + print *,'Please do not touch the keyboard!',char(7) + call sys_wait(1.0) + old2=str + elseif (cnt .eq. 4) then + if (str .eq. old1 .or. str .eq. old2) goto 80 + print *,'Do not touch the keyboard, please !!!',char(7) + call sys_wait(2.0) + elseif (cnt .gt. 4) then + goto 90 + endif + r=0 + c=0 + + print '(X,A,$)', ' ' + call sys_rd_tmo(char(5),str,l) +c print *,str(1:max(1,l)) + +21 if (l .gt. 2 .and. str(1:2) .eq. '_ ') then + i=index(str(1:l),',') + if (i .ne. 0) then + if (i .le. 3 .or. i .ge. l) goto 20 + r=-1 + read(str(i+1:l), *, err=22,end=22) r,c +22 if (r .lt. 0) goto 20 + l=i-1 + endif + i=index(str(1:l),';') + if (i .eq. 0) then + gdev=str(3:l) + else + if (i .gt. 3) gdev=str(3:i-1) + if (i .lt. l) pps=str(i+1:l) + endif + + goto 60 + + endif + + +30 cnt=10 ! exit anyway + + call cho_load(host, gdev, pps) + +60 if (gdev .ne. ' ') then + do i=1,n + call pgqdt(i, str, l, line, j, inter) + if (l .gt. 0 .and. inter .eq. 1) then + if (str(2:) .eq. gdev) goto 70 + endif + enddo + if (gdev .eq. 'VT240') then + gdev='VT125' + else if (gdev .eq. 'VMAC') then ! if VMAC not installed, do not ask again + gdev=' ' + cnt=10 + else + gdev=' ' + endif +70 continue + endif + +80 if (r .gt. 3 .and. r .lt. 100) then + rows=r + endif + if (c .ge. 40 .and. c .le. 255) then + cols=c + endif + if (gdev .eq. ' ' .and. cnt .le. 4) goto 20 ! try again +90 call cho_vpp_cups(pps) + end + + + subroutine cho_load(host, gdev, pps) +! +! load graphic device GDEV and print destination PPS from the line +! starting with HOME from preferences file +! + character*(*) host, gdev, pps + + integer lun, l, j, ld, iostat + character line*80, home*80 + + call sys_get_lun(lun) + call sys_home(home) + call str_trim(home, home, l) + call str_trim(host, host, ld) + + call sys_open(lun, home(1:l)//'terinq.pref', 'r', iostat) + if (iostat .ne. 0) goto 29 + +25 read(lun, '(a)',end=27,err=27) line + l=index(line,':') + if (l .gt. 1) then +c print *,'host: "',host(1:ld),'"' + if (index(line(1:l-1), host(1:ld)) .ne. 0) then + j=index(line(l+1:),';') + if (gdev .eq. ' ') then + if (j .eq. 0) then + gdev=line(l+1:) + elseif (j .gt. 1) then + gdev=line(l+1:l+j-1) + endif + endif + if (pps .eq. ' ') then + if (j .gt. 0 .and. l+j .le. len(line)) then + pps=line(l+j+1:) + endif + endif + close(lun) + goto 29 + endif + endif + goto 25 +27 close(lun) +29 call sys_free_lun(lun) + end + + + subroutine cho_save(host, devdest) + + character host*(*), devdest*(*) ! no trailing blanks, please + integer lun, lun1 + + character home*128, line*128 + logical done + integer l,ll,lh,iostat + + call sys_get_lun(lun) + call sys_home(home) + call str_trim(home, home, lh) + + done=.false. + + call sys_get_lun(lun1) + call sys_open(lun1, home(1:lh)//'terinq.pref1', 'w', iostat) + if (iostat .ne. 0) goto 91 + + call sys_open(lun, home(1:lh)//'terinq.pref', 'r', iostat) + if (iostat .ne. 0) goto 12 + +10 read(lun, '(a)',end=11,err=11) line + l=index(line,':') + if (l .gt. 1) then + if (index(line(1:l), host) .ne. 0) then + done=.true. + write(lun1, '(2a)') line(1:l),devdest + goto 10 + endif + endif + call cho_vpp_cups(line) + call str_trim(line, line, ll) + write(lun1, '(a)') line(1:ll) + goto 10 +11 close(lun) +12 if (.not. done) then + write(lun1, '(3a)') host,':',devdest + endif +27 close(lun1) +91 call sys_free_lun(lun) + call sys_free_lun(lun1) + call sys_rename_file(home(1:lh)//'terinq.pref1' + 1,home(1:lh)//'terinq.pref') + end + + + subroutine cho_choose(ask) !! + + character ask*1 ! ' ': info only + ! '?': ask for all parameters + ! 'G' ask for graphic device, if not defined + ! 'P' ask for printer device, if not defined + + character popt*1, pan*8, file*48, pcmd*48, gdev*8, pdev*8 + character dest*32, host*64 + save popt, pan, file, pcmd, gdev, pdev, dest, host + + character ans*80, typ*8, desc*64, gdesc*64, pdesc*64 + character pdev2*8, dev0*8, cfg*64 + integer i, j, l, m, n, inter, la, h, v, ipan, lc + logical savepref, init/.true./, initg/.true./ + integer n_names, i_gdev, i_popt, i_pan, i_file + integer i_pcmd, i_pdev, i_dest + parameter (n_names=7, i_gdev=1, i_popt=2, i_pan=3, i_file=4 + 1 , i_pcmd=5, i_pdev=6, i_dest=7) + character names(n_names)*16 + data names(i_gdev)/'CHOOSER_GDEV'/ + data names(i_popt)/'CHOOSER_POPT'/ + data names(i_pan )/'CHOOSER_PAN' / + data names(i_file)/'CHOOSER_FILE'/ + data names(i_pcmd)/'CHOOSER_PCMD'/ + data names(i_pdev)/'CHOOSER_PDEV'/ + data names(i_dest)/'CHOOSER_DEST'/ + + character opt(4)*50/ + 1 'F write a file (one file per page)' + 1,'A write a file (all pages on one file)' + 1,'L send plots to printer (all together on exit)' + 1,'I send plots immediately to printer'/ + + savepref=.false. + call pgqndt(n) + + if (init) then + init=.false. + + call sys_loadenv + + call sys_getenv(names(i_gdev), gdev) + call sys_getenv(names(i_popt), popt) + call sys_getenv(names(i_pan ), pan) + call sys_getenv(names(i_file), file) + call sys_getenv(names(i_pcmd), pcmd) + call sys_getenv(names(i_pdev), pdev) + call sys_getenv(names(i_dest), dest) + + if (pan .eq. ' ') then + pan='1' + call sys_setenv(names(i_pan ), pan) + endif + if (file .eq. ' ') then + file='pgplot.ps' + call sys_setenv(names(i_file), file) + endif + if (popt .eq. ' ') then + popt='L' + call sys_setenv(names(i_popt), popt) + endif + if (pdev .eq. ' ') then + pdev='PS' + call sys_setenv(names(i_pdev), pdev) + endif + endif + if (ask .eq. 'G') then + if (initg) then + initg=.false. + if (gdev .eq. ' ') then + call cho_inq(' ', gdev, dest, i, j) + call sys_setenv(names(i_gdev), gdev) + call sys_setenv(names(i_dest), dest) + endif + call sys_setenv('PGPLOT_DEV', '/'//gdev) + endif + endif + + ans=' ' + if (ask .eq. 'G') then + if (gdev .ne. ' ') goto 99 + ans='G' + elseif (ask .eq. 'P') then + if (popt .eq. 'A' .or. popt .eq. 'F') then + if (file .ne. ' ') goto 99 + ans='F' + else + i=index(pcmd, '*') + if (i .ne. 0) then + if (dest .ne. ' ') goto 99 + call str_trim(pcmd, pcmd, l) + print *,'Print command: ',pcmd(1:l) + ans='D' + else + if (pcmd .ne. ' ') goto 99 + ans='C' + endif + endif + endif + +20 continue + + gdesc='unknown' + pdesc='unknown' + read(pan, *, err=21,end=21) ipan +21 call cho_calc_pan(ipan, h, v) + if (v .gt. h) then + if (pdev(1:1) .ne. 'V' .and. pdev(2:2) .ne. 'V') then + pdev2=pdev(1:1)//'V'//pdev(2:) + pdev='V'//pdev + endif + else + if (pdev(1:1) .eq. 'V') then + pdev=pdev(2:) + elseif (pdev(2:2) .eq. 'V') then + pdev=pdev(1:1)//pdev(3:) + endif + pdev2=' ' + endif + do i=1,n + call pgqdt(i, typ, l, desc, m, inter) + if (l .gt. 0) then + if (inter .eq. 1) then + if (gdev .eq. typ(2:) .or. + 1 gdev .eq. 'VT240' .and. typ(2:) .eq. 'VT125') then + gdesc=typ(2:l)//' '//desc + endif + elseif (pdev .eq. typ(2:)) then + pdesc=typ(2:l)//' '//desc + elseif (pdev2 .eq. typ(2:)) then + pdev=pdev2 + pdesc=typ(2:l)//' '//desc + endif + endif + enddo + call sys_setenv(names(i_pdev), pdev) + + if (ask .eq. ' ') then ! info only + call str_trim(gdesc, gdesc, l) + print *,'Display device type: ',gdesc(1:l) + call str_trim(pdesc, pdesc, l) + print *,'Printer device type: ',pdesc(1:l) + if (popt .eq. 'F' .or. popt .eq. 'A') then + call str_trim(file, file, l) + if (popt .eq. 'F') then + print *,'one file per page, filename: ', file(1:l),'_n' + else + print *,'all pages on one page. filename: ', file(1:l) + endif + else + call str_trim(pcmd, pcmd, l) + call str_trim(dest, dest, i) + if (pcmd .eq. ' ') then + print *,'print command undefined' + elseif (dest .eq. ' ' .and. index(pcmd,'*') .ne. 0) then + print *,'print destination undefined' + elseif (dest .ne. ' ' .and. index(pcmd,'*') .eq. 0) then + print *,'print destination ignored' + 1,' (print command does not contain *)' + elseif (popt .eq. 'L') then + print *,'print later on ',dest(1:i) + 1 ,' with command: ', pcmd(1:l) + else + print *,'print immediately on ',dest(1:i) + 1 ,' with command: ', pcmd(1:l) + endif + endif + if (pan .ne. '1') then + print *,pan,' graphs per page' + else + print *,'one graph per page' + endif + print * + goto 99 + endif + + if (ans .eq. ' ') then + print *, 'Option Description Actual State' + print '(X,79(''-''))' + call str_trim(gdesc, gdesc, l) + l=min(l,42) + print *, ' G change display device type '//gdesc(1:l) + call str_trim(pdesc, pdesc, l) + l=min(l,42) + print *, ' P change printer device type '//pdesc(1:l) + + print * + do j=1,4 + if (popt .eq. opt(j)(1:1)) then + print *,'>> ',opt(j) + else + print *,' ',opt(j) + endif + enddo +c if (popt .eq. 'F') then +c print *,' ',opt(2),' every page will be written to' +c print *,' ',opt(3),' a separate file' +c print *,' ',opt(4) +c elseif (popt .eq. 'A') then +c print *,' ',opt(1),' all pages will be written to one' +c print *,' ',opt(3),' large file' +c print *,' ',opt(4) +c elseif (popt .eq. 'L') then +c print *,' ',opt(1),' all pages will be sent on exit to' +c print *,' ',opt(2),' the selected printer' +c print *,' ',opt(4),' (select F or A to write on a file)' +c elseif (popt .eq. 'I') then +c print *,' ',opt(1),' every page will be sent immediately' +c print *,' ',opt(2),' to the selected printer' +c print *,' ',opt(3),' (select F or A to write on a file)' +c endif +! i=index('FALI',popt) + +! do j=1,4 +! if (j .ne. i) then +! print *,' ',opt(j) +! endif +! enddo + print * + + if (popt .eq. 'F' .or. popt .eq. 'A') then + call str_trim(file, file, l) + print *, ' N change print file name ',file(1:l) + else + call str_trim(pcmd, pcmd, l) + print *, ' C change print command ',pcmd(1:l) + call str_trim(dest, dest, l) + print *, ' D change print destination ',dest(1:l) + endif + print '(x,2a)' + 1 , ' 1...99 number of graphs per page ',pan + print * + print '(x,a,$)' + 1 ,'Enter option or to continue: ' + ans=' ' + read(*,'(a)',end=40,err=40) ans + endif + +40 if (ans .eq. ' ') then + if (popt .eq. 'L' .or. popt .eq. 'I') then + if (pcmd .ne. ' ') then + if (index(pcmd,'*') .eq. 0) then + if (dest .eq. ' ') goto 99 + print * + print *,'Print destination ignored' + 1,' (print command does not contain *)' + goto 99 + else + if (dest .ne. ' ') goto 99 + print * + print *,'Print destination undefined' + endif + else + print * + print *,'Print command undefined' + endif + call str_trim(file, file, l) + if (popt .eq. 'L') then + popt='A' + print *, 'Save all pages on: ',file(1:l) + else + popt='F' + print *, 'Save pages on: ',file(1:l),'_n' + endif + print * + call sys_setenv('CHOOSER_POPT', popt) + endif + goto 99 + endif + call str_upcase(ans(1:1), ans(1:1)) + if (ans(1:1) .eq. 'G') then +41 if (ans(2:) .eq. ' ') then + print * + do i=1,n + call pgqdt(i, typ, l, desc, m, inter) + if (l .gt. 0 .and. inter .eq. 1) then + m=max(1,m) + print *,typ(2:),' ',desc(1:m) + endif + enddo + endif + print * + call cho_get_arg('Display device type: ', ans) + call str_upcase(ans, ans) + call str_trim(ans, ans, la) + if (la .gt. 7) la=7 + if (ans .ne. ' ' .and. gdev(1:la) .ne. ans(1:la)) then + dev0=' ' + do i=1,n + call pgqdt(i, typ, l, desc, m, inter) + if (l .gt. 0 .and. inter .eq. 1) then + if (typ(2:) .eq. ans) then + dev0=ans + goto 411 + endif + if (typ(2:la+1) .eq. ans(1:la)) then + if (dev0 .ne. ' ') then + print *,'Ambiguous device type: ',ans(1:la) + ans=' ' + goto 41 + endif + dev0=typ(2:) + endif + endif + enddo + if (dev0 .eq. ' ') then + print *,'Unknown display device: ',ans(1:la) + ans=' ' + goto 41 + endif +411 gdev=dev0 + call sys_setenv(names(i_gdev), gdev) + call sys_setenv('PGPLOT_DEV', '/'//gdev) + savepref=.true. + endif + elseif (ans(1:1) .eq. 'P') then +42 if (ans(2:) .eq. ' ') then + print * + do i=1,n + call pgqdt(i, typ, l, desc, m, inter) + if (l .gt. 0 .and. inter .eq. 0) then + m=max(1,m) + print *,typ(2:),' ',desc(1:m) + endif + enddo + endif + print * + call cho_get_arg('Printer device type: ', ans) + call str_upcase(ans, ans) + call str_trim(ans, ans, la) + if (ans .ne. ' ' .and. pdev(1:la) .ne. ans(1:la)) then + dev0=' ' + do i=1,n + call pgqdt(i, typ, l, desc, m, inter) + if (l .gt. 0 .and. inter .eq. 0) then + if (typ(2:) .eq. ans) then + dev0=ans + goto 421 + endif + if (typ(2:la+1) .eq. ans(1:la)) then + if (dev0 .ne. ' ') then + print *,'Ambiguous device type: ',ans(1:la) + ans=' ' + goto 42 + endif + dev0=typ(2:) + endif + endif + enddo + if (dev0 .eq. ' ') then + print *,'Unknown printer device: ',ans(1:la) + ans=' ' + goto 42 + endif +421 pdev=dev0 + if (index(pdev, 'PS') .eq. 0) then ! non postscript variants + popt='F' + call sys_setenv(names(i_popt), popt) + file='?' + call sys_setenv(names(i_file), file) + endif + call sys_setenv(names(i_pdev), pdev) + endif + elseif (ans(1:1) .eq. 'N') then + call cho_get_arg('File Name: ', ans) + if (ans .ne. ' ' .and. ans .ne. file) then + file=ans + call sys_setenv(names(i_file), file) + endif + elseif (ans(1:1) .eq. 'C') then + print * + print * + 1 ,'Note: the print command should contain * (asterisk)' + 1 ,'as a placeholder for the print destination' + print * + call cho_get_arg('Print Command: ', ans) + if (ans .ne. ' ' .and. ans .ne. pcmd) then + pcmd=ans + call sys_setenv(names(i_pcmd), pcmd) + endif + elseif (ans(1:1) .eq. 'D') then + call cho_get_arg('Print destination: ', ans) + if (ans .ne. ' ' .and. ans .ne. dest) then + call str_trim(ans, ans, i) + if (i .lt. 3) then + print *,ans(1:i),' is an illegal destination' + else + dest=ans + call sys_setenv(names(i_dest), dest) + savepref=.true. + endif + endif + else + i=index('FALI',ans(1:1)) + if (i .ne. 0) then + if (popt .ne. ans(1:1)) then + popt=ans(1:1) + call sys_setenv(names(i_popt), popt) + endif + else + read(ans, '(bn,i8)', err=50,end=50) i + if (i .gt. 0 .and. i .le. 99) then + call cho_calc_pan(i, h, v) + i=h*v + if (i .ne. ipan) then + if (i .le. 9) then + write(pan, '(i1)') i + else + write(pan, '(i2)') i + endif + call sys_setenv(names(i_pan ), pan) + endif + else + print *,'unknown option' + endif + endif + endif +50 ans=' ' + goto 20 + +99 call sys_saveenv + if (savepref) then + call sys_getenv('CHOOSER_TERINQ', ans) + if (ans(1:1) .ne. '1') goto 999 ! save only if terinq used + if (gdev .ne. 'XWINDOW' .and. gdev .ne. 'XSERVE') then + call str_trim(cfg,gdev,lc) + else + lc=0 + endif + print * + if (lc .gt. 0) then + print *,'Graphic device: ',cfg(1:lc) + endif + call str_append(cfg,lc,';') + call str_trim(pdev, pdev, l) + if (index('VCPS VPS ',pdev(1:l+1)) .ne. 0) then + if (dest .ne. ' ') then + print *,'Printer destination: ',dest + call str_append(cfg,lc,dest) + call str_trim(cfg,cfg(1:lc),lc) + endif + endif + if (lc .gt. 1) then + call sys_remote_host(host, typ) + call str_trim(host,host,l) + print '(x,3a,$)','Save this for next session from ' + 1 ,host(1:l),'? [N/y]: ' + read(*,'(a)',end=999,err=999) ans + call str_upcase(ans(1:1), ans(1:1)) + if (ans(1:1) .eq. 'Y') then + call str_trim(host, host, l) + print *,'saved' + call cho_save(host(1:l),cfg(1:lc)) + endif + endif + endif +999 end + + + subroutine cho_get_arg(prompt, ans) + + character prompt*(*), ans*(*) + + integer i + if (ans(2:) .ne. ' ') then + i=2 +10 if (ans(i:i) .eq. ' ') then + i=i+1 + goto 10 + endif + ans=ans(i:) + else + print '(x,a,$)',prompt + ans=' ' + read(*,'(a)',end=9,err=9) ans + endif +9 end + + + subroutine cho_calc_pan(p, h, v) + +! calculate h, v from number of panels p, in order that h*v~=p or h*v*2~=p + + integer p + integer h,v + + if (p .le. 1) goto 9 + + v=nint(sqrt(p*1.0)) + h=nint(sqrt(p*0.5)) + if (abs(v*v-p) .lt. abs(h*h*2-p)) then + h=v + else + v=h*2 + endif + return + +9 h=1 + v=1 + end + + + + subroutine cho_vpp_cups(str) + + character str*(*) + character up*80 + integer i + + call str_upcase(up, str) + i=index(up,'PSW') + if (i .gt. 0) then + if (up(i:i+4) .eq. 'PSW18') str(i:)='WHGA_138_1' + if (up(i:i+4) .eq. 'PSW21') str(i:)='SINQ_LHO_1' + if (up(i:i+4) .eq. 'PSW22') str(i:)='WHGA_243_1' + if (up(i:i+4) .eq. 'PSW24') str(i:)='SINQ_LHW_1' + if (up(i:i+4) .eq. 'PSW25') str(i:)='SINQ_THO_1' + end if + end diff --git a/gen/cho_deb.f b/gen/cho_deb.f new file mode 100644 index 0000000..e8c958c --- /dev/null +++ b/gen/cho_deb.f @@ -0,0 +1,725 @@ + subroutine cho_inq(arg, gdev, pps, cols, rows) + + implicit none + + character arg*(*), pps*(*), gdev*(*) + integer cols, rows + + character str*80, old1*80, old2*80, line*80 + character typ*2, home*128, host*80, system*16 + integer c,r,i,l,id,tim,cnt,inter,n,j + integer iostat + logical homeflag + + cols=0 + rows=0 + call pgqndt(n) + str=' ' + pps=' ' + gdev=' ' + r=0 + + call sys_remote_host(host, typ) + if (typ .eq. 'XW') then + gdev='XWINDOW' + goto 30 + endif + if (typ .eq. 'LO') goto 90 ! local without XWINDOW + call sys_check_system(system) + if (system .ne. 'TRU64') goto 90 ! on linux no other devices supported + + ! remote login without XWINDOW + if (arg .ne. ' ') then + cnt=5 + call str_trim(str, arg, l) + goto 21 + endif + cnt=0 +20 cnt=cnt+1 + if (cnt .eq. 2) then + old1=str + elseif (cnt .eq. 3) then + if (str .eq. old1) goto 80 + print *,'Please do not touch the keyboard!',char(7) + call sys_wait(1.0) + old2=str + elseif (cnt .eq. 4) then + if (str .eq. old1 .or. str .eq. old2) goto 80 + print *,'Do not touch the keyboard, please !!!',char(7) + call sys_wait(2.0) + elseif (cnt .gt. 4) then + goto 90 + endif + r=0 + c=0 + + print '(X,A,$)', ' ' + call sys_rd_tmo(char(5),str,l) +c print *,str(1:max(1,l)) + +21 if (l .gt. 2 .and. str(1:2) .eq. '_ ') then + i=index(str(1:l),',') + if (i .ne. 0) then + if (i .le. 3 .or. i .ge. l) goto 20 + r=-1 + read(str(i+1:l), *, err=22,end=22) r,c +22 if (r .lt. 0) goto 20 + if (r .eq. 58) print *,'terinq_debug: r=58' + l=i-1 + endif + i=index(str(1:l),';') + if (i .eq. 0) then + gdev=str(3:l) + else + if (i .gt. 3) gdev=str(3:i-1) + if (i .lt. l) pps=str(i+1:l) + endif + + goto 60 + + endif + + +30 cnt=10 ! exit anyway + + call cho_load(host, gdev, pps) + +60 if (gdev .ne. ' ') then + do i=1,n + call pgqdt(i, str, l, line, j, inter) + if (l .gt. 0 .and. inter .eq. 1) then + if (str(2:) .eq. gdev) goto 70 + endif + enddo + if (gdev .eq. 'VT240') then + gdev='VT125' + else if (gdev .eq. 'VMAC') then ! if VMAC not installed, do not ask again + gdev=' ' + cnt=10 + else + gdev=' ' + endif +70 continue + endif + +80 if (r .eq. 58 .or. rows .eq. 58) then + print *,'terinq_debug:',r,rows + endif + if (r .gt. 3 .and. r .lt. 100) then + rows=r + endif + if (c .ge. 40 .and. c .le. 255) then + cols=c + endif + if (gdev .eq. ' ' .and. cnt .le. 4) goto 20 ! try again +90 call cho_vpp_cups(pps) + end + + + subroutine cho_load(host, gdev, pps) +! +! load graphic device GDEV and print destination PPS from the line +! starting with HOME from preferences file +! + character*(*) host, gdev, pps + + integer lun, l, j, ld, iostat + character line*80, home*80 + + call sys_get_lun(lun) + call sys_home(home) + call str_trim(home, home, l) + call str_trim(host, host, ld) + + call sys_open(lun, home(1:l)//'terinq.pref', 'r', iostat) + if (iostat .ne. 0) goto 29 + +25 read(lun, '(a)',end=27,err=27) line + l=index(line,':') + if (l .gt. 1) then +c print *,'host: "',host(1:ld),'"' + if (index(line(1:l-1), host(1:ld)) .ne. 0) then + j=index(line(l+1:),';') + if (gdev .eq. ' ') then + if (j .eq. 0) then + gdev=line(l+1:) + elseif (j .gt. 1) then + gdev=line(l+1:l+j-1) + endif + endif + if (pps .eq. ' ') then + if (j .gt. 0 .and. l+j .le. len(line)) then + pps=line(l+j+1:) + endif + endif + close(lun) + goto 29 + endif + endif + goto 25 +27 close(lun) +29 call sys_free_lun(lun) + end + + + subroutine cho_save(host, devdest) + + character host*(*), devdest*(*) ! no trailing blanks, please + integer lun, lun1 + + character home*128, line*128 + logical done + integer l,ll,lh,iostat + + call sys_get_lun(lun) + call sys_home(home) + call str_trim(home, home, lh) + + done=.false. + + call sys_get_lun(lun1) + call sys_open(lun1, home(1:lh)//'terinq.pref1', 'w', iostat) + if (iostat .ne. 0) goto 91 + + call sys_open(lun, home(1:lh)//'terinq.pref', 'r', iostat) + if (iostat .ne. 0) goto 12 + +10 read(lun, '(a)',end=11,err=11) line + l=index(line,':') + if (l .gt. 1) then + if (index(line(1:l), host) .ne. 0) then + done=.true. + write(lun1, '(2a)') line(1:l),devdest + goto 10 + endif + endif + call cho_vpp_cups(line) + call str_trim(line, line, ll) + write(lun1, '(a)') line(1:ll) + goto 10 +11 close(lun) +12 if (.not. done) then + write(lun1, '(3a)') host,':',devdest + endif +27 close(lun1) +91 call sys_free_lun(lun) + call sys_free_lun(lun1) + call sys_rename_file(home(1:lh)//'terinq.pref1' + 1,home(1:lh)//'terinq.pref') + end + + + subroutine cho_choose(ask) !! + + character ask*1 ! ' ': info only + ! '?': ask for all parameters + ! 'G' ask for graphic device, if not defined + ! 'P' ask for printer device, if not defined + + character popt*1, pan*8, file*48, pcmd*48, gdev*8, pdev*8 + character dest*32, host*64 + save popt, pan, file, pcmd, gdev, pdev, dest, host + + character ans*80, typ*8, desc*64, gdesc*64, pdesc*64 + character pdev2*8, dev0*8, cfg*64 + integer i, j, l, m, n, inter, crit, la, h, v, ipan, lc + integer lun/0/, lunr/0/ + logical savepref, quit, init/.true./, initg/.true./ + integer n_names, i_gdev, i_popt, i_pan, i_file + integer i_pcmd, i_pdev, i_dest + parameter (n_names=7, i_gdev=1, i_popt=2, i_pan=3, i_file=4 + 1 , i_pcmd=5, i_pdev=6, i_dest=7) + character names(n_names)*16 + data names(i_gdev)/'CHOOSER_GDEV'/ + data names(i_popt)/'CHOOSER_POPT'/ + data names(i_pan )/'CHOOSER_PAN' / + data names(i_file)/'CHOOSER_FILE'/ + data names(i_pcmd)/'CHOOSER_PCMD'/ + data names(i_pdev)/'CHOOSER_PDEV'/ + data names(i_dest)/'CHOOSER_DEST'/ + + character opt(4)*34/ + 1 'F write one file per page' + 1,'A write all pages on one file' + 1,'L send plots later to printer' + 1,'I send immediately to printer'/ + + savepref=.false. + call pgqndt(n) + + if (init) then + init=.false. + + call sys_loadenv + + call sys_getenv(names(i_gdev), gdev) + call sys_getenv(names(i_popt), popt) + call sys_getenv(names(i_pan ), pan) + call sys_getenv(names(i_file), file) + call sys_getenv(names(i_pcmd), pcmd) + call sys_getenv(names(i_pdev), pdev) + call sys_getenv(names(i_dest), dest) + + if (pan .eq. ' ') then + pan='1' + call sys_setenv(names(i_pan ), pan) + endif + if (file .eq. ' ') then + file='posts.dat' + call sys_setenv(names(i_file), file) + endif + if (popt .eq. ' ') then + popt='L' + call sys_setenv(names(i_popt), popt) + endif + if (pdev .eq. ' ') then + pdev='PS' + call sys_setenv(names(i_pdev), pdev) + endif + endif + if (ask .eq. 'G') then + if (initg) then + initg=.false. + if (gdev .eq. ' ') then + call cho_inq(' ', gdev, dest, i, j) + call sys_setenv(names(i_gdev), gdev) + call sys_setenv(names(i_dest), dest) + endif + call sys_setenv('PGPLOT_DEV', '/'//gdev) + endif + endif + + ans=' ' + if (ask .eq. 'G') then + if (gdev .ne. ' ') goto 99 + ans='G' + elseif (ask .eq. 'P') then + if (popt .eq. 'A' .or. popt .eq. 'F') then + if (file .ne. ' ') goto 99 + ans='F' + else + i=index(pcmd, '*') + if (i .ne. 0) then + if (dest .ne. ' ') goto 99 + call str_trim(pcmd, pcmd, l) + print *,'Print command: ',pcmd(1:l) + ans='D' + else + if (pcmd .ne. ' ') goto 99 + ans='C' + endif + endif + endif + +20 continue + + gdesc='unknown' + pdesc='unknown' + read(pan, *, err=21,end=21) ipan +21 call cho_calc_pan(ipan, h, v) + if (v .gt. h) then + if (pdev(1:1) .ne. 'V' .and. pdev(2:2) .ne. 'V') then + pdev2=pdev(1:1)//'V'//pdev(2:) + pdev='V'//pdev + endif + else + if (pdev(1:1) .eq. 'V') then + pdev=pdev(2:) + elseif (pdev(2:2) .eq. 'V') then + pdev=pdev(1:1)//pdev(3:) + endif + pdev2=' ' + endif + do i=1,n + call pgqdt(i, typ, l, desc, m, inter) + if (l .gt. 0) then + if (inter .eq. 1) then + if (gdev .eq. typ(2:) .or. + 1 gdev .eq. 'VT240' .and. typ(2:) .eq. 'VT125') then + gdesc=typ(2:l)//' '//desc + endif + elseif (pdev .eq. typ(2:)) then + pdesc=typ(2:l)//' '//desc + elseif (pdev2 .eq. typ(2:)) then + pdev=pdev2 + pdesc=typ(2:l)//' '//desc + endif + endif + enddo + call sys_setenv(names(i_pdev), pdev) + + if (ask .eq. ' ') then ! info only + call str_trim(gdesc, gdesc, l) + print *,'Display device type: ',gdesc(1:l) + call str_trim(pdesc, pdesc, l) + print *,'Printer device type: ',pdesc(1:l) + if (popt .eq. 'F' .or. popt .eq. 'A') then + call str_trim(file, file, l) + if (popt .eq. 'F') then + print *,'one file per page, filename: ', file(1:l),'_n' + else + print *,'all pages on one page. filename: ', file(1:l) + endif + else + call str_trim(pcmd, pcmd, l) + call str_trim(dest, dest, i) + if (pcmd .eq. ' ') then + print *,'print command undefined' + elseif (dest .eq. ' ' .and. index(pcmd,'*') .ne. 0) then + print *,'print destination undefined' + elseif (dest .ne. ' ' .and. index(pcmd,'*') .eq. 0) then + print *,'print destination ignored' + 1,' (print command does not contain *)' + elseif (popt .eq. 'L') then + print *,'print later on ',dest(1:i) + 1 ,' with command: ', pcmd(1:l) + else + print *,'print immediately on ',dest(1:i) + 1 ,' with command: ', pcmd(1:l) + endif + endif + if (pan .ne. '1') then + print *,pan,' graphs per page' + else + print *,'one graph per page' + endif + print * + goto 99 + endif + + if (ans .eq. ' ') then + print *, 'Option Description Actual State' + print '(X,79(''-''))' + call str_trim(gdesc, gdesc, l) + l=min(l,42) + print *, ' G change display device type '//gdesc(1:l) + call str_trim(pdesc, pdesc, l) + l=min(l,42) + print *, ' P change printer device type '//pdesc(1:l) + + print * + if (popt .eq. 'F') then + print *,' ',opt(2),' every page will be written to' + print *,' ',opt(3),' a separate file' + print *,' ',opt(4) + elseif (popt .eq. 'A') then + print *,' ',opt(1),' all pages will be written to one' + print *,' ',opt(3),' large file' + print *,' ',opt(4) + elseif (popt .eq. 'L') then + print *,' ',opt(1),' all pages will be sent on exit to' + print *,' ',opt(2),' the selected printer' + print *,' ',opt(4),' (select F or A to write on a file)' + elseif (popt .eq. 'I') then + print *,' ',opt(1),' every page will be sent immediately' + print *,' ',opt(2),' to the selected printer' + print *,' ',opt(3),' (select F or A to write on a file)' + endif +! i=index('FALI',popt) + +! do j=1,4 +! if (j .ne. i) then +! print *,' ',opt(j) +! endif +! enddo + print * + + if (popt .eq. 'F' .or. popt .eq. 'A') then + call str_trim(file, file, l) + print *, ' N change print file name ',file(1:l) + else + call str_trim(pcmd, pcmd, l) + print *, ' C change print command ',pcmd(1:l) + call str_trim(dest, dest, l) + print *, ' D change print destination ',dest(1:l) + endif + print '(x,2a)' + 1 , ' 1...99 number of graphs per page ',pan + print * + print '(x,a,$)' + 1 ,'Enter option or to continue: ' + ans=' ' + read(*,'(a)',end=40,err=40) ans + endif + +40 if (ans .eq. ' ') then + if (popt .eq. 'L' .or. popt .eq. 'I') then + if (pcmd .ne. ' ') then + if (index(pcmd,'*') .eq. 0) then + if (dest .eq. ' ') goto 99 + print * + print *,'Print destination ignored' + 1,' (print command does not contain *)' + goto 99 + else + if (dest .ne. ' ') goto 99 + print * + print *,'Print destination undefined' + endif + else + print * + print *,'Print command undefined' + endif + call str_trim(file, file, l) + if (popt .eq. 'L') then + popt='A' + print *, 'Save all pages on: ',file(1:l) + else + popt='F' + print *, 'Save pages on: ',file(1:l),'_n' + endif + print * + call sys_setenv('CHOOSER_POPT', popt) + endif + goto 99 + endif + call str_upcase(ans(1:1), ans(1:1)) + if (ans(1:1) .eq. 'G') then +41 if (ans(2:) .eq. ' ') then + print * + do i=1,n + call pgqdt(i, typ, l, desc, m, inter) + if (l .gt. 0 .and. inter .eq. 1) then + m=max(1,m) + print *,typ(2:),' ',desc(1:m) + endif + enddo + endif + print * + call cho_get_arg('Display device type: ', ans) + call str_upcase(ans, ans) + call str_trim(ans, ans, la) + if (la .gt. 7) la=7 + if (ans .ne. ' ' .and. gdev(1:la) .ne. ans(1:la)) then + dev0=' ' + do i=1,n + call pgqdt(i, typ, l, desc, m, inter) + if (l .gt. 0 .and. inter .eq. 1) then + if (typ(2:) .eq. ans) then + dev0=ans + goto 411 + endif + if (typ(2:la+1) .eq. ans(1:la)) then + if (dev0 .ne. ' ') then + print *,'Ambiguous device type: ',ans(1:la) + ans=' ' + goto 41 + endif + dev0=typ(2:) + endif + endif + enddo + if (dev0 .eq. ' ') then + print *,'Unknown display device: ',ans(1:la) + ans=' ' + goto 41 + endif +411 gdev=dev0 + call sys_setenv(names(i_gdev), gdev) + call sys_setenv('PGPLOT_DEV', '/'//gdev) + savepref=.true. + endif + elseif (ans(1:1) .eq. 'P') then +42 if (ans(2:) .eq. ' ') then + print * + do i=1,n + call pgqdt(i, typ, l, desc, m, inter) + if (l .gt. 0 .and. inter .eq. 0) then + m=max(1,m) + print *,typ(2:),' ',desc(1:m) + endif + enddo + endif + print * + call cho_get_arg('Printer device type: ', ans) + call str_upcase(ans, ans) + call str_trim(ans, ans, la) + if (ans .ne. ' ' .and. pdev(1:la) .ne. ans(1:la)) then + dev0=' ' + do i=1,n + call pgqdt(i, typ, l, desc, m, inter) + if (l .gt. 0 .and. inter .eq. 0) then + if (typ(2:) .eq. ans) then + dev0=ans + goto 421 + endif + if (typ(2:la+1) .eq. ans(1:la)) then + if (dev0 .ne. ' ') then + print *,'Ambiguous device type: ',ans(1:la) + ans=' ' + goto 42 + endif + dev0=typ(2:) + endif + endif + enddo + if (dev0 .eq. ' ') then + print *,'Unknown printer device: ',ans(1:la) + ans=' ' + goto 42 + endif +421 pdev=dev0 + if (index(pdev, 'PS') .eq. 0) then ! non postscript variants + popt='F' + call sys_setenv(names(i_popt), popt) + file='?' + call sys_setenv(names(i_file), file) + endif + call sys_setenv(names(i_pdev), pdev) + endif + elseif (ans(1:1) .eq. 'N') then + call cho_get_arg('File Name: ', ans) + if (ans .ne. ' ' .and. ans .ne. file) then + file=ans + call sys_setenv(names(i_file), file) + endif + elseif (ans(1:1) .eq. 'C') then + print * + print * + 1 ,'Note: the print command should contain * (asterisk)' + 1 ,'as a placeholder for the print destination' + print * + call cho_get_arg('Print Command: ', ans) + if (ans .ne. ' ' .and. ans .ne. pcmd) then + pcmd=ans + call sys_setenv(names(i_pcmd), pcmd) + endif + elseif (ans(1:1) .eq. 'D') then + call cho_get_arg('Print destination: ', ans) + if (ans .ne. ' ' .and. ans .ne. dest) then + call str_trim(ans, ans, i) + if (i .lt. 3) then + print *,ans(1:i),' is an illegal destination' + else + dest=ans + call sys_setenv(names(i_dest), dest) + savepref=.true. + endif + endif + else + i=index('FALI',ans(1:1)) + if (i .ne. 0) then + if (popt .ne. ans(1:1)) then + popt=ans(1:1) + call sys_setenv(names(i_popt), popt) + endif + else + read(ans, '(bn,i8)', err=50,end=50) i + if (i .gt. 0 .and. i .le. 99) then + call cho_calc_pan(i, h, v) + i=h*v + if (i .ne. ipan) then + if (i .le. 9) then + write(pan, '(i1)') i + else + write(pan, '(i2)') i + endif + call sys_setenv(names(i_pan ), pan) + endif + else + print *,'unknown option' + endif + endif + endif +50 ans=' ' + goto 20 + +99 call sys_saveenv + if (savepref) then + call sys_getenv('CHOOSER_TERINQ', ans) + if (ans(1:1) .ne. '1') goto 999 ! save only if terinq used + if (gdev .ne. 'XWINDOW' .and. gdev .ne. 'XSERVE') then + call str_trim(cfg,gdev,lc) + else + lc=0 + endif + print * + if (lc .gt. 0) then + print *,'Graphic device: ',cfg(1:lc) + endif + call str_append(cfg,lc,';') + call str_trim(pdev, pdev, l) + if (index('VCPS VPS ',pdev(1:l+1)) .ne. 0) then + if (dest .ne. ' ') then + print *,'Printer destination: ',dest + call str_append(cfg,lc,dest) + call str_trim(cfg,cfg(1:lc),lc) + endif + endif + if (lc .gt. 1) then + call sys_remote_host(host, typ) + call str_trim(host,host,l) + print '(x,3a,$)','Save this for next session from ' + 1 ,host(1:l),'? [N/y]: ' + read(*,'(a)',end=999,err=999) ans + call str_upcase(ans(1:1), ans(1:1)) + if (ans(1:1) .eq. 'Y') then + call str_trim(host, host, l) + print *,'saved' + call cho_save(host(1:l),cfg(1:lc)) + endif + endif + endif +999 end + + + subroutine cho_get_arg(prompt, ans) + + character prompt*(*), ans*(*) + + integer i + if (ans(2:) .ne. ' ') then + i=2 +10 if (ans(i:i) .eq. ' ') then + i=i+1 + goto 10 + endif + ans=ans(i:) + else + print '(x,a,$)',prompt + ans=' ' + read(*,'(a)',end=9,err=9) ans + endif +9 end + + + subroutine cho_calc_pan(p, h, v) + +! calculate h, v from number of panels p, in order that h*v~=p or h*v*2~=p + + integer p + integer h,v + + if (p .le. 1) goto 9 + + v=nint(sqrt(p*1.0)) + h=nint(sqrt(p*0.5)) + if (abs(v*v-p) .lt. abs(h*h*2-p)) then + h=v + else + v=h*2 + endif + return + +9 h=1 + v=1 + end + + + + subroutine cho_vpp_cups(str) + + character str*(*) + character up*80 + integer i + + call str_upcase(up, str) + i=index(up,'PSW') + if (i .gt. 0) then + if (up(i:i+4) .eq. 'PSW18') str(i:)='WHGA_138_1' + if (up(i:i+4) .eq. 'PSW21') str(i:)='SINQ_LHO_1' + if (up(i:i+4) .eq. 'PSW22') str(i:)='WHGA_243_1' + if (up(i:i+4) .eq. 'PSW24') str(i:)='SINQ_LHW_1' + if (up(i:i+4) .eq. 'PSW25') str(i:)='SINQ_THO_1' + end if + end diff --git a/gen/cvt.f b/gen/cvt.f new file mode 100644 index 0000000..32acc15 --- /dev/null +++ b/gen/cvt.f @@ -0,0 +1,240 @@ +!!------------------------------------------------------------------------------ +!! + subroutine CVT_REAL_STR(RESULT, RESLEN, X, !! + 1 WIDTH, FIXLEN, DIGITS, TRUNC) !! +!! ===================================================== +!! +!! Convert X to RESULT (subroutine version) +!! +!! The number is converted using Fortran format F.. +!! If the number is too large or the number of significant digits is to +!! low, the number digits after the decimal point is changed or, if this is +!! is not possible, an E-format is choosen. If WIDTH is lower than 6, the +!! result length will be larger in some cases. +!! +!! Default format (WIDTH < 0, FIXLEN < -1, DIGITS < 0) +!! + implicit none + +!! Arguments + character*(*) RESULT !! + integer RESLEN !! length of result + real X !! number to be converted + integer WIDTH !! minimum width + integer FIXLEN !! minimum digits after comma + integer DIGITS !! minimum significant digits + integer TRUNC !! TRUNC=1,3: omit trailing zeros + !! TRUNC=0,1: decimal point always shown + + integer bufmax + parameter (bufmax=32) + integer wid, fix, dig, trc + character*(bufmax) fixbuf, expbuf ! internal buffers + integer exponent + real mantissa + integer f0, fl, e0, el ! start and end of used buffer F/E + integer fdig, edig ! digits after decimal point F/E format + integer overhd ! overhead + integer p ! position of decimal point + integer digf ! number of digits-1 shown (F-Format) + integer le, l + character*8 rfmt + real xlog + + trc=trunc + if (mod(trc,2) .eq. 1) then ! defaults + wid=1 + fix=0 + dig=4 + if (width .ge. 0) wid=width + else + wid=min(8,len(result)) + if (width .ge. 0) wid=width + fix=max(0,wid/2-1) + dig=1 + endif + if (fixlen .ge. 0) fix=fixlen + if (digits .ge. 0) dig=digits + + wid=min(bufmax, wid, len(result)) + dig=min(bufmax, dig) + + if (x .eq. 0) then + exponent=0 + mantissa=0 + else + xlog=log10(abs(x)) + exponent=int(xlog+100)-100 + mantissa=x/10.0**exponent + endif + + + edig=min(max(wid-4,dig-1),len(result)-4) + fdig=min(max(fix,dig-1-exponent),len(result)-1) + +! F-Format + +11 f0=0 + fl=bufmax+1 ! in case of write error + digf=-1 + if (fdig .lt. -exponent) goto 14 + write(rfmt, '(''(F'',I2.2,''.'',I2.2,'')'')') bufmax, fdig + write(fixbuf, rfmt, err=14) x + +! reduce + + f0=bufmax-fdig + if (exponent .gt. 0) f0=f0-exponent + if (abs(f0) .gt. 99999) goto 19 + do while(f0 .gt. 0 .and. fixbuf(f0:f0) .ne. ' ') + f0=f0-1 + enddo + fl=bufmax-1 + do while(fixbuf(fl+1:fl+1) .eq. ' ') + fl=fl-1 + enddo + overhd=fl+1-f0-len(result) + do while (fixbuf(fl+1:fl+1) .eq. '0' + 1 .and. (overhd .gt. 0 .or. mod(trc,2) .eq. 1)) + fl=fl-1 + overhd=overhd-1 + enddo + if (fixbuf(fl+1:fl+1) .eq. '.' .and. trc .ge. 2) then + overhd=overhd-1 + else + fl=fl+1 + endif + if (overhd .gt. 0) then +12 if (fdig .ge. overhd) then + fdig=fdig-overhd + goto 11 ! try again with less digits + endif + fl=bufmax+1 + endif + digf=fdig+exponent + +! E-Format mantissa + +14 if (x .eq. 0 .or. edig .lt. 0) goto 13 + +15 write(rfmt, '(''(F'',I2.2,''.'',I2.2,'')'')') bufmax-4, edig + write(expbuf(1:bufmax-4), rfmt, err=19) mantissa + + if (exponent .gt. -10) then + if (exponent .lt. 10 .and. exponent .ge. 0) then + le=2 + else + le=3 + endif + else + le=4 + endif + +! reduce + + e0=bufmax-6-edig + if (e0 .gt. 0) then + if (expbuf(e0:e0) .eq. '1') then ! 9.9 was rounded to 10 + exponent=exponent+1 + mantissa=mantissa/10.0 + goto 15 + endif + if (expbuf(e0:e0) .eq. '-') e0=e0-1 + endif + + el=bufmax-5 + do while(expbuf(el+1:el+1) .eq. ' ') + el=el-1 + enddo + overhd=el+le+1-e0-len(result) + do while (expbuf(el+1:el+1) .eq. '0' .and. + 1 (overhd .gt. 0 .or. mod(trc,2) .ne. 0)) + el=el-1 + overhd=overhd-1 + enddo + if (expbuf(el+1:el+1) .eq. '.' .and. trc .ge. 2) then + overhd=overhd-1 + else + el=el+1 + endif + + if (overhd .gt. 0) then + if (edig .ge. overhd) then + edig=edig-overhd + goto 14 ! try again with less digits + endif + el=bufmax+1 + else + write(rfmt, '(''(A,I'',I2.2,'')'')') le-1 + write(expbuf(el+1:el+le), rfmt) 'E',exponent + el=el+le + endif + + +! Compare + + l=fl-f0 + if (l .gt. wid .and. + 1 (edig .gt. digf .or. + 1 edig .eq. digf .and. l .gt. el-e0 .or. + 1 l .gt. len(result))) then ! E-format is better + fixbuf=expbuf + f0=e0 + fl=el + p=bufmax-4-edig + goto 18 + endif + +! F-Format is better +13 p=bufmax-fdig + if (fix .eq. 0 .and. trc .ge. 2) p=p-1 ! Decimal point not needed if fix=0 + +18 l=fl-f0 + if (l .gt. len(result)) then + goto 19 + elseif (p-f0 .gt. wid-fix .or. l .ge. wid) then ! Left just + result=fixbuf(f0+1:fl) + elseif (fl-p .gt. fix) then ! Right just + result=fixbuf(fl-wid+1:fl) + l=wid + else ! Decimal just + result=fixbuf(p+fix-wid+1:fl) + l=fl+wid-p-fix + endif + reslen=min(l, len(result)) + return + +19 result='******' + reslen=len(result) + end + + subroutine cvt_bintim + stop 'CVT_BINTIM: obsolete' + end + +!!------------------------------------------------------------------------------ +!! + real function CVT_RATIO(STR, FAILUREVALUE) !! +!! ========================================== +!! +!! decode a ratio (value1/value) to a real number +!! + character STR*(*) !! string to convert + real FAILUREVALUE !! value to return on failure + + integer i + real r1,r2 + + i=index(str, '/') + if (i .eq. 0) then + read(str,*,err=999,end=999) cvt_ratio + return + else + if (i .eq. 1 .or. i .eq. len(str)) goto 999 + read(str(1:i),*,err=999,end=999) r1 + read(str(i+1:),*,err=999,end=999) r2 + cvt_ratio = r1/r2 + return + endif +999 cvt_ratio=failurevalue + end diff --git a/gen/dat.inc b/gen/dat.inc new file mode 100644 index 0000000..c9913c8 --- /dev/null +++ b/gen/dat.inc @@ -0,0 +1,14 @@ + integer maxtypes, maxcodes + parameter (maxtypes=64, maxcodes=3) + integer ntypes, dtype, year, last_type + character spec*128 + integer desc_hdl(maxtypes) + integer read_hdl(maxtypes) + integer high_hdl(maxtypes) + integer opts_hdl(maxtypes) + + common/dat_handlers/desc_hdl, read_hdl, high_hdl, opts_hdl + 1, ntypes, dtype, year, last_type, spec + + character specin*1, specout*1 + common /specinout/specin,specout diff --git a/gen/dat_2t.f b/gen/dat_2t.f new file mode 100644 index 0000000..283efde --- /dev/null +++ b/gen/dat_2t.f @@ -0,0 +1,198 @@ + subroutine dat_2t +c ----------------- + + external dat_2t_desc +! external dat_2t_high ! this line for raw data files only + external dat_2t_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_2t_desc) + call dat_init_read(dtype, dat_2t_read) + end + + + subroutine dat_2t_desc(text) +! ---------------------------- + character*(*) text ! (out) description + +! type description +! ---------------------------------- + text='2T 2T format (LLB Saclay)' + end + + + subroutine dat_2t_opts +! ---------------------- + print '(x,a)' + 1,'x: x-axis, y: y-axis' + end + + + subroutine dat_2t_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + integer mcol + parameter (mcol=32) + + character header*1024 + character line*1024, xaxis*8, yaxis*8, name*8, col1*8 + real values(32), s, y, ymon + real tt, tm, ts, td + integer i,j,l,ncol,ccol,xcol,tcol + + + nread=0 + read(lun,'(a)',err=98,end=98) header + if (forced .le. 0) then + if (header(1:11) .ne. '# qh') goto 100 + endif + header(1:1)=' ' + read(lun,'(a)',err=98,end=98) line + if (line(1:1) .ne. '#') goto 100 + line(1:1)=' ' + + xaxis=' ' + yaxis=' ' + + call dat_start_options + call dat_str_option('x', xaxis) + call dat_str_option('y', yaxis) + + call str_upcase(xaxis, xaxis) + call str_upcase(yaxis, yaxis) + + call putval('Instrument=2T',0.0) + + call dat_group(2, putval) + do i=1,mcol + values(i)=0.0 + enddo + ncol=0 + i=1 + read(line, *, err=15,end=15) values +15 call str_get_elem(header, i, name) + if (name .ne. ' ') then + ncol=ncol+1 + if (name .eq. 'm') then + name='Monitor' + ymon=values(ncol) + call putval('Preset=m', 0.0) + else if (name .eq. 't') then + name='Monitor' + ymon=values(ncol) + call putval('Preset=t', 0.0) + endif + call putval(name, values(ncol)) + goto 15 + endif + + read(lun, '(a)') line + if (line(1:1) .ne. '#') goto 100 + read(lun, '(a)') line + if (line(1:1) .ne. '#') goto 100 + line(1:1)=' ' + +12 i=1 + line(len(line):len(line))=' ' + ncol=0 + ccol=0 + xcol=0 + tcol=0 + col1=' ' +31 do while (line(i:i) .eq. ' ') + i=i+1 + if (i .gt. len(line)) goto 39 + enddo + l=i + do while (line(i:i) .ne. ' ') + i=i+1 + enddo + ncol=ncol+1 + if (ncol .eq. 1) col1=line(l:i) + if (line(l:i) .eq. yaxis .or. yaxis .eq. ' ' + 1 .and. line(l:i) .eq. 'comptage') ccol=ncol + if (line(l:i) .eq. xaxis) xcol=ncol + if (line(l:i) .eq. 'K') tcol=ncol + goto 31 + +39 if (yaxis .eq. ' ') yaxis='comptage' + if (ccol .eq. 0) then + print *,'no values found for ',yaxis + goto 99 + endif + if (xcol .eq. 0) then + if (xaxis .ne. ' ') then + print *,'no values found for ',xaxis,', take ',col1 + endif + xcol=1 + xaxis=col1 + endif + + call dat_group(2, putval) + call putval('XAxis='//xaxis, 0.0) + call putval('YAxis='//yaxis, 0.0) + call dat_group(1, putval) + + l=min(mcol,max(xcol,ccol,tcol)) + tm=0 + ts=0 + +4 read(lun,*,err=19,end=9) (values(j),j=1,l) + if (nread .ge. nmax) goto 29 + y=values(ccol) + if (y .gt. 0) then + s=sqrt(y) ! statistical error of detector + else + s=1 + endif + nread=nread+1 + xx(nread)=values(xcol) + yy(nread)=y + ss(nread)=s + ww(nread)=ymon + if (tcol .ne. 0) then + tt=values(tcol) + td=(tt-tm)/nread + tm=tm+td ! mean temp. + ts=ts+(tt-tm)**2+td*td*(nread-1) ! sum of (temp(i)-mean)**2 + endif + goto 4 + +9 close(lun) + call putval('Monitor', ymon) + if (tcol .ne. 0) then + call putval('Temp', tm) + if (nread .gt. 1) call putval('dTemp', sqrt(ts/(nread-1))) + endif + return + +19 print *,'DAT_2T: error at point ',nread + goto 4 +29 print *,'DAT_2T: too many points' + goto 100 +98 if (forced .le. 0) goto 100 +99 print *,'DAT_2T: error during read' + rewind lun + nread=-2 + return +100 nread=-1 + rewind lun + end diff --git a/gen/dat_5c2.f b/gen/dat_5c2.f new file mode 100644 index 0000000..46bbb84 --- /dev/null +++ b/gen/dat_5c2.f @@ -0,0 +1,133 @@ + subroutine dat_5c2 +c ------------------ + + external dat_5c2_desc + external dat_5c2_opts + external dat_5c2_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_5c2_desc) + call dat_init_opts(dtype, dat_5c2_opts) + call dat_init_read(dtype, dat_5c2_read) + end + + + subroutine dat_5c2_desc(text) +! ----------------------------- + character*(*) text ! (out) description + +! type description +! ---------------------------------- + text='5C2 Saclay instrument 5c2' + end + + + subroutine dat_5c2_opts +! ----------------------- + print '(x,a)' + 1,'from,to: dataset range' + end + + + subroutine dat_5c2_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + integer i, idx, n, i1, i2, j, idum + real h, k, l, step, rdum + real ymon + character line*132 + + + read(lun, '(a)', err=100, end=100) line + if (line(1:6) .ne. 'File= ') then + if (forced .le. 0) goto 100 + rewind lun + endif + + call dat_start_options + i1=0 + call dat_int_option('from', i1) + i2=0 + call dat_int_option('to', i2) + if (i2 .eq. 0) then + if (i1 .eq. 0) then + i1=1 + else + i2=i1 + endif + endif + + call dat_get_index(idx) + if (idx .eq. 0) then + if (i2 .gt. i1) then + print *,'for 5C2 files only one dataset allowed' + endif + else + i1=i1+idx-1 + if (i1 .gt. i2 .and. i2 .ne. 0) goto 98 + endif + + do i=1,6 + read(lun, *, err=100, end=100) + enddo + ymon=0 + do i=1,i1 + read(lun, *, end=97, err=99) h,k,l,idum,rdum,rdum,idum,n + read(lun, *, end=99, err=99) rdum,rdum,rdum,step + read(lun,'(20f5.0)',err=99,end=99) (yy(j),j=1,n),(ww(j),j=1,n) + enddo + + if (n .gt. nmax) goto 99 + do j=1,n + ss(j)=sqrt(max(1.0,yy(j))) + xx(j)=(j-n/2-1)*step + ymon=ymon+ww(j) + enddo + ymon=ymon/n + + write(line,'(3(a,f8.3))') 'h=',h,' k=',k,' l=',l + call putval('Monitor', ymon) + call putval('Title='//line, 0.0) + call putval('h', h) + call putval('k', k) + call putval('l', l) + call putval('step', step) + call putval('XAxis=omega',0.0) + + write(line, '(i4)') i1 + call putval('Range='//line,0.0) + + close(lun) + nread=n + return + +97 print *,'DAT_5C2: Only ',n,' scans in this file' +98 nread=-2 + rewind lun + return +99 print *,'DAT_5C2: error during read' + nread=-2 + rewind lun + return + +100 nread=-1 + rewind lun + end diff --git a/gen/dat_c.c b/gen/dat_c.c new file mode 100644 index 0000000..648c7cf --- /dev/null +++ b/gen/dat_c.c @@ -0,0 +1,302 @@ +#include +#include +#include +#include "myc_fortran.h" + +void F_FUN(dat_axis_range)(float *xin, int *nin, float *xstart, float *xend, float *pMargin, int *i1, int *i2) { + int i; + float x1, x2, margin; + + margin=*pMargin; + if (margin<0) margin=-margin; + if (*xstart>*xend) { + x1=*xend-margin; + x2=*xstart+margin; + } else { + x1=*xstart-margin; + x2=*xend+margin; + } + *i1=*nin; + *i2=0; + for (i=0; i<*nin; i++) { + if (x1 < xin[i] && xin[i] < x2) { + if (i>*i2) *i2=i; + if (i<*i1) *i1=i; + } + } +} + +void dat_fillin(float *src, float *dst, int size, float *wsum, int j, float weight) { + int k; + + dst += j*size; + if (wsum!=NULL) wsum[j] += weight; + for (k=0; k| +** +** The values from the source are distributed to the destination according to the overlap +** of the intervals. Output channel 0 will get a small part from input channel 0 and +** a large part from channel 1, output channel 5 will get all of channel 4 plus +** some part of channel 3 and channel 5. +** +** xin x-values (size nin) (may be NULL, if x-values are [0.0,1.0,2.0,3.0,4.0,....]) +** src source (size grpsize*nin*nblocks) +** xstart start value +** xs x-step for output +** nout number of output channels +** dst destination (size grpsize*nout*nblocks) +** wout output weights (size nout, may be NULL if not needed) +*/ + int i, j, m, ja, jb, bsize; + float w, x, xl, xr, xa, xb, dx0, dx1, dx; + + assert(nin>=1 && src !=NULL && grpsize>0 && nblocks>0 && xs!=0.0 && nout>0 && dst!=NULL && wout!=NULL); + for (j=0; j-0.5) { + if (xb<0.5) { + w=1.0; + } else { + w=(0.5-xa)/dx; + } + } else { + if (xb<0.5) { + w=(xb+0.5)/dx; + } else { + w=1.0; + } + } + if (w>0.0) { + dat_fillin(src, dst, grpsize, wout, 0, w); + } + src+=grpsize; + } + } else { + for (i=0; ixa) ja--; + xb=xa+dx; + jb=xb; if (jb=nout) { + jb=nout; + if (xb>nout) xb=nout; + } + if (ja=0) dat_fillin(src, dst, grpsize, wout, ja, (1-x)*w); + if (jb=0) dat_fillin(src, dst, grpsize, wout, ja, xl*xl*w/2); + if (ja+2==jb) { + dat_fillin(src, dst, grpsize, wout, ja+1, ((1-xl/2)*xl+(1-xr/2)*xr)*w); + } else { + dat_fillin(src, dst, grpsize, wout, ja+1, ((1-xl/2)*xl+0.5)*w); + for (j=ja+1; j32) return NX_ERROR; /* for now, support only f32, i32 and f64 */ + ncells=1; + for (i=0; i<*rank; i++) { + cstart[i]=start[*rank-i-1]; + csize[i]=size[*rank-i-1]; + ncells=ncells*size[i]; + } + for (;i<32;i++) { + cstart[i]=0; + csize[i]=1; + } + data=calloc(ncells, cellsize); + if (data==NULL) return NX_ERROR; + flts=(float *)data; + + status=NXgetslab(handle, data, cstart, csize); + if (status!=NX_OK) { free(data); return NX_ERROR; } + + if (type==NX_INT32) { /* convert int32 to float 32 */ + ip=(int *)data; + for (i=0; i=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + integer i, idx, nranges, i1, i2, j, m, cnt(10) + real temp, h, k, l, step, offset, junk, mf + real twoth, omega, chi, phi, ymon + character line*132, date*20, tail*32 + + + read(lun, '(a)', err=100, end=100) line + if (line(1:3) .ne. 'CCL') then + if (forced .le. 0) goto 100 + rewind lun + endif + + if (line(4:) .eq. ' ') then ! new syntax + do while (line(1:6) .ne. '# data' + 1 .and. line(1:5) .ne. '#data') + read(lun, '(a)', err=100, end=100) line + enddo + endif + + call dat_start_options + i1=0 + call dat_int_option('from', i1) + i2=0 + call dat_int_option('to', i2) + if (i2 .eq. 0) then + if (i1 .eq. 0) then + i1=1 + else + i2=i1 + endif + endif + + call dat_get_index(idx) + if (idx .eq. 0) then + if (i2 .gt. i1) then + print *,'for CCL files only one dataset allowed' + endif + else + i1=i1+idx-1 + if (i1 .gt. i2 .and. i2 .ne. 0) goto 98 + endif + + nranges=0 + do i=1,i1-1 + nranges=i-1 + read(lun, *, err=97, end=97) + read(lun, *, err=99, end=99) nread + do j=1,nread,10 + read(lun,*,err=99, end=99) + enddo + enddo + + + if (nread .ge. nmax) goto 99 + ymon=1 + read(lun, '(a)', err=97, end=97) line + read(line, *, err=33, end=33) junk,h,k,l,twoth,omega,chi,phi + 1 ,junk,junk +33 read(lun, '(i3,f8.0,f10.0,f8.0,x,a)', err=99, end=99) + 1 nread, step , ymon, temp, tail + i=index(tail,':') + mf=-9999 + if (i .gt. 13) then + date=tail(i-13:) + if (tail(1:12) .ne. ' -0.000000') then + read(tail, *, err=34, end=34) mf +34 endif + else + date=tail + endif + + write(line,'(3(a,f8.3))') 'h=',h,' k=',k,' l=',l + call putval('Monitor', ymon) + call putval('Temp', temp) + call putval('Date='//date, 0.0) + call putval('Title='//line, 0.0) + call putval('two_theta', twoth) + call putval('omega', omega) + call putval('chi', chi) + call putval('phi', phi) + call putval('h', h) + call putval('k', k) + call putval('l', l) + call putval('step', step) + if (mf .ne. -9999) then + call putval('magfield', mf) + endif + call putval('XAxis=omega',0.0) + + write(line, '(i4)') i1 + call putval('Range='//line,0.0) + + offset=omega-0.5*step*(nread+1) + do j=1,nread,10 + read(lun,'(10i8)',err=99, end=99) cnt + do m=j,min(nread,j+9) + xx(m)=offset+step*m + yy(m)=cnt(m-j+1) + ss(m)=sqrt(float(max(1,cnt(m-j+1)))) + ww(m)=ymon + enddo + enddo + + close(lun) + return + +97 print *,'DAT_CCL: Only ',nranges,' scans in this file' +98 nread=-2 + rewind lun + return +99 print *,'DAT_CCL: error during read' + nread=-2 + rewind lun + return + +100 nread=-1 + rewind lun + end diff --git a/gen/dat_d1a.f b/gen/dat_d1a.f new file mode 100644 index 0000000..47174c6 --- /dev/null +++ b/gen/dat_d1a.f @@ -0,0 +1,118 @@ + subroutine dat_d1a +c ------------------- + + external dat_d1a_desc + external dat_d1a_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_d1a_desc) + call dat_init_read(dtype, dat_d1a_read) + end + + + subroutine dat_d1a_desc(text) +! ----------------------------- + character*(*) text ! (out) description + +! type description +! ---------------------------------- + text='D1A ILL D1A6 data format' + end + + + subroutine dat_d1a_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + character line*132, title*80 + integer j,i,ndet,l + integer ival(2,10) + real temp, xstep, thmin, ymon + + nread=0 + xstep=0 + ymon=0 + + read(lun,'(a)',err=900,end=900) line + + if (line(1:4) .ne. 'D1A6') then + rewind lun + goto 900 + endif + + call dat_start_options + + call dat_group(1, putval) + + title=line(6:) + read(lun,'(16x,f8.0,i8)', err=901,end=901) xstep, ndet + read(lun,'(f8.0)', err=901,end=901) thmin + read(lun,'(f8.0,8x,f8.0)', err=901,end=901) ymon, temp + + if (xstep .eq. 0) goto 901 + + j=-1 +1 read(lun,'(10(i2,i6))',err=902,end=9) ival + if (ival(2,1) .eq. -1000) goto 9 + do i=1,10 + if (ival(1,i) .gt. 0 .and. ival(2,i) .ge. 0) then + if (nread .ge. nmax) then + print *,'DAT_LNSP: Too many datapoints, truncated' + goto 9 + endif + nread=nread+1 + xx(nread)=(i+j)*xstep+thmin + yy(nread)=ival(2,i) + ss(nread)=max(1.0,sqrt(yy(nread)/float(ival(1,i)))) + ww(nread)=ymon*ival(1,i) + endif + enddo + j=j+10 + goto 1 + +9 call dat_group(3, putval) + call putval('XAxis=2-Theta [deg]', 0.0) + call putval('YAxis=Intensity', 0.0) + call dat_group(1, putval) + call putval('Monitor', ymon) + call str_trim(title, title, l) + call putval('Title='//title(1:l), 0.0) + call putval('Temp', temp) + +990 close(lun) + return + +! error messages + +900 nread=-1 + rewind lun + return + +901 print *,'DAT_D1A: Error in header' + goto 990 + +902 print *,'DAT_D1A: Error in intensity block' + goto 990 + +99 print *,'DAT_D1A: error during read' + rewind lun + nread=-2 + return + end diff --git a/gen/dat_fda.f b/gen/dat_fda.f new file mode 100644 index 0000000..20f1e67 --- /dev/null +++ b/gen/dat_fda.f @@ -0,0 +1,168 @@ + subroutine dat_fda +c -------------------- + + external dat_fda_desc + external dat_fda_opts + external dat_fda_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_fda_desc) + call dat_init_opts(dtype, dat_fda_opts) + call dat_init_read(dtype, dat_fda_read) + end + + + subroutine dat_fda_desc(text) +! ------------------------------- + character*(*) text ! (out) description + +! type description +! ---------------------------------- + text='FDA FDA (focus data analysis) output files' + end + + + subroutine dat_fda_opts +! ----------------------- + print '(x,a)' + 1,'from,to: dataset range' + end + + + subroutine dat_fda_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + integer i, i1, i2, j, idx, m, j0, ipdp, iset, iostat + real x, y, s, gval, f + character line*132, zaxis*132 + + zaxis='z' + read(lun, '(a)',err=100,end=100) line + if (line(1:4) .ne. '#FDA' .and. + 1 line .ne. '#DAVE ASCII OUTPUT') goto 100 +1 read(lun, '(a)', err=100, end=100) line + i = index(line,':') + if (i .gt. 1) then + call str_lowcase(line(1:i), line(1:i)) + if (line(i+1:i+1) .eq. ' ') i=i+1 + if (line(1:i) .eq. '#instrument:') then + call putval('Instrument='//line(i+1:), 0.0) + else if (line(1:i) .eq. '#sample:') then + call putval('Sample='//line(i+1:), 0.0) + else if (line(1:i) .eq. '#title:') then + call putval('Title='//line(i+1:), 0.0) + else if (line(1:i) .eq. '#x units:') then + call putval('XAxis='//line(i+1:), 0.0) + else if (line(1:i) .eq. '#y units:') then + call putval('YAxis='//line(i+1:), 0.0) + else if (line(1:i) .eq. '#group label:') then + call putval('ZAxis='//line(i+1:), 0.0) + zaxis = line(i+1:) + else if (line(1:12) .eq. '#temperature') then + f = 0 + read(line(i+1:), *, iostat=iostat) f + if (f .ne. 0) call putval('Temp', f) + endif + else + call str_lowcase(line, line) + endif + if (line .ne. '#begin') goto 1 + + call fit_dat_pdp_idx(zaxis, ipdp) + + call dat_start_options + i1=0 + call dat_int_option('from', i1) + i2=0 + call dat_int_option('to', i2) + + if (i2 .eq. 0) then + if (i1 .eq. 0) then + i1=1 + i2=999999 + else + i2=i1 + endif + endif + call dat_get_index(idx) + if (idx .ne. 0) then + i1=i1+idx-1 + i2=i1 + endif + + j=0 + iset=1 + gval=0 + m=0 + +3 read(lun, '(a)', err=90, end=90) line +4 call str_lowcase(line, line) + if (line(1:13) .eq. '#group value:') then + gval=0 + read(line(14:), *, err=41, end=41) gval +41 continue + endif + if (line(1:1) .eq. '#') goto 3 + + j0=j + +5 continue + read(line, *, err=20,end=20) x,y,s + if (s .gt. 0.0 .and. iset .ge. i1) then + if (j .ge. nmax) then + i2=iset + print *,'DAT_FDA: too many data points, truncated' + goto 29 + endif + j=j+1 + ww(j)=1.0 + ss(j)=s + yy(j)=y + xx(j)=x + endif +20 continue + read(lun, '(a)', err=29, end=29) line + if (line(1:1) .ne. '#') goto 5 + +29 iset=iset+1 + + if (j .gt. j0) then + m=m+1 + if (ipdp .ne. 0) then + call fit_dat_pdp_set(ipdp, m, gval) + endif + call fit_dat_table(m, 1, j-j0) + endif + if (iset .le. i2) goto 4 + +90 nread=j + call putval('Monitor', 0.0) + close(lun) + return + +99 print *,'DAT_FDA: error during read' +98 nread=-2 + rewind lun + return + +100 nread=-1 + rewind lun + end diff --git a/gen/dat_fit3.f b/gen/dat_fit3.f new file mode 100644 index 0000000..faf468d --- /dev/null +++ b/gen/dat_fit3.f @@ -0,0 +1,144 @@ + subroutine dat_fit3 +c ------------------- + + external dat_fit3_desc + external dat_fit3_read + + external handler + + integer dtype/0/ + + call dat_init_desc(dtype, dat_fit3_desc) + call dat_init_read(dtype, dat_fit3_read) + return + + entry dat_fit3_replace(handler) + call dat_init_read(dtype, handler) + end + + + subroutine dat_fit3_desc(text) +! ------------------------------ + character*(*) text ! (out) description + +! type description +! ---------------------------------- + text='FIT3 Fit data file' + end + + + subroutine dat_fit3_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + integer n,nu0,i,j,ififu0 + real ymon0 + character line*132 + external dat_fit3_val + real y, s + + + read(lun, '(A)',err=100,end=100) line + + if (line(1:8) .ne. 'FitSave ' .or. line(9:11) .lt. '3.3') goto 100 + + if (line(9:11) .lt. '3.4') then + read(lun,*,err=100,end=100) ! filename + endif + nu0=0 + read(lun, *, err=99,end=99) nu0,ififu0 + do i=1,nu0 + read(lun,*,err=99,end=99) + enddo + if (ififu0 .eq. 7) read(lun,*,err=99,end=99) + + if (line(9:11) .lt. '3.4') then + + n=0 + ymon0=0 + read(lun, *, err=99,end=99) n,ymon0 + if (ymon0 .le. 0) ymon0=1 + call putval('Monitor', ymon0) + + else + + call dat_delimiters(';', '=', '''') + +10 read(lun, '(a)', err=99,end=99) line + call str_trim(line, line, i) + if (line(1:i) .eq. ' ') goto 19 + j=1 +11 if (line(j:j) .eq. ' ') then + j=j+1 + goto 11 + endif + call dat_group(j-1, putval) + call dat_intprt(line(j:i), dat_fit3_val, putval) + goto 10 +19 continue + + endif + + i=0 +20 i=i+1 + if (i .gt. nmax) then + print *,'too many data points --> truncated' + goto 29 + endif + read(lun,'(a)',err=99,end=29) line + j=index(line,'/') ! for compatibility with versions 3.3 and older + if (j .gt. 0) line(j:)=' ' ! " +! read(line,'(bn,4f20.0,i20)') xx(i),y,s,ww(i),j + read(line,*,err=99,end=99) xx(i),y,s,ww(i),j + ss(i)=s + yy(i)=y + nread=i + goto 20 + +29 close(lun) + return + +99 print *,'error in FitSave file' + nread=-2 + rewind lun + return + +100 nread=-1 + rewind lun + end + + + subroutine dat_fit3_val(str, val, putval) + + character*(*) str + real val + external putval + + integer i + + if (val .eq. 0) then + i=index(str, '=') + else + i=0 + endif + if (i .gt. 1) then + if (str(1:i-1) .eq. 'File') return + endif + call putval(str, val) + end diff --git a/gen/dat_frm.f b/gen/dat_frm.f new file mode 100644 index 0000000..ee19f90 --- /dev/null +++ b/gen/dat_frm.f @@ -0,0 +1,233 @@ + subroutine dat_frm +c ------------------ + + external dat_frm_desc + external dat_frm_opts + external dat_frm_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_frm_desc) + call dat_init_opts(dtype, dat_frm_opts) + call dat_init_read(dtype, dat_frm_read) + end + + + subroutine dat_frm_desc(text) +! ----------------------------- + character*(*) text ! (out) description + +! type description +! ---------------------------------- + text='FRM PUMA & PANDA at FRM2 Munich' + end + + + subroutine dat_frm_opts +! ----------------------- + print '(x,a)' + 1,'x: x-axis (default: first column or first variable' + 1,' with step in Qscan)' + 1,'y: y-axis (default: last column)' + 1,'mon: monitor (default: mon1)' + end + + + subroutine dat_frm_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + integer mcol + parameter (mcol=64) + real y,s,r,f,ymon,values(mcol) + integer i,j,l,errcnt,ncol + integer xcol,ycol,mncol + integer iostat + character line*1024 + character xaxis*16, yaxis*16, moncol*16, col1*16 + integer headcnt + real qh,qk,ql,en,dh,dk,dl,de + + headcnt=0 +1 read(lun,'(a)',err=100,end=100) line + headcnt=headcnt+1 + if (line(1:15) .eq. 'filename : ') then + goto 1 + else if (line(1:15) .eq. 'created at : ') then + call putval('Date='//line(16:), 0.0) + goto 1 + else if (line(1:15) .eq. 'instrument : ') then + call putval('Instrument='//line(16:), 0.0) + goto 1 + else if (line(1:15) .eq. 'user : ') then + call putval('User='//line(16:), 0.0) + goto 1 + else if (line(14:15) .eq. ': ') then + goto 1 + endif + if (headcnt .lt. 3 .and. forced .le. 0) goto 100 + + call dat_start_options + xaxis=' ' + call dat_str_option('x', xaxis) + yaxis=' ' + call dat_str_option('y', yaxis) + moncol=' ' + call dat_str_option('mon', moncol) + if (moncol .eq. ' ') then + moncol='mon1' + elseif (moncol .gt. '0' .and. moncol .le. '9') then + moncol='mon'//moncol(1:) + endif + +2 read(lun,'(a)',err=100,end=100) line + if (line(1:10) .ne. 'scan data:') goto 2 + + nread=0 + errcnt=0 + + read(lun, '(a)', err=99,end=99) line + if (xaxis .eq. ' ') then + i = index(line, 'Qscan') + if (i .ne. 0 .and. xaxis .eq. ' ') then + line=line(i+5:) + i=index(line,'(') + if (i .ne. 0) line(i:i)=' ' + i=index(line,')') + if (i .ne. 0) line(i:i)=' ' + read(line, *, iostat=iostat) qh,qk,ql,en,dh,dk,dl,de + call putval('QH', qh) + call putval('QK', qk) + call putval('QL', ql) + call putval('EN', en) + call putval('DQH', qh) + call putval('DQK', dk) + call putval('DQL', dl) + call putval('DEN', de) + if (dh .ne. 0) then + xaxis='h' + elseif (dk .ne. 0) then + xaxis='k' + elseif (dl .ne. 0) then + xaxis='l' + elseif (de .ne. 0) then + xaxis='E' + endif + else +! ignore other scan types + endif + endif + + read(lun,'(a)',err=99,end=99) line + + i=1 + line(len(line):len(line))=' ' + ncol=0 + xcol=0 + ycol=0 + mncol=0 +31 do while (line(i:i) .eq. ' ') + i=i+1 + if (i .gt. len(line)) goto 39 + enddo + l=i + do while (line(i:i) .ne. ' ') + i=i+1 + enddo + if (line(l:i) .eq. ';') goto 31 + ncol=ncol+1 + if (ncol .eq. 1) col1=line(l:i) + if (line(l:i) .eq. yaxis .and. ycol .eq. 0) then + ycol=ncol + elseif (line(l:i) .eq. xaxis .and. xcol .eq. 0) then + xcol=ncol + elseif (line(l:i) .eq. moncol .and. mncol .eq. 0) then + mncol=ncol + endif + goto 31 + +39 if (ycol .eq. 0) then + ycol=ncol + yaxis=line(l:) + endif + if (xcol .eq. 0) then + xcol=1 + xaxis=col1 + endif + + call putval('XAxis='//xaxis, 0.0) + call putval('YAxis='//yaxis, 0.0) + +! ignore units + read(lun, '(a)', err=99,end=99) line + ymon=0 + l=min(mcol,max(xcol,ycol,mncol)) + +40 read(lun,'(a)',end=88,err=88) line + if (line(2:5) .eq. '****') goto 88 + i=index(line,';') + if (i .ne. 0) line(i:i)=' ' + + read(line,*,err=99,end=99) (values(j),j=1,l) + if (nread .ge. nmax) goto 29 + + if (mncol .eq. 0) then + if (ymon .eq. 0) ymon=1. + r=ymon + else + r=values(mncol) + if (r .gt. 0) then + if (ymon .eq. 0) ymon=r + else + if (ymon .eq. 0) ymon=1. + r=ymon + endif + endif + f=ymon/r + if (f .le. 0.0) f=1.0 + + nread=nread+1 + xx(nread)=values(xcol) + y=values(ycol) + if (y .gt. 0) then + s=sqrt(y) ! statistical error of detector + else + s=1 + endif + yy(nread)=y*f + ss(nread)=s*f + ww(nread)=r + goto 40 + +29 print *,'too many points - truncated' +88 close(lun) + call putval('NP', nread*1.0) + call putval('Monitor', ymon) + return + +99 nread=-2 + rewind lun + print *,'DAT_FRM: error during read' + call putval('Monitor', 0.0) + return + +100 nread=-1 + rewind lun + call putval('Monitor', 0.0) + end diff --git a/gen/dat_fullp.f b/gen/dat_fullp.f new file mode 100644 index 0000000..a6c6bfb --- /dev/null +++ b/gen/dat_fullp.f @@ -0,0 +1,196 @@ + subroutine dat_fullp +c -------------------- + + external dat_fullp_desc + external dat_fullp_opts + external dat_fullp_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_fullp_desc) + call dat_init_opts(dtype, dat_fullp_opts) + call dat_init_read(dtype, dat_fullp_read) + end + + + subroutine dat_fullp_desc(text) +! ------------------------------- + character*(*) text ! (out) description + +! type description +! ---------------------------------- + text='FULLP Fullprof output (Prf=3 like for Kaleida)' + end + + + subroutine dat_fullp_opts +! ------------------------- + print '(x,a)' + 1,'x: xaxis (2theta,d,Q)' + end + + + subroutine dat_fullp_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + real none + parameter (none=-8.7654e29) + real x, y4(4), ymax, dmax, shift, lambda, nan_value, diffshift + integer i,j,jex,npeak,nphase,npkt,nexcl,ntic(8),nlin(8) + real fact + integer istyle(5) + real excl1(30),excl2(30) + character title*132, line*132 + character xaxis*64 + + + read(lun,'(a)', err=100, end=100) title + if (title(1:1) .eq. ' ') title=title(2:) + read(lun,*, err=100, end=100) nphase, npkt, lambda + if (nphase .gt. 8) goto 100 + read(lun,*, err=100, end=100) (ntic(j),j=1,nphase) + 1 ,(nlin(j),j=1,nphase),nexcl + do j=1,nphase + do i=1,nlin(j) + read(lun,*,err=100,end=100) ! skip propagation vectors + enddo + enddo + do j=1,nexcl + read(lun,*,err=100,end=100) excl1(min(j,30)), excl2(min(j,30)) + enddo + read(lun,'(a)', err=100, end=100) line + i=index(line, 'Yobs') + if (i .eq. 0) goto 100 + i=index(line, 'Ycal') + if (i .eq. 0) goto 100 + i=index(line, 'Backg') + if (i .eq. 0) goto 100 + i=index(line, char(9)) + if (i .le. 1) goto 100 + + call dat_start_options + xaxis=' ' + call dat_str_option('x', xaxis) + + if (line(2:i-1) .eq. '2Theta') then + call dat_powder_init(lambda, '2theta', xaxis) + if (xaxis .eq. ' ') then + call putval('XAxis='//line(2:i-1), 0.0) + else + call putval('XAxis='//xaxis, 0.0) + endif + else + call dat_powder_init(0.0, ' ', ' ') + endif + + npeak=0 + do j=1,nphase + npeak=npeak+ntic(j) ! calc number of peaks + enddo + + ymax=0.0 + nread=npeak+npkt + if (nread .ge. nmax) goto 99 + + call gra_get_nan_value(nan_value) + + jex=1 + dmax=-1.0e30 + do i=1,npkt + read(lun,*, err=99, end=99) x,y4 + if (i .eq. 1) then + shift=y4(2)-y4(4) + diffshift=y4(3) + endif + fact=1.0 + call dat_powder_trf(x, xx(npeak+i), fact) + yy(npeak+i)=y4(1)*fact ! obs + ss(npeak+i)=1 ! we do not have the error + ww(npeak+i)=1 + ymax=max(ymax,yy(npeak+i)) + y4(1)=(y4(4)+shift)*fact ! unshifted background + y4(2)=y4(2)*fact ! cal + y4(3)=(y4(3)-diffshift)*fact ! unshifted diff + dmax=max(dmax,y4(3)) + +10 if (jex .le. nexcl) then + if (x .ge. excl2(jex)) then + jex=jex+1 + goto 10 + endif + if (x .gt. excl1(jex)) then ! value is within excl. region + if (yy(nread) .eq. nan_value) goto 15 + y4(1)=nan_value + y4(2)=nan_value + y4(3)=nan_value + endif + endif + do j=1,3 + nread=nread+1 + if (nread .gt. nmax) then + print *,'too much data' + goto 99 + endif + xx(nread)=xx(npeak+i) + yy(nread)=y4(j) + ss(nread)=1 + ww(nread)=1 + enddo +15 continue + enddo + do i=1,npeak + read(lun,*, err=99, end=99) x, yy(i) + call dat_powder_trf(x, xx(i), fact) + yy(i)=(yy(i)-ymax/32)*0.5 + ss(i)=ymax/100 + ww(i)=1 + enddo + close(lun) + shift=-nphase*ymax/32-dmax + do i=npeak+npkt+3,nread,3 ! shift diff + if (yy(i) .ne. nan_value) then + yy(i)=yy(i)+shift + endif + enddo + call fit_dat_table(1,1,npeak) + call fit_dat_table(2,1,npkt) + call fit_dat_table(3,3,(nread-npeak-npkt)/3) + + call dat_group(1, putval) + call putval('Title='//title, 0.0) + call putval('lambda', lambda) + call putval('Monitor', 0.0) + istyle(1)=8 + istyle(2)=6 + istyle(3)=-10 + istyle(4)=-10 + istyle(5)=-10 + call fit_style(5, istyle) + call fit_legend('|obs|bgr|cal|dif') + call fit_colors(999) + return + +99 print *,'DAT_FULLP: error during read' + nread=-2 + return + +100 nread=-1 + rewind lun + end diff --git a/gen/dat_ida.f b/gen/dat_ida.f new file mode 100644 index 0000000..400d065 --- /dev/null +++ b/gen/dat_ida.f @@ -0,0 +1,165 @@ + subroutine dat_ida +c ------------------ + + external dat_ida_desc + external dat_ida_opts + external dat_ida_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_ida_desc) + call dat_init_opts(dtype, dat_ida_opts) + call dat_init_read(dtype, dat_ida_read) + end + + + subroutine dat_ida_desc(text) +! ----------------------------- + character*(*) text ! (out) description + +! type description +! ---------------------------------- + text='IDA IDA output files' + end + + + subroutine dat_ida_opts +! ----------------------- + print '(x,a)' + 1,'from,to: dataset range' + end + + + subroutine dat_ida_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + integer i, i1, i2, j, idx, m, j0, ipdp, iset, nspec + real x, y, s, z + character line*132 + + read(lun, '(a)',err=100,end=100) line + if (line .ne. 'ASCII-96') goto 100 +1 read(lun, '(a)', err=100, end=100) line + if (line(1:4) .ne. 'x') goto 1 + call putval('XAxis='//line(5:28),0.0) + read(lun, '(a)', err=100, end=100) line + if (line(1:4) .ne. 'y') then + print *,'missing line starting with "y"' + goto 99 + endif + call putval('YAxis='//line(5:28),0.0) + read(lun, '(a)', err=99, end=99) line + if (line(1:4) .eq. 'z1') then + call putval('ZAxis='//line(5:28),0.0) + call fit_dat_pdp_idx(line(5:28), ipdp) + else + ipdp=0 + endif +2 read(lun, '(a)', err=99, end=99) line + if (line(1:4) .ne. '&eob') goto 2 + read(lun, '(a)', err=99, end=99) line + if (line(1:5) .eq. '(a80)') then + read(lun, '(a)', err=99, end=99) line + i=index(line,char(0)) + if (i .gt. 1) then + call putval('Instrument='//line(1:i-1), 0.0) + endif + read(lun, '(a)', err=99, end=99) line + i=index(line,char(0)) + if (i .gt. 2) then + call putval('Title='//line(2:i-1), 0.0) + endif + endif + + call dat_start_options + i1=0 + call dat_int_option('from', i1) + i2=0 + call dat_int_option('to', i2) + + if (i2 .eq. 0) then + if (i1 .eq. 0) then + i1=1 + i2=999999 + else + i2=i1 + endif + endif + call dat_get_index(idx) + if (idx .ne. 0) then + i1=i1+idx-1 + i2=i1 + endif + +3 read(lun, '(a)', err=99, end=99) line + if (line(1:9) .ne. '&spectrum') goto 3 + j=0 + iset=1 + m=0 +4 read(lun, '(a)', err=99, end=99) line + if (ipdp .ne. 0) then + read(line, *, err=99, end=99) nspec,z + else + read(line, *, err=99, end=99) nspec + endif + + j0=j + do i=1,nspec + read(lun, *, err=20,end=29) x,y,s + if (s .gt. 0.0 .and. iset .ge. i1) then + if (j .ge. nmax) then + i2=iset + print *,'DAT_IDA: too many data points, truncated' + goto 29 + endif + j=j+1 + ww(j)=1.0 + ss(j)=s + yy(j)=y + xx(j)=x + endif +20 continue + enddo +29 if (j .gt. j0) then + m=m+1 + if (ipdp .ne. 0) then + call fit_dat_pdp_set(ipdp, m, z) + endif + call fit_dat_table(m, 1, j-j0) + endif + read(lun, '(a)', err=50, end=50) line + if (line(1:9) .eq. '&spectrum' .and. iset .lt. i2) then + iset=iset+1 + goto 4 + endif + +50 nread=j + call putval('Monitor', 0.0) + close(lun) + return + +99 print *,'DAT_IDA: error during read' +98 nread=-2 + rewind lun + return + +100 nread=-1 + rewind lun + end diff --git a/gen/dat_init.f b/gen/dat_init.f new file mode 100644 index 0000000..4a4c2e9 --- /dev/null +++ b/gen/dat_init.f @@ -0,0 +1,28 @@ + subroutine dat_init +c +c initialize interfaces to all supported data file types +c + logical init/.true./ + + if (init) then + call dat_tasmad + call dat_lnsp + call dat_d1a + call dat_nexus + call dat_oldtas + call dat_rita + call dat_sics + call dat_ccl + call dat_frm + call dat_5c2 + call dat_inx + call dat_ida + call dat_fda + call dat_fullp + call dat_spec + call dat_2t + call dat_fit3 + call dat_table + init=.false. + endif + end diff --git a/gen/dat_inx.f b/gen/dat_inx.f new file mode 100644 index 0000000..f8ead54 --- /dev/null +++ b/gen/dat_inx.f @@ -0,0 +1,138 @@ + subroutine dat_inx +c ------------------ + + external dat_inx_desc + external dat_inx_opts + external dat_inx_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_inx_desc) + call dat_init_opts(dtype, dat_inx_opts) + call dat_init_read(dtype, dat_inx_read) + end + + + subroutine dat_inx_desc(text) +! ----------------------------- + character*(*) text ! (out) description + +! type description +! ---------------------------------- + text='INX INX output files' + end + + + subroutine dat_inx_opts +! ----------------------- + print '(x,a)' + 1,'from,to: dataset range' + end + + + subroutine dat_inx_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + integer i, n, i1, i2, j, idx + integer nlines, nzone(6) + real angle, einc, qinc, temp, dTau, x, y, s + character line*132 + + + read(lun, '(8i5)', err=100,end=100) nlines, nzone, nread + n=0 + do i=1,5 + n=n+nzone(i) + enddo + if (nzone(1) .ne. 1 .or. nzone(2) .ne. 2 + 1 .or. n .ne. nlines-nread) then + if (forced .le. 0) goto 100 + endif + + call dat_start_options + i1=1 + call dat_int_option('from', i1) + i2=i1 + call dat_int_option('to', i2) + + call dat_get_index(idx) + + if (idx .eq. 0) then + if (i2 .gt. i1) then + print *,'for INX files only one dataset allowed' + endif + else + i1=i1+idx-1 + if (i1 .gt. i1) goto 98 + endif + + write(line(1:3), '(i3)') i1 + call putval('Range='//line(1:3),0.0) + do i=1,i1-1 + do j=1,nlines + read(lun,*,err=99,end=99) + enddo + read(lun, '(8i5)', err=99,end=99) nlines, nzone, nread + enddo + + read(lun, '(a)', err=99,end=99) line + call putval('Title='//line,0.0) + read(lun, '(f7.0,2f8.0,f9.0,f6.0)', err=99,end=99) + 1 angle, einc, qinc, temp + call putval('two_theta', angle) + call putval('Ei', einc) + call putval('Temp', temp) + read(lun, '(24x,f8.0)', err=99,end=99) dTau + call putval('dTau', dTau) + + n=nlines-nread-3 + do i=1,n + read(lun,*,err=99,end=99) + enddo + j=0 + do i=1,nread + read(lun, *, err=20,end=29) x,y,s + if (s .gt. 0.0) then + if (j .ge. nmax) then + print *,'DAT_INX: too many data points, truncated' + goto 29 + endif + j=j+1 + ww(j)=1.0 + ss(j)=s + yy(j)=y + xx(j)=x + endif +20 continue + enddo +29 nread=j + + call putval('Monitor', 0.0) + close(lun) + return + +99 print *,'DAT_INX: error during read' +98 nread=-2 + rewind lun + return + +100 nread=-1 + rewind lun + end diff --git a/gen/dat_lnsp.f b/gen/dat_lnsp.f new file mode 100644 index 0000000..7df3f53 --- /dev/null +++ b/gen/dat_lnsp.f @@ -0,0 +1,290 @@ + subroutine dat_lnsp +c ------------------- + + external dat_lnsp_desc + external dat_lnsp_opts + external dat_lnsp_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_lnsp_desc) + call dat_init_opts(dtype, dat_lnsp_opts) + call dat_init_read(dtype, dat_lnsp_read) + end + + + subroutine dat_lnsp_desc(text) +! ------------------------------ + character*(*) text ! (out) description + +! type description +! ---------------------------------- + text='LNSP LNS powder Ascii format (DMC, HRPT)' + end + + + subroutine dat_lnsp_opts +! ------------------------ + print '(x,a)' + 1,'x: xaxis (2theta,d,Q), default= 2theta' + 1,'lambda: used for transformation, if not given if file' + end + + + subroutine dat_lnsp_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + character line*132, title*80, short*8 + character date*20, preset*4, instr*8 + character xaxis*64 + integer npk + integer i, l, j + real ymon + real meastime, lambda, temp, dtemp + real uur + real xmin, xstep, xend, xval, fact + real yint(0:99) + logical overflow + external dat_lnsp_val + + + nread=0 + preset=' ' + overflow=.false. + xstep=0 + ymon=0 + + read(lun,'(a)',err=900,end=900) line + rewind lun + + i=index(line, ',') + if (i .gt. 1 .and. i .le. 9) then + instr=line(1:i-1) + else + instr=' ' + endif + if (instr .eq. ' ') then + if (line(32:40) .eq. 'Phase No:') then ! fullprof sub output + read(line(1:31), *, err=901,end=901) xmin, xstep, xend + title=line(32:) + read(lun,*,err=901,end=901) + instr='fp' + else + if (forced .le. 0 .and. line(64:67) .ne. 'YTIM') then + inquire(lun, name=line) + call sys_parse(short, l, line, ' ', 2) + call str_upcase(short(1:4), short(1:4)) + if (short(1:4) .ne. '.DMC') goto 900 + endif + instr='DMC' + endif + elseif (instr .ne. 'DMC' .and. instr .ne. 'HRPT' + 1 .and. instr .ne. 'LNSP') then + goto 900 + endif + + call dat_start_options + xaxis=' ' + call dat_str_option('x', xaxis) + lambda=0.0 + call dat_real_option('lambda', lambda) + + call dat_group(1, putval) + if (instr .eq. 'fp') goto 108 + + read(lun,'(a)',err=99,end=99) line + if (line(64:67) .eq. 'YTIM') then ! old header + date=' ' + meastime=0.0 + read(line, '(21x,a20,27x,f8.0)', err=101,end=101) date, meastime +101 read(lun, '(a)',err=901,end=99) title + if (title(67:69) .eq. 'WL:') then + if (lambda .eq. 0.0) then + read(title(70:80), *, err=102,end=99) lambda + endif + title(67:)=' ' +102 continue + endif + temp=0 + dtemp=0 + uur=0 + read(lun, '(3f8.0,8x,f8.0,3x,f5.0,8x,f8.0,5x,f8.0)' + 1 , err=103,end=99) + 1 xmin, xstep, xend, temp, dtemp, uur, ymon +103 if (temp .ne. 0) then + call putval('Temp', temp) + if (dtemp .ne. 0) call putval('dTemp', dtemp) + endif + if (date .ne. ' ') call putval('Date='//date, 0.0) + call dat_group(2, putval) + if (meastime .ne. 0) call putval('MeasTime', meastime) + if (uur .ne. 0) call putval('MuR', uur) + if (ymon .gt. 0) ymon=ymon*1000. + else ! new header + title=line(6:) + read(lun,'(a)',err=99,end=99) line + call dat_delimiters(',','=','''') + call dat_intprt(line, dat_lnsp_val, putval) + read(lun,'(a)',err=99,end=99) line + read(line, *, err=107,end=107) xmin, xstep, xend, ymon +107 j=index(line, ',') + call dat_delimiters(',','=',' ') + if (j .ne. 0 .and. line(j+1:) .ne. ' ') then + call dat_intprt(line(j+1:), dat_lnsp_val, putval) + endif + endif +108 if (xstep .eq. 0) goto 901 + + if (ymon .gt. 0) then + preset='MN' + elseif (ymon .lt. 0) then + ymon=-ymon + preset='TI' + else + ymon=0. ! was 1. + endif + + call dat_group(3, putval) + if (preset .ne. ' ') call putval('Preset='//preset, 0.0) + if (lambda .eq. 0.0) then + call sym_get_real('lambda', lambda) + else if (lambda .ne. 0.0) then + call putval('lambda', lambda) + endif + call dat_powder_init(lambda, '2theta', xaxis) + + if (xstep .eq. 0) goto 901 + npk=nint((xend-xmin)/xstep)+1 + +! read intensity block + do i=0,npk-1,10 + read(lun, '(10F8.0)', err=902,end=902) (yint(j),j=0,9) + do j=0,min(9,npk-1-i) + if (nread .ge. nmax) then + if (.not. overflow) then + print *,'DAT_LNSP: Too many datapoints, truncated' + overflow=.true. + endif + else + xval=xmin+nread*xstep + nread=nread+1 + call dat_powder_trf(xval, xx(nread), fact) + yy(nread)=yint(j)*fact + ww(nread)=fact + if (yint(j) .gt. 0) then + ss(nread)=sqrt(yint(j)) + else + ss(nread)=0.0 + endif + endif + enddo + enddo + +! read sigma block + yint(0)=0 + do i=1,npk,10 + read(lun, '(10F8.0)', err=290,end=290) (yint(j),j=0,9) + do j=0,9 + if (i+j .ge. nread) goto 202 + ss(i+j)=yint(j) + enddo + enddo +202 goto 500 + +290 if (i .le. 1 .and. yint(0) .eq. 0) then + if (instr .ne. 'fp') then + print *,'--- Old LNSP format, no sigma block' + endif + else + print *,'--- Error in sigma block' + endif + +500 do i=1,nread + if (ss(i) .eq. 0.0) then + ss(i)=1.0 + else + ss(i)=ss(i)*ww(i) + endif + ww(i)=ymon + enddo + call dat_group(3, putval) + if (xaxis .eq. ' ') then + call putval('XAxis=2-Theta [deg]', 0.0) + else + call putval('XAxis='//xaxis, 0.0) + endif + call putval('YAxis=Intensity', 0.0) + call dat_group(1, putval) + call putval('Monitor', ymon) + call str_trim(title, title, l) + call putval('Title='//title(1:l), 0.0) + call putval('Instrument='//instr, 0.0) + call sym_read(lun, dat_lnsp_val) + +990 close(lun) + return + +! error messages + +900 nread=-1 + rewind lun + return + +901 print *,'DAT_LNSP: Error in header' + goto 990 + +902 print *,'DAT_LNSP: Error in intensity block' + goto 990 + +99 print *,'DAT_LNSP: error during read' + rewind lun + nread=-2 + return + end + + + subroutine dat_lnsp_val(str, val, putval) + + character*(*) str + real val + external putval + + integer i + + if (val .eq. 0) then + i=index(str, '=') + else + i=0 + endif + if (i .eq. 0) then ! numeric + if (str .eq. 'T') then + call putval('Temp', val) + return + elseif (str .eq. 'dT') then + call putval('dTemp', val) + return + elseif (str .eq. ' ') then + return + endif + else + if (str(1:i) .eq. 'Filelist=') return + endif + call putval(str, val) + end diff --git a/gen/dat_nexus.f b/gen/dat_nexus.f new file mode 100644 index 0000000..8055596 --- /dev/null +++ b/gen/dat_nexus.f @@ -0,0 +1,906 @@ + subroutine dat_nexus +c -------------------- + + external dat_nexus_desc + external dat_nexus_opts + external dat_get_datanumber ! get number on first line + external dat_nexus_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_nexus_desc) + call dat_init_opts(dtype, dat_nexus_opts) + call dat_init_high(dtype, dat_get_datanumber) + call dat_init_read(dtype, dat_nexus_read) + end + + + subroutine dat_nexus_desc(text) +! ------------------------------- + character*(*) text ! (out) description + +! type description +! ---------------------------------- + text='NEXUS NeXus data format' + end + + + subroutine dat_nexus_opts +! ------------------------- + implicit none + character spec*16 + + call sys_getenv('dat_defspec', spec) + call str_upcase(spec, spec) + if (spec .ne. ' ') then + print '(x,2a/)','valid only for instrument ',spec + endif + if (spec(1:5) .eq. 'FOCUS') then + print '(x,a)' + 1 ,'from,to: detector range (default: averaged over all)' + 1 ,'bank: detector bank, u,b,l,m (default: m=merged)' + 1 ,'axis: time or theta' + else if (spec(1:4) .eq. 'RITA') then + print '(x,a)' + 1 ,'from: window number (default: middle window)' + 1 ,'from,to: window range' + 1 ,'axis: x-axis to be choosen' + 1 ,'y: y-axis to be choosen (aux, mon)' + else if (spec(1:5) .eq. 'CAMEA') then + print '(x,a)' + 1 ,'axis: x-axis to be choosen' + 1 ,'y: y-axis to be choosen (0 (summed_counts), 1, 8 (segment number), tot (total_counts), mon, aux)' + else if (spec(1:5) .eq. 'TRICS') then + print '(x,a)' + 1 ,'from,to: detector range' + 1 ,'axis: x-axis to be choosen' + 1 ,'frame: frame number (default: all frames)' + 1 ,'det: detector number (default: 2)' + else if (spec(1:3) .eq. 'DMC') then + print '(x,a)' + 1 ,'cal: calibration file' + 1 ,'filter: threshold for spike filter (default: 4)' + else if (spec(1:4) .eq. 'HRPT') then + print '(x,a)' + 1 ,'from,to: time channel range (default: averaged over all)' + 1 ,'cal: calibration file' + 1 ,'filter: threshold for spike filter (default: 4)' + else if (spec(1:5) .eq. 'MARS') then + print '(x,a)' + 1 ,'bank: detector bank, e,i,m1,m2' + 1 ,' (elastic, inelastic, mon1, mon2)' + 1 ,'from,to: detector range (default: averaged over all)' + else if (spec .eq. ' ') then + print '(x,a)' + 1 ,'from: first or only dataset (default: 1, RITA: middle window)' + 1 ,'to: last dataset (default: max. or single)' + 1 ,'bank: on FOCUS: detector bank, u,b,l,m (default: m=merged)' + 1 ,'axis: x-axis to be choosen' + 1 ,'frame: on TRICS: frame number (default 0)' + 1 ,'det: on TRICS: detector number (default: 1)' + 1 ,'cal: calibration file' + endif + print '(x,a)' + 1 ,'mon: monitor for normalisation (auto, smon, pmon, bmon, time)' + end + + + subroutine dat_nexus_read + 1 (lun, forced, nread, pv, nmax, xx, yy, ss, ww) +! ------------------------------------------------ + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external pv ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + include 'dat_nexus.inc' + + integer i,j + character magic*4, filename*256 + integer li, lc, lm + character cnt*64, mono*64, ins*64, axis2*64, signal*64 + character yaxis*64 + integer nsum, ngrp, nblk, xlen, nset + real totcnts, sta, stp, weight + integer from, to, lb, idet, icomp, iframe + character bank*64, buf*16 + character monarray*64 + integer p_weight(2), p_monarray(2) + integer istart + integer n_monarray + + integer dat_comp + external dat_comp, dat_nexus_putval + + + if (forced .le. 0) then ! check for HDF-file + magic=' ' + read(lun,'(a4)',err=9,end=9) magic +9 if (magic .ne. char(14)//char(3)//char(19)//char(1) .and. + 1 magic(2:4) .ne. 'HDF') then + rewind lun + nread=-1 + return + endif + endif + +c assume that we can open the HDF file, even when it is opened already by Fortran + + inquire(lun, name=filename) + call NXswitchReport(0) + status=NXopen(filename, NXacc_read, fileid) + + if (status .ne. NX_ok) then + rewind lun + call NXswitchReport(1) + nread=-1 + return + endif + lp=1 + path='/' + + call dat_nexus_get('/instrument') + if (type .ne. NX_char .or. status .ne. NX_OK) then + if (index(filename,'rita') .ne. 0) then + cdata = 'RITA2' + elseif (index(filename,'camea') .ne. 0) then + cdata = 'CAMEA' + else + goto 999 ! no instrument attribute + endif + endif + + i=index(cdata, ' ') + j=index(cdata, ',') + if (j .eq. 0) j=len(cdata) + i=min(i,j)-1 + if (i .lt. 1) goto 999 ! bad instrument attribute + + call dat_group(2, pv) ! importance level 2 + call pv('instrument='//cdata(1:i), 0.0) + + call str_upcase(instr, cdata(1:1)) ! take the first letter as code for the instrument + + call dat_start_options + from=0 + to=0 + bank=' ' + xaxis=' ' + yaxis=' ' + iframe=-1 + idet=2 + if (instr .eq. 'F') then + call dat_int_option('from', from) + call dat_int_option('to', to) + call dat_str_option('bank', bank) + call dat_str_option('axis', xaxis) + elseif (instr .eq. 'R') then + call dat_int_option('from', from) + call dat_int_option('to', to) + call dat_str_option('axis', xaxis) + call str_lowcase(xaxis, xaxis) + call dat_str_option('y', yaxis) + call str_lowcase(yaxis, yaxis) + elseif (instr .eq. 'C') then + call dat_str_option('axis', xaxis) + call str_lowcase(xaxis, xaxis) + call dat_str_option('y', yaxis) + call str_lowcase(yaxis, yaxis) + elseif (instr .eq. 'T') then + call dat_int_option('from', from) + call dat_int_option('to', to) + call dat_int_option('det', idet) + call dat_str_option('axis', xaxis) + call dat_int_option('frame', iframe) + elseif (instr .eq. 'H') then + call dat_int_option('from', from) + call dat_int_option('to', to) + elseif (instr .eq. 'M') then + call dat_str_option('bank', bank) + call dat_int_option('from', from) + call dat_int_option('to', to) + endif + ymon=0 + monitor='auto' + call dat_str_option('mon', monitor) + icomp=0 + call dat_int_option('bin', icomp) + nframes=0 + axis2=' ' + n_monarray=0 + if (yaxis .eq. ' ') yaxis='counts' + + if (instr .eq. 'D') then ! dmc + call str_trim(ins, '/nxentry/dmc/', li) + call str_trim(cnt, ins(1:li)//'nxpsd/', lc) + xaxis='two_theta' + axis1=cnt(1:lc)//'two_theta' + signal=cnt(1:lc)//'counts' + else if (instr .eq. 'H') then ! hrpt + call str_trim(ins, '/nxentry/hrpt/', li) + call str_trim(cnt, ins(1:li)//'nxdetector/', lc) + xaxis='two_theta' + axis1=cnt(1:lc)//'two_theta' + signal=cnt(1:lc)//'counts' + axis2=cnt(1:lc)//'stroboscopic_time' + monarray='/nxentry/stroboscopic_monitor/data' + if (monitor .eq. 'auto' .or. monitor .eq. 'smon') then + n_monarray=-1 + endif + elseif (instr .eq. 'F') then ! focus + call str_trim(ins, '/nxentry/focus/', li) + call str_trim(cnt, ins(1:li)//'counter/', lc) + if (xaxis .eq. ' ') xaxis='time' + call str_lowcase(bank, bank) + if (bank(1:1) .eq. 't') then + call str_trim(bank, ins(1:li)//'tof_monitor/', lb) + axis1=ins(1:li)//'merged/time_binning' + signal=ins(1:li)//'tof_monitor' + else + if (bank(1:1) .eq. 'u') then + call str_trim(bank,'upperbank',lb) + elseif (bank(1:1) .eq. 'l') then + call str_trim(bank,'lowerbank',lb) + elseif (bank(1:1) .eq. 'b') then + call str_trim(bank,'bank1',lb) + else + call str_trim(bank,'merged',lb) + endif + call str_trim(bank, ins(1:li)//bank(1:lb)//'/', lb) + if (xaxis .eq. 'time') then + axis1=bank(1:lb)//'time_binning' + axis2=bank(1:lb)//'theta' + else + axis2=bank(1:lb)//'time_binning' + axis1=bank(1:lb)//'theta' + endif + signal=bank(1:lb)//'counts' + endif + elseif (instr .eq. 'T') then ! trics + call str_trim(ins, '/frame0000/trics/', li) + if (iframe .ge. 0) write(ins(1:10), '(a,i4.4)') '/frame',iframe + call str_trim(cnt, ins(1:li)//'count_control/', lc) + if (xaxis .eq. ' ') xaxis='x' + if (idet .le. 0) idet=1 + if (idet .gt. 3) idet=3 + call str_trim(bank, ins(1:li)//'detector'//char(48+idet)//'/' + 1 , lb) + if (xaxis .eq. 'x') then + axis1=bank(1:lb)//'x' + axis2=bank(1:lb)//'y' + else + axis1=bank(1:lb)//'y' + axis2=bank(1:lb)//'x' + endif + signal=bank(1:lb)//'counts' + nframes=1 + elseif (instr .eq. 'C') then ! camea + call str_trim(ins, '/nxentry/CAMEA/', li) + call str_trim(cnt, ins(1:li)//'detector/', lc) + axis1=' ' + if (yaxis .eq. 'aux') then + signal='/nxentry/aux_detector/data' + elseif (yaxis .eq. 'mon') then + signal='/nxentry/control/data' + elseif (yaxis .eq. 'tot') then + signal=cnt(1:lc)//'total_counts' + elseif (yaxis(2:) .eq. ' ' .and. yaxis(1:1) .ge. '0' .and. yaxis(1:1) .le. '9') then + signal='/nxentry/CAMEA/segment_'//yaxis(1:1)//'/data' + else + signal='/nxentry/data/summed_counts' + endif + call dat_nexus_get('/nxentry/data/*') + elseif (instr .eq. 'R') then ! rita + call str_trim(ins, '/nxentry/rita-2/', li) + call str_trim(cnt, ins(1:li)//'detector/', lc) + axis1=' ' + if (yaxis .eq. 'aux') then + signal='/nxentry/aux_detector/data' + elseif (yaxis .eq. 'mon') then + signal='/nxentry/control/data' + else + axis2='w' + yaxis='counts' + signal=cnt(1:lc-1)//'windows/counts' + endif + if (from .gt. 0) then + if (to .lt. from) to=from + else if (from .eq. 0) then + from = 5 + to = 5 + endif + call dat_nexus_get('/nxentry/data/*') + elseif (instr .eq. 'M') then + call str_lowcase(bank, bank) + if (bank(1:1) .eq. 'i') then + call str_trim(ins, '/inelastic/MARS/', li) + call str_trim(cnt, ins(1:li)//'inelastic_bank/', lc) + axis1=cnt(1:lc)//'time_binning' + axis2=cnt(1:lc)//'scattering_angle' + else + call str_trim(ins, '/elastic/MARS/', li) + if (bank .eq. 'm1') then + call str_trim(cnt, '/elastic/pre_sample_monitor/', lc) + axis1=cnt(1:lc)//'time_of_flight' + else if (bank .eq. 'm2') then + call str_trim(cnt, '/elastic/after_sample_monitor/', lc) + axis1=cnt(1:lc)//'time_of_flight' + else + call str_trim(cnt, ins(1:li)//'elastic_bank/', lc) + axis1=cnt(1:lc)//'time_binning' + axis2=cnt(1:lc)//'scattering_angle' + endif + endif + signal=cnt(1:lc)//'data' + else ! any instrument + call str_trim(ins, '/nxentry/nxinstrument/', li) + call str_trim(cnt, ins(1:li)//'count_control/', lc) + axis1=' ' + signal=cnt(1:lc)//'counts' + endif + call str_trim(mono, ins(1:li)//'monochromator/', lm) + + call dat_group(1, pv) ! importance level 1 + + ! the first column is a code (first letter of the instrument) saying that the item is present + ! a question mark is used for optional items + + call dat_nexus_r(pv,'DHFT M/owner') + call dat_nexus_r(pv,' T /nxentry/currentframenumber=frames') + call dat_nexus_r(pv,'DHFTRCM/nxentry/title=Title') + call dat_nexus_r(pv,'DHFTRCM/nxentry/start_time=Date') + call dat_nexus_r(pv,'DHF '//mono(1:lm)//'lambda') + call dat_nexus_r(pv,' T '//mono(1:lm)//'wavelength') + call dat_nexus_r(pv,'DH /nxentry/sample/sample_name=sample') + call dat_nexus_r(pv,' FTRCM/nxentry/sample/name=sample') + call dat_nexus_r(pv,' FTRCM?/nxentry/sample/temperature=Temp') + fvalue=0.0 + call dat_nexus_r( + 1 dat_nexus_putval,'DH ?/nxentry/sample/temperature_mean=Temp') + if (fvalue .ne. 0.0) then + call pv('Temp', fvalue) + else + call dat_nexus_r(pv + 1 ,'DH TRC ?/nxentry/sample/sample_temperature=Temp') + end if + call dat_nexus_r(pv + 1 ,'DH RC ?/nxentry/sample/temperature_stdDev=dTemp') + call dat_nexus_r(pv,'DHFT ?/nxentry/sample/magfield') + call dat_nexus_r(pv,' RC ?/nxentry/sample/magnetic_field') + call dat_nexus_r(pv,' T /nxentry/sample/omega=om') + call dat_nexus_r(pv,' H ?/nxentry/sample/x_translation=stx') + call dat_nexus_r(pv,' H ?/nxentry/sample/y_translation=sty') + call dat_nexus_r(pv,' H ?/nxentry/sample/sample_stick_rotation=dom') + call dat_nexus_r(pv,'DH '//cnt(1:lc)//'two_theta_start=a4') + + call dat_group(2, pv) ! importance level 2 + + call dat_nexus_r(pv,'D F '//mono(1:lm)//'theta=a1') + call dat_nexus_r(pv,'D FT '//mono(1:lm)//'two_theta=a2') + call dat_nexus_r(pv + 1 ,'DH ?/nxentry/sample/sample_table_rotation=a3') + call dat_nexus_r(pv,'DHFTRC ?/nxentry/sample/device_name') + call dat_nexus_r(pv,'D '//mono(1:lm)//'curvature=mcv') + call dat_nexus_r(pv,'D '//mono(1:lm)//'x_translation=mtx') + call dat_nexus_r(pv,'D '//mono(1:lm)//'y_translation=mty') + call dat_nexus_r(pv,'D '//mono(1:lm)//'phi=mgu') + call dat_nexus_r(pv,'D '//mono(1:lm)//'chi=mgl') + call dat_nexus_r(pv,'DH '//cnt(1:lc)//'countermode=Preset') + call dat_nexus_r(pv,' F '//cnt(1:lc)//'count_mode=Preset') + call dat_nexus_r(pv,' T '//cnt(1:lc)//'countmode=Preset') + call dat_nexus_r(pv,' RC /nxentry/control/mode=Preset') + call dat_nexus_r(pv,' RC /nxentry/control/preset=sMon') + call dat_nexus_r(pv,'DHFT ?'//cnt(1:lc)//'time') + call dat_nexus_r(pv,'DHFT '//cnt(1:lc)//'monitor=sMon') + call dat_nexus_r(pv,'DHFT '//cnt(1:lc)//'beam_monitor=bMon') + call dat_nexus_r(pv,'D '//cnt(1:lc)//'additional_monitor=aMon') + call dat_nexus_r(pv, + 1 ' H '//cnt(1:lc)//'radial_collimator_status=radcolstat') + call dat_nexus_r(pv, + 1 ' H '//cnt(1:lc)//'radial_collimator_type=radcol') + call dat_nexus_r(pv,'DH '//cnt(1:lc)//'proton_monitor=pMon') + call dat_nexus_r(pv,'DH /nxentry/sample/sample_mur=muR') + call dat_nexus_r(pv,' T /nxentry/sample/chi') + call dat_nexus_r(pv,' T /nxentry/sample/phi') + call dat_nexus_r(pv, + 1 ' H /nxentry/sample/sample_changer_position=chpos') + call dat_nexus_r(pv, + 1 ' H /nxentry/sample/sample_rotation_state=sarot') + call dat_nexus_r(pv,' T '//ins(1:li)//'detector2/two_theta=stt') + call dat_nexus_r(pv,' T ?'//ins(1:li)//'detector1/tilt=dg1') + call dat_nexus_r(pv,' T ?'//ins(1:li)//'detector2/tilt=dg2') + call dat_nexus_r(pv,' T ?'//ins(1:li)//'detector3/tilt=dg3') + call dat_nexus_r(pv,' F /nxentry/end_time') + call dat_nexus_r(pv + 1 ,' H '//ins(1:li)//'Kollimator1/kollimator1=cex1') + call dat_nexus_r(pv + 1 ,' H '//ins(1:li)//'Kollimator1/kollimator2=cex2') + call dat_nexus_r(pv + 1 ,' H '//ins(1:li)//'exit_slit/width=d1w') + call dat_nexus_r(pv + 1 ,' H ?'//ins(1:li)//'beam_reduction/bottom=brbo') + call dat_nexus_r(pv + 1 ,' H ?'//ins(1:li)//'beam_reduction/left=brle') + call dat_nexus_r(pv + 1 ,' H ?'//ins(1:li)//'beam_reduction/right=brri') + call dat_nexus_r(pv + 1 ,' H ?'//ins(1:li)//'beam_reduction/top=brto') + call dat_nexus_r(pv,' H '//mono(1:lm)//'curvature_lower=mcvl') + call dat_nexus_r(pv,' H '//mono(1:lm)//'curvature_upper=mcvu') + call dat_nexus_r(pv,' H '//mono(1:lm)//'lift=mexz') + call dat_nexus_r(pv,' H '//mono(1:lm)//'omega_lower=moml') + call dat_nexus_r(pv,' H '//mono(1:lm)//'omega_upper=momu') + call dat_nexus_r(pv,' H '//mono(1:lm)//'vertical_tilt_upper=mgvu') + call dat_nexus_r(pv,' H '//mono(1:lm)//'paralell_tilt_upper=mgpu') + + call dat_group(3, pv) ! importance level 3 + call pv('Xaxis='//xaxis, 0.0) + call pv('Yaxis='//yaxis, 0.0) + + if (axis1 .ne. ' ') then + call dat_nexus_get(axis1) + if (status .ne. NX_ok) then + print *,'axis ',axis1,' not found' + xlen=0 + else + xlen=min(nmax,length) + if (icomp .gt. 1) then + stp=icomp + if (stp .lt. 1) stp = 1 + xlen=dat_comp(0,0, p_array, xlen, 1, 1, 0.0 + 1 , stp, xlen/icomp,0) + call dat_copy2f(p_array, xx, xlen, 1) + do i=1,xlen + xx(i)=xx(i)/icomp + enddo + else + if (rank .eq. 2) then ! for rita: take 'from' window + if (sdate .gt. '2006-12-20') then ! new rita + if (from .ge. dim(1)) then + istart = 4 + else + istart = (from - 1) + endif + xlen = dim(2) + call dat_extract(p_array, istart, dim(1), xx, xlen, 1) + else + if (from .ge. dim(2)) from = dim(2) + istart = dim(1) * (from - 1) + xlen = dim(1) + call dat_extract(p_array, istart, 1, xx, xlen, 1) + endif + else if (rank .eq. 1) then + call dat_copy2f(p_array, xx, xlen, 1) + else + xx(1)=0 + endif + endif + endif + else + xlen=0 + endif + nread=0 + nset=0 +70 if (n_monarray .ne. 0) then + call dat_nexus_get(monarray) + if (status .eq. NX_ok) then ! monitor array present + p_monarray(1)=p_array(1) + p_monarray(2)=p_array(2) + if (rank .eq. 1) then + n_monarray=dim(1) + else + print *,'illegal stroboscopic monitor dimension' + n_monarray=0 + endif + endif + endif + call dat_nexus_get(signal) + if (status .ne. NX_ok) then + if (instr .eq. 'R') then + call dat_nexus_get('/nxentry/data/summed_counts') + axis2=' ' + endif + if (status .ne. NX_ok) then + print *,'signal ',signal,' not found' + goto 999 + endif + endif + if (rank .eq. 0) then + call dat_copy2p(p_array, fvalue) + endif + if (instr .eq. 'H') then + if (rank .ne. 2) then + axis2=' ' + if (n_monarray .ne. 0) then + n_monarray=0 + endif + endif + endif + if (axis2 .ne. ' ') then ! reduction axis + if (from .le. 0) then + if (to .eq. 0) to=999999 + from=1 + endif + if (to .lt. from) to=from + if (instr .eq. 'H' .or. xaxis .eq. 'x' .or. xaxis .eq. 'theta') then ! x on TriCS, theta on FOCUS + nsum=dim(1) + ngrp=1 + nblk=dim(2) + else if (instr(1:1) .eq. 'R' .and. sdate .gt. '2006-12-20') then ! new rita + nsum=dim(1) + ngrp=1 + nblk=dim(2) + else ! old rita or focus + nsum=dim(2) + ngrp=dim(1) + nblk=1 + endif + if (from .gt. nsum) from=nsum + if (to .gt. nsum) to=nsum + if (from .eq. to) then + write(buf, '(9x,i7)') from + else + write(buf, '(i7,a,i7)') from,'..',to + endif + i=10 + do while (buf(i:i) .eq. ' ') + i=i+1 + enddo + buf(10:)=buf(i:) + i=1 + do while (buf(i+1:i+1) .eq. ' ') + i=i+1 + enddo + call pv('Range='//buf(i:), 0.0) + sta=(from+to)*0.5-1 + stp=to+1-from + length=dat_comp(2,0, p_array, nsum, ngrp, nblk + 1 , sta, stp, 1, p_weight) + if (n_monarray .gt. 0) then + i=dat_comp(0,0,p_monarray, nsum, ngrp, 1 + 1 , sta, stp, 1, 0) + call dat_copy2f(p_monarray, weight, 1, 1) + if (ymon .ne. 0) then + weight = weight / ymon + endif + else + call dat_copy2f(p_weight, weight, 1, 1) + endif + if (icomp .gt. 1) then + stp=icomp + weight=weight*icomp + length=dat_comp(0,0, p_array, length,1,1,-0.5 + 1 ,stp,length/icomp,0) + endif + else + weight=1 + endif + if (nset .eq. 0) then + if (xlen .eq. 0) then + xlen=length + do i=1,length + xx(nread+i)=i + enddo + endif + if (length .ne. xlen) then + print *,'xaxis and signal length do not match', length, xlen + endif + endif + length=min(length,xlen) + if (status .ne. NX_ok) then + print *,'signal ',signal,'not found' + goto 999 + endif + if (length .gt. nmax) then + print *,'too large, data truncated from', length,' to',nmax + length=nmax + endif + call dat_copy2f(p_array, yy(nread+1), length, 1) + if (ymon .eq. 0) ymon=1. + totcnts=0.0 + ymon=ymon*weight + do i=1,length + j=nread+i + totcnts=totcnts+yy(j) + ss(j)=sqrt(max(1.0,yy(j))) + ww(j)=ymon + enddo + if (nset .gt. 0) then + do i=1,length + xx(nread+i)=xx(i) + enddo + endif + nread=nread+length + if (nframes .gt. 0 .and. iframe .le. 0) then + nset=nset+1 + write(signal(1:10), '(a,i4.4)') '/frame',nset + if (nset .lt. nframes) goto 70 + call fit_dat_table(1, 1, length) + endif + call dat_group(1, pv) + call pv('Monitor', ymon) + call pv('Counts', totcnts) + i=NXclose(fileid) + close(lun) + call NXswitchReport(1) +! call nxlistreport + RETURN + +999 i=NXclose(fileid) + nread=-2 + call NXswitchReport(1) +! call nxlistreport + end + + + subroutine dat_nexus_get(datapath) + + include 'dat_nexus.inc' + + character datapath*(*) + + character attr*64, nam*64, clss*64, low*64 + integer i, j, atype, l + integer start0(32)/32*0/ + real*8 dvalue + + logical end_of_path + byte idata(257) + + integer dat_nexus_getslab + + if (datapath(1:1) .ne. '/') then + status=NX_error + RETURN + endif + do while (path(1:lp) .ne. datapath(1:min(lp,len(datapath)))) + ! go up in path + status=NXclosegroup(fileid) + lp=lp-1 + do while (path(lp:lp) .ne. '/') + lp=lp-1 + if (lp .lt. 1) then + lp=1 + path='/' + status=NX_error + RETURN + endif + enddo + enddo + + end_of_path=.false. +10 continue ! loop + i=index(datapath(lp+1:), '/')-1 + if (i .lt. 0) then + if (lp .eq. 1) then ! get global attribute + ! assume global attributes are all of type char + type=NX_char + length=len(cdata) + axis_signal=0 + units=' ' + name=datapath(2:) + status=NXgetattr(fileid, name, idata, length, type) + if (status .ne. NX_ok) RETURN + type=NX_char + call replace_string(cdata, idata) + if (length .le. 0) then + cdata=' ' + length=1 + endif + call str_trim(cdata, cdata(1:length), length) + RETURN + endif + call str_trim(datapath(lp+1:), datapath(lp+1:), i) + end_of_path=.true. + endif + call str_lowcase(low, datapath(lp+1:lp+i)) + status=NXinitgroupdir(fileid) + if (status .ne. NX_ok) RETURN +11 status=NXgetnextentry(fileid, name, class, type) + do while (status .eq. NX_ok) + call str_lowcase(nam, name) + call str_lowcase(clss, class) + if (nam .eq. low .or. clss .eq. low) goto 12 + if (low .eq. '*') then + if (nam .eq. xaxis) then + axis1=datapath(1:lp)//name + xaxis=name + else + status=NXopendata(fileid, name) + l=2 + atype=NX_char + attr='axis' + status=NXgetattr(fileid, attr, axis_signal, l, atype) + if (status .eq. NX_ok + 1 .and. axis_signal .eq. ichar('1') + 1 .and. xaxis .eq. ' ') then + axis1=datapath(1:lp)//name + xaxis=name + endif + endif + endif + status=NXgetnextentry(fileid, name, class, type) + enddo + RETURN ! not found +12 continue ! go down in path + if (end_of_path) goto 19 + if (class .eq. 'SDS') goto 11 ! skip SDS when looking for groups + status=NXopengroup(fileid, name, class) + if (status .ne. NX_ok) RETURN + i=i+1 + low(i:i)='/' + path(lp+1:)=low(1:i) + lp=lp+i + status=NXinitgroupdir(fileid) + i=index(datapath(lp+1:), '/') + goto 10 +19 continue ! open data + status=NXopendata(fileid, name) + if (status .ne. NX_ok) RETURN ! not found + status=NXgetinfo(fileid, rank, dim, type) + if (status .ne. NX_ok) goto 9 + if (rank .gt. 16) status=NX_error + j=0 + length=1 + do i=1,rank + if (dim(i) .gt. 1) then + j=i + length=length*dim(i) + endif + enddo + rank0=rank + if (j .eq. 0) then + dim(1)=1 + rank=1 + else + rank=j + endif + if (rank .le. 1 .and. length .le. len(cdata) .and. + 1 (type .eq. nx_char .or. + 1 type .eq. nx_uint8 .or. type .eq. nx_int8)) then ! character (up to 256 chars) + type=nx_char + status=NXgetdata(fileid, idata) + if (status .ne. NX_ok) goto 9 + call replace_string(cdata, idata) + call str_trim(cdata, cdata(1:length), length) + elseif (rank .eq. 0) then ! scalar data + if (type .eq. nx_int32) then + status=NXgetdata(fileid, ivalue) + if (status .ne. NX_ok) goto 9 + fvalue=ivalue + elseif (type .eq. nx_float32) then + status=NXgetdata(fileid, fvalue) + if (status .ne. NX_ok) goto 9 + elseif (type .eq. nx_float64) then + dvalue = 0 + status=NXgetdata(fileid, dvalue) + if (status .ne. NX_ok) goto 9 + fvalue = dvalue + endif + else + if (type .eq. nx_char) type=nx_uint8 + status=dat_nexus_getslab(fileid, type, rank0, start0 + 1 , dim, p_array) + if (status .ne. NX_ok) goto 9 + endif + status=NXgetnextattr(fileid, attr, l, atype) + axis_signal=0 + units=' ' + do while (status .ne. NX_eod) + if (status .ne. NX_ok) goto 9 + if (attr .eq. 'signal') then + axis_signal=-1 + else if (attr .eq. 'axis') then + l=1 + status=NXgetattr(fileid, attr, axis_signal, l, atype) + else if (attr .eq. 'units') then + l=len(units) + status=NXgetattr(fileid, attr, idata, l, atype) + call replace_string(cdata, idata) + endif + status=NXgetnextattr(fileid, attr, l, atype) + enddo + status=NXclosedata(fileid) + RETURN + +9 i=NXclosedata(fileid) + end + + + + subroutine dat_nexus_r(pv, desc) + + include 'dat_nexus.inc' + + external pv + character desc*(*) + + integer l,j,i + character enam*64 + + i=index(desc, '/') + if (i .eq. 0) stop 'DAT_NEXUS_R: illegal descriptor' + j=index(desc(1:i), instr) + if (j .eq. 0) RETURN + l=index(desc(i:), '=') + if (l .eq. 0) then + call str_trim(desc, desc, l) + j=l + do while (desc(j:j) .ne. '/') + j=j-1 + enddo + enam=desc(j+1:l) + else + enam=desc(i+l:) + l=i+l-2 + endif + call dat_nexus_get(desc(i:l)) + if (status .ne. NX_ok) then + ! optional items are marked with a question mark + if (index(desc(1:i), '?') .eq. 0) then + print *,'path ',desc(i:l),' not found' + endif + else if (type .eq. nx_char) then + if (enam .eq. 'Date') then + sdate=cdata + endif + if (enam .eq. 'Preset') then + if (monitor .eq. 'auto') then + call str_lowcase(monitor, cdata) + if (monitor(1:1) .eq. 'm') then + monitor='smon' + else + monitor='time' + endif + endif + endif + call pv(enam//'='//cdata(1:length), 0.0) + else if (type .eq. nx_int32 .or. type .eq. nx_float32 .or. type .eq. nx_float64) then + if (rank .gt. 0) call dat_nexus_average + if (enam .eq. 'frames' .and. nframes .gt. 0) then + nframes=nint(fvalue) + else + call pv(enam, fvalue) + call str_lowcase(enam, enam) + if (enam .eq. monitor) then + ymon=fvalue + endif + endif + else + print *,enam,' has a strange type' + if (rank .gt. 0) then + call dat_copy2f(p_array, 0, 0, 1) ! free p_array + endif + endif + end + + subroutine dat_nexus_average + + include 'dat_nexus.inc' + + integer l + integer dat_comp + external dat_comp + + l=dat_comp(0,0,p_array,length,1,1,(length-1)*0.5,length*1.0,1,0) + call dat_copy2f(p_array, fvalue, 1, 1) + fvalue=fvalue/length + end + + subroutine dat_nexus_putval(name, value) + + character name*(*) + real value + end diff --git a/gen/dat_nexus.inc b/gen/dat_nexus.inc new file mode 100644 index 0000000..4f1daab --- /dev/null +++ b/gen/dat_nexus.inc @@ -0,0 +1,15 @@ + include 'napif.inc' + + integer fileid(NXhandlesize) + integer lp, status, type + character path*1024, name*64, class*64, axis1*64, xaxis*32 + character cdata*256, units*64, monitor*32, instr*1 + character sdate*20 + integer ivalue, axis_signal, rank, rank0, length, nframes + real fvalue, ymon + integer p_array(2), dim(32) + + common /dat_hdf_com/fileid,path,name,class,status,lp,type + 1,cdata,ivalue,axis_signal,rank,rank0,length,fvalue + 1,p_array,dim,nframes,ymon + 1,units,monitor,instr,axis1,xaxis,sdate diff --git a/gen/dat_nexus_dum.f b/gen/dat_nexus_dum.f new file mode 100644 index 0000000..c6e3aa2 --- /dev/null +++ b/gen/dat_nexus_dum.f @@ -0,0 +1,2 @@ + subroutine dat_nexus + end diff --git a/gen/dat_oldtas.f b/gen/dat_oldtas.f new file mode 100644 index 0000000..bee2fb1 --- /dev/null +++ b/gen/dat_oldtas.f @@ -0,0 +1,347 @@ + subroutine dat_oldtas +c --------------------- + + external dat_oldtas_desc + external dat_oldtas_opts + external dat_oldtas_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_oldtas_desc) + call dat_init_opts(dtype, dat_oldtas_opts) + call dat_init_read(dtype, dat_oldtas_read) + end + + + subroutine dat_oldtas_desc(text) +! -------------------------------- + character*(*) text ! (out) description + +! type description +! ---------------------------------- + text='OLDTAS old ILL TAS format (IN3)' + end + + + subroutine dat_oldtas_opts +! -------------------------- + print '(x,a)' + 1,'x,y,mon: xaxis,yaxis,monitor to be choosen' + end + + + subroutine dat_oldtas_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + real none + parameter (none=-8.7654e29) + + character line*132, preset*4, xaxis*8, yaxis*8, monam*8, col2*8 + character pnt*8 + real values(15), r, f, s, y, ymon, qhkle(4) + integer i,j,l,mondiv,ncol,ccol,pcol,xcol + + external dat_oldtas_val + +! common + real dqhkle(4) + common/dat_oldtas_com/dqhkle + + nread=0 + read(lun,'(a)',err=100,end=100) line + + if (forced .le. 0) then + if (line(1:2).ne.'IN' .or. line(39:44).ne.'A00120') goto 100 + else + if (line(1:2).ne.'IN' .and. line(39:44).ne.'A00120') goto 100 + endif + + xaxis=' ' + yaxis=' ' + monam=' ' + + call dat_start_options + call dat_str_option('x', xaxis) + call dat_str_option('y', yaxis) + call dat_str_option('mon', monam) + + call str_upcase(xaxis, xaxis) + call str_upcase(yaxis, yaxis) + call str_upcase(monam,monam) + + call dat_group(1, putval) + call putval('Instrument='//line(1:4),0.0) + call putval('User='//line(11:20), 0.0) + call putval('Date='//line(21:38), 0.0) + + if (line(1:4) .eq. 'IN3 ' .and. + 1 (line(24:31) .eq. 'FEB-1995' .or. + 1 line(24:31) .eq. 'MAR-1995' ) ) then + mondiv=100 + else + mondiv=1 + endif + call dat_delimiters(';', '=', '''') + read(lun,'(a)',err=99,end=99) line + if (line(32:35) .eq. 'HKLE') then + call putval('Title='//line(20:31), 0.0) + do i=1,4 + qhkle(i)=none + dqhkle(i)=none + enddo + read(line(36:),*,err=11,end=11) qhkle, dqhkle +11 continue + if (qhkle(4) .ne. none) call putval('EN',qhkle(4)) + if (qhkle(3) .ne. none) then + call putval('QH', qhkle(1)) + call putval('QK', qhkle(2)) + call putval('QL', qhkle(3)) + endif + if (dqhkle(4) .ne. none) call putval('DEN',dqhkle(4)) + if (dqhkle(3) .ne. none) then + call putval('DQH', dqhkle(1)) + call putval('DQK', dqhkle(2)) + call putval('DQL', dqhkle(3)) + endif + + read(lun,*,err=99,end=99) + call dat_group(2, putval) + do i=1,4 + read(lun, '(a)') line + call dat_intprt(line, dat_oldtas_val, putval) + enddo + else + call putval('Title='//line(20:99), 0.0) + read(lun,*,err=99,end=99) + call dat_group(2, putval) + do i=1,5 + read(lun, '(a)') line + call dat_intprt(line, dat_oldtas_val, putval) + enddo + endif + if (xaxis .eq. ' ') then + if (dqhkle(1) .ne. 0) then + xaxis='QH' + elseif (dqhkle(2) .ne. 0) then + xaxis='QK' + elseif (dqhkle(3) .ne. 0) then + xaxis='QL' + elseif (dqhkle(4) .ne. 0) then + xaxis='EN' + endif + endif + +1 read(lun,'(a)',err=99,end=99) line + if (line(1:4) .eq. '!POS') then + read(line(5:),'(15F7.3)') values +ccc call sym_put_array('Angles', values, 12,0) + goto 1 + elseif (line(1:4) .eq. '!Z**') then + read(line(5:),'(15F7.3)') values +ccc call sym_put_array('Zeroes', values, 12,0) + goto 1 + else + if (line .ne. ' ') then + call str_trim(line, line, l) + print *,'DAT_OLDTAS: superflous text: ', line(1:l) + goto 1 + endif + endif +2 continue + call dat_group(1, putval) + read(lun,'(a,F12.0)',err=99,end=99) preset, ymon + preset=preset(2:3) + if (preset .eq. 'MN') then + preset='M1' + ymon=ymon*mondiv + elseif (preset .eq. 'TI') then + preset='TIME' + endif + if (monam .eq. ' ') then + monam=preset + elseif (preset .ne. monam) then + ymon=0 + endif + + call putval('Preset='//preset, 0.0) + +3 read(lun,'(a)',err=99,end=99) line + if (line .eq. ' ') goto 3 + i=1 + line(len(line):len(line))=' ' + ncol=0 + ccol=0 + pcol=0 + xcol=0 + col2=' ' +31 do while (line(i:i) .eq. ' ') + i=i+1 + if (i .gt. len(line)) goto 39 + enddo + l=i + do while (line(i:i) .ne. ' ') + i=i+1 + enddo + ncol=ncol+1 + if (ncol .eq. 2) col2=line(l:i) + if (line(l:i) .eq. 'EN(MEV)') line(l:i)='EN' + if (line(l:i) .eq. yaxis .or. yaxis .eq. ' ' .and. + 1 (line(l:i) .eq. 'CNTS' .or. line(l:i) .eq. 'D1')) ccol=ncol + if (line(l:i) .eq. monam) pcol=ncol + if (line(l:i) .eq. xaxis) xcol=ncol + goto 31 + +39 if (ccol .eq. 0) then + if (yaxis .eq. ' ') yaxis='CNTS/D1' + print *,'no values found for ',yaxis + goto 99 + endif + if (pcol .eq. 0) then + if (monam .eq. ' ') monam='Monitor' + print *,'no values found for ',monam + goto 99 + endif + if (xcol .eq. 0) then + if (xaxis .ne. ' ') then + print *,'no values found for ',xaxis,', take ',col2 + endif + xcol=2 + xaxis=col2 + endif + + call putval('XAxis='//xaxis, 0.0) + call putval('YAxis=Intensity', 0.0) + call dat_group(1, putval) + + l=max(xcol,pcol,ccol) + f=1.0 + values(1)=0 + +4 read(lun,'(a8,15f8.0)',err=19,end=9) pnt, (values(j),j=2,l) + i=0 + read(pnt, *, err=5, end=5) i ! special treatment for FLEX, where there may be stars in the first column +5 if (i .eq. 0) then + values(1)=values(1)+1 ! illegal value: add 1 + else + values(1)=i + endif + if (nread .ge. nmax) goto 29 + y=values(ccol) + r=values(pcol) + if (ymon .eq. 0) then + ymon=r + if (r .eq. 0) r=1. + endif + if (r .le. 0.0) r=ymon + f=ymon/r + if (f .le. 0.0) f=1.0 + if (y .gt. 0) then + s=sqrt(y) ! statistical error of detector + else + s=1 + endif + nread=nread+1 + xx(nread)=values(xcol) + yy(nread)=y*f + ss(nread)=s*f + ww(nread)=r + goto 4 + +9 close(lun) + call putval('Monitor', ymon) + return + +19 print *,'DAT_OLDTAS: error at point ',nread + goto 4 +29 print *,'DAT_OLDTAS: too many points' + goto 100 +99 print *,'DAT_OLDTAS: error during read' + rewind lun + nread=-2 + return +100 nread=-1 + rewind lun + end + + + subroutine dat_oldtas_val(str, val, putval) + + character*(*) str + real val + external putval + + real dqhkle(4) + common/dat_oldtas_com/dqhkle + integer i, nq/0/, ndq/0/ + +c the names with include number sign (#) are for compatibility +c with an intermediate version of IN3 data files, +c where QHKL and DQHKL were stored as an array + + if (str .eq. ' ') then ! reset + ndq=0 + nq=0 + return + endif + if (val .eq. 0) then + i=index(str, '=') + else + i=0 + endif + if (i .eq. 0) then ! numeric + if (str .eq. 'DQHKL') then + ndq=ndq+1 + if (ndq .le. 4) dqhkle(ndq)=val + if (ndq .eq. 1) then + call putval('DQH', val) + else if (ndq .eq. 2) then + call putval('DQK', val) + else if (ndq .eq. 3) then + call putval('DQL', val) + else if (ndq .eq. 4) then + call putval('DEN', val) + endif + return + endif + if (str .eq. 'QHKL') then + nq=nq+1 + if (nq .eq. 1) then + call putval('QH', val) + else if (nq .eq. 2) then + call putval('QK', val) + else if (nq .eq. 3) then + call putval('QL', val) + else if (nq .eq. 4) then + call putval('EN', val) + endif + return + endif + if (str .eq. 'DQH') then + dqhkle(1)=val + elseif (str .eq. 'DQK') then + dqhkle(2)=val + elseif (str .eq. 'DQL') then + dqhkle(3)=val + elseif (str .eq. 'DEN') then + dqhkle(4)=val + endif + endif + call putval(str, val) + end diff --git a/gen/dat_open.f b/gen/dat_open.f new file mode 100644 index 0000000..ecf47f3 --- /dev/null +++ b/gen/dat_open.f @@ -0,0 +1,1326 @@ + subroutine dat_init_desc(datype, handler) + + integer datype + external handler + + include 'dat.inc' + + data desc_hdl/maxtypes*0/ + data high_hdl/maxtypes*0/ + data read_hdl/maxtypes*0/ + data opts_hdl/maxtypes*0/ + data last_type/0/, dtype/0/, year/0/ + integer sys_adr_c, sys_adr_iiieirrrr, sys_adr_ci, sys_adr_0 + + call dat_init_handler(datype) + desc_hdl(datype)=sys_adr_c(handler) + return + + entry dat_init_read(datype, handler) + + call dat_init_handler(datype) + read_hdl(datype)=sys_adr_iiieirrrr(handler) + return + + entry dat_init_high(datype, handler) + + call dat_init_handler(datype) + high_hdl(datype)=sys_adr_ci(handler) + return + + entry dat_init_opts(datype, handler) + + call dat_init_handler(datype) + opts_hdl(datype)=sys_adr_0(handler) + return + + end + + + subroutine dat_init_hdl + end + + + subroutine dat_desc(datype, text) + +C get description (syntax: filetype, space(s), description) + + integer datype ! (in) data type code + character text*(*) + + include 'dat.inc' + + call sys_call_c(desc_hdl(datype), text) + end + + + + subroutine dat_high(datype, file, numor) + +C get highest numor + + integer datype ! (in) data type code + integer numor + character file*(*) + + include 'dat.inc' + + call sys_call_ci(high_hdl(datype), file, numor) + end + + + + subroutine dat_desc_opt(done, typ) + +! print options description + character typ*(*) ! file type + + include 'dat.inc' + + integer done + + if (last_type .eq. 0) then + done=0 + else + print *,'Options for filetype ',typ,':' + print * + call sys_call_0(opts_hdl(last_type)) + endif + end + + + + subroutine dat_read(datype, lun, forced, nread + 1 , putval, nmax, xx, yy, ss, ww) +C + integer datype ! (in) data type code + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! -1: read only if type is really sure + ! 0: read only if type is quite sure + ! 1: try to read anyway, as there is no alternative + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file still open + ! -2: correct type, but unreadable, still open + external putval ! (in) subroutine putval(str, val) + ! character*(*) str + ! real val + integer nmax ! max. number of points + real xx(nmax) ! x-values + real yy(nmax) ! y-values + real ss(nmax) ! sigma + real ww(nmax) ! weights + + include 'dat.inc' + + if (datype .ne. 0) last_type=datype + if (last_type .eq. 0) then + print *,'DAT_READ: datype illegal' + nread=-1 + else + rewind lun + call sys_call_iiieirrrr(read_hdl(last_type), lun, forced, nread + 1, putval, nmax, xx, yy, ss, ww) + endif + end + + + subroutine dat_init_handler(datype) +! +! datype = 0: return new type id in datype +! else: change handler for datype +! + include 'dat.inc' + + integer datype + + integer i,j + character system*32 + external dat_do_nothing + + if (ntypes .eq. 0) then + call sys_loadenv + spec=' ' + call sys_getenv('dat_defyear', spec) + year=0 + read(spec,*,iostat=i) year + if (year .eq. 0) call sys_date(year, i, j) + call sys_getenv('dat_defspec', spec) + call str_lowcase(spec, spec) + call sys_check_system(system) + + if (system .eq. 'VMS') then + specin='/' + specout='/' + else + specin=':' + specout=':' + endif + endif + + if (datype .eq. 0) then + ntypes=ntypes+1 + if (ntypes .gt. maxtypes) + 1 stop 'DAT_INIT_HANDLER: too many handlers' + datype=ntypes + endif + end + + + subroutine dat_do_nothing + end + + + subroutine dat_open_next(listin, pin, listout, pout + 1 , putval, nmax, nread, xx, yy, ss, ww) + +c open next file from file-list LISTIN at position PIN, +c put item on LISTOUT, position POUT + +c first call to DAT_OPEN_NEXT: POUT=0 +c between subsequent calls, LISTOUT and POUT must not be altered + + character listin*(*) ! (in) input file list + integer pin ! (in/out) input list position + character listout*(*) ! (out) output file list + integer pout ! (in/out) output list position + external putval ! (in) subroutine to treat name value pairs + ! subroutine putval(str, val) + ! character*(*) str + ! real val + integer nmax ! max number of points (if NMAX=0: check syntax only) + integer nread ! (out) number of points read + real xx(nmax) ! x-values + real yy(nmax) ! y-values + real ss(nmax) ! sigmas + real ww(nmax) ! weights + +! arguments for entries DAT_SETTYP, DAT_GETTYP, DAT_SETYEAR, DAT_GETHIGH: + + character spec_def*(*) ! default instrument specification + integer year_def ! default year + integer high_numor ! highest numor + character filnam*(*) ! full filename + integer len_name ! length of filename + logical silent + + integer undef_numor + parameter (undef_numor=-2) + + integer i,l,m,n,ny,hyp,num1,num2,stat,tf,idx,lcf + integer lf/0/ + integer np/0/ + integer namend,ityp,iname,ispec1,ispec2 + integer irange/0/,jrange/0/,krange/0/ + character delim*1 + logical spec_out, year_out, inq, ok, syntaxonly, nam_out + logical range_out/.false./ + + character filename*256/' '/ + character filtype*32, tmpfil*256 + character calspec*32, calfil*256, cyr*4 + character text*128, calast*256/' '/, caltxt*256 + integer numor/0/, lun/0/, iostat + logical dirty/.false./, do_calib, log_it/.true./, hint/.true./ + logical log_filter + real calib, filter, sigoff, s2, ymn, ymx + integer spikecnt, lt + character shortspec*32, filtertext*32 + + include 'dat.inc' + + call dat_init + + if (specout .eq. ':') then + if (index(listin, ':') .eq. 0) then + specin='/' + else + specin=':' + endif + endif + + if (nmax .eq. 0) then + syntaxonly=.true. + else + syntaxonly=.false. + if (log_it) print * + endif + + nread=0 + +5 if (pin .ge. len(listin)) goto 98 + if (listin(pin+1:pin+1) .le. ' ') then + pin=pin+1 + goto 5 + endif + + if (lun .eq. 0) call sys_get_lun(lun) + ny=-1 + iname=pin + ispec1=0 + ispec2=0 + call dat_get_item(listin, pin, delim) + if (delim .eq. specin) then ! separator found + num1=0 + if (pin .gt. iname+1) then ! item is not empty + call dat_cvt_number(listin(iname+1:pin-1), ny) + if (ny .lt. 1900 .or. ny .gt. 2064) then ! item is not year + if (ny .lt. 0) then + ispec1=iname ! first item is spec + ispec2=pin + ny = -1 ! no number + else + ny = -2 ! bad number + endif + endif + endif + n=pin + call dat_get_item(listin, pin, delim) + if (delim .eq. specin) then ! 2nd separator found + if (pin .gt. n+1) then ! 2nd item not empty and year is not yet given + if (ny .eq. -1) then ! year not yet given + call dat_cvt_number(listin(n+1:pin-1), ny) + if (ny .lt. 1900 .or. ny .gt. 2064) then ! 2nd item is not year + ny = -2 ! bad year + endif + else + ispec1 = n ! 2nd item is spec + ispec2 = pin + endif + endif + n=pin + l=pin + call dat_get_item(listin, pin, delim) + endif + else + n=iname + endif + if (pin .gt. n+1) then + if (listin(n+1:) .eq. ' ') then + num1=0 + else + call dat_cvt_number(listin(n+1:pin-1), num1) + endif + elseif (delim .eq. '-') then + num1=numor+1 + else + num1=numor + endif + if (delim .eq. '-') then + hyp=pin + call dat_get_item(listin, pin, delim) + if (pin .gt. hyp+1) then + call dat_cvt_number(listin(hyp+1:pin-1), num2) + else + num2=-1 + endif + else + hyp=0 + num2=num1 + endif +10 if (delim .eq. '-' .or. delim .eq. specin) then + call dat_get_item(listin, pin, delim) + num1=-1 ! illegal syntax + goto 10 + endif + + namend=pin + + if (delim .eq. '(') then + ityp=pin + call dat_get_item(listin, pin, delim) + if (pin .gt. ityp+2) then + call str_upcase(filtype, listin(ityp+1:pin-2)) + call dat_find_type(filtype, i) + if (i .ne. 0) then + dtype=i + else + filtype=' ' + endif + endif + inq=.false. + else + inq=.true. + endif + + if (delim .eq. '[') then + irange=pin + call dat_get_item(listin, pin, delim) + jrange=pin-1 + if (jrange .ge. len(listin)) + 1 call str_trim(listin, listin, jrange) + if (.not. syntaxonly) then + if (jrange .gt. irange+1) then + call dat_set_options(listin(irange+1:jrange-1)) + else + call dat_set_options(' ') + endif + endif + range_out=.true. + if (delim .ne. ',' .and. delim .ne. ' ') then + num1=-1 + goto 10 + endif + else + jrange=irange + if (.not. syntaxonly) then + call dat_set_options(' ') + endif + endif + + if (num1 .ge. 0 .and. num2 .ge. num1 .and. ny .ge. -1) then ! numor given + + spec_out=.false. + if (ispec2 .gt. ispec1+1) then + if (listin(ispec1+1:ispec2-1) .ne. spec) then + call str_lowcase(spec,listin(ispec1+1:ispec2-1)) + spec_out=.true. + endif + elseif (numor .eq. undef_numor) then + spec_out=.true. + endif + + year_out=.false. + if (ny .ge. 0) then + if (ny .lt. 64) then + ny=2000+ny + elseif (ny .lt. 100) then + ny=1900+ny + endif + if (ny .ge. 1900 .and. ny .lt. 2100) then + if (ny .ne. year) then + year=ny + year_out=.true. + endif + else + call str_trim(filename, listin, lf) + goto 99 + endif + elseif (numor .eq. undef_numor) then + year_out=.true. + endif + + i = index(spec, '/') + if (i .gt. 1) then + shortspec=spec(1:i-1) + else + shortspec=spec + endif + call sys_getenv('dat_alias_'//shortspec, filtype) + if (filtype .ne. ' ') spec=filtype + call sys_getenv('dat_type_'//shortspec, filtype) + call str_upcase(filtype, filtype) + call dat_find_type(filtype, i) + if (i .ne. 0) dtype=i + + if (syntaxonly) then + stat=1 + if (ny .gt. 0) stat=2 + call dat_open_raw(0,spec,num1,year,filename,stat) ! syntax only + else + if (spec .eq. ' ' .and. hint) then + hint=.false. + print *,'run number(s) without instrument entered' + print '(x,a,$)','enter the instrument or project name: ' + read(*,'(a)',end=19,err=19) spec + call str_lowcase(spec, spec) + endif +19 stat=1 + if (ny .gt. 0) stat=2 + call dat_open_raw(lun,spec,num1,year,filename,stat) + endif + if (spec .ne. ' ') then + write(cyr, '(i4.4)') year + call sys_setenv('dat_defyear', cyr) + call sys_setenv('dat_defspec', spec) + call sys_saveenv + endif + + if (stat .eq. 0) then + lf=0 + call dat_put_str(filename, lf, spec) + call dat_put_str(filename, lf, specout) + call dat_put_int(filename, lf, year) + call dat_put_str(filename, lf, specout) + call dat_put_int(filename, lf, num1) + print *,filename(1:lf),' not found' + filename=' ' + + else + if (.not. syntaxonly) then + + if (dtype .ne. 0) then + call dat_read(dtype,lun,0,nread,putval,nmax,xx,yy,ss,ww) + else + nread=-1 + endif + if (nread .eq. -1) then + do_calib=.false. + do i=1,ntypes + if (i .ne. dtype) then + call dat_read(i, lun, 0, nread, putval, nmax + 1 , xx,yy,ss,ww) + if (nread .ne. -1) goto 20 + endif + enddo +20 continue + else + do_calib=.true. + endif + +! call str_trim(filename, filename, lf) + call sys_parse(filename, lf, filename, ' ', 0) + if (nread .lt. 0) then + close(lun) + print *,filename(1:lf),' unreadable' + dirty=.true. + if (log_it) call dat_end_options + goto 29 + endif + + call dat_group(2, putval) + call putval('File='//filename(1:lf), 0.0) + call dat_group(1, putval) + + text=' ' + if (do_calib) then + calfil=' ' + call dat_str_option('cal', calfil) + filter=-1 + call dat_real_option('filter', filter) + log_filter=.true. + if (filter .lt. 0) then + log_filter=.false. + calspec='spikefilter_'//shortspec + call sys_getenv(calspec, filtertext) + filter=0 + read(filtertext, '(f32.0)', iostat=iostat) filter + endif + if (calfil .eq. '0') then + text='(uncalibrated)' + call dat_group(2, putval) + call putval('calibration=0',0.0) + goto 230 + endif + idx=0 + +200 continue ! try-again loop + + if (idx .lt. 10) then + calspec='dat_calist_'//shortspec + call sys_getenv_idx(calspec, tmpfil, idx) + else + calspec='dat_calib_'//shortspec + call sys_getenv_idx(calspec, tmpfil, idx-10) + endif + if (tmpfil .eq. ' ') then + if (idx .ge. 10) goto 221 ! give up + ! end of dat_calist_xxx list, try dat_calib_xxx list + idx=10 + goto 200 + endif + idx=idx+1 + + call dat_insert_year(tmpfil, year, ok) + if (calfil .ne. ' ') then + call sys_parse(tmpfil, tf, calfil, tmpfil, 0) + else + call str_trim(tmpfil, tmpfil, tf) + endif +205 call sys_open(lun,tmpfil(1:tf),'r',iostat) ! readonly + if (iostat .ne. 0) then + if (idx .lt. 100) goto 200 ! try again + goto 221 ! give up + endif +! calibration + read(lun, '(a)',end=227,err=227) text + if (text(1:6) .eq. 'calist') then + idx=100 ! do not try again + read(lun, '(i10,a)',end=227,err=227) i, text + if (i .ne. 1) then + print *,'first numor in CALIST must be 1' + goto 227 + endif +210 call str_trim(calfil, text, lcf) + read(lun, '(i10,a)',end=211,err=211) i, text + if (i .le. num1) goto 210 +211 close(lun) + if (calfil(1:lcf) .eq. ' ') goto 226 + call str_first_nonblank(calfil(1:lcf), i) + call sys_parse(tmpfil, tf, calfil(i:lcf), tmpfil, 0) + goto 205 + endif + if (text(1:1) .eq. '#') then + call str_trim(caltxt, text(2:), l) +220 read(lun, '(a)',end=227,err=227) text + if (text(1:1) .eq. '#') goto 220 + else + l=0 + endif + if (tmpfil(1:tf) .ne. calast) then + calast=tmpfil(1:tf) + if (log_it) then + print '(x,2a)' + 1 ,'calibration file: ',tmpfil(1:tf) + if (l .gt. 0) + 1 print '(x,3a)' + 1 ,' (',caltxt(1:l),')' + endif + endif + read(text,*,err=227,end=227) n + if (n .ne. nread) then + write(text, '(a,2i5,a)') + 1 'calibration file does not match file length ' + 1 , n, nread, ' -> no calibration' + goto 230 + endif + nread=0 + do i=1,n + read(lun,*,end=227,err=227) calib + if (calib .gt. 0) then + nread=nread+1 + xx(nread)=xx(i) + ss(nread)=ss(i)/calib + yy(nread)=yy(i)/calib + ww(nread)=ww(i) + endif + enddo + text='and calibrated' + if (filter .ne. 0 .and. nread .ge. 5) then +c -- spike filter + spikecnt=0 + n=nread + nread=0 + do i=1,n + s2=ss(i)**2 + if (i .ge. 3) then + ymx=max(yy(i-1),2*yy(i-1)-yy(i-2)) + ymn=min(yy(i-1),2*yy(i-1)-yy(i-2)) + s2=s2+0.25*ss(i-1)**2 + else + ymx=yy(i+1) + ymn=yy(i+1) + s2=s2+0.25*ss(i+1)**2 + endif + if (i .le. n-2) then + ymx=max(ymx,yy(i+1),2*yy(i+1)-yy(i+2)) + ymn=min(ymn,yy(i+1),2*yy(i+1)-yy(i+2)) + s2=s2+0.25*ss(i+1)**2 + else + s2=s2+0.25*ss(i-1)**2 + endif + sigoff=0 + if (s2 .gt. 0) then + if (yy(i) .gt. ymx) then + sigoff = (yy(i)-ymx) / sqrt(s2) + elseif (yy(i) .lt. ymn) then + sigoff = (ymn-yy(i)) / sqrt(s2) + endif + endif + if (yy(i) .eq. 0) then + if (log_filter) then + print '(i6,a,f7.2,a,i5,a)' + 1 ,num1,': zero at',xx(i) + 1 ,' (channel ',i,')' + endif + spikecnt=spikecnt+1 + elseif (sigoff .gt. filter) then + if (log_filter) then + print '(i6,a,f7.2,a,i5,a,g8.2,a)' + 1 ,num1,': spike at',xx(i) + 1 ,' (channel ',i,',',sigoff, ' sigma)' + endif + spikecnt=spikecnt+1 + else + nread=nread+1 + xx(nread)=xx(i) + ss(nread)=ss(i) + yy(nread)=yy(i) + ww(nread)=ww(i) + endif + enddo + call str_trim(text, text, lt) + if (spikecnt .gt. 10) then + write(text(lt+1:), '(i5,a)') spikecnt, ' spikes' + elseif (spikecnt .gt. 0) then + write(text(lt+1:), '(i2,a)') spikecnt, ' spikes' + endif + endif + call dat_group(2, putval) + call putval('calibration='//caltxt(1:l),0.0) + goto 230 + +221 if (tmpfil .eq. ' ') then + call sys_getenv_idx(calspec, tmpfil, 0) + endif + call sys_parse(tmpfil, tf, tmpfil, ' ', 3) + call str_trim(text, tmpfil, tf) + if (text(1:tf) .ne. ' ') then + text(tf+1:)=' not found -> no calibration' + endif + calast=' ' + goto 230 + +226 text='(uncalibrated)' + calast=' ' + goto 230 + +227 text='error in ' + call sys_parse(text(10:), tf, tmpfil, ' ', 3) + text(10+tf:)=' -> no calibration' + calast=' ' + +230 close(lun) + endif + if (log_it) call dat_end_options + + call str_trim(text, text, l) + if (log_it) then + print *,filename(1:lf),' opened ',text(1:l) + endif + call dat_group(1, putval) + call putval('Numor', float(num1)) + + endif + + if (pout .eq. 0) then + spec_out=.true. + year_out=.true. + krange=-1 + endif + + if (spec_out) then + call dat_put_str(listout, pout, spec) + call dat_put_str(listout, pout, specout) + numor=undef_numor + endif + if (stat .eq. 2 .and. year_out) then + call dat_put_int(listout, pout, year) + call dat_put_str(listout, pout, specout) + endif + + if (num1 .ne. numor+1 .or. dirty .or. irange .ne. krange) then + if (num1 .ne. numor) call dat_put_int(listout, pout, num1) + np=pout + if (irange .lt. jrange) then + call dat_put_str(listout, pout, listin(irange:jrange)) + endif + krange=irange + call dat_put_str(listout, pout, ',') + else + pout=np + call dat_put_str(listout, pout, '-') + call dat_put_int(listout, pout, num1) + if (irange .lt. jrange) then + call dat_put_str(listout, pout, listin(irange:jrange)) + endif + krange=irange + call dat_put_str(listout, pout, ',') + endif + + endif + + dirty=.false. +29 numor=num1 + if (num1 .lt. num2) then + pin=hyp-1 + endif + + goto 98 + endif + + if (namend .gt. iname+1) then ! file name given + + call sys_parse(filename, lf, listin(iname+1:namend-1), ' ', 0) + if (lf .eq. 0) + 1 call str_trim(filename,listin(iname+1:namend-1),lf) + nam_out=.true. + + elseif (irange .lt. jrange) then + + nam_out=.false. ! take last filename + + else + + goto 98 ! neither filename nor range given + + endif + + numor=undef_numor + if (syntaxonly) goto 39 + + call sys_open(lun,filename(1:lf),'r',iostat) ! readonly + if (iostat .ne. 0) goto 99 + + call dat_group(2, putval) + call putval('File='//filename(1:lf), 0.0) + call dat_group(1, putval) + if (log_it) print *,filename(1:lf),' opened' + + if (dtype .ne. 0) then ! try first with default type + call dat_read(dtype, lun, -1, nread, putval, nmax, xx,yy,ss,ww) + if (nread .ne. -1) goto 39 + endif + + do i=1,ntypes + if (i .ne. dtype) then + call dat_read(i, lun, 0, nread, putval, nmax, xx, yy, ss, ww) + if (nread .ne. -1) goto 39 + endif + enddo + + if (dtype .ne. 0) then ! forced read with default type + call dat_read(dtype, lun, 1, nread, putval, nmax, xx,yy,ss,ww) + if (nread .ne. -1) goto 39 + endif + +35 if (nread .ge. 0) goto 39 + if (inq) then + print *,'Select file type' + print * + do i=1,ntypes + call dat_desc(i, text) + call str_trim(text, text, l) + print '(i3,x,a)',i,text(1:l) + enddo + print * + print '(x,a,$)','Type:' + read(5,'(a)',end=37,err=37) filtype + if (filtype .eq. ' ') goto 37 + endif + + call str_upcase(filtype, filtype) + call dat_find_type(filtype, i) + if (i .ne. 0) then + dtype=i + else + if (inq) then + read(filtype,*,err=35,end=35) dtype + if (dtype .le. 0 .or. dtype .gt. ntypes) goto 35 + else + print *,'unknown file type: ',filtype + endif + endif + + call dat_read(dtype, lun, 1, nread, putval, nmax, xx, yy, ss, ww) + if (nread .lt. 0) then + print *,filename(1:lf),' unreadable' + goto 95 + endif + +39 if (log_it) call dat_end_options + if (pout .eq. 0) krange=-1 + if (nam_out .or. pout.eq.0) then + call dat_put_str(listout, pout, filename(1:lf)) + endif + if (irange .lt. jrange .and. irange .ne. krange) then + call dat_put_str(listout, pout, listin(irange:jrange)) + krange=irange + endif + call dat_put_str(listout, pout, ',') + if (nmax .gt. 0) log_it=.true. + goto 100 + +37 print *,'illegal type' +95 close(lun) + goto 98 + +99 print *,filename(1:lf),' not found' +98 if (nmax .gt. 0) log_it=.true. +100 return + + + entry dat_read_again(putval, nmax, nread, xx, yy, ss, ww) + + if (lf .gt. 0 .and. lun .ne. 0) then + call sys_open(lun,filename(1:lf),'r',iostat) ! readonly + if (iostat .ne. 0) goto 99 + + call dat_read(0, lun, 0, nread, putval, nmax, xx, yy, ss, ww) + if (nread .lt. 0) then +c print *,'error in ',filename(1:lf) + close(lun) + endif + endif + return + + + entry dat_get_filename(filnam, len_name) + + call str_trim(filnam, filename, len_name) + return + + + entry dat_settyp(spec_def) + + call dat_init + call dat_find_type(spec_def, i) + if (i .ne. 0) dtype=i + return + + + entry dat_silent + + log_it=.false. + return + + entry dat_get_silent(silent) + + silent=.not. log_it + return + + entry dat_setyear(year_def) + + if (year_def .lt. 1900 .or. year_def .gt. 2200) then + print *,year_def + stop 'illegal year' + endif + call dat_init + year=year_def + return + + + entry dat_getdef(spec_def) + + call dat_init + if (spec .eq. ' ') then + spec_def=' ' + else + i=index(spec, '/') + if (i .le. 1) then + shortspec=spec + else + shortspec=spec(1:i-1) + endif + call sys_getenv_idx('dat_spec_'//shortspec, tmpfil, 0) + call str_trim(spec, spec, l) + if (index(tmpfil, '%%') .ne. 0) then + write(tmpfil, '(2a,i4.4,a)') spec(1:l), specout, year, specout + spec_def=tmpfil(1:l+6) + else + spec_def=spec(1:l)//specout + endif + endif + return + + + entry dat_gettyp(spec_def) + + call dat_init + if (last_type .eq. 0) last_type=dtype + if (last_type .eq. 0) then + spec_def=' ' + else + call dat_desc(last_type, spec_def) + i=index(spec_def, ' ') + if (i .ne. 0) spec_def=spec_def(1:i) + endif + return + + + entry dat_get_high(high_numor) + + high_numor=0 ! assume failure + call dat_init + i=index(spec, '/') + if (i .le. 1) then + shortspec=spec + else + shortspec=spec(1:i-1) + endif + call sys_getenv('dat_type_'//shortspec, filtype) + call dat_find_type(filtype, i) + if (i .eq. 0) return + do m=0,32 + call sys_getenv_idx('dat_high_'//shortspec, tmpfil, m) + if (tmpfil .eq. ' ') RETURN + call dat_insert_year(tmpfil, year, ok) + call dat_high(i, tmpfil, high_numor) + if (high_numor .ne. 0) RETURN + enddo + end + + + subroutine dat_find_type(type, idx) + + character type*(*) + integer idx + + include 'dat.inc' + + integer i, j + character text*80 + +c try first default type + i=dtype + if (i .gt. 0 .and. i .le. ntypes) then + call dat_desc(i, text) + j=index(text, ' ') + if (j .ne. 0 .and. type .eq. text(1:j)) then + idx=i + return + endif + endif + +c and then all the others + + do i=1,ntypes + if (i .ne. dtype) then + call dat_desc(i, text) + j=index(text, ' ') + if (j .ne. 0 .and. type .eq. text(1:j)) then + idx=i + return + endif + endif + enddo + + idx=0 + + end + + + subroutine dat_cvt_number(str, number) + + implicit none + + character str*(*) + integer number + + integer i + logical valid + + number=0 + valid=.false. + do i=1,len(str) + if (str(i:i) .eq. ' ') then + if (valid) then + if (str(i:) .ne. ' ') then ! trailing spaces + number=-1 + endif + return + endif + elseif (str(i:i) .lt. '0' .or. str(i:i) .gt. '9') then + number=-1 + return + endif + valid=.true. + number=number*10+ichar(str(i:i))-ichar('0') + enddo + if (.not. valid) number=-1 + end + + + subroutine dat_get_item(listin, pos, delim) + + character listin*(*) + character delim*1 + integer pos + + integer i,j + include 'dat.inc' + + if (pos .gt. 0) then + if (listin(pos:pos) .eq. '[') then + pos=pos+index(listin(pos+1:), ']') ! skip what is between + endif + if (listin(pos:pos) .eq. '(') then + pos=pos+index(listin(pos+1:), ')') ! skip what is between + endif + endif + do i=pos+1,len(listin) + if (listin(i:i) .eq. ',') then + delim=',' + pos=i + return + endif + if (listin(i:i) .eq. specin) then + delim=specin + pos=i + return + endif + if (listin(i:i) .eq. '-') then + delim='-' + pos=i + return + endif + if (listin(i:i) .eq. '(') then + delim='(' + pos=i + return + endif + if (listin(i:i) .eq. '[') then + j=index(listin(i:),']') + if (j .gt. 0) then + j=i+j + if (j .gt. len(listin)) then ! ']' is at end + delim='[' + pos=i + return + endif + if (listin(j:j) .eq. ',' .or. listin(j:j) .eq. ' ') then ! ']' is at end or before a ',' + delim='[' + pos=i + return + endif + endif + endif + enddo + delim=' ' + pos=len(listin)+1 + end + + + subroutine dat_put_str(listout, pout, str) + + character listout*(*), str*(*) + integer pout + + integer l + + if (pout .lt. len(listout)) then + call str_trim(listout(pout+1:), str, l) + pout=pout+l + if (pout .lt. len(listout)) return + endif + listout(len(listout)-2:)='...' + end + + + subroutine dat_put_int(listout, pout, ival) + + character listout*(*) + integer pout, ival + + character str*12 + integer i + + write(str, '(i12)') ival + do i=11,1,-1 + if (str(i:i) .eq. ' ') then + call dat_put_str(listout, pout, str(i+1:)) + return + endif + enddo + print *,ival + stop 'DAT_PUT_INT: integer conversion error' + end + + + + subroutine dat_open_raw(lun,instr,num,year,filename,status) +! ----------------------------------------------------------- + + integer lun ! (in) logical unit number (lun=0: sytax only) + character instr*(*) ! (in) instrument name + integer num ! (in) numor (0 if not used) + integer year ! (in) year (0 if not used) + character filename*(*) ! (out) filename + integer status ! (out) 0: not found + ! 1: specification without year + ! 2: specification with year + ! (in) 1: year was not given + ! (in) 2: year was given + +! create a raw data file name from instrument name, year, num +! and the environment variable dat_spec_INSTR +! dat_spec_INSTR may contain several paths separated with "," +! if only an extension is given, the preceding path is used +! with exchanged extension +! %%%% are replaced by year, ***** by numor, ### by thousands of numor +! if a numor does not fit into the space forseen, the filename +! will be lengthened. For the ### substitution, overflow digits are +! skipped. + + character numor*12, filnam*128, path*128, rawname*128, spec*128 + character tascomdir*80, dyear*4 + integer l,n,m,i,j,iraw,lr,idx, iostat + logical ok, hint/.true./, slash + + l=index(instr, '/')-1 + if (l .le. 0) then + call str_trim(spec, instr, l) + slash = .false. + else + spec=instr(1:l) + slash = .true. + endif + do idx=0,32 + call sys_loadenv + call sys_getenv_idx('dat_spec_'//spec(1:l),path,idx) + if (path .eq. ' ') then + if (idx .ne. 0 .or. num .le. 0 .or. .not. hint + 1 .or. spec(1:l) .eq. ' ') goto 19 + hint=.false. + print *,spec(1:l),' is unknown' + print * + print * + 1 ,'Reading many files with a number in the name is much simpler ' + 1 ,'when the path is known to fit. You may define now how your ' + 1 ,'filenames for '//spec(1:l) + 1 //' look like. Put asterisks at the place where the ' + 1 ,'number should appear. ' + print * + print *,'Example:' + print *,'path for ',spec(1:l),': iron***.dat' + print * + 1,'When you later enter: ',spec(1:l),'/98-100' + print * + 1,'the files iron098.dat,iron099.dat,iron100.dat will be read in.' +5 print * + print '(x,3a,$)','path for ',spec(1:l),': ' + read(*,'(a)',end=19,err=19) path + print * + if (path .eq. ' ') goto 19 + if (index(path,'*') .eq. 0) then + print * + 1,'the path does not contain an asterisk (*), enter it again' + goto 5 + endif + call sys_setenv('dat_spec_'//spec(1:l), path) + call sys_saveenv + endif + if (path(1:1) .eq. '.' .and. idx .gt. 0) then + do j=lr,1,-1 + if (rawname(j:j) .eq. '.') then + lr=j-1 + goto 9 + endif + enddo +9 continue + call str_trim(rawname, rawname(1:lr)//path, lr) + else + call str_trim(rawname, path, lr) + endif + +c print *,'raw:',rawname(1:lr),' num:',num + + i=index(rawname, '%t') ! special case: tascom data + if (i .gt. 0 .and. .not. slash .and. status .eq. 1) then + print '(x,a,i4,a,$)', 'year [',year,']: ' + n=0 + read(*,'(i10)',iostat=iostat) n + if (n .ge. 1900 .and. n .le. 2064) then + year=n + endif + write(dyear, '(i4.4)') year + call sys_setenv('dat_defyear', dyear) + call sys_saveenv + endif + + status=1 + call dat_insert_year(rawname(1:lr), year, ok) + if (ok) then + if (year .lt. 1900 .or. year .gt. 2200) then + print *,'illegal year: ', year + goto 19 + endif + status=2 + endif + + if (i .gt. 0) then ! special case: tascom data + rawname(i:)=' ' + if (.not. slash) then + call dat_tascom_datadir(rawname, tascomdir) + if (tascomdir .eq. '0') goto 18 + if (tascomdir .eq. ' ') goto 19 + if (l .gt. len(instr)-2) goto 19 + instr(l+1:l+1)='/' + slash=.true. + instr(l+2:)=tascomdir + rawname(i:)=tascomdir + else + if (l .gt. len(instr)-2) goto 19 + rawname(i:)=instr(l+2:) + endif + call str_trim(rawname, rawname, lr) + n=i + do j=i,lr + if (rawname(j:j) .eq. '/') then + n=j + endif + enddo + if (n+12 .lt. len(rawname)) then + do j=lr+1,n+8 + rawname(j:j) = '*' + enddo + rawname(n+9:)='.dat' + lr=n+12 + endif + endif + iraw=index(rawname(1:lr),'*') + if (iraw .eq. 0) then + call str_trim(filnam, rawname(1:lr), j) + if (num .gt. 0) then + print *,'path does not contain "*":',rawname(1:lr) + goto 19 + endif + else + if (num .eq. 0) then + call str_trim(instr, instr, i) + if (status .eq. 2) then + print '(x,3a,i4,a,$)', + 1 'Numor for ',instr(1:i),' (',year,'): ' + else + print '(x,3a,$)','Numor for ',instr(1:i),': ' + endif + read(*,'(i10)', iostat=iostat) num + endif + if (num .le. 0) then + print *,'numor must be positive: ', num + goto 19 + endif + if (iraw .gt. 1) filnam(1:iraw-1)=rawname(1:iraw-1) ! copy first part of filename + write(numor,'(X,I11)') num + n=13 + m=10 + do i=1,lr + if (rawname(i:i) .eq. '*') then + n=n-1 ! count down position in string numor + if (numor(n:n) .lt. '0') numor(n:n)='0' + else if (rawname(i:i) .eq. '#') then ! count down from thousand pos. + m=m-1 + endif + enddo + i=n-1 + do while (numor(i:i) .ge. '0') ! find head of number (space) + i=i-1 + enddo + numor(1:i)='00000000000' + i=i+1 + if (i .lt. n) then + filnam(iraw:iraw+n-i-1)=numor(i:n-1) ! insert head part of number + j=iraw+n-i + else + j=iraw + endif + do i=iraw,lr ! replace stars by number and copy rest of name + if (rawname(i:i) .eq. '*') then + filnam(j:j)=numor(n:n) + n=n+1 + else + filnam(j:j)=rawname(i:i) + endif + j=j+1 + enddo + j=j-1 + do i=1,j + if (filnam(i:i) .eq. '#') then + filnam(i:i)=numor(m:m) + m=m+1 + endif + enddo + endif + filename=filnam(1:j) + if (lun .ne. 0) then + call sys_open(lun,filnam(1:j),'r',iostat) ! readonly + if (iostat .eq. 0) RETURN + else + RETURN + endif +18 continue + enddo + +19 status=0 + filename=' ' + return + end diff --git a/gen/dat_rita.f b/gen/dat_rita.f new file mode 100644 index 0000000..4183ae5 --- /dev/null +++ b/gen/dat_rita.f @@ -0,0 +1,258 @@ + subroutine dat_rita +c ------------------- + + external dat_rita_desc + external dat_rita_opts + external dat_rita_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_rita_desc) + call dat_init_opts(dtype, dat_rita_opts) + call dat_init_read(dtype, dat_rita_read) + end + + + subroutine dat_rita_desc(text) +! ------------------------------ + character*(*) text ! (out) description + +! type description +! ---------------------------------- + text='RITA TASCOM (RITA) format' + end + + + subroutine dat_rita_opts +! ------------------------ + print '(x,a)' + 1,'x,y,mon: xaxis,yaxis,monitor to be choosen' + end + + + subroutine dat_rita_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + integer mcol + parameter (mcol=64) + + character line*1024, xaxis*8, yaxis*8, monam*8, name*8, col1*8 + character fih*132 + real values(64), r, f, s, y, ymon + real tt, tm, ts, td, xmon + integer i,j,l,ncol,ccol,pcol,xcol,tcol + integer iostat + + nread=0 +10 read(lun,'(a)',err=98,end=98) line + if (line .eq. ' ') goto 10 + + if (forced .le. 0) then + if (line(1:4).ne.'#fdt') goto 100 + endif + + xaxis=' ' + yaxis=' ' + monam='MON' + + call dat_start_options + call dat_str_option('x', xaxis) + call dat_str_option('y', yaxis) + call dat_str_option('mon', monam) + + call str_upcase(xaxis, xaxis) + call str_upcase(yaxis, yaxis) + call str_upcase(monam,monam) + + call dat_group(1, putval) + call putval('Instrument=RITA',0.0) + +11 continue + call str_trim(line, line, l) + l=max(10,min(l,len(line))) + + if (line(1:4) .eq. '#fdt') then + call dat_group(2, putval) + i=index(line(10:l), ' ')+9 + call putval('OrigFile='//line(10:i), 0.0) + call dat_group(1, putval) + call putval('Date='//line(i+1:l), 0.0) + else if (line(1:4) .eq. '#txt') then + call dat_group(1, putval) + call putval('Title='//line(10:l), 0.0) + else if (line(1:4) .eq. '#cmd') then + call dat_group(2, putval) + call putval('cmd='//line(10:l), 0.0) + else if (line(1:4) .eq. '#fih') then + fih=line(5:) + else if (line(1:4) .eq. '#fhp') then + call dat_group(2, putval) + do i=1,mcol + values(i)=0.0 + enddo + ncol=0 + i=1 + read(line(5:), *, err=15,end=15) values +15 call str_get_elem(fih, i, name) + if (name .ne. ' ') then + ncol=ncol+1 + call putval(name, values(ncol)) + goto 15 + endif + else if (line(1:4) .eq. '#fip') then + line(1:4)=' ' + goto 12 + else if (line(1:4) .eq. '#plp') then + continue ! ignore + else if (line(1:4) .eq. '#pls') then + continue ! ignore + else if (line(1:4) .eq. '#fmp') then + continue ! ignore + else if (line(1:4) .eq. '#plv') then + i=5 + call str_get_elem(line, i, name) + if (xaxis .eq. ' ') xaxis=name + call str_get_elem(line, i, name) + if (yaxis .eq. ' ') yaxis=name + else if (line(1:4) .eq. '#com') then + continue + elseif (line(1:l) .ne. ' ') then + print *,'unknown header line: ',line(1:l) + endif + read(lun, '(a)') line + goto 11 + +12 i=1 + line(len(line):len(line))=' ' + ncol=0 + ccol=0 + pcol=0 + tcol=0 + xcol=0 + col1=' ' + ymon=0 +31 do while (line(i:i) .eq. ' ') + i=i+1 + if (i .gt. len(line)) goto 39 + enddo + l=i + do while (line(i:i) .ne. ' ') + i=i+1 + enddo + ncol=ncol+1 + if (ncol .eq. 1) col1=line(l:i) + if (line(l:i) .eq. yaxis .or. yaxis .eq. ' ' + 1 .and. line(l:i) .eq. 'I') ccol=ncol + if (line(l:i) .eq. monam) pcol=ncol + if (line(l:i) .eq. xaxis) xcol=ncol + if (line(l:i) .eq. 'TT') tcol=ncol + if (tcol .eq. 0 .and. line(min(i,l+1):i) .eq. 'TEM') tcol=ncol + goto 31 + +39 if (yaxis .eq. ' ') yaxis='I' + if (ccol .eq. 0) then + print *,'no values found for ',yaxis + goto 99 + endif + if (pcol .eq. 0) then + xmon=0 + read(monam, *, iostat=iostat) xmon + if (xmon .le. 0) then + if (monam .eq. ' ') monam='Monitor' + print *,'no values found for ',monam,' take 1' + xmon=1 + endif + endif + if (xcol .eq. 0) then + if (xaxis .ne. ' ') then + print *,'no values found for ',xaxis,', take ',col1 + endif + xcol=1 + xaxis=col1 + endif + + call dat_group(2, putval) + call putval('XAxis='//xaxis, 0.0) + if (yaxis .eq. 'I') then + call putval('YAxis=Intensity', 0.0) + else + call putval('YAxis='//yaxis, 0.0) + endif + call dat_group(1, putval) + + l=min(mcol,max(xcol,pcol,ccol,tcol)) + f=1.0 + tm=0 + ts=0 + +4 read(lun,*,err=19,end=9) (values(j),j=1,l) + if (nread .ge. nmax) goto 29 + y=values(ccol) + if (pcol .eq. 0) then + r=xmon + else + r=values(pcol) + endif + if (ymon .eq. 0) then + ymon=r + if (r .eq. 0) r=1. + endif + if (r .le. 0.0) r=ymon + f=ymon/r + if (f .le. 0.0) f=1.0 + if (y .gt. 0) then + s=sqrt(y) ! statistical error of detector + else + s=1 + endif + nread=nread+1 + xx(nread)=values(xcol) + yy(nread)=y*f + ss(nread)=s*f + ww(nread)=r + if (tcol .ne. 0) then + tt=values(tcol) + td=(tt-tm)/nread + tm=tm+td ! mean temp. + ts=ts+(tt-tm)**2+td*td*(nread-1) ! sum of (temp(i)-mean)**2 +c print *,'temp',tt,tm,ts + endif + goto 4 + +9 close(lun) + call putval('Monitor', ymon) + if (tcol .ne. 0) then + call putval('Temp', tm) + if (nread .gt. 1) call putval('dTemp', sqrt(ts/(nread-1))) + endif + return + +19 print *,'DAT_RITA: error at point ',nread + goto 4 +29 print *,'DAT_RITA: too many points' + goto 100 +98 if (forced .le. 0) goto 100 +99 print *,'DAT_RITA: error during read' + rewind lun + nread=-2 + return +100 nread=-1 + rewind lun + end diff --git a/gen/dat_sics.f b/gen/dat_sics.f new file mode 100644 index 0000000..26d35c0 --- /dev/null +++ b/gen/dat_sics.f @@ -0,0 +1,317 @@ + subroutine dat_sics +c ------------------- + + external dat_sics_desc + external dat_sics_opts + external dat_get_datanumber + external dat_sics_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_sics_desc) + call dat_init_opts(dtype, dat_sics_opts) + call dat_init_high(dtype, dat_get_datanumber) + call dat_init_read(dtype, dat_sics_read) + end + + + subroutine dat_sics_desc(text) +! ------------------------------ + character*(*) text ! (out) description + +! type description +! ---------------------------------- + text='SICS SICS-ASCII (TOPSI,TriCS)' + end + + + subroutine dat_sics_opts +! ------------------------ + print '(x,a)' + 1,'x,y: x-axis and y-axis column name' + end + + + subroutine dat_sics_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + integer mcol + parameter (mcol=32) + real y,s,r,f,ymon,values(mcol),val + integer i,j,l,errcnt,ncol,ycol,pcol,xcol,ycol2,ipol,xcol0 + integer iostat, lz + logical pol + character line*132, preset*16, col2*16 + character xaxis*16, xaxis0*16, yaxis*16, yaxis2*16 + + read(lun,'(a)',err=100,end=100) line + + if (line(1:16) .eq. '##SICS ASCII at ') then + call putval('Instrument='//line(17:),0.0) + else + i=index(line,'Data File ****') + if (i .eq. 0) i=index(line,'SCAN File ****') + if (i .eq. 0) then + if (forced .le. 0) goto 100 + else + j=index(line,'*** ') + if (j .lt. i) call putval('Instrument='//line(j+4:i-2),0.0) + endif + endif + + nread=0 + errcnt=0 + xcol=0 + xcol0=0 + +1 read(lun, '(a)', err=99,end=99) line + iostat=1 + if (line(1:20) .ne. 'Scanning Variables: ' + 1 .and. line(1:20) .ne. 'scanning variables: ') then + i=index(line,'=') + if (i .le. 1) goto 1 + call str_first_nonblank(line(i+1:), j) + call str_trim(line(1:i-1), line(1:i-1), l) + iostat=1 + if (line(1:l) .eq. 'Sample Name') then + l=6 + elseif (line(1:l) .eq. 'Original Filename' .or. + 1 line(1:l) .eq. 'original_filename') then + goto 1 + elseif (line(1:l) .eq. 'Title' .or. + 1 line(1:l) .eq. 'title') then + call dat_group(1, putval) + elseif (line(1:13) .eq. 'File Creation' .or. + 1 line(1:4) .eq. 'date') then + line(1:l)='Date' + l=4 + else if (line(i+j:i+j) .eq. '-' .or. + 1 line(i+j:i+j) .ge. '0' .and. + 1 line(i+j:i+j) .le. '9') then + if (line(1:l) .eq. 'Sample Theta') then + line(1:l)='2-theta' + l=7 + else if (line(1:l) .eq. 'Temperature' .or. + 1 line(1:l) .eq. 'temp') then + line(1:l)='Temp' + l=4 + endif + lz=index(line(1:l),' ') + if (lz .ne. 0) then + if (line(lz:lz+4) .eq. ' zero') then + l=lz+1 + line(1:l)='Z'//line(1:lz) + else + line(1:l)=line(lz+1:l) + l=l-lz + endif + endif + if (index(line(i+j:),':') .ne. 0) then + iostat=1 + else + read(line(i+j:), *, iostat=iostat) val + endif + endif + if (iostat .eq. 0) then + call putval(line(1:l), val) + else + call putval(line(1:l)//'='//line(i+j:), 0.0) + endif + if (line(1:l) .eq. 'wavelength') then + call dat_group(2, putval) + endif + goto 1 + endif + l=index(line, 'Steps:') + if (l .gt. 0) then + do j=1,mcol + values(j)=0 + enddo + read(line(l+6:), *,iostat=iostat) values + do j=1,mcol + if (values(j) .ne. 0) then + xcol0=j+1 + goto 19 + endif + enddo + endif + l=index(line(21:), ',') + if (l .eq. 0) l=10 + xaxis=line(21:20+l-1) +19 continue + + read(lun, '(a)', err=99,end=99) line + l=index(line, 'Mode: ') + if (l .ne. 0) then + preset=line(l+6:) + l=index(preset, ',') + if (l .eq. 0) goto 99 + preset(l:)=' ' + call putval('Preset='//preset, 0.0) + l=index(line, 'Preset') + if (l .eq. 0) goto 99 + read(line(l+6:), *, err=99,end=99) ymon + pol=.false. + else ! polarized scan +22 read(lun, '(a)', err=99,end=99) line + if (line(1:17) .eq. 'zero for plotting') goto 22 + preset='mn' + ymon=0 + pol=.true. + endif + + ipol=1 + yaxis2=' ' + call dat_start_options + i=0 + call dat_str_option('x', xaxis) + yaxis='Counts' + call dat_str_option('y', yaxis) + call dat_str_option('y2', yaxis2) + if (yaxis .eq. '1') then + if (pol) then + yaxis='up' + else + yaxis='Monitor1' + endif + elseif (yaxis .eq. '2') then + if (pol) then + yaxis='dn' + else + yaxis='Monitor2' + endif + elseif (yaxis .eq. '3') then + yaxis='Monitor3' + else if (yaxis .eq. 'Counts') then + if (pol) then + yaxis='up' + yaxis2='dn' + ipol=2 + endif + endif + + read(lun,'(a)',err=99,end=99) line + + i=1 + line(len(line):len(line))=' ' + ncol=0 + ycol=0 + ycol2=0 + pcol=0 + col2=' ' +31 do while (line(i:i) .eq. ' ') + i=i+1 + if (i .gt. len(line)) goto 39 + enddo + l=i + do while (line(i:i) .ne. ' ') + i=i+1 + enddo + ncol=ncol+1 + if (ncol .eq. 2) col2=line(l:i) + if (line(l:i) .eq. yaxis .and. ycol .eq. 0) then + ycol=ncol + elseif (line(l:i) .eq. yaxis2 .and. ycol2 .eq. 0) then + ycol2=ncol + elseif (line(l:i) .eq. preset .or. + 1 line(l:i) .eq. 'Monitor1' .and. preset .eq. 'Monitor') then + pcol=ncol + elseif (line(l:i) .eq. xaxis) then + xcol=ncol + elseif (xcol0 .eq. ncol) then + xaxis0 = line(l:i) + endif + goto 31 + +39 if (ycol .eq. 0) goto 99 + if (xcol .eq. 0) then + if (xcol0 .ne. 0) then + xcol = xcol0 + xaxis = xaxis0 + else + xcol=2 + xaxis=col2 + endif + endif + call dat_group(1, putval) + call putval('XAxis='//xaxis, 0.0) + call putval('YAxis='//yaxis, 0.0) + if (ycol2 .eq. 0) ipol=1 + + l=min(mcol,max(xcol,pcol,ycol,ycol2)) +40 read(lun,'(a)',end=88,err=88) line + if (line .eq. ' ') goto 40 + if (line .eq. 'END-OF-DATA') goto 88 + read(line,*,err=99,end=99) (values(j),j=1,l) + if (nread .ge. nmax) goto 29 + + if (pcol .eq. 0) then + if (ymon .eq. 0) ymon=1. + r=ymon + else + r=values(pcol) + if (r .gt. 0) then + if (ymon .eq. 0) ymon=r + else + if (ymon .eq. 0) ymon=1. + r=ymon + endif + endif + f=ymon/r + if (f .le. 0.0) f=1.0 + + do i=1,ipol + nread=nread+1 + xx(nread)=values(xcol) + if (i .eq. 1) then + y=values(ycol) + else + y=values(ycol2) + endif + if (y .gt. 0) then + s=sqrt(y) ! statistical error of detector + else + s=1 + endif + yy(nread)=y*f + ss(nread)=s*f + ww(nread)=r + enddo + goto 40 + +29 print *,'too many points - truncated' +88 close(lun) + if (ipol .gt. 0) then + call fit_dat_table(1, ipol, (nread+ipol-1)/ipol) + endif + call putval('NP', nread*1.0) + call putval('Monitor', ymon) + return + +99 nread=-2 + rewind lun + print *,'DAT_SICS: error during read' + call putval('Monitor', 0.0) + return + +100 nread=-1 + rewind lun + call putval('Monitor', 0.0) + end diff --git a/gen/dat_spec.f b/gen/dat_spec.f new file mode 100644 index 0000000..e94ecc5 --- /dev/null +++ b/gen/dat_spec.f @@ -0,0 +1,343 @@ + subroutine dat_spec +! ------------------- + + external dat_spec_desc + external dat_spec_opts + external dat_spec_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_spec_desc) + call dat_init_opts(dtype, dat_spec_opts) + call dat_init_read(dtype, dat_spec_read) + end + + + subroutine dat_spec_desc(text) +! ------------------------------ + character*(*) text ! (out) description + +! type description +! ---------------------------------- + text='SPEC spec data format (esrf)' + end + + + subroutine dat_spec_opts +! ------------------------ + print '(x,a)' + 1,'from: first dataset (default: 1)' + 1,'to: last dataset (default: from)' + 1,'x,y,mon: columns to be read (as number or name)' + 1,'space: spaces between header items (sls:1,esrf:2)' + 1,' ' + 1,'err: how to calculate error:' + 1,' err=s for sqrt(y), this is the default' + 1,' err=c for constant value' + 1,' err=p for a factor to be multiplied with y' + 1,'val: value for err=c and err=p' + end + + + subroutine dat_spec_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + integer maxcol, n_nn, n_nl + parameter (maxcol=64,n_nn=1024,n_nl=64) + real values(maxcol) + integer i, i1, i2, idx, l, m, nread0, iset, spc + integer nc, ncol, mcol, xcol, ycol, ycol0 + real r, ymon, errvalue + integer iostat + character line*1024, title*132, errtype*1 + character xaxis*16, yaxis*16, monam*16, xup*16, yup*16, mup*16 + character unam*16, yaxis0*16 + character prefix(n_nl)*4, names(n_nn)*16 + integer nidx(n_nl) + integer nn, nl, ni, j + + read(lun, '(a)',err=100,end=100) line + if (line(1:3) .ne. '#F') goto 100 + read(lun, '(a)',err=100,end=100) line + if (line(1:3) .ne. '#E') goto 100 + read(lun, '(a)',err=100,end=100) line + if (line(1:3) .ne. '#D') goto 100 + read(lun, '(a)',err=100,end=100) title + if (title(1:3) .ne. '#C') goto 100 + call putval('Date='//line(4:), 0.0) + call putval('Title='//title(4:), 0.0) + +!----- options ------ + call dat_start_options + i1=0 + call dat_int_option('from', i1) + i2=0 + call dat_int_option('to', i2) + spc=0 + call dat_int_option('space', spc) + if (spc .le. 0) then + spc=-1 + else + spc=spc-1 + endif + + if (i2 .eq. 0) then + if (i1 .eq. 0) then + i1=1 + i2=999999 + else + i2=i1 + endif + endif + call dat_get_index(idx) + if (idx .ne. 0) then + i1=i1+idx-1 + i2=i1 + endif + xaxis=' ' + call dat_str_option('x', xaxis) + yaxis=' ' + call dat_str_option('y', yaxis) + monam='Monitor' + call dat_str_option('mon', monam) + + call str_upcase(xup, xaxis) + call str_upcase(yup, yaxis) + call str_upcase(mup, monam) + + errtype='s' + call dat_str_option('err', errtype) + call str_upcase(errtype, errtype) + errvalue=1.0 + call dat_real_option('val', errvalue) + if (errvalue .le. 0.0) then + print *,'value for error must be > 0' + errvalue=1.0 + endif + ymon=0 + +!----- end options ------ + + nn=0 + nl=0 +!--- read parameter names --- +5 read(lun, '(a)', err=99, end=50) line + if (nl .ge. n_nl) goto 9 + if (line(1:3) .eq. '#UE') then ! this is not present at ESRF + if (spc .lt. 0) spc = 0 ! assume SLS format (one space as separator) + nl=nl+1 + prefix(nl)='UH'//line(4:5) + else if (line(1:2) .eq. '#O') then + nl=nl+1 + prefix(nl)='P'//line(3:4) + else if (line(1:1) .eq. '#') then + goto 5 + else + goto 9 + endif + if (spc .lt. 0) spc=1 ! of no #UE lines, ESRF format (2 spaces as sep.) + nidx(nl)=nn + line(len(line)-spc:)=' ' ! stopper at end + i=5 +6 continue + do while (line(i:i) .eq. ' ') + i=i+1 + if (i .gt. len(line)) goto 5 + enddo + l=i + do while (line(i:i+spc) .ne. ' ') + i=i+1 + enddo + if (nn .lt. n_nn) then + nn=nn+1 + names(nn)=line(l:i) + endif + goto 6 + +9 continue + nidx(nl+1)=nn + m=0 + nread=0 + +10 read(lun, '(a)', err=99, end=50) line + if (line(1:3) .ne. '#S') goto 10 + read(line(4:), *, err=99, end=99) iset + if (iset .gt. i2) goto 50 + if (iset .lt. i1) goto 10 + + call dat_group(2, putval) +12 read(lun, '(a)', err=99, end=99) line + if (line(1:2) .eq. '#P' .or. line(1:3) .eq. '#UH') then + if (line(1:2) .eq. '#P') then + l=4 + else + l=5 + endif + do i=1,nl + if (prefix(i) .eq. line(2:l)) then + ni=nidx(i+1)-nidx(i) + do j=1,ni + values(j)=0 + enddo + read(line(l:), *, iostat=iostat) (values(j),j=1,ni) + do j=1,ni + call putval(names(nidx(i)+j), values(j)) + enddo + endif + enddo + endif + if (line(1:3) .ne. '#N') goto 12 + + call dat_group(1, putval) + + read(line(4:), *, err=99, end=99) ncol + read(lun, '(a)', err=99, end=99) line + if (line(1:3) .ne. '#L') goto 99 + xcol=0 + mcol=0 + ycol=0 + ycol0=0 + yaxis0=' ' + i=3 + line(len(line)-1:)=' ' + do nc=1,ncol + if (line(i:) .eq. ' ') goto 39 + do while (line(i:i) .eq. ' ') + i=i+1 + enddo + l=i +31 do while (line(i:i+spc) .ne. ' ') + i=i+1 + enddo + call str_upcase(unam, line(l:i-1)) + if (unam .eq. xup) then + xcol=nc + xaxis=line(l:i-1) + endif + if (unam .eq. yup) then + ycol=nc + yaxis=line(l:i-1) + endif + if (ycol .eq. 0 .and. ycol0 .eq. 0) then + if (unam .eq. 'DETECTOR' .or. unam .eq. 'APD') then + ycol0=nc + yaxis0=line(l:i-1) + endif + endif + if (unam .eq. mup) mcol=nc + enddo +39 continue + + if (xcol .eq. 0) then + read(xup, *, iostat=iostat) xcol + endif + if (ycol .eq. 0) then + read(yup, *, iostat=iostat) ycol + endif + if (mcol .eq. 0) then + read(mup, *, iostat=iostat) mcol + endif + + if (xcol .eq. 0) then + xcol=1 + if (xaxis .ne. ' ') then + call str_trim(xaxis, xaxis, l) + print *,'DAT_SPEC: ',xaxis(1:l),' not found, take 1st column' + endif + endif + if (ycol .eq. 0) then + if (ycol0 .eq. 0) then + print *,'DAT_SPEC: column not found: ',yaxis + goto 99 + endif + if (yup .ne. ' ') then + call str_trim(yaxis, yaxis, l) + print *,'DAT_SPEC: ',yaxis(1:l),' not found, take ',yaxis0 + endif + ycol=ycol0 + yaxis=yaxis0 + endif + call putval('XAxis='//xaxis,0.0) + call putval('YAxis='//yaxis,0.0) + l=min(maxcol,max(mcol,xcol,ycol)) + + nread0=nread +40 read(lun, *, err=49,end=49) (values(i),i=1,l) + if (nread .ge. nmax) goto 49 + nread=nread+1 + if (mcol .eq. 0) then + r=1 + else + r=values(mcol) + if (ymon .eq. 0) ymon=r + if (r .eq. 0) r=1 + endif + ww(nread)=r + yy(nread)=values(ycol) + xx(nread)=values(xcol) + goto 40 + +49 m=m+1 + call fit_dat_table(m, 1, nread-nread0) + goto 10 + +50 continue + if (errtype .eq. 'S') then + do i=1,nread + ss(i)=sqrt(max(1.0,yy(i)*errvalue)) + if (ymon .gt. 0) then + yy(i)=yy(i)*ymon/ww(i) + ss(i)=ss(i)*ymon/ww(i) + endif + enddo + else if (errtype .eq. 'P') then + do i=1,nread + ss(i)=yy(i)*errvalue + if (ss(i) .eq. 0.0) ss(i)=1.0 + if (ymon .gt. 0) then + yy(i)=yy(i)*ymon/ww(i) + ss(i)=ss(i)*ymon/ww(i) + endif + enddo + else + if (errtype .ne. 'C') then + print *,'illegal option: err=',errtype + endif + do i=1,nread + ss(i)=errvalue + if (ymon .gt. 0) then + yy(i)=yy(i)*ymon/ww(i) + endif + enddo + endif + + call putval('Monitor', ymon) + close(lun) + return + +99 print *,'DAT_SPEC: error during read' +98 nread=-2 + rewind lun + return + +100 nread=-1 + rewind lun + end diff --git a/gen/dat_table.f b/gen/dat_table.f new file mode 100644 index 0000000..0c445b7 --- /dev/null +++ b/gen/dat_table.f @@ -0,0 +1,468 @@ + subroutine dat_table +c -------------------- + + external dat_table_desc + external dat_table_opts + external dat_table_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_table_desc) + call dat_init_opts(dtype, dat_table_opts) + call dat_init_read(dtype, dat_table_read) + end + + + + subroutine dat_table_desc(text) +c ------------------------------- + character*(*) text ! (out) description + + text='TABLE table format (XY, XYS, XYSM ... see options)' + end + + subroutine dat_table_opts +c -------------------------- + print '(x,a)' + 1,'x: column to be used as x-axis' + 1,'y: column to be used as y-axis' + 1,'s: column to be used as sigma' + 1,'m: column to be used as monitor' + 1,' any column may be specified as' + 1,' - an integer (column number starting from 1)' + 1,' - as a name (if a header is present)' + 1,' - as a float (containing a decimal point)' + 1,' for x, this is a step between equidistant x-values' + 1,' else it is a constant value' + 1,' - an asterisk (*) for a special meaning' + 1,' for x, this is (1,2,3,....)' + 1,' for y, this is 0.0' + 1,' for s, this is sqrt(y)' + 1,' for m, this is 1.0' + 1,' the defaults are' + 1,' x=*,y=1,s=*,m=* for 1 column' + 1,' x=1,y=2,s=*,m=* for 2 columns' + 1,' x=1,y=2,s=3,m=* for 3 columns or more' +! 1,' ' +! 1,'n: n=0 y and s are already normalized (default)' +! 1,' n=1 y and s are not yet normalized by monitor' + end + + + subroutine dat_table_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + integer mcol, rows + parameter (mcol=64, rows=30) + + character header*1024, elem*64 + character line*1024 + character labx*80, laby*80, labs*80, labw*80 + real values(mcol), ymon + integer i, j, pos +! integer normalize + integer nrows, njunk, n, ncol, lin, lin0, lin1, iostat + integer ncolmax + integer ncolx, ncoly, ncols, ncolw + integer colx(mcol), coly(mcol), cols(mcol), colw(mcol) + real valx, valy, vals, valw, x, y, s, w + integer errcnt, errlin, errcol, s0cnt + integer nset, lastcol + +! a table block should appear before (rows=30) junk lines +! junk lines are lines that does contain something else than numbers, +! comment lines and empty lines not counted. +! if a the file does not contain more junk lines than the last table block, +! it is considered as a table file. The last table block is used, or the +! first block with at least (rows=30) lines. +! the column header line is the last line before the used table block +! this may also be a comment line + +! check the above conditions + nread=0 + lin=0 + lin0=0 + lin1=0 + ncol=0 + ncolmax=0 + nrows=0 + njunk=0 + ymon=0 + +1 read(lun,'(a)',err=98,end=19) line + lin=lin+1 + if (line(1:1) .eq. '#') then + if (forced .lt. 0) goto 100 + lin1=lin + goto 1 + endif + if (line .eq. ' ') goto 1 + j=nread+1 + pos=1 + iostat=0 + n=0 + i=0 + do while (iostat .eq. 0) + call str_get_elem(line, pos, elem) + if (elem .eq. ' ') then + n=i + iostat=1 + else if (line(1:1) .gt. '9') then + iostat=1 + else + read(elem, *, iostat=iostat) valx + i=i+1 + endif + enddo + if (n .eq. 0) then ! a junk line + if (forced .lt. 0) goto 100 + if (nrows .gt. 3 .and. forced .le. 0) goto 100 + njunk=njunk+nrows+1 + if (njunk .gt. rows .and. forced .le. 0) goto 100 + nrows=0 + lin0=lin + lin1=0 + else + if (lin1 .ne. 0) then + lin0=lin1 + lin1=0 + endif + nrows=nrows+1 + if (n .ne. ncol) then + if (ncol .ne. 0 .and. nrows .gt. 3 .and. forced .le. 0) + 1 goto 100 + ncol=n + endif + if (nrows .gt. 3 .and. n .gt. ncolmax) ncolmax=n + if (nrows .gt. rows) goto 20 + endif + goto 1 + +19 if (nrows .lt. njunk .and. forced .le. 0) goto 100 + +20 continue + rewind lun + + if (ncolmax .eq. 0) then + ncolmax = n + endif + if (ncolmax .gt. mcol) then + print *,'DAT_TABLE: use only the first',mcol,' columns' + ncolmax=mcol + endif + do i=1,lin0 + read(lun,'(a)',err=98,end=98) line + enddo + lin=lin0 + if (line(1:1) .eq. '#') then + line(1:1)=' ' + endif + header=line + + call dat_start_options + + call dat_table_col_options(header + 1 , 'x', colx, mcol, ncolx, valx, labx) + call dat_table_col_options(header + 1 , 'y', coly, mcol, ncoly, valy, laby) + call dat_table_col_options(header + 1 , 's', cols, mcol, ncols, vals, labs) + call dat_table_col_options(header + 1 , 'm', colw, mcol, ncolw, valw, labw) + if (ncolx .lt. 0 .or. ncoly .lt. 0 .or. + 1 ncols .lt. 0 .or. ncolw .lt. 0) goto 99 + +! normalize=0 +! call dat_int_option('n', normalize) + + if (ncolx .eq. 0) then + ncolx=1 + if (ncolmax .eq. 1) then + colx(1)=-1 + labx='linear' + else + colx(1)=1 + labx='col1' + endif + endif + if (ncoly .eq. 0) then + ncoly=1 + if (ncolmax .lt. 2) then + coly(1)=1 + laby='col1' + else + coly(1)=2 + laby='col2' + endif + endif + if (ncols .eq. 0) then + ncols=1 + if (ncolmax .lt. 3) then + cols(1)=-1 + labs='sqrt' + else + cols(1)=3 + labs='col3' + endif + endif + if (ncolw .eq. 0) then + ncolw=1 + colw(1)=-1 ! monitor 1.0 + labw=' ' + endif + + lastcol=0 + do i=1,ncolx + lastcol=max(lastcol,colx(i)) + enddo + do i=1,ncoly + lastcol=max(lastcol,coly(i)) + enddo + do i=1,ncols + lastcol=max(lastcol,cols(i)) + enddo + do i=1,ncolw + lastcol=max(lastcol,colw(i)) + enddo + + if (lastcol .gt. ncolmax) then + print *,'DAT_TABLE: column ',lastcol,' does not exist' + goto 99 + endif + if (lastcol .eq. 0) then + print *,'DAT_TABLE: ignoring all columns' + endif + + call putval('XAxis='//labx, 0.0) + call putval('YAxis='//laby, 0.0) + call putval('Sigma='//labs, 0.0) + call putval('Weight='//labw, 0.0) + nset=max(ncolx,ncoly,ncols,ncolw) + do i=ncolx+1,nset + colx(i)=colx(ncolx) + enddo + do i=ncoly+1,nset + coly(i)=coly(ncoly) + enddo + do i=ncols+1,nset + cols(i)=cols(ncols) + enddo + do i=ncolw+1,nset + colw(i)=colw(ncolw) + enddo + +! call dat_group(2, putval) +! call putval('XAxis='//xaxis, 0.0) +! call putval('YAxis='//yaxis, 0.0) + call dat_group(1, putval) + + nrows=0 + errcnt=0 + s0cnt=0 +4 continue + read(lun,'(a)',err=99,end=90) line + lin=lin+1 + if (line(1:1) .eq. '#') goto 4 + if (line .eq. ' ') goto 4 + pos=1 + do j=1,lastcol + call str_get_elem(line, pos, elem) + values(j)=0.0 + read(elem, *, iostat=iostat) values(j) + if (iostat .ne. 0) then + if (errcnt .eq. 0) then + errlin=lin + errcol=j + endif + errcnt=errcnt+1 + endif + enddo + nrows=nrows+1 + do i=1,nset + + if (colx(i) .eq. -1) then ! linear starting from 1 + x=nrows + else if (colx(i) .eq. 0) then + x=(nrows-1)*valx + else + x=values(colx(i)) + endif + + if (coly(i) .eq. -1) then ! not really useful: constant 0 + y=0.0 + else if (coly(i) .eq. 0) then + y=valy + else + y=values(coly(i)) + endif + + if (cols(i) .eq. -1) then ! sqrt(y) + if (y .lt. 1.0) then + s=1.0 + else + s=sqrt(y) ! statistical counting error + endif + else if (cols(i) .eq. 0) then + s=vals + else + s=values(cols(i)) + endif + + if (colw(i) .eq. -1) then ! fixed weight + w=1.0 + else if (colw(i) .eq. 0) then + w=valw + else + w=values(colw(i)) + endif + if (w .le. 0) w=1.0 + if (ymon .eq. 0) ymon=w + + if (nread .ge. nmax) goto 29 + if (s .le. 0) then + s0cnt=s0cnt+1 + else + nread=nread+1 + xx(nread)=x + yy(nread)=y*ymon/w + ss(nread)=s*ymon/w + ww(nread)=w + endif + enddo + goto 4 + +90 close(lun) + if (s0cnt .gt. 0) then + print *,'DAT_TABLE: skipped',s0cnt + 1 ,' lines with sigma = 0' + endif + if (errcnt .gt. 0) then + print *,'DAT_TABLE: found',errcnt,'errors, first at line ' + 1 ,errlin ,' column ', errcol + endif + call putval('Monitor', ymon) + if (nset .gt. 1) then + call fit_dat_table(1, nset, nrows) + endif + return + +29 print *,'DAT_TABLE: too many points' + goto 100 + +98 if (forced .le. 0) goto 100 +99 print *,'DAT_TABLE: error during read' + rewind lun + nread=-2 + return +100 nread=-1 + rewind lun + end + + + subroutine dat_table_col_options(header, name, cols, mcols, ncols + 1 , val, axlabel) + + integer mcols, ncols + integer cols(mcols) + character name*(*), header*(*), axlabel*(*) + real val + + character colname*64, axname*64 + integer idx, l, iax, iostat, ll + + integer str_find_elem + external str_find_elem + + colname=' ' + ncols=0 + iax=0 + axlabel=' ' + ll=0 + call dat_str_option(name, colname) + if (colname .eq. ' ') then + iax=1 + write(axname, '(a,i1)') name, iax + call dat_str_option(axname, colname) + endif + do while (colname .ne. ' ') + call str_trim(colname, colname, l) + if (colname .eq. '*') then + ncols=ncols+1 + cols(ncols)=-1 ! special meaning + if (name .eq. 'x') then + colname='linear' + l=6 + else if (name .eq. 'y') then + colname='0.0' + l=3 + else if (name .eq. 's') then + colname='sqrt(y)' + l=7 + else if (name .eq. 'm') then + colname='1.0' + l=3 + endif + goto 10 + endif + idx=0 + if (index(colname, '.') .ne. 0) then + read(colname, *, iostat=iostat) val ! try to get colname as a real + if (iostat .eq. 0) then + ncols=ncols+1 + cols(ncols)=0 ! special value + goto 10 + endif + else + read(colname, *, iostat=iostat) idx ! try to get colname as an int + endif + if (iostat .ne. 0) then + idx=str_find_elem(header, colname) + else + colname='col'//colname(1:l) + l=l+3 + endif + if (idx .eq. 0) then + print *,'DAT_TABLE: column ',colname(1:l),' not found' + goto 9 + endif + ncols=ncols+1 + cols(ncols)=idx +10 continue + call str_append(axlabel, ll, colname(1:l)//',') + colname=' ' + if (iax .ne. 0) then + iax=iax+1 + if (iax .le. 9) then + write(axname, '(a,i1)') name, iax + call dat_str_option(axname, colname) + else if (iax .le. 99) then + write(axname, '(a,i2)') name, iax + call dat_str_option(axname, colname) + endif + endif + enddo + if (ll .gt. 1) then + axlabel(ll:ll)=' ' + endif + RETURN + +9 ncols=-1 + end diff --git a/gen/dat_tascom_dir.c b/gen/dat_tascom_dir.c new file mode 100644 index 0000000..a82168d --- /dev/null +++ b/gen/dat_tascom_dir.c @@ -0,0 +1,223 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "myc_str.h" +#include "myc_fortran.h" + +typedef struct NameList { + struct NameList *next; + int l; + char name[16]; +} NameList; + +typedef struct { + char path[PATH_MAX]; + int start; + time_t newestTime; + char newestPath[PATH_MAX]; + char newestItem[PATH_MAX]; + int numor; + int cnt; + int mode; + int level; + int maxlevel; +} TascomDirScan; + +void TascomScanDir(TascomDirScan *scan, int length, char *name) { + DIR *dir; + struct dirent *ent; + struct stat st; + int l, n; + char rp[PATH_MAX]; + int cnt; + char *ename; + NameList *list, *p, *q; + + l = strlen(name); + if (length+l > PATH_MAX-2) { + printf(" filename too long\n"); + exit(1); + } + if (strcmp(name, ".") != 0) { + scan->path[length]='/'; + length++; + strcpy(scan->path+length, name); + length += l; + } + realpath(scan->path, rp); + if (strcmp(scan->path, rp) != 0) return; /* check for symbolic link */ + if (0>stat(scan->path, &st)) return; + if (! S_ISDIR(st.st_mode)) return; + dir=opendir(scan->path); + if (dir == NULL) return; + ent = readdir(dir); + cnt = scan->cnt; + list = NULL; + while (ent != NULL) { + ename = ent->d_name; + if (strchr(ename,'.') == NULL) { + scan->level++; + TascomScanDir(scan, length, ename); + scan->level--; + scan->path[length+1]='\0'; + } else { + l = strlen(ename); + if (l == 12 && strcmp(ename+8,".dat") == 0) { + l = 7; + while (l>0 && ename[l] >= '0' && ename[l] <= '9') { + l--; + } + l++; + if (l != 8) { + p = list; + while (p != NULL && (p->l != l || strncmp(p->name, ename, l) != 0)) { + p = p->next; + } + if (!p) { + p = calloc(1, sizeof *p); + p->next = list; + list = p; + p->l = l; + if (scan->level > scan->maxlevel) scan->maxlevel = scan->level; + } + if (strcmp(ename, p->name) > 0) { + strncpy(p->name, ename, 12); + p->name[12]='\0'; + } + } + } + } + ent = readdir(dir); + } + p = list; + while (p != NULL) { + scan->path[length]='/'; + scan->path[length+1]='\0'; + str_copy(rp, scan->path); + str_append(rp, p->name); + n=0; + sscanf(p->name + p->l, "%d", &n); + if (stat(rp, &st) >= 0) { + if (st.st_mtime > scan->newestTime) { + scan->newestTime = st.st_mtime; + str_copy(scan->newestPath, rp); + snprintf(scan->newestItem, sizeof scan->newestItem, + "%.*s%.*s", length-scan->start+1, scan->path+scan->start, p->l, p->name); + scan->numor = n; + } + } + if (scan->mode == 0) { + printf(" %.*s%.*s (%d)\n", length-scan->start+1, scan->path+scan->start, p->l, p->name, n); + } + scan->cnt++; + q = p; + p = p->next; + free(q); + } + if (scan->mode == 1 && scan->level == 1 && scan->cnt > cnt) { + scan->path[length]='\0'; + printf(" %s\n", scan->path + scan->start); + } +} + +char *TascomGetDir(char *path) { + char answer[128]; + char *nl, *slash; + DIR *dir; + static TascomDirScan scan; + static char subdir[PATH_MAX]; + int start; + + realpath(path, scan.path); + dir=opendir(scan.path); + if (dir == NULL) return NULL; + closedir(dir); + start = strlen(scan.path) + 1; + scan.start = start; + scan.newestTime = 0; + scan.newestPath[0] = '\0'; + scan.mode = 1; + scan.level = 0; + scan.maxlevel = 0; + scan.cnt = 0; + printf("\n User directories on %s:\n", path); + printf("\n"); + TascomScanDir(&scan, start-1, "."); + slash = strchr(scan.newestPath+scan.start+1, '/'); + if (slash) *slash = '\0'; + + printf("\n user directory [%s]: ", scan.newestPath+scan.start); + answer[0]='\0'; + fgets(answer, sizeof answer, stdin); + nl = strchr(answer, '\n'); + if (nl) *nl='\0'; + if (answer[0] == '\0') { + str_copy(subdir, scan.newestPath+start); + } else { + scan.path[start]='/'; + scan.path[start+1]='\0'; + str_append(scan.path, answer); + dir = opendir(scan.path); + if (!dir) { + perror(answer); + return ""; + } + closedir(dir); + str_copy(subdir, answer); + } + printf("\n"); + + scan.start = start + strlen(subdir) + 1; + scan.newestTime = 0; + scan.newestPath[0] = '\0'; + scan.mode = 0; + scan.level = 0; + scan.maxlevel = 0; + scan.cnt = 0; + TascomScanDir(&scan, start-1, subdir); + + scan.newestPath[scan.start+strlen(scan.newestItem)]='\0'; + printf("\n"); + if (scan.cnt == 0) { + return ""; + } + if (scan.cnt == 1) { + return scan.newestPath + start; + } + printf(" "); + if (scan.maxlevel > 0) { + printf("(subdirectory/)"); + } + printf("filename [%s]: ", scan.newestItem); + answer[0]='\0'; + fgets(answer, sizeof answer, stdin); + printf("\n"); + nl = strchr(answer, '\n'); + if (nl) *nl='\0'; + if (answer[0] == '\0') { + return scan.newestPath + start; + } else { + scan.path[scan.start+1]='\0'; + str_append(scan.path, answer); + return scan.path + start; + } +} + +void F_FUN(dat_tascom_datadir)(F_CHAR(root), F_CHAR(path) F_CLEN(root) F_CLEN(path)) { + char rootc[PATH_MAX]; + char *out; + + STR_TO_C(rootc, root); + out=TascomGetDir(rootc); + if (out) { + STR_TO_F(path, out); + } else { + STR_TO_F(path, "0"); + } +} diff --git a/gen/dat_tasmad.f b/gen/dat_tasmad.f new file mode 100644 index 0000000..40df371 --- /dev/null +++ b/gen/dat_tasmad.f @@ -0,0 +1,467 @@ + subroutine dat_tasmad +c --------------------- + external dat_tasmad_desc + external dat_tasmad_opts + external dat_tasmad_read + external dat_get_datanumber + + integer dtype/0/ + + call dat_init_desc(dtype, dat_tasmad_desc) + call dat_init_opts(dtype, dat_tasmad_opts) + call dat_init_read(dtype, dat_tasmad_read) + call dat_init_high(dtype, dat_get_datanumber) + end + + + subroutine dat_tasmad_desc(text) +c -------------------------------- + character*(*) text ! (out) description + + text='TASMAD DrueChaL, TASP and ILL TAS' + end + + subroutine dat_tasmad_opts +c -------------------------- + print '(x,a)' + 1,'p1,p2: polarisation' + 1,'x: column to be used as x-axis *' + 1,'y: column to be used as y-axis (default: CNTS)' + 1,'mon: column to be used as Monitor (default: M1 or TIME)' + end + + + subroutine dat_tasmad_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + real none + integer mcol + parameter (none=-8.7654e29, mcol=32) + + character line*160, preset*4, old*6, col2*8 + real values(mcol), r, f, s, y, ymon, tm, ts, td + integer r1,r2 + integer i,j,l,ncol,ccol,pcol,xcol,tcol,pacol + integer ip,ip1,ip2 + character word*32 + integer muco, mubgr + real codemu + real mucode(36) + + external dat_tasmad_val + +! common + real tt, tem, mon, tim, qe(4) + character xaxis*8, yaxis*8, monam*8 + integer mode + common /dat_tasmad_com/tt, tem, mon, tim, mode, xaxis, qe + + + xaxis=' ' + preset=' ' + old=' ' + nread=0 + read(lun,'(a)',err=100,end=100) line + if (line(1:16) .eq. 'RRRRRRRRRRRRRRRR') then +1 read(lun,'(a)',err=100,end=100) line + if (line(1:16) .ne. 'VVVVVVVVVVVVVVVV') goto 1 + read(lun,'(a)',err=100,end=100) line + elseif (line(1:7) .ne. 'INSTR: ') then + if (forced .le. 0) goto 100 + endif + tt=none + tem=none + mon=none + tim=none + mubgr=-1 + muco=0 + call dat_delimiters(',', '=', '''') +12 if (line(1:6) .eq. 'INSTR:') then + call dat_group(1, putval) + call putval('Instrument='//line(8:19), 0.0) + elseif (line(1:6) .eq. 'USER_:') then + call dat_group(1, putval) + call putval('User='//line(8:80), 0.0) + elseif (line(1:6) .eq. 'DATE_:') then + call dat_group(1, putval) + call putval('Date='//line(8:80), 0.0) + elseif (line(1:6) .eq. 'TITLE:') then + call dat_group(1, putval) + call putval('Title='//line(8:80), 0.0) + elseif (line(1:6) .eq. 'STEPS:' .or. + 1 line(1:6) .eq. 'POSQE:' .or. + 1 line(1:6) .eq. 'VARIA:' .or. + 1 line(1:6) .eq. 'ZEROS:' .or. + 1 line(1:6) .eq. 'PARAM:') then + call dat_group(2, putval) + old=line(1:6) + j=7 + mode=index('SZ',line(1:1)) ! mode=0: normal, 1: steps, 2: zeros (see dat_tasmad_val) + call dat_intprt(line(7:), dat_tasmad_val, putval) + + elseif (line(1:6) .eq. 'DATA_:') then + goto 20 + elseif (line(1:6) .eq. 'EXPNO:' .or. + 1 line(1:6) .eq. 'LOCAL:' .or. + 1 line(1:6) .eq. 'COMND:') then + call dat_group(2, putval) + call str_trim(line, line, l) + if (l .ge. 8) call putval(line(1:5)//'='//line(8:l), 0.0) + elseif (line(1:6) .eq. 'POLAN:') then + call str_trim(line, line, l) + if (l .lt. len(line)) l=l+1 + if (muco .ge. 0) then + j=1 + call str_get_elem(line(7:l), j, word) + if (word .ne. 'muco' .and. word .ne. '#muco') then + if (word .eq. '#signal') then + call dat_group(1, putval) + call putval('mukind=signal',0.0) + mubgr=0 + goto 19 + endif + if (word .eq. '#background') then + call dat_group(1, putval) + call putval('mukind=background',0.0) + mubgr=1 + goto 19 + endif + muco=-1 + goto 19 + endif + if (muco .eq. 0) then + if (mubgr .eq. -1) then + mubgr = 0 + call dat_group(1, putval) + call putval('mukind=single', 0.0) + endif + do i=1,36 + mucode(i) = 0 + enddo + endif + muco=muco+1 + if (muco .gt. 36) then + if (muco .eq. 37) then + print *,'DAT_TASMAD: too many POLAN muco lines' + endif + goto 19 + endif + call str_get_elem(line(7:l), j, word) + if (word(1:1) .eq. '-') then + codemu=3.0 + word=word(2:) + else + codemu=1.0 + endif + i = index('x y z ', word(1:2)) + if (i .eq. 0) then + print *,'DAT_TASMAD: 1st arg bad ',line(7:l) + endif + ! increase codemu by 0, 30 or 60 for x, y or z + codemu = codemu + (i - 1) * 15 + call str_get_elem(line(7:l), j, word) + if (word(1:1) .eq. '-') then + codemu=codemu+1 + word=word(2:) + endif + i = index('x y z ', word(1:2)) + if (i .eq. 0) then + print *,'DAT_TASMAD: 2nd arg bad ',line(7:l) + endif + ! increase codemu by 10, 20 or 30 for x, y or z + mucode(muco) = codemu + mubgr * 0.1 + (i + 1) * 5 + +c the coding for the x-value ip.b is: +c where i is 1..9 for xx, yx, yz, zy, yy, zy, xz, yz, zz +c p is 1..4 for ++, +-, -+, -- +c b is 0 for signal and 1 for background + + endif + elseif (line(1:6) .ne. 'FILE_:' .and. line(1:6) .ne. 'FORMT:' + 1 .and. line(1:6).ne.' ') then +! if (line(6:6) .ne. ':') goto 100 + call str_trim(line, line, l) + print *,'DAT_TASMAD: superflous line: ',line(1:l) + endif +19 continue + read(lun,'(a)',err=99,end=99) line + goto 12 + +20 continue + call dat_group(1, putval) + ymon=0 + if (mon .eq. none) then + if (tim .eq. none) then + print *,'DAT_TASMAD: neither TI nor MN present' + goto 100 + endif + ymon=tim + preset='TIME' + call putval('Preset=TIME', 0.0) + else + ymon=mon + preset='M1' + call putval('Preset=M1', 0.0) + endif + +!----- options ------ + yaxis=' ' + monam=' ' + call dat_start_options + r1=0 + call dat_int_option('p1', r1) + r2=0 + call dat_int_option('p2', r2) + call dat_str_option('x', xaxis) + call dat_str_option('y', yaxis) + call dat_str_option('mon', monam) + + call str_upcase(xaxis, xaxis) + call str_upcase(yaxis, yaxis) + call str_upcase(monam, monam) +!----- end options ------ + + if (monam .eq. ' ') then + monam=preset + elseif (preset .ne. monam) then + ymon=0 + endif + +21 read(lun,'(a)',err=99,end=99) line + if (line .eq. ' ') goto 21 + i=1 + line(len(line):len(line))=' ' + ncol=0 + ccol=0 + pcol=0 + xcol=0 + tcol=0 + pacol=0 + col2=' ' + if (yaxis .eq. ' ') yaxis='CNTS' +31 do while (line(i:i) .eq. ' ') + i=i+1 + if (i .gt. len(line)) goto 39 + enddo + l=i + do while (line(i:i) .ne. ' ') + i=i+1 + enddo + ncol=ncol+1 + if (ncol .eq. 2) col2=line(l:i) + if (line(l:i) .eq. yaxis) ccol=ncol + if (line(l:i) .eq. monam) pcol=ncol + if (line(l:i) .eq. xaxis) xcol=ncol + if (line(l:i) .eq. 'TEM') tcol=ncol + if (line(l:i) .eq. 'TT' .and. tcol .eq. 0) tcol=ncol + if (line(l:i) .eq. 'PAL') pacol=ncol + goto 31 + +39 if (ccol .eq. 0) then + print *,'no values found for ',yaxis + goto 99 + endif + if (pcol .eq. 0) then + if (monam .eq. ' ') monam='Monitor' + print *,'no values found for ',monam + goto 99 + endif + if (xcol .eq. 0) then + if (xaxis .ne. ' ') then + print *,'no values found for ',xaxis,', take ',col2 + endif + xcol=2 + xaxis=col2 + endif + + if (pacol .ne. 0) then + if (r1 .gt. 9 .or. r2 .gt. 9) then + r1=0 + print *,'DAT_TASMAD: illegal PAL index' + elseif (r1 .le. 0) then + r1=0 + else + line(1:3)=char(ichar('0')+r1) + if (r2 .eq. r1) r2=0 + if (r2 .ne. 0) then + line(2:3)=','//char(ichar('0')+r2) + endif + call putval('Range='//line(1:3),0.0) + call putval('Pal',0.1*r1+0.01*r2) + endif + endif + call putval('XAxis='//xaxis, 0.0) + call putval('YAxis=Intensity', 0.0) + call dat_group(1, putval) + + tm=0 + ts=0 + l=min(mcol,max(xcol,pcol,ccol,tcol)) + ip=0 + ip1=0 + ip2=0 +40 read(lun,*,err=89,end=88) (values(j),j=1,l) + if (pacol .ne. 0) then + if (r1 .eq. 0) then + ip=nint(values(pacol)) + else + ip=0 + if (abs(values(pacol)-r1) .gt. 1e-3 .and. + 1 abs(values(pacol)-r2) .gt. 1e-3) goto 40 ! do not read when PAL value does not match + endif + endif + if (nread .ge. nmax) goto 29 + y=values(ccol) + r=values(pcol) + if (ymon .eq. 0) then + ymon=r + if (r .eq. 0) r=1. + endif + if (r .le. 0.0) r=ymon + f=ymon/r + if (f .le. 0.0) f=1.0 + if (y .gt. 0) then + s=sqrt(y) ! statistical error of detector + else + s=1 + endif + nread=nread+1 + if (ip .ne. 0) then + ip1=ip1+1 + if (ip .ne. ip1) then + if (ip2 .eq. 0) then + ip2=ip1-1 + elseif (ip .ne. 1 .and. ip2 .ne. ip1-1) then + print *,'DAT_TASMAD: PAL code not in order' + ip2=1 + endif + ip1=1 + endif + endif + if (muco .ne. 0 .and. xcol .eq. pacol) then + xx(nread) = mucode(nint(values(pacol))) + else + xx(nread)=values(xcol) + endif + yy(nread)=y*f + ss(nread)=s*f + ww(nread)=r + if (tcol .ne. 0) then + tt=values(tcol) + td=(tt-tm)/nread + tm=tm+td ! mean temp. + ts=ts+(tt-tm)**2+td*td*(nread-1) ! sum of (temp(i)-mean)**2 +c print *,'temp',tt,tm,ts + endif + goto 40 + +88 close(lun) + if (ip2 .ne. 0) then + call fit_dat_table(1, ip2, (nread+ip2-1)/ip2) + endif + call putval('Monitor', ymon) + if (tcol .ne. 0) then + call putval('Temp', tm) + if (nread .gt. 1) call putval('dTemp', sqrt(ts/(nread-1))) + tm = tt + elseif (tem .eq. none .and. tt .ne. none) then + call putval('Temp', tt) + endif + if (muco .ne. 0) then + call dat_group(3, putval) + if (mubgr .eq. 1) then + call putval('QH_B', qe(1)) + call putval('QK_B', qe(2)) + call putval('QL_B', qe(3)) + call putval('EN_B', qe(4)) + call putval('TEMP_B', tm) + else + call putval('QH_S', qe(1)) + call putval('QK_S', qe(2)) + call putval('QL_S', qe(3)) + call putval('EN_S', qe(4)) + call putval('TEMP_S', tm) + endif + endif + return + +89 print *,'DAT_TASMAD: error at point ',nread + goto 40 +29 print *,'DAT_TASMAD: too many points' + goto 100 +99 print *,'DAT_TASMAD: error during read' + rewind lun + nread=-2 + return + +100 rewind lun + nread=-1 + end + + + subroutine dat_tasmad_val(str, val, putval) + + character*(*) str + real val + external putval + + integer i + + real tt, tem, mon, tim, qe(4) + character xaxis*8, zstr*8 + integer mode + common /dat_tasmad_com/tt, tem, mon, tim, mode, xaxis, qe + + if (val .eq. 0) then + i=index(str, '=') + else + i=0 + endif + if (i .eq. 0) then ! numeric + if (mode .eq. 1) then ! steps + if (val .ne. 0 .and. xaxis .eq. ' ') then ! get first step not zero + xaxis=str(2:) + endif + elseif (mode .eq. 2) then ! zeros + zstr(1:1)='Z' + zstr(2:)=str + call putval(zstr, val) + return + elseif (str .eq. 'TT') then + tt=val + elseif (str .eq. 'Temp') then + tem=val + elseif (str .eq. 'MN' .or. str .eq. 'mn') then + mon=val + elseif (str .eq. 'TI' .or. str .eq. 'ti') then + tim=val + elseif (str .eq. 'QH') then + qe(1)=val + elseif (str .eq. 'QK') then + qe(2)=val + elseif (str .eq. 'QL') then + qe(3)=val + elseif (str .eq. 'EN') then + qe(4)=val + endif + endif + call putval(str, val) + end diff --git a/gen/dat_utils.f b/gen/dat_utils.f new file mode 100644 index 0000000..94f049b --- /dev/null +++ b/gen/dat_utils.f @@ -0,0 +1,626 @@ + subroutine dat_filelist(file_list) + + include 'dat_utils.inc' + + character*(*) file_list + + lpos=0 + filelist=file_list + end + + + subroutine dat_init_list + + include 'dat_utils.inc' + + call dat_init + lout=0 + end + + + subroutine dat_read_next(putval, nmax, nread, xx, yy, ss, ww) + + external putval + integer nread + integer nmax ! max. number of points + real xx(nmax) ! x-values + real yy(nmax) ! y-values + real ss(nmax) ! sigma + real ww(nmax) ! weights + + include 'dat_utils.inc' + logical silent + + call dat_init + call dat_get_silent(silent) +10 if (lpos .ge. len(filelist)) then + nread=-1 + else + if (nmax .eq. 0) then + print *,'no more datapoints accepted' + nread=0 + else + if (silent) call dat_silent + call dat_open_next(filelist, lpos, outlist, lout + 1 , putval, nmax, nread, xx, yy, ss, ww) + endif + if (nread .le. 0) then + call sym_purge(1) ! a little hack + goto 10 + endif + endif + end + + + subroutine dat_get_filelist(file_list) + + character*(*) file_list + include 'dat_utils.inc' + + if (lout .lt. 2) then + file_list=' ' + else + file_list=outlist(1:lout-1) + endif + end + + + subroutine dat_read_all(filename, putval, nread, nmax,xx,yy,ss,ww) + + character filename*(*) + external putval + integer nread + integer nmax ! max. number of points + real xx(nmax) ! x-values + real yy(nmax) ! y-values + real ss(nmax) ! sigma + real ww(nmax) ! weights + + include 'dat_utils.inc' + + integer n,k + + call dat_init + lpos=0 + lout=0 + k=0 +1 if (k .ge. nmax) then + print *,'no more datapoints accepted' + n=0 + else + call dat_open_next(filename, lpos, outlist, lout + 1 , putval, nmax-k, n, xx(k+1),yy(k+1),ss(k+1),ww(k+1)) + endif + if (n .le. 0) goto 1 + k=k+n + if (lpos .lt. len(filename)) goto 1 + if (lout .gt. 1) then + print *,'files read: ',outlist(1:lout-1) + nread=k + else + print *,'no files read' + nread=-1 + endif + end + + + subroutine dat_put_filelist(filename) + + character filename*(*) + + include 'dat_utils.inc' + integer n + + + + external dat_put_none + + + call dat_init + lpos=0 + lout=0 +1 call dat_open_next(filename, lpos, outlist, lout + 1 , dat_put_none, 0, n, 0.0, 0.0, 0.0, 0.0) ! check syntax only + if (lpos .lt. len(filename)) goto 1 + end + + + subroutine dat_next_filename(filename, len_name) + + character filename*(*) + integer len_name + integer n + + + include 'dat_utils.inc' + + + external dat_put_none + + + if (lpos .ge. len(filelist)) then + len_name=0 + return + endif + call dat_open_next(filelist, lpos, outlist, lout + 1 , dat_put_none, 0, n, 0.0, 0.0, 0.0, 0.0) ! syntax only + call dat_get_filename(filename, len_name) + end + + + subroutine dat_group(show, putval) + + integer show + external putval + + call putval('ShowLevel', float(show)) + end + + + subroutine dat_put_none(name, value) +c +c dummy routine +c + character name*(*) + real value + end + + + subroutine dat_put_one(name, value) + +c put a real value: NAME must not contain '=' +c +c put a string value: NAME must contain '=' +c syntax name=text, VALUE must be 0.0 + + character name*(*), text*(*) + real value + + integer i + character name0*32/' '/, text0*80 + save name0, text0 + + i=index(name, '=') + if (i .gt. 1 .and. i .lt. len(name)) then + name0=name(1:i-1) + text0=name(i+1:) + endif + return + + entry dat_get_one(name, text) + + name=name0 + text=text0 + name0=' ' + end + + + subroutine dat_insert_year(str, year, ok) + + character str*(*) + integer year + logical ok + + integer i,y,m,d + + ok=.false. +1 i=index(str,'%%') + if (i .ne. 0) then + if (year .eq. 0) then + call sys_date(y,m,d) + else + y=year + endif + if (str(i:min(i+3,len(str))) .eq. '%%%%') then + write(str(i:i+3), '(i4.4)') mod(y,10000) + else + write(str(i:i+1), '(i2.2)') mod(y,100) + endif + ok=.true. + goto 1 + endif + end + + + subroutine dat_set_options(options) + + character options*(*) + character defopt*256/' '/ + integer leng/0/, deflen/1/ + + leng=0 + call dat_insert_options(options, leng) + if (defopt(1:deflen) .ne. ' ') then + call dat_insert_options(defopt(1:deflen), leng) + endif + return + + + entry dat_def_options(options) + +! set default options + + call str_trim(defopt, options, deflen) + return + + + entry dat_get_def_options(options) + + options=defopt + end + + subroutine dat_insert_options(options, leng) + + character name*(*), value*(*), options*(*) + integer leng + + character opt*256/' '/ + integer idx/0/ + integer nam1(32), nam2(32) + integer val1(32), val2(32) + integer cnt(32) + character nam*16 + integer i,j,nopt,mopt,found,named + integer start,ende + save mopt,nopt,nam1,nam2,val1,val2,cnt + + if (leng .eq. 0) then + opt=' ' + leng=1 + named=0 + nopt=0 + mopt=0 + else + mopt=nopt + endif + + start=0 + ende=0 + do while (ende .ge. 0) + if (nopt .ge. 32) then + print *,'too many options, truncated' + return + endif + + call str_split(options, ',', start, ende) + if (start .le. ende) then + call str_first_nonblank(options(start:ende), j) + if (j .gt. 0) start=start+j-1 + endif + if (start .le. ende) then + i=index(options(start:ende), '=') + if (i .eq. 0) then + if (options(start:ende) .ne. ' ' .or. start .gt. 1) then + if (named .ne. 0) then + print *,'unnamed options must appear first: ',options + endif + nopt=nopt+1 + nam1(nopt)=1 + nam2(nopt)=1 + val1(nopt)=leng+1 + call str_append(opt, leng, options(start:ende)) + val2(nopt)=leng +! print *,'unnamed "',options(start:ende),'"' + endif + else + named=1 + if (i .eq. 1) then + print *,'syntax error in options: ',options(start:ende) + else + nopt=nopt+1 + nam1(nopt)=leng+1 + call str_append(opt, leng, options(start:start+i-2)) + nam2(nopt)=leng + call str_upcase(opt(nam1(nopt):leng),opt(nam1(nopt):leng)) + if (start+i .le. ende) then + val1(nopt)=leng+1 + call str_append(opt, leng, options(start+i:ende)) + val2(nopt)=leng +! print *,'named "',options(start:ende),'"' + else + val1(nopt)=1 + val2(nopt)=1 +! print *,'named empty "',options(start:ende),'"' + endif + endif + endif + endif + enddo + if (leng .eq. len(opt)) then + print *,'too many options, truncated' + endif + return + + + + entry dat_start_options + + if (mopt .eq. 0) mopt=nopt + do i=1,nopt + cnt(i)=0 + enddo + idx=0 + return + + + entry dat_str_option(name, value) ! for dat_xxx + + found=0 + idx=idx+1 + if (idx .le. mopt .and. nam2(idx) .eq. 1) then + value=opt(val1(idx):val2(idx)) + cnt(idx)=cnt(idx)+1 + found=1 + endif + call str_upcase(nam, name) + do i=1,nopt + if (opt(nam1(i):nam2(i)) .eq. nam) then + if (found .ne. 0) then + if (value .ne. opt(val1(i):val2(i)) .and. i .le. mopt) then + cnt(i)=cnt(i)+1 + endif + RETURN + endif + value=opt(val1(i):val2(i)) + cnt(i)=cnt(i)+1 + found=1 + endif + enddo + return + + + entry dat_end_options + + do i=1,mopt + if (cnt(i) .eq. 0) then + if (nam2(i) .eq. 1) then + print *,'superflous option: ', opt(val1(i):val2(i)) + else + print *,'unknown option: ' + 1 ,opt(nam1(i):nam2(i)), '=', opt(val1(i):val2(i)) + endif + elseif (cnt(i) .eq. 2) then + print *,'ambigous option: ' + 1 ,opt(nam1(i):nam2(i)), '=', opt(val1(i):val2(i)) + endif + enddo + return + end + + + subroutine dat_set_index(idx) + + integer idx, flg + + integer indx/0/, flag/0/ + + indx=idx + flag=1 + return + + + entry dat_get_index(idx) ! for dat_xxx, call only when index is supported + idx=indx + flag=2 + return + + + entry dat_next_index(flg) + if (indx .gt. 0) then + indx=indx+1 + flg=flag + else + flg=flag + endif + end + + + subroutine dat_real_option(name, value) + + character name*(*) + integer ivalue + real value + + character str*64 + integer l + + str=' ' + call dat_str_option(name, str) + if (str .eq. ' ') RETURN + value=0.0 + read(str, *, err=9, end=9) value + RETURN +9 call str_trim(str, str, l) + print *,'option ',name,'=',str(1:l),' must be a real number' + RETURN + + entry dat_int_option(name, ivalue) + + str=' ' + call dat_str_option(name, str) + if (str .eq. ' ') RETURN + ivalue=0 + read(str, *, err=19, end=19) ivalue + RETURN +19 call str_trim(str, str, l) + print *,'option ',name,'=',str(1:l),' must be an integer' + RETURN + end + + + subroutine dat_use_mon(imon) +! +! convention: 0: auto, 1: standard, 2: primary beam, 3: auxiliary, 4: time, 5: proton current/reactor power +! + integer imon + + integer used_mon/1/ + + used_mon=imon + return + + entry dat_used_mon(imon) + + imon=used_mon + end + + + subroutine dat_use_axis(xaxis, yaxis) + + character xaxis*(*), yaxis*(*) + + character xax*64/' '/, yax*64/' '/ + + xax=xaxis + yax=yaxis + + entry dat_used_axis(xaxis, yaxis) + + xaxis=xax + yaxis=yax + end + + + subroutine dat_ask_filelist(filelist, text) + + character filelist*(*), text*(*) + + character spec*32 + integer high, ls + + call dat_getdef(spec) + call str_trim(spec, spec, ls) + high=0 + call dat_get_high(high) + +20 print * + if (ls .ne. 0) then + if (high .eq. 0) then + print '(X,3A)', + 1 'Default for numors: ', spec(1:ls) + else + print '(X,3A,i6,a)', + 1 'Default for numors: ', spec(1:ls),' (highest: ',high,')' + endif + endif + +c call dat_gettyp(spec) +c if (spec .ne. ' ') then +c call str_trim(spec, spec, ls) +c print '(x,3a)', 'Default type for files (', spec(1:ls), ')' +c endif + + if (text .ne.' ') print *,text + print '(/X,A,$)', 'Filename(s) or numor(s) (? to get help): ' + read(*, '(a)',err=91,end=91) filelist + if (filelist .eq. '?') then + print '(X,A)' + 1, 'Valid examples:' + 1, ' ' + 1, '1001 a numor of the default instrument' + 1, 'TASP/1997/1234 numor 1234 of year 1997 of TASP' + 1, 'IN3/923-925,927 numors 923,924,925 and 927 of IN3' + 1, 'TEST.FIT3 or any other file specification' + goto 20 + endif +91 end + + + subroutine dat_powder_trf(xin,xout,yfact) + + real xin + real xout + real yfact + real lambda_i + character xaxis*(*), oaxis*(*) + + real pi + parameter (pi=3.14159265) + + real lambda/0.0/ + integer mode/0/ ! 1: 2theta to q, 2: 2theta to d + + real sint + character up*16, oup*16 + + real sind, asind, x + + sind(x)=sin(x*3.14159265/180.0) + asind(x)=asin(x)*180./3.14159265 + + yfact=1.0 ! the feature to change y was not appreciated + if (mode .eq. 0) then + xout=xin + RETURN + endif + if (mode .le. 2) then ! 2t -> q + xout=max(1.0e-6,min(xin,179.999)) + if (mode .eq. 1) then + xout=(4*pi)*sind(xin/2)/lambda +! yfact=1.0/cosd(xin/2) ! removed + elseif (mode .eq. 2) then ! 2t -> d + sint=sind(xin/2) + if (sint .eq. 0) sint=1e-3 + xout=lambda/2/sint +! yfact=tand(xin/2)*sint ! removed + endif + elseif (mode .eq. 3) then ! q -> 2t + xout=2*asind(max(-1.0,min(xin*lambda/(4*pi), 1.0))) + elseif (mode .eq. 6) then ! d -> 2t + xout=2*asind(min(1.0,lambda/2/max(1e-6,xin))) + elseif (mode .eq. 5 .or. mode .eq. 7) then ! q <-> d + xout=(2*pi)/max(1e-6,xin) + endif + RETURN + + entry dat_powder_init(lambda_i, oaxis, xaxis) + + mode=0 + call str_upcase(oup, oaxis) + call str_upcase(up, xaxis) + if (oup .eq. 'Q') then + mode=3 + else if (oup .eq. 'D') then + mode=6 + else if (oup .ne. ' ' .and. oup(1:1) .ne. '2' + 1 .and. oup(1:1) .ne. 'T') then + print *,'cannot transform from ',oaxis + xaxis=' ' + goto 9 + endif + if (up .eq. 'Q') then + mode=mode+1 + elseif (up .eq. 'D') then + mode=mode+2 + elseif (up .eq. ' ' .or. up(1:1) .eq. '2') then + xaxis='2-Theta' + else + print *,'cannot transform to ',xaxis + xaxis=' ' + endif + if (lambda_i .eq. 0 .and. mode .gt. 0 .and. + 1 mode .le. 3 .or. mode .eq. 6) then + print *,'no wavelength lambda defined' + xaxis=' ' + mode=0 + endif + +9 lambda=lambda_i + end + + + subroutine dat_get_datanumber(file, numor) + + character file*(*) + integer numor + + integer luntmp, iostat + + call sys_get_lun(luntmp) + call sys_open(luntmp, file, 'r', iostat) + if (iostat .eq. 0) then + read(luntmp, *, err=18,end=18) numor + 18 close(luntmp) + endif + call sys_free_lun(luntmp) + end diff --git a/gen/dat_utils.inc b/gen/dat_utils.inc new file mode 100644 index 0000000..0c92b74 --- /dev/null +++ b/gen/dat_utils.inc @@ -0,0 +1,4 @@ + integer lpos, lout + character filelist*8192, outlist*8192 + + common/dat_utils_com/lpos, lout, filelist, outlist diff --git a/gen/dat_xxx.f b/gen/dat_xxx.f new file mode 100644 index 0000000..25db220 --- /dev/null +++ b/gen/dat_xxx.f @@ -0,0 +1,63 @@ + subroutine dat_xxx +! ------------------ + + external dat_xxx_desc + external dat_xxx_opts + external dat_xxx_high ! this line for raw data files only + external dat_xxx_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_xxx_desc) + call dat_init_opts(dtype, dat_xxx_opts) + call dat_init_high(dtype, dat_xxx_high) ! this line for raw data files only + call dat_init_read(dtype, dat_xxx_read) + end + + + subroutine dat_xxx_desc(text) +! ----------------------------- + character*(*) text ! (out) description + +! type description +! ---------------------------------- + text='XXX test example' + end + + + subroutine dat_xxx_opts +! ----------------------- + print '(x,a)' + 1,'opts description' + end + + + subroutine dat_xxx_high(file, numor) +! ------------------------------------ +! only to implement for raw data files +! returns highest NUMOR. FILE is the location of the file holding the last numor + + character*(*) file ! (in) filename containing info for last numor + integer numor ! (out) last numor + + end + + + subroutine dat_xxx_read + 1 (lun, forced, nread, putval, nmax, xx, yy, ss, ww) +! ---------------------------------------------------- + implicit none + + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) diff --git a/gen/dat_xy.f b/gen/dat_xy.f new file mode 100644 index 0000000..629ab1b --- /dev/null +++ b/gen/dat_xy.f @@ -0,0 +1,144 @@ + subroutine dat_xy +c ------------------ + + external dat_xy_desc + external dat_xy_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_xy_desc) + call dat_init_read(dtype, dat_xy_read) + end + + + subroutine dat_xy_desc(text, opt) +c --------------------------------- + + implicit none + +! arguments dat_xy_desc + character*(*) text ! (out) description + character*(*) opt ! (out) options description + +! arguments dat_xy_read + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + real none + parameter (none=-8.7654e29) + real x,y,s,errvalue,ymon + integer i,j,l,errcnt + character line*132, errtype*1 + +c type description +c ------------------------------------ + text='XY (x,y)-table, ev. with header' + opt='err: s (square root of y), c (constant), p (percentage), ' + 1//'val: value of error, mon: monitor' + return + + + entry dat_xy_read(lun, forced, nread, putval, nmax,xx,yy,ss,ww) +! ---------------------------------------------------------------- + +! check 10 lines (up to 30 header lines) for containing exactly two numeric values + + if (forced .eq. 0) then + read(lun,'(a)', err=29, end=26) line + i=1 + j=0 +20 read(line, *, err=25, end=25) x,y + read(line, *, err=25, end=21) x,y,s +25 if (j .eq. 0 .and. i .le. 30) goto 22 ! header line + goto 29 +21 j=j+1 ! count good line (exactly 2 numbers) +22 read(lun,'(a)', err=29, end=26) line + i=i+1 ! count line + if (j .lt. 10) goto 20 + goto 28 +29 nread=-1 + rewind lun + return +26 if (j .lt. i/2) goto 29 +28 rewind lun + endif + + call dat_start_options + errtype='c' + call dat_str_option('err', errtype) + call str_upcase(errtype, errtype) + errvalue=1.0 + call dat_real_option('val', errvalue) + if (errvalue .le. 0.0) then + print *,'value for error must be > 0' + errvalue=1.0 + endif + ymon=0 + call dat_real_option('mon', ymon) + nread=0 + errcnt=0 + call putval('Monitor', ymon) + +1 read(lun, '(a)', end=9,err=9) line + if (nread .ge. nmax) goto 5 + read(line, *, err=7,end=7) x,y + nread=nread+1 + ww(nread)=1. + yy(nread)=y + xx(nread)=x + goto 1 + +5 errcnt=errcnt+1 + print *,'DAT_XY: File too long' + goto 9 + +7 if (nread .gt. 0) then ! count error only if not header + errcnt=errcnt+1 + if (errcnt .le. 10) then + print *,'Error in line ',nread+1 + endif + endif + goto 1 + +9 if (errtype .eq. 'S') then + do i=1,nread + ss(i)=sqrt(max(1.0,yy(i)*errvalue)) + enddo + else if (errtype .eq. 'P') then + do i=1,nread + ss(i)=yy(i)*errvalue + if (ss(i) .eq. 0.0) ss(i)=1.0 + enddo + else + if (errtype .ne. 'C') then + print *,'illegal option: err=',errtype + endif + do i=1,nread + ss(i)=errvalue + enddo + endif + inquire(lun, name=line) + call sys_parse(line, l, line, '.', 0) + if (errcnt .gt. 0) then + print '(x,a,i5,2a,a1)','DAT_XY: ',errcnt, + 1 ' errors during read ', line(1:max(1,l)), 7 + endif + if (nread .eq. 0) then + nread=-1 + rewind lun + else + close(lun) + endif + end diff --git a/gen/dat_xys.f b/gen/dat_xys.f new file mode 100644 index 0000000..4532b30 --- /dev/null +++ b/gen/dat_xys.f @@ -0,0 +1,125 @@ + subroutine dat_xys +c ------------------ + + external dat_xys_desc + external dat_xys_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_xys_desc) + call dat_init_read(dtype, dat_xys_read) + end + + + subroutine dat_xys_desc(text, opt) +c ---------------------------------- + + implicit none + +! arguments dat_xys_desc + character*(*) text ! (out) description + character*(*) opt ! (out) options description + +! arguments dat_xys_read + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + real none + parameter (none=-8.7654e29) + real x,y,s,ymon + integer i,j,l,errcnt + character line*132 + + +c type description +c ---------------------------------- + text='XYS (x,y,sigma) table, ev. with header' + opt='mon: monitor' + return + + + entry dat_xys_read(lun, forced, nread, putval, nmax,xx,yy,ss,ww) +! ----------------------------------------------------------------- + +! check 10 lines (up to 30 header lines) for containing exactly three numeric values + + if (forced .eq. 0) then + read(lun,'(a)', err=29, end=26) line + i=1 + j=0 +20 read(line, *, err=25, end=25) x,y,s + read(line, *, err=25, end=21) x,y,s,s +25 if (j .eq. 0 .and. i .le. 30) goto 22 ! header line + goto 29 +21 j=j+1 ! count good line (exactly 3 numbers) +22 read(lun,'(a)', err=29, end=26) line + i=i+1 ! count line + if (j .lt. 10) goto 20 + goto 28 +29 nread=-1 +c print *,j,i,' check XYS' + rewind lun + return +26 if (j .lt. i/2) goto 29 +28 rewind lun + endif + + call dat_start_options + ymon=0 + call dat_real_option('mon', ymon) + nread=0 + errcnt=0 + call putval('Monitor', 0.0) + +1 read(lun, '(a)', end=9,err=9) line + if (nread .ge. nmax) goto 5 + read(line, *, err=7,end=7) x,y,s + nread=nread+1 + if (s .eq. 0) then + ww(nread)=1. + s=1 + else + ww(nread)=1.0/abs(s) + endif + ss(nread)=s + yy(nread)=y + xx(nread)=x + goto 1 + +5 errcnt=errcnt+1 + print *,'DAT_XYS: File too long' + goto 9 + +7 if (nread .gt. 0) then ! count error only if not header + errcnt=errcnt+1 + if (errcnt .le. 10) then + print *,'Error in line ',nread+1 + endif + endif + goto 1 + +9 inquire(lun, name=line) + call sys_parse(line, l, line, '.', 0) + if (errcnt .gt. 0) then + print '(x,a,i5,2a,a1)','DAT_XYS: ',errcnt, + 1 ' errors during read ', line(1:max(1,l)), 7 + endif + if (nread .eq. 0) then + rewind lun + nread=-1 + else + close(lun) + endif + end diff --git a/gen/dat_xysm.f b/gen/dat_xysm.f new file mode 100644 index 0000000..20f1edf --- /dev/null +++ b/gen/dat_xysm.f @@ -0,0 +1,126 @@ + subroutine dat_xysm +c ------------------ + + external dat_xysm_desc + external dat_xysm_read + + integer dtype/0/ + + call dat_init_desc(dtype, dat_xysm_desc) + call dat_init_read(dtype, dat_xysm_read) + end + + + subroutine dat_xysm_desc(text, opt) +c ---------------------------------- + + implicit none + +! arguments dat_xysm_desc + character*(*) text ! (out) description + character*(*) opt ! (out) options description + +! arguments dat_xysm_read + integer lun ! (in) logical unit number (file will be closed if successful) + integer forced ! 0: read only if type is sure; 1: forced read + integer nread ! (out) >=0: = number of points read, file closed + ! -1: not correct type, file rewinded + ! -2: correct type, but unreadable, file rewinded + external putval ! (in) subroutine to put name/value pairs. + ! for numeric data: call putval('name', value) ! value must be real + ! for character data: call putval('name=text', 0.0) + integer nmax ! max. number of points + real xx(*) ! x-values + real yy(*) ! y-values + real ss(*) ! sigma + real ww(*) ! weights (original monitor) + +! local + real none + parameter (none=-8.7654e29) + real x,y,s,m,ymon + integer i,j,l,errcnt + character line*132 + + +c type description +c ---------------------------------- + text='XYSM (x,y,sigma,monitor) table, ev. with header' + opt=' ' + return + + + entry dat_xysm_read(lun, forced, nread, putval, nmax, xx,yy,ss,ww) +! ------------------------------------------------------------------ + +! check 10 lines (up to 30 header lines) for containing exactly three numeric values + + if (forced .eq. 0) then + read(lun,'(a)', err=29, end=26) line + i=1 + j=0 +20 read(line, *, err=25, end=25) x,y,s,m + read(line, *, err=25, end=21) x,y,s,m,m +25 if (j .eq. 0 .and. i .le. 30) goto 22 ! header line + goto 29 +21 j=j+1 ! count good line (exactly 4 numbers) +22 read(lun,'(a)', err=29, end=26) line + i=i+1 ! count line + if (j .lt. 10) goto 20 + goto 28 +29 nread=-1 +c print *,j,i,' check XYSM' + rewind lun + return +26 if (j .lt. i/2) goto 29 +28 rewind lun + endif + + nread=0 + errcnt=0 + ymon=0 + +1 read(lun, '(a)', end=9,err=9) line + if (line(1:1) .eq. '#' .or. line .eq. ' ') goto 1 + if (nread .ge. nmax) goto 5 + read(line, *, err=7,end=7) x,y,s,m + if (m .eq. 0) m=1.0 + nread=nread+1 + xx(nread)=x + yy(nread)=y + ss(nread)=max(s,y*1e-6,1e-6) + ww(nread)=m + ymon=max(ymon,m) + goto 1 + +5 errcnt=errcnt+1 + print *,'DAT_XYSM: File too long' + goto 9 + +7 if (nread .gt. 0) then ! count error only if not header + errcnt=errcnt+1 + if (errcnt .le. 10) then + print *,'Error in line ',nread+1 + endif + endif + goto 1 + +9 call putval('Monitor', ymon) + do i=1,nread + yy(i)=yy(i)*ymon/ww(i) + ss(i)=ss(i)*ymon/ww(i) + ww(i)=ymon + enddo + if (errcnt .gt. 0) then + inquire(lun, name=line) + call sys_parse(line, l, line, '.', 0) + print '(x,a,i5,2a,a1)','DAT_XYSM: ',errcnt, + 1 ' errors during read ', line(1:max(1,l)), 7 + endif + if (nread .eq. 0) then + rewind lun + nread=-1 + else + close(lun) + endif + end diff --git a/gen/fifun.f b/gen/fifun.f new file mode 100644 index 0000000..10f8add --- /dev/null +++ b/gen/fifun.f @@ -0,0 +1,232 @@ + real function FIFUN(XX) +C ----------------------- + + include 'fit.inc' + + real xx + + real fifunp + + fifun=fifunp(xx, u) + end + + + subroutine FNCTN(PINT,F) +c ------------------------ + include 'fit.inc' +c + real pint(*),f + + integer i,j + real sum + + real fifun ! function + + call intoex(pint) + nfcn=nfcn+1 + + if (ififu .eq. 6) then + j=0 + sum = 0. + DO I=NXMIN,NXMAX + if (abs(xval(i)-u(3)) .gt. u(4)/2) then + sum = sum + ((YVAL(I)-FIFUN(XVAL(I)))/SIG(I))**2 + j=j+1 + endif + ENDDO + if (j .lt. 2) then + sum = sum + ((YVAL(nxmin)-FIFUN(XVAL(nxmin)))/SIG(nxmin))**2 + 1 + ((YVAL(nxmax)-FIFUN(XVAL(nxmax)))/SIG(nxmax))**2 + j=j+2 + endif + nfree=max(1,j-npar) + F = sum/nfree + else + if (ififu .eq. 7) call fit_user1st + sum = 0. + DO I=NXMIN,NXMAX + actset=iset(i) + sum = sum + ((YVAL(I)-FIFUN(XVAL(I)))/SIG(I))**2 + ENDDO + F = sum/nfree + endif + END + + + real FUNCTION FIFUNP(XX, P) +C --------------------------- + + include 'fit.inc' + + real xx, p(maxext) + + real xr + integer i,j + real sys_rfun_rriii, voigt + + goto (100,100,100,100,500,600,700) ififu + fifunp=0 + return + +C. . . . . VOIGT . . . + +100 continue + if (nu .eq. 2) then + fifunp = p(1)+p(2)*xx + return + endif + fifunp = p(1)+p(2)*(xx-p(3)) + do i=3,nu,5 + fifunp=fifunp+p(i+2)*voigt(xx-p(i), p(i+3), p(i+4)) + enddo + return + +C. . . . . CRITICAL EXPONENT. . . + + 500 IF (P(5).EQ.0.) THEN + XR = P(6)*(XX-P(1))/P(1) + IF (XR.LT.1E-6) then + fifunp=p(4) + else + FIFUNP = P(3)*(XR**P(2)) + P(4) + endif + RETURN + ENDIF + XR = (XX-P(1))/P(1) + IF (XR.LE.-1.E-10) THEN + FIFUNP = P(3)*((-XR)**P(2)) + P(5)*EXP((-XR*P(6))*P(4)) + P(7) + RETURN + ENDIF + FIFUNP = P(5)*EXP(XR*P(4)) + P(7) + RETURN + +C. . . . . STRANGE . . . . . . . . + + 600 fifunp = p(1)+p(2)*(xx-p(3)) + return + +C. . . . . SPECIAL FUNCTION . . . + + 700 if (nu .gt. 0) then + if (npd .eq. 0) then + fifunp=sys_rfun_rriii(userfun, xx, p, nu, 0, actset) + else + j=nu + do i=1,npd + j=j+1 + p(j)=pdpar(i,min(actset,maxset)) + enddo + fifunp=sys_rfun_rriii(userfun, xx, p, nu+npd, 0, actset) + endif + else + fifunp=0 + endif + return + end + + + real function voigt(x, gg, gl) + + implicit none + + real x,gg,gl + + real vint, sqrtln2, pi + parameter (vint=0.939437278699651, sqrtln2=0.832554611157697) + parameter (pi=3.14159265) + + real xg, c + + complex cwerf + + if (gl .eq. 0) then ! pure gaussian + if (gg .eq. 0) then + if (x .eq. 0) then + voigt=1e18 + else + voigt=0 + endif + else + xg=(x/gg*(sqrtln2*2))**2 + if (xg .lt. 50.) then + voigt=exp(-xg)*vint/abs(gg) + else + voigt=0 + endif + endif + elseif (abs(gl) .gt. abs(gg)*100) then ! pure lorentzian + voigt=abs(gl)/(gl*gl/4+x*x)/(2*pi) + elseif (abs(x) .gt. 12*abs(gg) .and. + 1 (abs(gg) .gt. abs(gl) .or. + 1 abs(x/gl) .gt. 12*sqrt(abs(gg/gl)))) then ! approx. for high x + voigt=abs(gl)/(gl*gl/4+x*x)/(2*pi)/(1-0.541*(gg/x)**2) + else + c=sqrtln2/abs(gg) + voigt=real(cwerf(2*x*c, abs(gl)*c))*vint/abs(gg) + endif + end + + + COMPLEX FUNCTION CWERF(xx,yy) + + COMPLEX VALUE + REAL LAMBDA + real const + parameter (CONST=1.12837916709551) + + real xx,yy,x,y,h,s,h2,r1,r2,s1,s2,fn,c,t1,t2 + integer nc,nu,n + + X=ABS(XX) + Y=ABS(YY) + IF (Y .GE. 4.29 .OR. X .GE. 5.33) THEN + H=0. + NC=0 + NU=9 + LAMBDA=0. + ELSE + S=(1.0-Y/4.29)*SQRT(1.0-X*X/28.41) + H=1.6*S + H2=2.0*H + NC=6+INT(23.0*S) + NU=10+INT(21.0*S) + LAMBDA=H2**NC + NC=NC+1 + IF (LAMBDA .EQ. 0.0) NC=0 + END IF + R1=0. + R2=0. + S1=0. + S2=0. + DO N=NU,1,-1 + FN=N + T1=Y+H+FN*R1 + T2=X-FN*R2 + C=0.5/(T1*T1+T2*T2) + R1=C*T1 + R2=C*T2 + IF (N .LE. NC) THEN + T1=LAMBDA+S1 + S1=R1*T1-R2*S2 + S2=R2*T1+R1*S2 + LAMBDA=LAMBDA/H2 + ENDIF + ENDDO + IF (NC .EQ. 0) THEN + S1=R1 + S2=R2 + ENDIF + S1=CONST*S1 +c IF (Y .EQ. 0.0) RS1=EXP(-X*X) + VALUE=CMPLX(S1,CONST *S2) + IF(YY .GE. 0.0) THEN + IF(XX .LT. 0.0) VALUE=CONJG(VALUE) + ELSE + value=-value + VALUE=2.0*CEXP(-CMPLX(X,Y)**2)-VALUE +ccc print *,xx,yy,value + IF(XX .GT. 0.0) VALUE=CONJG(VALUE) + ENDIF + CWERF=VALUE + RETURN + END diff --git a/gen/fit.f b/gen/fit.f new file mode 100644 index 0000000..35f245f --- /dev/null +++ b/gen/fit.f @@ -0,0 +1,64 @@ + program FIT ! change FIT to your own program name +! ----------- +! +! Simple user function example (straight line). +! + implicit none + real FIT_LIN_FUN + external FIT_LIN_FUN ! change FIT_LIN_FUN to your own function name + + character vers*32 + integer i,l +!--- +! Welcome message + + call fit_vers(vers) + call str_trim(vers, vers, l) + + print '(X)' + print '(X,2A)','Program FIT Version ',vers(1:l) + do i=1,l + vers(i:i)='-' + enddo + print '(X,2A/)','-----------------------------',vers(1:l) +!--- +! Function title and parameter names +! + call fit_userfun('STRAIGHT LINE', fit_lin_fun) ! function title, function + call fit_userpar('Bg(0)') ! first parameter: background at zero + call fit_userpar('dBg/dX') ! second parameter: slope + call fit_main + end + + + + real function fit_lin_fun(x,p,n,mode,cinfo) +! ------------------------------------------- + + implicit none + + real x ! x-value + integer n ! number of parameters + real p(n) ! parameters + integer mode ! mode + integer cinfo ! calculation information (see below) + + if (mode .eq. 0) then + +! Define here your own function + + fit_lin_fun=p(1)+x*p(2) + + elseif (mode .lt. 0) then + +! Use this part to do some initialisations. +! (e.g. read files, write out comments on your user function) +! This section is called by FIT_FUN (command FUN) + + print * + print *, 'to define your own user function', + 1 ' leave FIT and type MYFIT' + print *, 'Example: STRAIGHT LINE' + + endif + end diff --git a/gen/fit.help b/gen/fit.help new file mode 100644 index 0000000..cbe0933 --- /dev/null +++ b/gen/fit.help @@ -0,0 +1,748 @@ +mzhelp +=main========================================================================= +Available fit functions: + 1-20 Gaussian, Lorentzian or Gaussian folded with Lorentzian + Critical exponents, Strange peaks, User defineable functions + +Data files supported: + TASMAD, NeXus (DMC, HRPT, FOCUS, MARS, RITA) + ASCII multicolumn format, SICS ascii, + LNS Powder Ascii, TASCOM, Fullprof plot output + 5c2, INX, IDA, 2T, PANDA, CCL + +Most fit commands can also be linked to a user FORTRAN program. + +Report bugs & wishes to markus.zolliker@psi.ch + +Topic Available keyword +----------------------------------------------------------------------------- +Command syntax "commands" +Features in plot window "graphics" +New features since 1990 "history" +Programming your own user function "user_function" "cinfo" "init" +Control FIT from a FORTRAN program "callable" +Fortran interface of any FIT command fit_X (where X is any FIT command) +Datafile specific options "opt" + +Commands Available keywords +----------------------------------------------------------------------------- +fitting commands: "fit" "mig" "sim" "epsi" "vtest" "err" "pri" +function definiton: "fun" "auto" "newpeak" +parameter handling: "set" "lim" "fix" "cor" "rel" "fcn" "reserr" +input: "load" "dat" "link" "next" "opt" +output: "save" "file" "out" "list" "export" +fit region: "win" "exclude" "include" "keep" +data manipulation: "mon" "merge" "mul" "sub" "add" "abskor" "trans" "bgedit" +plot: "plot" "scal" "rsc" "choose" "plog" "plin" "file" +plot style: "bars" "connect" "style" "colors" "legend" +miscellaneous: "help" "info" "exit" "tit" "@" +=commands===================================================================== +Syntax of an interactive command: + +Command parameter1,parameter2,parameter3,... + +If you omit some parameters, usually default values are taken or, +if it is explicitly documented, the program asks for missing +parameters. +Some commands can be shortened (indicated in brackets []) +=fit=mig=sim=epsi=vtest=err=pri============================================ +FIT n Start fitting by minimum gradient method (Davidon-Fletcher-Powell +[F] algorithm). If the algorithm fails, simplex is called. + +MIG n Start fitting by minimum gradient method. Even if the algorithm + fails, simplex is not called. + +SIM n Start fitting by simplex method. + +MIN n Start fitting by simplex followed by gradient method +[M] + (n: Limit for the number of function calls, default n=1000) + +ERR f Errors correspond to a FCN change of f (default: f=1.0). + + FCN = sum over { (Ycal(i)-Yobs(i)) / Sig(i) }**2 + Chi**2 = FCN / Nfree + +EPSI e Convergence criterion (Estimated distance to minimum). + Default e=0.1*f + +VTEST v Second convergence criterion for gradient method + (fractional change in variance matrix). Default: v=0.01 + +PRI i Amount of printout during fit algorithm (i=0..5, default: i=0) +=set=lim=fix=cor=rel=fcn=reserr============================================= +FCN Show all parameters + +SET i,v,e Set parameter i to value v with estimated error e +i=v,e Alternative command syntax + +LIM i,l,u Set limits of parameter i to l and u. +LIM i Remove limits of parameter i + +SET i,v,e,l,u a combination of the commands SET and LIM + +FIX i,j,... FIX parameter i and j and ... at actual value + +COR i,j,f,c Correlate parameters p(i)=p(j)*f+c + Default: f=1.0, c=0.0 + +REL i,j,... Release parameter i and j and ... from FIX or COR + If MaxInt or IntInt is released, the other of the two will be + correlated automatically. +REL Release all parameters + +RESERR should be called when after an unsuccesful fit the errors are + set to very small values. A further FIT step will then often + be successful. + +Note: instead of the parameter number i you can use the short parameter name. +=load=dat=link=next=========================================================== +LOAD filename Load data and parameters. +LOAD Ask for filename to load context. + +DAT Ask for filetype, filename/version number + (parameters are not loaded) +DAT filelist Load data file(s) (syntax for filelist see below) + +LINK filelist Add more data (syntax for filelist see below) + +NEXT [N] The same as DAT; MON; WIN; BARS; FUN + +Filelist syntax examples: + +101,103-105 Read numors 101,103,104,105 (actual year, actual instrument) +TASP/2000/10 Read numor 10 (year 2000 from TASP) +dmc/33 Read numor 33 from DMC (actual year, case not relevant) +2001/203,2002/10 Read numor 203 from 2001 and numor 10 from 2002 +&101,103-105 Read numors 101,103,104,105 and merge them ++103-105 Read numors 103-105, conserving old data (as in the LINK command) + +Example with options (see also command "OPT"): + +focus/101[bank=b] Read middle bank from numor 101 on focus +=options======================================================================= +You can preset options with the OPT command for successive data input, or +you may specify the options directly after the filename or numor enclosed +by square brackets [ ]. + +OPT Show a list of options for the type of the last read + file, show the previous selected options, and enter new options + +OPT ? Show a list of possible options and actually selected options +=save=file=out=list=export===================================================== +SAVE filename Save data, fit parameters, window and scaling +SAVE Ask for filename before saving + +FILE xstep, filename Save two files with observed and calculated dataset + for other plot software (xstep for calculated dataset, + xstep=0: a default value of (xmax-xmin)/100 is taken). + Give TT as filename for output at terminal directly +FILE Ask for filename and step + +LIST [L] Listing on terminal (x, y, yfit) + +OUT Output of listing (not a program-readable format!) + +OPEN file Open a file for output of fit results (default: fit.txt) + +K par1,par2 .. (K=keep) Write a line with values of given parameters +K Write parameters used last time or all parameters + You might use 'K' in the plot window for this command + +EXPORT type,filename export data (file types available: DMC, D1A) +EXPORT step,type,filename export with given x step +=win=exclude=include=keep====================================================== +WIN xmin,xmax Set fit window. +WIN Ask for fit window +WIN 1,1 Maximal fit window. +[W] + +EXCLUDE x1,x2 Exclude range x1..x2 +EXCLUDE x1,x2,y1,y2 Exclude rectangle (x1,x2,y1,y2) +EXCLUDE 1,1,y1,y2 Exclude range y1..y2 +[EXCL] + +INCLUDE ... Re-include regions (syntax as for EXCLUDE) +[INCL] + +KEEP List window and in-/excluded regions and + ask if they have to be kept on new data +KEEP Y Enable persistent window/regions +KEEP N Disable persistent window/regions +=mon=merge=mul=sub=abskor=add=bgedit=usemon=trans====================================== +MON m Change Monitor +MON Ask for Monitor + +USEMON Choose which channel to use as monitor + +MERGE s Add datapoints with same x (within a limit s). + If s is omitted, it is determined automatically + Overall monitor is changed, if appropriate + +MUL s1,s2,s3... Multiply datasets with scale factor. + +ABSKOR muR,ri,ra Correct for absorption + muR<0 inverse correction (muR as for a full cylinder) + ri>0: hollow cylinder (inner radius/outer radius) + ra: sample radius/radial collimator fwhm + +TRANS d,lambda Transform x-axis from to d (powder diffraction) +TRANS q Transform x-axis to q (lambda is taken from file or last cmd) +TRANS 2theta Transform back to 2-Theta +TRANS Ask for x-axis to transform to + +SUB filename Subtract a file from actual data + +ADD constant Add a constant to data + +BGEDIT file Edit graphically a background file +[BG] +=fun=auto=newpeak================================================================ +FUN Ask for fit function and start parameters. + +FUN n Select fit function n (ask for start parameters, if needed) + + n=0,1 Single Gaussian/Lorentzian (auto start parameters) + n=2,3 Multiple (1..4) Gaussian/Lorentzian + n=4 Gaussian+Lorentzian + n=5 Critical exponent + n=6 Strange peak (auto start parameters) + n=7 User function (see topic "User_function") + n=8 Plot only (no parameters) + +AUTO Determine start values for first peak (for function 0,1,2,3,4) + +NEWPEAK Create a new peak (for function 0,1,2,3,4). + + Delete a peak by setting intensity and error to zero. +=plot=scal=rsc=choose=plog=plin================================================= +PLOT [P] Plot (See also topic "Graphics") +PLOT yes Plot, make hardcopy file and do not wait. +PLOT auto automatic plot after every command +PLOT off switch off automatic plot + +SCAL xmin,xmax,ymin,ymax Set plot scale +SCAL [SC] Ask for scale + +RSC Reset plot scale (auto scale). + +PLOG shift Set logarithmic mode (and set shift between datasets) +PLIN shift Set linear mode (and set shift between datasets) + +CHOOSE [CHO] Select printer and printer options + +See also: + + "FILE" (export for other plot software) + "STYLE" (plot style, legend) + "Graphics" (hot keys in plot window) +=style=bars=connect=colors=legend=ncurves======================================= +BARS Yes/No Enable/disable error bars. + +CONNECT Yes/No [CON] Enable/disable lines between data points + +STYLE s1,s2,s3... Change style of dataset points +STYLE Ask for dataset styles + +COLORS [COL] Use colors for different datasets +COLORS n Use n colors for different datasets +COLORS 0 Use black and white + +NCURVES n Set number of curves for User-Function + +LEGEND [LEG] Show legend (Numor is default) +LEGEND var Use 'var' for legend ('LEGEND Temp' for temperature) +LEGEND 0 Do not show legend +LEGEND label1|label2|label3 .... + Show a customized legend +LEGEND |label4|label5|label6 .... + Append to a customized legend +LEGEND @x,y Set top left coordinate of legend (percent of window + width/height, y is measured from the top) + +See also: + "PLOT" (other commands related to plot) + "Graphics" (hot keys in plot window) +=help=info=exit=quit=tit=@======================================================= +@filename Execute commandfile + +HELP [H] Get help +HELP command Get help on command. + +INFO Show additional information from the last + read data file. +INFO level level is a small number controlling the amount + of output for the info command + +INFO variable show the value of this variable + +variable=value set a variable + +EXIT [EX] Exit program and save parameters and datapoints. + +QUIT [QU] Quit program without saving.. + +TITLE title [TIT] Change title. +TITLE Ask for title. + +FULLMESS After this command, error messages are more detailed, and + the program quits after an error. +=user_function=build_program===================================================== +On Unix: + + Get an example file: myfit + + Rename fitexample.f to a name of your choice (i.e. xxx.f) + and edit the parameters and the fit function. + + Compile: myfit -o xxx xxx.f + Run: ./xxx + +You may add any g77 option or parameter to the myfit argument list. + + +On VMS: + +To define your own user function, type MYFIT and change the file +FIT.FOR to your own function, rename the file to your own program +name xxx, compile it, link the program with + + LINK xxx,FIT4_SHR/OPT + +and start your program with + + RUN xxx + + +Related keywords: init (inititalisation of user function) + function () + cinfo (how to speed up complex fit functions) +=init============================================================================= +User function initialisation + +You have to call FIT_USERFUN to define title and function reference, and +you have to call FIT_USERPAR to define the name of each parameter. +Short name of variables can be given before long name, separated by +a colon ':'. + +Call FIT_MAIN afterwards to switch to fit command mode. + +If you want to keep control by program, you can call almost +every command (prefix FIT_, i.e. for plot you call FIT_PLOT). +In that case you must call FIT_INIT before calling other subroutines. + +Short help is available under the name of the subroutine. +=function========================================================================= +You have to program a user function, whitch will be called from three +different places within FIT: + +1. when command FUN is called or a new function is loaded: + MODE=-1 + all other arguments are undefined + +2. before each calculation of Chi-Square, i.e. before each Fit-Step: + MODE=1 + X=0.0 + N: number of parameters + P(1..N): parameters + CINFO: Info about changed parameters (See Topic "CINFO") + +3. for each point of Dataset(s) and when plotting function: + MODE=0 + X: X-value + N: number of parameters + P(1..N): parameters + CINFO: Dataset number or curve number +=cinfo============================================================================= +how to speed up complex fit functions + +this section is useful only, if the main part of the calculation +does not depend on X, i.e. matrix diagonalisation + +- split your calculation into several parts +- the subroutine FIT_USERCINFO(CINFO) determine the dependencies of the + calc. parts and the parameters. The integer CINFO is a bit map, where + each bit corresponds to a part of the calculation. The bit should be + set if the part depends on the parameters named in the following calls + to FIT_USERPAR. +- The integer CINFO within the fit user function determines, which + part of the calculation has to be redone (corresponding + bit set) and which part remains unchanged (bit clear) +=callable====================================================================== +For example for automatic fitting of many files, you probably want +to call the fit-commands from a FORTRAN program. Before any call +to the FIT subroutines you have to call FIT_INIT. + + for instructions on compile and link see topic "build" + +Explanations for the topics below: + +Specified arguments: Call with specified arguments. +Default arguments: For unspecified arguments, the subroutine uses + default values. +Ask for arguments: The subroutine asks for unspecified arguments. + If you want to start your program in batch + mode you normally have to avoid these calls. + +Available routines (use routine name as help keyword): +------------------------------------------------------- +fitting: fit_fit fit_sim fit_min fit_chisq + fit_pri fit_err fit_epsi fit_vtest +function definiton: fit_fun fit_newpeak fit_auto +parameter handling: fit_set fit_fix fit_rel fit_cor fit_get_array +input / output: fit_save fit_load fit_init fit_command fit_exit fit_range + fit_dat fit_link +data manipulation: fit_win fit_mon fit_dat fit_link fit_subtract fit_merge + fit_auto_mon fit_multiply fit_add fit_abskor + fit_dat_put fit_bgedit fit_keep + fit_include fit_exclude + fit_get_array, fit_get_real, fit_get_str + fit_put_array, fit_put_real, fit_put_str +plot: fit_plot fit_scale fit_rsc fit_bars fit_connect fit_title + fit_file +user commands: fit_usercmd + arg_check_cmd arg_str arg_real arg_int arg_par arg_lit +library routines: str_upcase, str_trim, str_append + sys_get_cmdpar, sys_setenv, sys_getenv +=fit_fit=fit_sim=fit_min=fit_pri=fit_err=fit_epsi=fit_vtest=fit_chisq========= +Specified arguments Default arguments Default value +-------------------------------------------------------------- +CALL FIT_FIT(n) CALL FIT_FIT(0) n=1000 +CALL FIT_SIM(n) CALL FIT_SIM(0) n=1000 +CALL FIT_MIN(n) CALL FIT_MIN(0) n=1000 +CALL FIT_PRI(n) CALL FIT_PRI(0) n=0 +CALL FIT_ERR(err) CALL FIT_ERR(0) err=0.5 +CALL FIT_EPSI(eps) CALL FIT_EPSI(0) eps=0,1*err +CALL FIT_VTEST(v) CALL FIT_VTEST(0) vtest=0.01 + +CALL FIT_CHISQ(chisq, istat) get chi square and fit success status + + INTEGER n, istat + REAL err,eps,v, chisq + +=fit_set=fit_fix=fit_rel=fit_cor=============================================== +Specified arguments Default arguments Default value +------------------------------------------------------------------ +CALL FIT_SET(i,p,e,l,u) CALL FIT_SET(i,p,e,0,0) l=0,u=0: no limit +CALL FIT_LIM(i,l,u) +CALL FIT_FIX(i) +CALL FIT_REL(i) +CALL FIT_COR(i,j,f,c) CALL FIT_COR(i,j,0,0) f=1.0, c=0.0 + + INTEGER i, j + REAL p, e, l, u, f, c +=fit_get_array=fit_put_array=fit_get_real=fit_get_str=fit_put_real=fit_put_str========== +Get and put parameters and or data + +CALL FIT_GET_ARRAY(name, array, ndim, nret) +where: + INTEGER ndim ! dimension (input) + REAL array(ndim) ! resultant array (output) + INTEGER nret ! array length returned (output) + CHARACTER*(*) name ! name of array + ! 'P': fit parameter, 'E': parameter error + ! 'X','Y': data, 'S': data error, 'W': data weight + +CALL FIT_PUT_ARRAY(name, array, nlen) +where: + INTEGER nlen ! length of array (must match length of data) + REAL array(nlen) ! array (input) + CHARACTER*(*) name ! name of array + ! 'X','Y': data, 'S': data error, 'W': data weight + ! to change parameters use subroutine FIT_SET + +CALL FIT_GET_REAL(name, value) +CALL FIT_GET_STR(name, l, str) +CALL FIT_PUT_REAL(name, value) +CALL FIT_PUT_STR(name, str) +where: + REAL value ! value to get or put + INTEGER l ! string length returned + CHARACTER*(*) str ! value to get or put + CHARACTER*(*) name ! call INFO 99 to see what variables are available +=fit_usercmd=arg_check_cmd=arg_str=arg_real=arg_int=arg_par=arg_lit========================= +User defineable commands + +CALL FIT_USERCMD(cmds) ! install command dispatch routine + +logical fucntion to check command: +ARG_CHECK_CMD(command, len) ! check for command (significant length: len) + +subroutines returning arguments: + +CALL ARG_REAL(value, default) ! get a real value argument from command line +CALL ARG_INT(value, default) ! get an integer value argument from command line +CALL ARG_PAR(value) ! get a parameter name/number as argument from .. +CALL ARG_LIT(string) ! get a name as argument from command line +CALL ARG_STR(string) ! get remaining arguments as string from comm... + +Usage: + external cmds + call fit_usercmd(cmds) ! call this within main module, after fit_init + + subroutine cmds(done) ! subroutine to define + logical done + + if (arg_check_cmd('DAT', 3)) then + ... treat command dat ... + done=.true. + elseif (arg_check_cmd('PLOT', 1)) then ! P is accepted as well + ... treat command plot ... + done=.true. + endif + end +=fit_dat=fit_win=fit_mon=fit_link=fit_subtract=fit_merge=fit_multiply=fit_abskor=fit_bgedit=fit_auto_mon=fit_add=fit_mon= +Specified arguments Default arguments Ask for arguments +--------------------------------------------------------------------- +CALL FIT_DAT(filename) CALL FIT_DAT(' ') +CALL FIT_WIN(xmin, xmax) CALL FIT_WIN(1.,1.) (= max. window) + CALL FIT_WIN(0,0) + +CALL FIT_MON(m) CALL FIT_MON(0) +CALL FIT_USEMON(m) CALL FIT_USEMON(0) +CALL FIT_LINK(filename) CALL FIT_LINK(' ') +CALL FIT_SUBTRACT(filename) CALL FIT_SUBTRACT(' ') + +CALL FIT_RANGE(r1, r2, filenames) ! attention: r1, r2 are REALs + +CALL FIT_MERGE(step) CALL FIT_MERGE(0.0) +CALL FIT_AUTO_MON adjust monitor after a FIT_MERGE + +CALL FIT_MULTIPLY(scale,0) one scale factor for all data +CALL FIT_MULTIPLY(scale,n) scale is an array of factors for each dataset + +CALL FIT_ABSKOR(mur,ri) CALL FIT_ABSKOR(0.0,0.0) +CALL FIT_ABSKOR2(mur,ri,ra) CALL FIT_ABSKOR(0.0,0.0,0.0) + +CALL FIT_ADD(const,0) const to add to all data +CALL FIT_ADD(const,n) const is an array for constants for each dataset + +CALL FIT_BGEDIT(file) + +CALL FIT_EXCLUDE(x1,x2,y1,y2) + +CALL FIT_INCLUDE(x1,x2,y1,y2) + +CALL FIT_KEEP('Y') CALL FIT_KEEP(' ') +CALL FIT_KEEP('N') +=fit_dat_put=========================================================================== +Put new datapoints into FIT + +CALL FIT_DAT_PUT(mode, x, nx, y, ny, s, ns, w, nw) +where: + INTEGER mode ! 0: purge before, 1: link new dataset, 2: link to existing dataset + INTEGER nx ! nx=1: x-values are xx(1),xx(1)+1,xx(1)+2,...,xx(1)+(nx-1) + INTEGER ny ! number of data points + INTEGER ns ! ns=1: ss(1) <> 0.0: sigma values are ss(1) + ! ss(1) = 0.0: sigma values are sqrt(max(1.0,yy(i))) + INTEGER nw ! nw=1: weights are ww(1) + REAL xx(nx) ! x-values + REAL yy(ny) ! y-values + REAL ss(ns) ! sigma values + REAL ww(nw) ! weights + +! precondition: (ny>0) and (nx=ny or nx=1 or nx=2) +! and (nx=ny or ns=1) and (nw=ny or nw=1) + +=fit_fun=fit_newpeak=fit_auto================================================== +Specified/auto arguments Ask for start parameters +---------------------------------------------------------------------- +CALL FIT_FUN(0, 0, 0.0,0.0) Gaussian +CALL FIT_FUN(1, 0, 0.0,0.0) Voigtian +CALL FIT_FUN(0, 1, pos,poserr) Gaussian at given start pos +CALL FIT_FUN(1, 1, pos,poserr) Voigtian at given start pos +CALL FIT_FUN(2, n, par,err) CALL FIT_FUN(2, 0) Multi-Gaussian +CALL FIT_FUN(3, n, par,err) CALL FIT_FUN(3, 0) Multi-Voigtian +CALL FIT_FUN(4, 12,par,err) CALL FIT_FUN(4, 0) Gaussian+Voigtian + CALL FIT_FUN(5) Crit. exponent +CALL FIT_FUN(6, 0, 0.0,0.0) Strange +CALL FIT_FUN(7, n, par,err) CALL FIT_FUN(7, 0) User function +CALL FIT_FUN(8, 0, 0.0,0.0) Plot only + + Ask for function and start parameters + ------------------------------------- + CALL FIT_FUN(-1, 0) + +CALL FIT_NEWPEAK +CALL FIT_AUTO + +where: + REAL par(np), err(np), pos, poserr + INTEGER n +=fit_plot=fit_scale=fit_rsc=fit_bars=fit_connect=fit_title=fit_file============== +Specified arguments Default arguments Ask for arguments +----------------------------------------------------------------------- +CALL FIT_PLOT('Y') CALL FIT_PLOT(' ') +CALL FIT_SCALE(x1,x2,y1,y2) + CALL FIT_SCALE(0,0,0,0) + + CALL FIT_SCAL(1.,1.,y1,y2) (auto x-range) + CALL FIT_SCAL(x1,y1,1.,1.) (auto y-range) +CALL FIT_RSC (auto range) + +CALL FIT_BARS('Y') CALL FIT_BARS(' ') +CALL FIT_BARS('N') +CALL FIT_CONNECT('Y') CALL FIT_CONNECT(' ') +CALL FIT_CONNECT('N') +CALL FIT_PLOG(log,shift) ! log=0,1 +CALL FIT_TITLE(title) CALL FIT_TITLE(' ') +CALL FIT_FILE(xstep, filename) CALL FIT_FILE(0,' ') +=fit_print=fit_list=fit_out==================================================== +Specified arguments Ask for filename +--------------------------------------- +CALL FIT_PRINT(1) (equivalent to command FCN) +CALL FIT_PRINT(0) (print variable parameters) + CALL FIT_LIST + CALL FIT_OUT +=fit_save=fit_load=fit_init=fit_command=fit_exit=fit_export==================== +Specified arguments Ask for arguments +-------------------------------------------- +CALL FIT_SAVE(filename) CALL FIT_SAVE(' ') +CALL FIT_LOAD(filename) CALL FIT_LOAD(' ') +CALL FIT_EXPORT(step, type, filename) (auto step: step=0) + +CALL FIT_INIT (has to be called first) +CALL FIT_COMMAND(filename) (equivalent to command @filename) +CALL FIT_COMMAND(' ') (switch to interactive mode) +CALL FIT_EXIT +=fit_userfun=fit_userpar=fit_usercinfo=fit_main================================ +CALL FIT_USERFUN(title,function) define user function (has to be called + before FIT_USERPAR +CALL FIT_USERPAR(name) define user parameter name (call once + for each parameter) +CALL FIT_USERCINFO(mask) define user calculation info mask for + following calls to FIT_USERPAR +CALL FIT_MAIN start fit command mode +=str_upcase=str_append=str_trim=sys_get_cmdpar=sys_setenv=sys_getenv=========== +CALL STR_UPCASE(out, in) convert to upper case +CALL STR_TRIM(out, in, length) determine string length without trailing space +CALL STR_APPEND(inout, length, in) append in to inout(1:length) + +CALL SYS_GET_CMDPAR(out, length) get command line parameters +CALL SYS_SETENV(name, value) set environment variable +CALL SYS_GETENV(name, value) get environment variable +=graphics====================================================================== +Within the graphic window, you hit a key for a command: + +Command Shortcut + +Print P Printing Graphics +Insert I Insert peak at the actual x/y position. + the halfwidth is determined automaticaly. + (BGEDIT: insert point) +Delete D Delete peak (BGEDIT: delete point) +Repaint R Repaint graph +Zoom in Z Zoom in*. +Zoom out O Zoom out by a factor 2:1 +Jump J Center graph at cursor position without changing scale +max.Scale X Automatic scaling (observed data fits the data window) +Window W Set fit window* +Exclude E Mark excluded region* +Include N Mark region to re-include* +Log/Lin L Switch between log and lin +Colors C Switch between colors and b/w +Show Coord. S Show (X,Y) value of cursor +Quit Q Leave graphic user-interface + +* move to the first corner, click the correspoding key, move to the second + corner, press the key again. If you want to perform the command only in one + dimension, move to locations below the x-axis or left to the y-axis. +=history======================================================================= +Version 2.0 +- FIT saves all parameters and the data file name on exit. +- You can now enter directly to command mode by pressing RETURN at the + first prompt. +- The parameters of most commands can now be passed directly via + command line. +- Command line editing (recall of previous 20 commands). +- Command-files can be executed. +- Old command WIN is now separated into the commands WIN, MON and BARS. +- New command MIG (call migrad only) +- Abort of fit algorithm by pressing (return to command level). +- All commands of FIT are now callable FORTRAN subroutines. +- Enhanced user fit-function definition. +- Extended HELP + +Version 3.0 +- All peak functions (Gaussian, Lorentzian, Voigtian) have now the same + parameters and switching between them can be done by changing parameters + (If fwhm L = 0: Gaussian, if fwhm G =0: pure Lorentzian, else Voigtian) +- Graphics package is changed from PLOT10 to GRAPHX. FIT runs now on most + graphic devices, including X-Window. +- Graphic user-interface: zoom, edit peaks, create new peaks, delete peaks. +- New peaks can be created by command NEWPEAK +- Peaks can be deleted by setting intensity to 0 +- New command CHOOSE (printer options) +- COR i1,i2,f no longer has the restriction i1>i2 + +Version 3.3 +- Load multiple data files +- Command LINK to load additional data +- Data from different files are plotted with different symbols +- Command MERGE to add points with same X-value +- New data file types available: IN3, D1A5, D1A6, 3-column + +Version 3.5 +- MULtiply data with scale factor +- SUBtract datafiles +- D2B-files readable + +Version 3.6 +- Data can be saved as DMC or D1A format + use command SAVE with extension .DMC (or .D1A respectively) +- Command ABSKOR for absorption correction +- Parameter can be given as name instead of number (Example: FIX P1 = FIX 3) +- Short form for SET command. Example: G1=0.4 +- Command STYLE to set marker symbols or to connect points +- Enhanced output for Mac Plot Software (Kaleidagraph, ProFit...) + use command FILE TT and Copy-Table in VersaTerm +- New command AUTO: determine start-values for Gaussian Fit without loosing + FIX and COR settings. +- Bug corrected: Sometimes fit was not correct and errors were very small + after a DAT command. This is now corrected. + +Version 3.7 +- Command CONNECT Y to connect data points + +Version 4.0 +- Now available on Digital Unix +- PGPLOT Graphics package instead of GRAPHX + +Version 4.1 +- Background editing command BGEDIT (replaces GEDIT program) +- Export command (actually supporting DMC and D1A datafile type) +- Enhanced Fortran-Interface + +Version 4.2 +- ADD a constant do data +- new data types: INX, CCL +- RANGE command for 2D data and multi-dataset files like INX or CCL +- subroutine FIT_DAT_PUT: load data from memory of calling program +- subroutines FIT_GET_ARRAY, FIT_GET_REAL and FIT_GET_STR: inquire data + and parameters +- subroutines FIT_PUT_ARRAY, FIT_PUT_REAL and FIT_PUT_STR: modifiy data +- subroutine FIT_USERCMD: plug-in commands +- subroutine FIT_DAT_MERGE: fit_dat and fit_merge in one command + (to avoid memory overflow) +- made available some library soutines: STR_UPCASE, STR_TRIM, STR_APPEND + SYS_GET_CMDPAR, SYS_SETENV, SYS_GETENV +- subroutine FIT_VERS: get actual version + +Version 4.3 +- new commands EXCLUDE, INCLUDE: excluded regions +- new command KEEP: persistent fit-window (select if fit window and + excluded regions are kept on DAT command) + +Version 4.4 +- new commands PLOG and PLIN for logarithmic plots and shifted + datasets +- new commands LEGEND and COLORS +- can read RITA single detector files + +Version 4.5 +- absorption correction for hollow cylinders +- plot fullprof output files +- new command TRANS (transform x-axis between 2theta/d/q for powder diffraction) +- more options for calibration of powder diffraction data +- user function may be folded with gaussian (example: program BOSE) +- can read HDF5 files (TriCS NeXus files) diff --git a/gen/fit.inc b/gen/fit.inc new file mode 100755 index 0000000..55d3236 --- /dev/null +++ b/gen/fit.inc @@ -0,0 +1,149 @@ +C ======================================================================== +C ###### FIT.INC ###### +C ======================================================================== +C + integer maxext,maxpar,maxpeak,maxplug,maxflen + integer maxdat, maxset, maxpd + real none + parameter (maxdat=250000) ! max. number of datapoints + ! this value is actually determined by fullprof synchrotron data + ! (number of points)*4 + number of reflections + parameter (maxext=400) ! max. number of parameters + parameter (maxpar=200) ! max. number of fitted parameters + parameter (maxpeak=(maxext-2)/5)! max. number of peaks + parameter (maxplug=16) ! max. number of plugin commands + parameter (maxset=256) ! max. number of datasets + parameter (maxpd=8) ! max. number of per-dataset parameters + parameter (maxflen=8192) ! max. filelist length + parameter (none=-9.876543e-21) ! undefined value + + real v(maxpar,maxpar) ! covariance matrix (must be first in common) + integer npar, nu, ni ! number of internal, external parameters, informational parameters + character*8 pnam(maxext) ! actual parameter names + character*4 psho(maxext) ! actual short parameter names + real u(maxext) ! parameter values + real werr(maxext),werrs(maxext) ! parameter errors, saved errors + real dirin(maxext) ! internal steps + real alim(maxext), blim(maxext) ! limits + integer lcode(maxext) ! <0: fixed, 1: normal, else: limited + integer lcorsp(maxext) ! index of internal parameter + integer icsw(maxext) ! correlation flag (0: not corr., 1: corr., -1: special I=M*G) + integer icto(maxext) ! correlation pointer + integer ncor, icord(maxext) ! correlation order + real cfac(maxext) ! correlation factors + real coff(maxext) ! correlation offsets + real x(maxpar) ! internal parameters + + real amin ! function value + real apsi, epsi, vtest ! convergence criteria + integer ififu ! fit function (1: multi Gauss / Lorentz / Voigt + ! 5: crit. Exponent, 6: strange, 7: your own funct, 8: plot only + integer nfree ! degrees of freedom + integer nfcn, nfcnmx ! number of function calls, maximum + integer isw(5) ! isw(1)=0,1(max number of fit calls exceeded) + ! isw(2)=0,1,2,3(normal convergence) + real up ! value for error calc. + integer itaur ! ? + real sigma ! ? + + character*(maxflen) filnam ! file name + character*(maxflen) fillis ! file name list + character*(maxflen) filesave ! saved file name (for RANGE) + real ymon, ymon0 ! overall monitor (perm./temp.) + integer titlen + parameter (titlen=80) + character*(titlen) itit ! title + real temp,dtemp,wtemp,wavlen ! parameters for plot output + integer load_state ! 0: no load, 1: accept, 2: done, 3: done, but load data from filnam + + real xval(maxdat) ! x-values + real yval(maxdat) ! y-values + real rmon(maxdat) ! original monitors + real sig(maxdat) ! errors + integer iset(maxdat) ! dataset number + integer nset ! highest number of dataset + + integer npkt ! total number of points + integer nback ! end of background points + integer isysrd, isyswr ! logical units + + integer iscx, iscy ! auto scale flags + integer nstyl, styl(maxset) ! dataset styles + integer autostyle ! automatic style (used for powder diffraction) + logical autoplot ! automatic plot after each command + + integer ncolor ! number of colors used (0 for b/w) + integer npd ! number of per-dataset parameters + real pdpar(maxpd, maxset) ! per-dataset parameters + integer nmult ! number of tables + integer cols(maxset) ! number of cols + integer rows(maxset) ! number of rows + integer legend ! legend parameter + character legendlabels*2048 ! custom legend + real legendx,legendy ! legend position + + integer nxmin, nxmax ! fit window + real xbeg, xend, ybeg, yend ! plot scale + real yinteg, dyinteg ! integrated experimental intensity, error + integer gradev ! graph device + + integer userfun ! user function number + character*4 usersho(maxext) ! user function parameter short names + character*32 userpar(maxext) ! user function parameter names + integer usernp ! number of user function parameters + integer usercct(maxext) ! calc. flags for user function + character*16 usertit ! user function title + integer cinfo ! calc. info + real pold(maxext) ! last parameters + + integer actset ! set number of point calc. + integer trfmode ! 0: normal, 1: logarithmic + real shift(0:1) ! shifts for quasi 3-d + + logical argok ! command arguments ok + logical quit ! quit flag + character cmdline*8192 ! commandline + character separator*1 ! command argument separator + integer cmdpos, cmdlen, linlen ! position, length of command, length of command line + integer nplug ! number of plugin command routins + integer plug_cmds(maxplug) ! plug-in command routines + + + integer maxregion + parameter (maxregion=33) + logical keepregion ! keep window/excluded region on DAT command + integer nregion ! region list length + real regx1(maxregion) ! included region: regx1<=regx2 and regy1<=regy2 + real regx2(maxregion) ! excluded region: else + real regy1(maxregion) ! regx1=regx2: infinite x-range + real regy2(maxregion) ! regy1=regy2: infinite y-range + + common/fitint8/plug_cmds,userfun + + common/fitreal8/v + + common/fitchari/usertit,filesave,itit + + common/fitchar/cmdline,userpar,usersho,legendlabels + 1,psho,pnam,filnam,fillis,separator + + common/fitinti/nset,isysrd,isyswr,nstyl,styl,autostyle,cinfo + 1,usernp,nplug,trfmode,ncolor,legend + + common/fitint/npar,nu,ni,lcode,lcorsp,icsw,icto,ncor,icord + 1,ififu,nfree,nfcn,nfcnmx,isw,itaur + 1,iset,npkt,iscx,iscy,nxmin,nxmax,usercct + 1,actset, cmdpos, cmdlen, linlen, gradev, load_state + 1,npd,nmult,rows,cols,nback,nregion + + common/fitreal/u,werr,werrs,dirin,alim,blim,cfac,coff,x + 1,amin,apsi,epsi,vtest,up,sigma + 1,ymon,ymon0,temp,dtemp,wtemp,wavlen + 1,xval,yval,rmon,sig + 1,xbeg,xend,ybeg,yend,pdpar + 1,yinteg,dyinteg,pold,regx1,regx2,regy1,regy2 + 1,legendx,legendy + + common/fitreali/shift + + common/fitlog/autoplot,quit,argok,keepregion diff --git a/gen/fit.vers b/gen/fit.vers new file mode 100644 index 0000000..20c05e6 --- /dev/null +++ b/gen/fit.vers @@ -0,0 +1,2 @@ +vers +4.6 diff --git a/gen/fit_abskor.f b/gen/fit_abskor.f new file mode 100644 index 0000000..c08c65e --- /dev/null +++ b/gen/fit_abskor.f @@ -0,0 +1,262 @@ + subroutine fit_abskor(muRinp, rinp) + real muRinp, rinp + call fit_abskor2(muRinp, rinp, 0.0) + end + + subroutine fit_abskor2(muRinp, rinp, radc) + +c absorption correction for neutron powder diffraction +c cylindrical geometry +c + implicit none + + include 'fit.inc' + real muRinp, rinp, radc + + real muR,ri,ra + character*64 value + + real cvt_ratio + + if (muRinp .eq. 0) then + write(isyswr,'(x,a)') 'Absorption correction' + write(isyswr,'(x,2a)') '-- for hollow cyclinders, the muR' + 1 ,' of a full cylinder has to be given' + muR=0 + call sym_get_real('muR', muR) + if (muR .eq. 0) then + write(isyswr,'(x,a,$)') 'muR: ' + else + write(isyswr,'(x,a,f8.4,a,$)') 'muR (default:', muR, '): ' + endif + read(isysrd,'(F20.0)',end=999,err=999) muR + write(isyswr,'(x,a,$)') 'r/R (default: 0.0 / full cyclinder): ' + read(isysrd,'(A)',end=999,err=999) value + ri=cvt_ratio(value, -1.0) + if (ri .lt. 0) goto 999 + write(isyswr,'(/3(x,a/),x,a,$)') 'Radial collimator correction' + 1 ,'on DMC, in general, no correction is needed' + 1 ,'on HRPT, coll. is 7 or 14 mm' + 1 ,'sample radius/collimation fwhm (default: 0 = no corr.): ' + read(isysrd,'(A)',end=999,err=999) value + ra=cvt_ratio(value, -1.0) + if (ra .lt. 0.0) goto 999 + else + muR=muRinp + ri=rinp + ra=radc + endif + call sym_put_real('muR', abs(muR)) + if (muR .gt. 0.0) then + write(isyswr,'(x,a,f8.4)') 'Correct for absorption, muR=',muR + call abscorn(muR, ri, ra, 2, nxmax+1-nxmin + 1 , xval(nxmin), yval(nxmin), sig(nxmin)) + elseif (muR .lt. 0.0) then + write(isyswr,'(x,a,f8.4)') + 1 'Inverse absorption correction, muR=',-muR + call abscorn(-muR, ri, ra, -2, nxmax+1-nxmin + 1 , xval(nxmin), yval(nxmin), sig(nxmin)) + endif + if (ri .eq. 0) then + write(isyswr,'(x,a)') 'for a full cyclinder' + else + write(isyswr,'(x,a,f8.4)') 'for a hollow cyclinder, r/R=',ri + endif + if (ra .ne. 0) then + write(isyswr,'(x,a,f5.1,a)') 'correction for radial collimator ' + 1 ,ra,' ra/rc' + endif + return +999 print *,'input error' + end + + + + subroutine abscorn(muR, ri, ra, mode, npt, twoth, yy, sig) + + ! calculate absorption correction of hollow cylinders + + real muR ! absorption coefficient + real ri ! (inner radius)/(outer radius) + real ra ! radial collimator 1/fwhm + integer mode ! mode = 0 transmission is returned in YY + ! mode = 1 correction of YY + ! mode =-1 inverse correction of YY + ! mode = 2 correction of YY and SIG + ! mode =-2 inverse correction of YY and SIG + integer npt ! number of data points + real twoth(npt) ! two_theta values + real yy(npt) ! returned transmission or Y to correct + real sig(*) ! sigma to correct + + integer nmax + parameter (nmax=60) + + double precision th1, th2, dt, tc0, tcn + real t, tnorm + real tcalc(0:nmax) + real slope(0:nmax), x + integer i, j, n + + external spline, abscor1 + real spline + double precision abscor1 + + if (abs(mode) .gt. 3) stop 'illegal mode' + + if (mode .eq. 0) then + do i=1,npt + yy(i)=1.0 + enddo + else + tnorm=abscor1(dble(muR), dble(ri), dble(ra), 0.0D0) + endif + if (npt .le. nmax) then + do i=1,npt + t=abscor1(dble(muR), dble(ri), dble(ra), dble(twoth(i)*0.5)) + if (mode .gt. 0) t=1/t + yy(i)=yy(i)*t + if (abs(mode) .eq. 2) then + sig(i)=sig(i)*t + endif + enddo + else + th1=90. + th2=0. + do i=1,npt + th1=min(th1, max(0.0D0,dble(twoth(i)*0.5-90/nmax))) + th2=max(th2, min(90.D0,dble(twoth(i)*0.5+90/nmax))) + enddo + n=nint(nmax*min(1.D0,(th2-th1)/90)) + dt=(th2-th1)/n + tc0=abscor1(dble(muR), dble(ri), dble(ra), th1) + tcalc(0)=tc0 + tcn=abscor1(dble(muR), dble(ri), dble(ra), th2) + tcalc(n)=tcn + do i=1,n-1 + tcalc(i)=abscor1(dble(muR), dble(ri), dble(ra), th1+dble(i*dt)) + enddo + slope(0)=-10.*(tc0-abscor1(dble(muR),dble(ri),dble(ra),th1+dt*0.1)) + slope(n)= 10.*(tcn-abscor1(dble(muR),dble(ri),dble(ra),th2-dt*0.1)) + do i=1,n-1 + slope(i)=(tcalc(i+1)-tcalc(i-1))*0.5 + enddo + do i=1,npt + x=(twoth(i)*0.5-th1)/dt + j=min(n-1,int(x)) + t=spline(x-j, tcalc(j), slope(j)) + if (mode .gt. 0) t=1/t + yy(i)=yy(i)*t + if (abs(mode) .eq. 2) then + sig(i)=sig(i)*t + endif + enddo + endif + if (mode .ne. 0) then + if (mode .lt. 0) tnorm=1/tnorm + do i=1,npt + yy(i)=yy(i)*tnorm + if (abs(mode) .eq. 2) then + sig(i)=sig(i)*tnorm + endif + enddo + endif + end + + + real function spline(x, y, s) + + real x, y(2), s(2) + real dy + + dy=y(2)-y(1) + spline=y(1)+x*((x-1)*(s(2)*x+s(1)*(x-1))+dy*x*(3-2*x)) + end + + + double precision function abscor1(muR, ri, ra, th) + + double precision th, mur, ri, ra + + double precision sum, sums, p, w, r, dphi + double precision dr, phi, ri2, pa + integer nr, nf, j, k, ip + + double precision path + + double precision cosd,x + cosd(x)=cos(x/180.*3.14159265) + + nr=100 + nf=200 + + ri2=ri*ri + dr=(1-ri)/nr + ! simpson integration over r + sums=0 + do j=0,nr + if (mod(j,2) .eq. 1) then + w=4./3. + else if (j .ne. 0 .and. j .ne. nr) then + w=2./3. + else + w=1./3. + endif + r=min(1.D0,ri+j*dr) + ! simple integration over phi (simpson would not help, as the integration goes over a circle) + sum=0 + dphi=360./nf + do k=1,nf + phi=(k-0.5)*dphi + pa=path(phi, th, r, ri2) + ip=nint(pa*10) + p=mur*pa + if (ra .eq. 0) then + sum=sum+exp(-p) + else + sum=sum+exp(-p)*max(0D0,1D0-r*abs(cosd(phi+th))*ra) + endif + enddo + sums=sums+w*sum*r*dphi + enddo + abscor1=sums/(1.+ri)/dble(nr*180) + end + + + double precision function path(phi, th, r, ri2) +! +! calculate path length through a hollow cylinder sample of an +! outer radius ro=1 and an inner radius ri +! +! phi: angle (scatterer,sample center,y-direction) +! r: distance scatterer - sample center +! th: scattering angle theta (deg) +! ri2 = ri*ri +! the incoming beam has direction -theta, the outgoing beam direction +theta + + + double precision phi, th, r, ri2 + + double precision r1, r2, p1, p2, ph + + double precision sind, cosd, x + cosd(x)=cos(x/180.*3.14159265) + sind(x)=sin(x/180.*3.14159265) + + ph=mod(phi,360.D0) + if (ph .gt. 180.D0) ph=360.D0-ph ! problem is symmetric (y-axis is mirror axis) + + r1=(r*cosd(th-ph))**2 ! square of distance of incoming beam from center + p1=sqrt(1.0D0-r1)-r*sind(th-ph) ! path from entry point + if (r1 .lt. ri2 .and. ph .gt. th) then ! incoming beam cuts inner cylinder before scatterer + p1=p1-2.D0*sqrt(ri2-r1) ! subtract path through inner cylinder + endif + + r2=(r*cosd(th+ph))**2 ! square of distance of outgoing beam from center + p2=sqrt(1-r2)-r*sind(th+ph) ! path to exit point + if (r2 .lt. ri2 .and. ph .gt. 180.D0-th) then ! outgoing beam cuts inner cylinder after scatterer + p2=p2-2.D0*sqrt(ri2-r2) ! subtract path through inner cylinder + endif + + path=p1+p2 + end diff --git a/gen/fit_array.f b/gen/fit_array.f new file mode 100644 index 0000000..4a21c5a --- /dev/null +++ b/gen/fit_array.f @@ -0,0 +1,92 @@ + subroutine fit_get_array(name, array, maxn, retn) + + character name*(*) + integer maxn, retn + real array(maxn) + + include 'fit.inc' + + integer m, l + character nam*16 + + m=maxn + call str_upcase(nam, name) + call str_trim(nam, nam, l) + goto (1,98,2,98,3,98,4,98,5,98,6) index('P E X Y S W ',nam(1:l+1)) +98 retn=0 + +1 if (ni .lt. 0) call fit_print(2) ! recalc exp.int + call fit_cop_array0(u, nu+ni, array, m) + goto 99 + +2 if (ni .lt. 0) call fit_print(2) ! recalc exp.int + call fit_cop_array0(werr, nu+ni, array, m) + goto 99 + +3 call fit_cop_array0(xval(nxmin), nxmax-nxmin+1, array, m) + goto 99 + +4 call fit_cop_array0(YVAL(nxmin), nxmax-nxmin+1, array, m) + goto 99 + +5 call fit_cop_array0(sig(nxmin), nxmax-nxmin+1, array, m) + goto 99 + +6 call fit_cop_array0(rmon(nxmin), nxmax-nxmin+1, array, m) + goto 99 + +99 retn=m + end + + + subroutine fit_put_array(name, array, maxn) + + character name*(*) + integer maxn + real array(maxn) + + include 'fit.inc' + + integer m, l + character nam*16 + + m=nxmax-nxmin+1 + if (maxn .ne. m) + 1 stop 'FIT_PUT_ARRAY: array length must not change' + + call str_upcase(nam, name) + call str_trim(nam, nam, l) + goto (1,98,2,98,3,98,4,98,5,98,6) index('P E X Y S W ',nam(1:l+1)) +98 stop 'FIT_PUT_ARRAY: illegal array name' + +1 stop 'FIT_PUT_ARRAY: array P not allowed, use FIT_SET' + +2 stop 'FIT_PUT_ARRAY: array E not allowed, use FIT_SET' + +3 call fit_cop_array0(array, maxn, xval(nxmin), m) + goto 99 + +4 call fit_cop_array0(array, maxn, YVAL(nxmin), m) + goto 99 + +5 call fit_cop_array0(array, maxn, sig(nxmin), m) + goto 99 + +6 call fit_cop_array0(array, maxn, rmon(nxmin), m) + goto 99 + +99 end + + + subroutine fit_cop_array0(src, nsrc, array, maxn) + + integer maxn, nsrc + real array(maxn), src(nsrc) + + integer i + + do i=1,min(maxn, nsrc) + array(i)=src(i) + enddo + maxn=nsrc + end diff --git a/gen/fit_auto.f b/gen/fit_auto.f new file mode 100644 index 0000000..a087695 --- /dev/null +++ b/gen/fit_auto.f @@ -0,0 +1,234 @@ + subroutine fit_auto + + implicit none + + include 'fit.inc' + + call fit_findauto + call fit_set(0,0.0,0.0,0.0,0.0) + end + + + + subroutine fit_findauto + + implicit none + + include 'fit.inc' + + real wid, ewid, u5, yk, yk1, yk2, xk1, xk2, xd + character str*32 + integer l,i,k + + real voigt + + l=0 + + if (lcode(3) .eq. 0) then + xd = 1.0e37 + yk = 0 + do i=nxmin,nxmax ! find neareset x-value + if (abs(xval(i)-u(3)) .lt. xd) then + xd=abs(xval(i)-u(3)) + yk = YVAL(i) + k = i + endif + enddo + else + yk = 0. + k = (nxmin + nxmax) / 2 ! initialize k for bad cases + do i=nxmin,nxmax ! find max. intensity + if (YVAL(i) .gt. yk) then + yk = YVAL(i) + k = i + endif + enddo + endif + if (yk .le. 0) then + yk=1.0 + endif + yk1 = yk + xk1=nxmin + do i=nxmin,k ! find min. int. left + if (YVAL(i) .ne. 0. .and. YVAL(i) .lt. yk1) then + yk1 = YVAL(i) + xk1 = xval(i) + endif + enddo + yk2 = yk + xk2=nxmax + do i=k,nxmax ! find min. int. right + if (YVAL(i) .ne. 0. .and. YVAL(i) .lt. yk2) then + yk2 = YVAL(i) + xk2 = xval(i) + endif + enddo + if (lcode(2) .le. 0 .and. u(2) .eq. 0) then ! background horizontal + if (lcode(1) .gt. 0) then ! Bgr .not. fixed + u(1)=(yk1+yk2)/2 + werr(1) = max(1e-5,yk2/100,yk1/100,u(1)/10) + l=l+4 + str(l-3:l)=psho(1) + endif + else + if (lcode(2) .gt. 0) then ! dBg/dX not fixed + u(2) = (yk2-yk1)/(xk2-xk1) + werr(2) = max(1e-5,abs((yk2+yk2)/(xk2-xk1))/100.,abs(u(2)/10)) + l=l+4 + str(l-3:l)=psho(2) + endif + if (lcode(1) .gt. 0) then ! Bgr. not fixed + u(1) = yk1+(xval(k)-xk1)*u(2) + werr(1) = max(1e-5,yk2/100,yk1/100,u(1)/10) + l=l+4 + str(l-3:l)=psho(1) + endif + endif + + u5=u(5) + u(5)=0.0 + call fit_findhw(k, xval(k), wid, ewid) + u(5)=u5 + + if (lcode(3) .gt. 0) then + u(3)=xval(k) + werr(3)=ewid + l=l+4 + str(l-3:l)=psho(3) + endif + + if (lcode(7) .gt. 0) then + if (lcode(6) .gt. 0) then + u(6)=wid/10. + werr(6)=ewid + l=l+4 + str(l-3:l)=psho(6) + endif + u(7)=wid + werr(7)=ewid + l=l+4 + str(l-3:l)=psho(7) + elseif (lcode(6) .gt. 0) then + u(6)=wid + werr(6)=ewid + l=l+4 + str(l-3:l)=psho(6) + endif + + if (lcode(4) .gt. 0) then + u(4) = yk-u(1) + werr(4) = max(1e-5, abs(sig(k))) + l=l+4 + str(l-3:l)=psho(4) + elseif (lcode(5) .gt. 0) then + u(4) = yk-u(1) + werr(4) = max(1e-5, abs(sig(k))) + yk=voigt(0.0,u(6),u(7)) + u(5)=u(4)/yk + werr(5)=werr(4)/yk + l=l+4 + str(l-3:l)=psho(5) + endif + + if (l .gt. 0 .and. isyswr .ne. 0) then + write(isyswr,'(x,2a)') 'Auto parameters: ',str(1:l) + endif + end + + + + subroutine fit_findhw(ipos, pos, hw, hwe) + + implicit none + + include 'fit.inc' + + integer ipos + real pos, hw, hwe + + real tm,t0,t,d,dd,x1,x2,halfmax + integer m,i,i1,i2 + + real fifun ! function + + if (ipos .eq. 0) then + +! find nearest point to pos + m=nxmin + d=abs(xval(nxmin)-pos) + do i=nxmin,nxmax + dd=abs(xval(i)-pos) + if (dd .lt. d) then + m=i + d=dd + endif + enddo + + else + + m=ipos + + endif + + if (nu .eq. 2) then + u(3)=pos + nu=3 ! fifun won't use u(3) if nu=2 (workaround) + endif + +! find points > half height left + +1 tm=(YVAL(m)-fifun(xval(m))) + t0=tm + halfmax=t0/2 + do i=m-1,nxmin,-1 + t=YVAL(i)-fifun(xval(i)) + if (t .gt. tm) then ! pos was not good + m=i + goto 1 + endif + if (t .le. halfmax) then + i1=i + if (t0-t .eq. 0.0) then + d=0 + else + d=(xval(i1+1)-xval(i1))/(t0-t) + endif + goto 2 + endif + t0=t + enddo + i1=nxmin + d=0 +2 x1=xval(i1)+(halfmax-t)*d + +! find points > half height right + + t0=tm + do i=m+1,nxmax + t=YVAL(i)-fifun(xval(i)) + if (t .gt. tm) then ! pos was not good + m=i + goto 1 + endif + if (t .le. halfmax) then + i2=i + if (t0 - t0 .eq. 0) then + d=0 + else + d=(xval(i2)-xval(i2-1))/(t0-t) + endif + goto 3 + endif + t0=t + enddo + i2=nxmax + d=0 +3 x2=xval(i2)-(halfmax-t)*d + if (x2 - x1 .eq. 0.0) then + x2=xval(nxmax) + x1=xval(nxmin) + endif + hw=max(abs(xval(min(m+1,nxmax))-xval(max(1,m-1)))/2,abs(x2-x1)) + hwe=hw*0.1 + if (nu .eq. 3) nu=2 ! put back fifun + end diff --git a/gen/fit_bars.f b/gen/fit_bars.f new file mode 100644 index 0000000..39a5433 --- /dev/null +++ b/gen/fit_bars.f @@ -0,0 +1,28 @@ + subroutine fit_bars(errb) +! ------------------------- + + implicit none + include 'fit.inc' + character errbar*1, errb*(*) + integer i + + 1002 FORMAT (4X,'Errorbars (Y/N, default:Yes): ',$) + + if (errb .eq. ' ') then + 102 WRITE (ISYSWR,1002) + READ (ISYSRD,'(a1)',ERR=102,END=999) ERRBAR + else + errbar=errb + endif + IF (errbar .EQ. 'N' .OR. errbar .EQ.'n' .or. + 1 errbar .eq. '0') then + do i=1,maxset + styl(i)=-abs(styl(i)) + enddo + else + do i=1,maxset + styl(i)=abs(styl(i)) + enddo + endif + autostyle=0 +999 end diff --git a/gen/fit_bgedit.f b/gen/fit_bgedit.f new file mode 100644 index 0000000..49762da --- /dev/null +++ b/gen/fit_bgedit.f @@ -0,0 +1,42 @@ + subroutine fit_bgedit(bgfile) + + include 'fit.inc' + + character bgfile*(*) + + integer l, i, iostat + character fil*128 + + if (bgfile .eq. ' ') then + write(6, '(x,a,$)') 'Enter background file: ' + read(isysrd, '(a)',err=999,end=999) fil + if (fil .eq. ' ') return + else + fil=bgfile + endif + nback=npkt + call sys_open(1, fil, 'r', iostat) + if (iostat .eq. 0) then +1 if (nback .ge. maxdat) goto 9 + read(1,*,err=9,end=9) xval(nback+1), YVAL(nback+1) + nback=nback+1 + goto 1 +9 close(1) + endif + call fit_connect('Y') + call fit_bars('N') + call fit_plot('B') + call str_trim(fil, fil, l) + call sys_open(1, fil, 'w', iostat) + if (iostat .ne. 0) goto 99 +20 print *,'write background file ', fil(1:l) + do i=npkt+1,nback + write(1, *) xval(i), YVAL(i) + enddo + close(1) + goto 100 +999 print *,'input error' + goto 100 +99 print *, 'cannot write to background file: ', fil(1:l) +100 npkt=nxmax + end diff --git a/gen/fit_command.f b/gen/fit_command.f new file mode 100755 index 0000000..9237f13 --- /dev/null +++ b/gen/fit_command.f @@ -0,0 +1,1005 @@ + SUBROUTINE FIT_COMMAND(input) +C ----------------------------- + + include 'fit.inc' + + character INPUT*(*) !! commandfile name, if blank: input from terminal + + character*5 prompt/'fit> '/ + integer maxlev + parameter (maxlev=32) + integer sp, st(maxlev) ! lun stack for nested @ + + integer lun + logical terminal + integer rlun, iostat + character fullm*1 + + external fit_docmd + + quit=.false. + sp=0 + if (input .eq. ' ') then + rlun=isysrd + terminal=.true. + else + terminal=.false. + rlun=0 + cmdline(1:1)='@' + cmdline(2:)=input + linlen=len(input)+1 + sp=0 + goto 20 + endif + +10 write(isyswr, *) +11 continue +12 if (terminal .and. sp .eq. 0) then + call sys_rd_line(cmdline, linlen, prompt) + if (linlen .lt. 0) return + if (linlen .eq. 0) goto 12 + cmdline=cmdline(1:linlen) + if (cmdline(1:linlen) .eq. ' ') goto 12 + else + read(rlun, '(a)', end=998, err=998) cmdline + call str_trim(cmdline, cmdline, linlen) + if (cmdline(1:linlen) .eq. ' ') goto 12 + write(isyswr, *) prompt, cmdline(1:linlen) + endif + +20 if (cmdline(1:1).eq. '@' .and. linlen .gt. 1) then + + call sys_get_lun(lun) + if (sp .ge. maxlev .or. lun .lt. 0) then + write(isyswr,*) 'To many @ nested' + if (lun .ge. 0) call sys_free_lun(lun) + else + call sys_open(lun, cmdline(2:linlen), 'r', iostat) ! readonly + if (iostat .ne. 0) then + write(isyswr,*) 'Can not open ',cmdline(2:linlen) + else + sp=sp+1 + st(sp)=rlun + rlun=lun + endif + endif + + else + + isysrd=rlun + call sys_getenv('FIT_ERRHANDLING', fullm) + call str_upcase(fullm, fullm) + if (fullm .ne. 'N') then + call sys_try(fit_docmd) + else + call fit_docmd + endif + isysrd=5 + if (quit) then + call gra_close !cgt + return + endif + if (autoplot) then + if (npkt .ne. 0) then + CALL fit_PLOT('s') ! cgt + endif + endif + + endif + goto 10 + +998 if (sp .le. 0) return + close(rlun) + if (sp .gt. 1) call sys_free_lun(rlun) + rlun=st(sp) + if (rlun .eq. 0) return + sp=sp-1 + goto 11 + + end + + + + subroutine fit_docmd +C -------------------- + + implicit none + include 'fit.inc' + + real rarg, rpar(maxset) + character line*8192, opt*32 + integer l,i,iarg,ll + logical done + +! functions + logical arg_check_cmd, arg_check_opt + + linlen=min(linlen,len(cmdline)-1) + cmdpos=0 + argok=.true. + + separator='=' + call arg_gen(i,cmdlen) + if (i .ne. 0) cmdline(1:i+cmdlen)=cmdline(i+1:i+cmdlen) + + if (cmdline(cmdpos:cmdpos) .eq. '=') then ! SET can be omitted + cmdpos=0 + goto 10 + endif + + do i=nplug,1,-1 + done=.false. + call sys_call_i(plug_cmds(i), done) + if (done) return + enddo + + if (arg_check_cmd('INFO',1)) then + + argok=.false. + call arg_par_sym_num(iarg, i, l) + if (iarg .eq. 0) then + iarg=-2 + i=3 + endif + if (iarg .eq. -2) then ! was number + call str_trim(fillis, fillis, l) + print '(x,a,i6,2a)','Ntot=',npkt,'; Filelist=',fillis(1:l) + call sym_list(isyswr, 1, i, ' ') + else if (iarg .eq. -1) then ! was name + call meta_show(cmdline(i+1:i+l)) + else ! was parameter name + print *,cmdline(i+1:i+l),'=',u(iarg) + endif + + elseif (arg_check_cmd('HELP',1)) then + + call arg_str(line) + call fit_help(line) + + elseif (arg_check_cmd('BARS',3)) then + + call arg_str(line(1:1)) + call fit_bars(line(1:1)) + + elseif (arg_check_cmd('CONNECT',3)) then + + call arg_str(line(1:1)) + call fit_connect(line(1:1)) + + elseif (arg_check_cmd('STYLE',3)) then + + call fit_style(0,0) + + elseif (arg_check_cmd('COLORS',3)) then + + call arg_int(iarg, 999) + call fit_colors(iarg) + if (iarg .eq. 999) then + print *,'maximum available number of colors used' + else + print *,iarg,' colors used' + endif + + elseif (arg_check_cmd('NCURVES',7)) then + + call arg_int(iarg, 0) + call fit_ncurves(iarg) + + elseif (arg_check_cmd('LEGEND',3)) then + + call arg_str(line) + print * + call fit_legend(line) + if (line(1:1) .eq. '@') then + print '(x,2(a,f5.1))','draw legend at ',legendx, ',',legendy + elseif (legend .ge. 1) then + print *,'draw legend using ',userpar(usernp+legend) + elseif (legend .lt. 0) then + print *,'draw custom legend' + else + print *,'draw no legend' + endif + + elseif (arg_check_cmd('ERR',3)) then + + call arg_real(rarg, 0.0) + if (argok) call fit_err(rarg) + + elseif (arg_check_cmd('RESERR',5)) then + + call fit_reserr + + elseif (arg_check_cmd('EPSI',3)) then + + call arg_real(rarg, 0.0) + if (argok) call fit_epsi(rarg) + + elseif (arg_check_cmd('VTEST',4)) then + + call arg_real(rarg, 0.0) + if (argok) call fit_vtest(rarg) + + elseif (arg_check_cmd('PRI',3)) then + + call arg_int(iarg, 0) + if (argok) call fit_pri(iarg) + + elseif (arg_check_cmd('DAT',3)) then + + call arg_str(line) + call fit_dat(line) + + elseif (arg_check_cmd('RANGE',3)) then + + call arg_real(rpar(1), 0.0) + call arg_real(rpar(2), 0.0) + call arg_str(line) + call fit_range(rpar(1), rpar(2), line) + + elseif (arg_check_cmd('OPTIONS',3)) then + + call arg_str(line) + call fit_dat_options(line) + + elseif (arg_check_cmd('LINK',4)) then + + call arg_str(line) + call fit_link(line) + + elseif (arg_check_cmd('NEXT',1)) then + + call fit_dat(' ') + call fit_mon(0.) + call fit_win(0.0,0.0) + call fit_bars(' ') + call fit_fun(-1,0,0.0,0.0) + + elseif (arg_check_cmd('MERGE',3)) then + + call arg_real(rarg, 0.0) + if (argok) then + call fit_merge(rarg) + call fit_auto_mon + endif + + elseif (arg_check_cmd('SUBTRACT',3)) then + + call arg_str(line) + call fit_subtract(line) + + elseif (arg_check_cmd('ADD',3)) then + + do i=1,maxset + call arg_real(rpar(i), 1.0) + enddo + if (argok) then + call fit_add(rpar,maxset) + else + print * + 1,'Command ADD: add one or more constant(s) to the dataset(s)' + print *,'Use command LINK to link new data.' + print * + endif + + elseif (arg_check_cmd('MULTIPLY',3)) then + + do i=1,maxset + call arg_real(rpar(i), 1.0) + enddo + if (argok) call fit_multiply(rpar,maxset) + + elseif (arg_check_cmd('ABSKOR',3)) then + + call arg_real(rarg, 0.0) + call arg_real(rpar(1), 0.0) + if (argok) call fit_abskor(rarg, rpar(1)) + + elseif (arg_check_cmd('TRANS',5)) then + + call arg_lit(opt) + call arg_real(rarg, 0.0) + call fit_trans(opt, rarg) + + elseif (arg_check_cmd('PLOG',4)) then + + call arg_real(rarg, shift(1)) + call fit_plog(1, rarg) + print *,'plots with logarithmic y-axis' + + elseif (arg_check_cmd('PLIN',4)) then + + call arg_real(rarg, shift(0)) + call fit_plog(0, rarg) + print *,'plots with linear y-axis' + + elseif (arg_check_cmd('PLOT',1)) then + + call arg_lit(opt) + call str_upcase(opt,opt) + if (arg_check_opt(opt, 'AUTO', 1) .or. + 1 arg_check_opt(opt, '1', 1)) then + autoplot = .true. + call sys_setenv('FIT_AUTOPLOT', '1') + call sys_saveenv + return + elseif (arg_check_opt(opt, 'OFF', 1) .or. + 1 arg_check_opt(opt, '0', 1)) then + autoplot = .false. + call sys_setenv('FIT_AUTOPLOT', '0') + call sys_saveenv + call gra_close !cgt + return + endif + if (arg_check_opt(opt, 'YES', 1) .or. + 1 arg_check_opt(opt, 'PRINT', 1)) then + opt='Y' + else + opt=' ' + endif + if (nxmin .ge. nxmax) then + if (npkt .eq. 0) then + write(isyswr, *) 'no data loaded' + else + write(isyswr,*)'no data points present - enlarge fit window' + endif + else + if (autoplot) call gra_close + CALL fit_PLOT(opt) + endif + + elseif (arg_check_cmd('BGEDIT', 2)) then + + call arg_str(line) + call fit_bgedit(line) + + elseif (arg_check_cmd('CHOOSER',3)) then + + call cho_choose('?') + + elseif (arg_check_cmd('SCALE',2)) then + + do i=1,4 + call arg_real(rpar(i), 0.0) + enddo + if (argok) call fit_scale(rpar(1),rpar(2),rpar(3),rpar(4)) + + elseif (arg_check_cmd('RSC',3)) then + + call fit_rsc + + elseif (arg_check_cmd('TITLE',3)) then + + call arg_str(line) + CALL fit_TITLE(line) + + elseif (arg_check_cmd('MON',3)) then + + call arg_real(rarg, 0.0) + if (argok .and. nxmin .lt. nxmax) call fit_mon(rarg) + + elseif (arg_check_cmd('USEMON',3)) then + + call arg_int(iarg, 0) + if (argok) call fit_usemon(iarg) + + elseif (arg_check_cmd('FUN',3)) then + + if (nxmin .ge. nxmax) then + if (npkt .eq. 0) then + write(isyswr, *) 'no data loaded' + else + write(isyswr,*)'no data points present - enlarge fit window' + endif + else + call arg_int(iarg, -1) + if (argok) call fit_fun(iarg,0,0.0,0.0) + endif + + elseif (arg_check_cmd('AUTO',2)) then + + call fit_auto + + elseif (arg_check_cmd('NEWPEAK',3)) then + + if (nu .gt. 0) call fit_newpeak + + elseif (arg_check_cmd('LOAD',4)) then + + call arg_str(line) + if (line .eq. ' ') then + write(isyswr, '(/X,A/X,A,$)') 'Load parameter-file' + 1 , 'Filename: ' + read(isysrd, '(a)',end=999,err=999) line + endif + if (line .ne. ' ') call fit_load(line) + + elseif (arg_check_cmd('FIT',1)) then + + if (nu .le. 0) then + write(isyswr, *) 'Nothing to fit' + else + call arg_int(iarg, 0) + if (argok) call fit_fit(iarg) + endif + +c elseif (arg_check_cmd('TEST',1)) then +c +c call fit_test + + elseif (arg_check_cmd('MIN',1)) then + + if (nu .le. 0) then + write(isyswr, *) 'Nothing to fit' + else + call arg_int(iarg, 0) + if (argok) call fit_min(iarg) + endif + + elseif (arg_check_cmd('MIG',3)) then + + if (nu .le. 0) then + write(isyswr, *) 'Nothing to fit' + else + call arg_int(iarg, 0) + if (argok) call fit_mig(iarg) + endif + + elseif (arg_check_cmd('SIM',3)) then + + if (nu .le. 0) then + write(isyswr, *) 'Nothing to fit' + else + call arg_int(iarg, 0) + if (argok) call fit_sim(iarg) + endif + + elseif (arg_check_cmd('TRUERR',3)) then + + call arg_par(iarg) + call arg_real(rarg, 1.0) + if (argok) call fit_true_err(iarg,rarg) + + elseif (arg_check_cmd('COVAR',3)) then + + call fit_covar + + elseif (arg_check_cmd('SET',3)) then + + goto 10 + + elseif (arg_check_cmd('LIM',3)) then + + call arg_par(iarg) + call arg_real(rpar(1), 0.0) + call arg_real(rpar(2), 0.0) + if (argok) then + call fit_lim(iarg, rpar(1), rpar(2)) + call fit_print(1) + endif + + elseif (arg_check_cmd('FIX',3)) then + + call arg_par(iarg) + if (argok) call fit_fix(iarg) + call arg_par(iarg) + do while (argok .and. iarg .ne. 0) + call fit_fix(iarg) + call arg_par(iarg) + enddo + + elseif (arg_check_cmd('COR',3)) then + + separator='=' + call arg_par(iarg) + separator='*' + call arg_par(i) + separator='+' + call arg_real(rarg, 1.0) + call arg_real(rpar(1), 0.0) + if (argok) call fit_cor(iarg, i, rarg, rpar(1)) + + elseif (arg_check_cmd('REL',3)) then + + call arg_par(iarg) + if (argok) call fit_rel(iarg) + call arg_par(iarg) + do while (argok .and. iarg .ne. 0) + call fit_rel(iarg) + call arg_par(iarg) + enddo + + elseif (arg_check_cmd('WIN',1)) then + + call arg_real(rarg, 0.0) + call arg_real(rpar(2), 0.0) + if (argok) CALL fit_win(rarg, rpar(2)) + + elseif (arg_check_cmd('EXCLUDE', 4)) then + + do i=1,4 + call arg_real(rpar(i), 0.0) + enddo + if (argok) call fit_exclude(rpar(1),rpar(2),rpar(3),rpar(4)) + + elseif (arg_check_cmd('INCLUDE', 4)) then + + do i=1,4 + call arg_real(rpar(i), 0.0) + enddo + if (argok) call fit_include(rpar(1),rpar(2),rpar(3),rpar(4)) + + elseif (arg_check_cmd('KEEP',4)) then + + call arg_str(line(1:1)) + call fit_keep(line(1:1)) + + elseif (arg_check_cmd('FILE',4)) then + + call arg_str(line) + rarg=0 + read(line,'(f20.0)',err=11,end=11) rarg + l=index(line,',') + if (l .eq. 0) goto 11 + line=line(l+1:) +11 call fit_file(rarg, line) + + elseif (arg_check_cmd('EXPORT',3)) then + + call arg_lit(opt) + rarg=0 + read(opt,*,err=12,end=12) rarg + call arg_lit(opt) +12 call arg_str(line) + call fit_export(rarg, opt, line) + + elseif (arg_check_cmd('FCN',3)) then + + call fit_check_range + call fnctn(x,amin) + call fit_print(1) + + elseif (arg_check_cmd('LIST',1)) then + + CALL fit_LIST + + elseif (arg_check_cmd('OUT',3)) then + + if (nu .le. 0) then + write(isyswr, *) 'Nothing to save' + else + CALL fit_OUT + endif + + elseif (arg_check_cmd('WRITE',5)) then + + call fit_write(' ') + + elseif (arg_check_cmd('K',1)) then + + call fit_write(' ') + + elseif (arg_check_cmd('OPEN',4)) then + + call arg_str(line) + call fit_write(line) + + elseif (arg_check_cmd('SAVE',4)) then + + call arg_str(line) + call fit_save(line) + + elseif (arg_check_cmd('FULLMESS',4)) then ! on error write full message and exit + + call sys_setenv('FIT_ERRHANDLING', 'N') + call sys_saveenv + + elseif (arg_check_cmd('EXIT',2) .or. arg_check_cmd('BYE',3)) then + + quit=.true. + + elseif (arg_check_cmd('QUIT',2) .or. arg_check_cmd('END',3)) then + + call gra_print + stop 'quit FIT' + + else + + write(isyswr, '(/5X,3A)' ) + 1 'Unknown command: "',cmdline(1:cmdlen),'"' + + endif + + return + +999 print *,'input error' + return + + ! SET command + +10 separator='=' + call arg_par_sym_num(iarg, i, l) + if (iarg .eq. -2) iarg=i ! was parameter number + if (iarg .eq. -1) then ! was name + call arg_str(line) + argok=.false. + call arg_real(rarg, none) + if (rarg .ne. none .and. cmdline(cmdpos+1:) .eq. ' ') then + call fit_put_real(cmdline(i+1:i+l), rarg) + call meta_show(cmdline(i+1:i+l)) + else + call str_trim(line, line, ll) + call fit_put_str(cmdline(i+1:i+l), line(1:ll)) + if (cmdline(i+1:i+l) .eq. 'TITLE') then + itit=line(1:ll) + endif + call meta_show(cmdline(i+1:i+l)) + endif + return + endif + call arg_real(rpar(1), 0.0) + call arg_real(rpar(2),-1.0) + call arg_real(rpar(3), 0.0) + call arg_real(rpar(4),-1.0) + if (argok) then + call fit_set(iarg, rpar(1), rpar(2), rpar(3), rpar(4)) + call fit_print(1) + endif + end + + + + logical function arg_check_cmd(name, abbr) +! ------------------------------------------ + + implicit none + + include 'fit.inc' + + character name*(*) ! test for that name + integer abbr ! minimum characters for abbreviation + + arg_check_cmd=name(1:min(cmdlen,len(name))) .eq. cmdline(1:cmdlen) + 1 .and. cmdlen .ge. abbr + end + + + + logical function arg_check_opt(opt, name, abbr) +! ----------------------------------------------- + + implicit none + + character opt*(*) ! test option + character name*(*) ! for that name + integer abbr ! minimum characters for abbreviation + + integer l + + call str_trim(opt, opt, l) + l=min(l, len(name)) + arg_check_opt=name(1:l) .eq. opt(1:l) .and. l .ge. abbr + end + + + + subroutine arg_gen(start, length) +! --------------------------------- + + implicit none + + include 'fit.inc' + + integer start, length + + integer p,l,ispc,icom,isep + + p=cmdpos + l=linlen + + if (p .ge. l) goto 9 + do while (cmdline(p+1:p+1) .eq. ' ') + p=p+1 + if (p .ge. l) goto 9 + enddo + start=p +! find separator (one of space, comma, custom separator) + ispc=index(cmdline(p+1:l), ' ') + if (ispc .eq. 0) ispc=l+1 + icom=index(cmdline(p+1:l), ',') + if (icom .eq. 0) icom=l+1 + isep=index(cmdline(p+1:l), separator) + if (isep .eq. 0) isep=l+1 + + p=start+min(ispc,icom,isep)-1 + + length=max(1,p-start) +! skip spaces + do while (cmdline(p+1:p+1) .eq. ' ') + p=p+1 + if (p .ge. l) goto 2 + enddo +2 if (cmdline(p+1:p+1) .eq. ',' .or. + 1 cmdline(p+1:p+1) .eq. separator) p=p+1 + call str_upcase(cmdline(start+1:p),cmdline(start+1:p)) + cmdpos=p + separator=',' + return + +9 length=1 + start=p + separator=',' + end + + + subroutine arg_err(start) +! ------------------------- + + implicit none + include 'fit.inc' + integer start + + character tab*132/' '/ + + if (argok) then + print '(6x,a)',cmdline(1:linlen) + print '(5x,a,a)',tab(1:start+1),'^ syntax error' + cmdpos=linlen + argok=.false. + endif + end + + + + + subroutine arg_real(rarg, rdefault) +! ----------------------------------- + + implicit none + + include 'fit.inc' + + real rarg, rdefault + integer p,l,j + character rfmt*12 + + call arg_gen(p,l) + if (cmdline(p+1:p+l) .eq. ' ') then + rarg=rdefault + else + do j=1,nu + if (cmdline(p+1:p+l) .eq. psho(j) .or. + 1 cmdline(p+1:p+l) .eq. pnam(j)) then + rarg=u(j) + return + endif + enddo + write(rfmt, '(a,i2,a)') '(BN,F',l,'.0)' + read(cmdline(p+1:p+l), rfmt, err=91,end=91) rarg + endif + return +91 call arg_err(p) + rarg=rdefault + end + + + + subroutine arg_int(iarg, idefault) +! ---------------------------------- + + implicit none + + include 'fit.inc' + + integer iarg, idefault + + integer p,l + real r + character rfmt*12 + + call arg_gen(p,l) + if (cmdline(p+1:p+l) .eq. ' ') then + iarg=idefault + else + write(rfmt, '(a,i2,a)') '(BN,F',l,'.0)' + read(cmdline(p+1:p+l), rfmt, err=91,end=91) r + iarg=nint(r) + if (abs(r-iarg) .gt. abs(r/1e5)) goto 91 + endif + return +91 call arg_err(p) + iarg=idefault + end + + + function get_par_no(parname) +! ---------------------------- + implicit none + include 'fit.inc' + + character*(*) parname + + integer get_par_no + integer j + real r + character rfmt*12 + + do j=1,nu + if (parname .eq. psho(j) .or. + 1 parname .eq. pnam(j)) then + get_par_no = j + return + endif + enddo + write(rfmt, '(a,i2,a)') '(BN,F',len(parname),'.0)' + read(parname, rfmt, err=91,end=91) r + get_par_no=nint(r) + if (r .lt. 0 .or. abs(r-get_par_no) .gt. abs(r/1e5)) goto 91 + return + +91 get_par_no = 0 + end + + + subroutine arg_par(iarg) +! ------------------------ + + implicit none + + include 'fit.inc' + + integer iarg + + integer p,l,j + real r + character rfmt*12 + integer get_par_no + + call arg_gen(p,l) + if (cmdline(p+1:p+l) .eq. ' ') then + iarg=0 + else + iarg = get_par_no(cmdline(p+1:p+l)) + if (iarg .le. 0) then + call arg_err(p) + iarg=0 + endif + endif + return + end + + + subroutine arg_par_sym_num(iarg, p, l) +! -------------------------------------- +! +! returns: iarg = -2: p is given number +! iarg = -1: cmdline(p+1:p+l) is literal +! iarg = 0: empty argument +! iarg > 0: parameter number of given parameter name cmdline(p+1:p+l) +! + + implicit none + + include 'fit.inc' + + integer iarg, p,l + + integer j + real r + character rfmt*12 + + call arg_gen(p,l) + if (cmdline(p+1:p+l) .eq. ' ') then + iarg=0 + else + do j=1,nu + if (cmdline(p+1:p+l) .eq. psho(j) .or. + 1 cmdline(p+1:p+l) .eq. pnam(j)) then + iarg=j + return + endif + enddo + if (ni .gt. 0 .and. cmdline(p+1:p+l) .eq. 'INTEXP') then + iarg = nu + ni + return + endif + write(rfmt, '(a,i2,a)') '(BN,F',l,'.0)' + read(cmdline(p+1:p+l), rfmt, err=91,end=91) r + p=nint(r) + if (abs(r-p) .gt. abs(r/1e5)) goto 91 + iarg=-2 + endif + return +91 iarg=-1 + end + + + subroutine arg_str(str) +! ----------------------- +! +! this function does NOT step forward to the next item +! as it must be the last argument +! + implicit none + include 'fit.inc' + + character str*(*) + integer i,p + + if (cmdpos .lt. linlen) then + if (cmdline(cmdpos+1:cmdpos+1) .eq. '"' .or. + 1 cmdline(cmdpos+1:cmdpos+1) .eq. '''') then + p=cmdpos+1 + if (p .lt. linlen) then + i=index(cmdline(p+1:),cmdline(p:p)) + if (i .eq. 1) then + str=' ' + else if (i .eq. 0) then + str=cmdline(p+1:linlen) + else + str=cmdline(p+1:p+i-1) + endif + else + str=' ' + endif + else + call str_first_nonblank(cmdline(cmdpos+1:linlen),i) + if (i .eq. 0) i=1 + str=cmdline(cmdpos+i:linlen) + endif + else + str=' ' + endif + end + + + subroutine arg_lit(str) +! ----------------------- + + implicit none + include 'fit.inc' + + character str*(*) + integer l,i + + if (cmdpos .lt. linlen) then + l=index(cmdline(cmdpos+1:linlen),',') + if (l .eq. 0) then + call str_first_nonblank(cmdline(cmdpos+1:linlen),i) + if (i .eq. 0) i=1 + str=cmdline(cmdpos+i:linlen) + cmdpos=linlen + else + if (l .eq. 1) then + str=' ' + else + call str_first_nonblank(cmdline(cmdpos+1:cmdpos+l-1),i) + if (i .eq. 0) i=1 + str=cmdline(cmdpos+i:cmdpos+l-1) + endif + cmdpos=cmdpos+l + endif + else + str=' ' + endif + end + + + subroutine fit_usercmd(sub) + + include 'fit.inc' + external sub + + integer i,funno + integer sys_adr_i + + if (nplug+1 .gt. maxplug) then + print *,'too much plug-in commands' + RETURN + endif + funno=sys_adr_i(sub) + do i=1,nplug + if (plug_cmds(i) .eq. funno) RETURN + enddo + nplug=nplug+1 + plug_cmds(nplug)=funno + end diff --git a/gen/fit_connect.f b/gen/fit_connect.f new file mode 100644 index 0000000..c6fd65c --- /dev/null +++ b/gen/fit_connect.f @@ -0,0 +1,29 @@ + subroutine fit_connect(conn) +! ---------------------------- + + implicit none + include 'fit.inc' + character conc*1, conn*(*) + integer i + + 1002 FORMAT (4X,'Connect lines (Y/N, default:No): ',$) + + if (conn .eq. ' ') then + 102 WRITE (ISYSWR,1002) + READ (ISYSRD,'(a1)',ERR=102,END=999) CONC + else + conc=conn + endif + IF (conc .EQ. 'Y' .OR. conc .EQ.'y' .or. + 1 conc .eq. '1') then + do i=1,maxset + styl(i)=mod(styl(i),10)+sign(10,styl(i)) + enddo + else + do i=1,maxset + styl(i)=mod(styl(i),10) + enddo + endif + autostyle=0 +999 end + diff --git a/gen/fit_cor.f b/gen/fit_cor.f new file mode 100644 index 0000000..38ec612 --- /dev/null +++ b/gen/fit_cor.f @@ -0,0 +1,54 @@ + subroutine FIT_COR(K,K1,FAC,OFF) +C -------------------------------- + + include 'fit.inc' + + integer k,k1 + real fac, off + + integer j + + if (ififu .eq. 6) then + write(isyswr,*) 'Strange: correlation not possible' + return + endif + + if (k.gt.nu .or. k.le.0) then + write(isyswr,'(4x,a,i3)') 'Illegal parameter no.:',k + endif + if (k1.gt.nu .or. k1.le.0) then + write(isyswr,'(4x,a,i3)') 'Illegal parameter no.:',k1 + return + endif + if (k.gt.nu .or. k.le.0) return + + if (icsw(k) .lt. 0 .or. icsw(k) .gt. 0 .and. icto(k) .ne. k1) then + write (isyswr,'(4x,3a)') + 1 pnam(k),' already correlated to ',pnam(icto(k)) + return + endif + + j=k1 + do while (icsw(j) .ne. 0) + if (j .eq. k) goto 9 + j=icto(j) + enddo +9 if (j .eq. k) then + write(isyswr,*) 'recursive correlation not allowed' + return + endif + + if (lcode(k) .gt. 0) lcode(k)=-lcode(k) + icsw(k)=1 + icto(k)=k1 + cfac(k)=fac + coff(k)=off + if (off .eq. 0) then + write (isyswr,'(/4x,5a,f7.3)') + 1 'Correlation: ',pnam(k),' = ',pnam(k1),' *',fac + else + write (isyswr,'(/4x,5a,f7.3,a,g12.5)') + 1 'Correlation: ',pnam(k),' = ',pnam(k1),' *',fac,' +',off + endif + call extoin + end diff --git a/gen/fit_dat.f b/gen/fit_dat.f new file mode 100644 index 0000000..980e7b6 --- /dev/null +++ b/gen/fit_dat.f @@ -0,0 +1,718 @@ + subroutine fit_dat(filenames) + + character*(*) filenames + + integer iret, fit_dat_opt + + iret=fit_dat_opt(filenames, 0, 0.0) ! option 0: standard + end + + + subroutine fit_link(filenames) + + character*(*) filenames + + integer iret, fit_dat_opt + + iret=fit_dat_opt(filenames, 1, 0.0) ! option 1: link to existing data + end + + + subroutine fit_dat_merge(filenames, step) + + character*(*) filenames + real step + + integer iret, fit_dat_opt + + iret=fit_dat_opt(filenames, 2, step) ! option 2: merge read data + end + + + subroutine fit_open(filenames) + + character*(*) filenames + + integer iret, fit_dat_opt + + iret=fit_dat_opt(filenames, 4, 0.0) ! option 4: reads last.fit3 + end + + + subroutine fit_dat_next(filenames, flag) + + character*(*) filenames + integer flag ! input: 0: start read, 1: read next file, 2: read next range + ! output: 0: end of list reached, 1: o.k., no range, 2: o.k., next range + + + call fit_dat_next_opt(filenames, flag, 0, 0.0) + end + + + subroutine fit_dat_next_opt(filenames, flag, opt, step) + + character*(*) filenames + integer flag ! input: 0: start read, 1: read next file, 2: read next range + ! output: 0: end of list reached, 1: o.k., no range, 2: o.k., next range + integer opt ! 0: DAT, 1: LINK, 2: DAT&MERGE + real step + + integer lopt, fit_dat_opt + integer iret + integer idx/0/ + + logical silent, silent0 + common/fit_dat_com/silent + + if (flag .eq. 0) then + call dat_set_index(1) + lopt=8 ! read 1st + else if (flag .eq. 1) then + call dat_set_index(1) + lopt=16 ! read next file + else + idx=idx+1 + lopt=24 ! read again + endif + silent0=silent + iret=fit_dat_opt(filenames, lopt+opt, step) + if (iret .eq. 0 .and. flag .eq. 2) then + call dat_set_index(1) + silent=silent0 + iret=fit_dat_opt(filenames, 16+opt, step) ! read next file + endif + if (iret .eq. 0) then + flag=0 + else + call dat_next_index(flag) + endif + end + + + integer function fit_dat_opt(filenames, opt, step) +! -------------------------------------------------- + + implicit none + + include 'fit.inc' + + character filenames*(*) + integer opt + real step + + integer n_mul + parameter (n_mul=256) + character filelist*(maxflen), sample*80 + integer i,j,l,ll,nread,n1 + integer merge, list_mode + integer fidx, sets/0/ + logical init, init_dat/.true./, purged + integer nmax, ncol, nset0 + external fit_putval, fit_fit3_read + real stp, t1, dt1, w1, tmean, wmean, ds, upar + + logical silent + common/fit_dat_com/silent + data silent/.false./ + +! setup different flags + init=mod(opt,2) .eq. 0 ! bit0=0: purge old data + merge=mod(opt,4)/2 ! bit1=1: merge data ? + if (merge .ne. 0) stp=step ! step for merge + load_state=mod(opt,8)/4 ! bit2: do a load for FitSave files + list_mode=mod(opt,32)/8 ! bit3+4: 1: read first file, 2: read next file (ignore filenames argument), 3: read again + + fit_dat_opt=1 + if (list_mode .gt. 0) then + if (list_mode .ne. 3) then + call dat_init_list + if (list_mode .eq. 1) then + call dat_filelist(filenames) + endif + endif + goto 15 + endif + fidx=1 +11 if (filenames(fidx:fidx) .eq. '+') then + fidx=fidx+1 + if (load_state .eq. 0) init=.false. + goto 11 + elseif (filenames(fidx:fidx) .eq. '&') then + fidx=fidx+1 + merge=1 + goto 11 + endif + + if (init_dat) then + call dat_init + call dat_fit3_replace(fit_fit3_read) + init_dat=.false. + endif + if (filenames(fidx:) .eq. ' ') then + if (load_state .eq. 1) then + call dat_ask_filelist(filelist + 1 , 'Hit to continue with last data') + else + call dat_ask_filelist(filelist, ' ') + endif + if (filelist .eq. ' ') then + if (load_state .eq. 1) then + filelist='last.fit3' + else + fit_dat_opt=0 + goto 91 + endif + endif + fidx=1 +12 if (filelist(fidx:fidx) .eq. '+') then + fidx=fidx+1 + if (load_state .eq. 0) init=.false. + goto 12 + elseif (filelist(fidx:fidx) .eq. '&') then + fidx=fidx+1 + merge=1 + goto 12 + endif + call str_trim(filelist,filelist(fidx:),ll) + else + call str_trim(filelist,filenames(fidx:),ll) + endif + + + if (init) then + sets=0 + call dat_init_list + else + call dat_put_filelist(fillis) + endif + + call dat_filelist(filelist(1:ll)) + filesave=filelist(1:ll) + +15 if (init) then + npkt=0 + call sym_purge(1) + temp=0 + dtemp=0 + wtemp=0 + endif + + purged=.false. + n1=npkt+1 +30 if (silent) call dat_silent + call fit_dat_init_table + call fit_ncurves(0) + if (list_mode .ne. 3) then + call dat_read_next(fit_putval, maxdat-npkt, nread + 1 , xval(npkt+1), YVAL(npkt+1), sig(npkt+1), rmon(npkt+1)) + else + call dat_read_again(fit_putval, maxdat-npkt, nread + 1 , xval(npkt+1), YVAL(npkt+1), sig(npkt+1), rmon(npkt+1)) + endif + if (nread .gt. 0) then + if (npkt .ne. 0) then + if (ymon0 .ne. ymon) then + if (ymon .eq. 0) then + ymon=ymon0 + elseif (ymon0 .eq. 0) then + if (ymon .ne. 0) then + do i=npkt+1,npkt+nread + rmon(i)=ymon + enddo + endif + else + do i=npkt+1,npkt+nread + YVAL(i)=YVAL(i)*ymon/ymon0 + sig(i)=sig(i)*ymon/ymon0 + enddo + endif + endif + else + nset=0 + ymon=ymon0 + endif + + w1=0 + j=1 + nset0=nset + nmax=npkt+nread + do while (npkt .lt. nmax) + ncol=cols(j) + do i=0,min(nmax-npkt,rows(j)*ncol-1) + if (npkt .lt. nmax) then + npkt=npkt+1 + iset(npkt)=nset+mod(i,ncol)+1 + w1=w1+rmon(npkt) ! weight for temperature stddev + endif + enddo + nset=nset+ncol + j=min(nmult,j+1) + enddo + t1=0 + dt1=0 + call sym_get_real('Temp', t1) + if (t1 .eq. 0) then + call sym_get_real('sTemp', t1) ! this is for old DMC/HRPT files + endif + call sym_get_real('dTemp', dt1) + + if (t1 .ne. 0 .and. w1 .ne. 0) then ! calculate merged temperature stddev + wmean=wtemp+w1 + tmean=(temp*wtemp+t1*w1)/wmean + dtemp=sqrt((wtemp*(dtemp**2+(temp-tmean)**2) + 1 + w1*( dt1**2+ (t1-tmean)**2))/wmean ) + temp=tmean + wtemp=wmean + endif + + if (nset .gt. maxset) goto 31 + + do i=1,npd + upar=none + call sym_get_real(userpar(usernp+i), upar) + if (upar .eq. none) then + if (pdpar(i, nset) .eq. none .and. + 1 userpar(usernp+i) .ne. 'Numor' .and. + 1 userpar(usernp+i) .ne. 'Temp') then + print *,'parameter ',userpar(usernp+i),' not found' + pdpar(i, nset)=0.0 + endif + else + if (userpar(usernp+i) .eq. 'Numor') then + if (nset0+1 .eq. nset) then + ds=0.0 + call sym_get_real('Pal', ds) + else + ds=0.1 + endif + do j=nset0+1,nset + pdpar(i, j)=upar+ds + ds=ds+0.1 + enddo + else + do j=nset0+1,nset + pdpar(i, j)=upar + enddo + endif + endif + enddo + +31 continue + ISW(1) = 0 + ISW(2) = 0 + ISW(3) = 0 + NFCN = 1 + SIGMA = 0. + + if (ififu .eq. 0) ififu=8 ! set to plot only mode +c print '(x,a,i7)','Npkt=',nread + call sym_show(1) + call meta_put('Npkt', float(nread)) + call meta_set_format('Npkt', 5003) + call meta_set_format('Numor', 5003) + call meta_set_format('Counts', 5003) + if (.not. silent) call sym_list(isyswr,2,1,' ') + sets=sets+1 + if (merge .ne. 0 .and. sets .gt. 1) then + if (npkt .gt. n1 .and. + 1 (npkt .gt. maxdat/2 .or. nset .ge. maxset)) then ! probably not enough space -> merge + nxmin=n1 + nxmax=npkt + call fit_merge(stp) + merge=1 + else + merge=2 + endif + endif + + if (keepregion) then + if (npkt .gt. n1 .and. npkt .gt. maxdat/2) then ! probably not enough space -> purge + call fit_restore_region(.true.) + purged=.true. + endif + endif + + if (list_mode .eq. 0) then + if (npkt .lt. maxdat) goto 30 + print *,'no more datapoints accepted' + endif + else if (list_mode .ne. 0) then + fit_dat_opt=0 + endif + + if (merge .eq. 2 .and. npkt .ge. n1) then ! merge (if not yet done) + nxmin=n1 + nxmax=npkt + call fit_merge(stp) + endif + if (keepregion) then + call fit_restore_region(purged) + if (purged) then + print *,'points outside window/region were purged' + endif + else + call fit_win(1.0,1.0) ! disable window + endif + + if (load_state .gt. 1) then + if (load_state .eq. 3) then ! for FitSave 3.2 and older + call dat_init_list + call dat_filelist(filnam) + load_state=0 + goto 30 + endif + else + call dat_get_filelist(fillis) + call str_trim(fillis, fillis, l) + if (.not. silent) then + print * + if (list_mode .eq. 0) then + if (fillis(1:l) .eq. ' ') then + print *,'no file read' + else + print *,'Files read: ',fillis(1:l) + endif + endif + endif + + wavlen=0 + call sym_get_real('lambda', wavlen) + call sym_get_str('Title', ll, itit) + sample=' ' + call sym_get_str('sample', l, sample) + if (sample(1:l) .ne. ' ' + 1 .and. index(itit(1:ll),sample(1:l)) .eq. 0) then + if (ll+l .lt. len(itit)) then + if (ll+l+7 .lt. len(itit)) then + itit(ll+1:)=' Sample=' + ll=ll+8 + else + ll=ll+1 + endif + itit(ll+1:)=sample + endif + endif + + call sym_show(1) + call sym_put_real('Temp', temp) + call sym_put_real('dTemp', dtemp) + call sym_put_real('Monitor', ymon) + + if (npkt .gt. 0) call fit_set(0,0.0,0.0,0.0,0.0) + endif +91 silent=.false. + end + + + subroutine fit_dat_silent + + logical silent + common/fit_dat_com/silent + + silent=.true. + end + + + subroutine fit_datraw +! --------------------- + print *,'Subroutine FIT_DATRAW no longer available' + end + + + subroutine fit_spec +! ------------------- + print *,'Subroutine FIT_SPEC is no longer available' + END + + + + subroutine fit_dat_put(mode, xx, nx, yy, ny, ss, ns, ww, nw) !! +!! ------------------------------------------------------------ + +! preconditions: (ny>0) and (nx=ny or nx=1 or nx=2) and (ns=ny or ns=1) and (nw=ny or nw=1) +! nx=1: x-values are xx(1),xx(1)+1,xx(1)+2,...,xx(1)+(nx-1) +! nx=2: x-values are xx(1),xx(2),...,xx(1)+(xx(2)-xx(1))*(nx-1) +! ns=1: ss(1) <> 0.0: sigma values are ss(1) +! ss(1) = 0.0: sigma values are sqrt(max(1.0,yy(i))) +! nw=1: weights are ww(1) + + include 'fit.inc' + + integer mode !! mode=0: purge before, mode=1: link new dataset, mode=2: link to existing dataset + integer nx, ny, ns, nw !! + real xx(nx), yy(ny), ss(ns), ww(nw) !! + + integer i,j,nread + real x0,xs + + if (mode .eq. 0) then + npkt=0 + call sym_purge(1) + endif + + if (ny .lt. 0) stop 'FIT_DAT_INT: illegal ny' + + nread=ny + if (npkt+ny .gt. maxdat) then + print *,'Too many datapoints: truncated' + nread=maxdat-npkt + endif + + j=npkt + do i=1,nread + j=j+1 + YVAL(j)=yy(i) + enddo + + j=npkt + if (nx .eq. ny) then + do i=1,nread + j=j+1 + xval(j)=xx(i) + enddo + else + x0=xx(1) + if (nx .eq. 1) then + xs=1 + elseif (nx .eq. 2) then + xs=(xval(nx)-x0)/(nx-1) + else + stop 'FIT_DAT_INT: illegal nx' + endif + x0=x0-xs + do i=nx+1,nread + j=j+1 + xval(j)=x0+xs*i + enddo + endif + + j=npkt + if (ns .eq. ny) then + do i=1,nread + j=j+1 + sig(j)=ss(i) + enddo + elseif (ns .eq. 1) then + xs=ss(1) + if (xs .eq. 0.0) then + do i=1,nread + j=j+1 + sig(j)=sqrt(max(1.0,YVAL(j))) + enddo + else + do i=1,nread + j=j+1 + sig(j)=xs + enddo + endif + else + stop 'FIT_DAT_INT: illegal ns' + endif + + j=npkt + if (nw .eq. ny) then + ymon0=ww(1) + do i=1,nread + j=j+1 + rmon(j)=ww(i) + enddo + elseif (nw .eq. 1) then + ymon0=ww(1) + do i=1,nread + j=j+1 + rmon(j)=ymon0 + enddo + else + stop 'FIT_DAT_INT: illegal nw' + endif + + if (npkt .ne. 0) then + if (mode .eq. 1) nset=nset+1 + if (ymon0 .ne. ymon) then + if (ymon .eq. 0) then + ymon=ymon0 + elseif (ymon0 .eq. 0) then + if (ymon .ne. 0) then + do i=npkt+1,npkt+nread + rmon(i)=ymon + enddo + endif + else + do i=npkt+1,npkt+nread + YVAL(i)=YVAL(i)*ymon/ymon0 + sig(i)=sig(i)*ymon/ymon0 + enddo + endif + endif + else + nset=1 + ymon=ymon0 + endif + do i=npkt+1,npkt+nread + iset(i)=nset + enddo + npkt=npkt+nread + + ISW(1) = 0 + ISW(2) = 0 + ISW(3) = 0 + NFCN = 1 + SIGMA = 0. + + nxmin=1 + nxmax=npkt + end + + + subroutine fit_putval(str, val) + + character*(*) str + real val + + include 'fit.inc' + + if (str .eq. 'ShowLevel') then + call sym_show(nint(val)) + return + elseif (str .eq. 'Monitor' .or. str .eq. 'monitor') then + ymon0=val + endif + call meta_put(str, val) + end + + + subroutine fit_fit3_read(lun,forced,nread,putval,nmax,xx,yy,ss,ww) +! ------------------------------------------------------------------ + implicit none + + include 'fit.inc' + + integer lun, forced, nread, nmax + external putval + real xx(nmax), yy(nmax), ss(nmax), ww(nmax) + + character str*8 + + if (load_state .eq. 1) then + read(lun, '(a)') str + rewind lun + if (str .eq. 'FitSave') then + load_state=2 + call fit_load_nopn(lun) + nread=0 + return + endif + endif + call dat_fit3_read(lun, forced, nread, putval, nmax,xx,yy,ss,ww) + end + + + subroutine fit_dat_options(options) + + include 'fit.inc' + + character*(*) options + + character typ*16, desc*256 + integer done + integer l + + if (options .eq. '?' .or. options .eq. ' ') then + call dat_gettyp(typ) + call str_trim(typ, typ, l) + print * + done = 1 + call dat_desc_opt(done, typ(1:l)) + if (done .eq. 0) then + print '(x,2a)','No options available for filetype ',typ(1:l) + else + call dat_get_def_options(desc) + if (desc .ne. ' ') then + call str_trim(desc, desc, l) + print '(x,2a)','Actual options: ',desc(1:l) + endif + if (options .eq. ' ') then + print * + print '(x,a)','Syntax: option1=value1,option2=value2 ...' + print '(x/x,a,$)','Enter default options: ' + read(*,'(a)',end=9,err=9) desc + call dat_def_options(desc) + endif + endif + else + call dat_def_options(options) + endif +9 end + + + subroutine fit_dat_table(itbl, icols, irows) +! to be called within dat_..._read routines +! table number itbl has icols columns and irows rows + include 'fit.inc' + + integer itbl, irows, icols + integer i + + if (itbl .gt. nmult) then + do i=nmult+1,itbl + rows(i)=0 + cols(i)=1 + enddo + nmult=itbl + endif + rows(itbl)=irows + cols(itbl)=icols + end + + + subroutine fit_dat_init_table + + include 'fit.inc' + + nmult=1 + rows(1)=maxdat + cols(1)=1 + end + + + subroutine fit_dat_pdp_idx(name, ipdp) + ! to be called within dat_..._read routines + include 'fit.inc' + + character name*(*) + integer ipdp + + integer i + character unam*32, upar*32 + + call str_upcase(unam, name) + do i=1,npd + call str_upcase(upar, userpar(usernp+i)) + if (upar .eq. unam) then + ipdp=i + return + endif + enddo + if (usernp .lt. maxext) then + call fit_userpdp(name) + ipdp=npd + else + ipdp=0 + endif + end + + + subroutine fit_dat_pdp_set(ipdp, idx, value) + ! to be called within dat_..._read routines + + include 'fit.inc' + + integer ipdp, idx + real value + + if (ipdp .gt. 0 .and. ipdp .le. npd .and. + 1 idx .gt. 0 .and. nset+idx .le. maxset) then + pdpar(ipdp, nset+idx)=value + endif + end diff --git a/gen/fit_exit.f b/gen/fit_exit.f new file mode 100644 index 0000000..eaecac3 --- /dev/null +++ b/gen/fit_exit.f @@ -0,0 +1,17 @@ + SUBROUTINE FIT_EXIT +! ------------------- + + include 'fit.inc' + character ans*1 + + if (npkt .gt. 0) then + if (npkt .gt. 1000) then + write(isyswr, '(/X,A,$)') + 1 'Do you want to save current data and parameters [n]? ' + read(isysrd, '(a)',err=9,end=9) ans + if (ans .ne. 'Y' .and. ans .ne. 'y') goto 9 + endif + call fit_save('last.fit3') + endif +9 call gra_print + END diff --git a/gen/fit_export.f b/gen/fit_export.f new file mode 100644 index 0000000..b84a99f --- /dev/null +++ b/gen/fit_export.f @@ -0,0 +1,223 @@ + subroutine fit_export(steparg, typ, file) +! ----------------------------------------- + + implicit none + + include 'fit.inc' + + character typ*(*), file*(*) + real steparg + + integer ntry + parameter (ntry=30) + + character date*20, line*80, filename*256, typup*32, instr*32 + character sample*80 + real start, step, endr, q0, q1, xv, dq + real sum, suml, stp, xi, best, prec + + integer i,l,n,j,dig,k,jj,nbest,i0 + integer lun/2/ + integer iran, iostat + + if (typ .eq. ' ') then + write (isyswr,'(/X,A,$)') 'Step size (0: automatic):' + read(isysrd,'(f40.0)',err=999,end=999) step + write (isyswr,'(/X,A,$)') 'Output file type:' + read (isysrd, '(A)',err=999,end=999) typup + call str_upcase(typup, typup) + else + step=steparg + call str_upcase(typup, typ) + endif + if (typup .eq. 'D1A') then + prec=1.0e-4 + else ! DMC, HRPT, LNSP + prec=1.0e-3 + endif + call fit_merge(step) + start=xval(nxmin) + endr=xval(nxmax) + if (nxmax .le. nxmin .or. endr .eq. start) then + write(isyswr,*) 'not enough points to save' + goto 99 + endif + if (step .eq. 0) then ! find best step size + nbest=0 + best=1e30 + iran=12345 ! make random numbers reproducible + k=nxmax-nxmin +5 do n=k,2*k ! loop over possible values n + stp=(endr-start)/n ! step sizes checked between average step size and one half of average + if (k .gt. ntry*2) then ! try statistically + sum=0 + suml=ntry*0.15 + do j=1,ntry + iran=mod(iran*3125,524287) ! quick and dirty random number generator + i=mod(iran,k)+nxmin+1 + xi=(xval(i)-start)/stp + sum=sum+abs(xi-nint(xi)) + if (sum .gt. suml) then + sum=sum*ntry/j + goto 6 + endif + enddo + endif + sum=0 + suml=(nxmax-nxmin)*0.1 + do i=nxmin+1,nxmax + xi=(xval(i)-start)/stp + sum=sum+abs(xi-nint(xi)) + if (sum .gt. suml) then + sum=sum*k/(i-nxmin) + goto 6 + endif + enddo + sum=sum/suml + if (sum .lt. 1.0) then + nbest=n + goto 7 + endif +6 if (sum .lt. best) then + best=sum + nbest=n + endif + + continue + enddo + +7 continue + + if (nbest .eq. 0) stop 'error in FIT_EXPORT' + step=(endr-start)/nbest + endif + if (step .eq. 0) step=1 + + if (file .eq. ' ') then + write (isyswr,'(/X,A,$)') 'Output file name:' + read (isysrd, '(A)',err=999,end=999) filename + else + filename=file + endif + + step=nint(step/prec)*prec ! correct step for output precision + print *,'step used: ',step + + i=nxmin + n=nint((endr-start)/step)+1 + if (npkt+n .gt. maxdat) then + write(isyswr,*) 'not enough memory to save all points' + n=maxdat-npkt + endif + i=nxmin+1 + k=1 + jj=npkt+1 + if (endr .lt. 0) then + k=-1 + jj=npkt+n + endif + do j=0,n-1 + xv=start+j*step + do while (xval(i) .lt. xv .and. i .lt. nxmax) + i=i+1 + enddo +c cosmetics for x-axis rounding errors + q0=(xval(i)-xv)/(xval(i)-xval(i-1)) + dq=abs(xv*5E-7/(xval(i)-xval(i-1))) + if (q0 .lt. dq) then + q0=0 + elseif (q0 .gt. 1-dq) then + q0=1 + endif + q1=1-q0 + YVAL(jj)=YVAL(i-1)*q0+YVAL(i)*q1 + call cvt_real_str(line(2:8), i0, YVAL(jj), 7,0,0,0) + sig(jj)=sig(i-1)*q0+sig(i)*q1 + jj=jj+k + enddo + if (k .lt. 0) then + start=-xval(nxmax) + endif + endr=start+(n-1)*step + + if (typup .eq. 'DMC' .or. typup .eq. 'HRPT' + 1 .or. typup .eq. 'LNSP') then + call sys_parse(filename, l, filename, '.dat', 0) + + call sys_open(lun, filename, 'w', iostat) + if (iostat .ne. 0) then + print *,'Can not open ',filename(1:l) + return + endif + date=' ' + call sym_get_str('Date', l, date) + call sym_get_str('Instrument', jj, instr) + if (instr(1:jj) .ne. 'DMC' .and. instr(1:jj) .ne. 'HRPT') + 1 call str_trim(instr,typup,jj) + call sym_get_str('Title', k, line) + write(lun,'(3a)') instr(1:jj),', ',line(1:k) + + write (lun,'(a,f9.5,a,f8.3,a,f7.3,3a)') + 1 'lambda=',wavlen,', T=',temp,', dT=',dtemp + 1 ,', Date=''',date(1:l),'''' + + line(1:1)=' ' + call cvt_real_str(line(2:), l, ymon, 8, 0, 6, 1) + l=l+1 + + call sym_get_str('sample', j, sample) + if (sample(1:j) .ne. ' ') then + call str_trim(line + 1 , line(1:l)//', sample="'//sample(1:j)//'"', l) + endif + write(lun,'(3f8.3,a)') start, step, endr, line(1:l) + dig=1 + elseif (typup .eq. 'D1A') then + call sys_parse(filename, l, filename, '.d1a', 0) + + call sys_open(lun, filename, 'w', iostat) + if (iostat .ne. 0) then + print *,'Can not open ',filename(1:l) + return + endif + + write(lun,'(a,a68)') 'D1A5 Title: ',itit + write(lun,*) + write(lun,'(a)') itit + write(lun,44) n, temp, 0.0, ymon, 0.0 +44 format(i6,f11.3,f10.3,' 1',2f10.1) + write(lun,'(3f10.4)') start, step, endr + dig=2 + else + write(isyswr,*) 'data type ',typup, ' not yet implemented' + goto 99 + endif + + l=0 + line=' ' + do j=npkt+1,npkt+n + call cvt_real_str(line(l+2:l+8), i, YVAL(j), 7,dig-1,0,0) + l=l+8 + if (l .eq. 80) then + write(lun,'(a)') line(1:80) + l=0 + endif + enddo + if (l .gt. 0) write(lun,'(a)') line(1:l) + l=0 + do j=npkt+1,npkt+n + call cvt_real_str(line(l+2:l+8), i, sig(j), 7,dig,0,0) + l=l+8 + if (l .eq. 80) then + write(lun,'(a)') line(1:80) + l=0 + endif + enddo + if (l .gt. 0) write(lun,'(a)') line(1:l) + call str_trim(fillis, fillis, l) + write(lun, '(x,3a)') 'Filelist=''',fillis(1:l),'''' + call sym_list(lun, 0, 2 + 1,' file monitor instrument title date lambda ' + 1//'temp dtemp sample ') +99 close(lun) +999 end diff --git a/gen/fit_file.f b/gen/fit_file.f new file mode 100644 index 0000000..2bef487 --- /dev/null +++ b/gen/fit_file.f @@ -0,0 +1,579 @@ + subroutine fit_file(calstep, filename) +! -------------------------------------- + + implicit none + include 'fit.inc' + + real calstep + character filename*(*) + + real step, s, xx + character fname*132 + integer l,i,jset,j,iostat + + real xm1, xm2, a1, a2 + + real fifun, voigt ! function + + if (iscx .eq. 0) then + xm1=xval(nxmin) + xm2=xval(nxmax) + do i=nxmin,nxmax + if (xval(i) .lt. xm1) xm1=xval(i) + if (xval(i) .gt. xm2) xm2=xval(i) + enddo + a2=0.5/(nxmax+2-nxmin) + a1=1+a2 + xbeg=xm1*a1-xm2*a2 + xend=xm2*a1-xm1*a2 + endif + + step=(xend-xbeg)/200.0 + + if (filename .eq. ' ') then + + write (isyswr,'(/X,A,$)') 'Output file name:' + read (isysrd, '(A)', end=999,err=999) fname + if (fname .eq. ' ') fname='out' + + if (nu .gt. 0) then + write (isyswr,'(/X,A,F10.3,A,$)') + 1 'X-Step for calculated data (',abs(step),'):' + read (isysrd, '(F20.0)', err=999,end=999) s + if (s .ne. 0) step=sign(s,step) + endif + + else + + fname=filename + if (calstep .ne. 0) then + step=sign(calstep,step) + endif + + endif + + call save_delimiter(char(9)) + do jset=1,nset + if (nu .eq. 0 .and. nset .le. 1) then ! no calculation, single dataset + call sys_parse(fname, l, fname, '.obs', 0) + else + call sys_parse(fname, l, '.obs', fname, 0) + if (nset .gt. 1 .and. l .lt. len(fname)) then + call cvt_real_str(fname(l+1:), j, float(jset), 0,0,6,3) + l=l+j + endif + endif + call sys_open(2, fname, 'w', iostat) + if (iostat .ne. 0) then + print *,'Cannot open ',fname(1:l) + return + endif + + write(isyswr, '(/x,2a)') 'Observed data: ', fname(1:l) + + do i=nxmin,nxmax + if (iset(i) .eq. jset) then + call save_fill(xval(i)) + call save_fill(YVAL(i)) + call save_fill(sig(i)) + call save_wrt(2) + endif + enddo + close(2) + enddo + + if (nu .le. 0) return + + call sys_parse(fname, l, '.cal', fname, 0) + + call sys_open(2, fname, 'w', iostat) + if (iostat .ne. 0) then + print *,'Can not open ',fname(1:l) + return + endif + + write(isyswr, '(x,2a)') 'Calculated data: ', fname(1:l) + + xx=xbeg + do while (xx .le. xend+step*1e-3) + call save_fill(xx) + actset=1 + call save_fill(fifun(xx)) + if (ififu .eq. 1) then + call save_fill(u(1)+u(2)*(xx-u(3))) ! Background + do i=3,nu,5 + call save_fill(u(1)+u(2)*(xx-u(3)) ! Peaks + 1 +voigt(xx-u(i), u(i+3), u(i+4))*u(i+2)) + enddo + elseif (ififu .eq. 7 .and. nset .gt. 1) then + do actset=2,nset + call save_fill(fifun(xx)) + enddo + endif + call save_wrt(2) + xx=xx+step + enddo + close(2) + return +999 print *,'input error' + end + + + + subroutine fit_save(filename) +! ----------------------------- + + implicit none + include 'fit.inc' + character filename*(*) + integer lunit + + character fname*132/' '/, line*132, filtyp*8 + character utit*16, parname*16 + + integer i,l,j,nx1,nx2,ispec,lun,iostat,nu_user + real sbuf(32) + + integer fit_userini + external fit_userini + external fit_wrapper + + call save_delimiter(',') + if (fname .le. ' ') then + fname='last.fit3' + endif + if (filename .ne. ' ') then + line=filename + else + call sys_parse(fname, l, fname, '.FIT3', 0) + write(isyswr, '(/X,3A,$)') 'Filename [',fname(1:l),']: ' + read(isysrd, '(a)', end=999,err=999) line + endif + + call sys_parse(line, l, line, fname, 0) + + lun=2 + call sys_parse(line, l, line, ' ', 0) + call sys_open(lun, line, 'w', iostat) + if (iostat .ne. 0) then + print *,'can not open ',line(1:l) + return + endif + write(isyswr, '(/1x,2a)') 'Save parameters and data on ' + 1 ,line(1:l) + + write(2,'(A)') 'FitSave 3.8' + call save_fill(float(nu)) + call save_fill(float(ififu)) + call dat_gettyp(filtyp) + call save_str(filtyp) + call save_fill(float(nxmin)) + call save_fill(float(nxmax)) + if (iscx .eq. 0) then + xbeg=1 + xend=1 + endif + if (iscy .eq. 0) then + ybeg=1 + yend=1 + endif + call save_fill(xbeg) + call save_fill(xend) + call save_fill(ybeg) + call save_fill(yend) + if (nu .gt. 0) then + call save_fill(amin) + else + call save_fill(0.0) + endif + call save_wrt(lun) + do i=1,nu + if (psho(i) .ne. ' ') then + call str_trim(psho(i),psho(i),l) + call save_str(psho(i)(1:l)//':'//pnam(i)) + else + call save_str(pnam(i)) + endif + call save_fill(u(i)) + call save_fill(werr(i)) + call save_fill(alim(i)) + call save_fill(blim(i)) + call save_fill(float(lcode(i))) + call save_fill(cfac(i)) + call save_fill(coff(i)) + call save_fill(float(icsw(i))) + call save_fill(float(icto(i))) + call save_fill(werrs(i)) + call save_wrt(lun) + enddo + if (ififu .eq. 7) then + write(lun,'(a)') usertit + endif + + call sym_put_real('Monitor', ymon) + call sym_list(lun, 0, 3, ' ') + do i=1,min(nstyl,32) + sbuf(i)=styl(i) + enddo + call save_array('Style', sbuf, nstyl) + call save_wrt(lun) + if (keepregion) then + call save_array('RegX1', regx1, nregion) + call save_wrt(lun) + call save_array('RegX2', regx2, nregion) + call save_wrt(lun) + call save_array('RegY1', regy1, nregion) + call save_wrt(lun) + call save_array('RegY2', regy2, nregion) + call save_wrt(lun) + endif + call str_trim(fillis, fillis, l) + write(lun,'(3a)') 'Filelist=''',fillis(1:l),'''' + write(lun,*) + do i=1,npkt + call save_fill(xval(i)) + call save_fill(YVAL(i)) + call save_fill(sig(i)) + call save_fill(rmon(i)) + call save_fill(float(iset(i))) + call save_wrt(lun) + enddo + close(lun) + return + +999 print *,'input error' + return + + entry fit_load_nopn(lunit) +! -------------------------- + + lun=lunit + rewind lun + inquire(lun, name=line) + call sys_parse(line, l, line, '.', 0) + goto 20 + + + entry fit_load(filename) +! ------------------------ + + call sys_parse(line, l, filename, '.FIT3', 0) + + lun=2 + call sys_open(lun, line(1:l), 'r', iostat) + if (iostat .ne. 0) goto 29 + +20 write(isyswr, '(/x,2a)') 'Load parameters and data from ' + 1 ,line(1:l) + + line=' ' + read(lun, '(A)',err=23,end=23) line +23 if (line(1:8) .ne. 'FitSave ') then + write(isyswr,*) 'Unknown file format' + close(lun) + return + endif + call sym_purge(1) + line(1:1)=' ' + if (line(9:11) .gt. '1.0' .and. line(9:11) .lt. '3.4') then + read(lun, '(A)',err=23,end=23) filnam + endif + nu=0 + ififu=0 + xbeg=1 + xend=1 + ybeg=1 + yend=1 + filtyp=' ' + if (line(9:11) .lt. '3.2') then + read(lun, *, err=23,end=23) nu,ififu,ispec,nx1,nx2 + 1,xbeg,xend,ybeg,yend + if (ispec .eq. 1) then + filtyp='IN3' + elseif (ispec .ne. 0) then + filtyp='LNS' + endif + else + read(lun, *, err=23,end=23) nu,ififu,filtyp,nx1,nx2 + 1 ,xbeg,xend,ybeg,yend + endif + if (filtyp .ne. ' ') call dat_settyp(filtyp) + + if (line(9:11) .lt. '3.0') then + ififu=ififu-1 + if (ififu .le. 4 .or. ififu .eq. 9) then + write(isyswr,*) 'Incompatible version (older than 3.0)' + nu=0 + ififu=8 + close(lun) + return + endif + endif + + do i=1,nu + u(i)=0 + werr(i)=0 + alim(i)=0 + blim(i)=0 + lcode(i)=0 + cfac(i)=0 + coff(i)=0.0 + icsw(i)=0 + icto(i)=0 + werrs(i)=0 + if (line(9:11) .ge. '3.8') then + read(lun,*,err=27,end=27) parname, u(i), werr(i) + 1 , alim(i), blim(i), lcode(i), cfac(i), coff(i) + 1 , icsw(i), icto(i), werrs(i) + else + read(lun,*,err=27,end=27) parname, u(i), werr(i) + 1 , alim(i), blim(i), lcode(i), cfac(i) + 1 , icsw(i), icto(i), werrs(i) + endif + j=index(parname,':') + pnam(i)=parname(j+1:) + if (j .gt. 1) then + psho(i)=parname(1:j-1) + else + psho(i)=' ' + endif + enddo + + if (ififu .eq. 7 .and. line(9:11) .ge. '3.5') then + read(lun,'(a)',err=23,end=23) utit + if (line(9:11) .lt. '3.7') read(lun,*,err=23,end=23) + if (usernp .lt. nu .or. utit .ne. usertit) goto 25 + do i=1,nu + if (pnam(i) .ne. userpar(i)(1:8)) goto 25 + enddo + goto 26 +25 do i=nu+1,usernp + pnam(i)=' ' + enddo + do i=usernp+1,nu + userpar(i)=' ' + enddo + write(isyswr,*) + write(isyswr,*) 'Present function data file' + write(isyswr,*) '---------------------------' + write(isyswr,*) usertit,' ',utit + write(isyswr,*) + do i=1,max(nu,usernp) + write(isyswr,'(x,a,10x,a)') userpar(i)(1:8),pnam(i) + pnam(i)=userpar(i) + psho(i)=usersho(i) + enddo + nu=usernp + write(isyswr,'(/x,a/)') + 1 'User function mismatch, check Parameters for validity' +26 continue + endif + + + if (line(9:11) .lt. '3.3') then + close(lun) + if (filnam .eq. ' ') then + write(isyswr,*) 'No datafile' + else + load_state=3 + endif + else + if (line(9:11) .lt. '3.4') then + j=0 + ymon=0 + read(lun, *, err=27,end=27) j,ymon + else + call sym_read(lun, fit_wrapper) + call fit_get_real('Monitor', ymon) + keepregion=(nregion .ne. 0) + ymon0=ymon + endif + + i=0 +30 i=i+1 + if (i .gt. maxdat) then + print *,'too many data points --> truncated' + npkt=maxdat + goto 39 + endif +31 read(lun,'(a)',err=27,end=39) line + j=index(line,'/') ! for compatibility with versions 3.3 and older + if (j .gt. 0) line(j:)=' ' ! " +! read(line,'(bn,4f20.0,i20)',err=37,end=37) +! 1 xval(i),YVAL(i),sig(i),rmon(i),j + read(line,*,err=37,end=37) xval(i),YVAL(i),sig(i),rmon(i),j + iset(i)=max(1,j) + npkt=i + goto 30 + +37 print *,'error at point ',i + goto 31 + +39 if (ymon .eq. 0) ymon=rmon(1) + close(lun) + + endif + wavlen=0 + call sym_get_real('lambda', wavlen) + temp=0 + call sym_get_real('Temp', temp) + dtemp=0 + call sym_get_real('dTemp', dtemp) + call sym_get_str('Title', l, itit) + if (nx1 .lt. npkt .and. nx2 .le. npkt .and. nx2 .gt. nx1) then + nxmin=nx1 + nxmax=nx2 + else + nxmin=1 + nxmax=npkt + endif + nset=0 + do i=nxmin,nxmax + nset=max(iset(i),nset) + enddo + if (ififu .eq. 7) then + nu_user=fit_userini(7) + endif + nfcn=0 + call sym_list(isyswr, 1, 1, ' ') + if (load_state .eq. 3) return + call fit_set(0,0.0,0.0,0.0,0.0) + call fit_print(1) + call fit_scale(xbeg,xend,ybeg,yend) + return + +27 write(isyswr,*) 'Error in ',filename + close(lun) + return + +29 write(isyswr, *) 'Can not open ',filename + end + + + + subroutine save_fill(val) + + implicit none + real val, values(*) + integer lun, nsize + character str*(*), delim*1 + + character line*132 + integer i,j,l/0/,ll + save line,delim,l,ll + + if (delim .eq. char(9)) then + ll=7 + else + ll=12 + endif + if (l+ll .ge. len(line)) return + call cvt_real_str(line(l+1:l+ll), j, val, 0,0,6,3) + l=l+j + line(l+1:l+1)=delim + l=l+1 + return + + entry save_str(str) + + if (l+len(str)+3 .ge. len(line)) return + line(l+1:l+1)='''' + l=l+1 + call str_trim(line(l+1:l+len(str)), str, j) + if (j .eq. 0) j=1 + l=l+j + line(l+1:l+1)='''' + l=l+1 + line(l+1:l+1)=delim + l=l+1 + return + + entry save_array(str, values, nsize) + + if (l+len(str)+1 .ge. len(line)) goto 39 + call str_trim(line(l+1:l+len(str)), str, j) + if (j .eq. 0) j=1 + l=l+j + line(l+1:l+1)='=' + l=l+1 + do i=1,min(32,nsize) + if (l+9 .ge. len(line)) goto 39 + call cvt_real_str(line(l+1:l+7), j, values(i), 0,0,6,3) + l=l+j + line(l+1:l+1)=' ' + l=l+1 + enddo + line(l:l)=delim + return +39 print *,str,' truncated' + return + + entry save_wrt(lun) + l=l-1 + write(lun, '(a)') line(1:l) + l=0 + return + + entry save_delimiter(str) + delim=str + end + + subroutine fit_wrapper(str, value, putval) + + include 'fit.inc' + + character str*(*) + real value + external putval + + integer ns/0/, nx1/0/, nx2/0/, ny1/0/, ny2/0/ + + if (str .eq. ' ') then ! reset + ns=0 + nx1=0 + nx2=0 + ny1=0 + ny2=0 + return + endif + if (str(1:min(len(str),9)) .eq. 'Filelist=') then + fillis=str(10:) + return + endif + if (str .eq. 'Style') then + if (ns .lt. maxset) then + ns=ns+1 + styl(ns)=nint(value) + endif + nstyl=ns + return + endif + if (len(str) .eq. 5 .and. str(1:min(len(str),3)) .eq. 'Reg') then + if (str .eq. 'RegX1') then + if (nx1 .lt. maxregion) then + nx1=nx1+1 + regx1(nx1)=value + endif + else if (str .eq. 'RegX2') then + if (nx2 .lt. maxregion) then + nx2=nx2+1 + regx2(nx2)=value + endif + else if (str .eq. 'RegY1') then + if (ny1 .lt. maxregion) then + ny1=ny1+1 + regy1(ny1)=value + endif + else if (str .eq. 'RegY2') then + if (ny2 .lt. maxregion) then + ny2=ny2+1 + regy2(ny2)=value + endif + else + goto 9 + endif + nregion=min(nx1,nx2,ny1,ny2) + return + endif +9 call putval(str, value) + end diff --git a/gen/fit_fit.f b/gen/fit_fit.f new file mode 100644 index 0000000..a19a8db --- /dev/null +++ b/gen/fit_fit.f @@ -0,0 +1,297 @@ + subroutine fit_min(narg) +! ------------------------ + + include 'fit.inc' + integer narg, nf + real earg + + call fit_set_inthdl + call fit_check_range + + nfcnmx=1000 + if (narg .gt. 0) nfcnmx=narg + isw(1)=0 + + NF = NFCN + CALL SIMPLEX + if (ISW(1) .lt. 1) then + NFCNMX = NFCNMX + NF - NFCN + GO TO 360 + endif + + return + + + entry fit_fit(narg) +! ------------------- + + call fit_set_inthdl + call fit_check_range + + nfcnmx=1000 + if (narg .gt. 0) nfcnmx=narg + isw(1)=0 + +360 NF = NFCN + APSI = EPSI + CALL MIGRAD + IF (ISW(2) .LE. 2 .AND. ISW(1) .NE. 1) THEN + NFCNMX = NFCNMX + NF - NFCN + NF = NFCN + CALL SIMPLEX + ENDIF + return + + + entry fit_sim(narg) +! ------------------- + + call fit_set_inthdl + call fit_check_range + + nfcnmx=1000 + if (narg .gt. 0) nfcnmx=narg + isw(1)=0 + + call simplex + return + + + entry fit_mig(narg) +! ------------------- + + call fit_set_inthdl + call fit_check_range + + nfcnmx=1000 + if (narg .gt. 0) nfcnmx=narg + isw(1)=0 + + NF = NFCN + APSI = EPSI + CALL MIGRAD + return + + + entry fit_err(earg) +! ------------------- + + if (earg .gt. 0) then + epsi=epsi*earg/up + up=earg + else + epsi=epsi/up + UP=1.0 + endif + IF (ISW(2).GE.1) CALL fit_print(1) + return + + + entry fit_pri(narg) +! ------------------- + + ISW(5) = narg + return + + + entry fit_epsi(earg) +! -------------------- + + if (earg .gt. 0) then + epsi=earg + else + epsi=0.1*up + endif + return + + + entry fit_vtest(earg) +! --------------------- + if (earg .gt. 0) then + vtest=earg + else + vtest=0.01 + endif + return + + end + + + subroutine fit_set_inthdl + + include 'fit.inc' + external fit_inthdl + + if (isyswr .ne. 0) + 1 write(isyswr,'(t40,a)') 'Press Ctrl-C to abort fit-algorithm' + + call sys_int_hdl(fit_inthdl) + end + + subroutine fit_inthdl + include 'fit.inc' + nfcnmx=0 + end + + + subroutine fit_reserr + + implicit none + + include 'fit.inc' + + integer i + + do i=1,nu + if (werr(i) .ne. 0) werr(i)=max(0.1,u(i)*0.1) + enddo + if (ififu .eq. 1) then + do i=3,nu,5 + if (werr(i+1) .ne. 0) werr(i+1)=werr(i+3)+werr(i+4) + enddo + endif + call fit_set(0,0.0,0.0,0.0,0.0) + end + + + + subroutine fit_chisq(chisq, istat) + + real chisq + integer istat + + include 'fit.inc' + + chisq=amin + istat=isw(2) + end + + + + subroutine fit_restore_wr + + include 'fit.inc' + + integer isave/0/ + + if (isave .ne. 0) then + isyswr=isave + isave=0 + endif + return + + entry fit_suspend_wr + if (isyswr .ne. 0) then + isave=isyswr + isyswr=0 + endif + end + + + subroutine fit_covar + + include 'fit.inc' + integer i,j,k + character line*130 + + if (isw(2) .lt. 3) then + print *,'covariance matrix undefined' + return + endif + do i=1,npar + do k=1,npar,16 + write(line, '(16g8.2)') (v(i,j),j=k,min(k+15,npar)) +! (100*v(i,j)/sqrt(abs(v(i,i)*v(j,j))) +! if (i .ge. k .and. i .le. k+15) then +! nam=' ' +! do l=1,nu +! if (lcorsp(l) .eq. i) then +! nam=psho(l) +! goto 9 +! endif +! enddo +!9 line((i-k)*8+1:(i-k+1)*8)=' '//nam +! endif + print *,line + enddo + if (i .gt. 26) print * + enddo + end + + + subroutine fit_true_err(ipar, fstep) + + integer ipar + real fstep + + include 'fit.inc' + + real sums0, sums, uc, start, step, step0, sl0, sl1 + real p0 + integer i,idir,j + real usave(maxext), esave(maxext), trum, trup + + external fit_restore_wr + + step0=abs(werr(ipar)) + if (step0 .eq. 0) then + print *,pnam(ipar),' is not free' + return + endif + call sys_err_hdl(fit_restore_wr) + call fit_suspend_wr + + call fit_min(0) + call fit_fix(ipar) + call fit_min(0) + do i=1,nu + usave(i)=u(i) + esave(i)=werr(i) + enddo +! uc=up*max(1.0,amin)/nfree + uc=up/nfree + sums0=amin/uc + start=u(ipar) + print *,pnam(ipar),' chi^2' + print *,start,amin + + do idir=-1,1,2 + step=step0*idir + sums=sums0 + do j=1,100 + sl0=sqrt(max(0.0,sums-sums0)) + do i=1,nu + werr(i)=esave(i) + enddo + p0=u(ipar) + call fit_set(ipar,start+step*j*fstep,0.0,0.0,-1.0) + call fit_min(0) + if (nfcnmx .eq. 0) goto 99 + sums=amin/uc + print *,u(ipar),amin,sums-sums0 + if (sums .gt. sums0+1) goto 50 + enddo +50 sl1=sqrt(max(0.0,sums-sums0)) + if (sl1 .le. sl0) then + print *,'error' + goto 99 + endif + step=p0-start+(u(ipar)-p0)*(1-sl0)/(sl1-sl0) + if (idir .lt. 0) then + trum=step + else + trup=step + endif + do i=1,nu + u(i)=usave(i) + werr(i)=esave(i) + enddo + call fit_set(0,0.0,0.0,0.0,0.0) + call fit_min(0) + enddo + +99 call fit_rel(ipar) + call fit_set(ipar, start, step0, 0.0, -1.0) + call fit_restore_wr + print *,'true error of ',pnam(ipar),':', trum, trup + end diff --git a/gen/fit_fix.f b/gen/fit_fix.f new file mode 100644 index 0000000..4b20f6c --- /dev/null +++ b/gen/fit_fix.f @@ -0,0 +1,36 @@ + subroutine FIT_FIX(k0) +C ---------------------- + + integer k0 + + include 'fit.inc' + + integer i + + i = abs(K0) + if (i .lt. 1 .or. i .gt. nu) then + write(isyswr,'(4x,a,i3)') 'Illegal parameter no.:',i + return + endif + + if (lcode(i) .le. 0) then + if (icsw(i) .eq. 0) then + write(isyswr, '(4X,2A)') pnam(i),' is already fixed' + else + write(isyswr, '(4X,3A)') + 1 pnam(i),' is correlated to ',pnam(icto(i)) + endif + return + endif + +10 lcode(i)=-lcode(i) + icsw(i)=0 + if (werr(i) .ne. 0) then + werrs(i)=werr(i) + werr(i)=0 + endif + if (isyswr .ne. 0) write (isyswr,502) pnam(i),u(i) +502 format (/4X,a,' fixed at ',f15.7) + + call extoin + end diff --git a/gen/fit_fun.f b/gen/fit_fun.f new file mode 100644 index 0000000..149c89e --- /dev/null +++ b/gen/fit_fun.f @@ -0,0 +1,470 @@ + SUBROUTINE fit_fun(funarg, nargs, parg, earg) +! -------------------------------------------- + + include 'fit.inc' + + integer funarg ! negative: ask, other values: see format 1100 at bottom + integer nargs ! functions 2,3,4,7: + ! nargs=0: ask for parameters + ! nargs>0: preset parameters and errors + ! functions 0,1: + ! nargs=0: auto parameters + ! nargs=1: preset position, auto width/intensity + ! function 5: narg unused + ! function 6: auto parameters + ! nargs=0: normal, nargs=1: multiply with with parg(1) + real parg(*) ! preset parameter + real earg(*) ! preset error + logical fixed, strange + + integer npfix,i,iexp,nsum,npuser,k,npeak + integer jfifu, nu_user, narg + real a,b,ukp,ukm,sumx,sumy,sumxx,sumxy,xr,yr,xl,yl,uk + real wk, YVALmax, wmult + + real voigt ! function + integer fit_userini + + jfifu=ififu + nu_user=0 + if (up .eq. 0.0) + 1 stop 'error in FIT_FUN: FIT_INIT must be called first' + 13 if (funarg .lt. 0) then + WRITE (ISYSWR,1100) usertit + READ (ISYSRD,1101,END=999,err=999) i + IF (i.LT.0 .OR. i.GT.8) GO TO 13 + ififu=i + narg=0 + else + ififu=funarg + narg=nargs + endif + + wmult=1.0 + if (ififu .eq. 6) then ! for strange peak use gaussian to determine start values + if (narg .eq. 1) wmult=parg(1) + narg=0 + ififu=0 + strange=.true. + else + strange=.false. + endif + + 10 NFCN=1 + ISW(1)=0 + ISW(2)=0 + ISW(3)=0 + SIGMA = 0. + NPFIX = 0 + NPAR = 0 + DO 11 I= 1, MAXEXT + if (ififu .ne. 6) then +! U(I) = 0.0 + WERRS(I) = 0. + endif + ICSW(I) = 0 + ICTO(I) = 0 + CFAC(I) = 0. + coff(I) = 0. + LCODE(I) = 0 + 11 LCORSP (I) = 0 + + IF (IFIFU.LE.1) THEN + +C . . . . . SINGLE PEAK PARAMETERS . . + + pnam(1)= 'Bg(Pos) ' + psho(1)= 'B' + pnam(2)= 'dBg/dx ' + psho(2)= 'D' + pnam(3)= 'Posi. 1' + psho(3)= 'P1' + pnam(4)= 'MaxInt 1' + psho(4)= 'M1' + pnam(5)= 'IntInt 1' + psho(5)= 'I1' + pnam(6)= 'Fwhm G 1' + psho(6)= 'G1' + pnam(7)= 'Fwhm L 1' + psho(7)= 'L1' + do i=1,7 + lcode(i) = 1 + enddo + if (ififu .eq. 0) then ! pure gaussian + lcode(7)=0 + u(7)=0 + werr(7)=0 + endif + ififu=1 + if (narg .eq. 1) then ! preselected position + u(3)=parg(1) + lcode(3)=0 ! fix pos for findauto + endif + nu=2 + call fit_findauto + nu=7 + if (narg .eq. 1) lcode(3)=1 ! release position + + elseif (ififu .eq. 6) then + +C . . . . . . STRANGE PEAK . . . . . + + PNAM(3)='Position' + psho(3)='P' + PNAM(4)='fw(Bg) ' + psho(4)='W' + NU=4 + WERR(1)=1 + LCODE(1)=1 + WERR(2)=1 + LCODE(2)=1 + WERR(3)=0 + LCODE(3)=0 + WERR(4)=0 + LCODE(4)=0 + if (u(4) .gt. 0) then + U(4)=u(6)*wmult*sqrt(max(1.0,log(2*u(4)/werr(1))/1.25)) + else + u(4)=u(6) + endif + call extoin + call fit_fit(0) + + ELSEIF (IFIFU.EQ.5) THEN + +C. . . . . CRITCAL EXPONENT PARAMETERS . . + + do i=1,7 + psho(i)=' ' + enddo + PNAM(1)= 'TC ' + PNAM(2)= 'BETA ' + PNAM(3)= 'CONST ' + PNAM(4)= 'BG ' + 201 WRITE (ISYSWR,1200) + READ(ISYSRD,1101,ERR=201,END=999) IEXP + 202 WRITE (ISYSWR,1201) + READ(ISYSRD,1107,ERR=202,END=999) U(1),WERR(1),A,B + IF (A) 212,210,212 + 210 IF (B) 212,211,212 + 211 LCODE(1) = 1 + GO TO 220 + 212 UKP = U(1)+ABS(WERR(1)) + UKM = U(1)-ABS(WERR(1)) + IF (A.GE.UKM) GOTO 213 + IF (B.LE.UKP) GOTO 213 + LCODE(1) = 4 + ALIM(1) = A + BLIM(1) = B + GOTO 220 + 213 WRITE (ISYSWR,1111) + GOTO 202 + 220 IF (WERR(1).EQ.0.) LCODE(1) = 0 + NU = 3 + U(6) = -1. + IF (IEXP.EQ.2) U(6) = 1. + IF (IEXP.EQ.4) U(6) = 1. + IF (IEXP.GE.2) PNAM(2)= 'GAMMA ' + IF (IEXP.GE.4) PNAM(2)= 'NY ' + IF (IEXP.GE.4) GOTO 230 + NU = 4 + 221 WRITE (ISYSWR,1202) + READ(ISYSRD,1107,ERR=221,END=999) U(4),WERR(4) + IF (WERR(4).NE.0.) LCODE(4) = 1 + 230 NSUM = 0 + SUMX = 0. + SUMY = 0. + SUMXX = 0. + SUMXY = 0. + DO 231 I = NXMIN,NXMAX + XR = U(6)*(XVAL(I)-U(1))/U(1) + IF (XR.LT.1E-5) GOTO 231 + YR = YVAL(I) - U(4) + IF (YR.LT.1E-10) GOTO 231 + XL = ALOG(XR) + YL = ALOG(YR) + SUMX = SUMX + XL + SUMY = SUMY + YL + SUMXX = SUMXX + XL*XL + SUMXY = SUMXY + XL*YL + NSUM = NSUM + 1 + 231 CONTINUE + IF (NSUM.GE.2) GOTO 232 + WRITE (ISYSWR,1203) + GOTO 10 + 232 U(2) = (SUMXY-SUMX*SUMY/NSUM)/(SUMXX-SUMX*SUMX/NSUM) + WERR(2) = ABS(0.1*U(2)) + LCODE(2) = 1 + U(3) = EXP(SUMY/NSUM-U(2)*SUMX/NSUM) + WERR(3) = ABS(0.1*U(3)) + LCODE(3) = 1 + u(5)=0. + IF (IEXP.GT.0) GOTO 259 + 250 NU = 7 + PNAM(4)= 'CRI.A ' + PNAM(5)= 'CRI.C ' + PNAM(6)= 'CRI.S ' + PNAM(7)= 'BG ' + U(7) = U(4) + WERR(7) = WERR(4) + LCODE(7) = LCODE(4) + U(6) = 3. + WERR(6) = 0. + LCODE(6) = 0 + LCODE(5) = 1 + LCODE(4) = 1 + NSUM = 0 + SUMX = 0. + SUMY = 0. + SUMXX = 0. + SUMXY = 0. + DO 255 I = NXMIN,NXMAX + XR = (XVAL(I)-U(1))/U(1) + IF (XR.GT.-1.E-4) GOTO 251 + YR = YVAL(I) - U(3)*((-XR)**U(2)) - U(7) + XR = -XR*U(6) + GOTO 252 + 251 IF (XR.LT.1.E-4) GOTO 255 + YR = YVAL(I) - U(7) + 252 IF (YR.LT.1E-10) GOTO 255 + XL = XR + YL = ALOG(YR) + SUMX = SUMX + XL + SUMY = SUMY + YL + SUMXX = SUMXX + XL*XL + SUMXY = SUMXY + XL*YL + NSUM = NSUM + 1 + 255 CONTINUE + IF (NSUM.GE.2) GOTO 256 + PNAM(2)= 'CR.SCAT.' + WRITE (ISYSWR,1203) PNAM(2) + GOTO 10 + 256 U(4) = (SUMXY-SUMX*SUMY/NSUM)/(SUMXX-SUMX*SUMX/NSUM) + WERR(4) = ABS(0.1*U(4)) + U(5) = EXP(SUMY/NSUM-U(4)*SUMX/NSUM) + WERR(5) = ABS(0.1*U(5)) + 259 CONTINUE + + ELSEIF (IFIFU .EQ. 8) THEN + +C . . . . . . PLOT ONLY + + nu=0 + RETURN + + ELSE ! standard input + if (ififu.eq.7) then + if (usernp .eq. 0 .or. userfun .eq. 0) then + print *,'No user function implemented' + goto 999 + endif + npuser=usernp + do k=1,npuser + pnam(k)=userpar(k) + psho(k)=usersho(k) + lcode(k)=1 + enddo + if (nu .eq. 0) nu=1 + nu_user=fit_userini(jfifu) + if (nu_user .gt. 0) npuser=nu_user + nu=0 ! nu is incremented for each check parameter below + else ! multi-voigt based functions + nu=0 + if (narg .eq. 0) then + print * + print *,' Hint: In general, it is easier to use Single', + 1 ' Gaussian' + print *,' for start and then add new peaks graphically or' + print *,' with command NEWPEAK' + endif + npeak=maxpeak + if (ififu .eq. 4) npeak=2 + npuser=2+npeak*5 + write(pnam, 291) 'Bg(Pos1)','dBg/dx ', + 1 ('Posi. ',i + 1 ,'MaxInt',i + 1 ,'IntInt',i + 1 ,'Fwhm G',i + 1 ,'Fwhm L',i, i=1,npeak) +291 format (a8/a8,999(/a6,i2)) + write(psho, 292) 'B','D', + 1 ('P',i,'M',i,'I',i,'G',i,'L',i, i=1,npeak) +292 format (a1/a1,45(/a1,i1),999(5(/a1,i2))) + do k=1,npuser + lcode(k)=1 + enddo + endif +C. . . . . . . . . . . . . . . . . . . +C. . . . . LOOP TO SET PARAMETERS . . + DO 590 K=1,npuser +521 if (nu_user .gt. 0) then + uk=u(k) + wk=0 + fixed=.true. + a=0 + b=0 + elseif (funarg .lt. 0 .or. narg .eq. 0) then + if (k .eq. 1) WRITE (ISYSWR,1102) + if (ififu .eq. 2 .and. k .gt. 2 .and. mod(k,5) .eq. 2 .or. + 1 ififu .eq. 4 .and. k .eq. 7) then ! do not ask for lorentzian HW + u(k)=0 + werr(k)=0 + lcode(k)=0 + nu=nu+1 + goto 590 + endif + if (ififu .le. 4 .and. mod(k,5) .eq. 0) then ! Int.Int. + lcode(k)=0 + nu=nu+1 + goto 590 + endif +522 WRITE (ISYSWR,1106) K,PNAM(K),': ' + READ (ISYSRD,'(4F20.0)',ERR=522,END=529) + 1 UK,WK,A,B + fixed=wk .eq. 0 + IF (UK.EQ.999.) goto 529 + else + if (k .gt. narg) goto 529 + uk=parg(k) + wk=earg(k) + fixed=wk .eq. 0.0 + a=0 + b=0 + endif +C. . . . . LIMIT CHECK . . . . . . . + IF (A .EQ. 0.0 .AND. B .EQ. 0.0) GOTO 540 + UKP = UK+ABS(WK) + UKM = UK-ABS(WK) + if (a .ge. ukm .or. b .le. ukp) then + WRITE (ISYSWR,1111) + if (funarg .lt. 0 .or. narg .eq. 0) goto 521 + a=ukm + b=ukp + endif + LCODE(K) = 4 + ALIM(K) = A + BLIM(K) = B +C. . . . . FWHM 1 EQUAL TO ZERO . . . . + 540 if (ififu .le. 4 .and. uk .eq. 0 .and. + 1 k .gt. 1 .and. mod(k,5) .eq. 1) then ! gaussian hw + if (k .eq. 5) then + if (ififu .eq. 2) then + WRITE (ISYSWR,1112) + if (funarg .lt. 0 .or. narg .eq. 0) goto 521 + uk=1 + endif + goto 570 + endif +C. . . . . FWHM CORRELATION . . . + 560 ICSW(K) = 1 + ICTO(K) = 5 + CFAC(K) = 1. + WERRS(K) = WK + UK = U(5) + WK = 0. + WRITE(ISYSWR,1110) K,PNAM(K) +C. . . . . END FWHM COR . . . . . + endif + 570 NU=NU+1 + U(K) = UK + WERR(K) = WK + if (fixed) then + lcode(k)=0 + werr(k)=0 + endif + 590 CONTINUE + goto 599 + +529 if (ififu .le. 4 .and. mod(nu,5) .ne. 2) then + nu=nu-mod(nu+2,5) + WRITE (ISYSWR, '(/X,A,/)') + 1 'Not all parameters are defined -> last peak removed' + endif + +599 continue + ENDIF + if (ififu .le. 4) then ! calculate int.intensities + ififu=1 + do k=4,nu,5 + YVALmax=voigt(0.0, u(k+2), u(k+3)) + u(k+1)=u(k)/YVALmax + if (lcode(k) .ne. 1) then ! fixed or limited Max.Int + werr(k)=0 + icsw(k+1)=-1 + icto(k+1)=k + else + werr(k+1)=werr(k)/YVALmax + lcode(k)=0 + lcode(k+1)=1 + icsw(k)=-1 + icto(k)=k+1 + endif + enddo + endif + + call extoin + call fit_check_range + + if (ififu .eq. 8) return + if (isyswr .ne. 0) WRITE (ISYSWR,2000) + 2000 FORMAT (/' First entry to FCN') + call fnctn(x, amin) + if (strange) then + strange=.false. + write(isyswr,'(/x,a/)') + 1 '--- STRANGE peak: fit one gaussian' + call fit_fit(0) + write(isyswr,'(/x,a/)') + 1 '--- STRANGE peak: calculate P and W from gaussian' + ififu=6 + goto 10 + endif + if (ififu .eq. 6) then + write(isyswr,'(/x,a/)') + 1 '--- STRANGE peak: fit background' + call fit_fit(0) + return + endif + + CALL FIT_PRINT (1) + WK=AMIN + NFCN=1 + call fnctn(x, wk) + IF (WK.EQ.AMIN) RETURN + WRITE (ISYSWR,2001) AMIN,WK + 2001 FORMAT (/' FCN is time-dependent: 1. Call F=',E16.7 + 1 /24X, '2. Call F=',E16.7) + 999 RETURN + + 1100 FORMAT( + 1/8X,'Single Gaussian = 0' + 1/8X,'Single Voigtian = 1 (Lorentzian folded with Gaussian)', + 1/8X,'Multi Gaussian = 2' + 1/8X,'Multi Voigtian = 3' + 1/8X,'Gaussian + Voigtian = 4' + 1/8X,'Crit.Exponent = 5' + 1/8X,'Strange = 6' + 1/8X,A, ' = 7 (User function)' + 1/8X,'Plot only = 8'// + 1/8X,'Select function [0] : ',$) + + 1101 FORMAT (I1) + 1102 FORMAT(/,' Parameter: Value,Error,(Lower-,Upper-Lim' + 1,'it) end = 999',/) + 1103 FORMAT (/,' Only ',I2,' variable parameters allowed',/) + 1106 FORMAT (I6,4X,A8,A,$) + 1107 FORMAT (4F10.0) + 1110 FORMAT ('+',I5,4X,A8,' = Fwhm G 1') + 1111 FORMAT (8X,'Input error: Parameter out of limits') + 1112 FORMAT (8X,'Input error: Fwhm G 1 = 0.') + 1200 FORMAT(/,' EXPONENT: BRAGG+CRIT.SCATTERING: = 0 ', + ,/, ' ORD.PARAMETER: BETA,TTC = 2 ', + ,/, ' GAMMA,TTC = 4 ', + ,/, ' NY ,T t +! m_x: transform t -> x + parameter (pn=2.0) ! step size of larger gaussian = fwhm/pn + parameter (gn=2.0) ! total width = gn*fwhm + parameter (imaxg=128) ! maximal fwhm (in steps) + integer i,j,k,m + + real ts ! t-step + real t ! transformed x + real ta, tb ! limits of t-space + + real gw ! total gaussian width (in t-space) + real wg ! total peak weight + real sum ! summing variable + integer kstp ! step for folding + integer mfold ! number of folding steps + real wd ! individual peak width + real t0 ! base for integration + real lasty ! last value for integr. + + real xa, xb ! x-range + real xs ! x-step at xbase + real q ! ratio between fwhm's of peaks for folding steps + real stp ! real step + real xd, sd ! delta peak parameters + + real x0, x1, x2, qq, td, xsi + + parameter (maxt=10000) ! maximal number of points + real y(0:maxt),yf(0:maxt) ! array before and after folding + + parameter (maxg=100) ! maximal number of points per gaussian (> gn*5) + real gs(0:maxg) ! precalculated gaussian + + save y,ta,tb,xa,xb,gw,kstp + + external sys_rfun_rriii, voigt, spline3, spline4 + real sys_rfun_rriii, voigt, spline3, spline4 + + if (mode .eq. 0) then + if (gw .eq. 0) then + fit_cfun=sys_rfun_rriii(confun,x,p,n,m_f,cinfo) + RETURN + endif + if (x .lt. xa .or. x .gt. xb) then + fit_cfun=sys_rfun_rriii(confun,x,p,n,m_f,cinfo) + ecnt=ecnt+1 + show=.true. + else + t=sys_rfun_rriii(confun,x,p,n,m_t,cinfo)/ts + t=(t-ta)/istp + i=nint(t-0.5) + if (i .le. 1) then + fit_cfun=spline3(t, y(0), y(1), y(2)) + elseif (i .ge. npy-1) then + fit_cfun=spline3(npy-t, y(npy), y(npy-1), y(npy-2)) + else + fit_cfun=spline4(t-i, y(i-1), y(i), y(i+1), y(i+2)) + endif + endif + else if (mode .gt. 0) then + show=.true. + call fit_init_delta(.false.) + if (p(1) .eq. 0.0) then + fit_cfun=sys_rfun_rriii(confun,x,p,n,m_f,cinfo) + RETURN + endif + call fit_get_xrange(xa,xb) + fit_cfun=sys_rfun_rriii(confun,x,p,n,m_i,cinfo) + call fit_init_delta(.true.) + ta=sys_rfun_rriii(confun,xa,p,n,m_t,cinfo) + tb=sys_rfun_rriii(confun,xb,p,n,m_t,cinfo) + xs=p(2) + if (xs .eq. 0) xs=p(1)/10 + if (xbase-max(p(1),xs) .lt. xa .or. + 1 xbase+max(p(1),xs) .gt. xb) then + qq=(tb-ta)/(xb-xa) + ts=abs(xs*qq) + gw=abs(p(1)*qq)/ts + else + ts=abs(sys_rfun_rriii(confun,xbase+xs,p,n,m_t,cinfo) + 1 -sys_rfun_rriii(confun,xbase-xs,p,n,m_t,cinfo)) + if (ts .eq. 0) ts=1.0 + gw=abs(sys_rfun_rriii(confun,xbase+p(1)/2,p,n,m_t,cinfo) + 1 -sys_rfun_rriii(confun,xbase-p(1)/2,p,n,m_t,cinfo))/ts + endif + ta=int((ta/ts-gn*gw)) + tb=int((tb/ts+gn*gw)+1) + npy=nint(tb-ta) + istp=max(int(gw/imaxg+1), (npy+maxt-1)/maxt) + npy=npy/istp + + t0=ta-0.5*istp + x0=sys_rfun_rriii(confun,t0*ts,p,n,m_x,cinfo) + lasty=sys_rfun_rriii(confun,x0,p,n,m_f,cinfo) + k=0 + do i=0,npy + x1=sys_rfun_rriii(confun,(t0+i*istp)*ts,p,n,m_x,cinfo) + ! simpson integral over interval (x0...x1) + xsi=(x1-x0)/istp + x2=x1-xsi/2 + sum=lasty + do j=1,istp + lasty=sys_rfun_rriii(confun,x0+j*xsi,p,n,m_f,cinfo) + sum=sum+4*sys_rfun_rriii(confun,x2+j*xsi,p,n,m_f,cinfo) + 1 +2*lasty + enddo + x0=x1 + y(i)=(sum-lasty)/6/istp + k=k+istp + enddo + call fit_get_delta(xd, sd) + do while (sd .ne. 0) + td=sys_rfun_rriii(confun,xd,p,n,m_t,cinfo)/ts + sd=sd/abs( + 1 sys_rfun_rriii(confun,(td+0.5*istp)*ts,p,n,m_x,cinfo) + 1 -sys_rfun_rriii(confun,(td-0.5*istp)*ts,p,n,m_x,cinfo) ) + if (td .ge. ta .and. td .le. tb) then + t=(td-ta)/istp + i=nint(t-0.4999) + if (i .ge. npy) i=npy-1 + y(i)=y(i)+sd*(i+1-t) + y(i+1)=y(i+1)+sd*(t-i) + endif + call fit_get_delta(xd, sd) + enddo + + if (gw .le. istp) RETURN + + mfold=max(1,nint(log(gw/pn/istp))) + sum=0 + q=max(1.1,(gw/pn/istp)**(1.0/mfold)) + qq=1/(q*q) + qq=sqrt((1-qq**mfold)/(1-qq)) ! sqrt of sum of squared widths divided by gw + wd=gw/istp/q**(mfold-1)/qq + + icnt=0 + stp=1.0 + do m=1,mfold + kstp=int(stp) + stp=stp*q + ng=min(maxg,int(gn*wd/kstp+0.9)) + icnt=icnt+(2*ng+1)*(npy+1)-(ng-1)*ng+1 + do i=0,ng + gs(i)=voigt(float(i), wd/kstp, 0.0) + enddo + do i=0,npy + wg=0 + sum=0 + k=i + do j=0,min(ng,i/kstp) + sum=sum+gs(j)*y(k) + wg=wg+gs(j) + k=k-kstp + enddo + k=i+kstp + do j=1,min(ng,(npy-i)/kstp) + sum=sum+gs(j)*y(k) + wg=wg+gs(j) + k=k+kstp + enddo + yf(i)=sum/wg + enddo + do i=ng*kstp,npy-ng*kstp + y(i)=yf(i) + enddo + wd=wd*q + enddo + else + fit_cfun=sys_rfun_rriii(confun,x,p,n,mode,cinfo) + call fit_fixit(2) + endif + end + + + subroutine fit_confun_print + + include 'fit_user.inc' + + if (show) then + print * + print '(i10,a,i9,a)' + 1 , npy*istp*2+1, ' fn. calls, fold. multiplications: ',icnt + if (ecnt .gt. 0) then + print *,ecnt,' outside range calls counted' + ecnt=0 + endif + show=.false. + endif + end + + + real function spline4(x, y1, y2, y3, y4) + +! spline interpolation. +! the result is valid for values x between 0 and 1 (x-coord of y2 and y3) + + real x, y1, y2, y3, y4 + real ss, sl, sr + + ss=y3-y2 ! median slope + sl=(y3-y1)/2 ! slope at point 2 + sr=(y4-y2)/2 ! slope at point 3 + spline4=y2+x*ss ! linear interpol. + 1 + (sl-ss)*x*(x-1)**2 ! correction for left slope + 1 - (sr-ss)*(1-x)*x**2 ! correction for right slope + end + + + real function spline3(x, y1, y2, y3) + +! spline interpolation. +! the result is valid for values x between 0 and 1 (x-coord of y1 and y2) +! or, as an extrapolation to the left of x1 + + real x, y1, y2, y3 + real sl, sr, s1 + + s1=y2-y1 + sr=(y3-y1)/2 ! interpolate slope at point 2 + sl=2*sr-s1 ! extrapolate slope at point 1 + spline3=y1+x*s1 ! linear interpol. + 1 + (sl-s1)*x*(x-1)**2 ! correction for left slope + 1 - (sr-s1)*(1-x)*x**2 ! correction for right slope + end diff --git a/gen/fit_user.inc b/gen/fit_user.inc new file mode 100644 index 0000000..828f647 --- /dev/null +++ b/gen/fit_user.inc @@ -0,0 +1,11 @@ + real xbase + integer confun ! function to convolute + logical show + integer istp ! integration over istp*2 points + integer npy ! number of points + integer icnt ! number of folding multiplications + integer ecnt ! error count + + common /fit_confun_com/confun, xbase, + 1 npy, istp, icnt, ecnt, show + diff --git a/gen/fit_win.f b/gen/fit_win.f new file mode 100644 index 0000000..6d0e13d --- /dev/null +++ b/gen/fit_win.f @@ -0,0 +1,280 @@ + SUBROUTINE fit_WIN(xb0, xe0) +C ----------------------------- + include 'fit.inc' + + real xb0, xe0 + real xb, xe, x1 + integer i,j + +C + 1000 FORMAT (/,4X,'FIT : X-START , X-END ',$) + 1001 FORMAT (2F10.0) + + if (xb0 .eq. 0.0 .and. xe0 .eq. 0.0) then + 100 WRITE(ISYSWR,1000) + READ(ISYSRD,1001,ERR=100,END=999) XB,XE + else + xb=xb0 + xe=xe0 + endif + nxmin=1 + nxmax=npkt + if (npkt .le. 0) return + + if (xb .ne. xe) then + + call fit_sort(1, npkt) + + if (xb .gt. xe) then ! exchange if not in order + x1=xb + xb=xe + xe=x1 + endif + do i=1,npkt + if (xval(i) .ge. xb) then + nxmin=i + do j=i,npkt + if (xval(j) .gt. xe) then + nxmax=max(i,j-1) + goto 11 + endif + enddo + nxmax=npkt + goto 11 + endif + enddo +11 nregion=1 + regx1(nregion)=xb + regx2(nregion)=xe + regy1(nregion)=0 + regy2(nregion)=0 + else + nregion=1 + regx1(nregion)=0 + regx2(nregion)=0 + regy1(nregion)=0 + regy2(nregion)=0 + endif + call extoin + call fit_check_range + call fnctn(x,amin) + + nset=1 + do i=nxmin,nxmax + nset=max(iset(i),nset) + enddo + + if (nxmax .lt. nxmin) then + print *,'no more datapoints present - enlarge fit window' + endif + + 999 RETURN + + END + + + + SUBROUTINE FIT_EXCLUDE(X1, X2, Y1, Y2) +! -------------------------------------- + + include 'fit.inc' + + real x1, x2, y1, y2 + + integer i + real xm1, xm2, ym1, ym2 + + xm1=min(x1,x2) + xm2=max(x1,x2) + ym1=min(y1,y2) + ym2=max(y1,y2) + if (xm1 .eq. xm2 .and. ym1 .eq. ym2) return + if (nregion .lt. maxregion) then + nregion=nregion+1 + regx1(nregion)=xm2 + regx2(nregion)=xm1 + regy1(nregion)=ym2 + regy2(nregion)=ym1 + endif + i=nxmin + do while (i .le. nxmax) + if ((xm1.le.xval(i) .and. xval(i).le.xm2 .or. xm1.eq.xm2) .and. + 1 (ym1.le.yval(i) .and. yval(i).le.ym2 .or. ym1.eq.ym2)) then + call fit_sort_exch(i, nxmax) + nxmax=nxmax-1 + else + i=i+1 + endif + enddo + if (nxmax .lt. nxmin) then + print *,'no more datapoints present - enlarge fit window' + else + call fit_sort(nxmin, nxmax) + endif + end + + + SUBROUTINE FIT_INCLUDE(X1, X2, Y1, Y2) +! -------------------------------------- + + include 'fit.inc' + + real x1, x2, y1, y2 + + integer i + real xm1, xm2, ym1, ym2 + external fit_sort_load, fit_sort_exch, fit_sort_comp + + xm1=min(x1,x2) + xm2=max(x1,x2) + ym1=min(y1,y2) + ym2=max(y1,y2) + if (nregion .lt. maxregion) then + nregion=nregion+1 + regx1(nregion)=xm1 + regx2(nregion)=xm2 + regy1(nregion)=ym1 + regy2(nregion)=ym2 + endif + i=1 + if (i .eq. nxmin) i=nxmax+1 + do while (i .le. npkt) + if ((xm1.le.xval(i) .and. xval(i).le.xm2 .or. xm1.eq.xm2) .and. + 1 (ym1.le.yval(i) .and. yval(i).le.ym2 .or. ym1.eq.ym2)) then + if (i .lt. nxmin) then + nxmin=nxmin-1 + call fit_sort_exch(i, nxmin) + else + nxmax=nxmax+1 + call fit_sort_exch(i, nxmax) + i=i+1 + endif + else + i=i+1 + endif + if (i .eq. nxmin) i=nxmax+1 + enddo + call fit_sort(nxmin, nxmax) + end + + + subroutine fit_restore_region(purge) +! +! code is not optimal (sort is called several times) +! + logical purge + + include 'fit.inc' + + integer i,j,m + + if (nregion .eq. 0) then + nxmin=1 + nxmax=npkt + else + nxmin=1 + nxmax=0 + m=nregion + if (m .ge. maxregion) then + print *,'excluded region too complex - simplified' + m=maxregion + endif + nregion=0 + do i=1,m + if (regx1(i) .gt. regx2(i) .or. regy1(i) .gt. regy2(i)) then + call fit_exclude(regx1(i), regx2(i), regy1(i), regy2(i)) + else + call fit_include(regx1(i), regx2(i), regy1(i), regy2(i)) + endif + enddo + endif + if (purge) then + if (nxmin .ne. 1) then + j=0 + do i=nxmin,nxmax + j=j+1 + xval(j)=xval(i) + yval(j)=yval(i) + sig (j)=sig (i) + rmon(j)=rmon(i) + iset(j)=iset(i) + enddo + npkt=j + nxmin=1 + nxmax=npkt + else + npkt=nxmax + endif + endif + end + + + subroutine fit_keep(keep) +! ------------------------- + + implicit none + include 'fit.inc' + character kp*1, keep*(*) + + character text*72 + integer i + + write(isyswr, *) + do i=1,nregion + if (regx1(i) .gt. regx2(i) .or. regy1(i) .gt. regy2(i)) then + text='excluded' + else + if (i .eq. 1) then + text='window' + else + text='included' + endif + endif + call fit_cvt_range(regx1(i), regx2(i), text(12:35), ' < x <') + call fit_cvt_range(regy1(i), regy2(i), text(39:72), ' < y <') + if (text .ne. 'window') write(isyswr, '(x,a)') text + enddo + if (nregion .ge. maxregion) + 1 print *,'excluded region too complex - simplified' + write(isyswr, *) + if (keep .eq. ' ') then + if (keepregion) then + kp='Y' + else + kp='N' + endif + write(isyswr,'(x,3a,$)') + 1 'Keep window/region on DAT command ([',kp,']) ? ' + READ (ISYSRD,'(a1)',ERR=999,end=999) kp + else + kp=keep + endif + if (kp .eq. 'N' .or. kp .eq. 'n' .or. kp .eq. '0') then + keepregion=.false. + elseif (kp .eq. 'Y' .or. kp .eq. 'y' .or. kp .eq. '1') then + keepregion=.true. + endif +999 end + + + + subroutine fit_cvt_range(r1, r2, text, sep) + + include 'fit.inc' + + character text*(*), sep*(*) + real r1,r2 + + integer i, l + + if (r1 .eq. r2) return + i=(len(text)-len(sep))/2 + text(i+1:i+len(sep))=sep + if (r1 .gt. r2) then + call cvt_real_str(text(1:i), l, r2, i, 0, 7, 3) + call cvt_real_str(text(i+len(sep)+1:), l, r1, 1, 0, 7, 3) + else + call cvt_real_str(text(1:i), l, r1, i, 0, 7, 3) + call cvt_real_str(text(i+len(sep)+1:), l, r2, 1, 0, 7, 3) + endif + end diff --git a/gen/fitexample.f b/gen/fitexample.f new file mode 100644 index 0000000..2f14707 --- /dev/null +++ b/gen/fitexample.f @@ -0,0 +1,69 @@ + program FIT ! change FIT to your own program name +! ----------- +! +! Simple user function example (voigtian peak). +! + implicit none + real FIT_USR_FUN + external FIT_USR_FUN ! change FIT_USR_FUN to your own function name + + character vers*32 + integer i,l +!--- +! Welcome message + + call fit_vers(vers) + call str_trim(vers, vers, l) + + print '(X)' + print '(X,2A)','Program FIT Version ',vers(1:l) + do i=1,l + vers(i:i)='-' + enddo + print '(X,2A/)','-----------------------------',vers(1:l) +!--- +! Function title and parameter names +! + call fit_userfun('EXAMPLE VOIGT', fit_usr_fun) ! function title, function + call fit_userpar('B:Bg(pos)') ! 1 background at peak pos. + call fit_userpar('D:dBg/dX') ! 2 background slope + call fit_userpar('I:Int.Int.') ! 3 integrated intensity + call fit_userpar('P:pos') ! 4 position + call fit_userpar('G:gaussFW') ! 5 gaussian fwhm + call fit_userpar('L:lorFW') ! 6 lorentzian fwhm + call fit_main + end + + + + real function fit_usr_fun(x,p,n,mode,cinfo) +! ------------------------------------------- + + implicit none + + real x ! x-value + integer n ! number of parameters + real p(n) ! parameters + integer mode ! mode + integer cinfo ! calculation information (see below) + + real voigt + external voigt + + if (mode .eq. 0) then + +! Define here your own function + + fit_usr_fun=p(1)+p(2)*(x-p(4))+p(3)*voigt(x-p(4),p(5),p(6)) + + elseif (mode .lt. 0) then + +! Use this part to do some initialisations. +! (e.g. read files, write out comments on your user function) +! This section is called by FIT_FUN (command FUN) + + print * + print *, 'Example: Single Voigtian' + + endif + end diff --git a/gen/fitlor.py b/gen/fitlor.py new file mode 100755 index 0000000..869710e --- /dev/null +++ b/gen/fitlor.py @@ -0,0 +1,118 @@ +#!/usr/bin/python +# above line tells us which program to handle this script +# +# M.Zolliker June 2081 +# +usage=''' +Usage: + +> fitlor -fit + + fit is called first, you should treat your peaks: + + fit> data 5182 get data file 5182 + fit> data [34] get peak number 34 from above datafile + fit> fun 0 as an example: select one gaussian + fit> fit you might play with parameters and reapeat + fit> k saving the data on the intermediate + k means: keep data of this peak, might also be used + in the plot window + fit> exit exit and run the conversion program + +when starting fit from fitlor, the commands 'open' and 'k' are used to +configure the outputfile for the needs of single crystal analysis + +> fitlor + + do the conversion of already existing input files + +if file names are omitted, default values are used +''' + +import sys +from math import sin, cos, radians +from subprocess import call +from collections import Mapping +from tempfile import NamedTemporaryFile + +# each entry is contained witinh curly brackets {} and +# contains the variable name and the format separated by ':' +# d n characters wide integer +# .d n characterws wide fixed point with m decimal digits + +output_format = '{n:6d}{h:4d}{k:4d}{l:4d}'\ + '{i1:10.2f}{sigi1:10.2f}'\ + '{th1:8.2f}{p1:8.2f}{chi:8.2f}{phi:8.2f}' + +# treating the arguments +if len(sys.argv) > 1 and sys.argv[1] == '-fit': + call_fit = True + sys.argv.pop(1) +else: + call_fit = False + +if len(sys.argv) > 1: + outfile = sys.argv[1] + sys.argv.pop(0) +else: + outfile = 'fitlor_out.txt' + print('output-file: %s' % outfile) + +if len(sys.argv) > 1: + datafile = sys.argv[1] + sys.argv.pop(1) +else: + datafile = 'fitlor_data.txt' + print('input-file: %s' % datafile) + +if call_fit: + with NamedTemporaryFile('w') as cmdfil: + cmdfil.write('k h,k,l,i1,p1,intexp,two_theta,chi,phi\n') + cmdfil.write('open %s\n' % datafile) + cmdfil.flush() + call(('fit', '-F', cmdfil.name)) + +tilt_geometry = False +lorentz_correction = True + +class Row(object): + def __init__(self, keys, values, fmt): + if keys is None: + raise ValueError('no keys') + for k,v in zip(keys, values): + v = float(v) + if v == int(v): + v = int(v) + setattr(self, k.lower(), v) + self.fmt = fmt + + def write(self, fil): + fil.write(self.fmt.format(**self.__dict__) + '\n') + +keys = None +rows = [] +try: + with open(datafile) as inp: + for line in inp: + values = line.split() + try: + row = Row(keys, values, output_format) + except ValueError: + keys = values + continue + rows.append(row) + row.n = len(rows) + row.th1=row.two_theta * 0.2 + if lorentz_correction: + lor_cor = sin(abs(radians(row.two_theta))) + if tilt_geometry: + lor_cor *= cos(radians(row.chi)) + row.intcor = row.i1 * lor_cor + row.sigcor = row.sigi1 * lor_cor +except IOError: + print(usage) + +with open(outfile, 'w') as out: + for row in rows: + row.write(out) + diff --git a/gen/fitv.f b/gen/fitv.f new file mode 100644 index 0000000..96cd620 --- /dev/null +++ b/gen/fitv.f @@ -0,0 +1,15 @@ + program fitv + + character str*79 + integer l + call sys_get_cmdpar(str, l) + if (str(1:1) .eq. '"' .and. l .gt. 2) then + str=str(2:l-1) + l=l-2 + endif + if (l .le. 1) then + str='FIT Version' + endif + call fit_vers(str(33:)) + print *,str + end diff --git a/gen/fvi.c b/gen/fvi.c new file mode 100644 index 0000000..152e9a3 --- /dev/null +++ b/gen/fvi.c @@ -0,0 +1,50 @@ +#include +#include + +typedef void (*Routine)(void); + +typedef struct Desc { + Routine r; + int t; +} Desc; + +static Desc list0={0,0}; +static Desc *list=&list0; +static int n=1; +static int m=0; + +static int idx(Routine r, int t) { + int i; + Desc *p; + + for (i=0; i0) { + list[i].t = t; + } + return i; + } + } + + if (n>=m) { + if (m==0) { + m=64; + } else { + m*=2; + } + p = calloc(m, sizeof(Desc)); + if (!p) return -1; + for (i=1; i ',pnam(k),' fixed' + + else + + if (werr(k) .eq. 0) then + if (werrs(k) .gt. 0) then + werr(k)=werrs(k) + else + if (ififu .eq. 1 .and. mod(k,5) .eq. 3) then + werr(k)=sqrt(werr(k+2)**2+werr(k+3)**2)/10 + endif + if (werr(k) .eq. 0) werr(k)=max(1e-5,abs(u(k))/10) + endif + endif + + npar=npar+1 + lcorsp(k)=npar + x(npar)=pintf(u(k),k) + uplus=u(k)+werr(k) + uminu=u(k)-werr(k) + dirin(npar)=(abs(pintf(uplus,k)-x(npar)) + 1 +abs(pintf(uminu,k)-x(npar)))/2 + endif + else + lcorsp(k)=0 + j=k + l=nu + do while (icsw(j) .ne. 0) ! go along correlation path + do i=1,ncor + if (icord(i) .eq. j) goto 8 ! already in ICORD + enddo + do i=l+1,nu + if (icord(i) .eq. j) goto 8 ! already in path list + enddo + icord(l)=j + l=l-1 + j=icto(j) + if (j .lt. k) goto 8 ! already tested + if (j .gt. nu) goto 8 ! illegal par. no + enddo +8 do j=l+1,nu + ncor=ncor+1 + icord(ncor)=icord(j) + enddo + endif +9 enddo + nfree=max(1,nxmax-nxmin+1-npar) + end + + + + real function pintf(pexti, i) +C ----------------------------- + include 'fit.inc' + + integer i + real pexti + + real alimi, blimi, yy + + goto (100,200,300,400) lcode(i) + +C no limits + 100 pintf = pexti + return + +C lower limit (not implemented) + 200 continue + +C upper limit (not implemented) + 300 continue + +C both limits + 400 alimi = alim(i) + blimi = blim(i) + + yy=2*(pexti-alimi)/(blimi-alimi)-1.0 + if (yy .lt. -1.0) then + yy=-1.0 + pexti=alimi + elseif (yy .gt. 1.0) then + yy=1.0 + pexti=blimi + endif + + pintf=asin(yy) + end diff --git a/gen/intprt.f b/gen/intprt.f new file mode 100644 index 0000000..083c627 --- /dev/null +++ b/gen/intprt.f @@ -0,0 +1,229 @@ + subroutine dat_intprt(text, putval, userarg) + +! +! Interprete TEXT containing name / value parameters. +! You must call DAT_DELIMITERS(SEP, ASS, QUOTE) before in order to define +! the separator symbol SEP +! the assignment symbol ASS and +! the text quote character QUOTE. +! +! DAT_INTPRT calls the subroutine PUTVAL(NAME, VALUE, USERARG) +! for each name/value pair. +! For numeric values NAME and VALUE contain name and value. +! For textual values, the argument NAME contains a concatenation +! of name '=' and the text between the quotes. In that case, VALUE +! is guaranteed to be 0.0. +! +! There may be up to 32 numeric values per name in TEXT, separated by +! blanks or commas (comma not allowed when SEP=','). +! If more then one value per name is given, PUTVAL is called several times +! +! Example: +! +! CALL DAT_DELIMITERS(';', ':=', '"') +! TEXT='first:=3.3;second:="name";third:=10,10.5,11' +! CALL DAT_INTPRT(TEXT, PUTVAL, 0) +! +! we are using ':=' as assignment symbol +! ';' as separator +! '"' as quote character +! +! DAT_INTPRT will call PUTVAL(NAME, VALUE, 0) 5 times with the following arguments: +! +! NAME VALUE +! ------------------ +! 'first' 3.3 +! 'second=name' 0.0 +! 'third' 10.0 +! 'third' 10.5 +! 'third' 11.0 +! + + character text*(*) ! text to interprete. must not be longer than 160-len(ASS) characters + external putval ! procedure to call for each name/value pair + external userarg ! user argument + +! arguments for dat_delimiters: + character sep_symbol*(*) ! separator between subsequent name/value pairs + ! must not be blank + character ass_symbol*(*) ! assignment symbol separator between name and values + ! must not be blank + character quote_char*1 ! quote character (may be blank) + + integer l,p,m,j,ln,i,k,q + + character line*160 + logical nodecpoint + + integer maxarr + parameter (maxarr=32) + real arr(maxarr) + + integer ls/0/, la/0/ + character sep*32, ass*32, quote*1 + save sep, ass, quote + + if (ls .eq. 0) + 1 stop 'DAT_INTPRT: DAT_DELIMITERS must be called first' + if (len(text)+max(la,ls) .gt. len(line)) + 1 stop 'DAT_INTPRT: text too long' + + call str_trim(line, text, l) + + line(l+1:l+1)='!' + l=index(line,'!')-1 + if (l .le. 0) RETURN + if (line(1:l) .eq. ' ') RETURN + p=0 +1 continue + line(l+1:l+la)=ass ! set stopper + + ! read blanks + if (p .lt. l) then + do while (line(p+1:p+1) .le. ' ') + p=p+1 + enddo + endif + + if (p .ge. l) RETURN + + j=p + p=p+index(line(p+1:), ass(1:la))-1 ! position of assignment char. +12 i=index(line(j+1:p+1), sep(1:ls)) + if (i .ne. 0) then + print *,'DAT_INTPRT: missing "',ass(1:la),'" : ' + 1 , line(1:j+i+ls-1) + p=j+i+ls + goto 1 + endif + if (j .eq. p) then + print *,'DAT_INTPRT: missing name: ', line + line(l+1:l+ls)=sep ! set stopper + p=j+index(line(j+1:), sep(1:ls))+ls + goto 1 + endif + m=p + do while (line(m:m) .le. ' ') + m=m-1 + enddo + if (p .ge. l) then + print *,'DAT_INTPRT: missing "',ass(1:la),'" : ', line(1:p) + RETURN + endif + p=p+la + + ! read blanks + line(l+1:l+1)=quote ! stopper + if (line(p+1:l+1) .eq. ' ') then + p=l + else + do while (line(p+1:p+1) .le. ' ') + p=p+1 + enddo + endif + + if (quote .gt. ' ' .and. line(p+1:p+1) .eq. quote) then ! --- quoted text + + p=p+1 + ln=index(line(p+1:), quote)-1 + if (ln .eq. 0) then + call putval(line(j+1:m)//'= ', 0.0, userarg) + else + call putval(line(j+1:m)//'='//line(p+1:p+ln), 0.0, userarg) + endif + p=p+ln + ln=index(line(p+1:),sep(1:ls))-1 + if (ln .lt. 0) ln=l-p + if (line(p+1:p+ln) .ne. quote) then + print *,'DAT_INTPRT: superflous characters: ',line(1:p+ln) + endif + p=p+ln+ls + + elseif (index('-.0123456789',line(p+1:p+1)) .ne. 0) then ! --- numeric + + i=0 + line(l+1:l+ls)=sep(1:ls) ! stopper + + k=p + do while (line(k+1:k+1) .eq. ' ') ! skip blanks + k=k+1 + enddo + q=p +11 continue + nodecpoint=.true. + do while (line(k+1:k+1) .ne. ' ' + 1 .and. line(k+1:k+1) .ne. ',' + 1 .and. line(k+1:k+ls) .ne. sep(1:ls)) + k=k+1 + enddo + do while (line(k+1:k+1) .eq. ' ') ! skip blanks + k=k+1 + enddo + if (line(k+1:k+1) .eq. ',' .and. + 1 line(k+1:k+ls) .ne. sep(1:ls)) then ! skip one comma + k=k+1 + do while (line(k+1:k+1) .eq. ' ') ! skip blanks + k=k+1 + enddo + endif + if (i .lt. maxarr) then + if (index(line(p+1:k), '.') .ne. 0) nodecpoint=.false. + read(line(p+1:k), *, err=103) arr(i+1) + endif + i=i+1 + if (line(k+1:k+ls) .ne. sep(1:ls)) then + p=k + goto 11 + endif + + p=k+ls + + if (nodecpoint) call meta_format(5003) ! set to integer format + if (i .eq. 1) then + call putval(line(j+1:m), arr(1), userarg) + else + ln=i + if (ln .gt. maxarr) goto 103 + do i=1,ln + call putval(line(j+1:m), arr(i), userarg) + enddo + endif + if (nodecpoint) call meta_format(0) ! reset format + + else ! --- literal + + ln=index(line(p+1:),sep(1:ls))-1 + if (ln .lt. 0) ln=l-p + i=p+ln + do while (line(i:i) .le. ' ') ! truncate trailing blanks + i=i-1 + enddo + if (i .le. p) then + call putval(line(j+1:m)//'= ', 0.0, userarg) + else + call putval(line(j+1:m)//'='//line(p+1:i), 0.0, userarg) + endif + p=p+ln+ls + + endif + goto 1 + +103 p=p+index(line(p+1:), sep(1:ls))-1 + call str_trim(line(q+1:p), line(q+1:p), ln) + call putval(line(j+1:m)//'='//line(q+1:q+ln), 0.0, userarg) + p=p+ls + goto 1 + + entry dat_delimiters(sep_symbol, ass_symbol, quote_char) + + quote=quote_char + call str_trim(sep, sep_symbol, ls) + call str_trim(ass, ass_symbol, la) + if (sep(1:ls) .le. ' ') + 1 stop 'DAT_DELIMITERS: separator must not be blank' + if (ass(1:la) .le. ' ') + 1 stop 'DAT_DELIMITERS: assignment symbol must not be blank' + if (quote .eq. sep(1:1) .or. quote .eq. ass(1:1)) then + stop 'DAT_DELIMITERS: QUOTE must be different from SEP and ASS' + endif + end diff --git a/gen/lib.fvi b/gen/lib.fvi new file mode 100644 index 0000000..23edce6 --- /dev/null +++ b/gen/lib.fvi @@ -0,0 +1,8 @@ +fvi +sys_call_c +sys_call_0 +sys_call_i +sys_call_ci +sys_call_iiieirrrr +sys_rfun_rriii +sys_rfun_r diff --git a/gen/lib.fvi2 b/gen/lib.fvi2 new file mode 100644 index 0000000..a2e54fb --- /dev/null +++ b/gen/lib.fvi2 @@ -0,0 +1,8 @@ +fvi2 +sys_call_c +sys_call_0 +sys_call_i +sys_call_ci +sys_call_iiieirrrr +sys_rfun_rriii +sys_rfun_r diff --git a/gen/main.c b/gen/main.c new file mode 100644 index 0000000..38b2473 --- /dev/null +++ b/gen/main.c @@ -0,0 +1,6 @@ +int MAIN__(int narg, char *argv[]); + +int MAIN_(int narg, char *argv[]) { + return MAIN__(narg, argv); +} + diff --git a/gen/make_custom.f b/gen/make_custom.f new file mode 100644 index 0000000..9859add --- /dev/null +++ b/gen/make_custom.f @@ -0,0 +1,51 @@ + program make_custom + +! make "customized" source files + + character line*1024, id*80 + integer l, pos, i, j, ll, iostat + + call sys_get_cmdpar(line, l) + l=l+1 + if (l .gt. len(line)) then + print *,'line too long' + goto 90 + endif + line(l:)=' ' + pos=0 + +10 i=index(line(pos+1:), ' ')-1 + if (i .lt. 0) goto 99 + if (i .eq. 0) then + pos=pos+1 + if (pos .gt. l) goto 99 + goto 10 + endif + call sys_open(1, line(pos+1:pos+i), 'r', iostat) + if (iostat .ne. 0) then + print *,'cannot open ',line(pos+1:pos+i) + goto 90 + endif + print *,'read ',line(pos+1:pos+i) + read(1,'(a)') id + if (id .eq. 'mzhelp') then + call make_help(1) + else if (id .eq. 'fvi') then + call make_fvi(1) + else if (id .eq. 'vers') then + call make_vers(1) + else + call str_trim(id, id, ll) + do j=1,ll + if (id(j:j) .lt. '0' .or. id(j:j) .gt. 'z') goto 19 + enddo + print *,line(pos+1:pos+i),' has an unknown id: ',id(1:ll) + goto 90 + ! probably a binary id: may be custom itself +19 print *,line(pos+1:pos+i),' has a strange id, skip it' + close(1) + endif + pos=pos+i+1 + goto 10 +90 stop 'error in MAKE_CUSTOM' +99 end diff --git a/gen/make_fvi.f b/gen/make_fvi.f new file mode 100644 index 0000000..b59c014 --- /dev/null +++ b/gen/make_fvi.f @@ -0,0 +1,274 @@ + subroutine make_fvi(lunin) +c +c create function variable interface (fvi) for FORTRAN +c input contains a list of subroutine/function names +c +c - first part: function type +c sys_ifun_ integer function +c sys_rfun_ real function +c sys_dfun_ double function +c sys_call_ for subroutine +c - subsequent letters: +c i integer argument +c r real argument +c d double argument +c c character(*) argument +c e external argument +c if the argument list is empty, 0 is used +c +c +c usage examples: +c +c subroutine test1(cc, rr, ii) +c character cc*(*) +c real rr +c integer ii +c ... +c end +c +c integer function test2() +c ... +c end +c +c program test +c ... +c external test1, test2 +c integer*8 cod1, cod2 +c integer sys_ifun_0 ! function +c character c8 +c real r +c integer i +c +c ... + +c call sys_funadr(test1, cod1) +c call sys_funadr(test2, cod2) +c ... +c call sys_call_cri(test1, c, r, i) +c i=sys_ifun0(test2) +c ... +c end +c + integer lunin + + character line*80, typ*8, system*16 + integer i,l,lc,lt, phase, iostat, lunout, typno + integer underscores + integer descriptor + + lunout=2 + if (lunout .eq. lunin) then + print *,'lun mismatch' + stop 'error in MAKE_FVI' + endif + call sys_check_system(system) + call sys_fortran_interface(underscores, descriptor) + call sys_open(lunout, 'sys_fvi.c', 'wo', iostat) + if (iostat .ne. 0) then + print *,'cannot write sys_fvi.c' + stop 'error in MAKE_FVI' + endif + if (system .eq. 'VMS') then + system='Alpha VMS' + elseif (system .eq. 'TRU64') then + system='Alpha Unix' + elseif (system .eq. 'GNU') then + system='GNU (g77/gcc)' + else + system = 'strange system' + endif + write(lunout,'(2a)') + 1 '/* FORTRAN function variable interface for ',system + write(lunout,'(a)') + 1 ' * this file is created by fvi and should not be modified */' + write(lunout,'(a)') + 1 '#include "fvi.c"' + typno=1964 +1 read(lunin,'(a)',end=99) line + if (line(1:1) .eq. '!') goto 1 + do i=1,len(line) + if (line(i:i) .lt. 'a') then + if (line(i:i) .le. ' ') then + l=i-1 + goto 10 + endif + if (line(i:i) .ge. 'A' .and. line(i:i) .le. 'Z') + 1 line(i:i)=char(ichar(line(i:i))+32) + endif + enddo + print *,line + stop 'too many arguments' +10 if (line(1:9) .eq. 'sys_ifun_') then + typ='int' + lt=3 + elseif (line(1:9) .eq. 'sys_rfun_') then + lt=5 + typ='float' + elseif (line(1:9) .eq. 'sys_dfun_') then + typ='double' + lt=6 + elseif (line(1:9) .eq. 'sys_call_') then + typ='void' + lt=4 + else + goto 19 + endif + call fvi_putstr(typ(1:lt+1)) + call fvi_putstr(line(1:l)) + do i=1,underscores + call fvi_putstr('_') + enddo + call fvi_putstr('(int *funno') + do phase=1,2 + lc=0 + if (line(10:l) .ne. '0') then + do i=10,l + if (i .ne. 10 .or. phase .eq. 1) then + call fvi_putstr(',') + endif + if (line(i:i) .eq. 'i') then + call fvi_putstr('int *a') + call fvi_putint(i-9) + elseif (line(i:i) .eq. 'r') then + call fvi_putstr('float *a') + call fvi_putint(i-9) + elseif (line(i:i) .eq. 'd') then + call fvi_putstr('double *a') + call fvi_putint(i-9) + elseif (line(i:i) .eq. 'c') then + if (descriptor .eq. 1) then + call fvi_putstr('void *a') ! descriptor + elseif (descriptor .eq. 0) then + call fvi_putstr('char *a') ! lengths are passed at end of argument list + lc=lc+1 + else + stop 'unknown descriptor code' + endif + call fvi_putint(i-9) + elseif (line(i:i) .eq. 'e') then + call fvi_putstr('void (*a') + call fvi_putint(i-9) + call fvi_putstr(')(void)') + else + call fvi_putstr('*** error ***') + print *,line(1:l),' unknown type: ',line(i:i) + endif + enddo + else if (phase .eq. 2) then + call fvi_putstr('void') + endif + do i=1,lc + call fvi_putstr(',int a') + call fvi_putint(i+l-9) + enddo + call fvi_putstr(')') + if (phase .eq. 1) then + call fvi_putstr(' {') + call fvi_putln(lunout) + call fvi_putstr(' typedef ') + call fvi_putstr(typ(1:lt)) + call fvi_putstr(' (*R)(') + endif + enddo + call fvi_putstr(';') + call fvi_putln(lunout) + call fvi_putstr(' int no=*funno;') + call fvi_putln(lunout) + call fvi_putstr(' if (list[no].t == ') + call fvi_putint(typno) + call fvi_putstr(') {') + call fvi_putln(lunout) + call fvi_putstr(' ') + if (typ .ne. 'void') then + call fvi_putstr('return ') + endif + call fvi_putstr('(*(R)list[no].r)(') + if (line(10:10) .ne. '0') then + call fvi_putstr('a1') + endif + do i=11,l+lc + call fvi_putstr(',') + call fvi_putstr('a') + call fvi_putint(i-9) + enddo + call fvi_putstr(');') + call fvi_putln(lunout) + call fvi_putstr(' } else {') + call fvi_putln(lunout) + call fvi_putstr(' assert(no == 0 && list[no].t == 0);') + if (typ .ne. 'void') then + call fvi_putln(lunout) + call fvi_putstr(' return 0;') + endif + call fvi_putln(lunout) + call fvi_putstr(' }') + call fvi_putln(lunout) + call fvi_putstr('}') + call fvi_putln(lunout) + call fvi_putstr('int sys_adr') + if (typ .ne. 'void') then + call fvi_putstr(line(5:5)) + endif + call fvi_putstr('_') + call fvi_putstr(line(10:l)) + do i=1,underscores + call fvi_putstr('_') + enddo + call fvi_putstr('(Routine r) {') + call fvi_putln(lunout) + call fvi_putstr(' return idx(r, ') + call fvi_putint(typno) + call fvi_putstr(');') + call fvi_putln(lunout) + call fvi_putstr('}') + call fvi_putln(lunout) + typno=typno+1 + goto 1 + +19 call fvi_putstr('*** error ***') + call fvi_putln(lunout) + print *,line(1:l),' < illegal prototype name' + goto 1 + +99 close(lunin) + close(lunout) + end + + + subroutine fvi_putstr(str) + + character str*(*) + integer n + integer lun + + character out*132/' '/,num*12 + integer l/0/,i,lunout/2/ + + if (l+len(str) .gt. len(out)-12) then ! let space for an integer number on the same line + write(lunout,'(a)') out(1:l) + l=0 + endif + out(l+1:l+len(str))=str + l=l+len(str) + return + + entry fvi_putint(n) + + write(num, '(i12)') n + do i=11,1,-1 + if (num(i:i) .eq. ' ') then + out(l+1:l+12-i)=num(i+1:12) + l=l+12-i + return + endif + enddo + stop 'FVI_PUTINT: error' + + entry fvi_putln(lun) + + if (lun .ne. lunout) stop 'MAKE_FVI: lun mismatch' + if (l .gt. 0) then + write(lunout,'(a)') out(1:l) + l=0 + endif + end diff --git a/gen/make_help.f b/gen/make_help.f new file mode 100644 index 0000000..6212c8b --- /dev/null +++ b/gen/make_help.f @@ -0,0 +1,161 @@ + subroutine out_html(lun, str) + +! lun = 0: put into buffer +! lun != 0: write buffer to lun + + integer lun + character str*(*) + integer l/0/ + save l + character*1024 line + save line + + integer ls + + if (lun .eq. 0) then + ls=len(str) + if (l .ge. len(line)) then + l=len(line)-1 + endif + if (l+ls .gt. len(line)) then + ls=1 + endif + line(l+1:l+ls)=str + l=l+ls + else + write(lun, '(a)') line(1:l) + l=0 + endif + end + + subroutine make_help(lunin) + + integer lunin + integer lunout + integer htmlout + character line*132, tab*1, upcase*64 + integer l, iostat, i, fmt, p + + tab=char(9) + lunout=2 + htmlout=3 + if (lunout .eq. lunin) then + print *,'lun mismatch' + stop 'error in MAKE_HELP' + endif + call sys_open(lunout, 'fit_help.f', 'wo', iostat) + if (iostat .ne. 0) then + print *,'cannot write fit_help.f' + stop 'error in MAKE_HELP' + endif + call sys_open(htmlout, 'fit_help.html', 'wo', iostat) + if (iostat .ne. 0) then + print *,'cannot write fit_help.html' + stop 'error in MAKE_HELP' + endif + + write(lunout,'(a,9(/,a))') + 1 '! DO NOT EDIT this subroutine.' + 1,'! It is automatically created with: make_custom fit.help' + 1,tab//'subroutine fit_help(topic)' + 1,tab//'character topic*(*), topup*64' + 1,tab//'integer l' + 1,tab//'topup(1:1)='' ''' + 1,tab//'call str_upcase(topup(2:), topic)' + 1,tab//'call str_trim(topup, topup, l)' + 1,tab//'if (topup .eq. '' '') then' + 1,tab//' print 1' + + write(htmlout, '(a)') '
FIT HELP'
+	fmt=1
+1	read(lunin, '(a)',err=99,end=99) line
+	if (line(1:1) .eq. '=') then
+	  if (fmt .ne. 1) write(lunout,'(a)') tab//'1)'
+	  do i=1,len(line)
+	    if (line(i:i) .eq. '=') line(i:i)=' '
+	  enddo
+	  call str_trim(line, line, l)
+	  call str_upcase(line(1:l), line(1:l))
+	  i=1
+          do while (i.lt.l)
+            if (line(i:l) .ne. ' ') then
+              do while (line(i:i) .eq. ' ')
+                i=i+1
+              enddo
+	      p=i
+              do while (line(i:i) .gt. ' ')
+                i=i+1
+              enddo
+	      call out_html(0, '')
+	    endif
+	  enddo
+	  call out_html(htmlout, ' ')
+	  call out_html(0, '
') + call out_html(htmlout, ' ') + write(lunout,'(a)') tab//'elseif (index(' + if (l .gt. 60) then + write(lunout,'(3a/3a)') + 1 tab//'1'' ',line(1:60),'''' + 1 ,tab//'1//''',line(61:l),'''' + else + write(lunout,'(3a)') tab//'1'' ',line(1:l),'''' + endif + write(lunout,'(a)') tab//'1 ,topup(1:l)) .ne. 0) then' + write(lunout,'(a,i4/i4,a)') + 1 tab//'print ',fmt,fmt,tab//'format (' + fmt=fmt+1 + else + call str_trim(line, line(1:len(line)-1), l) + p=0 + i=index(line(p+1:l+1), '"') + do while (i .ne. 0) + if (i .gt. 1) then + call out_html(0, line(p+1:p+i-1)) + endif + p=p+i + i=index(line(p+1:l+1), '"') + if (i .eq. 0) then + call out_html(htmlout, ' ') + print *,'ERROR' + write(htmlout, '(a)') 'ERROR' + close(htmlout) + else if (i .gt. 1) then + call str_upcase(upcase, line(p+1:p+i-1)) + call out_html(0, '') + call out_html(0,line(p+1:p+i-1)) + call out_html(0,'') + endif + p=p+i + i=index(line(p+1:l+1), '"') + enddo + call out_html(0, line(p+1:l+1)) + call out_html(htmlout, ' ') + p=0 +20 i=index(line(p+1:), '''') + if (i .ne. 0) then + p=p+i + line(p+1:l+1)=line(p:l) + p=p+2 + l=l+1 + goto 20 + endif + if (l .gt. 60) then + write(lunout, '(3a/3a)') + 1 tab//'1/'' ',line(1:60),'''' + 1,tab//'1,''',line(61:l),'''' + else + write(lunout,'(3a)') + 1 tab//'1/'' ',line(1:l),'''' + endif + endif + goto 1 +99 write(lunout,'(a/a/a)') tab//'1)',tab//'endif',tab//'end' + write(htmlout, '(a)') '
' + close(lunin) + close(lunout) + close(htmlout) + end diff --git a/gen/make_vers.f b/gen/make_vers.f new file mode 100644 index 0000000..b1af938 --- /dev/null +++ b/gen/make_vers.f @@ -0,0 +1,37 @@ + subroutine make_vers(lunin) + + integer lunin, lunout + character tab*1, vers*32, dat*8, tim*10 + integer l, iostat + + tab=char(9) + lunout=2 + if (lunout .eq. lunin) then + print *,'lun mismatch' + stop 'error in MAKE_VERS' + endif + call sys_open(lunout, 'fit_vers.f', 'wo', iostat) + if (iostat .ne. 0) then + print *,'cannot write fit_vers.f' + stop 'error in MAKE_VERS' + endif + + read(lunin,'(a)') vers + call str_trim(vers, vers, l) + call date_and_time(dat, tim) + vers(l+1:)=' ('//dat(1:4)//'-'//dat(5:6)//'-'//dat(7:8)//' ' + 1//tim(1:2)//':'//tim(3:4)//':'//tim(5:6)//')' + call str_trim(vers, vers,l) + write(lunout,'(a,6(/,a))') + 1 '! DO NOT EDIT this subroutine.' + 1,'! It is automatically created with: make_custom fit.vers' + 1,tab//'subroutine fit_vers(version)' + 1,tab//'character version*(*)' + 1,tab//'version='''//vers(1:l)//'''' + 1,tab//'end' + close(lunin) + close(lunout) + end + + + diff --git a/gen/metac.c b/gen/metac.c new file mode 100644 index 0000000..1bacbca --- /dev/null +++ b/gen/metac.c @@ -0,0 +1,334 @@ +#include +#include +#include +#include "myc_err.h" +#include "myc_mem.h" +#include "myc_str.h" +#include "myc_fortran.h" + +#define NAME_LEN 32 +#define STR_SIZE 2048 +#define STD_FORMAT 8230 + +typedef struct Itm_ { + struct Itm_ *next; + char *str; + int cnt, level, fmt, allsize; + float vmin, vmax, value; + char name[NAME_LEN], lowName[NAME_LEN]; +} Itm; + +static Itm *head, *lend; + +static int level, min_level=99999, max_level=-99999; +static int format=STD_FORMAT; /* width*1000+fixlen*100+digits*10+trunc) */ + +Itm *meta_find(char *name) { + Itm *p, *res; + char lowName[NAME_LEN]; + static int init=1; + + res=NULL; + p=NULL; + if (init) { + init=0; + head=NULL; + lend=NULL; + } + str_lowcase(lowName, name); + p=head; + while (p!=NULL) { + if (0==strcmp(p->lowName, lowName)) { + if (0==strcmp(p->name, name)) return p; + res=p; + } + p=p->next; + } + return res; +} + + +Itm *meta_find_create(char *name) { + Itm *p; + + p=meta_find(name); + if (p==NULL) { + NEW(p, Itm); + assert(p->str==NULL); + str_copy(p->name, name); + p->cnt=0; + str_lowcase(p->lowName, name); + if (lend==NULL) { + head=p; + } else { + lend->next=p; + } + lend=p; + } + p->level=level; + if (level>max_level) max_level=level; + if (levelmax_level) return max_level; + return *this; +} + +void F_FUN(meta_set_level)(int *this) { + level=*this; +} + +void F_FUN(meta_get_str)(F_CHAR(name), F_CHAR(value) F_CLEN(name) F_CLEN(value)) { + char nam[NAME_LEN]; + Itm *p; + static char buf[32]; + + STR_TO_C(nam, name); + p=meta_find(nam); + if (p==NULL) return; + if (p->str!=NULL) { + STR_TO_F(value, p->str); + } else { + sprintf(buf, "%f", p->value); + STR_TO_F(value, buf); + } +} + +void F_FUN(meta_get_real)(F_CHAR(name), float *value F_CLEN(name)) { + char nam[NAME_LEN]; + Itm *p; + + STR_TO_C(nam, name); + p=meta_find(nam); + if (p!=NULL) { + *value=p->value; + } +} + +void F_FUN(meta_real_range)(F_CHAR(name), float *vmin, float *vmax F_CLEN(name)) { + char nam[NAME_LEN]; + Itm *p; + + STR_TO_C(nam, name); + p=meta_find(nam); + if (p!=NULL) { + *vmin=p->vmin; + *vmax=p->vmax; + } +} + +void F_FUN(meta_put_str)(F_CHAR(name), F_CHAR(value), int *overwrite F_CLEN(name) F_CLEN(value)) { + char nam[NAME_LEN], val[STR_SIZE]; + Itm *p; + int l; + + STR_TO_C(nam, name); + STR_TO_C(val, value); + + p=meta_find_create(nam); + l=(strlen(val)/16+1)*16; + if (p->str==NULL) { + p->allsize=l; + p->str=MALLOC(l); + p->str[0]='\0'; + p->cnt=0; + } else if (l>p->allsize) { + free(p->str); + p->allsize=l; + p->str=MALLOC(l); + p->str[0]='\0'; + p->cnt=0; + } else if (*overwrite) { + p->cnt=0; + } + if (p->cnt > 0) { + if (0==strcmp(p->str, val)) return; + } + p->cnt++; + str_ncpy(p->str, val, p->allsize); +} + +void F_FUN(meta_put_real)(F_CHAR(name), float *value, int *overwrite F_CLEN(name)) { + Itm *p; + char nam[NAME_LEN]; + + STR_TO_C(nam, name); + p=meta_find_create(nam); + if (p->str!=NULL) { + FREE(p->str); + p->str=NULL; + p->cnt=0; + } else if (*overwrite>0) { + p->cnt=0; + } + if (p->cnt <= 0) { + p->vmin=*value; + p->vmax=*value; + } else { + if (*value < p->vmin) p->vmin=*value; + if (*value > p->vmax) p->vmax=*value; + } + p->value=*value; + p->cnt++; + p->fmt=format; +} + +void F_FUN(meta_purge)(int *from, int *to) { + Itm *p, *p0, *pn; + + p0=NULL; + p=head; + while (p!=NULL) { + if (*from <= p->level && p->level <= *to) { + pn=p->next; + if (p->str!=NULL) FREE(p->str); + FREE(p); + if (p0!=NULL) { + p0->next=pn; + } else { + head=pn; + } + p=pn; + } else { + p0=p; + p=p->next; + } + } + lend=p0; +} + +void F_FUN(cvt_real_str)(F_CHAR(fstr), int *l, float *f, int *w, int *d, int*g, int *t F_CLEN(fstr)); + +int meta_cvt_real(char *str, int fmt, float value) { + int fdig, gdig, wid, trc, l; + char buf[12]; + F_DCHAR(fstr,10); + + wid=fmt/1000; fmt=fmt % 1000; + fdig=fmt/100; fmt=fmt % 100; + gdig=fmt/10; + trc=fmt % 10; + F_FUN(cvt_real_str)(fstr, &l, &value, &wid, &fdig, &gdig, &trc F_ALEN(fstr)); + STR_TO_C(buf, fstr); + strcpy(str, buf); + return l; +} + +int meta_fmt_item(Itm *p, char *line, int lineLen, int list_mode) { + int l, fmt, trc; + + str_ncpy(line, p->name, lineLen); + if (p->str) { + str_ncat(line, "='", lineLen); + str_ncat(line, p->str, lineLen); + l=strlen(line); + if (l < lineLen-2) { + if (p->cnt > 1 && list_mode < 2 && line[l-1]!='?') { + line[l]='?'; l++; + } + line[l]='\''; l++; + line[l]='\0'; + } + } else { + if (p->fmt==0) { + fmt=format; + } else { + fmt=p->fmt; + } + if (fmt % 10 == 3) { + trc=3; + } else { + trc=1; + } + str_ncat(line,"=", lineLen); + l=strlen(line); + if (l < lineLen - 24) { + if (list_mode==0) { + l+=meta_cvt_real(line+l, 1060+trc, p->vmin); + } else if (list_mode==1) { + l+=meta_cvt_real(line+l, fmt, p->vmin); + } else { + l+=meta_cvt_real(line+l, fmt, p->value); + } + if (p->vmax != p->vmin && list_mode < 2) { + if (list_mode==0) { + line[l]=' '; l++; + l+=meta_cvt_real(line+l, 1060+trc, p->vmax); + } else { + line[l]='.'; l++; + line[l]='.'; l++; + l+=meta_cvt_real(line+l, fmt, p->vmax); + } + } + } + } + return l; +} + +void F_FUN(meta_show)(F_CHAR(name) F_CLEN(name)) { + char nam[NAME_LEN]; + Itm *p; + char line[256]; + + STR_TO_C(nam, name); + p=meta_find(nam); + if (p!=NULL) { + meta_fmt_item(p, line, sizeof line, 0); + printf(" %s\n", line); + } else { + printf(" %s not found\n", nam); + } +} + +void F_FUN(meta_list)(int *levl, int *listmode, int *str_select, void (*outrtn)(void *arg, F_CHAR(str) F_CLEN(str)) + , void *outarg, F_CHAR(except) F_CLEN(except)) { + Itm *p; + char line[256], lowName[NAME_LEN+2], exc[256]; + int l,lev,list_str, list_mode; + F_DCHAR(fline, 256); + + list_mode=*listmode; /* 0 compact (on file), 1: for info, 2: don't show min/max */ + STR_TO_C(exc, except); + str_append(exc, " "); + lev=*levl; + list_str=*str_select; + p=head; + if (levmax_level) return; + while (p!=NULL) { + if (p->level==lev && (list_str!=0) == (p->str!=NULL)) { /* check if level and type matches */ + str_copy(lowName, " "); + str_append(lowName, p->lowName); + str_append(lowName, " "); + if (NULL==strstr(exc, p->lowName)) { + l=meta_fmt_item(p, line, sizeof line, list_mode); + F_LEN(fline)=l; + STR_TO_F(fline, line); + outrtn(outarg, fline F_ALEN(fline)); + } + } + p=p->next; + } +} + +void F_FUN(meta_format)(int *fmt) { + if (*fmt==0) { + format=STD_FORMAT; + } else { + format=*fmt; + } +} + +void F_FUN(meta_set_format)(F_CHAR(name), int *fmt F_CLEN(name)) { + Itm *p; + char nam[NAME_LEN]; + STR_TO_C(nam, name); + p=meta_find(nam); + if (p!=NULL) { + p->fmt=*fmt; + } +} diff --git a/gen/metaf.f b/gen/metaf.f new file mode 100644 index 0000000..3f49c15 --- /dev/null +++ b/gen/metaf.f @@ -0,0 +1,180 @@ + subroutine meta_put(str, value) + character str*(*) + real value + + integer i + + if (value .eq. 0.0) then + i=index(str,'=') + if (i .gt. 0) then + if (i .eq. 1) return + if (i .eq. len(str)) then + call meta_put_str(str(1:i-1), ' ', 0) + else + call meta_put_str(str(1:i-1), str(i+1:), 0) + endif + return + endif + endif + call meta_put_real(str, value, 0) + end + + subroutine sym_put_str(name, str) + character name*(*), str*(*) + + call meta_put_str(name, str, 1) + end + + subroutine sym_put_real(name, value) + character name*(*) + real value + + call meta_put_real(name, value, 1) + end + + subroutine sym_get_str(name, l, str) + character name*(*), str*(*) + integer l + + str=' ' + call meta_get_str(name, str) + call str_trim(str, str, l) + end + + subroutine sym_get_real(name, value) + character name*(*) + real value + + call meta_get_real(name, value) + end + + subroutine fit_put_str(name, str) + character name*(*), str*(*) + + call meta_put_str(name, str, 1) + end + + subroutine fit_put_real(name, value) + character name*(*) + real value + + call meta_put_real(name, value, 1) + end + + subroutine fit_get_str(name, l, str) + character name*(*), str*(*) + integer l + + str=' ' + call meta_get_str(name, str) + call str_trim(str, str, l) + end + + subroutine fit_get_real(name, value) + character name*(*) + real value + + call meta_get_real(name, value) + end + + subroutine sym_list(lun, listmode, to_lev, except) + integer lun, listmode + integer to_lev + character*(*) except + + integer l + external sym_out_file + integer meta_lim_level + + if (listmode .gt. 0) call sym_out_lev(1) + do l=meta_lim_level(-99999),meta_lim_level(to_lev) + if (listmode .eq. 0) call sym_out_lev(l) + call meta_list(l, listmode, 0, sym_out_file, lun, except) + call meta_list(l, listmode, 1, sym_out_file, lun, except) + call sym_out_ln(lun) ! line break + enddo + end + + subroutine sym_out_file(lun, line) + integer lun, lvl + character line*(*) ! empty line means evt. line break + + character buf*256 + integer l/0/, lev/0/ + save buf, l, lev + integer ll + character ind*32/' '/ + + call str_trim(line, line, ll) + if (l+ll .gt. 80-lev) then + if (lev .eq. 0) then + write(lun, '(a)') buf(1:l) + else + write(lun, '(a,a)') ind(1:lev),buf(1:l) + endif + l=0 + elseif (l .gt. 0) then + buf(l+1:l+2)=';' + l=l+2 + endif + buf(l+1:)=line + l=l+ll + return + + entry sym_out_ln(lun) + if (l .gt. 0) then + if (lev .eq. 0) then + write(lun, '(a)') buf(1:l) + else + write(lun, '(a,a)') ind(1:lev),buf(1:l) + endif + endif + l=0 + return + + entry sym_out_lev(lvl) + lev=lvl + end + + subroutine sym_show(lev) + integer lev + + call meta_set_level(lev) + end + + subroutine sym_newline + entry sym_level + end + + subroutine sym_read(lun, wrapper) + integer lun + external wrapper + + character line*132 + external meta_put + integer j, iostat + + call wrapper(' ', 0.0, meta_put) ! reset + call dat_delimiters(';', '=', '''') +10 continue + read(lun, '(a)', iostat=iostat) line + if (iostat .ne. 0 .or. line .eq. ' ') return + j=0 + do while (line(j+1:j+1) .eq. ' ') + j=j+1 + enddo + call meta_set_level(j) + call dat_intprt(line, wrapper, meta_put) + goto 10 + end + + + subroutine sym_purge(lev) + integer lev + + call meta_purge(lev, 99999) + end + + subroutine obsolete + print *,'obsolete function called' + end diff --git a/gen/migrad.f b/gen/migrad.f new file mode 100644 index 0000000..7528d71 --- /dev/null +++ b/gen/migrad.f @@ -0,0 +1,338 @@ + SUBROUTINE MIGRAD +C -------------------- + include 'fit.inc' + +c Minimization subroutine based on a variable metric method. It is fast +c near a minimum or in any 'nearly quadratic' region but slower if the +c chi**2 function is badly behaved. It uses the first derivatives of the +c chi**2 function, which may either be supplied by the user (subroutine +c FNCTN, GG(*)) or estimated by MIGRAD (subroutine DERIVE). + + + REAL*8 VG(MAXPAR), VII(MAXPAR), D, VGI + real G(MAXPAR), G2(MAXPAR) + real GS(MAXPAR), R(MAXPAR),XXS(MAXPAR), FLNU(MAXPAR) + + integer iswtr, npfn, iflag, npard, i, ntry, negg2, id, kg, nf, ns + integer matgd, j, iter, npargd + real parn, rho2, rostop, trace, fs, xtf, fs1, fs2, xbegin, f, ri + real gdel, denom, slam, slamin, slamax, tlamin, tlamax, f2 + real aa, bb, cc, tlam, f3, gvg, delgam, gami + + DATA SLAMIN,SLAMAX,TLAMIN,TLAMAX/0.2, 3.0, 0.05, 6.0/ + + IF (NPAR .LE. 0) RETURN + + if (isw(2) .eq. 2) isw(2)=1 + + ISWTR = ISW(5) - ITAUR + NPFN = NFCN + PARN=NPAR + RHO2 = 10.*APSI +! ROSTOP = 1.0E-5 * APSI + ROSTOP = 1.0E-3 * APSI + TRACE=1. + IFLAG=4 + IF (ISW(3) .EQ. 1) IFLAG = 2 + FS = AMIN + IF (ITAUR .LT. 1 .and. isyswr.ne.0) + 1 WRITE (ISYSWR,470) ROSTOP, APSI, VTEST + GO TO 2 + 470 FORMAT (/' Start MIGRAD minimization. ' + 1/5X,'Convergence criteria: Estimated distance to minimum edm <' + 1/,E9.2/5X,'or edm <',E9.2 + 1,' and fractional change in variance matrix <',E9.2) + 1 if (isyswr .ne. 0) WRITE (ISYSWR,520) +C. . . . STEP SIZES DIRIN . . . + 2 NPARD = NPAR + DO 3 I= 1, NPAR + D = 0.02* ABS(DIRIN(I)) + IF (ISW(2) .GE. 1) D = 0.02* SQRT(ABS(V(I,I))*UP) + IF (D .LT. 1.0E-5 *ABS(X(I))) D = 1.0E-5 * X(I) ! was 1E-6 (M.Z. 1.9.95) + 3 DIRIN(I) = D +C. . . . . . STARTING GRADIENT + NTRY = 0 + 4 NEGG2 = 0 + DO 10 ID= 1, NPARD + I = ID + NPAR - NPARD + D = DIRIN(I) + XTF = X(I) + X(I) = XTF + D + CALL FNCTN(X,FS1) + NFCN = NFCN + 1 + X(I) = XTF - D + CALL FNCTN(X,FS2) + NFCN = NFCN + 1 + X(I) = XTF + GS(I) = (FS1-FS2)/(2.0 * D) + G2(I) = (FS1 + FS2 - 2.0*AMIN) / D**2 + IF (G2(I) .GT. 1.0E-30) GO TO 10 +C . . . SEARCH IF G2 .LE. 0. . . + if (isyswr .ne. 0) WRITE (ISYSWR,520) + NEGG2 = NEGG2 + 1 + NTRY = NTRY + 1 + IF (NTRY .GT. 4) GO TO 230 + D = 50.*ABS(DIRIN(I)) + XBEGIN = XTF + IF (GS(I) .LT. 0.) DIRIN(I) = -DIRIN(I) + KG = 0 + NF = 0 + NS = 0 + 5 X(I) = XTF + D + CALL FNCTN(X,F) + NFCN = NFCN + 1 + IF (F .LE. AMIN) GO TO 6 +C FAILURE + IF (KG .EQ. 1) GO TO 8 + KG = -1 + NF = NF + 1 + D = -0.4*D + IF (NF .LT. 10) GO TO 5 + D = 1000.*D + GO TO 7 +C SUCCESS + 6 XTF = X(I) + D = 3.0*D + AMIN = F + KG = 1 + NS = NS + 1 + IF (NS .LT. 10) GO TO 5 + IF (AMIN .LT. FS) GO TO 8 + D = 0.001*D + 7 XTF = XBEGIN + G2(I) = 1.0 + NEGG2 = NEGG2 - 1 + 8 X(I) = XTF + DIRIN(I) = 0.1*D + FS = AMIN + 10 CONTINUE + IF (NEGG2 .GE. 1) GO TO 4 + NTRY = 0 + MATGD = 1 +C . . . . . . DIAGONAL MATRIX + IF (ISW(2) .GT. 1) GO TO 15 + 11 NTRY = 1 + MATGD = 0 + DO 13 I= 1, NPAR + DO 12 J= 1, NPAR + 12 V(I,J) = 0. + 13 V(I,I) = 2.0/G2(I) +C. . . GET SIGMA AND SET UP LOOP + 15 SIGMA = 0. + DO 18 I= 1, NPAR + IF (V(I,I) .LE. 0.) GO TO 11 + RI = 0. + DO 17 J= 1, NPAR + XXS(I) = X(I) + 17 RI= RI+ V(I,J) * GS(J) + 18 SIGMA = SIGMA + GS(I) *RI *0.5 + IF (SIGMA .GE. 0.) GO TO 20 + if (isyswr .ne. 0) WRITE (ISYSWR,520) + IF (NTRY.EQ.0) GO TO 11 + ISW(2) = 0 + GO TO 230 + 20 ISW(2) = 1 + ITER = 0 + CALL INTOEX(X) + IF (ISWTR .GE. 1) CALL FIT_PRINT(0) +C . . . . . START MAIN LOOP + 24 CONTINUE + GDEL = 0. + DO 30 I=1,NPAR + RI = 0. + DO 25 J=1,NPAR + 25 RI = RI + V(I,J) *GS(J) + DIRIN(I) = -0.5*RI + GDEL = GDEL + DIRIN(I)*GS(I) +C.LINEAR SEARCH ALONG -VG . . . + 30 X(I) =XXS(I) + DIRIN(I) + CALL FNCTN(X, F) + NFCN=NFCN+1 +C. QUADR INTERP USING SLOPE GDEL + DENOM = 2.0*(F-AMIN-GDEL) + IF (DENOM .LE. 0.) GO TO 35 + SLAM = -GDEL/DENOM + IF (SLAM .GT. SLAMAX) GO TO 35 + IF (SLAM .LT. SLAMIN) SLAM=SLAMIN + GO TO 40 + 35 SLAM = SLAMAX + 40 IF (ABS(SLAM-1.0) .LT. 0.1) GO TO 70 + DO 45 I= 1, NPAR + 45 X(I) =XXS(I) + SLAM*DIRIN(I) + CALL FNCTN(X,F2) + NFCN = NFCN + 1 +C. QUADR INTERP USING 3 POINTS + AA = FS/SLAM + BB = F/(1.0-SLAM) + CC = F2/ (SLAM*(SLAM-1.0)) + DENOM = 2.0*(AA+BB+CC) + IF (DENOM .LE. 0.) GO TO 48 + TLAM = (AA*(SLAM+1.0) + BB*SLAM + CC)/DENOM + IF (TLAM .GT. TLAMAX) GO TO 48 + IF (TLAM .LT. TLAMIN) TLAM=TLAMIN + GO TO 50 + 48 TLAM = TLAMAX + 50 CONTINUE + DO 51 I= 1, NPAR + 51 X(I) = XXS(I)+TLAM*DIRIN(I) + CALL FNCTN(X,F3) + NFCN = NFCN + 1 + IF (F.GE.AMIN .AND. F2.GE.AMIN .AND. F3.GE.AMIN) GO TO 200 + IF (F .LT. F2 .AND. F .LT. F3) GO TO 61 + IF (F2 .LT. F3) GO TO 58 + 55 F = F3 + SLAM = TLAM + GO TO 65 + 58 F = F2 + GO TO 65 + 61 SLAM = 1.0 + 65 DO 67 I= 1, NPAR + DIRIN(I) = DIRIN(I)*SLAM + 67 X(I) = XXS(I) + DIRIN(I) + 70 AMIN = F + ISW(2) = 2 + IF (SIGMA+FS-AMIN .LT. ROSTOP) GO TO 170 + IF (SIGMA+RHO2+FS-AMIN .GT. APSI) GO TO 75 + IF (TRACE .LT. VTEST) GO TO 170 + 75 CONTINUE + IF (NFCN-NPFN .GE. NFCNMX) GO TO 190 + ITER = ITER + 1 + IF (ISWTR.GE. 3 .OR.(ISWTR.EQ. 2 .AND. MOD(ITER,10) .EQ.1)) + 1 CALL FIT_PRINT(0) +C. . . GET GRADIENT AND SIGMA . + IF (ISW(3) .NE. 1) GO TO 80 + CALL FNCTN(X,AMIN) + NFCN = NFCN + 1 + 80 CALL DERIVE(G,G2) + RHO2 = SIGMA + SIGMA = 0. + GVG = 0. + DELGAM = 0. + DO 100 I= 1, NPAR + RI = 0. + VGI = 0. + DO 90 J= 1, NPAR + VGI = VGI + V(I,J)*(G(J)-GS(J)) + 90 RI = RI + V(I,J) *G (J) + R(I) = RI * 0.5 + VG(I) = VGI*0.5 + GAMI = G(I) - GS(I) + GVG = GVG + GAMI*VG(I) + DELGAM = DELGAM + DIRIN(I)*GAMI + 100 SIGMA = SIGMA + G(I)*R(I) + IF (SIGMA .LT. 0.) GO TO 1 + IF (GVG .LE. 0.) GO TO 105 + IF (DELGAM .LE. 0.) GO TO 105 + GO TO 107 + 105 IF (SIGMA .LT. 0.1*ROSTOP) GO TO 170 + GO TO 1 + 107 CONTINUE +C. UPDATE COVARIANCE MATRIX + TRACE=0. + DO 120 I= 1, NPAR + VII(I) = V(I,I) + DO 120 J=1,NPAR + D = DIRIN(I)*DIRIN(J)/DELGAM - VG(I)*VG(J)/GVG + 120 V(I,J) = V(I,J) + 2.0*D + IF (DELGAM .LE. GVG) GO TO 135 + DO 125 I= 1, NPAR + 125 FLNU(I) = DIRIN(I)/DELGAM - VG(I)/GVG + DO 130 I= 1, NPAR + DO 130 J= 1, NPAR + 130 V(I,J) = V(I,J) + 2.0*GVG*FLNU(I)*FLNU(J) + 135 CONTINUE + DO 140 I= 1, NPAR + 140 TRACE = TRACE + ((V(I,I)-VII(I))/(V(I,I)+VII(I)))**2 + TRACE = SQRT(TRACE/PARN) + CALL UCOPY(X,XXS,NPAR) + CALL UCOPY(G,GS,NPAR) + FS = F + GO TO 24 +C . . . . . END MAIN LOOP + 170 if (isyswr .ne. 0) WRITE(ISYSWR,500) + 500 FORMAT (/' MIGRAD minimization has converged') +c do i=1,npar +c type '(X,8F10.5)',(v(i,j)/sqrt(v(i,i)*v(j,j)),j=1,npar) +c enddo + + ISW(2) = 3 + IF(ISWTR .GE. 0) CALL FIT_PRINT(1-ITAUR) + IF (ITAUR .GT. 0) GO TO 435 + IF (MATGD .GT. 0) GO TO 435 + NPARGD = NPAR*(NPAR+5)/2 + IF (NFCN-NPFN .GE. NPARGD) GO TO 435 + if (isyswr .ne. 0) + 1 WRITE (ISYSWR,'(X,A)') 'Covariance matrix inaccurate' + IF (ISW(2) .GE. 2) ISW(2) = 3 + GO TO 435 + 190 ISW(1) = 1 + if (nfcnmx .gt. 0) GO TO 230 + if (isyswr .ne. 0) write(isyswr, '(/a)') ' MIGRAD aborted' + goto 231 + 200 if (isyswr .ne.0) WRITE (ISYSWR,650) + 650 FORMAT (/' MIGRAD fails to find improvement') + CALL UCOPY(XXS,X,NPAR) + ISW(2) = 1 + IF (SIGMA .LT. ROSTOP) GO TO 170 + IF (MATGD .GT. 0) GO TO 2 + if (isw(2) .eq. 1) isw(2)=2 + 230 if (isyswr .ne. 0) WRITE (ISYSWR,510) + 510 FORMAT (/' MIGRAD terminated without convergence') + 231 CALL FNCTN(X,AMIN) + CALL FIT_PRINT(1-ITAUR) + 435 RETURN + 520 FORMAT (/' Covariance matrix is not positive-definite') + END + + SUBROUTINE DERIVE(GG,GG2) +C ---------------------------- + include 'fit.inc' + real GG(*),GG2(*) + + integer iflag, i, lc + real eps, xtf, fs1, fs2, dd + + IF (ISW(3) .EQ. 1) GO TO 100 + IFLAG = 4 + DO 46 I=1,NPAR + EPS = 0.1 * ABS(DIRIN(I)) + IF (ISW(2) .GE. 1) EPS = EPS + 0.005*SQRT(V(I,I)*UP) + IF (EPS .LT. 1.0E-8*ABS(X(I))) EPS = 1.0E-8*X(I) + XTF = X(I) + X(I) = XTF + EPS + CALL FNCTN(X,FS1) + NFCN=NFCN+1 + X(I) = XTF - EPS + CALL FNCTN(X,FS2) + NFCN=NFCN+1 +C. . . . . . . FIRST DERIVATIVE + GG(I)= (FS1-FS2)/(2.0*EPS) +C. . . ERROR ON FIRST DERIVATIVE + GG2(I)= (FS1+FS2-2.0*AMIN)/(2.0*EPS) + X(I) = XTF + 46 CONTINUE + CALL INTOEX(X) + GO TO 200 +C. DERIVATIVES CALC BY FCN + 100 DO 150 I= 1, NU + LC=LCORSP(I) + IF (LC .LT. 1) GO TO 150 + IF (LCODE(I) .GT. 1) GO TO 120 + GG(LC)=GG(I) + GO TO 150 + 120 DD = (BLIM(I)-ALIM(I))*0.5 *COS(X(LC)) + GG(LC)=GG(I)*DD + 150 CONTINUE + 200 RETURN + END + + SUBROUTINE UCOPY(FROM,TO,N) +C ----------------------------- + integer n, i + real FROM(N),TO(N) + IF(N.LT.1)RETURN + DO 100 I=1,N +100 TO(I)=FROM(I) + RETURN + END + diff --git a/gen/myc_err.c b/gen/myc_err.c new file mode 100644 index 0000000..c92112e --- /dev/null +++ b/gen/myc_err.c @@ -0,0 +1,136 @@ +#include +#include +#include + +#include "myc_fortran.h" +#include "myc_str.h" +#include "myc_err.h" + +#define SLEN 64 +#define MLEN 64 + +static char *txt[SLEN]; +static int sp=0; +static int stack_empty=1; + +int ErrCode; +char *ErrMessage=NULL; +void (*outrtn)(void *, char *)=NULL; +void *outarg; + +void ErrTxt(char *text, int systemError) +{ + if (systemError) { + sp=0; ErrCode=errno; ErrMessage=strerror(errno); + } + if (stack_empty && sp>0) { + sp=0; + stack_empty=0; + } + if (sp +#include + +/* ErrHDL Error handling utilities + ------------------------------- + Makes code more readable by hiding annoying error condition checks. + +Macros and routines: + + Spelling in uppercase indicates, that it the program flow + may be modified (jump to OnError label or program exit). + + + ERR_x + + Usage Error condition Error message taken from + ----------------------------------------------------------------------------------------- + ERR_SI(res=routine1(...)) res<0 errno + ERR_SP(ptr=routine2(...)) ptr==NULL errno + ERR_I(res=routine3(...)) res<0 stored by routine3 using errhdl mechanism + ERR_P(ptr=routine4(...)) ptr==NULL stored by routine4 using errhdl mechanism + + The result assignment "res=" or "ptr=" is optional. + + Description: + The routine routineX is called. + If the result indicates an error, the source text is saved and the + program continues at the OnError label. + The error message and the source code of the calling instructions is + saved for a later call to ErrShow or ErrExit. + + ERR_EXIT("program_name") + + Show error and exit program. + + ERR_MSG("message") + + Signals an error condition. If "message" is replaced by a variable, + take care that it is not modified until ErrShow is called. + + ERR_COD(cod) + + Signals an error condition as code from errno.h + + ErrShow("program_name") + + Show actual error message with traceback information to stdout + or a file fil + +Global Variables (read only) + + int ErrCode + + actual error message code + = errno for system errors or + = -1 for custom errors signaled by ERRMSG + + char *ErrMessage + + actual error message +*/ + +#define ERR_SI(R) { if(0>(R)) { ErrTxt(#R,1); goto OnError; }; } +#define ERR_SP(R) { if(NULL==(R)) { ErrTxt(#R,1); goto OnError; }; } +#define ERR_I(R) { if(0>(R)) { ErrTxt(#R,0); goto OnError; }; } +#define ERR_P(R) { if(NULL==(R)) { ErrTxt(#R,0); goto OnError; }; } +#define ERR_MSG(R) { ErrMsg(R); goto OnError; } +#define ERR_COD(R) { ErrCod(R); goto OnError; } + +void ErrTxt(char *text, int systemError); +void ErrMsg(char *msg); +void ErrCod(int code); +void ErrShow(char *text); /* write out error message with stack info */ +void ErrShort(char *msg); /* write out short error message */ +void ERR_EXIT(char *text); +void ErrSetOutRtn(void (*rtn)(void *,char *), void *arg); +void ErrSetOutFile(FILE *file); + +extern int ErrCode; +extern char *ErrMessage; + +#endif /* _ERR_HANDLING_H_ */ diff --git a/gen/myc_fortran.h b/gen/myc_fortran.h new file mode 100644 index 0000000..fb7e558 --- /dev/null +++ b/gen/myc_fortran.h @@ -0,0 +1,73 @@ +#ifndef _SYS_UTIL_H_ +#define _SYS_UTIL_H_ + +/* + + fortran interface stuff + + declare fortran character arguments as F_CHAR(arg) + and at at the end for each character argument add + int _len to the argument list + + Use macros STR_TO_C and STR_TO_F to convert from Fortran character strings + to C character arrays and vice versa. + +*/ + + +#if defined __VMS + +typedef struct { short size, dummy; char *text; } SysVmsChar; + +#define F_CHAR(VAR) SysVmsChar *VAR +#define F_DCHAR(VAR,LEN) static char VAR##_str[LEN]; SysVmsChar VAR##_desc={LEN,270,&VAR##_str[0]}; SysVmsChar *VAR=&VAR##_desc +#define F_CLEN(VAR) +#define F_ALEN(VAR) +#define F_LEN(VAR) VAR->size +#define STR_TO_C(DST,SRC) str_ntrim(DST, SRC->text, sizeof(DST), SRC->size) +#define STR_TO_F(DST,SRC) str_npad(DST->text, SRC, DST->size) + +#define F_DESCRIPTOR 1 +#define F_UNDERSCORE 0 + +#elif defined __alpha || defined __unix || defined __GNUC__ + +#define F_CHAR(VAR) char *VAR +#define F_DCHAR(VAR,LEN) char VAR[LEN]; int VAR##_len=LEN +#define F_CLEN(VAR) ,int VAR##_len +#define F_ALEN(VAR) ,VAR##_len +#define F_LEN(VAR) VAR##_len +#define STR_TO_C(DST,SRC) str_ntrim(DST, SRC, sizeof(DST), SRC##_len) +#define STR_TO_F(DST,SRC) str_npad(DST, SRC, DST##_len) + +#define F_DESCRIPTOR 0 + +#if defined __alpha +#define F_UNDERSCORE 1 +#else + +#ifndef F_UNDERSCORE +#define F_UNDERSCORE 2 + +#endif + +#endif + +#else + +#error "other machines are not supported" + +#endif + +#if F_UNDERSCORE == 0 +#define F_FUN(A) A + +#elif F_UNDERSCORE == 1 +#define F_FUN(A) A##_ + +#elif F_UNDERSCORE == 2 +#define F_FUN(A) A##__ + +#endif + +#endif /* _SYS_UTIL_H_ */ diff --git a/gen/myc_list.h b/gen/myc_list.h new file mode 100644 index 0000000..417dcd0 --- /dev/null +++ b/gen/myc_list.h @@ -0,0 +1,11 @@ +void Lst_Ins(void *head, void *item, int pos); +int Lst_Find(void *head, void *key); +void Lst_Pos(void *head, int pos); + +#define LstDecl(HEAD,TYP,CMP,KEY,KTYP) struct TYP##_HDR { \ + void (*ck)(); int (*cmp)(KTYP,KTYP);KTYP *kptr;int pos; \ + void *list;TYP *itm; TYP kitm;} HEAD \ + ={&Lst_Ins,CMP,&HEAD.kitm.KEY} +#define LstIns(HEAD,ITM,POS) Lst_Ins((LstHead*)&HEAD,(HEAD.itm=(ITM)),POS); +#define LstFind(HEAD,KEY) (HEAD.pos=Lst_Find((LstHead*)&HEAD,HEAD.kptr-&KEY,KEY)) +#define LstPos(HEAD,POS) Lst_Pos((LstHead*)&HEAD,POS) diff --git a/gen/myc_mem.h b/gen/myc_mem.h new file mode 100644 index 0000000..c9f91b5 --- /dev/null +++ b/gen/myc_mem.h @@ -0,0 +1,30 @@ +#ifndef _MEM_UTIL_H_ +#define _MEM_UTIL_H_ + +#include +#include + +#ifdef FORTIFY +#include "fortify.h" +#endif + +/* ------------------------------------------------------------ + these macros help for safer dynamic memory + you may change these macros if you want to log dynamic memory access + +*/ + +#define NEW(PTR,TYP) {TYP _0_={0}; ERR_SP(PTR=malloc(sizeof(*PTR))); *PTR=_0_; } +/* + allocates and initializes an object of type TYP and make PTR point to it + TYP must be defined with an appropriate typedef declaration, and + INIT(TYP) must follow the declaration to initialize a dummy initializer + object. +*/ + +#define NEW_STR(TO,FROM) {ERR_SP(TO=malloc(strlen(FROM)+1)); strcpy(TO,FROM); } + +#define MALLOC(SIZE) malloc(SIZE) +#define FREE(PTR) free(PTR) + +#endif /* _MEM_UTIL_H_ */ diff --git a/gen/myc_str.c b/gen/myc_str.c new file mode 100644 index 0000000..63c98e4 --- /dev/null +++ b/gen/myc_str.c @@ -0,0 +1,251 @@ +#include +#include +#include +#include +#include +#include +#include +#include "myc_err.h" +#include "myc_str.h" +#include "myc_mem.h" + +char *str_splitx(char *str, char sep, char *list[], int *n) { + int i; + char *s, *e; + + s=str; + for (i=0; i<*n; i++) { + list[i]=s; + e=strchr(s, sep); + if (e==NULL) { *n=i+1; return(NULL); } + s=e+1; + e--; + while (e>str && *e==' ') e--; /* trim sequence */ + e[1]='\0'; + } + return(s); +} + +char *str_split1(char *str, char sep) { + char *s, *e; + + e=strchr(str, sep); + if (e==NULL) { + s=NULL; + e=str+strlen(str); + } else { + s=e+1; + } + e--; + while (e>str && *e==' ') e--; /* trim sequence */ + e[1]='\0'; + return(s); +} + +int str_ntrim(char *dest, const char *src, int ldest, int lsrc) { + int i; + + if (lsrc>=ldest) lsrc=ldest-1; + if (dest!=src) strncpy(dest, src, lsrc); + dest[lsrc]='\0'; + i=strlen(dest)-1; + while (i>=0 && dest[i]==' ') i--; /* trim sequence */ + i++; + dest[i]='\0'; + return(i); +} + +int str_npad(char *dest, const char *src, int ldest) { + int i, lsrc; + + lsrc=strlen(src); + if (lsrc>=ldest) { + if (dest!=src) strncpy(dest, src, ldest); + lsrc=ldest; + } else { + if (dest!=src) strcpy(dest, src); + for (i=lsrc; i=dstlen) { + str_copy(dst, src); + } else { + strncpy(dst, src, i); + dst[i]='\0'; + } + return(s); +} + +char *str_read_until(FILE *fil, char *term, char *buf, char *end) { + char fmt[24]; + int i, l, siz; + char ch; + + siz=end-buf-1; + if (siz<1) return(NULL); + sprintf(fmt, "%s%d[^%s%s", "%", siz, term, "]%n%c"); + i=fscanf(fil, fmt, buf, &l, &ch); + if (i<0) { /* eof */ + buf[0]='\0'; + return(&buf[0]); + } else if (i==0) { /* fscanf returns 0 if first char is terminator */ + buf[0]=fgetc(fil); + return(&buf[0]); + } else if (i==1) { /* terminator not found -> read until eof */ + buf[l]='\0'; + return(&buf[l]); + } else { + buf[l]=ch; + if (l==siz && NULL==strchr(term, ch)) return(NULL); + return(&buf[l]); + } +} + +char *str_read_file(char *file) { + FILE *fil; + char *str, *s, *e, *p, *q; + int i, size; + struct stat statbuf; + + i=stat(file, &statbuf); + if (i<0) ERR_MSG("file not found"); + size=statbuf.st_size+4; + ERR_SP(str=MALLOC(size)); + e=&str[size-1]; + ERR_SP(fil=fopen(file, "r")); + s=str; + while (1) { + p=str_read_until(fil, "!", s, e); + if (p==NULL) break; + if (*p=='!') { + q=str_read_until(fil, "\n", p, e); + if (q==NULL) { p=NULL; break; } + s=p; *s='\n'; s++; + } else { + assert(*p=='\0'); + break; + } + } + ERR_SI(fclose(fil)); + assert(strlen(str)reslen) ERR_MSG("result buffer too short"); + strncpy(r, p, l); + r+=l; reslen-=l; + if (ln>reslen) ERR_MSG("result buffer too short"); + strncpy(r, new, reslen); + r+=ln; reslen-=ln; + p=s+lo; + s=strstr(p, old); + } + l=strlen(p); + if (l>reslen) ERR_MSG("result buffer too short"); + strncpy(r, p, l); + r+=l; + *r='\0'; + return(r-result); + OnError: + result[0]='\0'; + return(-1); +} + +void str_nupcase(char *dst, const char *src, int dstlen) { + dstlen--; /* space for trailing nul */ + while (*src!='\0' && dstlen>0) { + *dst=toupper((int)*src); + dst++; src++; + dstlen--; + } + *dst='\0'; +} + +void str_nlowcase(char *dst, const char *src, int dstlen) { + dstlen--; /* space for trailing nul */ + while (*src!='\0' && dstlen>0) { + *dst=tolower((int)*src); + dst++; src++; + dstlen--; + } + *dst='\0'; +} + +#ifndef __GNUC__ +int strcasecmp(const char *str1, const char *str2) { + int i; + char ch1, ch2; + ch1=tolower(*(str1++)); ch2=tolower(*(str2++)); + i=1; + while (ch1!='\0' && ch2!='\0' && ch1==ch2) { + ch1=tolower(*(str1++)); ch2=tolower(*(str2++)); i++; + } + if (ch1ch2) { + return(i); + } + return(0); +} +#endif + +int str_ncpy(char *dst, const char *src, int maxdest) { + strncpy(dst, src, maxdest); + if (dst[maxdest-1]!='\0') { + dst[maxdest-1]='\0'; + ERR_MSG("destination string too short"); + } + return(0); + OnError: return(-1); +} + +int str_ncat(char *dst, const char *src, int maxdest) { + strncat(dst, src, maxdest-strlen(dst)-1); + if (dst[maxdest-1]!='\0') { + dst[maxdest-1]='\0'; + ERR_MSG("destination string too short"); + } + return(0); + OnError: return(-1); +} diff --git a/gen/myc_str.h b/gen/myc_str.h new file mode 100644 index 0000000..95bdbfa --- /dev/null +++ b/gen/myc_str.h @@ -0,0 +1,122 @@ +#ifndef _MYC_STR_H_ +#define _MYC_STR_H_ + +#define MYC_NAN (-1.125/1024./1024./1024.) + +/* + use these macros if DST is a fixed length character array +*/ + +#define str_trim(DST,SRC,L) str_ntrim(DST,SRC,sizeof(DST),L) +#define str_pad(DST,SRC) str_npad(DST,SRC,sizeof(DST)) +#define str_split(DST,SRC,SEP) str_nsplit(DST,SRC,SEP,sizeof(DST)) +#define str_substitute(DST,SRC,OLD,NEW) str_nsubstitute(DST,SRC,OLD,NEW,sizeof(DST)) +#define str_upcase(DST,SRC) str_nupcase(DST,SRC,sizeof(DST)) +#define str_lowcase(DST,SRC) str_nlowcase(DST,SRC,sizeof(DST)) +#define str_copy(DST,SRC) str_ncpy(DST,SRC,sizeof(DST)) +#define str_append(DST,SRC) str_ncat(DST,SRC,sizeof(DST)) + + +char *str_split1(char *str, char separator); +/* + trims text before separator in *str and returns + a pointer to the first character after separator +*/ + +char *str_splitx(char *str, char sep, char *list[], int *n); +/* + split string into *n strings using separator sep. + spaces at the end of the elements are trimmed + attention: *str is modified ('\0' placed at the end of the elements) + + if *n separators are found, result points to string after *n-th separator + else result is NULL + *n contains number of elements stored in list +*/ + +int str_ntrim(char *dest, const char *src, int ldest, int lsrc); +/* + copy characters 0 to lsrc-1 from src to dest (max ldest chars). +*/ + +int str_npad(char *dest, const char *src, int ldest); +/* + copy src to dest and fill with spaces (fortran string format) +*/ + +char *str_nsplit(char *dst, const char *src, char sep, int dstlen); +/* + returns a pointer to the text after the separator sep in *src + and copies the text before the separator to *dst + when *src does not contain the separator sep + NULL is returned, and *dst is a copy of *src +*/ + +char *str_read_file(char *file); +/* + return one string containing the contents of file *file + comments separated by '!' are omitted. The caller must + free the result after use. +*/ + +void str_replace_char(char *str, char ch, char rep); +/* + replace all occurences of character ch by character rep in string *str +*/ + +int str_nsubstitute(char *result, char *str, char *old, char *new, int reslen); +/* + replace every instance of old in str by new. + the result must not overlap + if the result would be longer than reslen, the result is en empty string + and the return value is -1; + else the return value is the length of the result. + return one string containing the contents of file *file + the contents are treated in the following way: + - #0,#1,...#n is replaced by the corresponding argument *args[n] (n=0..nargs-1, nargs<10) + - at the end of each line spaces and comments separated by ! are trimmed +*/ + +void str_nupcase(char *dst, const char *src, int dstlen); +/* + convert *str to uppercase +*/ + +void str_nlowcase(char *dst, const char *src, int dstlen); +/* + convert *str to lowercase +*/ + +#ifdef __VMS_VER +#if __VMS_VER<70000000 + +int strcasecmp(const char *str1, const char *str2); +/* + compare *str1 with *str2 + the comparison is not case sensitive + if result=0: strings are equal + else + result>0 <==> *str1>*str2 + first different character is at position abs(result)-1 +*/ + +#else +#include +#endif /* __VMS_VER<70000000 */ +#else +#include +#endif /* __VMS_VER */ + +int str_ncpy(char *dst, const char *src, int maxdest); +/* + copy *src to *dest, maximal maxdest characters, + it is guaranteed, that dst contains '\0' +*/ + +int str_ncat(char *dst, const char *src, int maxdest); +/* + append *src to *dest, maximal maxdest characters, + it is guaranteed, that dst contains '\0' +*/ + +#endif /* _MYC_STR_H_ */ diff --git a/gen/myfit_head b/gen/myfit_head new file mode 100644 index 0000000..9a7dc90 --- /dev/null +++ b/gen/myfit_head @@ -0,0 +1,36 @@ +#!/bin/tcsh +if ($# < 1) then + echo " " + if (-e fitexample.f) then + echo "fitexample.f is already present" + else + set b=`dirname $0` + echo "fitexample.f created" + cp $b/../lib/fitexample.f . + endif + echo " " + echo "Create your own fit function:" + echo " " + echo "- rename fitexample.f to an other name (i.e. xxx.f)" + echo "- edit xxx.f changing the parameter list and the function" + echo " and type" + echo " " + echo " myfit -o xxx xxx.f" + echo " " + exit +endif +if ($# == 1) then + if (-r "$1.f") then + set argv=(-o $1 $1.f) + else + set f="${1}_" + set s=${f:s/.f_//:s/.for_//} + if ($s != $f && -r $1) then + set argv=(-o $s $1) + else + echo "Usage: myfit -o xxx xxx.f" + exit + endif + endif + echo myfit $argv +endif diff --git a/gen/napi_err.c b/gen/napi_err.c new file mode 100644 index 0000000..c04ffa4 --- /dev/null +++ b/gen/napi_err.c @@ -0,0 +1,47 @@ +#include +#include +#include "napi.h" +#include "myc_str.h" + +static int doReport; +static int init=1; +static char report[2048]; + +void NXswitchedReport(void *pData, char *string) +{ + if (doReport) { + printf("%s\n",string); + } else if (NULL==strstr(report, string)) { /* append only new messages */ + str_append(report, string); + str_append(report, "\n"); + } +} + +void nxswitchreport(int *doreport) +{ + if (init) { init=0; NXMSetError(NULL, NXswitchedReport); }; + doReport = *doreport; + if (!doReport) report[0]='\0'; +} + +void nxlistreport(void) { + if (report[0]!='\0') { + printf("--- Errors in NeXus:%s---\n", report); + } +} + +void nxswitchreport_(int *doreport) +{ + nxswitchreport(doreport); +} + +void nxlistreport_(void) { + nxlistreport(); +} + +/* +int nxbytesize(int *type) +{ + return DFKNTsize(*type); +} +*/ diff --git a/gen/quick_sort.f b/gen/quick_sort.f new file mode 100644 index 0000000..0808275 --- /dev/null +++ b/gen/quick_sort.f @@ -0,0 +1,112 @@ + subroutine quick_sort(n1, n2, ld, exch, comp, userarg) + +C Quicksort Algorithm M. Zolliker Dec. 89 +C +C N = number of elements +C LD, EXCH and COMP are subroutines +C +C SUBROUTINE LD(I,userarg): load element no. I into a buffer +C +C SUBROUTINE EXCH(I,J,userarg): exchange elements no. I and J +C +C SUBROUTINE COMP(I, TST,userarg): compare element no. I with buffer, result is TST +C +C < < +C TST = 0 if element I = buffer +C > > +C +C for example for comparing reals: +C +C subroutine comp(i, tst) +C common buffer +C if (element(i) .ne. buffer) then +C if (element(i) .gt. buffer) then +C tst=1 +C else +C tst=-1 +C endif +C else +C tst=0 +C endif +C end +C + implicit none + integer nstack + parameter (nstack=30) ! sequence stack dim. for 2**30 elements + integer n1, n2, i, j, k, l, m, tst + integer kst(nstack), lst(nstack), nst + integer userarg + + if (n1 .ge. n2) return + + nst=0 + k=n1 + l=n2 + +C sort sequence K...L + +1 i=k + j=l + m=(k+l)/2 + call ld(m,userarg) ! load mid. element + +C increment I until an element .GE. mid. element found + +10 if (i.gt.l) goto 91 + call comp(i, tst,userarg) + if (tst .ge. 0) goto 20 + i=i+1 + goto 10 +91 stop 'QUICK_SORT: mistake in subroutine COMP, EXCH or LD' + +C decrement J until an element .LT. mid. element found + +20 if (j.lt.k) goto 91 + call comp(j, tst,userarg) + if (tst .le. 0) goto 30 + j=j-1 + goto 20 + +30 if (i .ge. j) goto 40 + call exch(i, j,userarg) + i=i+1 + j=j-1 + if (i .le. j) goto 10 + +C now all elements between K and I are .LE. mid. element +C and all elements between J and L are .GE. mid. element + +40 i=i-1 + j=j+1 + if (i-k .gt. l-j) then ! K...I sequence is longer + + if (i .gt. k) then ! if sequence longer than 1 + nst=nst+1 ! then push K,J to stack + if (nst .gt. nstack) goto 92 + kst(nst)=k + lst(nst)=i + end if + k=j ! sort sequence J...L immediately + + else ! sequence J...L is longer + + if (l .gt. j) then ! if sequence longer than 1 + nst=nst+1 ! then push J,L to stack + if (nst .gt. nstack) goto 92 + kst(nst)=j + lst(nst)=l + end if + l=i ! sort sequence K...I immediately + + end if + + if (k .lt. l) goto 1 ! if sequence longer than one then sort + +90 if (nst .eq. 0) return ! no more sequences to sort + k=kst(nst) ! pop K,L from stack + l=lst(nst) + nst=nst-1 + goto 1 + +92 stop 'QUICK_SORT: stack overflow' + end diff --git a/gen/simplex.f b/gen/simplex.f new file mode 100644 index 0000000..cb3966e --- /dev/null +++ b/gen/simplex.f @@ -0,0 +1,233 @@ + SUBROUTINE SIMPLEX +C ------------------ + +c minimization subroutine using a simple method by nelder and mead *). +c it is reasonably fast when far from minimum, and may also be used to +c converge to the exact minimum, but is mostly slower than "migrad". +c +c *) - nelder, j.a., mead, r. (1965), comput. j. 7, 308 +c - james, f., roos, m. (1985), cern documentation d506 + + include 'fit.inc' + + integer jh,jl + real p(maxpar,maxpar+1),y(maxpar+1) + common/comsim/jh,jl,y,p + + integer iflag, i, kg, ns, nf, k, ignal, ncycl, j, npfn, nparp1 + integer jhold + real rho1, rho2, alpha, beta, gamma, rhomin, rhomax, wg + real ynpp1, absmin, aming, bestx, f, sig2, pb, ystar, ystst + real y1, y2, rho, yrho, ypbar + + REAL PSTAR(MAXPAR) ,PSTST(MAXPAR) ,PBAR(MAXPAR) ,PRHO(MAXPAR) + DATA ALPHA,BETA,GAMMA,RHOMIN,RHOMAX / 1.0, 0.5, 2.0, 4.0, 8.0/ + + IF (NPAR .LE. 0) RETURN + NPFN=NFCN + NPARP1=NPAR+1 + RHO1 = 1.0 + ALPHA + RHO2 = RHO1 + ALPHA*GAMMA + WG = 1.0/FLOAT(NPAR) + IFLAG=4 + if (isyswr .ne. 0) WRITE(ISYSWR,100) EPSI + 100 FORMAT(/' Start SIMPLEX minimization' + 1/4X,'Convergence criterion: estimated distance to minimum edm <' + 1,E10.2) + + DO 2 I= 1, NPAR + IF (ISW(2) .GE. 1) DIRIN(I) = SQRT(V(I,I)*UP) + IF (ABS(DIRIN(I)) .LT. 1.0E-5*ABS(X(I))) DIRIN(I)=1.0E-5*X(I) ! was 1e-8 M.Z. 6.02 + IF(ITAUR.LT. 1) V(I,I) = DIRIN(I)**2/UP + 2 CONTINUE + IF (ITAUR .LT. 1) ISW(2) = 1 +C** CHOOSE THE INITIAL SIMPLEX USING SINGLE-PARAMETER SEARCHES + 1 CONTINUE + YNPP1 = AMIN + JL = NPARP1 + Y(NPARP1) = AMIN + ABSMIN = AMIN + DO 10 I= 1, NPAR + AMING = AMIN + PBAR(I) = X(I) + BESTX = X(I) + KG = 0 + NS = 0 + NF = 0 + 4 X(I) = BESTX + DIRIN(I) + CALL FNCTN(X,F) + NFCN = NFCN + 1 + IF (F .LE. AMING) GO TO 6 +C FAILURE + IF (KG .EQ. 1) GO TO 8 + KG = -1 + NF = NF + 1 + DIRIN(I) = DIRIN(I) * (-0.4) + IF (NF .LT. 3) GO TO 4 + NS = 6 +C SUCCESS + 6 BESTX = X(I) + DIRIN(I) = DIRIN(I) * 3.0 + AMING = F + KG = 1 + NS = NS + 1 + IF (NS .LT. 6) GO TO 4 +C LOCAL MINIMUM FOUND IN ITH DIRECTION + 8 Y(I) = AMING + IF (AMING .LT. ABSMIN) JL = I + IF (AMING .LT. ABSMIN) ABSMIN = AMING + X(I) = BESTX + DO 9 K= 1, NPAR + 9 P(K,I) = X(K) + 10 CONTINUE + JH = NPARP1 + AMIN=Y(JL) + CALL RAZZIA(YNPP1,PBAR) + DO 20 I= 1, NPAR + 20 X(I) = P(I,JL) + CALL INTOEX(X) + IF (ISW(5) .GE. 1) CALL FIT_PRINT(0) + SIGMA = SIGMA * 10. + SIG2 = SIGMA + IGNAL = 0 + NCYCL=0 +C. . . . . START MAIN LOOP + 50 CONTINUE + IF (IGNAL .GE. 10) GO TO 1 + IF (SIG2 .LT. EPSI .AND. SIGMA.LT.EPSI) GO TO 76 + SIG2 = SIGMA + IF ((NFCN-NPFN) .GT. NFCNMX) GO TO 78 +C CALCULATE NEW POINT * BY REFLECTION + DO 60 I= 1, NPAR + PB = 0. + DO 59 J= 1, NPARP1 + 59 PB = PB + WG * P(I,J) + PBAR(I) = PB - WG * P(I,JH) + 60 PSTAR(I)=(1.+ALPHA)*PBAR(I)-ALPHA*P(I,JH) + CALL FNCTN(PSTAR,YSTAR) + NFCN=NFCN+1 + IF(YSTAR.GE.AMIN) GO TO 70 +C POINT * BETTER THAN JL, CALCULATE NEW POINT ** + DO 61 I=1,NPAR + 61 PSTST(I)=GAMMA*PSTAR(I)+(1.-GAMMA)*PBAR(I) + CALL FNCTN(PSTST,YSTST) + NFCN=NFCN+1 +C TRY A PARABOLA THROUGH PH, PSTAR, PSTST. MIN = PRHO + Y1 = (YSTAR-Y(JH)) * RHO2 + Y2 = (YSTST-Y(JH)) * RHO1 + RHO = 0.5 * (RHO2*Y1 -RHO1*Y2) / (Y1 -Y2) + IF (RHO .LT. RHOMIN) GO TO 66 + IF (RHO .GT. RHOMAX) RHO = RHOMAX + DO 64 I= 1, NPAR + 64 PRHO(I) = RHO*PSTAR(I) + (1. -RHO)*P(I,JH) + CALL FNCTN(PRHO,YRHO) + NFCN = NFCN + 1 + IF (YRHO .LT. Y(JL) .AND. YRHO .LT. YSTST) GO TO 65 + IF (YSTST .LT. Y(JL)) GO TO 67 + IF (YRHO .GT. Y(JL)) GO TO 66 +C ACCEPT MINIMUM POINT OF PARABOLA, PRHO + 65 CALL RAZZIA (YRHO,PRHO) + IGNAL = MAX0(IGNAL-2, 0) + GO TO 68 + 66 IF (YSTST .LT. Y(JL)) GO TO 67 + IGNAL = MAX0(IGNAL-1, 0) + CALL RAZZIA(YSTAR,PSTAR) + GO TO 68 + 67 IGNAL = MAX0(IGNAL-2, 0) + 675 CALL RAZZIA(YSTST,PSTST) + 68 NCYCL=NCYCL+1 + IF (ISW(5) .LT. 2) GO TO 50 + IF (ISW(5) .GE. 3 .OR. MOD(NCYCL, 10) .EQ. 0) CALL FIT_PRINT(0) + GO TO 50 +C POINT * IS NOT AS GOOD AS JL + 70 IF (YSTAR .GE. Y(JH)) GO TO 73 + JHOLD = JH + CALL RAZZIA(YSTAR,PSTAR) + IF (JHOLD .NE. JH) GO TO 50 +C CALCULATE NEW POINT ** + 73 DO 74 I=1,NPAR + 74 PSTST(I)=BETA*P(I,JH)+(1.-BETA)*PBAR(I) + CALL FNCTN (PSTST,YSTST) + NFCN=NFCN+1 + IF(YSTST.GT.Y(JH)) GO TO 1 +C POINT ** IS BETTER THAN JH + IF (YSTST .LT. AMIN) GO TO 675 + IGNAL = IGNAL + 1 + CALL RAZZIA(YSTST,PSTST) + GO TO 50 +C. . . . . . END MAIN LOOP + 76 if (isyswr .ne. 0) WRITE(ISYSWR,120) +120 format(/' SIMPLEX minimization has converged') + GO TO 80 + 78 if (nfcnmx .eq. 0) then + if (isyswr .ne. 0) write(isyswr,'(/a)') ' SIMPLEX aborted' + else + if (isyswr .ne. 0) WRITE(ISYSWR,130) +130 format(/' SIMPLEX terminates without convergence') + endif + ISW(1) = 1 + 80 DO 82 I=1,NPAR + PB = 0. + DO 81 J=1,NPARP1 + 81 PB = PB + WG * P(I,J) + 82 PBAR(I) = PB - WG * P(I,JH) + CALL FNCTN(PBAR,YPBAR) + NFCN=NFCN+1 + IF (YPBAR .LT. AMIN) CALL RAZZIA(YPBAR,PBAR) + IF (NFCNMX+NPFN-NFCN .LT. 3*NPAR) GO TO 90 + IF (SIGMA .GT. 2.0*EPSI) GO TO 1 + 90 CALL FNCTN(X,AMIN) + NFCN = NFCN + 1 + CALL FIT_PRINT(1-ITAUR) + RETURN + END + + SUBROUTINE RAZZIA(YNEW,PNEW) +C ------------------------------ + + include 'fit.inc' + + integer jh,jl + real p(maxpar,maxpar+1),y(maxpar+1) + common/comsim/jh,jl,y,p + + integer i, nparp1, j + real ynew, us, pbig, plit + real PNEW(MAXPAR) + + DO 10 I=1,NPAR +10 P(I,JH)=PNEW(I) + Y(JH)=YNEW + IF(YNEW.GE.AMIN) GO TO 18 + DO 15 I=1,NPAR +15 X(I)=PNEW(I) + CALL INTOEX(X) + AMIN=YNEW + JL=JH +18 CONTINUE + JH=1 + NPARP1=NPAR+1 +20 DO 25 J=2,NPARP1 + IF (Y(J) .GT. Y(JH)) JH = J +25 CONTINUE + SIGMA = Y(JH) - Y(JL) + IF (SIGMA .LE. 0.) GO TO 45 + US = 1.0/SIGMA + DO 35 I= 1, NPAR + PBIG = P(I,1) + PLIT = PBIG + DO 30 J= 2, NPARP1 + IF (P(I,J) .GT. PBIG) PBIG = P(I,J) + IF (P(I,J) .LT. PLIT) PLIT = P(I,J) + 30 CONTINUE + DIRIN(I) = PBIG - PLIT + IF (ITAUR .LT. 1 ) V(I,I) = 0.5*(V(I,I) +US*DIRIN(I)**2) + 35 CONTINUE + 40 RETURN + 45 WRITE (ISYSWR, 1000) NPAR + GO TO 40 +1000 FORMAT ( + 1 ' ***** FUNCTION VALUE DOES NOT SEEM TO DEPEND ON ANY OF THE ' + 1, I3,' VARIABLE PARAMETERS'/15X,'VERIFY THAT STEP SIZES ARE' + 1,' BIG ENOUGH AND CHECK FUN LOGIC.'/1X, 79('*')/1X,79('H')///) + END diff --git a/gen/str.f b/gen/str.f new file mode 100644 index 0000000..9fca647 --- /dev/null +++ b/gen/str.f @@ -0,0 +1,286 @@ +!! string handling +!! + subroutine STR_TRIM(RETSTR, STR, RETLEN) !! +!! +!! if RETSTR=STR then RETSTR is not touched +!! +!! Arguments: + character*(*) STR, RETSTR !! in,out + integer RETLEN !! out + integer i + + i=len(str) + if (str(1:1) .gt. ' ') then +10 if (str(i:i) .le. ' ') then + i=i-1 + goto 10 + endif + else +20 if (str(i:i) .le. ' ') then + if (i .gt. 1) then + i=i-1 + goto 20 + endif + endif + endif + retlen=min(len(retstr),i) + if (retstr .ne. str) then ! avoid copy to retstr if equal + retstr=str(1:i) + endif + end + +!! + subroutine STR_UPCASE(RETSTR, STR) !! +!! +!! Arguments: + character STR*(*), RETSTR*(*) !! in,out + integer i, ch + + retstr=str + do i=1,len(retstr) + ch=ichar(retstr(i:i)) + if (ch .ge. ichar('a') .and. ch .le. ichar('z')) then + retstr(i:i)=char(ch-(ichar('a')-ichar('A'))) + endif + enddo + end + +!! + subroutine STR_LOWCASE(RETSTR, STR) !! +!! +!! Arguments: + character STR*(*), RETSTR*(*) !! in,out + integer i, ch + + retstr=str + do i=1,len(retstr) + ch=ichar(retstr(i:i)) + if (ch .ge. ichar('A') .and. ch .le. ichar('Z')) then + retstr(i:i)=char(ch+(ichar('a')-ichar('A'))) + endif + enddo + end + +!! + subroutine STR_APPEND(str, length, add) !! +!! + implicit none + + character*(*) str, add !! + integer length !! + + if (len(add)+length .gt. len(str)) then + if (length .lt. len(str)) then + str(length+1:)=add + length=len(str) + endif + else + str(length+1:length+len(add))=add + length=length+len(add) + endif + end + +!! + integer function STR_CMP(str1, str2) !! +!! +!! if strings are equal: return 0 +!! else return position of first different character + + character str1*(*), str2*(*) !! + + integer i + + do i=0,min(len(str1),len(str2))-1 + if (str1(i+1:i+1) .ne. str2(i+1:i+1)) then + str_cmp=i+1 + return + endif + enddo + do i=len(str1),len(str2)-1 + if (str2(i+1:i+1) .ne. ' ') then + str_cmp=i+1 + return + endif + enddo + do i=len(str2),len(str1)-1 + if (str1(i+1:i+1) .ne. ' ') then + str_cmp=i+1 + return + endif + enddo + str_cmp=0 + return + end + +!! + subroutine STR_FIRST_NONBLANK(STR, POS) !! +!! +!! Arguments: + character*(*) STR !! in + integer POS !! out + integer i + + do i=1,len(str) + if (str(i:i) .gt. ' ') then + pos=i + return + endif + enddo + pos=0 + end + +!! + subroutine STR_SPLIT(STR, DELIM, START, ENDE) !! +!! +!! split string into sequences separated by DELIM +!! for the first sequence set ENDE=0 and START=0 (or START=n for other start position n+1) +!! result: end of list: ENDE=-1 +!! empty sequence: START=ENDE+1 +!! normal sequence: STR(START:ENDE) without delimiter +!! +!! if ENDE has not a legal value, nothing happens + + character STR*(*), DELIM*(*) !! (in) string, delimiter + integer START, ENDE !! (in/out) start/end position + + integer i + + if (ende .lt. 0 .or. ende .ge. len(str) .or. start .lt. 0) then + ende=-1 + RETURN + endif + if (ende .ne. 0) start=ende+len(delim) + if (start .ge. len(str)) then + if (start .gt. len(str)) then + ende=-1 + RETURN + endif + i=0 + else + i=index(str(start+1:), delim) + endif + if (i .eq. 0) then + ende=len(str) + else + ende=start+i-1 + endif + start=start+1 + end + +!! + subroutine STR_GET_ELEM(STR, POS, ELEM) !! +!! +!! reads next element ELEM from string STR(POS:). Elements are separated by +!! spaces combined with one control-char (assume tab) or one comma. +!! return ' ' when STR(POS:) contains only whitespace or when pos is to high +!! + character STR*(*) !! (in) input string + character ELEM*(*) !! (out) element read + integer POS !! (in/out) read position + + integer start + + +1 if (pos .gt. len(str)) then + elem=' ' + RETURN + endif + if (str(pos:pos) .eq. ' ') then + pos=pos+1 + goto 1 + endif + start=pos +2 if (str(pos:pos) .gt. ' ' .and. str(pos:pos) .ne. ',') then + pos=pos+1 + if (pos .le. len(str)) then + goto 2 + endif + pos=pos-1 + endif + if (str(pos:pos) .eq. ',' .or. str(pos:pos) .lt. ' ') then + if (start .eq. pos) then + elem=str(start:pos) + if (elem(1:1) .lt. ' ') elem(1:1)=' ' + else + elem=str(start:pos-1) + endif + pos=pos+1 + RETURN + endif + elem=str(start:pos-1) + if (str(pos:) .eq. ' ') then + RETURN + endif +3 if (str(pos:pos) .eq. ' ') then + pos=pos+1 + if (pos .gt. len(str)) stop 'STR_GET_ELEM: assertion failed' + goto 3 + endif + if (str(pos:pos) .eq. ',' .or. str(pos:pos) .lt. ' ') then + pos=pos+1 + endif + end + +!! + subroutine STR_GET_WORD(STR, POS, WORD) !! +!! +!! reads next WORD from string STR(POS:). Words are separated by +!! whitespace. +!! return ' ' when STR(POS:) contains only whitespace or when pos is to high +!! + character STR*(*) !! (in) input string + character WORD*(*) !! (out) element read + integer POS !! (in/out) read position + + integer start + integer i + +1 if (pos .gt. len(str)) then + word=' ' + RETURN + endif + if (str(pos:pos) .le. ' ') then + pos=pos+1 + goto 1 + endif + start=pos + do i=pos,len(str) + if (str(i:i) .le. ' ') then + pos=i + word=str(start:i-1) + RETURN + endif + enddo + word=str(start:) + pos=len(str)+1 + RETURN + end + +!! + integer function STR_FIND_ELEM(STR, ELEM) !! +!! +!! find column index of element ELEM (case insensitive) +!! only the first 64 chars of each element are checked +!! 0 is returned when not found +!! + character STR*(*), ELEM*(*) + character ups*64, upe*64 + integer pos, idx + + pos=1 + call str_upcase(upe, elem) + idx=0 + + call str_get_elem(str, pos, ups) + do while (ups .ne. ' ') + idx=idx+1 + call str_upcase(ups, ups) + if (ups .eq. upe) then + str_find_elem=idx + RETURN + endif + call str_get_elem(str, pos, ups) + enddo + str_find_elem=0 + RETURN + end diff --git a/gen/sys_util.h b/gen/sys_util.h new file mode 100644 index 0000000..e75d59c --- /dev/null +++ b/gen/sys_util.h @@ -0,0 +1,58 @@ +#ifndef _SYS_UTIL_H_ +#define _SYS_UTIL_H_ + +/* + + fortran interface stuff + + declare fortran character arguments as F_CHAR(arg) + and at at the end for each character argument add + int _len to the argument list + + Use macros STR_TO_C and STR_TO_F to convert from Fortran character strings + to C character arrays and vice versa. + +*/ + + +#if defined __VMS + +typedef struct { short size, dummy; char *text; } SysVmsChar; + +#define F_CHAR(VAR) SysVmsChar *VAR +#define F_DCHAR(VAR,LEN) static char VAR##_str[LEN]; SysVmsChar VAR##_desc={LEN,270,&VAR##_str[0]}; SysVmsChar *VAR=&VAR##_desc +#define F_CLEN(VAR) +#define F_ALEN(VAR) +#define F_LEN(VAR) VAR->size +#define STR_TO_C(DST,SRC) str_ntrim(DST, SRC->text, sizeof(DST), SRC->size) +#define STR_TO_F(DST,SRC) str_npad(DST->text, SRC, DST->size) +#define F_FUN(A) A + + +#elif defined __alpha || defined __unix || defined __GNUC__ + +#define F_CHAR(VAR) char *VAR +#define F_DCHAR(VAR,LEN) char VAR[LEN]; int VAR##_len=LEN +#define F_CLEN(VAR) ,int VAR##_len +#define F_ALEN(VAR) ,VAR##_len +#define F_LEN(VAR) VAR##_len +#define STR_TO_C(DST,SRC) str_ntrim(DST, SRC, sizeof(DST), SRC##_len) +#define STR_TO_F(DST,SRC) str_npad(DST, SRC, DST##_len) + +#ifdef __alpha +#define F_FUN(A) A##_ +#elif defined __GNUC__ +#define F_FUN(A) A##__ +#elif defined __INTEL_COMPILER +#define F_FUN(A) A##_ +#else +#define F_FUN(A) A##__ +#endif + +#else + +"other machines are not supported" + +#endif + +#endif /* _SYS_UTIL_H_ */ diff --git a/gen/zm_fit b/gen/zm_fit new file mode 100644 index 0000000..2b71f58 --- /dev/null +++ b/gen/zm_fit @@ -0,0 +1 @@ +this file is used by config diff --git a/libs/CVS/Entries b/libs/CVS/Entries new file mode 100644 index 0000000..3051003 --- /dev/null +++ b/libs/CVS/Entries @@ -0,0 +1 @@ +D/cygwin//// diff --git a/libs/CVS/Repository b/libs/CVS/Repository new file mode 100644 index 0000000..90d781f --- /dev/null +++ b/libs/CVS/Repository @@ -0,0 +1 @@ +analysis/fit/libs diff --git a/libs/CVS/Root b/libs/CVS/Root new file mode 100644 index 0000000..710e291 --- /dev/null +++ b/libs/CVS/Root @@ -0,0 +1 @@ +/afs/psi.ch/project/sinq/cvs diff --git a/libs/cygwin/CVS/Entries b/libs/cygwin/CVS/Entries new file mode 100644 index 0000000..4cfb7a4 --- /dev/null +++ b/libs/cygwin/CVS/Entries @@ -0,0 +1,2 @@ +D/include//// +D/lib//// diff --git a/libs/cygwin/CVS/Repository b/libs/cygwin/CVS/Repository new file mode 100644 index 0000000..af6d51c --- /dev/null +++ b/libs/cygwin/CVS/Repository @@ -0,0 +1 @@ +analysis/fit/libs/cygwin diff --git a/libs/cygwin/CVS/Root b/libs/cygwin/CVS/Root new file mode 100644 index 0000000..710e291 --- /dev/null +++ b/libs/cygwin/CVS/Root @@ -0,0 +1 @@ +/afs/psi.ch/project/sinq/cvs diff --git a/libs/cygwin/include/CVS/Entries b/libs/cygwin/include/CVS/Entries new file mode 100644 index 0000000..dbaac50 --- /dev/null +++ b/libs/cygwin/include/CVS/Entries @@ -0,0 +1,40 @@ +/H5ACpublic.h/1.1.1.1/Tue Nov 2 15:54:57 2004// +/H5Apublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5Bpublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5Dpublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5Epublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5FDcore.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5FDfamily.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5FDgass.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5FDlog.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5FDmpi.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5FDmpio.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5FDmpiposix.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5FDmulti.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5FDpublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5FDsec2.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5FDsrb.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5FDstdio.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5FDstream.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5Fpublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5Gpublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5HGpublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5HLpublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5Ipublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5MMpublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5Opublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5Ppublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5Rpublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5Spublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5Tpublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5Zpublic.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5api_adpt.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5pubconf.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/H5public.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/hdf5.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/napi.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/napi4.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/napi5.h/1.1.1.1/Tue Nov 2 15:54:58 2004// +/napif.inc/1.1.1.1/Tue Nov 2 15:54:58 2004// +/napif__.inc/1.1.1.1/Tue Nov 2 15:54:58 2004// +D diff --git a/libs/cygwin/include/CVS/Repository b/libs/cygwin/include/CVS/Repository new file mode 100644 index 0000000..f0120ea --- /dev/null +++ b/libs/cygwin/include/CVS/Repository @@ -0,0 +1 @@ +analysis/fit/libs/cygwin/include diff --git a/libs/cygwin/include/CVS/Root b/libs/cygwin/include/CVS/Root new file mode 100644 index 0000000..710e291 --- /dev/null +++ b/libs/cygwin/include/CVS/Root @@ -0,0 +1 @@ +/afs/psi.ch/project/sinq/cvs diff --git a/libs/cygwin/include/H5ACpublic.h b/libs/cygwin/include/H5ACpublic.h new file mode 100755 index 0000000..9eb5156 --- /dev/null +++ b/libs/cygwin/include/H5ACpublic.h @@ -0,0 +1,40 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5ACproto.h + * Jul 10 1997 + * Robb Matzke + * + * Purpose: Public include file for cache functions. + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +#ifndef _H5ACpublic_H +#define _H5ACpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/cygwin/include/H5Apublic.h b/libs/cygwin/include/H5Apublic.h new file mode 100755 index 0000000..c7478d8 --- /dev/null +++ b/libs/cygwin/include/H5Apublic.h @@ -0,0 +1,53 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains public declarations for the H5A module. + */ +#ifndef _H5Apublic_H +#define _H5Apublic_H + +/* Public headers needed by this file */ +#include "H5Ipublic.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef herr_t (*H5A_operator_t)(hid_t location_id/*in*/, + const char *attr_name/*in*/, void *operator_data/*in,out*/); + +/* Public function prototypes */ +H5_DLL hid_t H5Acreate(hid_t loc_id, const char *name, hid_t type_id, + hid_t space_id, hid_t plist_id); +H5_DLL hid_t H5Aopen_name(hid_t loc_id, const char *name); +H5_DLL hid_t H5Aopen_idx(hid_t loc_id, unsigned idx); +H5_DLL herr_t H5Awrite(hid_t attr_id, hid_t type_id, const void *buf); +H5_DLL herr_t H5Aread(hid_t attr_id, hid_t type_id, void *buf); +H5_DLL herr_t H5Aclose(hid_t attr_id); +H5_DLL hid_t H5Aget_space(hid_t attr_id); +H5_DLL hid_t H5Aget_type(hid_t attr_id); +H5_DLL ssize_t H5Aget_name(hid_t attr_id, size_t buf_size, char *buf); +H5_DLL hsize_t H5Aget_storage_size(hid_t attr_id); +H5_DLL int H5Aget_num_attrs(hid_t loc_id); +H5_DLL herr_t H5Arename(hid_t loc_id, const char *old_name, const char *new_name); +H5_DLL herr_t H5Aiterate(hid_t loc_id, unsigned *attr_num, H5A_operator_t op, + void *op_data); +H5_DLL herr_t H5Adelete(hid_t loc_id, const char *name); + +#ifdef __cplusplus +} +#endif + +#endif /* _H5Apublic_H */ diff --git a/libs/cygwin/include/H5Bpublic.h b/libs/cygwin/include/H5Bpublic.h new file mode 100755 index 0000000..26bac99 --- /dev/null +++ b/libs/cygwin/include/H5Bpublic.h @@ -0,0 +1,51 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5Bproto.h + * Jul 10 1997 + * Robb Matzke + * + * Purpose: Public declarations for the H5B package. + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +#ifndef _H5Bpublic_H +#define _H5Bpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" + +/* B-tree IDs for various internal things. */ +/* Not really a "public" symbol, but that should be OK -QAK */ +/* Note - if more of these are added, any 'K' values (for internal or leaf + * nodes) they use will need to be stored in the file somewhere. -QAK + */ +typedef enum H5B_subid_t { + H5B_SNODE_ID = 0, /*B-tree is for symbol table nodes */ + H5B_ISTORE_ID = 1, /*B-tree is for indexed object storage */ + H5B_NUM_BTREE_ID /* Number of B-tree key IDs (must be last) */ +} H5B_subid_t; + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/cygwin/include/H5Dpublic.h b/libs/cygwin/include/H5Dpublic.h new file mode 100755 index 0000000..5987b79 --- /dev/null +++ b/libs/cygwin/include/H5Dpublic.h @@ -0,0 +1,105 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains public declarations for the H5D module. + */ +#ifndef _H5Dpublic_H +#define _H5Dpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" +#include "H5Ipublic.h" + +/* Values for the H5D_LAYOUT property */ +typedef enum H5D_layout_t { + H5D_LAYOUT_ERROR = -1, + + H5D_COMPACT = 0, /*raw data is very small */ + H5D_CONTIGUOUS = 1, /*the default */ + H5D_CHUNKED = 2, /*slow and fancy */ + H5D_NLAYOUTS = 3 /*this one must be last! */ +} H5D_layout_t; + +/* Values for the space allocation time property */ +typedef enum H5D_alloc_time_t { + H5D_ALLOC_TIME_ERROR =-1, + H5D_ALLOC_TIME_DEFAULT =0, + H5D_ALLOC_TIME_EARLY =1, + H5D_ALLOC_TIME_LATE =2, + H5D_ALLOC_TIME_INCR =3 +} H5D_alloc_time_t; + +/* Values for the status of space allocation */ +typedef enum H5D_space_status_t { + H5D_SPACE_STATUS_ERROR =-1, + H5D_SPACE_STATUS_NOT_ALLOCATED =0, + H5D_SPACE_STATUS_PART_ALLOCATED =1, + H5D_SPACE_STATUS_ALLOCATED =2 +} H5D_space_status_t; + +/* Values for time of writing fill value property */ +typedef enum H5D_fill_time_t { + H5D_FILL_TIME_ERROR =-1, + H5D_FILL_TIME_ALLOC =0, + H5D_FILL_TIME_NEVER =1, + H5D_FILL_TIME_IFSET =2 +} H5D_fill_time_t; + +/* Values for fill value status */ +typedef enum H5D_fill_value_t { + H5D_FILL_VALUE_ERROR =-1, + H5D_FILL_VALUE_UNDEFINED =0, + H5D_FILL_VALUE_DEFAULT =1, + H5D_FILL_VALUE_USER_DEFINED =2 +} H5D_fill_value_t; + +#ifdef __cplusplus +extern "C" { +#endif + +/* Define the operator function pointer for H5Diterate() */ +typedef herr_t (*H5D_operator_t)(void *elem, hid_t type_id, hsize_t ndim, + hssize_t *point, void *operator_data); + +H5_DLL hid_t H5Dcreate (hid_t file_id, const char *name, hid_t type_id, + hid_t space_id, hid_t plist_id); +H5_DLL hid_t H5Dopen (hid_t file_id, const char *name); +H5_DLL herr_t H5Dclose (hid_t dset_id); +H5_DLL hid_t H5Dget_space (hid_t dset_id); +H5_DLL herr_t H5Dget_space_status(hid_t dset_id, + H5D_space_status_t *allocation); +H5_DLL hid_t H5Dget_type (hid_t dset_id); +H5_DLL hid_t H5Dget_create_plist (hid_t dset_id); +H5_DLL hsize_t H5Dget_storage_size(hid_t dset_id); +H5_DLL haddr_t H5Dget_offset(hid_t dset_id); +H5_DLL herr_t H5Dread (hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, + hid_t file_space_id, hid_t plist_id, void *buf/*out*/); +H5_DLL herr_t H5Dwrite (hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, + hid_t file_space_id, hid_t plist_id, const void *buf); +H5_DLL herr_t H5Dextend (hid_t dset_id, const hsize_t *size); +H5_DLL herr_t H5Diterate(void *buf, hid_t type_id, hid_t space_id, + H5D_operator_t op, void *operator_data); +H5_DLL herr_t H5Dvlen_reclaim(hid_t type_id, hid_t space_id, hid_t plist_id, void *buf); +H5_DLL herr_t H5Dvlen_get_buf_size(hid_t dataset_id, hid_t type_id, hid_t space_id, hsize_t *size); +H5_DLL herr_t H5Dfill(const void *fill, hid_t fill_type, void *buf, + hid_t buf_type, hid_t space); +H5_DLL herr_t H5Ddebug(hid_t dset_id, unsigned int flags); +H5_DLL herr_t H5Dset_extent (hid_t dset_id, const hsize_t *size); + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/cygwin/include/H5Epublic.h b/libs/cygwin/include/H5Epublic.h new file mode 100755 index 0000000..3ac6fd0 --- /dev/null +++ b/libs/cygwin/include/H5Epublic.h @@ -0,0 +1,263 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains public declarations for the H5E module. + */ +#ifndef _H5Epublic_H +#define _H5Epublic_H + +#include /*FILE arg of H5Eprint() */ + +/* Public headers needed by this file */ +#include "H5public.h" +#include "H5Ipublic.h" + +/* + * One often needs to temporarily disable automatic error reporting when + * trying something that's likely or expected to fail. For instance, to + * determine if an object exists one can call H5Gget_objinfo() which will fail if + * the object doesn't exist. The code to try can be nested between calls to + * H5Eget_auto() and H5Eset_auto(), but it's easier just to use this macro + * like: + * H5E_BEGIN_TRY { + * ...stuff here that's likely to fail... + * } H5E_END_TRY; + * + * Warning: don't break, return, or longjmp() from the body of the loop or + * the error reporting won't be properly restored! + */ +#define H5E_BEGIN_TRY { \ + H5E_auto_t H5E_saved_efunc; \ + void *H5E_saved_edata; \ + H5Eget_auto (&H5E_saved_efunc, &H5E_saved_edata); \ + H5Eset_auto (NULL, NULL); + +#define H5E_END_TRY \ + H5Eset_auto (H5E_saved_efunc, H5E_saved_edata); \ +} + +/* + * Public API Convenience Macros for Error reporting - Documented + */ +/* Use the Standard C __FILE__ & __LINE__ macros instead of typing them in */ +#define H5Epush_sim(func,maj,min,str) H5Epush(__FILE__,func,__LINE__,maj,min,str) + +/* + * Public API Convenience Macros for Error reporting - Undocumented + */ +/* Use the Standard C __FILE__ & __LINE__ macros instead of typing them in */ +/* And return after pushing error onto stack */ +#define H5Epush_ret(func,maj,min,str,ret) { \ + H5Epush(__FILE__,func,__LINE__,maj,min,str); \ + return(ret); \ +} + +/* Use the Standard C __FILE__ & __LINE__ macros instead of typing them in */ +/* And goto a label after pushing error onto stack */ +#define H5Epush_goto(func,maj,min,str,label) { \ + H5Epush(__FILE__,func,__LINE__,maj,min,str); \ + goto label; \ +} + +/* + * Declare an enumerated type which holds all the valid major HDF error codes. + */ +typedef enum H5E_major_t { + H5E_NONE_MAJOR = 0, /*special zero, no error */ + H5E_ARGS, /*invalid arguments to routine */ + H5E_RESOURCE, /*resource unavailable */ + H5E_INTERNAL, /* Internal error (too specific to document + * in detail) + */ + H5E_FILE, /*file Accessability */ + H5E_IO, /*Low-level I/O */ + H5E_FUNC, /*function Entry/Exit */ + H5E_ATOM, /*object Atom */ + H5E_CACHE, /*object Cache */ + H5E_BTREE, /*B-Tree Node */ + H5E_SYM, /*symbol Table */ + H5E_HEAP, /*Heap */ + H5E_OHDR, /*object Header */ + H5E_DATATYPE, /*Datatype */ + H5E_DATASPACE, /*Dataspace */ + H5E_DATASET, /*Dataset */ + H5E_STORAGE, /*data storage */ + H5E_PLIST, /*Property lists */ + H5E_ATTR, /*Attribute */ + H5E_PLINE, /*Data filters */ + H5E_EFL, /*External file list */ + H5E_REFERENCE, /*References */ + H5E_VFL, /*Virtual File Layer */ + H5E_TBBT, /*Threaded, Balanced, Binary Trees */ + H5E_FPHDF5, /*Flexible Parallel HDF5 */ + H5E_TST, /*Ternary Search Trees */ + H5E_RS /*Reference Counted Strings */ +} H5E_major_t; + +/* Declare an enumerated type which holds all the valid minor HDF error codes */ +typedef enum H5E_minor_t { + H5E_NONE_MINOR = 0, /*special zero, no error */ + + /* Argument errors */ + H5E_UNINITIALIZED, /*information is unitialized */ + H5E_UNSUPPORTED, /*feature is unsupported */ + H5E_BADTYPE, /*incorrect type found */ + H5E_BADRANGE, /*argument out of range */ + H5E_BADVALUE, /*bad value for argument */ + + /* Resource errors */ + H5E_NOSPACE, /*no space available for allocation */ + H5E_CANTCOPY, /*unable to copy object */ + H5E_CANTFREE, /*unable to free object */ + H5E_ALREADYEXISTS, /*Object already exists */ + H5E_CANTLOCK, /*Unable to lock object */ + H5E_CANTUNLOCK, /*Unable to unlock object */ + + /* File accessability errors */ + H5E_FILEEXISTS, /*file already exists */ + H5E_FILEOPEN, /*file already open */ + H5E_CANTCREATE, /*Can't create file */ + H5E_CANTOPENFILE, /*Can't open file */ + H5E_CANTCLOSEFILE, /*Can't close file */ + H5E_NOTHDF5, /*not an HDF5 format file */ + H5E_BADFILE, /*bad file ID accessed */ + H5E_TRUNCATED, /*file has been truncated */ + H5E_MOUNT, /*file mount error */ + + /* Generic low-level file I/O errors */ + H5E_SEEKERROR, /*seek failed */ + H5E_READERROR, /*read failed */ + H5E_WRITEERROR, /*write failed */ + H5E_CLOSEERROR, /*close failed */ + H5E_OVERFLOW, /*address overflowed */ + H5E_FCNTL, /*file fcntl failed */ + + /* Function entry/exit interface errors */ + H5E_CANTINIT, /*Can't initialize object */ + H5E_ALREADYINIT, /*object already initialized */ + H5E_CANTRELEASE, /*Can't release object */ + + /* Object atom related errors */ + H5E_BADATOM, /*Can't find atom information */ + H5E_BADGROUP, /*Can't find group information */ + H5E_CANTREGISTER, /*Can't register new atom */ + H5E_CANTINC, /*Can't increment reference count */ + H5E_CANTDEC, /*Can't decrement reference count */ + H5E_NOIDS, /*Out of IDs for group */ + + /* Cache related errors */ + H5E_CANTFLUSH, /*Can't flush object from cache */ + H5E_CANTLOAD, /*Can't load object into cache */ + H5E_PROTECT, /*protected object error */ + H5E_NOTCACHED, /*object not currently cached */ + + /* B-tree related errors */ + H5E_NOTFOUND, /*object not found */ + H5E_EXISTS, /*object already exists */ + H5E_CANTENCODE, /*Can't encode value */ + H5E_CANTDECODE, /*Can't decode value */ + H5E_CANTSPLIT, /*Can't split node */ + H5E_CANTINSERT, /*Can't insert object */ + H5E_CANTLIST, /*Can't list node */ + + /* Object header related errors */ + H5E_LINKCOUNT, /*bad object header link count */ + H5E_VERSION, /*wrong version number */ + H5E_ALIGNMENT, /*alignment error */ + H5E_BADMESG, /*unrecognized message */ + H5E_CANTDELETE, /* Can't delete message */ + + /* Group related errors */ + H5E_CANTOPENOBJ, /*Can't open object */ + H5E_COMPLEN, /*name component is too long */ + H5E_CWG, /*problem with current working group */ + H5E_LINK, /*link count failure */ + H5E_SLINK, /*symbolic link error */ + + /* Datatype conversion errors */ + H5E_CANTCONVERT, /*Can't convert datatypes */ + H5E_BADSIZE, /*Bad size for object */ + + /* Dataspace errors */ + H5E_CANTCLIP, /*Can't clip hyperslab region */ + H5E_CANTCOUNT, /*Can't count elements */ + H5E_CANTSELECT, /*Can't select hyperslab */ + H5E_CANTNEXT, /*Can't move to next iterator location */ + H5E_BADSELECT, /*Invalid selection */ + H5E_CANTCOMPARE, /*Can't compare objects */ + + /* Property list errors */ + H5E_CANTGET, /*Can't get value */ + H5E_CANTSET, /*Can't set value */ + H5E_DUPCLASS, /*Duplicate class name in parent class */ + + /* Parallel errors */ + H5E_MPI, /*some MPI function failed */ + H5E_MPIERRSTR, /*MPI Error String */ + + /* FPHDF5 errors */ + H5E_CANTMAKETREE, /*can't make a TBBT tree */ + H5E_CANTRECV, /*can't receive messages from processes */ + H5E_CANTSENDMDATA, /*can't send metadata message */ + H5E_CANTCHANGE, /*can't register change on server */ + H5E_CANTALLOC, /*can't allocate from file */ + + /* I/O pipeline errors */ + H5E_NOFILTER, /*requested filter is not available */ + H5E_CALLBACK, /*callback failed */ + H5E_CANAPPLY, /*error from filter "can apply" callback */ + H5E_SETLOCAL, /*error from filter "set local" callback */ + H5E_NOENCODER /* Filter present, but encoding disabled */ +} H5E_minor_t; + +/* Information about an error */ +typedef struct H5E_error_t { + H5E_major_t maj_num; /*major error number */ + H5E_minor_t min_num; /*minor error number */ + const char *func_name; /*function in which error occurred */ + const char *file_name; /*file in which error occurred */ + unsigned line; /*line in file where error occurs */ + const char *desc; /*optional supplied description */ +} H5E_error_t; + +/* Error stack traversal direction */ +typedef enum H5E_direction_t { + H5E_WALK_UPWARD = 0, /*begin deep, end at API function */ + H5E_WALK_DOWNWARD = 1 /*begin at API function, end deep */ +} H5E_direction_t; + +#ifdef __cplusplus +extern "C" { +#endif + +/* Error stack traversal callback function */ +typedef herr_t (*H5E_walk_t)(int n, H5E_error_t *err_desc, void *client_data); +typedef herr_t (*H5E_auto_t)(void *client_data); + +H5_DLL herr_t H5Eset_auto (H5E_auto_t func, void *client_data); +H5_DLL herr_t H5Eget_auto (H5E_auto_t *func, void **client_data); +H5_DLL herr_t H5Eclear (void); +H5_DLL herr_t H5Eprint (FILE *stream); +H5_DLL herr_t H5Ewalk (H5E_direction_t direction, H5E_walk_t func, + void *client_data); +H5_DLL const char *H5Eget_major (H5E_major_t major_number); +H5_DLL const char *H5Eget_minor (H5E_minor_t minor_number); +H5_DLL herr_t H5Epush(const char *file, const char *func, + unsigned line, H5E_major_t maj, H5E_minor_t min, const char *str); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/cygwin/include/H5FDcore.h b/libs/cygwin/include/H5FDcore.h new file mode 100755 index 0000000..0960425 --- /dev/null +++ b/libs/cygwin/include/H5FDcore.h @@ -0,0 +1,41 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke + * Monday, August 2, 1999 + * + * Purpose: The public header file for the sec2 driver. + */ +#ifndef H5FDcore_H +#define H5FDcore_H + +#include "H5Ipublic.h" + +#define H5FD_CORE (H5FD_core_init()) + +#ifdef __cplusplus +extern "C" { +#endif +H5_DLL hid_t H5FD_core_init(void); +H5_DLL void H5FD_core_term(void); +H5_DLL herr_t H5Pset_fapl_core(hid_t fapl_id, size_t increment, + hbool_t backing_store); +H5_DLL herr_t H5Pget_fapl_core(hid_t fapl_id, size_t *increment/*out*/, + hbool_t *backing_store/*out*/); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libs/cygwin/include/H5FDfamily.h b/libs/cygwin/include/H5FDfamily.h new file mode 100755 index 0000000..c774bdb --- /dev/null +++ b/libs/cygwin/include/H5FDfamily.h @@ -0,0 +1,43 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke + * Monday, August 4, 1999 + * + * Purpose: The public header file for the family driver. + */ +#ifndef H5FDfamily_H +#define H5FDfamily_H + +#include "H5Ipublic.h" + +#define H5FD_FAMILY (H5FD_family_init()) + +#ifdef __cplusplus +extern "C" { +#endif + +H5_DLL hid_t H5FD_family_init(void); +H5_DLL void H5FD_family_term(void); +H5_DLL herr_t H5Pset_fapl_family(hid_t fapl_id, hsize_t memb_size, + hid_t memb_fapl_id); +H5_DLL herr_t H5Pget_fapl_family(hid_t fapl_id, hsize_t *memb_size/*out*/, + hid_t *memb_fapl_id/*out*/); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libs/cygwin/include/H5FDgass.h b/libs/cygwin/include/H5FDgass.h new file mode 100755 index 0000000..1d599a0 --- /dev/null +++ b/libs/cygwin/include/H5FDgass.h @@ -0,0 +1,69 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Saurabh Bagchi + * Tuesday, August 17, 1999 + * + * Purpose: The public header file for the gass driver. + */ +#ifndef H5FDgass_H +#define H5FDgass_H + +#include "H5FDpublic.h" +#include "H5Ipublic.h" + +#include + +#ifdef H5_HAVE_GASS +#define H5FD_GASS (H5FD_gass_init()) +#else +#define H5FD_GASS (-1) +#endif + +#ifdef H5_HAVE_GASS +/* Define the GASS info object. (Will be added to later as more GASS + functionality is sought to be exposed. */ +typedef struct GASS_Info { + unsigned long block_size; + unsigned long max_length; +} GASS_Info; + +#define GASS_INFO_NULL(v) memset((void *)&v, 0, sizeof(GASS_Info)); +/* + GASS_Info zzGassInfo = {0L,0L}; + #define GASS_INFO_NULL zzGassInfo +*/ +#endif + +/* Function prototypes */ +#ifdef H5_HAVE_GASS + +#ifdef __cplusplus +extern "C" { +#endif + +hid_t H5FD_gass_init(void); +void H5FD_gass_term(void); +herr_t H5Pset_fapl_gass(hid_t fapl_id, GASS_Info info); +herr_t H5Pget_fapl_gass(hid_t fapl_id, GASS_Info *info/*out*/); + +#ifdef __cplusplus +} +#endif + +#endif + +#endif /* H5FDgass_H */ + diff --git a/libs/cygwin/include/H5FDlog.h b/libs/cygwin/include/H5FDlog.h new file mode 100755 index 0000000..2380e2e --- /dev/null +++ b/libs/cygwin/include/H5FDlog.h @@ -0,0 +1,72 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol + * Monday, April 17, 2000 + * + * Purpose: The public header file for the log driver. + */ +#ifndef H5FDlog_H +#define H5FDlog_H + +#include "H5Ipublic.h" + +#define H5FD_LOG (H5FD_log_init()) + +/* Flags for H5Pset_fapl_log() */ +/* Flags for tracking where reads/writes/seeks occur */ +#define H5FD_LOG_LOC_READ 0x0001 +#define H5FD_LOG_LOC_WRITE 0x0002 +#define H5FD_LOG_LOC_SEEK 0x0004 +#define H5FD_LOG_LOC_IO (H5FD_LOG_LOC_READ|H5FD_LOG_LOC_WRITE|H5FD_LOG_LOC_SEEK) +/* Flags for tracking number of times each byte is read/written */ +#define H5FD_LOG_FILE_READ 0x0008 +#define H5FD_LOG_FILE_WRITE 0x0010 +#define H5FD_LOG_FILE_IO (H5FD_LOG_FILE_READ|H5FD_LOG_FILE_WRITE) +/* Flag for tracking "flavor" (type) of information stored at each byte */ +#define H5FD_LOG_FLAVOR 0x0020 +/* Flags for tracking total number of reads/writes/seeks */ +#define H5FD_LOG_NUM_READ 0x0040 +#define H5FD_LOG_NUM_WRITE 0x0080 +#define H5FD_LOG_NUM_SEEK 0x0100 +#define H5FD_LOG_NUM_IO (H5FD_LOG_NUM_READ|H5FD_LOG_NUM_WRITE|H5FD_LOG_NUM_SEEK) +/* Flags for tracking time spent in open/read/write/seek/close */ +#define H5FD_LOG_TIME_OPEN 0x0200 /* Not implemented yet */ +#define H5FD_LOG_TIME_READ 0x0400 /* Not implemented yet */ +#define H5FD_LOG_TIME_WRITE 0x0800 /* Partially implemented (need to track total time) */ +#define H5FD_LOG_TIME_SEEK 0x1000 /* Partially implemented (need to track total time & track time for seeks during reading) */ +#define H5FD_LOG_TIME_CLOSE 0x2000 /* Fully implemented */ +#define H5FD_LOG_TIME_IO (H5FD_LOG_TIME_OPEN|H5FD_LOG_TIME_READ|H5FD_LOG_TIME_WRITE|H5FD_LOG_TIME_SEEK|H5FD_LOG_TIME_CLOSE) +/* Flag for tracking allocation of space in file */ +#define H5FD_LOG_ALLOC 0x4000 +#define H5FD_LOG_ALL (H5FD_LOG_ALLOC|H5FD_LOG_TIME_IO|H5FD_LOG_NUM_IO|H5FD_LOG_FLAVOR|H5FD_LOG_FILE_IO|H5FD_LOG_LOC_IO) + +#ifdef __cplusplus +extern "C" { +#endif + +H5_DLL hid_t H5FD_log_init(void); +H5_DLL void H5FD_log_term(void); +#ifdef H5_WANT_H5_V1_4_COMPAT +H5_DLL herr_t H5Pset_fapl_log(hid_t fapl_id, const char *logfile, int verbosity); +#else /* H5_WANT_H5_V1_4_COMPAT */ +H5_DLL herr_t H5Pset_fapl_log(hid_t fapl_id, const char *logfile, unsigned flags, size_t buf_size); +#endif /* H5_WANT_H5_V1_4_COMPAT */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libs/cygwin/include/H5FDmpi.h b/libs/cygwin/include/H5FDmpi.h new file mode 100755 index 0000000..0dd9362 --- /dev/null +++ b/libs/cygwin/include/H5FDmpi.h @@ -0,0 +1,93 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol + * Friday, January 30, 2004 + * + * Purpose: The public header file for common items for all MPI VFL drivers + */ +#ifndef H5FDmpi_H +#define H5FDmpi_H + +/* Type of I/O for data transfer properties */ +typedef enum H5FD_mpio_xfer_t { + H5FD_MPIO_INDEPENDENT = 0, /*zero is the default*/ + H5FD_MPIO_COLLECTIVE +} H5FD_mpio_xfer_t; + +#ifdef H5_HAVE_PARALLEL + +/* Sub-class the H5FD_class_t to add more specific functions for MPI-based VFDs */ +typedef struct H5FD_class_mpi_t { + H5FD_class_t super; /* Superclass information & methods */ + int (*get_rank)(const H5FD_t *file); /* Get the MPI rank of a process */ + int (*get_size)(const H5FD_t *file); /* Get the MPI size of a communicator */ + MPI_Comm (*get_comm)(const H5FD_t *file); /* Get the communicator for a file */ +} H5FD_class_mpi_t; +#endif /* H5_HAVE_PARALLEL */ + +/* Include all the MPI VFL headers */ +#include "H5FDmpio.h" /* MPI I/O file driver */ +#include "H5FDmpiposix.h" /* MPI/posix I/O file driver */ + +/* Macros */ + +/* Single macro to check for all file drivers that use MPI */ +#define IS_H5FD_MPI(file) \ + (IS_H5FD_MPIO(file) || IS_H5FD_MPIPOSIX(file)) + +#ifdef H5_HAVE_PARALLEL +/* ======== Temporary data transfer properties ======== */ +/* Definitions for memory MPI type property */ +#define H5FD_MPI_XFER_MEM_MPI_TYPE_NAME "H5FD_mpi_mem_mpi_type" +#define H5FD_MPI_XFER_MEM_MPI_TYPE_SIZE sizeof(MPI_Datatype) +/* Definitions for file MPI type property */ +#define H5FD_MPI_XFER_FILE_MPI_TYPE_NAME "H5FD_mpi_file_mpi_type" +#define H5FD_MPI_XFER_FILE_MPI_TYPE_SIZE sizeof(MPI_Datatype) + +/* + * The view is set to this value + */ +H5_DLLVAR char H5FD_mpi_native_g[]; + +/* Function prototypes */ +#ifdef __cplusplus +extern "C" { +#endif +/* General routines */ +H5_DLL haddr_t H5FD_mpi_MPIOff_to_haddr(MPI_Offset mpi_off); +H5_DLL herr_t H5FD_mpi_haddr_to_MPIOff(haddr_t addr, MPI_Offset *mpi_off/*out*/); +H5_DLL herr_t H5FD_mpi_comm_info_dup(MPI_Comm comm, MPI_Info info, + MPI_Comm *comm_new, MPI_Info *info_new); +H5_DLL herr_t H5FD_mpi_comm_info_free(MPI_Comm *comm, MPI_Info *info); +#ifdef NOT_YET +H5_DLL herr_t H5FD_mpio_wait_for_left_neighbor(H5FD_t *file); +H5_DLL herr_t H5FD_mpio_signal_right_neighbor(H5FD_t *file); +#endif /* NOT_YET */ +H5_DLL herr_t H5FD_mpi_setup_collective(hid_t dxpl_id, MPI_Datatype btype, + MPI_Datatype ftype); +H5_DLL herr_t H5FD_mpi_teardown_collective(hid_t dxpl_id); + +/* Driver specific methods */ +H5_DLL int H5FD_mpi_get_rank(const H5FD_t *file); +H5_DLL int H5FD_mpi_get_size(const H5FD_t *file); +H5_DLL MPI_Comm H5FD_mpi_get_comm(const H5FD_t *_file); +#ifdef __cplusplus +} +#endif + +#endif /* H5_HAVE_PARALLEL */ + +#endif /* H5FDmpi_H */ diff --git a/libs/cygwin/include/H5FDmpio.h b/libs/cygwin/include/H5FDmpio.h new file mode 100755 index 0000000..912cbd8 --- /dev/null +++ b/libs/cygwin/include/H5FDmpio.h @@ -0,0 +1,60 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke + * Monday, August 2, 1999 + * + * Purpose: The public header file for the mpio driver. + */ +#ifndef H5FDmpio_H +#define H5FDmpio_H + +#ifdef H5_HAVE_PARALLEL +# define H5FD_MPIO (H5FD_mpio_init()) +#else +# define H5FD_MPIO (-1) +#endif /* H5_HAVE_PARALLEL */ + +/* Macros */ + +#define IS_H5FD_MPIO(f) /* (H5F_t *f) */ \ + (H5FD_MPIO==H5F_get_driver_id(f)) + +#ifdef H5_HAVE_PARALLEL +/*Turn on H5FDmpio_debug if H5F_DEBUG is on */ +#ifdef H5F_DEBUG +#ifndef H5FDmpio_DEBUG +#define H5FDmpio_DEBUG +#endif +#endif + +/* Function prototypes */ +#ifdef __cplusplus +extern "C" { +#endif +H5_DLL hid_t H5FD_mpio_init(void); +H5_DLL void H5FD_mpio_term(void); +H5_DLL herr_t H5Pset_fapl_mpio(hid_t fapl_id, MPI_Comm comm, MPI_Info info); +H5_DLL herr_t H5Pget_fapl_mpio(hid_t fapl_id, MPI_Comm *comm/*out*/, + MPI_Info *info/*out*/); +H5_DLL herr_t H5Pset_dxpl_mpio(hid_t dxpl_id, H5FD_mpio_xfer_t xfer_mode); +H5_DLL herr_t H5Pget_dxpl_mpio(hid_t dxpl_id, H5FD_mpio_xfer_t *xfer_mode/*out*/); +#ifdef __cplusplus +} +#endif + +#endif /* H5_HAVE_PARALLEL */ + +#endif diff --git a/libs/cygwin/include/H5FDmpiposix.h b/libs/cygwin/include/H5FDmpiposix.h new file mode 100755 index 0000000..d29bcd7 --- /dev/null +++ b/libs/cygwin/include/H5FDmpiposix.h @@ -0,0 +1,61 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Quincey Koziol + * Thursday, July 11, 2002 + * + * Purpose: The public header file for the mpiposix driver. + */ + +#ifndef __H5FDmpiposix_H +#define __H5FDmpiposix_H + +#ifdef H5_HAVE_PARALLEL +# define H5FD_MPIPOSIX (H5FD_mpiposix_init()) +#else +# define H5FD_MPIPOSIX (-1) +#endif + +/* Macros */ + +#define IS_H5FD_MPIPOSIX(f) /* (H5F_t *f) */ \ + (H5FD_MPIPOSIX==H5F_get_driver_id(f)) + +#ifdef H5_HAVE_PARALLEL + +/* Function prototypes */ +#ifdef __cplusplus +extern "C" { +#endif + +H5_DLL hid_t H5FD_mpiposix_init(void); +H5_DLL void H5FD_mpiposix_term(void); +#ifdef H5_WANT_H5_V1_4_COMPAT +H5_DLL herr_t H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm); +H5_DLL herr_t H5Pget_fapl_mpiposix(hid_t fapl_id, MPI_Comm *comm/*out*/); +#else /* H5_WANT_H5_V1_4_COMPAT */ +H5_DLL herr_t H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm, hbool_t use_gpfs); +H5_DLL herr_t H5Pget_fapl_mpiposix(hid_t fapl_id, MPI_Comm *comm/*out*/, hbool_t *use_gpfs/*out*/); +#endif /* H5_WANT_H5_V1_4_COMPAT */ + +#ifdef __cplusplus +} +#endif + +#endif /*H5_HAVE_PARALLEL*/ + +#endif /* __H5FDmpiposix_H */ + + diff --git a/libs/cygwin/include/H5FDmulti.h b/libs/cygwin/include/H5FDmulti.h new file mode 100755 index 0000000..59c1336 --- /dev/null +++ b/libs/cygwin/include/H5FDmulti.h @@ -0,0 +1,51 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke + * Monday, August 2, 1999 + * + * Purpose: The public header file for the "multi" driver. + */ +#ifndef H5FDmulti_H +#define H5FDmulti_H + +#include "H5Ipublic.h" +#include "H5Ppublic.h" /* Property lists */ +#include "H5Fpublic.h" + +#define H5FD_MULTI (H5FD_multi_init()) + +#ifdef __cplusplus +extern "C" { +#endif +H5_DLL hid_t H5FD_multi_init(void); +H5_DLL void H5FD_multi_term(void); +H5_DLL herr_t H5Pset_fapl_multi(hid_t fapl_id, const H5FD_mem_t *memb_map, + const hid_t *memb_fapl, const char * const *memb_name, + const haddr_t *memb_addr, hbool_t relax); +H5_DLL herr_t H5Pget_fapl_multi(hid_t fapl_id, H5FD_mem_t *memb_map/*out*/, + hid_t *memb_fapl/*out*/, char **memb_name/*out*/, + haddr_t *memb_addr/*out*/, hbool_t *relax/*out*/); +H5_DLL herr_t H5Pset_dxpl_multi(hid_t dxpl_id, const hid_t *memb_dxpl); +H5_DLL herr_t H5Pget_dxpl_multi(hid_t dxpl_id, hid_t *memb_dxpl/*out*/); + +H5_DLL herr_t H5Pset_fapl_split(hid_t fapl, const char *meta_ext, + hid_t meta_plist_id, const char *raw_ext, + hid_t raw_plist_id); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libs/cygwin/include/H5FDpublic.h b/libs/cygwin/include/H5FDpublic.h new file mode 100755 index 0000000..ba762db --- /dev/null +++ b/libs/cygwin/include/H5FDpublic.h @@ -0,0 +1,259 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke + * Monday, July 26, 1999 + */ +#ifndef _H5FDpublic_H +#define _H5FDpublic_H + +#include "H5public.h" +#include "H5Fpublic.h" /*for H5F_close_degree_t */ + +#define H5_HAVE_VFL 1 /*define a convenient app feature test*/ +#define H5FD_VFD_DEFAULT 0 /* Default VFL driver value */ + +/* + * Types of allocation requests. The values larger than H5FD_MEM_DEFAULT + * should not change other than adding new types to the end. These numbers + * might appear in files. + */ +typedef enum H5FD_mem_t { + H5FD_MEM_NOLIST = -1, /*must be negative*/ + H5FD_MEM_DEFAULT = 0, /*must be zero*/ + H5FD_MEM_SUPER = 1, + H5FD_MEM_BTREE = 2, + H5FD_MEM_DRAW = 3, + H5FD_MEM_GHEAP = 4, + H5FD_MEM_LHEAP = 5, + H5FD_MEM_OHDR = 6, + + H5FD_MEM_NTYPES /*must be last*/ +} H5FD_mem_t; + +/* + * A free-list map which maps all types of allocation requests to a single + * free list. This is useful for drivers that don't really care about + * keeping different requests segregated in the underlying file and which + * want to make most efficient reuse of freed memory. The use of the + * H5FD_MEM_SUPER free list is arbitrary. + */ +#define H5FD_FLMAP_SINGLE { \ + H5FD_MEM_SUPER, /*default*/ \ + H5FD_MEM_SUPER, /*super*/ \ + H5FD_MEM_SUPER, /*btree*/ \ + H5FD_MEM_SUPER, /*draw*/ \ + H5FD_MEM_SUPER, /*gheap*/ \ + H5FD_MEM_SUPER, /*lheap*/ \ + H5FD_MEM_SUPER /*ohdr*/ \ +} + +/* + * A free-list map which segregates requests into `raw' or `meta' data + * pools. + */ +#define H5FD_FLMAP_DICHOTOMY { \ + H5FD_MEM_SUPER, /*default*/ \ + H5FD_MEM_SUPER, /*super*/ \ + H5FD_MEM_SUPER, /*btree*/ \ + H5FD_MEM_DRAW, /*draw*/ \ + H5FD_MEM_SUPER, /*gheap*/ \ + H5FD_MEM_SUPER, /*lheap*/ \ + H5FD_MEM_SUPER /*ohdr*/ \ +} + +/* + * The default free list map which causes each request type to use it's own + * free-list. + */ +#define H5FD_FLMAP_DEFAULT { \ + H5FD_MEM_DEFAULT, /*default*/ \ + H5FD_MEM_DEFAULT, /*super*/ \ + H5FD_MEM_DEFAULT, /*btree*/ \ + H5FD_MEM_DEFAULT, /*draw*/ \ + H5FD_MEM_DEFAULT, /*gheap*/ \ + H5FD_MEM_DEFAULT, /*lheap*/ \ + H5FD_MEM_DEFAULT /*ohdr*/ \ +} + + +/* Define VFL driver features that can be enabled on a per-driver basis */ +/* These are returned with the 'query' function pointer in H5FD_class_t */ + /* + * Defining the H5FD_FEAT_AGGREGATE_METADATA for a VFL driver means that + * the library will attempt to allocate a larger block for metadata and + * then sub-allocate each metadata request from that larger block. + */ +#define H5FD_FEAT_AGGREGATE_METADATA 0x00000001 + /* + * Defining the H5FD_FEAT_ACCUMULATE_METADATA for a VFL driver means that + * the library will attempt to cache metadata as it is written to the file + * and build up a larger block of metadata to eventually pass to the VFL + * 'write' routine. + * + * Distinguish between updating the metadata accumulator on writes and + * reads. This is particularly (perhaps only, even) important for MPI-I/O + * where we guarantee that writes are collective, but reads may not be. + * If we were to allow the metadata accumulator to be written during a + * read operation, the application would hang. + */ +#define H5FD_FEAT_ACCUMULATE_METADATA_WRITE 0x00000002 +#define H5FD_FEAT_ACCUMULATE_METADATA_READ 0x00000004 +#define H5FD_FEAT_ACCUMULATE_METADATA (H5FD_FEAT_ACCUMULATE_METADATA_WRITE|H5FD_FEAT_ACCUMULATE_METADATA_READ) + /* + * Defining the H5FD_FEAT_DATA_SIEVE for a VFL driver means that + * the library will attempt to cache raw data as it is read from/written to + * a file in a "data seive" buffer. See Rajeev Thakur's papers: + * http://www.mcs.anl.gov/~thakur/papers/romio-coll.ps.gz + * http://www.mcs.anl.gov/~thakur/papers/mpio-high-perf.ps.gz + */ +#define H5FD_FEAT_DATA_SIEVE 0x00000008 + /* + * Defining the H5FD_FEAT_AGGREGATE_SMALLDATA for a VFL driver means that + * the library will attempt to allocate a larger block for "small" raw data + * and then sub-allocate "small" raw data requests from that larger block. + */ +#define H5FD_FEAT_AGGREGATE_SMALLDATA 0x00000010 + + +/* Forward declaration */ +typedef struct H5FD_t H5FD_t; + +/* Class information for each file driver */ +typedef struct H5FD_class_t { + const char *name; + haddr_t maxaddr; + H5F_close_degree_t fc_degree; + hsize_t (*sb_size)(H5FD_t *file); + herr_t (*sb_encode)(H5FD_t *file, char *name/*out*/, + unsigned char *p/*out*/); + herr_t (*sb_decode)(H5FD_t *f, const char *name, const unsigned char *p); + size_t fapl_size; + void * (*fapl_get)(H5FD_t *file); + void * (*fapl_copy)(const void *fapl); + herr_t (*fapl_free)(void *fapl); + size_t dxpl_size; + void * (*dxpl_copy)(const void *dxpl); + herr_t (*dxpl_free)(void *dxpl); + H5FD_t *(*open)(const char *name, unsigned flags, hid_t fapl, + haddr_t maxaddr); + herr_t (*close)(H5FD_t *file); + int (*cmp)(const H5FD_t *f1, const H5FD_t *f2); + herr_t (*query)(const H5FD_t *f1, unsigned long *flags); + haddr_t (*alloc)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size); + herr_t (*free)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, + haddr_t addr, hsize_t size); + haddr_t (*get_eoa)(H5FD_t *file); + herr_t (*set_eoa)(H5FD_t *file, haddr_t addr); + haddr_t (*get_eof)(H5FD_t *file); + herr_t (*get_handle)(H5FD_t *file, hid_t fapl, void**file_handle); + herr_t (*read)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, + haddr_t addr, size_t size, void *buffer); + herr_t (*write)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, + haddr_t addr, size_t size, const void *buffer); + herr_t (*flush)(H5FD_t *file, hid_t dxpl_id, unsigned closing); + herr_t (*lock)(H5FD_t *file, unsigned char *oid, unsigned lock_type, hbool_t last); + herr_t (*unlock)(H5FD_t *file, unsigned char *oid, hbool_t last); + H5FD_mem_t fl_map[H5FD_MEM_NTYPES]; +} H5FD_class_t; + +/* A free list is a singly-linked list of address/size pairs. */ +typedef struct H5FD_free_t { + haddr_t addr; + hsize_t size; + struct H5FD_free_t *next; +} H5FD_free_t; + +/* + * The main datatype for each driver. Public fields common to all drivers + * are declared here and the driver appends private fields in memory. + */ +struct H5FD_t { + hid_t driver_id; /*driver ID for this file */ + const H5FD_class_t *cls; /*constant class info */ + unsigned long fileno[2]; /* File serial number */ + unsigned long feature_flags; /* VFL Driver feature Flags */ + hsize_t threshold; /* Threshold for alignment */ + hsize_t alignment; /* Allocation alignment */ + hsize_t reserved_alloc; /* Space reserved for later alloc calls */ + + /* Metadata aggregation fields */ + hsize_t def_meta_block_size; /* Metadata allocation + * block size (if + * aggregating metadata) */ + hsize_t cur_meta_block_size; /* Current size of metadata + * allocation region left */ + haddr_t eoma; /* End of metadata + * allocated region */ + + /* "Small data" aggregation fields */ + hsize_t def_sdata_block_size; /* "Small data" + * allocation block size + * (if aggregating "small + * data") */ + hsize_t cur_sdata_block_size; /* Current size of "small + * data" allocation + * region left */ + haddr_t eosda; /* End of "small data" + * allocated region */ + + /* Metadata accumulator fields */ + unsigned char *meta_accum; /* Buffer to hold the accumulated metadata */ + haddr_t accum_loc; /* File location (offset) of the + * accumulated metadata */ + size_t accum_size; /* Size of the accumulated + * metadata buffer used (in + * bytes) */ + size_t accum_buf_size; /* Size of the accumulated + * metadata buffer allocated (in + * bytes) */ + unsigned accum_dirty; /* Flag to indicate that the + * accumulated metadata is dirty */ + haddr_t maxaddr; /* For this file, overrides class */ + H5FD_free_t *fl[H5FD_MEM_NTYPES]; /* Freelist per allocation type */ + hsize_t maxsize; /* Largest object on FL, or zero */ +}; + +#ifdef __cplusplus +extern "C" { +#endif + +/* Function prototypes */ +H5_DLL hid_t H5FDregister(const H5FD_class_t *cls); +H5_DLL herr_t H5FDunregister(hid_t driver_id); +H5_DLL H5FD_t *H5FDopen(const char *name, unsigned flags, hid_t fapl_id, + haddr_t maxaddr); +H5_DLL herr_t H5FDclose(H5FD_t *file); +H5_DLL int H5FDcmp(const H5FD_t *f1, const H5FD_t *f2); +H5_DLL int H5FDquery(const H5FD_t *f, unsigned long *flags); +H5_DLL haddr_t H5FDalloc(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size); +H5_DLL herr_t H5FDfree(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, + haddr_t addr, hsize_t size); +H5_DLL haddr_t H5FDrealloc(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, + haddr_t addr, hsize_t old_size, hsize_t new_size); +H5_DLL haddr_t H5FDget_eoa(H5FD_t *file); +H5_DLL herr_t H5FDset_eoa(H5FD_t *file, haddr_t eof); +H5_DLL haddr_t H5FDget_eof(H5FD_t *file); +H5_DLL herr_t H5FDget_vfd_handle(H5FD_t *file, hid_t fapl, void**file_handle); +H5_DLL herr_t H5FDread(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, + haddr_t addr, size_t size, void *buf/*out*/); +H5_DLL herr_t H5FDwrite(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, + haddr_t addr, size_t size, const void *buf); +H5_DLL herr_t H5FDflush(H5FD_t *file, hid_t dxpl_id, unsigned closing); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/cygwin/include/H5FDsec2.h b/libs/cygwin/include/H5FDsec2.h new file mode 100755 index 0000000..7242084 --- /dev/null +++ b/libs/cygwin/include/H5FDsec2.h @@ -0,0 +1,40 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke + * Monday, August 2, 1999 + * + * Purpose: The public header file for the sec2 driver. + */ +#ifndef H5FDsec2_H +#define H5FDsec2_H + +#include "H5Ipublic.h" + +#define H5FD_SEC2 (H5FD_sec2_init()) + +#ifdef __cplusplus +extern "C" { +#endif + +H5_DLL hid_t H5FD_sec2_init(void); +H5_DLL void H5FD_sec2_term(void); +H5_DLL herr_t H5Pset_fapl_sec2(hid_t fapl_id); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libs/cygwin/include/H5FDsrb.h b/libs/cygwin/include/H5FDsrb.h new file mode 100755 index 0000000..053ca51 --- /dev/null +++ b/libs/cygwin/include/H5FDsrb.h @@ -0,0 +1,57 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Raymond Lu + * Wednesday, April 12, 2000 + * Purpose: The public header file for the SRB driver. + */ +#ifndef H5FDsrb_H +#define H5FDsrb_H + +#include "H5FDpublic.h" +#include "H5Ipublic.h" + +#ifdef H5_HAVE_SRB + +#define H5FD_SRB (H5FD_srb_init()) + +typedef struct SRB_Info { /* Define the SRB info object. */ + char *srbHost; /* SRB host address of server */ + char *srbPort; /* SRB host port number */ + char *srbAuth; /* SRB Authentication-password */ + int storSysType; /* Storage Type: 0=Unix, 1=UniTree, 2=HPSS, + * 3=FTP, 4=HTTP */ + int mode; /* File mode-Unix access mode */ + int size; /* File Size-Only valid for HPSS, -1 is default */ +} SRB_Info; + +#ifdef __cplusplus +extern "C" { +#endif + +H5_DLL hid_t H5FD_srb_init(void); +H5_DLL void H5FD_srb_term(void); +H5_DLL herr_t H5Pset_fapl_srb(hid_t fapl_id, SRB_Info info); +H5_DLL herr_t H5Pget_fapl_srb(hid_t fapl_id, SRB_Info *info); + +#ifdef __cplusplus +} +#endif + +#else +#define H5FD_SRB (-1) +#endif /* H5_HAVE_SRB */ + +#endif /* H5FDsrb_H */ diff --git a/libs/cygwin/include/H5FDstdio.h b/libs/cygwin/include/H5FDstdio.h new file mode 100755 index 0000000..5c18a4f --- /dev/null +++ b/libs/cygwin/include/H5FDstdio.h @@ -0,0 +1,40 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke + * Monday, August 2, 1999 + * + * Purpose: The public header file for the sec2 driver. + */ +#ifndef H5FDstdio_H +#define H5FDstdio_H + +#include "H5Ipublic.h" + +#define H5FD_STDIO (H5FD_stdio_init()) + +#ifdef __cplusplus +extern "C" { +#endif + +H5_DLL hid_t H5FD_stdio_init(void); +H5_DLL void H5FD_stdio_term(void); +H5_DLL herr_t H5Pset_fapl_stdio(hid_t fapl_id); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libs/cygwin/include/H5FDstream.h b/libs/cygwin/include/H5FDstream.h new file mode 100755 index 0000000..890eb5a --- /dev/null +++ b/libs/cygwin/include/H5FDstream.h @@ -0,0 +1,82 @@ +/* + * Copyright © 2000 The author. + * The author prefers this code not be used for military purposes. + * + * + * Author: Thomas Radke + * Tuesday, September 12, 2000 + * + * Purpose: The public header file for the Stream Virtual File Driver. + * + * Modifications: + * Thomas Radke, Thursday, October 26, 2000 + * Added support for Windows. + * + */ +#ifndef H5FDstream_H +#define H5FDstream_H + +#ifdef H5_HAVE_STREAM + +/* check what sockets type we have (Unix or Windows sockets) + Note that only MS compilers require to use Windows sockets + but gcc under Windows does not. */ +#if ! defined(H5_HAVE_WINSOCK_H) || defined(__GNUC__) +#define H5FD_STREAM_HAVE_UNIX_SOCKETS 1 +#endif + +/* define the data type for socket descriptors + and the constant indicating an invalid descriptor */ +#ifdef H5FD_STREAM_HAVE_UNIX_SOCKETS + +#define H5FD_STREAM_SOCKET_TYPE int +#define H5FD_STREAM_INVALID_SOCKET -1 + +#else +#include + +#define H5FD_STREAM_SOCKET_TYPE SOCKET +#define H5FD_STREAM_INVALID_SOCKET INVALID_SOCKET + +#endif + +#define H5FD_STREAM (H5FD_stream_init()) + +#ifdef __cplusplus +extern "C" { +#endif + +/* prototype for read broadcast callback routine */ +typedef int (*H5FD_stream_broadcast_t) (unsigned char **file, + haddr_t *len, + void *arg); + +/* driver-specific file access properties */ +typedef struct H5FD_stream_fapl_t +{ + size_t increment; /* how much to grow memory in reallocs */ + H5FD_STREAM_SOCKET_TYPE socket; /* externally provided socket descriptor*/ + hbool_t do_socket_io; /* do I/O on socket */ + int backlog; /* backlog argument for listen call */ + H5FD_stream_broadcast_t broadcast_fn; /* READ broadcast callback */ + void *broadcast_arg; /* READ broadcast callback user argument*/ + unsigned int maxhunt; /* how many more ports to try to bind to*/ + unsigned short int port; /* port a socket was bound/connected to */ +} H5FD_stream_fapl_t; + + +/* prototypes of exported functions */ +H5_DLL hid_t H5FD_stream_init (void); +H5_DLL void H5FD_stream_term(void); +H5_DLL herr_t H5Pset_fapl_stream (hid_t fapl_id, + H5FD_stream_fapl_t *fapl); +H5_DLL herr_t H5Pget_fapl_stream (hid_t fapl_id, + H5FD_stream_fapl_t *fapl /*out*/ ); + +#ifdef __cplusplus +} +#endif + +#endif /* H5_HAVE_STREAM */ + +#endif /* H5FDstream_H */ diff --git a/libs/cygwin/include/H5Fpublic.h b/libs/cygwin/include/H5Fpublic.h new file mode 100755 index 0000000..c83f12e --- /dev/null +++ b/libs/cygwin/include/H5Fpublic.h @@ -0,0 +1,122 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains public declarations for the H5F module. + */ +#ifndef _H5Fpublic_H +#define _H5Fpublic_H + +/* Public header files needed by this file */ +#include "H5public.h" +#include "H5Ipublic.h" + +/* + * These are the bits that can be passed to the `flags' argument of + * H5Fcreate() and H5Fopen(). Use the bit-wise OR operator (|) to combine + * them as needed. As a side effect, they call H5check_version() to make sure + * that the application is compiled with a version of the hdf5 header files + * which are compatible with the library to which the application is linked. + * We're assuming that these constants are used rather early in the hdf5 + * session. + * + * NOTE: When adding H5F_ACC_* macros, remember to redefine them in H5Fprivate.h + * + */ + +/* When this header is included from H5Fprivate.h, don't make calls to H5check() */ +#undef H5CHECK +#ifndef _H5Fprivate_H +#define H5CHECK H5check(), +#else /* _H5Fprivate_H */ +#define H5CHECK +#endif /* _H5Fprivate_H */ + +#define H5F_ACC_RDONLY (H5CHECK 0x0000u) /*absence of rdwr => rd-only */ +#define H5F_ACC_RDWR (H5CHECK 0x0001u) /*open for read and write */ +#define H5F_ACC_TRUNC (H5CHECK 0x0002u) /*overwrite existing files */ +#define H5F_ACC_EXCL (H5CHECK 0x0004u) /*fail if file already exists*/ +#define H5F_ACC_DEBUG (H5CHECK 0x0008u) /*print debug info */ +#define H5F_ACC_CREAT (H5CHECK 0x0010u) /*create non-existing files */ + +#define H5F_OBJ_FILE (0x0001u) +#define H5F_OBJ_DATASET (0x0002u) +#define H5F_OBJ_GROUP (0x0004u) +#define H5F_OBJ_DATATYPE (0x0008u) +#define H5F_OBJ_ATTR (0x0010u) +#define H5F_OBJ_ALL (H5F_OBJ_FILE|H5F_OBJ_DATASET|H5F_OBJ_GROUP|H5F_OBJ_DATATYPE|H5F_OBJ_ATTR) + +#ifdef H5_HAVE_PARALLEL +/* + * Use this constant string as the MPI_Info key to set H5Fmpio debug flags. + * To turn on H5Fmpio debug flags, set the MPI_Info value with this key to + * have the value of a string consisting of the characters that turn on the + * desired flags. + */ +#define H5F_MPIO_DEBUG_KEY "H5F_mpio_debug_key" +#endif /* H5_HAVE_PARALLEL */ + +/* The difference between a single file and a set of mounted files */ +typedef enum H5F_scope_t { + H5F_SCOPE_LOCAL = 0, /*specified file handle only */ + H5F_SCOPE_GLOBAL = 1, /*entire virtual file */ + H5F_SCOPE_DOWN = 2 /*for internal use only */ +} H5F_scope_t; + +/* Unlimited file size for H5Pset_external() */ +#define H5F_UNLIMITED ((hsize_t)(-1L)) + +/* How does file close behave? + * H5F_CLOSE_DEFAULT - Use the degree pre-defined by underlining VFL + * H5F_CLOSE_WEAK - file closes only after all opened objects are closed + * H5F_CLOSE_SEMI - if no opened objects, file is close; otherwise, file + close fails + * H5F_CLOSE_STRONG - if there are opened objects, close them first, then + close file + */ +typedef enum H5F_close_degree_t { + H5F_CLOSE_DEFAULT = 0, + H5F_CLOSE_WEAK = 1, + H5F_CLOSE_SEMI = 2, + H5F_CLOSE_STRONG = 3 +} H5F_close_degree_t; + +#ifdef __cplusplus +extern "C" { +#endif + +/* Functions in H5F.c */ +H5_DLL htri_t H5Fis_hdf5 (const char *filename); +H5_DLL hid_t H5Fcreate (const char *filename, unsigned flags, + hid_t create_plist, hid_t access_plist); +H5_DLL hid_t H5Fopen (const char *filename, unsigned flags, + hid_t access_plist); +H5_DLL hid_t H5Freopen(hid_t file_id); +H5_DLL herr_t H5Fflush(hid_t object_id, H5F_scope_t scope); +H5_DLL herr_t H5Fclose (hid_t file_id); +H5_DLL hid_t H5Fget_create_plist (hid_t file_id); +H5_DLL hid_t H5Fget_access_plist (hid_t file_id); +H5_DLL int H5Fget_obj_count(hid_t file_id, unsigned types); +H5_DLL int H5Fget_obj_ids(hid_t file_id, unsigned types, int max_objs, hid_t *obj_id_list); +H5_DLL herr_t H5Fget_vfd_handle(hid_t file_id, hid_t fapl, void** file_handle); +H5_DLL herr_t H5Fmount(hid_t loc, const char *name, hid_t child, hid_t plist); +H5_DLL herr_t H5Funmount(hid_t loc, const char *name); +H5_DLL hssize_t H5Fget_freespace(hid_t file_id); +H5_DLL herr_t H5Fget_filesize(hid_t file_id, hsize_t *size); +H5_DLL ssize_t H5Fget_name(hid_t obj_id, char *name, size_t size); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/cygwin/include/H5Gpublic.h b/libs/cygwin/include/H5Gpublic.h new file mode 100755 index 0000000..3d74704 --- /dev/null +++ b/libs/cygwin/include/H5Gpublic.h @@ -0,0 +1,138 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5Gproto.h + * Jul 11 1997 + * Robb Matzke + * + * Purpose: Public declarations for the H5G package (symbol + * tables). + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +#ifndef _H5Gpublic_H +#define _H5Gpublic_H + +/* Public headers needed by this file */ +#include + +#include "H5public.h" +#include "H5Ipublic.h" +#include "H5Opublic.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Types of links */ +typedef enum H5G_link_t { + H5G_LINK_ERROR = -1, + H5G_LINK_HARD = 0, + H5G_LINK_SOFT = 1 +} H5G_link_t; + +/* + * An object has a certain type. The first few numbers are reserved for use + * internally by HDF5. Users may add their own types with higher values. The + * values are never stored in the file -- they only exist while an + * application is running. An object may satisfy the `isa' function for more + * than one type. + */ +#ifdef H5_WANT_H5_V1_4_COMPAT +#define H5G_UNKNOWN -1 /* Unknown object type */ +#define H5G_LINK 0 /* Object is a symbolic link */ +#define H5G_GROUP 1 /* Object is a group */ +#define H5G_DATASET 2 /* Object is a dataset */ +#define H5G_TYPE 3 /* Object is a named data type */ +#define H5G_RESERVED_4 4 /* Reserved for future use */ +#define H5G_RESERVED_5 5 /* Reserved for future use */ +#define H5G_RESERVED_6 6 /* Reserved for future use */ +#define H5G_RESERVED_7 7 /* Reserved for future use */ +#else /*H5_WANT_H5_V1_4_COMPAT*/ +typedef enum H5G_obj_t { + H5G_UNKNOWN = -1, /* Unknown object type */ + H5G_LINK, /* Object is a symbolic link */ + H5G_GROUP, /* Object is a group */ + H5G_DATASET, /* Object is a dataset */ + H5G_TYPE, /* Object is a named data type */ + H5G_RESERVED_4, /* Reserved for future use */ + H5G_RESERVED_5, /* Reserved for future use */ + H5G_RESERVED_6, /* Reserved for future use */ + H5G_RESERVED_7 /* Reserved for future use */ +} H5G_obj_t; +#endif /*H5_WANT_H5_V1_4_COMPAT*/ + +#define H5G_NTYPES 256 /* Max possible number of types */ +#define H5G_NLIBTYPES 8 /* Number of internal types */ +#define H5G_NUSERTYPES (H5G_NTYPES-H5G_NLIBTYPES) +#define H5G_USERTYPE(X) (8+(X)) /* User defined types */ + +/* Information about an object */ +typedef struct H5G_stat_t { + unsigned long fileno[2]; /*file number */ + unsigned long objno[2]; /*object number */ + unsigned nlink; /*number of hard links to object*/ +#ifdef H5_WANT_H5_V1_4_COMPAT + int type; /*basic object type */ +#else /*H5_WANT_H5_V1_4_COMPAT*/ + H5G_obj_t type; /*basic object type */ +#endif /*H5_WANT_H5_V1_4_COMPAT*/ + time_t mtime; /*modification time */ + size_t linklen; /*symbolic link value length */ + H5O_stat_t ohdr; /* Object header information */ +} H5G_stat_t; + +#define H5G_SAME_LOC 0 +#define H5Glink(cur_loc_id, type, cur_name, new_name) \ + H5Glink2(cur_loc_id, cur_name, type, H5G_SAME_LOC, new_name) +#define H5Gmove(src_loc_id, src_name, dst_name) \ + H5Gmove2(src_loc_id, src_name, H5G_SAME_LOC, dst_name) + +typedef herr_t (*H5G_iterate_t)(hid_t group, const char *name, + void *op_data); + +H5_DLL hid_t H5Gcreate(hid_t loc_id, const char *name, size_t size_hint); +H5_DLL hid_t H5Gopen(hid_t loc_id, const char *name); +H5_DLL herr_t H5Gclose(hid_t group_id); +H5_DLL herr_t H5Giterate(hid_t loc_id, const char *name, int *idx, + H5G_iterate_t op, void *op_data); +H5_DLL herr_t H5Gget_num_objs(hid_t loc_id, hsize_t *num_objs); +H5_DLL ssize_t H5Gget_objname_by_idx(hid_t loc_id, hsize_t idx, char* name, size_t size); +#ifdef H5_WANT_H5_V1_4_COMPAT +H5_DLL int H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx); +#else /*H5_WANT_H5_V1_4_COMPAT*/ +H5_DLL H5G_obj_t H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx); +#endif /*H5_WANT_H5_V1_4_COMPAT*/ +H5_DLL herr_t H5Gmove2(hid_t src_loc, const char *src, hid_t dst_loc, + const char *dst); +H5_DLL herr_t H5Glink2(hid_t src_loc, const char *cur_name, H5G_link_t type, + hid_t dst_loc, const char *new_name); +H5_DLL herr_t H5Gunlink(hid_t loc_id, const char *name); +H5_DLL herr_t H5Gget_objinfo(hid_t loc_id, const char *name, + hbool_t follow_link, H5G_stat_t *statbuf/*out*/); +H5_DLL herr_t H5Gget_linkval(hid_t loc_id, const char *name, size_t size, + char *buf/*out*/); +H5_DLL herr_t H5Gset_comment(hid_t loc_id, const char *name, + const char *comment); +H5_DLL int H5Gget_comment(hid_t loc_id, const char *name, size_t bufsize, + char *buf); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/cygwin/include/H5HGpublic.h b/libs/cygwin/include/H5HGpublic.h new file mode 100755 index 0000000..44885ef --- /dev/null +++ b/libs/cygwin/include/H5HGpublic.h @@ -0,0 +1,32 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Robb Matzke + * Friday, March 27, 1998 + */ +#ifndef _H5HGpublic_H +#define _H5HGpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/cygwin/include/H5HLpublic.h b/libs/cygwin/include/H5HLpublic.h new file mode 100755 index 0000000..5bf2971 --- /dev/null +++ b/libs/cygwin/include/H5HLpublic.h @@ -0,0 +1,40 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5HLpublic.h + * Jul 16 1997 + * Robb Matzke + * + * Purpose: Public declarations for the H5HL (local heap) package. + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +#ifndef _H5HLpublic_H +#define _H5HLpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/cygwin/include/H5Ipublic.h b/libs/cygwin/include/H5Ipublic.h new file mode 100755 index 0000000..6069fd1 --- /dev/null +++ b/libs/cygwin/include/H5Ipublic.h @@ -0,0 +1,74 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains function prototypes for each exported function in + * the H5I module. + */ +#ifndef _H5Ipublic_H +#define _H5Ipublic_H + +/* Public headers needed by this file */ +#include "H5public.h" + +/* + * Group values allowed. Start with `1' instead of `0' because it makes the + * tracing output look better when hid_t values are large numbers. Change the + * GROUP_BITS in H5I.c if the MAXID gets larger than 32 (an assertion will + * fail otherwise). + * + * When adding groups here, add a section to the 'misc19' test in test/tmisc.c + * to verify that the H5I{inc|dec|get}_ref() routines work correctly with in. + * + */ +typedef enum { + H5I_BADID = (-1), /*invalid Group */ + H5I_FILE = 1, /*group ID for File objects */ + H5I_FILE_CLOSING, /*files pending close due to open objhdrs */ + H5I_GROUP, /*group ID for Group objects */ + H5I_DATATYPE, /*group ID for Datatype objects */ + H5I_DATASPACE, /*group ID for Dataspace objects */ + H5I_DATASET, /*group ID for Dataset objects */ + H5I_ATTR, /*group ID for Attribute objects */ + H5I_TEMPBUF, /*group ID for Temporary buffer objects */ + H5I_REFERENCE, /*group ID for Reference objects */ + H5I_VFL, /*group ID for virtual file layer */ + H5I_GENPROP_CLS, /*group ID for generic property list classes */ + H5I_GENPROP_LST, /*group ID for generic property lists */ + + H5I_NGROUPS /*number of valid groups, MUST BE LAST! */ +} H5I_type_t; + +/* Type of atoms to return to users */ +typedef int hid_t; + +/* An invalid object ID. This is also negative for error return. */ +#define H5I_INVALID_HID (-1) + +#ifdef __cplusplus +extern "C" { +#endif + +/* Public API functions */ +H5_DLL H5I_type_t H5Iget_type(hid_t id); +H5_DLL hid_t H5Iget_file_id(hid_t id); +H5_DLL ssize_t H5Iget_name(hid_t id, char *name/*out*/, size_t size); +H5_DLL int H5Iinc_ref(hid_t id); +H5_DLL int H5Idec_ref(hid_t id); +H5_DLL int H5Iget_ref(hid_t id); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/cygwin/include/H5MMpublic.h b/libs/cygwin/include/H5MMpublic.h new file mode 100755 index 0000000..1da1e36 --- /dev/null +++ b/libs/cygwin/include/H5MMpublic.h @@ -0,0 +1,45 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5MMproto.h + * Jul 10 1997 + * Robb Matzke + * + * Purpose: Public declarations for the H5MM (memory management) + * package. + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +#ifndef _H5MMpublic_H +#define _H5MMpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" + +/* These typedefs are currently used for VL datatype allocation/freeing */ +typedef void *(* H5MM_allocate_t)(size_t size,void *info); +typedef void (* H5MM_free_t)(void *mem, void *free_info); + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/cygwin/include/H5Opublic.h b/libs/cygwin/include/H5Opublic.h new file mode 100755 index 0000000..e71ff9c --- /dev/null +++ b/libs/cygwin/include/H5Opublic.h @@ -0,0 +1,48 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5Opublic.h + * Aug 5 1997 + * Robb Matzke + * + * Purpose: Public declarations for the H5O (object header) + * package. + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +#ifndef _H5Opublic_H +#define _H5Opublic_H + +/* Public headers needed by this file */ +#include "H5public.h" + +typedef struct H5O_stat_t { + hsize_t size; /* Total size of object header in file */ + hsize_t free; /* Free space within object header */ + unsigned nmesgs; /* Number of object header messages */ + unsigned nchunks; /* Number of object header chunks */ +} H5O_stat_t; + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/cygwin/include/H5Ppublic.h b/libs/cygwin/include/H5Ppublic.h new file mode 100755 index 0000000..eedcda6 --- /dev/null +++ b/libs/cygwin/include/H5Ppublic.h @@ -0,0 +1,308 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains function prototypes for each exported function in the + * H5P module. + */ +#ifndef _H5Ppublic_H +#define _H5Ppublic_H + +/* Default Template for creation, access, etc. templates */ +#define H5P_DEFAULT 0 + +/* Public headers needed by this file */ +#include "H5public.h" +#include "H5Ipublic.h" +#include "H5Dpublic.h" +#include "H5Fpublic.h" +#include "H5FDpublic.h" +#include "H5MMpublic.h" +#include "H5Zpublic.h" + +/* Metroworks doesn't define off_t. */ +#ifdef __MWERKS__ +typedef long off_t; +/* Metroworks does not define EINTR in */ +# define EINTR 4 +#endif +/*__MWERKS__*/ + +#ifdef H5_WANT_H5_V1_4_COMPAT +/* Backward compatibility typedef... */ +typedef hid_t H5P_class_t; /* Alias H5P_class_t to hid_t */ + +/* H5P_DATASET_XFER was the name from the beginning through 1.2. It was + * changed to H5P_DATA_XFER on v1.3.0. Then it was changed back to + * H5P_DATASET_XFER right before the release of v1.4.0-beta2. + * Define an alias here to help applications that had ported to v1.3. + * Should be removed in later version. + */ +#define H5P_DATA_XFER H5P_DATASET_XFER +#endif /* H5_WANT_H5_V1_4_COMPAT */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Define property list class callback function pointer types */ +typedef herr_t (*H5P_cls_create_func_t)(hid_t prop_id, void *create_data); +typedef herr_t (*H5P_cls_copy_func_t)(hid_t new_prop_id, hid_t old_prop_id, + void *copy_data); +typedef herr_t (*H5P_cls_close_func_t)(hid_t prop_id, void *close_data); + +/* Define property list callback function pointer types */ +typedef herr_t (*H5P_prp_cb1_t)(const char *name, size_t size, void *value); +typedef herr_t (*H5P_prp_cb2_t)(hid_t prop_id, const char *name, size_t size, void *value); +typedef H5P_prp_cb1_t H5P_prp_create_func_t; +typedef H5P_prp_cb2_t H5P_prp_set_func_t; +typedef H5P_prp_cb2_t H5P_prp_get_func_t; +typedef H5P_prp_cb2_t H5P_prp_delete_func_t; +typedef H5P_prp_cb1_t H5P_prp_copy_func_t; +typedef int (*H5P_prp_compare_func_t)(const void *value1, const void *value2, size_t size); +typedef H5P_prp_cb1_t H5P_prp_close_func_t; + +/* Define property list iteration function type */ +typedef herr_t (*H5P_iterate_t)(hid_t id, const char *name, void *iter_data); + +/* + * The library created property list classes + * + * NOTE: When adding H5P_* macros, remember to redefine them in H5Pprivate.h + * + */ + +/* When this header is included from H5Pprivate.h, don't make calls to H5open() */ +#undef H5OPEN +#ifndef _H5Pprivate_H +#define H5OPEN H5open(), +#else /* _H5Pprivate_H */ +#define H5OPEN +#endif /* _H5Pprivate_H */ + +#define H5P_NO_CLASS (H5OPEN H5P_CLS_NO_CLASS_g) +#define H5P_FILE_CREATE (H5OPEN H5P_CLS_FILE_CREATE_g) +#define H5P_FILE_ACCESS (H5OPEN H5P_CLS_FILE_ACCESS_g) +#define H5P_DATASET_CREATE (H5OPEN H5P_CLS_DATASET_CREATE_g) +#define H5P_DATASET_XFER (H5OPEN H5P_CLS_DATASET_XFER_g) +#define H5P_MOUNT (H5OPEN H5P_CLS_MOUNT_g) +H5_DLLVAR hid_t H5P_CLS_NO_CLASS_g; +H5_DLLVAR hid_t H5P_CLS_FILE_CREATE_g; +H5_DLLVAR hid_t H5P_CLS_FILE_ACCESS_g; +H5_DLLVAR hid_t H5P_CLS_DATASET_CREATE_g; +H5_DLLVAR hid_t H5P_CLS_DATASET_XFER_g; +H5_DLLVAR hid_t H5P_CLS_MOUNT_g; + +/* + * The library created default property lists + * + * NOTE: When adding H5P_* macros, remember to redefine them in H5Pprivate.h + * + */ +#define H5P_NO_CLASS_DEFAULT (H5OPEN H5P_LST_NO_CLASS_g) +#define H5P_FILE_CREATE_DEFAULT (H5OPEN H5P_LST_FILE_CREATE_g) +#define H5P_FILE_ACCESS_DEFAULT (H5OPEN H5P_LST_FILE_ACCESS_g) +#define H5P_DATASET_CREATE_DEFAULT (H5OPEN H5P_LST_DATASET_CREATE_g) +#define H5P_DATASET_XFER_DEFAULT (H5OPEN H5P_LST_DATASET_XFER_g) +#define H5P_MOUNT_DEFAULT (H5OPEN H5P_LST_MOUNT_g) +H5_DLLVAR hid_t H5P_LST_NO_CLASS_g; +H5_DLLVAR hid_t H5P_LST_FILE_CREATE_g; +H5_DLLVAR hid_t H5P_LST_FILE_ACCESS_g; +H5_DLLVAR hid_t H5P_LST_DATASET_CREATE_g; +H5_DLLVAR hid_t H5P_LST_DATASET_XFER_g; +H5_DLLVAR hid_t H5P_LST_MOUNT_g; + +/* Public functions */ +H5_DLL hid_t H5Pcreate_class(hid_t parent, const char *name, + H5P_cls_create_func_t cls_create, void *create_data, + H5P_cls_copy_func_t cls_copy, void *copy_data, + H5P_cls_close_func_t cls_close, void *close_data); +H5_DLL char *H5Pget_class_name(hid_t pclass_id); +H5_DLL hid_t H5Pcreate(hid_t cls_id); +H5_DLL herr_t H5Pregister(hid_t cls_id, const char *name, size_t size, + void *def_value, H5P_prp_create_func_t prp_create, + H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get, + H5P_prp_delete_func_t prp_del, + H5P_prp_copy_func_t prp_copy, + H5P_prp_close_func_t prp_close); +H5_DLL herr_t H5Pinsert(hid_t plist_id, const char *name, size_t size, + void *value, H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get, + H5P_prp_delete_func_t prp_delete, + H5P_prp_copy_func_t prp_copy, + H5P_prp_close_func_t prp_close); +H5_DLL herr_t H5Pset(hid_t plist_id, const char *name, void *value); +H5_DLL htri_t H5Pexist(hid_t plist_id, const char *name); +H5_DLL herr_t H5Pget_size(hid_t id, const char *name, size_t *size); +H5_DLL herr_t H5Pget_nprops(hid_t id, size_t *nprops); +H5_DLL hid_t H5Pget_class(hid_t plist_id); +H5_DLL hid_t H5Pget_class_parent(hid_t pclass_id); +H5_DLL herr_t H5Pget(hid_t plist_id, const char *name, void * value); +H5_DLL htri_t H5Pequal(hid_t id1, hid_t id2); +H5_DLL htri_t H5Pisa_class(hid_t plist_id, hid_t pclass_id); +H5_DLL int H5Piterate(hid_t id, int *idx, H5P_iterate_t iter_func, + void *iter_data); +H5_DLL herr_t H5Pcopy_prop(hid_t dst_id, hid_t src_id, const char *name); +H5_DLL herr_t H5Premove(hid_t plist_id, const char *name); +H5_DLL herr_t H5Punregister(hid_t pclass_id, const char *name); +H5_DLL herr_t H5Pclose_class(hid_t plist_id); +H5_DLL herr_t H5Pclose(hid_t plist_id); +H5_DLL hid_t H5Pcopy(hid_t plist_id); + +H5_DLL herr_t H5Pget_version(hid_t plist_id, int *boot/*out*/, + int *freelist/*out*/, int *stab/*out*/, + int *shhdr/*out*/); +H5_DLL herr_t H5Pset_userblock(hid_t plist_id, hsize_t size); +H5_DLL herr_t H5Pget_userblock(hid_t plist_id, hsize_t *size); +H5_DLL herr_t H5Pset_alignment(hid_t fapl_id, hsize_t threshold, + hsize_t alignment); +H5_DLL herr_t H5Pget_alignment(hid_t fapl_id, hsize_t *threshold/*out*/, + hsize_t *alignment/*out*/); +H5_DLL herr_t H5Pset_sizes(hid_t plist_id, size_t sizeof_addr, + size_t sizeof_size); +H5_DLL herr_t H5Pget_sizes(hid_t plist_id, size_t *sizeof_addr/*out*/, + size_t *sizeof_size/*out*/); +#ifdef H5_WANT_H5_V1_4_COMPAT +H5_DLL herr_t H5Pset_sym_k(hid_t plist_id, int ik, int lk); +H5_DLL herr_t H5Pget_sym_k(hid_t plist_id, int *ik/*out*/, int *lk/*out*/); +#else /* H5_WANT_H5_V1_4_COMPAT */ +H5_DLL herr_t H5Pset_sym_k(hid_t plist_id, int ik, unsigned lk); +H5_DLL herr_t H5Pget_sym_k(hid_t plist_id, int *ik/*out*/, unsigned *lk/*out*/); +#endif /* H5_WANT_H5_V1_4_COMPAT */ +H5_DLL herr_t H5Pset_istore_k(hid_t plist_id, int ik); +H5_DLL herr_t H5Pget_istore_k(hid_t plist_id, int *ik/*out*/); +H5_DLL herr_t H5Pset_layout(hid_t plist_id, H5D_layout_t layout); +H5_DLL H5D_layout_t H5Pget_layout(hid_t plist_id); +H5_DLL herr_t H5Pset_chunk(hid_t plist_id, int ndims, const hsize_t dim[]); +H5_DLL int H5Pget_chunk(hid_t plist_id, int max_ndims, hsize_t dim[]/*out*/); +H5_DLL herr_t H5Pset_external(hid_t plist_id, const char *name, off_t offset, + hsize_t size); +H5_DLL int H5Pget_external_count(hid_t plist_id); +H5_DLL herr_t H5Pget_external(hid_t plist_id, int idx, size_t name_size, + char *name/*out*/, off_t *offset/*out*/, + hsize_t *size/*out*/); +H5_DLL herr_t H5Pset_driver(hid_t plist_id, hid_t driver_id, + const void *driver_info); +H5_DLL hid_t H5Pget_driver(hid_t plist_id); +H5_DLL void *H5Pget_driver_info(hid_t plist_id); +H5_DLL herr_t H5Pset_family_offset(hid_t fapl_id, hsize_t offset); +H5_DLL herr_t H5Pget_family_offset(hid_t fapl_id, hsize_t *offset); +H5_DLL herr_t H5Pset_multi_type(hid_t fapl_id, H5FD_mem_t type); +H5_DLL herr_t H5Pget_multi_type(hid_t fapl_id, H5FD_mem_t *type); +#ifdef H5_WANT_H5_V1_4_COMPAT +H5_DLL herr_t H5Pset_buffer(hid_t plist_id, hsize_t size, void *tconv, + void *bkg); +H5_DLL hsize_t H5Pget_buffer(hid_t plist_id, void **tconv/*out*/, + void **bkg/*out*/); +#else /* H5_WANT_H5_V1_4_COMPAT */ +H5_DLL herr_t H5Pset_buffer(hid_t plist_id, size_t size, void *tconv, + void *bkg); +H5_DLL size_t H5Pget_buffer(hid_t plist_id, void **tconv/*out*/, + void **bkg/*out*/); +#endif /* H5_WANT_H5_V1_4_COMPAT */ +H5_DLL herr_t H5Pset_preserve(hid_t plist_id, hbool_t status); +H5_DLL int H5Pget_preserve(hid_t plist_id); +H5_DLL herr_t H5Pmodify_filter(hid_t plist_id, H5Z_filter_t filter, + unsigned int flags, size_t cd_nelmts, + const unsigned int cd_values[/*cd_nelmts*/]); +H5_DLL herr_t H5Pset_filter(hid_t plist_id, H5Z_filter_t filter, + unsigned int flags, size_t cd_nelmts, + const unsigned int c_values[]); +H5_DLL int H5Pget_nfilters(hid_t plist_id); +H5_DLL H5Z_filter_t H5Pget_filter(hid_t plist_id, int filter, + unsigned int *flags/*out*/, + size_t *cd_nelmts/*out*/, + unsigned cd_values[]/*out*/, + size_t namelen, char name[]); +H5_DLL H5Z_filter_t H5Pget_filter_by_id(hid_t plist_id, H5Z_filter_t id, + unsigned int *flags/*out*/, + size_t *cd_nelmts/*out*/, + unsigned cd_values[]/*out*/, + size_t namelen, char name[]); +H5_DLL htri_t H5Pall_filters_avail(hid_t plist_id); +H5_DLL herr_t H5Pset_deflate(hid_t plist_id, unsigned aggression); +H5_DLL herr_t H5Pset_szip(hid_t plist_id, unsigned options_mask, unsigned pixels_per_block); +H5_DLL herr_t H5Pset_shuffle(hid_t plist_id); +H5_DLL herr_t H5Pset_fletcher32(hid_t plist_id); +H5_DLL herr_t H5Pset_edc_check(hid_t plist_id, H5Z_EDC_t check); +H5_DLL H5Z_EDC_t H5Pget_edc_check(hid_t plist_id); +H5_DLL herr_t H5Pset_filter_callback(hid_t plist_id, H5Z_filter_func_t func, + void* op_data); +#ifdef H5_WANT_H5_V1_4_COMPAT +H5_DLL herr_t H5Pset_cache(hid_t plist_id, int mdc_nelmts, int rdcc_nelmts, + size_t rdcc_nbytes, double rdcc_w0); +H5_DLL herr_t H5Pget_cache(hid_t plist_id, int *mdc_nelmts/*out*/, + int *rdcc_nelmts/*out*/, + size_t *rdcc_nbytes/*out*/, double *rdcc_w0); +#else /* H5_WANT_H5_V1_4_COMPAT */ +H5_DLL herr_t H5Pset_cache(hid_t plist_id, int mdc_nelmts, size_t rdcc_nelmts, + size_t rdcc_nbytes, double rdcc_w0); +H5_DLL herr_t H5Pget_cache(hid_t plist_id, int *mdc_nelmts/*out*/, + size_t *rdcc_nelmts/*out*/, + size_t *rdcc_nbytes/*out*/, double *rdcc_w0); +#endif /* H5_WANT_H5_V1_4_COMPAT */ +#ifdef H5_WANT_H5_V1_4_COMPAT +H5_DLL herr_t H5Pset_hyper_cache(hid_t plist_id, unsigned cache, + unsigned limit); +H5_DLL herr_t H5Pget_hyper_cache(hid_t plist_id, unsigned *cache, + unsigned *limit); +#endif /* H5_WANT_H5_V1_4_COMPAT */ +H5_DLL herr_t H5Pset_btree_ratios(hid_t plist_id, double left, double middle, + double right); +H5_DLL herr_t H5Pget_btree_ratios(hid_t plist_id, double *left/*out*/, + double *middle/*out*/, + double *right/*out*/); +H5_DLL herr_t H5Pset_fill_value(hid_t plist_id, hid_t type_id, + const void *value); +H5_DLL herr_t H5Pget_fill_value(hid_t plist_id, hid_t type_id, + void *value/*out*/); +H5_DLL herr_t H5Pfill_value_defined(hid_t plist, H5D_fill_value_t *status); +H5_DLL herr_t H5Pset_alloc_time(hid_t plist_id, H5D_alloc_time_t + alloc_time); +H5_DLL herr_t H5Pget_alloc_time(hid_t plist_id, H5D_alloc_time_t + *alloc_time/*out*/); +H5_DLL herr_t H5Pset_fill_time(hid_t plist_id, H5D_fill_time_t fill_time); +H5_DLL herr_t H5Pget_fill_time(hid_t plist_id, H5D_fill_time_t + *fill_time/*out*/); +H5_DLL herr_t H5Pset_gc_references(hid_t fapl_id, unsigned gc_ref); +H5_DLL herr_t H5Pget_gc_references(hid_t fapl_id, unsigned *gc_ref/*out*/); +H5_DLL herr_t H5Pset_fclose_degree(hid_t fapl_id, H5F_close_degree_t degree); +H5_DLL herr_t H5Pget_fclose_degree(hid_t fapl_id, H5F_close_degree_t *degree); +H5_DLL herr_t H5Pset_vlen_mem_manager(hid_t plist_id, + H5MM_allocate_t alloc_func, + void *alloc_info, H5MM_free_t free_func, + void *free_info); +H5_DLL herr_t H5Pget_vlen_mem_manager(hid_t plist_id, + H5MM_allocate_t *alloc_func, + void **alloc_info, + H5MM_free_t *free_func, + void **free_info); +H5_DLL herr_t H5Pset_meta_block_size(hid_t fapl_id, hsize_t size); +H5_DLL herr_t H5Pget_meta_block_size(hid_t fapl_id, hsize_t *size/*out*/); +#ifdef H5_WANT_H5_V1_4_COMPAT +H5_DLL herr_t H5Pset_sieve_buf_size(hid_t fapl_id, hsize_t size); +H5_DLL herr_t H5Pget_sieve_buf_size(hid_t fapl_id, hsize_t *size/*out*/); +#else /* H5_WANT_H5_V1_4_COMPAT */ +H5_DLL herr_t H5Pset_sieve_buf_size(hid_t fapl_id, size_t size); +H5_DLL herr_t H5Pget_sieve_buf_size(hid_t fapl_id, size_t *size/*out*/); +#endif /* H5_WANT_H5_V1_4_COMPAT */ +H5_DLL herr_t H5Pset_hyper_vector_size(hid_t fapl_id, size_t size); +H5_DLL herr_t H5Pget_hyper_vector_size(hid_t fapl_id, size_t *size/*out*/); +H5_DLL herr_t H5Pset_small_data_block_size(hid_t fapl_id, hsize_t size); +H5_DLL herr_t H5Pget_small_data_block_size(hid_t fapl_id, hsize_t *size/*out*/); +H5_DLL herr_t H5Premove_filter(hid_t plist_id, H5Z_filter_t filter); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/cygwin/include/H5Rpublic.h b/libs/cygwin/include/H5Rpublic.h new file mode 100755 index 0000000..9cdd56e --- /dev/null +++ b/libs/cygwin/include/H5Rpublic.h @@ -0,0 +1,85 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains public declarations for the H5S module. + */ +#ifndef _H5Rpublic_H +#define _H5Rpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" +#include "H5Gpublic.h" +#include "H5Ipublic.h" + +/* + * Reference types allowed. + */ +typedef enum { + H5R_BADTYPE = (-1), /*invalid Reference Type */ + H5R_OBJECT, /*Object reference */ + H5R_DATASET_REGION, /*Dataset Region Reference */ + H5R_INTERNAL, /*Internal Reference */ + H5R_MAXTYPE /*highest type (Invalid as true type) */ +} H5R_type_t; + +#ifdef LATER +/* Generic reference structure for user's code */ +typedef struct { + unsigned long oid[2]; /* OID of object referenced */ + unsigned long region[2]; /* heap ID of region in object */ + unsigned long file[2]; /* heap ID of external filename */ +} href_t; +#endif /* LATER */ + +/* Note! Be careful with the sizes of the references because they should really + * depend on the run-time values in the file. Unfortunately, the arrays need + * to be defined at compile-time, so we have to go with the worst case sizes for + * them. -QAK + */ +#define H5R_OBJ_REF_BUF_SIZE sizeof(haddr_t) +typedef haddr_t hobj_ref_t; /* Buffer to store OID of object referenced */ + /* Needs to be large enough to store largest haddr_t in a worst case machine (ie. 8 bytes currently) */ + +#define H5R_DSET_REG_REF_BUF_SIZE (sizeof(haddr_t)+4) +/* 4 is used instead of sizeof(int) to permit portability between + the Crays and other machines (the heap ID is always encoded as an int32 anyway) +*/ +/* Dataset Region reference structure for user's code */ +typedef unsigned char hdset_reg_ref_t[H5R_DSET_REG_REF_BUF_SIZE];/* Buffer to store heap ID and index */ +/* Needs to be large enough to store largest haddr_t in a worst case machine (ie. 8 bytes currently) plus an int */ + +/* Publicly visible datastructures */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Functions in H5R.c */ +H5_DLL herr_t H5Rcreate(void *ref, hid_t loc_id, const char *name, + H5R_type_t ref_type, hid_t space_id); +H5_DLL hid_t H5Rdereference(hid_t dataset, H5R_type_t ref_type, void *ref); +H5_DLL hid_t H5Rget_region(hid_t dataset, H5R_type_t ref_type, void *ref); +#ifdef H5_WANT_H5_V1_4_COMPAT +H5_DLL int H5Rget_object_type(hid_t dataset, void *_ref); +H5_DLL int H5Rget_obj_type(hid_t id, H5R_type_t ref_type, void *_ref); +#else /* H5_WANT_H5_V1_4_COMPAT */ +H5_DLL H5G_obj_t H5Rget_obj_type(hid_t id, H5R_type_t ref_type, void *_ref); +#endif /* H5_WANT_H5_V1_4_COMPAT */ + +#ifdef __cplusplus +} +#endif + +#endif /* _H5Rpublic_H */ diff --git a/libs/cygwin/include/H5Spublic.h b/libs/cygwin/include/H5Spublic.h new file mode 100755 index 0000000..8272dfa --- /dev/null +++ b/libs/cygwin/include/H5Spublic.h @@ -0,0 +1,149 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains public declarations for the H5S module. + */ +#ifndef _H5Spublic_H +#define _H5Spublic_H + +/* Public headers needed by this file */ +#include "H5public.h" +#include "H5Ipublic.h" + +/* Define atomic datatypes */ +#define H5S_ALL 0 +#define H5S_UNLIMITED ((hsize_t)(hssize_t)(-1)) + +/* Define user-level maximum number of dimensions */ +#define H5S_MAX_RANK 32 + +/* Different types of dataspaces */ +typedef enum H5S_class_t { + H5S_NO_CLASS = -1, /*error */ + H5S_SCALAR = 0, /*scalar variable */ + H5S_SIMPLE = 1, /*simple data space */ + H5S_COMPLEX = 2 /*complex data space */ +} H5S_class_t; + +/* Different ways of combining selections */ +typedef enum H5S_seloper_t { + H5S_SELECT_NOOP = -1, /* error */ + H5S_SELECT_SET = 0, /* Select "set" operation */ + H5S_SELECT_OR, /* Binary "or" operation for hyperslabs + * (add new selection to existing selection) + * Original region: AAAAAAAAAA + * New region: BBBBBBBBBB + * A or B: CCCCCCCCCCCCCCCC + */ + H5S_SELECT_AND, /* Binary "and" operation for hyperslabs + * (only leave overlapped regions in selection) + * Original region: AAAAAAAAAA + * New region: BBBBBBBBBB + * A and B: CCCC + */ + H5S_SELECT_XOR, /* Binary "xor" operation for hyperslabs + * (only leave non-overlapped regions in selection) + * Original region: AAAAAAAAAA + * New region: BBBBBBBBBB + * A xor B: CCCCCC CCCCCC + */ + H5S_SELECT_NOTB, /* Binary "not" operation for hyperslabs + * (only leave non-overlapped regions in original selection) + * Original region: AAAAAAAAAA + * New region: BBBBBBBBBB + * A not B: CCCCCC + */ + H5S_SELECT_NOTA, /* Binary "not" operation for hyperslabs + * (only leave non-overlapped regions in new selection) + * Original region: AAAAAAAAAA + * New region: BBBBBBBBBB + * B not A: CCCCCC + */ + H5S_SELECT_APPEND, /* Append elements to end of point selection */ + H5S_SELECT_PREPEND, /* Prepend elements to beginning of point selection */ + H5S_SELECT_INVALID /* Invalid upper bound on selection operations */ +} H5S_seloper_t; + +/* Enumerated type for the type of selection */ +typedef enum { + H5S_SEL_ERROR = -1, /* Error */ + H5S_SEL_NONE = 0, /* Nothing selected */ + H5S_SEL_POINTS = 1, /* Sequence of points selected */ + H5S_SEL_HYPERSLABS = 2, /* "New-style" hyperslab selection defined */ + H5S_SEL_ALL = 3, /* Entire extent selected */ + H5S_SEL_N = 4 /*THIS MUST BE LAST */ +}H5S_sel_type; + +#ifdef __cplusplus +extern "C" { +#endif + +/* Functions in H5S.c */ +H5_DLL hid_t H5Screate(H5S_class_t type); +H5_DLL hid_t H5Screate_simple(int rank, const hsize_t dims[], + const hsize_t maxdims[]); +H5_DLL herr_t H5Sset_extent_simple(hid_t space_id, int rank, + const hsize_t dims[], + const hsize_t max[]); +H5_DLL hid_t H5Scopy(hid_t space_id); +H5_DLL herr_t H5Sclose(hid_t space_id); +H5_DLL hssize_t H5Sget_simple_extent_npoints(hid_t space_id); +H5_DLL int H5Sget_simple_extent_ndims(hid_t space_id); +H5_DLL int H5Sget_simple_extent_dims(hid_t space_id, hsize_t dims[], + hsize_t maxdims[]); +H5_DLL htri_t H5Sis_simple(hid_t space_id); +H5_DLL herr_t H5Sset_space(hid_t space_id, int rank, const hsize_t *dims); +H5_DLL hssize_t H5Sget_select_npoints(hid_t spaceid); +H5_DLL herr_t H5Sselect_hyperslab(hid_t space_id, H5S_seloper_t op, + const hssize_t start[], + const hsize_t _stride[], + const hsize_t count[], + const hsize_t _block[]); +#ifdef NEW_HYPERSLAB_API +H5_DLL hid_t H5Scombine_hyperslab(hid_t space_id, H5S_seloper_t op, + const hssize_t start[], + const hsize_t _stride[], + const hsize_t count[], + const hsize_t _block[]); +H5_DLL herr_t H5Sselect_select(hid_t space1_id, H5S_seloper_t op, + hid_t space2_id); +H5_DLL hid_t H5Scombine_select(hid_t space1_id, H5S_seloper_t op, + hid_t space2_id); +#endif /* NEW_HYPERSLAB_API */ +H5_DLL herr_t H5Sselect_elements(hid_t space_id, H5S_seloper_t op, + size_t num_elemn, + const hssize_t **coord); +H5_DLL H5S_class_t H5Sget_simple_extent_type(hid_t space_id); +H5_DLL herr_t H5Sset_extent_none(hid_t space_id); +H5_DLL herr_t H5Sextent_copy(hid_t dst_id,hid_t src_id); +H5_DLL herr_t H5Sselect_all(hid_t spaceid); +H5_DLL herr_t H5Sselect_none(hid_t spaceid); +H5_DLL herr_t H5Soffset_simple(hid_t space_id, const hssize_t *offset); +H5_DLL htri_t H5Sselect_valid(hid_t spaceid); +H5_DLL hssize_t H5Sget_select_hyper_nblocks(hid_t spaceid); +H5_DLL hssize_t H5Sget_select_elem_npoints(hid_t spaceid); +H5_DLL herr_t H5Sget_select_hyper_blocklist(hid_t spaceid, hsize_t startblock, hsize_t numblocks, hsize_t *buf); +H5_DLL herr_t H5Sget_select_elem_pointlist(hid_t spaceid, hsize_t startpoint, hsize_t numpoints, hsize_t *buf); +#ifdef H5_WANT_H5_V1_4_COMPAT +H5_DLL herr_t H5Sget_select_bounds(hid_t spaceid, hsize_t *start, hsize_t *end); +#else /* H5_WANT_H5_V1_4_COMPAT */ +H5_DLL herr_t H5Sget_select_bounds(hid_t spaceid, hssize_t *start, hssize_t *end); +#endif /* H5_WANT_H5_V1_4_COMPAT */ +H5_DLL H5S_sel_type H5Sget_select_type(hid_t spaceid); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/cygwin/include/H5Tpublic.h b/libs/cygwin/include/H5Tpublic.h new file mode 100755 index 0000000..8097546 --- /dev/null +++ b/libs/cygwin/include/H5Tpublic.h @@ -0,0 +1,566 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This file contains public declarations for the H5T module. + */ +#ifndef _H5Tpublic_H +#define _H5Tpublic_H + +/* Public headers needed by this file */ +#include "H5public.h" +#include "H5Ipublic.h" + +#define HOFFSET(S,M) (offsetof(S,M)) + +/* These are the various classes of data types */ +/* If this goes over 16 types (0-15), the file format will need to change) */ +typedef enum H5T_class_t { + H5T_NO_CLASS = -1, /*error */ + H5T_INTEGER = 0, /*integer types */ + H5T_FLOAT = 1, /*floating-point types */ + H5T_TIME = 2, /*date and time types */ + H5T_STRING = 3, /*character string types */ + H5T_BITFIELD = 4, /*bit field types */ + H5T_OPAQUE = 5, /*opaque types */ + H5T_COMPOUND = 6, /*compound types */ + H5T_REFERENCE = 7, /*reference types */ + H5T_ENUM = 8, /*enumeration types */ + H5T_VLEN = 9, /*Variable-Length types */ + H5T_ARRAY = 10, /*Array types */ + + H5T_NCLASSES /*this must be last */ +} H5T_class_t; + +/* Byte orders */ +typedef enum H5T_order_t { + H5T_ORDER_ERROR = -1, /*error */ + H5T_ORDER_LE = 0, /*little endian */ + H5T_ORDER_BE = 1, /*bit endian */ + H5T_ORDER_VAX = 2, /*VAX mixed endian */ + H5T_ORDER_NONE = 3 /*no particular order (strings, bits,..) */ + /*H5T_ORDER_NONE must be last */ +} H5T_order_t; + +/* Types of integer sign schemes */ +typedef enum H5T_sign_t { + H5T_SGN_ERROR = -1, /*error */ + H5T_SGN_NONE = 0, /*this is an unsigned type */ + H5T_SGN_2 = 1, /*two's complement */ + + H5T_NSGN = 2 /*this must be last! */ +} H5T_sign_t; + +/* Floating-point normalization schemes */ +typedef enum H5T_norm_t { + H5T_NORM_ERROR = -1, /*error */ + H5T_NORM_IMPLIED = 0, /*msb of mantissa isn't stored, always 1 */ + H5T_NORM_MSBSET = 1, /*msb of mantissa is always 1 */ + H5T_NORM_NONE = 2 /*not normalized */ + /*H5T_NORM_NONE must be last */ +} H5T_norm_t; + +/* + * Character set to use for text strings. Do not change these values since + * they appear in HDF5 files! + */ +typedef enum H5T_cset_t { + H5T_CSET_ERROR = -1, /*error */ + H5T_CSET_ASCII = 0, /*US ASCII */ + H5T_CSET_RESERVED_1 = 1, /*reserved for later use */ + H5T_CSET_RESERVED_2 = 2, /*reserved for later use */ + H5T_CSET_RESERVED_3 = 3, /*reserved for later use */ + H5T_CSET_RESERVED_4 = 4, /*reserved for later use */ + H5T_CSET_RESERVED_5 = 5, /*reserved for later use */ + H5T_CSET_RESERVED_6 = 6, /*reserved for later use */ + H5T_CSET_RESERVED_7 = 7, /*reserved for later use */ + H5T_CSET_RESERVED_8 = 8, /*reserved for later use */ + H5T_CSET_RESERVED_9 = 9, /*reserved for later use */ + H5T_CSET_RESERVED_10 = 10, /*reserved for later use */ + H5T_CSET_RESERVED_11 = 11, /*reserved for later use */ + H5T_CSET_RESERVED_12 = 12, /*reserved for later use */ + H5T_CSET_RESERVED_13 = 13, /*reserved for later use */ + H5T_CSET_RESERVED_14 = 14, /*reserved for later use */ + H5T_CSET_RESERVED_15 = 15 /*reserved for later use */ +} H5T_cset_t; +#define H5T_NCSET 1 /*Number of character sets actually defined */ + +/* + * Type of padding to use in character strings. Do not change these values + * since they appear in HDF5 files! + */ +typedef enum H5T_str_t { + H5T_STR_ERROR = -1, /*error */ + H5T_STR_NULLTERM = 0, /*null terminate like in C */ + H5T_STR_NULLPAD = 1, /*pad with nulls */ + H5T_STR_SPACEPAD = 2, /*pad with spaces like in Fortran */ + H5T_STR_RESERVED_3 = 3, /*reserved for later use */ + H5T_STR_RESERVED_4 = 4, /*reserved for later use */ + H5T_STR_RESERVED_5 = 5, /*reserved for later use */ + H5T_STR_RESERVED_6 = 6, /*reserved for later use */ + H5T_STR_RESERVED_7 = 7, /*reserved for later use */ + H5T_STR_RESERVED_8 = 8, /*reserved for later use */ + H5T_STR_RESERVED_9 = 9, /*reserved for later use */ + H5T_STR_RESERVED_10 = 10, /*reserved for later use */ + H5T_STR_RESERVED_11 = 11, /*reserved for later use */ + H5T_STR_RESERVED_12 = 12, /*reserved for later use */ + H5T_STR_RESERVED_13 = 13, /*reserved for later use */ + H5T_STR_RESERVED_14 = 14, /*reserved for later use */ + H5T_STR_RESERVED_15 = 15 /*reserved for later use */ +} H5T_str_t; +#define H5T_NSTR 3 /*num H5T_str_t types actually defined */ + +/* Type of padding to use in other atomic types */ +typedef enum H5T_pad_t { + H5T_PAD_ERROR = -1, /*error */ + H5T_PAD_ZERO = 0, /*always set to zero */ + H5T_PAD_ONE = 1, /*always set to one */ + H5T_PAD_BACKGROUND = 2, /*set to background value */ + + H5T_NPAD = 3 /*THIS MUST BE LAST */ +} H5T_pad_t; + +/* Commands sent to conversion functions */ +typedef enum H5T_cmd_t { + H5T_CONV_INIT = 0, /*query and/or initialize private data */ + H5T_CONV_CONV = 1, /*convert data from source to dest data type */ + H5T_CONV_FREE = 2 /*function is being removed from path */ +} H5T_cmd_t; + +/* How is the `bkg' buffer used by the conversion function? */ +typedef enum H5T_bkg_t { + H5T_BKG_NO = 0, /*background buffer is not needed, send NULL */ + H5T_BKG_TEMP = 1, /*bkg buffer used as temp storage only */ + H5T_BKG_YES = 2 /*init bkg buf with data before conversion */ +} H5T_bkg_t; + +/* Type conversion client data */ +typedef struct H5T_cdata_t { + H5T_cmd_t command;/*what should the conversion function do? */ + H5T_bkg_t need_bkg;/*is the background buffer needed? */ + hbool_t recalc; /*recalculate private data */ + void *priv; /*private data */ +} H5T_cdata_t; + +/* Conversion function persistence */ +typedef enum H5T_pers_t { + H5T_PERS_DONTCARE = -1, /*wild card */ + H5T_PERS_HARD = 0, /*hard conversion function */ + H5T_PERS_SOFT = 1 /*soft conversion function */ +} H5T_pers_t; + +/* The order to retrieve atomic native datatype */ +typedef enum H5T_direction_t { + H5T_DIR_DEFAULT = 0, /*default direction is inscendent */ + H5T_DIR_ASCEND = 1, /*in inscendent order */ + H5T_DIR_DESCEND = 2 /*in descendent order */ +} H5T_direction_t; + +/* Variable Length Datatype struct in memory */ +/* (This is only used for VL sequences, not VL strings, which are stored in char *'s) */ +typedef struct { + size_t len; /* Length of VL data (in base type units) */ + void *p; /* Pointer to VL data */ +} hvl_t; + +/* Variable Length String information */ +#define H5T_VARIABLE ((size_t)(-1)) /* Indicate that a string is variable length (null-terminated in C, instead of fixed length) */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* All data type conversion functions are... */ +typedef herr_t (*H5T_conv_t) (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, size_t buf_stride, size_t bkg_stride, void *buf, + void *bkg, hid_t dset_xfer_plist); + +/* + * If an error occurs during a data type conversion then the function + * registered with H5Tset_overflow() is called. It's arguments are the + * source and destination data types, a buffer which has the source value, + * and a buffer to receive an optional result for the overflow conversion. + * If the overflow handler chooses a value for the result it should return + * non-negative; otherwise the hdf5 library will choose an appropriate + * result. + */ +typedef herr_t (*H5T_overflow_t)(hid_t src_id, hid_t dst_id, + void *src_buf, void *dst_buf); + + +/* When this header is included from H5Tprivate.h, don't make calls to H5open() */ +#undef H5OPEN +#ifndef _H5Tprivate_H +#define H5OPEN H5open(), +#else /* _H5Tprivate_H */ +#define H5OPEN +#endif /* _H5Tprivate_H */ + +/* + * The IEEE floating point types in various byte orders. + */ +#define H5T_IEEE_F32BE (H5OPEN H5T_IEEE_F32BE_g) +#define H5T_IEEE_F32LE (H5OPEN H5T_IEEE_F32LE_g) +#define H5T_IEEE_F64BE (H5OPEN H5T_IEEE_F64BE_g) +#define H5T_IEEE_F64LE (H5OPEN H5T_IEEE_F64LE_g) +H5_DLLVAR hid_t H5T_IEEE_F32BE_g; +H5_DLLVAR hid_t H5T_IEEE_F32LE_g; +H5_DLLVAR hid_t H5T_IEEE_F64BE_g; +H5_DLLVAR hid_t H5T_IEEE_F64LE_g; + +/* + * These are "standard" types. For instance, signed (2's complement) and + * unsigned integers of various sizes and byte orders. + */ +#define H5T_STD_I8BE (H5OPEN H5T_STD_I8BE_g) +#define H5T_STD_I8LE (H5OPEN H5T_STD_I8LE_g) +#define H5T_STD_I16BE (H5OPEN H5T_STD_I16BE_g) +#define H5T_STD_I16LE (H5OPEN H5T_STD_I16LE_g) +#define H5T_STD_I32BE (H5OPEN H5T_STD_I32BE_g) +#define H5T_STD_I32LE (H5OPEN H5T_STD_I32LE_g) +#define H5T_STD_I64BE (H5OPEN H5T_STD_I64BE_g) +#define H5T_STD_I64LE (H5OPEN H5T_STD_I64LE_g) +#define H5T_STD_U8BE (H5OPEN H5T_STD_U8BE_g) +#define H5T_STD_U8LE (H5OPEN H5T_STD_U8LE_g) +#define H5T_STD_U16BE (H5OPEN H5T_STD_U16BE_g) +#define H5T_STD_U16LE (H5OPEN H5T_STD_U16LE_g) +#define H5T_STD_U32BE (H5OPEN H5T_STD_U32BE_g) +#define H5T_STD_U32LE (H5OPEN H5T_STD_U32LE_g) +#define H5T_STD_U64BE (H5OPEN H5T_STD_U64BE_g) +#define H5T_STD_U64LE (H5OPEN H5T_STD_U64LE_g) +#define H5T_STD_B8BE (H5OPEN H5T_STD_B8BE_g) +#define H5T_STD_B8LE (H5OPEN H5T_STD_B8LE_g) +#define H5T_STD_B16BE (H5OPEN H5T_STD_B16BE_g) +#define H5T_STD_B16LE (H5OPEN H5T_STD_B16LE_g) +#define H5T_STD_B32BE (H5OPEN H5T_STD_B32BE_g) +#define H5T_STD_B32LE (H5OPEN H5T_STD_B32LE_g) +#define H5T_STD_B64BE (H5OPEN H5T_STD_B64BE_g) +#define H5T_STD_B64LE (H5OPEN H5T_STD_B64LE_g) +#define H5T_STD_REF_OBJ (H5OPEN H5T_STD_REF_OBJ_g) +#define H5T_STD_REF_DSETREG (H5OPEN H5T_STD_REF_DSETREG_g) +H5_DLLVAR hid_t H5T_STD_I8BE_g; +H5_DLLVAR hid_t H5T_STD_I8LE_g; +H5_DLLVAR hid_t H5T_STD_I16BE_g; +H5_DLLVAR hid_t H5T_STD_I16LE_g; +H5_DLLVAR hid_t H5T_STD_I32BE_g; +H5_DLLVAR hid_t H5T_STD_I32LE_g; +H5_DLLVAR hid_t H5T_STD_I64BE_g; +H5_DLLVAR hid_t H5T_STD_I64LE_g; +H5_DLLVAR hid_t H5T_STD_U8BE_g; +H5_DLLVAR hid_t H5T_STD_U8LE_g; +H5_DLLVAR hid_t H5T_STD_U16BE_g; +H5_DLLVAR hid_t H5T_STD_U16LE_g; +H5_DLLVAR hid_t H5T_STD_U32BE_g; +H5_DLLVAR hid_t H5T_STD_U32LE_g; +H5_DLLVAR hid_t H5T_STD_U64BE_g; +H5_DLLVAR hid_t H5T_STD_U64LE_g; +H5_DLLVAR hid_t H5T_STD_B8BE_g; +H5_DLLVAR hid_t H5T_STD_B8LE_g; +H5_DLLVAR hid_t H5T_STD_B16BE_g; +H5_DLLVAR hid_t H5T_STD_B16LE_g; +H5_DLLVAR hid_t H5T_STD_B32BE_g; +H5_DLLVAR hid_t H5T_STD_B32LE_g; +H5_DLLVAR hid_t H5T_STD_B64BE_g; +H5_DLLVAR hid_t H5T_STD_B64LE_g; +H5_DLLVAR hid_t H5T_STD_REF_OBJ_g; +H5_DLLVAR hid_t H5T_STD_REF_DSETREG_g; + +/* + * Types which are particular to Unix. + */ +#define H5T_UNIX_D32BE (H5OPEN H5T_UNIX_D32BE_g) +#define H5T_UNIX_D32LE (H5OPEN H5T_UNIX_D32LE_g) +#define H5T_UNIX_D64BE (H5OPEN H5T_UNIX_D64BE_g) +#define H5T_UNIX_D64LE (H5OPEN H5T_UNIX_D64LE_g) +H5_DLLVAR hid_t H5T_UNIX_D32BE_g; +H5_DLLVAR hid_t H5T_UNIX_D32LE_g; +H5_DLLVAR hid_t H5T_UNIX_D64BE_g; +H5_DLLVAR hid_t H5T_UNIX_D64LE_g; + +/* + * Types particular to the C language. String types use `bytes' instead + * of `bits' as their size. + */ +#define H5T_C_S1 (H5OPEN H5T_C_S1_g) +H5_DLLVAR hid_t H5T_C_S1_g; + +/* + * Types particular to Fortran. + */ +#define H5T_FORTRAN_S1 (H5OPEN H5T_FORTRAN_S1_g) +H5_DLLVAR hid_t H5T_FORTRAN_S1_g; + +/* + * These types are for Intel CPU's. They are little endian with IEEE + * floating point. + */ +#define H5T_INTEL_I8 H5T_STD_I8LE +#define H5T_INTEL_I16 H5T_STD_I16LE +#define H5T_INTEL_I32 H5T_STD_I32LE +#define H5T_INTEL_I64 H5T_STD_I64LE +#define H5T_INTEL_U8 H5T_STD_U8LE +#define H5T_INTEL_U16 H5T_STD_U16LE +#define H5T_INTEL_U32 H5T_STD_U32LE +#define H5T_INTEL_U64 H5T_STD_U64LE +#define H5T_INTEL_B8 H5T_STD_B8LE +#define H5T_INTEL_B16 H5T_STD_B16LE +#define H5T_INTEL_B32 H5T_STD_B32LE +#define H5T_INTEL_B64 H5T_STD_B64LE +#define H5T_INTEL_F32 H5T_IEEE_F32LE +#define H5T_INTEL_F64 H5T_IEEE_F64LE + +/* + * These types are for DEC Alpha CPU's. They are little endian with IEEE + * floating point. + */ +#define H5T_ALPHA_I8 H5T_STD_I8LE +#define H5T_ALPHA_I16 H5T_STD_I16LE +#define H5T_ALPHA_I32 H5T_STD_I32LE +#define H5T_ALPHA_I64 H5T_STD_I64LE +#define H5T_ALPHA_U8 H5T_STD_U8LE +#define H5T_ALPHA_U16 H5T_STD_U16LE +#define H5T_ALPHA_U32 H5T_STD_U32LE +#define H5T_ALPHA_U64 H5T_STD_U64LE +#define H5T_ALPHA_B8 H5T_STD_B8LE +#define H5T_ALPHA_B16 H5T_STD_B16LE +#define H5T_ALPHA_B32 H5T_STD_B32LE +#define H5T_ALPHA_B64 H5T_STD_B64LE +#define H5T_ALPHA_F32 H5T_IEEE_F32LE +#define H5T_ALPHA_F64 H5T_IEEE_F64LE + +/* + * These types are for MIPS cpu's commonly used in SGI systems. They are big + * endian with IEEE floating point. + */ +#define H5T_MIPS_I8 H5T_STD_I8BE +#define H5T_MIPS_I16 H5T_STD_I16BE +#define H5T_MIPS_I32 H5T_STD_I32BE +#define H5T_MIPS_I64 H5T_STD_I64BE +#define H5T_MIPS_U8 H5T_STD_U8BE +#define H5T_MIPS_U16 H5T_STD_U16BE +#define H5T_MIPS_U32 H5T_STD_U32BE +#define H5T_MIPS_U64 H5T_STD_U64BE +#define H5T_MIPS_B8 H5T_STD_B8BE +#define H5T_MIPS_B16 H5T_STD_B16BE +#define H5T_MIPS_B32 H5T_STD_B32BE +#define H5T_MIPS_B64 H5T_STD_B64BE +#define H5T_MIPS_F32 H5T_IEEE_F32BE +#define H5T_MIPS_F64 H5T_IEEE_F64BE + +/* + * The predefined native types. These are the types detected by H5detect and + * they violate the naming scheme a little. Instead of a class name, + * precision and byte order as the last component, they have a C-like type + * name. If the type begins with `U' then it is the unsigned version of the + * integer type; other integer types are signed. The type LLONG corresponds + * to C's `long_long' and LDOUBLE is `long double' (these types might be the + * same as `LONG' and `DOUBLE' respectively. + */ +#define H5T_NATIVE_CHAR (CHAR_MIN?H5T_NATIVE_SCHAR:H5T_NATIVE_UCHAR) +#define H5T_NATIVE_SCHAR (H5OPEN H5T_NATIVE_SCHAR_g) +#define H5T_NATIVE_UCHAR (H5OPEN H5T_NATIVE_UCHAR_g) +#define H5T_NATIVE_SHORT (H5OPEN H5T_NATIVE_SHORT_g) +#define H5T_NATIVE_USHORT (H5OPEN H5T_NATIVE_USHORT_g) +#define H5T_NATIVE_INT (H5OPEN H5T_NATIVE_INT_g) +#define H5T_NATIVE_UINT (H5OPEN H5T_NATIVE_UINT_g) +#define H5T_NATIVE_LONG (H5OPEN H5T_NATIVE_LONG_g) +#define H5T_NATIVE_ULONG (H5OPEN H5T_NATIVE_ULONG_g) +#define H5T_NATIVE_LLONG (H5OPEN H5T_NATIVE_LLONG_g) +#define H5T_NATIVE_ULLONG (H5OPEN H5T_NATIVE_ULLONG_g) +#define H5T_NATIVE_FLOAT (H5OPEN H5T_NATIVE_FLOAT_g) +#define H5T_NATIVE_DOUBLE (H5OPEN H5T_NATIVE_DOUBLE_g) +#define H5T_NATIVE_LDOUBLE (H5OPEN H5T_NATIVE_LDOUBLE_g) +#define H5T_NATIVE_B8 (H5OPEN H5T_NATIVE_B8_g) +#define H5T_NATIVE_B16 (H5OPEN H5T_NATIVE_B16_g) +#define H5T_NATIVE_B32 (H5OPEN H5T_NATIVE_B32_g) +#define H5T_NATIVE_B64 (H5OPEN H5T_NATIVE_B64_g) +#define H5T_NATIVE_OPAQUE (H5OPEN H5T_NATIVE_OPAQUE_g) +#define H5T_NATIVE_HADDR (H5OPEN H5T_NATIVE_HADDR_g) +#define H5T_NATIVE_HSIZE (H5OPEN H5T_NATIVE_HSIZE_g) +#define H5T_NATIVE_HSSIZE (H5OPEN H5T_NATIVE_HSSIZE_g) +#define H5T_NATIVE_HERR (H5OPEN H5T_NATIVE_HERR_g) +#define H5T_NATIVE_HBOOL (H5OPEN H5T_NATIVE_HBOOL_g) +H5_DLLVAR hid_t H5T_NATIVE_SCHAR_g; +H5_DLLVAR hid_t H5T_NATIVE_UCHAR_g; +H5_DLLVAR hid_t H5T_NATIVE_SHORT_g; +H5_DLLVAR hid_t H5T_NATIVE_USHORT_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_g; +H5_DLLVAR hid_t H5T_NATIVE_LONG_g; +H5_DLLVAR hid_t H5T_NATIVE_ULONG_g; +H5_DLLVAR hid_t H5T_NATIVE_LLONG_g; +H5_DLLVAR hid_t H5T_NATIVE_ULLONG_g; +H5_DLLVAR hid_t H5T_NATIVE_FLOAT_g; +H5_DLLVAR hid_t H5T_NATIVE_DOUBLE_g; +H5_DLLVAR hid_t H5T_NATIVE_LDOUBLE_g; +H5_DLLVAR hid_t H5T_NATIVE_B8_g; +H5_DLLVAR hid_t H5T_NATIVE_B16_g; +H5_DLLVAR hid_t H5T_NATIVE_B32_g; +H5_DLLVAR hid_t H5T_NATIVE_B64_g; +H5_DLLVAR hid_t H5T_NATIVE_OPAQUE_g; +H5_DLLVAR hid_t H5T_NATIVE_HADDR_g; +H5_DLLVAR hid_t H5T_NATIVE_HSIZE_g; +H5_DLLVAR hid_t H5T_NATIVE_HSSIZE_g; +H5_DLLVAR hid_t H5T_NATIVE_HERR_g; +H5_DLLVAR hid_t H5T_NATIVE_HBOOL_g; + +/* C9x integer types */ +#define H5T_NATIVE_INT8 (H5OPEN H5T_NATIVE_INT8_g) +#define H5T_NATIVE_UINT8 (H5OPEN H5T_NATIVE_UINT8_g) +#define H5T_NATIVE_INT_LEAST8 (H5OPEN H5T_NATIVE_INT_LEAST8_g) +#define H5T_NATIVE_UINT_LEAST8 (H5OPEN H5T_NATIVE_UINT_LEAST8_g) +#define H5T_NATIVE_INT_FAST8 (H5OPEN H5T_NATIVE_INT_FAST8_g) +#define H5T_NATIVE_UINT_FAST8 (H5OPEN H5T_NATIVE_UINT_FAST8_g) +H5_DLLVAR hid_t H5T_NATIVE_INT8_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT8_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_LEAST8_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST8_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_FAST8_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_FAST8_g; + +#define H5T_NATIVE_INT16 (H5OPEN H5T_NATIVE_INT16_g) +#define H5T_NATIVE_UINT16 (H5OPEN H5T_NATIVE_UINT16_g) +#define H5T_NATIVE_INT_LEAST16 (H5OPEN H5T_NATIVE_INT_LEAST16_g) +#define H5T_NATIVE_UINT_LEAST16 (H5OPEN H5T_NATIVE_UINT_LEAST16_g) +#define H5T_NATIVE_INT_FAST16 (H5OPEN H5T_NATIVE_INT_FAST16_g) +#define H5T_NATIVE_UINT_FAST16 (H5OPEN H5T_NATIVE_UINT_FAST16_g) +H5_DLLVAR hid_t H5T_NATIVE_INT16_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT16_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_LEAST16_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST16_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_FAST16_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_FAST16_g; + +#define H5T_NATIVE_INT32 (H5OPEN H5T_NATIVE_INT32_g) +#define H5T_NATIVE_UINT32 (H5OPEN H5T_NATIVE_UINT32_g) +#define H5T_NATIVE_INT_LEAST32 (H5OPEN H5T_NATIVE_INT_LEAST32_g) +#define H5T_NATIVE_UINT_LEAST32 (H5OPEN H5T_NATIVE_UINT_LEAST32_g) +#define H5T_NATIVE_INT_FAST32 (H5OPEN H5T_NATIVE_INT_FAST32_g) +#define H5T_NATIVE_UINT_FAST32 (H5OPEN H5T_NATIVE_UINT_FAST32_g) +H5_DLLVAR hid_t H5T_NATIVE_INT32_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT32_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_LEAST32_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST32_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_FAST32_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_FAST32_g; + +#define H5T_NATIVE_INT64 (H5OPEN H5T_NATIVE_INT64_g) +#define H5T_NATIVE_UINT64 (H5OPEN H5T_NATIVE_UINT64_g) +#define H5T_NATIVE_INT_LEAST64 (H5OPEN H5T_NATIVE_INT_LEAST64_g) +#define H5T_NATIVE_UINT_LEAST64 (H5OPEN H5T_NATIVE_UINT_LEAST64_g) +#define H5T_NATIVE_INT_FAST64 (H5OPEN H5T_NATIVE_INT_FAST64_g) +#define H5T_NATIVE_UINT_FAST64 (H5OPEN H5T_NATIVE_UINT_FAST64_g) +H5_DLLVAR hid_t H5T_NATIVE_INT64_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT64_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_LEAST64_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST64_g; +H5_DLLVAR hid_t H5T_NATIVE_INT_FAST64_g; +H5_DLLVAR hid_t H5T_NATIVE_UINT_FAST64_g; + +/* Operations defined on all data types */ +H5_DLL hid_t H5Topen(hid_t loc_id, const char *name); +H5_DLL hid_t H5Tcreate(H5T_class_t type, size_t size); +H5_DLL hid_t H5Tcopy(hid_t type_id); +H5_DLL herr_t H5Tclose(hid_t type_id); +H5_DLL htri_t H5Tequal(hid_t type1_id, hid_t type2_id); +H5_DLL herr_t H5Tlock(hid_t type_id); +H5_DLL herr_t H5Tcommit(hid_t loc_id, const char *name, hid_t type_id); +H5_DLL htri_t H5Tcommitted(hid_t type_id); + +/* Operations defined on compound data types */ +H5_DLL herr_t H5Tinsert(hid_t parent_id, const char *name, size_t offset, + hid_t member_id); +H5_DLL herr_t H5Tpack(hid_t type_id); + +/* Operations defined on enumeration data types */ +H5_DLL hid_t H5Tenum_create(hid_t base_id); +H5_DLL herr_t H5Tenum_insert(hid_t type, const char *name, void *value); +H5_DLL herr_t H5Tenum_nameof(hid_t type, void *value, char *name/*out*/, + size_t size); +H5_DLL herr_t H5Tenum_valueof(hid_t type, const char *name, + void *value/*out*/); + +/* Operations defined on variable-length data types */ +H5_DLL hid_t H5Tvlen_create(hid_t base_id); + +/* Operations defined on array data types */ +H5_DLL hid_t H5Tarray_create(hid_t base_id, int ndims, + const hsize_t dim[/* ndims */], const int perm[/* ndims */]); +H5_DLL int H5Tget_array_ndims(hid_t type_id); +H5_DLL int H5Tget_array_dims(hid_t type_id, hsize_t dims[], int perm[]); + +/* Operations defined on opaque data types */ +H5_DLL herr_t H5Tset_tag(hid_t type, const char *tag); +H5_DLL char *H5Tget_tag(hid_t type); + +/* Querying property values */ +H5_DLL hid_t H5Tget_super(hid_t type); +H5_DLL H5T_class_t H5Tget_class(hid_t type_id); +H5_DLL htri_t H5Tdetect_class(hid_t type_id, H5T_class_t cls); +H5_DLL size_t H5Tget_size(hid_t type_id); +H5_DLL H5T_order_t H5Tget_order(hid_t type_id); +H5_DLL size_t H5Tget_precision(hid_t type_id); +H5_DLL int H5Tget_offset(hid_t type_id); +H5_DLL herr_t H5Tget_pad(hid_t type_id, H5T_pad_t *lsb/*out*/, + H5T_pad_t *msb/*out*/); +H5_DLL H5T_sign_t H5Tget_sign(hid_t type_id); +H5_DLL herr_t H5Tget_fields(hid_t type_id, size_t *spos/*out*/, + size_t *epos/*out*/, size_t *esize/*out*/, + size_t *mpos/*out*/, size_t *msize/*out*/); +H5_DLL size_t H5Tget_ebias(hid_t type_id); +H5_DLL H5T_norm_t H5Tget_norm(hid_t type_id); +H5_DLL H5T_pad_t H5Tget_inpad(hid_t type_id); +H5_DLL H5T_str_t H5Tget_strpad(hid_t type_id); +H5_DLL int H5Tget_nmembers(hid_t type_id); +H5_DLL char *H5Tget_member_name(hid_t type_id, int membno); +H5_DLL int H5Tget_member_index(hid_t type_id, const char *name); +H5_DLL size_t H5Tget_member_offset(hid_t type_id, int membno); +H5_DLL H5T_class_t H5Tget_member_class(hid_t type_id, int membno); +H5_DLL hid_t H5Tget_member_type(hid_t type_id, int membno); +H5_DLL herr_t H5Tget_member_value(hid_t type_id, int membno, + void *value/*out*/); +H5_DLL H5T_cset_t H5Tget_cset(hid_t type_id); +H5_DLL htri_t H5Tis_variable_str(hid_t type_id); +H5_DLL hid_t H5Tget_native_type(hid_t type_id, H5T_direction_t direction); + +/* Setting property values */ +H5_DLL herr_t H5Tset_size(hid_t type_id, size_t size); +H5_DLL herr_t H5Tset_order(hid_t type_id, H5T_order_t order); +H5_DLL herr_t H5Tset_precision(hid_t type_id, size_t prec); +H5_DLL herr_t H5Tset_offset(hid_t type_id, size_t offset); +H5_DLL herr_t H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb); +H5_DLL herr_t H5Tset_sign(hid_t type_id, H5T_sign_t sign); +H5_DLL herr_t H5Tset_fields(hid_t type_id, size_t spos, size_t epos, + size_t esize, size_t mpos, size_t msize); +H5_DLL herr_t H5Tset_ebias(hid_t type_id, size_t ebias); +H5_DLL herr_t H5Tset_norm(hid_t type_id, H5T_norm_t norm); +H5_DLL herr_t H5Tset_inpad(hid_t type_id, H5T_pad_t pad); +H5_DLL herr_t H5Tset_cset(hid_t type_id, H5T_cset_t cset); +H5_DLL herr_t H5Tset_strpad(hid_t type_id, H5T_str_t strpad); + +/* Type conversion database */ +H5_DLL herr_t H5Tregister(H5T_pers_t pers, const char *name, hid_t src_id, + hid_t dst_id, H5T_conv_t func); +H5_DLL herr_t H5Tunregister(H5T_pers_t pers, const char *name, hid_t src_id, + hid_t dst_id, H5T_conv_t func); +H5_DLL H5T_conv_t H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata); +H5_DLL herr_t H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts, + void *buf, void *background, hid_t plist_id); +H5_DLL H5T_overflow_t H5Tget_overflow(void); +H5_DLL herr_t H5Tset_overflow(H5T_overflow_t func); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/cygwin/include/H5Zpublic.h b/libs/cygwin/include/H5Zpublic.h new file mode 100755 index 0000000..e4db1b0 --- /dev/null +++ b/libs/cygwin/include/H5Zpublic.h @@ -0,0 +1,185 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* Programmer: Robb Matzke + * Thursday, April 16, 1998 + */ + +#ifndef _H5Zpublic_H +#define _H5Zpublic_H + +/* + * Filter identifiers. Values 0 through 255 are for filters defined by the + * HDF5 library. Values 256 through 511 are available for testing new + * filters. Subsequent values should be obtained from the HDF5 development + * team at hdf5dev@ncsa.uiuc.edu. These values will never change because they + * appear in the HDF5 files. + */ +typedef int H5Z_filter_t; +#define H5Z_FILTER_ERROR (-1) /*no filter */ +#define H5Z_FILTER_NONE 0 /*reserved indefinitely */ +#define H5Z_FILTER_ALL 0 /*symbol to remove all filters in H5Premove_filter */ +#define H5Z_FILTER_DEFLATE 1 /*deflation like gzip */ +#define H5Z_FILTER_SHUFFLE 2 /*shuffle the data */ +#define H5Z_FILTER_FLETCHER32 3 /*fletcher32 checksum of EDC */ +#define H5Z_FILTER_SZIP 4 /*szip compression */ +#define H5Z_FILTER_RESERVED 256 /*filter ids below this value are reserved */ +#define H5Z_FILTER_MAX 65535 /*maximum filter id */ +#define H5Z_MAX_NFILTERS 32 /* Maximum number of filters allowed in a pipeline (should probably be allowed to be an unlimited amount) */ + +/* Flags for filter definition */ +#define H5Z_FLAG_DEFMASK 0x00ff /*definition flag mask */ +#define H5Z_FLAG_MANDATORY 0x0000 /*filter is mandatory */ +#define H5Z_FLAG_OPTIONAL 0x0001 /*filter is optional */ + +/* Additional flags for filter invocation */ +#define H5Z_FLAG_INVMASK 0xff00 /*invocation flag mask */ +#define H5Z_FLAG_REVERSE 0x0100 /*reverse direction; read */ +#define H5Z_FLAG_SKIP_EDC 0x0200 /*skip EDC filters for read */ + +/* Special parameters for szip compression */ +/* [These are aliases for the similar definitions in szlib.h, which we can't + * include directly due to the duplication of various symbols with the zlib.h + * header file] */ +#define H5_SZIP_ALLOW_K13_OPTION_MASK 1 +#define H5_SZIP_CHIP_OPTION_MASK 2 +#define H5_SZIP_EC_OPTION_MASK 4 +#define H5_SZIP_NN_OPTION_MASK 32 +#define H5_SZIP_MAX_PIXELS_PER_BLOCK 32 + +/* Values to decide if EDC is enabled for reading data */ +typedef enum H5Z_EDC_t { + H5Z_ERROR_EDC = -1, /* error value */ + H5Z_DISABLE_EDC = 0, + H5Z_ENABLE_EDC = 1, + H5Z_NO_EDC = 2 /* must be the last */ +} H5Z_EDC_t; + +/* Bit flags for H5Zget_filter_info */ +#define H5Z_FILTER_CONFIG_ENCODE_ENABLED (0x0001) +#define H5Z_FILTER_CONFIG_DECODE_ENABLED (0x0002) + +/* Return values for filter callback function */ +typedef enum H5Z_cb_return_t { + H5Z_CB_ERROR = -1, + H5Z_CB_FAIL = 0, /* I/O should fail if filter fails. */ + H5Z_CB_CONT = 1, /* I/O continues if filter fails. */ + H5Z_CB_NO = 2 +} H5Z_cb_return_t; + +/* Filter callback function definition */ +typedef H5Z_cb_return_t (*H5Z_filter_func_t)(H5Z_filter_t filter, void* buf, + size_t buf_size, void* op_data); + +/* Structure for filter callback property */ +typedef struct H5Z_cb_t { + H5Z_filter_func_t func; + void* op_data; +} H5Z_cb_t; + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Before a dataset gets created, the "can_apply" callbacks for any filters used + * in the dataset creation property list are called + * with the dataset's dataset creation property list, the dataset's datatype and + * a dataspace describing a chunk (for chunked dataset storage). + * + * The "can_apply" callback must determine if the combination of the dataset + * creation property list setting, the datatype and the dataspace represent a + * valid combination to apply this filter to. For example, some cases of + * invalid combinations may involve the filter not operating correctly on + * certain datatypes (or certain datatype sizes), or certain sizes of the chunk + * dataspace. + * + * The "can_apply" callback can be the NULL pointer, in which case, the library + * will assume that it can apply to any combination of dataset creation + * property list values, datatypes and dataspaces. + * + * The "can_apply" callback returns positive a valid combination, zero for an + * invalid combination and negative for an error. + */ +typedef herr_t (*H5Z_can_apply_func_t)(hid_t dcpl_id, hid_t type_id, hid_t space_id); + +/* + * After the "can_apply" callbacks are checked for new datasets, the "set_local" + * callbacks for any filters used in the dataset creation property list are + * called. These callbacks receive the dataset's private copy of the dataset + * creation property list passed in to H5Dcreate (i.e. not the actual property + * list passed in to H5Dcreate) and the datatype ID passed in to H5Dcreate + * (which is not copied and should not be modified) and a dataspace describing + * the chunk (for chunked dataset storage) (which should also not be modified). + * + * The "set_local" callback must set any parameters that are specific to this + * dataset, based on the combination of the dataset creation property list + * values, the datatype and the dataspace. For example, some filters perform + * different actions based on different datatypes (or datatype sizes) or + * different number of dimensions or dataspace sizes. + * + * The "set_local" callback can be the NULL pointer, in which case, the library + * will assume that there are no dataset-specific settings for this filter. + * + * The "set_local" callback must return non-negative on success and negative + * for an error. + */ +typedef herr_t (*H5Z_set_local_func_t)(hid_t dcpl_id, hid_t type_id, hid_t space_id); + +/* + * A filter gets definition flags and invocation flags (defined above), the + * client data array and size defined when the filter was added to the + * pipeline, the size in bytes of the data on which to operate, and pointers + * to a buffer and its allocated size. + * + * The filter should store the result in the supplied buffer if possible, + * otherwise it can allocate a new buffer, freeing the original. The + * allocated size of the new buffer should be returned through the BUF_SIZE + * pointer and the new buffer through the BUF pointer. + * + * The return value from the filter is the number of bytes in the output + * buffer. If an error occurs then the function should return zero and leave + * all pointer arguments unchanged. + */ +typedef size_t (*H5Z_func_t)(unsigned int flags, size_t cd_nelmts, + const unsigned int cd_values[], size_t nbytes, + size_t *buf_size, void **buf); + +/* + * The filter table maps filter identification numbers to structs that + * contain a pointers to the filter function and timing statistics. + */ +typedef struct H5Z_class_t { + H5Z_filter_t id; /* Filter ID number */ + const char *name; /* Comment for debugging */ + H5Z_can_apply_func_t can_apply; /* The "can apply" callback for a filter */ + H5Z_set_local_func_t set_local; /* The "set local" callback for a filter */ + H5Z_func_t filter; /* The actual filter function */ +} H5Z_class_t; + +#ifdef H5_WANT_H5_V1_4_COMPAT +H5_DLL herr_t H5Zregister(H5Z_filter_t id, const char *comment, + H5Z_func_t filter); +#else /* H5_WANT_H5_V1_4_COMPAT */ +H5_DLL herr_t H5Zregister(const H5Z_class_t *cls); +#endif /* H5_WANT_H5_V1_4_COMPAT */ +H5_DLL herr_t H5Zunregister(H5Z_filter_t id); +H5_DLL htri_t H5Zfilter_avail(H5Z_filter_t id); +H5_DLL herr_t H5Zget_filter_info(H5Z_filter_t filter, unsigned int *filter_config_flags); + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/libs/cygwin/include/H5api_adpt.h b/libs/cygwin/include/H5api_adpt.h new file mode 100755 index 0000000..d2af250 --- /dev/null +++ b/libs/cygwin/include/H5api_adpt.h @@ -0,0 +1,66 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * H5api_adpt.h + * Used for the HDF5 dll project + * Created by Patrick Lu on 1/12/99 + */ +#ifndef H5API_ADPT_H +#define H5API_ADPT_H + +#if defined(WIN32) + +#if defined(_HDF5DLL_) +#pragma warning(disable: 4273) /* Disable the dll linkage warnings */ +#define H5_DLL __declspec(dllexport) +#define H5_DLLVAR __declspec(dllexport) +#elif defined(_HDF5USEDLL_) +#define H5_DLL __declspec(dllimport) +#define H5_DLLVAR __declspec(dllimport) +#else +#define H5_DLL +#define H5_DLLVAR extern +#endif /* _HDF5DLL_ */ + +#if defined(_HDF5TESTDLL_) +#pragma warning(disable: 4273) /* Disable the dll linkage warnings */ +#define H5TEST_DLL __declspec(dllexport) +#define H5TEST_DLLVAR __declspec(dllexport) +#elif defined(_HDF5TESTUSEDLL_) +#define H5TEST_DLL __declspec(dllimport) +#define H5TEST_DLLVAR __declspec(dllimport) +#else +#define H5TEST_DLL +#define H5TEST_DLLVAR extern +#endif /* _HDF5TESTDLL_ */ + +/* Added to export or to import C++ APIs - BMR (02-15-2002) */ +#if defined(HDF5_CPPDLL_EXPORTS) /* this name is generated at creation */ +#define H5_DLLCPP __declspec(dllexport) +#elif defined(HDF5CPP_USEDLL) +#define H5_DLLCPP __declspec(dllimport) +#else +#define H5_DLLCPP +#endif /* HDF5_CPPDLL_EXPORTS */ + +#else /*WIN32*/ +#define H5_DLL +#define H5_DLLVAR extern +#define H5_DLLCPP +#define H5TEST_DLL +#define H5TEST_DLLVAR extern +#endif + +#endif /* H5API_ADPT_H */ diff --git a/libs/cygwin/include/H5pubconf.h b/libs/cygwin/include/H5pubconf.h new file mode 100755 index 0000000..647efaa --- /dev/null +++ b/libs/cygwin/include/H5pubconf.h @@ -0,0 +1,537 @@ +/* src/H5config.h. Generated by configure. */ +/* src/H5config.h.in. Generated from configure.in by autoheader. */ + +/* Define if your system can handle converting denormalized floating-point + values. */ +#define H5_CONVERT_DENORMAL_FLOAT 1 + +/* Define if `dev_t' is a scalar */ +#define H5_DEV_T_IS_SCALAR 1 + +/* Define if gettimeofday() populates the tz pointer passed in */ +#define H5_GETTIMEOFDAY_GIVES_TZ 1 + +/* Define if the __attribute__(()) extension is present */ +#define H5_HAVE_ATTRIBUTE 1 + +/* Define to 1 if you have the `BSDgettimeofday' function. */ +/* #undef H5_HAVE_BSDGETTIMEOFDAY */ + +/* Define to 1 if you have the `difftime' function. */ +#define H5_HAVE_DIFFTIME 1 + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef H5_HAVE_DMALLOC_H */ + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_FEATURES_H 1 + +/* Define if support for deflate filter is enabled */ +#define H5_HAVE_FILTER_DEFLATE 1 + +/* Define if support for Fletcher32 checksum is enabled */ +#define H5_HAVE_FILTER_FLETCHER32 1 + +/* Define if support for shuffle filter is enabled */ +#define H5_HAVE_FILTER_SHUFFLE 1 + +/* Define if support for szip filter is enabled */ +/* #undef H5_HAVE_FILTER_SZIP */ + +/* Define to 1 if you have the `fork' function. */ +#define H5_HAVE_FORK 1 + +/* Define to 1 if you have the `frexpf' function. */ +#define H5_HAVE_FREXPF 1 + +/* Define to 1 if you have the `frexpl' function. */ +/* #undef H5_HAVE_FREXPL */ + +/* Define to 1 if you have the `fseek64' function. */ +/* #undef H5_HAVE_FSEEK64 */ + +/* Define if the function stack tracing code is to be compiled in */ +/* #undef H5_HAVE_FUNCSTACK */ + +/* Define if the compiler understand the __FUNCTION__ keyword */ +#define H5_HAVE_FUNCTION 1 + +/* Define if the Globus GASS is defined */ +/* #undef H5_HAVE_GASS */ + +/* Define to 1 if you have the `GetConsoleScreenBufferInfo' function. */ +/* #undef H5_HAVE_GETCONSOLESCREENBUFFERINFO */ + +/* Define to 1 if you have the `gethostname' function. */ +#define H5_HAVE_GETHOSTNAME 1 + +/* Define to 1 if you have the `getpwuid' function. */ +#define H5_HAVE_GETPWUID 1 + +/* Define to 1 if you have the `getrusage' function. */ +#define H5_HAVE_GETRUSAGE 1 + +/* Define to 1 if you have the `gettextinfo' function. */ +/* #undef H5_HAVE_GETTEXTINFO */ + +/* Define to 1 if you have the `gettimeofday' function. */ +#define H5_HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if you have the `get_fpc_csr' function. */ +/* #undef H5_HAVE_GET_FPC_CSR */ + +/* Define to 1 if you have the header file. */ +/* #undef H5_HAVE_GLOBUS_COMMON_H */ + +/* Define if we have GPFS support */ +/* #undef H5_HAVE_GPFS */ + +/* Define to 1 if you have the header file. */ +/* #undef H5_HAVE_GPFS_H */ + +/* Define if library will contain instrumentation to detect correct + optimization operation */ +/* #undef H5_HAVE_INSTRUMENTED_LIBRARY */ + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `ioctl' function. */ +#define H5_HAVE_IOCTL 1 + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_IO_H 1 + +/* Define if it's safe to use `long long' for hsize_t and hssize_t */ +#define H5_HAVE_LARGE_HSIZET 1 + +/* Define to 1 if you have the `crypto' library (-lcrypto). */ +/* #undef H5_HAVE_LIBCRYPTO */ + +/* Define to 1 if you have the `dmalloc' library (-ldmalloc). */ +/* #undef H5_HAVE_LIBDMALLOC */ + +/* Define to 1 if you have the `elf' library (-lelf). */ +/* #undef H5_HAVE_LIBELF */ + +/* Define to 1 if you have the `globus_common' library (-lglobus_common). */ +/* #undef H5_HAVE_LIBGLOBUS_COMMON */ + +/* Define to 1 if you have the `globus_gaa' library (-lglobus_gaa). */ +/* #undef H5_HAVE_LIBGLOBUS_GAA */ + +/* Define to 1 if you have the `globus_gass_cache' library + (-lglobus_gass_cache). */ +/* #undef H5_HAVE_LIBGLOBUS_GASS_CACHE */ + +/* Define to 1 if you have the `globus_gass_file' library + (-lglobus_gass_file). */ +/* #undef H5_HAVE_LIBGLOBUS_GASS_FILE */ + +/* Define to 1 if you have the `globus_gass_transfer' library + (-lglobus_gass_transfer). */ +/* #undef H5_HAVE_LIBGLOBUS_GASS_TRANSFER */ + +/* Define to 1 if you have the `globus_gass_transfer_assist' library + (-lglobus_gass_transfer_assist). */ +/* #undef H5_HAVE_LIBGLOBUS_GASS_TRANSFER_ASSIST */ + +/* Define to 1 if you have the `globus_gss' library (-lglobus_gss). */ +/* #undef H5_HAVE_LIBGLOBUS_GSS */ + +/* Define to 1 if you have the `globus_gss_assist' library + (-lglobus_gss_assist). */ +/* #undef H5_HAVE_LIBGLOBUS_GSS_ASSIST */ + +/* Define to 1 if you have the `globus_io' library (-lglobus_io). */ +/* #undef H5_HAVE_LIBGLOBUS_IO */ + +/* Define to 1 if you have the `lmpe' library (-llmpe). */ +/* #undef H5_HAVE_LIBLMPE */ + +/* Define to 1 if you have the `m' library (-lm). */ +#define H5_HAVE_LIBM 1 + +/* Define to 1 if you have the `mpe' library (-lmpe). */ +/* #undef H5_HAVE_LIBMPE */ + +/* Define to 1 if you have the `mpi' library (-lmpi). */ +/* #undef H5_HAVE_LIBMPI */ + +/* Define to 1 if you have the `mpio' library (-lmpio). */ +/* #undef H5_HAVE_LIBMPIO */ + +/* Define to 1 if you have the `nsl' library (-lnsl). */ +/* #undef H5_HAVE_LIBNSL */ + +/* Define to 1 if you have the `pdb' library (-lpdb). */ +/* #undef H5_HAVE_LIBPDB */ + +/* Define to 1 if you have the `pthread' library (-lpthread). */ +/* #undef H5_HAVE_LIBPTHREAD */ + +/* Define to 1 if you have the `silo' library (-lsilo). */ +/* #undef H5_HAVE_LIBSILO */ + +/* Define to 1 if you have the `socket' library (-lsocket). */ +/* #undef H5_HAVE_LIBSOCKET */ + +/* Define to 1 if you have the `SrbClient' library (-lSrbClient). */ +/* #undef H5_HAVE_LIBSRBCLIENT */ + +/* Define to 1 if you have the `ssl' library (-lssl). */ +/* #undef H5_HAVE_LIBSSL */ + +/* Define to 1 if you have the `sz' library (-lsz). */ +/* #undef H5_HAVE_LIBSZ */ + +/* Define to 1 if you have the `z' library (-lz). */ +#define H5_HAVE_LIBZ 1 + +/* Define to 1 if you have the `longjmp' function. */ +#define H5_HAVE_LONGJMP 1 + +/* Define to 1 if you have the `lseek64' function. */ +/* #undef H5_HAVE_LSEEK64 */ + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_MEMORY_H 1 + +/* Define if we have MPE support */ +/* #undef H5_HAVE_MPE */ + +/* Define to 1 if you have the header file. */ +/* #undef H5_HAVE_MPE_H */ + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_NETINET_TCP_H 1 + +/* Define if we have parallel support */ +/* #undef H5_HAVE_PARALLEL */ + +/* Define to 1 if you have the header file. */ +/* #undef H5_HAVE_PDB_H */ + +/* Define to 1 if you have the header file. */ +/* #undef H5_HAVE_PTHREAD_H */ + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_SETJMP_H 1 + +/* Define to 1 if you have the `setsysinfo' function. */ +/* #undef H5_HAVE_SETSYSINFO */ + +/* Define to 1 if you have the `sigaction' function. */ +#define H5_HAVE_SIGACTION 1 + +/* Define to 1 if you have the `signal' function. */ +#define H5_HAVE_SIGNAL 1 + +/* Define to 1 if you have the `snprintf' function. */ +#define H5_HAVE_SNPRINTF 1 + +/* Define if `socklen_t' is defined */ +#define H5_HAVE_SOCKLEN_T 1 + +/* Define if the SRB is defined */ +/* #undef H5_HAVE_SRB */ + +/* Define to 1 if you have the header file. */ +/* #undef H5_HAVE_SRBCLIENT_H */ + +/* Define if `struct stat' has the `st_blocks' field */ +#define H5_HAVE_STAT_ST_BLOCKS 1 + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_STDDEF_H 1 + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strdup' function. */ +#define H5_HAVE_STRDUP 1 + +/* Define if the stream virtual file driver should be compiled */ +#define H5_HAVE_STREAM 1 + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_STRING_H 1 + +/* Define if `struct text_info' is defined */ +/* #undef H5_HAVE_STRUCT_TEXT_INFO */ + +/* Define if `struct timezone' is defined */ +#define H5_HAVE_STRUCT_TIMEZONE 1 + +/* Define to 1 if `tm_zone' is member of `struct tm'. */ +/* #undef H5_HAVE_STRUCT_TM_TM_ZONE */ + +/* Define if `struct videoconfig' is defined */ +/* #undef H5_HAVE_STRUCT_VIDEOCONFIG */ + +/* Define to 1 if you have the `system' function. */ +#define H5_HAVE_SYSTEM 1 + +/* Define to 1 if you have the header file. */ +/* #undef H5_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef H5_HAVE_SYS_FPU_H */ + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_SYS_IOCTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef H5_HAVE_SYS_PROC_H */ + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_SYS_SOCKET_H 1 + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef H5_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_SYS_TIMEB_H 1 + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef H5_HAVE_SZLIB_H */ + +/* Define if we have thread safe support */ +/* #undef H5_HAVE_THREADSAFE */ + +/* Define if `timezone' is a global variable */ +/* #undef H5_HAVE_TIMEZONE */ + +/* Define if the ioctl TIOCGETD is defined */ +/* #undef H5_HAVE_TIOCGETD */ + +/* Define if the ioctl TIOGWINSZ is defined */ +/* #undef H5_HAVE_TIOCGWINSZ */ + +/* Define if `tm_gmtoff' is a member of `struct tm' */ +/* #undef H5_HAVE_TM_GMTOFF */ + +/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use + `HAVE_STRUCT_TM_TM_ZONE' instead. */ +/* #undef H5_HAVE_TM_ZONE */ + +/* Define to 1 if you don't have `tm_zone' but do have the external array + `tzname'. */ +#define H5_HAVE_TZNAME 1 + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `vsnprintf' function. */ +#define H5_HAVE_VSNPRINTF 1 + +/* Define to 1 if you have the `waitpid' function. */ +#define H5_HAVE_WAITPID 1 + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_WINSOCK_H 1 + +/* Define to 1 if you have the header file. */ +#define H5_HAVE_ZLIB_H 1 + +/* Define to 1 if you have the `_getvideoconfig' function. */ +/* #undef H5_HAVE__GETVIDEOCONFIG */ + +/* Define to 1 if you have the `_scrsize' function. */ +/* #undef H5_HAVE__SCRSIZE */ + +/* Define if `__tm_gmtoff' is a member of `struct tm' */ +/* #undef H5_HAVE___TM_GMTOFF */ + +/* Define if your system's `MPI_File_set_size' function works for files over + 2GB. */ +/* #undef H5_MPI_FILE_SET_SIZE_BIG */ + +/* Define if shared writing must be disabled (CodeWarrior only) */ +/* #undef H5_NO_SHARED_WRITING */ + +/* Define to the address where bug reports for this package should be sent. */ +#define H5_PACKAGE_BUGREPORT "hdfhelp@ncsa.uiuc.edu" + +/* Define to the full name of this package. */ +#define H5_PACKAGE_NAME "HDF5" + +/* Define to the full name and version of this package. */ +#define H5_PACKAGE_STRING "HDF5 1.6.3-patch" + +/* Define to the one symbol short name of this package. */ +#define H5_PACKAGE_TARNAME "hdf5" + +/* Define to the version of this package. */ +#define H5_PACKAGE_VERSION "1.6.3-patch" + +/* Width for printf() for type `long long' or `__int64', use `ll' */ +#define H5_PRINTF_LL_WIDTH "ll" + +/* The size of a `char', as computed by sizeof. */ +#define H5_SIZEOF_CHAR 1 + +/* The size of a `double', as computed by sizeof. */ +#define H5_SIZEOF_DOUBLE 8 + +/* The size of a `float', as computed by sizeof. */ +#define H5_SIZEOF_FLOAT 4 + +/* The size of a `int', as computed by sizeof. */ +#define H5_SIZEOF_INT 4 + +/* The size of a `int16_t', as computed by sizeof. */ +#define H5_SIZEOF_INT16_T 2 + +/* The size of a `int32_t', as computed by sizeof. */ +#define H5_SIZEOF_INT32_T 4 + +/* The size of a `int64_t', as computed by sizeof. */ +#define H5_SIZEOF_INT64_T 8 + +/* The size of a `int8_t', as computed by sizeof. */ +#define H5_SIZEOF_INT8_T 1 + +/* The size of a `int_fast16_t', as computed by sizeof. */ +#define H5_SIZEOF_INT_FAST16_T 4 + +/* The size of a `int_fast32_t', as computed by sizeof. */ +#define H5_SIZEOF_INT_FAST32_T 4 + +/* The size of a `int_fast64_t', as computed by sizeof. */ +#define H5_SIZEOF_INT_FAST64_T 8 + +/* The size of a `int_fast8_t', as computed by sizeof. */ +#define H5_SIZEOF_INT_FAST8_T 1 + +/* The size of a `int_least16_t', as computed by sizeof. */ +#define H5_SIZEOF_INT_LEAST16_T 2 + +/* The size of a `int_least32_t', as computed by sizeof. */ +#define H5_SIZEOF_INT_LEAST32_T 4 + +/* The size of a `int_least64_t', as computed by sizeof. */ +#define H5_SIZEOF_INT_LEAST64_T 8 + +/* The size of a `int_least8_t', as computed by sizeof. */ +#define H5_SIZEOF_INT_LEAST8_T 1 + +/* The size of a `long', as computed by sizeof. */ +#define H5_SIZEOF_LONG 4 + +/* The size of a `long double', as computed by sizeof. */ +#define H5_SIZEOF_LONG_DOUBLE 12 + +/* The size of a `long long', as computed by sizeof. */ +#define H5_SIZEOF_LONG_LONG 8 + +/* The size of a `off_t', as computed by sizeof. */ +#define H5_SIZEOF_OFF_T 8 + +/* The size of a `short', as computed by sizeof. */ +#define H5_SIZEOF_SHORT 2 + +/* The size of a `size_t', as computed by sizeof. */ +#define H5_SIZEOF_SIZE_T 4 + +/* The size of a `ssize_t', as computed by sizeof. */ +#define H5_SIZEOF_SSIZE_T 4 + +/* The size of a `uint16_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT16_T 2 + +/* The size of a `uint32_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT32_T 4 + +/* The size of a `uint64_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT64_T 8 + +/* The size of a `uint8_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT8_T 1 + +/* The size of a `uint_fast16_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT_FAST16_T 4 + +/* The size of a `uint_fast32_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT_FAST32_T 4 + +/* The size of a `uint_fast64_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT_FAST64_T 8 + +/* The size of a `uint_fast8_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT_FAST8_T 1 + +/* The size of a `uint_least16_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT_LEAST16_T 2 + +/* The size of a `uint_least32_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT_LEAST32_T 4 + +/* The size of a `uint_least64_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT_LEAST64_T 8 + +/* The size of a `uint_least8_t', as computed by sizeof. */ +#define H5_SIZEOF_UINT_LEAST8_T 1 + +/* The size of a `__int64', as computed by sizeof. */ +#define H5_SIZEOF___INT64 0 + +/* Define to 1 if you have the ANSI C header files. */ +#define H5_STDC_HEADERS 1 + +/* Define if your system supports pthread_attr_setscope(&attribute, + PTHREAD_SCOPE_SYSTEM) call. */ +/* #undef H5_SYSTEM_SCOPE_THREADS */ + +/* Define if szip encoder is present */ +/* #undef H5_SZIP_CAN_ENCODE */ + +/* Define to 1 if you can safely include both and . */ +#define H5_TIME_WITH_SYS_TIME 1 + +/* Define to 1 if your declares `struct tm'. */ +/* #undef H5_TM_IN_SYS_TIME */ + +/* Define if the HDF5 v1.4 compatibility functions are to be compiled in */ +/* #undef H5_WANT_H5_V1_4_COMPAT */ + +/* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ +/* #undef H5_WORDS_BIGENDIAN */ + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef H5_const */ + +/* Define as `__inline' if that's what the C compiler calls it, or to nothing + if it is not supported. */ +/* #undef H5_inline */ + +/* Define to `long' if does not define. */ +/* #undef H5_off_t */ + +/* Define to `unsigned long' if does not define. */ +/* #undef H5_size_t */ + +/* Define to `long' if does not define. */ +/* #undef H5_ssize_t */ diff --git a/libs/cygwin/include/H5public.h b/libs/cygwin/include/H5public.h new file mode 100755 index 0000000..6853f4b --- /dev/null +++ b/libs/cygwin/include/H5public.h @@ -0,0 +1,216 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* $Id: H5public.h,v 1.1.1.1 2004/11/02 15:54:58 cvs Exp $ */ + + +/* + * This file contains public declarations for the HDF5 module. + */ +#ifndef _H5public_H +#define _H5public_H + +/* Include files for public use... */ +/* + * Since H5pubconf.h is a generated header file, it is messy to try + * to put a #ifndef _H5pubconf_H ... #endif guard in it. + * HDF5 has set an internal rule that it is being included here. + * Source files should NOT include H5pubconf.h directly but include + * it via H5public.h. The #ifndef _H5public_H guard above would + * prevent repeated include. + */ +#include "H5pubconf.h" /*from configure */ + +#ifdef H5_HAVE_FEATURES_H +#include /*for setting POSIX, BSD, etc. compatibility */ +#endif +#ifdef H5_HAVE_SYS_TYPES_H +#include +#endif +#ifdef H5_STDC_HEADERS +# include /*for H5T_NATIVE_CHAR defn in H5Tpublic.h */ +#endif +#ifndef __cplusplus +#ifdef H5_HAVE_STDINT_H +# include /*for C9x types */ +#endif +#endif +#ifdef H5_HAVE_INTTYPES_H +# include /* For uint64_t on some platforms */ +#endif +#ifdef H5_HAVE_STDDEF_H +# include +#endif +#ifdef H5_HAVE_PARALLEL +# include +#ifndef MPI_FILE_NULL /*MPIO may be defined in mpi.h already */ +# include +#endif +#endif + +#ifdef H5_HAVE_GASS /*for Globus GASS I/O */ +#include "globus_common.h" +#include "globus_gass_file.h" +#endif + +#ifdef H5_HAVE_SRB /*for SRB I/O */ +#include +#endif + +#include "H5api_adpt.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Version numbers */ +#define H5_VERS_MAJOR 1 /* For major interface/format changes */ +#define H5_VERS_MINOR 6 /* For minor interface/format changes */ +#define H5_VERS_RELEASE 3 /* For tweaks, bug-fixes, or development */ +#define H5_VERS_SUBRELEASE "patch" /* For pre-releases like snap0 */ + /* Empty string for real releases. */ +#define H5_VERS_INFO "HDF5 library version: 1.6.3-patch" /* Full version string */ + +#define H5check() H5check_version(H5_VERS_MAJOR,H5_VERS_MINOR, \ + H5_VERS_RELEASE) + +/* + * Status return values. Failed integer functions in HDF5 result almost + * always in a negative value (unsigned failing functions sometimes return + * zero for failure) while successfull return is non-negative (often zero). + * The negative failure value is most commonly -1, but don't bet on it. The + * proper way to detect failure is something like: + * + * if ((dset = H5Dopen (file, name))<0) { + * fprintf (stderr, "unable to open the requested dataset\n"); + * } + */ +typedef int herr_t; + + +/* + * Boolean type. Successful return values are zero (false) or positive + * (true). The typical true value is 1 but don't bet on it. Boolean + * functions cannot fail. Functions that return `htri_t' however return zero + * (false), positive (true), or negative (failure). The proper way to test + * for truth from a htri_t function is: + * + * if ((retval = H5Tcommitted(type))>0) { + * printf("data type is committed\n"); + * } else if (!retval) { + * printf("data type is not committed\n"); + * } else { + * printf("error determining whether data type is committed\n"); + * } + */ +typedef unsigned int hbool_t; +typedef int htri_t; + +/* Define the ssize_t type if it not is defined */ +#if H5_SIZEOF_SSIZE_T==0 +/* Undefine this size, we will re-define it in one of the sections below */ +#undef H5_SIZEOF_SSIZE_T +#if H5_SIZEOF_SIZE_T==H5_SIZEOF_INT +typedef int ssize_t; +# define H5_SIZEOF_SSIZE_T H5_SIZEOF_INT +#elif H5_SIZEOF_SIZE_T==H5_SIZEOF_LONG +typedef long ssize_t; +# define H5_SIZEOF_SSIZE_T H5_SIZEOF_LONG +#elif H5_SIZEOF_SIZE_T==H5_SIZEOF_LONG_LONG +typedef long long ssize_t; +# define H5_SIZEOF_SSIZE_T H5_SIZEOF_LONG_LONG +#elif H5_SIZEOF_SIZE_T==H5_SIZEOF___INT64 +typedef __int64 ssize_t; +# define H5_SIZEOF_SSIZE_T H5_SIZEOF___INT64 +#else /* Can't find matching type for ssize_t */ +# error "nothing appropriate for ssize_t" +#endif +#endif + +/* + * The sizes of file objects have their own types defined here. If large + * sizes are enabled then use a 64-bit data type, otherwise use the size of + * memory objects. + */ +#ifdef H5_HAVE_LARGE_HSIZET +# if H5_SIZEOF_LONG_LONG>=8 +typedef unsigned long long hsize_t; +typedef signed long long hssize_t; +# define H5_SIZEOF_HSIZE_T H5_SIZEOF_LONG_LONG +# elif H5_SIZEOF___INT64>=8 +typedef unsigned __int64 hsize_t; +typedef signed __int64 hssize_t; +# define H5_SIZEOF_HSIZE_T H5_SIZEOF___INT64 +# endif +#else /* H5_HAVE_LARGE_HSIZET */ +typedef size_t hsize_t; +typedef ssize_t hssize_t; +# define H5_SIZEOF_HSIZE_T H5_SIZEOF_SIZE_T +#endif /* H5_HAVE_LARGE_HSIZET */ + +/* + * File addresses have there own types. + */ +#if H5_SIZEOF_INT64_T>=8 + typedef uint64_t haddr_t; +# define HADDR_UNDEF ((haddr_t)(int64_t)(-1)) +# ifdef H5_HAVE_PARALLEL +# define HADDR_AS_MPI_TYPE MPI_LONG_LONG_INT +# endif /* H5_HAVE_PARALLEL */ +#elif H5_SIZEOF_INT>=8 + typedef unsigned haddr_t; +# define HADDR_UNDEF ((haddr_t)(-1)) +# ifdef H5_HAVE_PARALLEL +# define HADDR_AS_MPI_TYPE MPI_UNSIGNED +# endif /* H5_HAVE_PARALLEL */ +#elif H5_SIZEOF_LONG>=8 + typedef unsigned long haddr_t; +# define HADDR_UNDEF ((haddr_t)(long)(-1)) +# ifdef H5_HAVE_PARALLEL +# define HADDR_AS_MPI_TYPE MPI_UNSIGNED_LONG +# endif /* H5_HAVE_PARALLEL */ +#elif H5_SIZEOF_LONG_LONG>=8 + typedef unsigned long long haddr_t; +# define HADDR_UNDEF ((haddr_t)(long long)(-1)) +# ifdef H5_HAVE_PARALLEL +# define HADDR_AS_MPI_TYPE MPI_LONG_LONG_INT +# endif /* H5_HAVE_PARALLEL */ +#elif H5_SIZEOF___INT64>=8 + typedef unsigned __int64 haddr_t; +# define HADDR_UNDEF ((haddr_t)(__int64)(-1)) +# ifdef H5_HAVE_PARALLEL +# define HADDR_AS_MPI_TYPE MPI_LONG_LONG_INT +# endif /* H5_HAVE_PARALLEL */ +#else +# error "nothing appropriate for haddr_t" +#endif +#define HADDR_MAX (HADDR_UNDEF-1) + +/* Functions in H5.c */ +H5_DLL herr_t H5open(void); +H5_DLL herr_t H5close(void); +H5_DLL herr_t H5dont_atexit(void); +H5_DLL herr_t H5garbage_collect(void); +H5_DLL herr_t H5set_free_list_limits (int reg_global_lim, int reg_list_lim, + int arr_global_lim, int arr_list_lim, int blk_global_lim, + int blk_list_lim); +H5_DLL herr_t H5get_libversion(unsigned *majnum, unsigned *minnum, + unsigned *relnum); +H5_DLL herr_t H5check_version(unsigned majnum, unsigned minnum, + unsigned relnum); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/cygwin/include/hdf5.h b/libs/cygwin/include/hdf5.h new file mode 100755 index 0000000..76883aa --- /dev/null +++ b/libs/cygwin/include/hdf5.h @@ -0,0 +1,55 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * This is the main public HDF5 include file. Put further information in + * a particular header file and include that here, don't fill this file with + * lots of gunk... + */ +#ifndef _HDF5_H +#define _HDF5_H + +#include "H5public.h" +#include "H5Apublic.h" /* Attributes */ +#include "H5ACpublic.h" /* Metadata cache */ +#include "H5Bpublic.h" /* B-trees */ +#include "H5Dpublic.h" /* Datasets */ +#include "H5Epublic.h" /* Errors */ +#include "H5Fpublic.h" /* Files */ +#include "H5FDpublic.h" /* File drivers */ +#include "H5Gpublic.h" /* Groups */ +#include "H5HGpublic.h" /* Global heaps */ +#include "H5HLpublic.h" /* Local heaps */ +#include "H5Ipublic.h" /* ID management */ +#include "H5MMpublic.h" /* Memory management */ +#include "H5Opublic.h" /* Object headers */ +#include "H5Ppublic.h" /* Property lists */ +#include "H5Rpublic.h" /* References */ +#include "H5Spublic.h" /* Dataspaces */ +#include "H5Tpublic.h" /* Datatypes */ +#include "H5Zpublic.h" /* Data filters */ + +/* Predefined file drivers */ +#include "H5FDcore.h" /* Files stored entirely in memory */ +#include "H5FDfamily.h" /* File families */ +#include "H5FDgass.h" /* Remote files using GASS I/O */ +#include "H5FDlog.h" /* sec2 driver with I/O logging (for debugging) */ +#include "H5FDmpi.h" /* MPI-based file drivers */ +#include "H5FDmulti.h" /* Usage-partitioned file family */ +#include "H5FDsec2.h" /* POSIX unbuffered file I/O */ +#include "H5FDsrb.h" /* Remote access using SRB */ +#include "H5FDstdio.h" /* Standard C buffered I/O */ +#include "H5FDstream.h" /* In-memory files streamed via sockets */ + +#endif diff --git a/libs/cygwin/include/napi.h b/libs/cygwin/include/napi.h new file mode 100755 index 0000000..29b38c3 --- /dev/null +++ b/libs/cygwin/include/napi.h @@ -0,0 +1,315 @@ +/*--------------------------------------------------------------------------- + NeXus - Neutron & X-ray Common Data Format + + Application Program Interface Header File + + Copyright (C) 2000-2003 Mark Koennecke, Uwe Filges + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + For further information, see + + ----------------------------------------------------------------------------*/ + +#ifndef NEXUSAPI +#define NEXUSAPI + +/* NeXus HDF45 */ +#define NEXUS_VERSION "2.0.0." /* major.minor.patch */ + +#define CONSTCHAR char + +#if defined(_WIN32) && defined(_DLL) +# ifdef NX45DLL_EXPORTS +# define NX_EXTERNAL __declspec(dllexport) +# else +# define NX_EXTERNAL __declspec(dllimport) +# endif +#else +# define NX_EXTERNAL +#endif + +typedef void* NXhandle; /* really a pointer to a NexusFile structure */ +typedef int NXstatus; +typedef char NXname[128]; + +typedef enum {NXACC_READ=1, NXACC_RDWR=2, NXACC_CREATE=3, NXACC_CREATE4=4, NXACC_CREATE5=5} NXaccess; + +typedef struct { + char *iname; + int type; + }info_type, *pinfo; + +#define NX_OK 1 +#define NX_ERROR 0 +#define NX_EOD -1 + +#define NX_UNLIMITED -1 + +#define NX_MAXRANK 32 +#define NX_MAXNAMELEN 64 + + + + + +/*------------------------------------------------------------------------- + HDF Datatype values for datatype parameters + in the Nexus API + + NX_FLOAT32 32 bit float + NX_FLOAT64 64 nit float == double + NX_INT8 8 bit integer == byte + NX_UINT8 8 bit unsigned integer + NX_INT16 16 bit integer + NX_UINT16 16 bit unsigned integer + NX_INT32 32 bit integer + NX_UINT32 32 bit unsigned integer + NX_CHAR 8 bit character + +--------------------------------------------------------------------------*/ + + +/* Map NeXus to HDF types */ +#define NX_FLOAT32 5 +#define NX_FLOAT64 6 +#define NX_INT8 20 +#define NX_UINT8 21 +#define NX_INT16 22 +#define NX_UINT16 23 +#define NX_INT32 24 +#define NX_UINT32 25 +#define NX_CHAR 4 + +/* Map NeXus compression methods to HDF compression methods */ +#define NX_COMP_NONE 100 +#define NX_COMP_LZW 200 +#define NX_COMP_RLE 300 +#define NX_COMP_HUF 400 + + +#ifdef HDF4 +#include +#endif + +#ifdef HDF5 +#include +#endif + +typedef struct { +#ifdef HDF4 + int32 iTag; /* HDF4 variable */ + int32 iRef; /* HDF4 variable */ +#endif + +#ifdef HDF5 + char iTag5[1024]; /* HDF5 variable */ + char iRef5[1024]; /* HDF5 variable */ + char iRefd[1024]; /* HDF5 variable */ +#endif + } NXlink; + + + +#define NXMAXSTACK 50 + +#define CONCAT(__a,__b) __a##__b /* token concatenation */ + +#if defined(__unix) || defined(__unix__) || defined (__VMS) + +# ifdef __VMS +# define MANGLE(__arg) __arg +# else +# define MANGLE(__arg) CONCAT(__arg,_) +# endif + +# define CALLING_STYLE /* blank */ + +# define NXopen MANGLE(nxiopen) +# define NXclose MANGLE(nxiclose) +# define NXmakegroup MANGLE(nximakegroup) +# define NXopengroup MANGLE(nxiopengroup) +# define NXclosegroup MANGLE(nxiclosegroup) +# define NXmakedata MANGLE(nximakedata) +# define NXcompmakedata MANGLE(nxicompmakedata) +# define NXcompress MANGLE(nxicompress) +# define NXopendata MANGLE(nxiopendata) +# define NXclosedata MANGLE(nxiclosedata) +# define NXputdata MANGLE(nxiputdata) +# define NXputslab MANGLE(nxiputslab) +# define NXputattr MANGLE(nxiputattr) +# define NXgetdataID MANGLE(nxigetdataid) +# define NXmakelink MANGLE(nximakelink) +# define NXmalloc MANGLE(nximalloc) +# define NXfree MANGLE(nxifree) +# define NXflush MANGLE(nxiflush) + +# define NXgetinfo MANGLE(nxigetinfo) +# define NXgetnextentry MANGLE(nxigetnextentry) +# define NXgetdata MANGLE(nxigetdata) + +# define NXgetslab MANGLE(nxigetslab) +# define NXgetnextattr MANGLE(nxigetnextattr) +# define NXgetattr MANGLE(nxigetattr) +# define NXgetattrinfo MANGLE(nxigetattrinfo) +# define NXgetgroupID MANGLE(nxigetgroupid) +# define NXgetgroupinfo MANGLE(nxigetgroupinfo) +# define NXsameID MANGLE(nxisameid) +# define NXinitgroupdir MANGLE(nxiinitgroupdir) +# define NXinitattrdir MANGLE(nxiinitattrdir) +# define NXsetcache MANGLE(nxisetcache) +/* FORTRAN helpers - for NeXus internal use only */ +# define NXfopen MANGLE(nxifopen) +# define NXfclose MANGLE(nxifclose) +# define NXfflush MANGLE(nxifflush) +# define NXfmakedata MANGLE(nxifmakedata) +# define NXfcompmakedata MANGLE(nxifcompmakedata) +# define NXfcompress MANGLE(nxifcompress) +# define NXfputattr MANGLE(nxifputattr) + +#elif defined(_WIN32) +/* + * START OF WINDOWS SPECIFIC CONFIGURATION + * + * Added by Freddie Akeroyd 9/8/2002 + * + * Various PC calling conventions - you need only uncomment one of the following definitions of MANGLE() + * anlong with the appropriate CALLING_STYLE + * The choice arises because under Windows the default way FORTRAN calls FORTRAN is different + * from the dafault way C calls C, and so when you need to have FORTRAN calling C you must + * force them to use the same convention. Notice the use of "default way" above ... by choice + * of compiler options (or compiler vendor) you may actually have FORTRAN calling in the C way + * etc., so you might need to experiment with the options below until you get no "unresolved symbols" + * + * Choice 1: Should allow both FORTRAN and C NeXus interfaces to work in a "default" setup + * Choice 2: For when choice 1: gives problems and you only require the C interface + * Choice 3: An alternative to 1: which may allow both FORTRAN and C in a non-default setup + */ +# define MANGLE(__arg) __arg /* Choice 1 */ +# define CALLING_STYLE __stdcall /* Choice 1 */ +/* # define MANGLE(__arg) __arg /* Choice 2 */ +/* # define CALLING_STYLE /* Choice 2 */ +/* # define MANGLE(__arg) CONCAT(__arg,_) /* Choice 3 */ +/* # define CALLING_STYLE __stdcall /* Choice 3 */ +/* + * END OF WINDOWS SPECIFIC CONFIGURATION + */ +# define NXopen MANGLE(NXIOPEN) +# define NXclose MANGLE(NXICLOSE) +# define NXflush MANGLE(NXIFLUSH) +# define NXmakegroup MANGLE(NXIMAKEGROUP) +# define NXopengroup MANGLE(NXIOPENGROUP) +# define NXclosegroup MANGLE(NXICLOSEGROUP) +# define NXmakedata MANGLE(NXIMAKEDATA) +# define NXcompress MANGLE(NXICOMPRESS) +# define NXopendata MANGLE(NXIOPENDATA) +# define NXclosedata MANGLE(NXICLOSEDATA) +# define NXgetdata MANGLE(NXIGETDATA) +# define NXgetslab MANGLE(NXIGETSLAB) +# define NXgetattr MANGLE(NXIGETATTR) +# define NXgetdim MANGLE(NXIGETDIM) +# define NXputdata MANGLE(NXIPUTDATA) +# define NXputslab MANGLE(NXIPUTSLAB) +# define NXputattr MANGLE(NXIPUTATTR) +# define NXputdim MANGLE(NXIPUTDIM) +# define NXgetinfo MANGLE(NXIGETINFO) +# define NXgetgroupinfo MANGLE(NXIGETGROUPINFO) +# define NXsameID MANGLE(NXISAMEID) +# define NXinitgroupdir MANGLE(NXIINITGROUPDIR) +# define NXgetnextentry MANGLE(NXIGETNEXTENTRY) +# define NXgetattrinfo MANGLE(NXIGETATTRINFO) +# define NXinitattrdir MANGLE(NXIINITATTRDIR) +# define NXgetnextattr MANGLE(NXIGETNEXTATTR) +# define NXgetgroupID MANGLE(NXIGETGROUPID) +# define NXgetdataID MANGLE(NXIGETDATAID) +# define NXmakelink MANGLE(NXIMAKELINK) +# define NXmalloc MANGLE(NXIMALLOC) +# define NXfree MANGLE(NXIFREE) +/* FORTRAN helpers - for NeXus internal use only */ +# define NXfopen MANGLE(NXIFOPEN) +# define NXfclose MANGLE(NXIFCLOSE) +# define NXfflush MANGLE(NXIFFLUSH) +# define NXfmakedata MANGLE(NXIFMAKEDATA) +# define NXfcompmakedata MANGLE(NXIFCOMPMAKEDATA) +# define NXfcompress MANGLE(NXIFCOMPRESS) +# define NXfputattr MANGLE(NXIFPUTATTR) +#else +# error Cannot compile - unknown operating system +#endif + + +/* + * Standard interface + */ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ +NX_EXTERNAL NXstatus CALLING_STYLE NXopen(CONSTCHAR * filename, NXaccess access_method, NXhandle* pHandle); +NX_EXTERNAL NXstatus CALLING_STYLE NXclose(NXhandle* pHandle); +NX_EXTERNAL NXstatus CALLING_STYLE NXflush(NXhandle* pHandle); + +NX_EXTERNAL NXstatus CALLING_STYLE NXmakegroup (NXhandle handle, CONSTCHAR *name, char* NXclass); +NX_EXTERNAL NXstatus CALLING_STYLE NXopengroup (NXhandle handle, CONSTCHAR *name, char* NXclass); +NX_EXTERNAL NXstatus CALLING_STYLE NXclosegroup(NXhandle handle); + +NX_EXTERNAL NXstatus CALLING_STYLE NXmakedata (NXhandle handle, CONSTCHAR* label, int datatype, int rank, int dim[]); +NX_EXTERNAL NXstatus CALLING_STYLE NXcompmakedata (NXhandle handle, CONSTCHAR* label, int datatype, int rank, int dim[], int comp_typ, int bufsize[]); +NX_EXTERNAL NXstatus CALLING_STYLE NXcompress (NXhandle handle, int compr_type); +NX_EXTERNAL NXstatus CALLING_STYLE NXopendata (NXhandle handle, CONSTCHAR* label); +NX_EXTERNAL NXstatus CALLING_STYLE NXclosedata(NXhandle handle); +NX_EXTERNAL NXstatus CALLING_STYLE NXputdata(NXhandle handle, void* data); + +NX_EXTERNAL NXstatus CALLING_STYLE NXputattr(NXhandle handle, CONSTCHAR* name, void* data, int iDataLen, int iType); +NX_EXTERNAL NXstatus CALLING_STYLE NXputslab(NXhandle handle, void* data, int start[], int size[]); + +NX_EXTERNAL NXstatus CALLING_STYLE NXgetdataID(NXhandle handle, NXlink* pLink); +NX_EXTERNAL NXstatus CALLING_STYLE NXmakelink(NXhandle handle, NXlink* pLink); + +NX_EXTERNAL NXstatus CALLING_STYLE NXgetdata(NXhandle handle, void* data); +NX_EXTERNAL NXstatus CALLING_STYLE NXgetinfo(NXhandle handle, int* rank, int dimension[], int* datatype); +NX_EXTERNAL NXstatus CALLING_STYLE NXgetnextentry(NXhandle handle, NXname name, NXname nxclass, int* datatype); + +NX_EXTERNAL NXstatus CALLING_STYLE NXgetslab(NXhandle handle, void* data, int start[], int size[]); +NX_EXTERNAL NXstatus CALLING_STYLE NXgetnextattr(NXhandle handle, NXname pName, int *iLength, int *iType); +NX_EXTERNAL NXstatus CALLING_STYLE NXgetattr(NXhandle handle, char* name, void* data, int* iDataLen, int* iType); +NX_EXTERNAL NXstatus CALLING_STYLE NXgetattrinfo(NXhandle handle, int* no_items); +NX_EXTERNAL NXstatus CALLING_STYLE NXgetgroupID(NXhandle handle, NXlink* pLink); +NX_EXTERNAL NXstatus CALLING_STYLE NXgetgroupinfo(NXhandle handle, int* no_items, NXname name, NXname nxclass); +NX_EXTERNAL NXstatus CALLING_STYLE NXsameID(NXhandle handle, NXlink* pFirstID, NXlink* pSecondID); + +NX_EXTERNAL NXstatus CALLING_STYLE NXinitgroupdir(NXhandle handle); +NX_EXTERNAL NXstatus CALLING_STYLE NXinitattrdir(NXhandle handle); + +NX_EXTERNAL NXstatus CALLING_STYLE NXmalloc(void** data, int rank, int dimensions[], int datatype); +NX_EXTERNAL NXstatus CALLING_STYLE NXfree(void** data); + + +/*----------------------------------------------------------------------- + A non Nexus standard function to set an error handler +*/ +NX_EXTERNAL void CALLING_STYLE NXMSetError(void *pData, void (*ErrFunc)(void *pD, char *text)); + +/* + another special function for setting the default cache size for HDF-5 +*/ +NX_EXTERNAL NXstatus CALLING_STYLE NXsetcache(long newVal); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /*NEXUSAPI*/ + diff --git a/libs/cygwin/include/napi4.h b/libs/cygwin/include/napi4.h new file mode 100755 index 0000000..d564317 --- /dev/null +++ b/libs/cygwin/include/napi4.h @@ -0,0 +1,68 @@ +/*--------------------------------------------------------------------------- + NeXus - Neutron & X-ray Common Data Format + + Application Program Interface (HDF4) Header File + + Copyright (C) 1997-2002 Mark Koennecke, Przemek Klosowski + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + For further information, see + +----------------------------------------------------------------------------*/ +#define NXSIGNATURE 959697 + +#include "napi4.c" + +/* + * HDF4 interface + */ + + NXstatus CALLING_STYLE NX4open(CONSTCHAR *filename, NXaccess access_method, NXhandle* pHandle); + NXstatus CALLING_STYLE NX4close(NXhandle* pHandle); + NXstatus CALLING_STYLE NX4flush(NXhandle* pHandle); + + NXstatus CALLING_STYLE NX4makegroup (NXhandle handle, CONSTCHAR* Vgroup, char* NXclass); + NXstatus CALLING_STYLE NX4opengroup (NXhandle handle, CONSTCHAR* Vgroup, char* NXclass); + NXstatus CALLING_STYLE NX4closegroup(NXhandle handle); + + NXstatus CALLING_STYLE NX4makedata (NXhandle handle, CONSTCHAR* label, int datatype, int rank, int dim[]); + NXstatus CALLING_STYLE NX4compmakedata (NXhandle handle, CONSTCHAR* label, int datatype, int rank, int dim[], int comp_typ, int bufsize[]); + NXstatus CALLING_STYLE NX4compress (NXhandle handle, int compr_type); + NXstatus CALLING_STYLE NX4opendata (NXhandle handle, CONSTCHAR* label); + + NXstatus CALLING_STYLE NX4closedata(NXhandle handle); + + NXstatus CALLING_STYLE NX4getdata(NXhandle handle, void* data); + NXstatus CALLING_STYLE NX4getslab(NXhandle handle, void* data, int start[], int size[]); + NXstatus CALLING_STYLE NX4getattr(NXhandle handle, char* name, void* data, int* iDataLen, int* iType); + + NXstatus CALLING_STYLE NX4putdata(NXhandle handle, void* data); + NXstatus CALLING_STYLE NX4putslab(NXhandle handle, void* data, int start[], int size[]); + NXstatus CALLING_STYLE NX4putattr(NXhandle handle, CONSTCHAR* name, void* data, int iDataLen, int iType); + + NXstatus CALLING_STYLE NX4getinfo(NXhandle handle, int* rank, int dimension[], int* datatype); + NXstatus CALLING_STYLE NX4getgroupinfo(NXhandle handle, int* no_items, NXname name, NXname nxclass); + NXstatus CALLING_STYLE NX4initgroupdir(NXhandle handle); + NXstatus CALLING_STYLE NX4getnextentry(NXhandle handle, NXname name, NXname nxclass, int* datatype); + NXstatus CALLING_STYLE NX4getattrinfo(NXhandle handle, int* no_items); + NXstatus CALLING_STYLE NX4initattrdir(NXhandle handle); + NXstatus CALLING_STYLE NX4getnextattr(NXhandle handle, NXname pName, int *iLength, int *iType); + + NXstatus CALLING_STYLE NX4getgroupID(NXhandle handle, NXlink* pLink); + NXstatus CALLING_STYLE NX4getdataID(NXhandle handle, NXlink* pLink); + NXstatus CALLING_STYLE NX4makelink(NXhandle handle, NXlink* pLink); + NXstatus CALLING_STYLE NX4sameID(NXhandle handle, NXlink* pFirstID, NXlink* pSecondID); + diff --git a/libs/cygwin/include/napi5.h b/libs/cygwin/include/napi5.h new file mode 100755 index 0000000..61375e9 --- /dev/null +++ b/libs/cygwin/include/napi5.h @@ -0,0 +1,72 @@ +/*--------------------------------------------------------------------------- + NeXus - Neutron & X-ray Common Data Format + + Application Program Interface (HDF5) Header File + + Copyright (C) 1997-2002 Mark Koennecke, Przemek Klosowski + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + For further information, see + +----------------------------------------------------------------------------*/ +#define NX5SIGNATURE 959695 + +#include +#include "napi5.c" + +/* HDF5 interface */ + + NXstatus CALLING_STYLE NX5open(CONSTCHAR *filename, NXaccess access_method, NXhandle* pHandle); + NXstatus CALLING_STYLE NX5close(NXhandle* pHandle); + NXstatus CALLING_STYLE NX5flush(NXhandle* pHandle); + + NXstatus CALLING_STYLE NX5makegroup (NXhandle handle, CONSTCHAR *name, char* NXclass); + NXstatus CALLING_STYLE NX5opengroup (NXhandle handle, CONSTCHAR *name, char* NXclass); + NXstatus CALLING_STYLE NX5closegroup(NXhandle handle); + + NXstatus CALLING_STYLE NX5makedata (NXhandle handle, CONSTCHAR* label, int datatype, int rank, int dim[]); + NXstatus CALLING_STYLE NX5compmakedata (NXhandle handle, CONSTCHAR* label, int datatype, int rank, int dim[], int comp_typ, int bufsize[]); + NXstatus CALLING_STYLE NX5compress (NXhandle handle, int compr_type); + NXstatus CALLING_STYLE NX5opendata (NXhandle handle, CONSTCHAR* label); + NXstatus CALLING_STYLE NX5closedata(NXhandle handle); + NXstatus CALLING_STYLE NX5putdata(NXhandle handle, void* data); + + NXstatus CALLING_STYLE NX5putattr(NXhandle handle, CONSTCHAR* name, void* data, int iDataLen, int iType); + NXstatus CALLING_STYLE NX5putslab(NXhandle handle, void* data, int start[], int size[]); + + NXstatus CALLING_STYLE NX5getdataID(NXhandle handle, NXlink* pLink); + NXstatus CALLING_STYLE NX5makelink(NXhandle handle, NXlink* pLink); + + NXstatus CALLING_STYLE NX5getdata(NXhandle handle, void* data); + NXstatus CALLING_STYLE NX5getinfo(NXhandle handle, int* rank, int dimension[], int* datatype); + NXstatus CALLING_STYLE NX5getnextentry(NXhandle handle, NXname name, NXname nxclass, int* datatype); + + NXstatus CALLING_STYLE NX5getslab(NXhandle handle, void* data, int start[], int size[]); + NXstatus CALLING_STYLE NX5getnextattr(NXhandle handle, NXname pName, int *iLength, int *iType); + NXstatus CALLING_STYLE NX5getattr(NXhandle handle, char* name, void* data, int* iDataLen, int* iType); + NXstatus CALLING_STYLE NX5getattrinfo(NXhandle handle, int* no_items); + NXstatus CALLING_STYLE NX5getgroupID(NXhandle handle, NXlink* pLink); + NXstatus CALLING_STYLE NX5getgroupinfo(NXhandle handle, int* no_items, NXname name, NXname nxclass); + NXstatus CALLING_STYLE NX5sameID(NXhandle handle, NXlink* pFirstID, NXlink* pSecondID); + + NXstatus CALLING_STYLE NX5initgroupdir(NXhandle handle); + NXstatus CALLING_STYLE NX5initattrdir(NXhandle handle); + + +herr_t nxgroup_info(hid_t loc_id, const char *name, void *op_data); +herr_t attr_info(hid_t loc_id, const char *name, void *opdata); +herr_t group_info(hid_t loc_id, const char *name, void *opdata); + diff --git a/libs/cygwin/include/napif.inc b/libs/cygwin/include/napif.inc new file mode 100755 index 0000000..185c947 --- /dev/null +++ b/libs/cygwin/include/napif.inc @@ -0,0 +1,90 @@ +C------------------------------------------------------------------------------ +C NeXus - Neutron & X-ray Common Data Format +C +C Application Program Interface (Fortran 77) Header File +C +C Copyright (C) 1997-2002 Freddie Akeroyd, Mark Koennecke +C +C This library is free software; you can redistribute it and/or +C modify it under the terms of the GNU Lesser General Public +C License as published by the Free Software Foundation; either +C version 2 of the License, or (at your option) any later version. +C +C This library is distributed in the hope that it will be useful, +C but WITHOUT ANY WARRANTY; without even the implied warranty of +C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +C Lesser General Public License for more details. +C +C You should have received a copy of the GNU Lesser General Public +C License along with this library; if not, write to the Free Software +C Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +C +C For further information, see +C +C $Id: napif.inc,v 1.1.1.1 2004/11/02 15:54:58 cvs Exp $ +C------------------------------------------------------------------------------ + +C *** Version of NeXus interface - should be consistent with napi.h! + CHARACTER*5 NEXUS_VERSION + PARAMETER(NEXUS_VERSION='2.0.0') +C *** NXaccess enum - access modes for NXopen + INTEGER NXACC_READ,NXACC_RDWR,NXACC_CREATE, + + NXACC_CREATE4,NXACC_CREATE5 + PARAMETER(NXACC_READ=1,NXACC_RDWR=2,NXACC_CREATE=3, + + NXACC_CREATE4=4,NXACC_CREATE5=5) +C *** NXHANDLESIZE should be the size of an INTEGER*4 array that is (at least) +C *** large enough to hold an NXhandle structure + INTEGER NXHANDLESIZE + PARAMETER(NXHANDLESIZE=600) +C *** NXLINKSIZE is (at least) the size of an INTEGER*4 array that can hold +C *** an NXlink structure: we'll assume 64bit alignment of structure members for safety + INTEGER NXLINKSIZE + PARAMETER(NXLINKSIZE=1028) +C *** Possible NXstatus values - these are returned by all NX routines + INTEGER NX_OK,NX_ERROR,NX_EOD + PARAMETER(NX_OK=1,NX_ERROR=0,NX_EOD=-1) +C *** Maximum values defined in HDF standard + INTEGER NX_MAXRANK,NX_MAXNAMELEN + PARAMETER(NX_MAXRANK=32,NX_MAXNAMELEN=64) +C *** HDF datatypes used by Nexus - see hntdefs.h in HDF distribution + INTEGER DFNT_FLOAT32,DFNT_FLOAT64,DFNT_INT8,DFNT_UINT8,DFNT_INT16, + + DFNT_UINT16,DFNT_INT32,DFNT_UINT32,DFNT_UCHAR8,DFNT_CHAR8 + PARAMETER(DFNT_FLOAT32=5,DFNT_FLOAT64=6,DFNT_INT8=20, + + DFNT_UINT8=21,DFNT_INT16=22,DFNT_UINT16=23, + + DFNT_INT32=24,DFNT_UINT32=25,DFNT_UCHAR8=3, + + DFNT_CHAR8=4) +C *** NeXus names for HDF parameters + INTEGER NX_FLOAT32,NX_FLOAT64,NX_INT8,NX_UINT8,NX_INT16, + + NX_UINT16,NX_INT32,NX_UINT32,NX_CHAR + PARAMETER(NX_FLOAT32=5,NX_FLOAT64=6,NX_INT8=20, + + NX_UINT8=21,NX_INT16=22,NX_UINT16=23, + + NX_INT32=24,NX_UINT32=25,NX_CHAR=4) +C**** NeXus compression schemes + INTEGER NX_COMP_NONE, NX_COMP_LZW, NX_COMP_HUF, NX_COMP_RLE + PARAMETER(NX_COMP_NONE=100,NX_COMP_LZW=200,NX_COMP_RLE=300, + + NX_COMP_HUF=400) +C**** NeXus Unlimited Dimension + INTEGER NX_UNLIMITED + PARAMETER (NX_UNLIMITED=-1) + INTEGER NXOPEN, NXCLOSE, NXMAKEGROUP, NXOPENGROUP, NXCLOSEGROUP, + + NXMAKEDATA, NXOPENDATA, NXCLOSEDATA, NXGETDATA, + + NXGETCHARDATA, NXGETSLAB, NXGETATTR, NXGETCHARATTR, + + NXGETDIM, NXPUTDATA, NXPUTCHARDATA, NXPUTSLAB, + + NXPUTATTR, NXPUTCHARATTR, NXPUTDIM, NXGETINFO, + + NXGETNEXTENTRY, NXGETNEXTATTR, NXGETGROUPID, NXMAKELINK, + + NXGETGROUPINFO, NXINITGROUPDIR, NXGETATTRINFO, + + NXINITATTRDIR, NXFLUSH, NXCOMPMAKEDATA + LOGICAL NXSAMEID + EXTERNAL NXOPEN, NXCLOSE, NXMAKEGROUP, NXOPENGROUP, NXCLOSEGROUP, + + NXMAKEDATA, NXOPENDATA, NXCLOSEDATA, NXGETDATA, + + NXGETCHARDATA, NXGETSLAB, NXGETATTR, NXGETCHARATTR, + + NXGETDIM, NXPUTDATA, NXPUTCHARDATA, NXPUTSLAB, + + NXPUTATTR, NXPUTCHARATTR, NXPUTDIM, NXGETINFO, + + NXGETNEXTENTRY, NXGETNEXTATTR, NXGETGROUPID, NXMAKELINK, + + NXGETGROUPINFO, NXINITGROUPDIR, NXGETATTRINFO, + + NXINITATTRDIR, NXFLUSH, NXCOMPMAKEDATA, NXSAMEID + + + + + diff --git a/libs/cygwin/include/napif__.inc b/libs/cygwin/include/napif__.inc new file mode 100755 index 0000000..070920c --- /dev/null +++ b/libs/cygwin/include/napif__.inc @@ -0,0 +1,89 @@ +C------------------------------------------------------------------------------ +C NeXus - Neutron & X-ray Common Data Format +C +C Application Program Interface (Fortran 77) Header File +C +C Copyright (C) 1997-2002 Freddie Akeroyd, Mark Koennecke +C +C This library is free software; you can redistribute it and/or +C modify it under the terms of the GNU Lesser General Public +C License as published by the Free Software Foundation; either +C version 2 of the License, or (at your option) any later version. +C +C This library is distributed in the hope that it will be useful, +C but WITHOUT ANY WARRANTY; without even the implied warranty of +C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +C Lesser General Public License for more details. +C +C You should have received a copy of the GNU Lesser General Public +C License along with this library; if not, write to the Free Software +C Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +C +C For further information, see +C +C $Id: napif__.inc,v 1.1.1.1 2004/11/02 15:54:58 cvs Exp $ +C------------------------------------------------------------------------------ + +C *** Version of NeXus interface - should be consistent with napi.h! + CHARACTER*5 NEXUS_VERSION + PARAMETER(NEXUS_VERSION='2.0.0') +C *** NXaccess enum - access modes for NXopen + INTEGER NXACC_READ,NXACC_RDWR,NXACC_CREATE, NXACC_CREATE5 + PARAMETER(NXACC_READ=1,NXACC_RDWR=2,NXACC_CREATE=3, + + NXACC_CREATE4=4,NXACC_CREATE5=5) +C *** NXHANDLESIZE should be the size of an INTEGER*4 array that is (at least) +C *** large enough to hold an NXhandle structure + INTEGER NXHANDLESIZE + PARAMETER(NXHANDLESIZE=600) +C *** NXLINKSIZE is (at least) the size of an INTEGER*4 array that can hold +C *** an NXlink structure: we'll assume 64bit alignment of structure members for safety + INTEGER NXLINKSIZE + PARAMETER(NXLINKSIZE=1028) +C *** Possible NXstatus values - these are returned by all NX routines + INTEGER NX_OK,NX_ERROR,NX_EOD + PARAMETER(NX_OK=1,NX_ERROR=0,NX_EOD=-1) +C *** Maximum values defined in HDF standard + INTEGER NX_MAXRANK,NX_MAXNAMELEN + PARAMETER(NX_MAXRANK=32,NX_MAXNAMELEN=64) +C *** HDF datatypes used by Nexus - see hntdefs.h in HDF distribution + INTEGER DFNT_FLOAT32,DFNT_FLOAT64,DFNT_INT8,DFNT_UINT8,DFNT_INT16, + + DFNT_UINT16,DFNT_INT32,DFNT_UINT32,DFNT_UCHAR8,DFNT_CHAR8 + PARAMETER(DFNT_FLOAT32=5,DFNT_FLOAT64=6,DFNT_INT8=20, + + DFNT_UINT8=21,DFNT_INT16=22,DFNT_UINT16=23, + + DFNT_INT32=24,DFNT_UINT32=25,DFNT_UCHAR8=3, + + DFNT_CHAR8=4) +C *** NeXus names for HDF parameters + INTEGER NX_FLOAT32,NX_FLOAT64,NX_INT8,NX_UINT8,NX_INT16, + + NX_UINT16,NX_INT32,NX_UINT32,NX_CHAR + PARAMETER(NX_FLOAT32=5,NX_FLOAT64=6,NX_INT8=20, + + NX_UINT8=21,NX_INT16=22,NX_UINT16=23, + + NX_INT32=24,NX_UINT32=25,NX_CHAR=4) +C**** NeXus compression schemes + INTEGER NX_COMP_NONE, NX_COMP_LZW, NX_COMP_HUF, NX_COMP_RLE + PARAMETER(NX_COMP_NONE=100,NX_COMP_LZW=200,NX_COMP_RLE=300, + + NX_COMP_HUF=400) +C**** NeXus Unlimited Dimension + INTEGER NX_UNLIMITED + PARAMETER (NX_UNLIMITED=-1) + INTEGER NXOPEN, NXCLOSE, NXMAKEGROUP, NXOPENGROUP, NXCLOSEGROUP, + + NXMAKEDATA, NXOPENDATA, NXCLOSEDATA, NXGETDATA, + + NXGETCHARDATA, NXGETSLAB, NXGETATTR, NXGETCHARATTR, + + NXGETDIM, NXPUTDATA, NXPUTCHARDATA, NXPUTSLAB, + + NXPUTATTR, NXPUTCHARATTR, NXPUTDIM, NXGETINFO, + + NXGETNEXTENTRY, NXGETNEXTATTR, NXGETGROUPID, NXMAKELINK, + + NXGETGROUPINFO, NXINITGROUPDIR, NXGETATTRINFO, + + NXINITATTRDIR, NXFLUSH, NXCOMPMAKEDATA + LOGICAL NXSAMEID + EXTERNAL NXOPEN, NXCLOSE, NXMAKEGROUP, NXOPENGROUP, NXCLOSEGROUP, + + NXMAKEDATA, NXOPENDATA, NXCLOSEDATA, NXGETDATA, + + NXGETCHARDATA, NXGETSLAB, NXGETATTR, NXGETCHARATTR, + + NXGETDIM, NXPUTDATA, NXPUTCHARDATA, NXPUTSLAB, + + NXPUTATTR, NXPUTCHARATTR, NXPUTDIM, NXGETINFO, + + NXGETNEXTENTRY, NXGETNEXTATTR, NXGETGROUPID, NXMAKELINK, + + NXGETGROUPINFO, NXINITGROUPDIR, NXGETATTRINFO, + + NXINITATTRDIR, NXFLUSH, NXCOMPMAKEDATA, NXSAMEID + + + + + diff --git a/libs/cygwin/lib/CVS/Entries b/libs/cygwin/lib/CVS/Entries new file mode 100644 index 0000000..c6ef3a5 --- /dev/null +++ b/libs/cygwin/lib/CVS/Entries @@ -0,0 +1,8 @@ +/libNeXus.a/1.1/Fri Nov 5 08:46:11 2004// +/libdf.a/1.1/Fri Nov 5 08:46:11 2004// +/libhdf5.a/1.1/Fri Nov 5 08:46:11 2004// +/libhdf5.la/1.2/Fri Nov 12 10:31:30 2004// +/libhdf5.settings/1.3/Fri Nov 12 10:31:00 2004// +/libmfhdf.a/1.1/Fri Nov 5 08:46:11 2004// +/libudport.a/1.1/Fri Nov 5 08:46:11 2004// +D diff --git a/libs/cygwin/lib/CVS/Repository b/libs/cygwin/lib/CVS/Repository new file mode 100644 index 0000000..150e292 --- /dev/null +++ b/libs/cygwin/lib/CVS/Repository @@ -0,0 +1 @@ +analysis/fit/libs/cygwin/lib diff --git a/libs/cygwin/lib/CVS/Root b/libs/cygwin/lib/CVS/Root new file mode 100644 index 0000000..710e291 --- /dev/null +++ b/libs/cygwin/lib/CVS/Root @@ -0,0 +1 @@ +/afs/psi.ch/project/sinq/cvs diff --git a/libs/cygwin/lib/libNeXus.a b/libs/cygwin/lib/libNeXus.a new file mode 100755 index 0000000000000000000000000000000000000000..15b6948ebf1b1c2e6a86dc12d2ed20baf38dddbe GIT binary patch literal 178171 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

Y7X~U6T3?Kr#xLK4H?$n36)0_y(n5-^ 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⁣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
<8R|VS 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
  • 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≫s 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%0D)!NSb(5fb@@0_9R_dtQn;JZ^t9v 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�wL#F*)(bhFE_%w=vc~ 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%0AA~3 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 P4^XHvV;aN20u%=T)ZIR% literal 0 HcmV?d00001 diff --git a/make_gen b/make_gen new file mode 100755 index 0000000..d288016 --- /dev/null +++ b/make_gen @@ -0,0 +1,212 @@ +#--------------------------------------------------------------------------- +# Makefile for FIT and some related programs +# +# Markus Zolliker, Sept 2002 +#-------------------------------------------------------------------------- +-include make_deb +#NXFLAG is Y when NeXus should be used +NXF_Y = dat_nexus.o +NXF_ = dat_nexus_dum.o +F_OBJ = fit_main.o fit_win.o \ + cvt.o fit_merge.o fit_abskor.o fit_auto.o fit_mon.o \ + fit_bars.o fit_multiply.o inex.o \ + fit_command.o fit_out.o \ + dat_utils.o fit_connect.o fit_peak.o migrad.o \ + dat_fit3.o fit_cor.o fit_dat.o fit_print.o \ + dat_lnsp.o fit_exit.o fit_rel.o quick_sort.o \ + dat_init.o dat_open.o fit_export.o fit_scale.o simplex.o \ + dat_tasmad.o fit_file.o fit_set.o dat_ccl.o dat_5c2.o \ + dat_2t.o dat_rita.o dat_table.o dat_frm.o \ + dat_oldtas.o dat_sics.o dat_fullp.o fit_fit.o fit_style.o \ + fit_fix.o fit_subtract.o \ + fit_fun.o fifun.o fit_init.o fit_title.o \ + fit_list.o fit_user.o fit_range.o fit_array.o str.o \ + metaf.o intprt.o dat_ida.o dat_fda.o dat_d1a.o \ + gra.o fit_plot.o fit_bgedit.o cho.o \ + dat_xy.o dat_xys.o dat_xysm.o dat_inx.o dat_spec.o \ + sys_getenv.o sys_home.o sys_cmdpar.o sys_date.o sys_remote_host.o \ + sys_wait.o sys_lun.o sys_file.o sys_open.o sys_parse.o \ + $(NXF_$(NXFLAG)) $(NAPIF) +NXC_Y = napi_err.o dat_c.o +C_OBJ = sys_fun.o sys_unix.o \ + metac.o myc_str.o myc_err.o myc_tmp.o \ + sys_env.o sys_rdline.o sys_try.o \ + dat_tascom_dir.o main.o \ + $(NXC_$(NXFLAG)) +LIB_OBJ = $(C_OBJ) $(F_OBJ) sys_fvi.o fit_help.o fit_vers.o + +NXINC_Y=-I$(NXINC) -I$(NXHDF) +NXPATH_Y=:$(NXINC):$(NXHDF) +NXLIB_Y=$(NXLIB) +LL = $(PGLIB) $(RDLIB) $(NXLIB_$(NXFLAG)) +LIB_a= $(LL) +LIB_so= +LIBFIT = libfit.$(LIB_TYPE) +LF = $(LIB_$(LIB_TYPE)) libfit.a + +ARFLAGS = cr + +.SUFFIXES: .o .c .f + +F_OPT_D = $(F_DEB) +F_OPT_ = $(F_OPT) +FFLAGS = $(F_FLAGS) $(F_STRICT) $(F_OPT_$(DEB)) +FFLAGSR = $(F_FLAGS) $(F_RELAXED) $(F_OPT_$(DEB)) +CFLAGS = $(C_FLAGS) $(C_STRICT) -Isrc/gen +CFLAGSR = $(C_FLAGS) $(C_RELAXED) -Isrc/gen + +VPATH = src/gen/$(SPECPATH):src/unix/:src/pgm/:./$(NXPATH_$(NXFLAG)) + +SUPBIN = cho_ terinq_ sumvar deteff clamp abskor3 csc addit subit \ + trics_ccl addchan addei polcal csvsumvar autofit fitlor + +MAINBIN = fit $(ADD_ALL) + +ALL = $(MAINBIN) $(LIBFIT) $(SUPBIN) + +default: fit libfit.a $(LIBFIT) + +all: $(ALL) + +fit: fit.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) $(LDFLAGS) + +myfit: src/makefile_$(FIT_VERSION) src/make_gen src/gen/myfit_head + cp -f src/gen/myfit_head ./myfit + @echo '$(FC) $(FFLAGS) $$* $(INSTDIR)/lib/libfit.a $(LL) $(INSTDIR)/lib/libfit.a' >> myfit + chmod +x myfit + +libfit.a: $(LIB_OBJ) make_fdep $(CDEP) + rm -f $@ + $(AR) $(ARFLAGS) $@ $(LIB_OBJ) + ranlib $@ + +libfit.so: $(LIB_OBJ) + rm -f libfit.so + $(FC) $(FFLAGS) -shared -o libfit.so $(LIB_OBJ) $(LL) + +dat_nexus.o: dat_nexus.f + $(FC) $(FFLAGSR) $(NXINC_$(NXFLAG)) -c $F +dat_c.o: dat_c.c + $(CC) $(CFLAGSR) $(NXINC_$(NXFLAG)) -c $C +napi_err.o: napi_err.c + $(CC) $(CFLAGSR) $(NXINC_$(NXFLAG)) -c $C + +sumvar: sumvar.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +csvsumvar: csvsumvar.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +csc: csc.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +deteff: deteff.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +clamp: clamp.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +abskor3: abskor3.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +addit: addit.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +addchan: addchan.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +subit: subit.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +autofit: autofit.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +fitvers: fitv.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +brows.o: brows.f + $(FC) $(FFLAGSR) $(LDFLAGS) $(NXINC_$(NXFLAG)) -c $F + +brows: brows.o $(LIBFIT) + $(FC) $(FFLAGSR) $(LDFLAGS) -o $@ $Q $(LF) + +cho_: chooser.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +terinq_: terinq.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +tricslog: tricslog.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +trics_ccl: trics_ccl.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +addei: addei.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +polcal: polcal.o $(LIBFIT) + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q $(LF) + +make_custom: make_custom.f make_fvi.f make_help.f make_vers.f str.o \ + sys_open.o sys_cmdpar.o sys_unix.o sys_getenv.o sys_env.o \ + myc_str.o myc_err.o myc_tmp.o + $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $Q + +fit_vers.f: make_custom fit.vers $(F_OBJ:.o=.f) $(C_OBJ:.o=.c) + ./make_custom src/gen/fit.vers + +sys_fvi.c fit_help.f: make_custom lib.fvi fit.help + ./$Q + +fitlor: src/gen/fitlor.py + cp src/gen/fitlor.py fitlor + +INSTBIN=$(INSTDIR)/bin +INSTLIB=$(INSTDIR)/lib + +$(MAINBIN:%=$(INSTBIN)/%): $(MAINBIN) + cp -f $(@:$(INSTBIN)/%=%) $@ + +$(SUPBIN:%=$(INSTBIN)/%): $(SUPBIN) + cp -f $(@:$(INSTBIN)/%=%) $@ + +$(INSTLIB)/libfit.a: libfit.a + cp -f libfit.a $(INSTLIB)/libfit.a + +$(INSTLIB)/fitexample.f: src/gen/fitexample.f + cp -f src/gen/fitexample.f $(INSTLIB)/fitexample.f + +inst: $(MAINBIN:%=$(INSTBIN)/%) $(INSTLIB)/libfit.a $(INSTLIB)/fitexample.f + +install: inst $(SUPBIN:%=$(INSTBIN)/%) + +PRJS= $(F_OBJ:.o=.f) + +# "make check" will check everything that has been changed. +check: fit.f $(PRJS) + ftnchek -declare -source=dec-tab -notruncation -wrap=0 \ + -arguments=no-arrayness -nopure -nousage -quiet $Q + +clean: + rm -f *.o *.d *.df *.f *.c $(ALL) terinq make_custom \ + make_fdep make_cdep libfit.so so_locations + +purge_c: + rm -f $(C_OBJ) + +make_fdep: $(F_OBJ:.o=.f) +# search for include statements. the rest of the line is text processing + @echo "determine Fortran include file dependencies" + @echo $Q + @grep "include.*'.*'" $Q | sed \ + "s+:.*include.'\(.*\)'.*+: \1+g;s+.*/\(.*\)\.f:+\1.o: \1.f+g" \ + | sort -u > make_fdep + +make_cdep: $(C_OBJ:.o=.c) + @echo "collect C include file dependencies" + @- cat *.d | grep -v "/usr" > make_cdep + +-include make_fdep +-include $(CDEP) $(C_OBJ:.o=.d) diff --git a/makefile b/makefile new file mode 100644 index 0000000..0b67195 --- /dev/null +++ b/makefile @@ -0,0 +1,58 @@ +# This file is included by the makefile. +# It forwards the execution to a version specific makefile. +# FIT_VERSION must be defined +# M. Zolliker 08.2003 + +VERS_UNDEFINED= +VERS_UNDEFINED$(FIT_VERSION)=version_undefined + +MD=cd $(FIT_VERSION); \ + make -f $(SRC)makefile_$(FIT_VERSION) SRC=$(SRC) + +# overwrite MD when FIT_VERSION undefined +MD$(FIT_VERSION)=@ true + +PRE=$(VERS_UNDEFINED) obj/$(FIT_VERSION) + +SRC=src/ + +.SUFFIXES: .none + +default: $(PRE) + $(MD) + +%.o: $(PRE) + $(MD) $@ + +%: $(PRE) + $(MD) $@ + +.DEFAULT: $(PRE) + $(MD) $@ + +tree: $(PRE) + +obj/$(FIT_VERSION): + @ ./maketree . $(FIT_VERSION) + +makefile: + @ echo makefile + +version_undefined: + @ echo "" + @ echo "Usage:" + @ echo "" + @ echo "Creating objects and targets in separate subdirectories" + @ echo "" + @ echo " setenv FIT_VERSION version_xxx (assume we are using tcsh)" + @ echo " make [target]" + @ echo "" + @ echo " where version_xxx is one of" + @ echo "" + @ ls -1 makefile_* | cut -b 10-99 | pr -t -o 4 + @ echo "" + @ echo " Remarks:" + @ echo " All objects for alpha version will be created in subdirectory obj/alpha/," + @ echo " Tip: define FIT_VERSION at login" + @ echo "" + diff --git a/makefile_alpha b/makefile_alpha new file mode 100644 index 0000000..a7f03fb --- /dev/null +++ b/makefile_alpha @@ -0,0 +1,65 @@ +# Tru64 Unix with lnslib + +DEB$(NODEB)=D + +SINQ=/afs/psi.ch/project/sinq/tru64 + +# directories for installing the binaries are $(INSTDIR)/bin and $(INSTDIR)/lib +INSTDIR=$(SINQ)/stow/fit + +# type of library to be used (LIB_TYPE=a or LIB_TYPE=so) +LIB_TYPE=so + +# c-compiler to be used, flags for different options +CC=cc +C_FLAGS=-I. -MD -g +C_STRICT=-std1 -warnprotos +C_RELAXED= + +# fortran compiler to be used, flags for different options +FC=f77 +F_FLAGS=-vms -u -check bounds -assume source_include +F_STRICT=-warn decl -warn arg +F_RELAXED=-warn decl +F_OPT= +F_DEB=-g + +# macros for prerequisites (different make versions) +# Q=all, F/C=Fortran/C source with path +Q=$> +F=$*.f +C=$*.c +# C-dependencies are not automatic on this make version +CDEP=make_cdep + +#LNL=/data/lnslib/lib/lib +LNL=$(SINQ)/lib/lib + +# linker flags for readline library +RDLIB=$(LNL)readline.a -ltermcap + +# linker flags for pgplot +PGLIB=$(LNL)pgplot.so -lX11 -lXm -lm + +# path for tru64 specific routines +SPECPATH=:src/unix/tru64/ + +# link NeXus file input routines ? (comment out if not needed) +NXFLAG=Y + +# linker flags for NeXus +NXLIB=$(LNL)NeXusf77.a $(LNL)hdf5.a $(LNL)mfhdf.a $(LNL)df.a $(LNL)jpeg.a $(LNL)z.a +#NXLIB=/data/zolliker/lib/libNeXus45.a $(LNL)hdf5.a $(LNL)mfhdf.a $(LNL)df.a $(LNL)jpeg.a $(LNL)z.a + +# directory for the HDF include files +NXHDF=$(SINQ)/include + +# directory for the NeXus include files +NXINC=$(SINQ)/include + +# add to 'all' list +ADD_ALL=fitvers + +-include make_deb +include make_gen + diff --git a/makefile_alpha_f b/makefile_alpha_f new file mode 100644 index 0000000..a0c6ec1 --- /dev/null +++ b/makefile_alpha_f @@ -0,0 +1,3 @@ +NODEB=N +include makefile_alpha + diff --git a/makefile_cygwin b/makefile_cygwin new file mode 100755 index 0000000..1431a81 --- /dev/null +++ b/makefile_cygwin @@ -0,0 +1,51 @@ +# Linux with AFS at PSI + +# only debugger version works +DEB=D + +# type of library to be used (LIB_TYPE=a or LIB_TYPE=so) +LIB_TYPE=a + +# c-compiler to be used, flags for different options +CC=gcc +C_FLAGS=-g -D__unix -MMD +C_STRICT=-Wall +C_RELAXED= + +# fortran compiler to be used, flags for different options +FC=g77 +F_FLAGS=-Wimplicit -fbounds-check -I. -static +F_STRICT= +F_RELAXED=-Wno-globals +F_OPT=-O +F_DEB=-g + +# macros for prerequisites (for GNU make) +# Q=all, F/C=Fortran/C source with path +Q=$^ +F=$< +C=$< + +# linker flags for readline library +RDLIB=-lreadline -ltermcap + +SINQ=../libs/cygwin +SL=../libs/cygwin/lib/lib +# linker flags for pgplot +PGLIB= -Wl,--subsystem,console -lpgplot -lGrWin -mwindows +# +# link NeXus file input routines ? (comment out if not needed) +NXFLAG=Y + +# linker flags for NeXus +NXLIB=$(SL)NeXus.a $(SL)hdf5.a $(SL)mfhdf.a $(SL)df.a -ljpeg -lz -lrpclib + + +# directory for the HDF include files +NXHDF=$(SINQ)/include + +# directory for the NeXus include files +NXINC=$(SINQ)/include + +-include make_deb +include src/make_gen diff --git a/makefile_linux b/makefile_linux new file mode 100644 index 0000000..4a4d1c4 --- /dev/null +++ b/makefile_linux @@ -0,0 +1,57 @@ +# Linux + +# only debugger version works +DEB=D + +# type of library to be used (LIB_TYPE=a or LIB_TYPE=so) +LIB_TYPE=a + +# c-compiler to be used, flags for different options +CC=gcc +C_FLAGS=-g -D__unix -MMD +C_STRICT=-Wall +C_RELAXED= + +# fortran compiler to be used, flags for different options +FC=g77 +F_FLAGS=-Wimplicit -fbounds-check -I. -Wall +F_STRICT= +F_RELAXED=-Wno-globals +F_OPT=-O +F_DEB=-g + +# macros for prerequisites (for GNU make) +# Q=all, F/C=Fortran/C source with path +Q=$^ +F=$< +C=$< + +# linker flags for readline library +RDLIB=-lreadline -ltermcap + +# directories for installing the binaries are $(INSTDIR)/bin and $(INSTDIR)/lib +INSTDIR=~ + +# linker flags for pgplot +PGLIB=$(INSTDIR)/libpgplot.a -L/usr/X11R6/lib -lX11 + +# link NeXus file input routines ? +# remove '#' in the next line if you like NeXus support +#NXFLAG=Y + +NXLIBS=$(INSTDIR)/lib/lib + +# linker flags for NeXus +NXLIB=$(NXLIBS)NeXus77.a $(NXLIBS)hdf5.a $(NXLIBS)mfhdf.a $(NSLIBS)df.a \ + $(NXLIBS)jpeg.a $(NXLIBS)z.a + +# directory for the HDF include files (needed for NeXus) +NXHDF=$(INSTDIR)/include + +# directory for the NeXus include files +NXINC=$(INSTDIR)/include + +ADD_ALL = myfit + +-include make_deb +include src/make_gen diff --git a/makefile_macintel b/makefile_macintel new file mode 100644 index 0000000..c644576 --- /dev/null +++ b/makefile_macintel @@ -0,0 +1,58 @@ +# Mac OS X with Fink + +# only debuggger version works +DEB=D + +# type of library to be used (LIB_TYPE=a or LIB_TYPE=so) +LIB_TYPE=a + +# c-compiler to be used, flags for different options +CC=gcc +C_FLAGS=-g -D__unix -MMD -DF_UNDERSCORE=1 +C_STRICT=-Wall +C_RELAXED= + +# fortran compiler to be used, flags for different options +FC=gfortran +F_FLAGS=-fimplicit-none -ffixed-line-length-none -fbounds-check -I. +F_STRICT= +F_RELAXED=-Wno-globals +F_OPT=-O +F_DEB=-g + +#ld flags +#LDFLAGS=/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc_static.a + +# macros for prerequisites (for GNU make) +# Q=all, F/C=Fortran/C source with path +Q=$^ +F=$< +C=$< + +# linker flags for the readline library +RDLIB=-L/sw/lib/ -lreadline + +# directories for installing the binaries are $(INSTDIR)/bin and $(INSTDIR)/lib +INSTDIR=/sinqsw + +# linker flags for pgplot +PGLIB=-L/sw/lib/pgplot -lpgplot -L/usr/X11R6/lib -lX11 -lpng \ + -laquaterm -Wl,-framework -Wl,Foundation -Wl,-framework -Wl,AppKit + +# link NeXus file input routines ? (comment out if not needed) +#NXFLAG=Y + +# linker flags for NeXus +NXLIB=-L/sinqsw/lib -lNeXus -lNeXus77 -L/sw/lib -lhdf5 -lmfhdf -ldf -ljpeg -lz + +# directory for the HDF include files +NXHDF=/sw/include + +# directory for the NeXus include files +NXINC=$(INSTDIR)/include + +ADD_ALL = myfit + +-include make_deb +include src/make_gen + diff --git a/makefile_macosx b/makefile_macosx new file mode 100644 index 0000000..467a6ef --- /dev/null +++ b/makefile_macosx @@ -0,0 +1,69 @@ +# Mac OS X with Fink + +# only debuggger version works +DEB=D + +# type of library to be used (LIB_TYPE=a or LIB_TYPE=so) +LIB_TYPE=a + +# c-compiler to be used, flags for different options +CC=gcc +C_FLAGS=-g -D__unix -MMD +C_STRICT=-Wall +C_RELAXED= + +# fortran compiler to be used, flags for different options +FC=g77 +F_FLAGS=-Wimplicit -fbounds-check -I. +F_STRICT= +F_RELAXED=-Wno-globals +F_OPT=-O +F_DEB=-g + +#ld flags +#LDFLAGS=/Developer/SDKs/MacOSX10.3.0.sdk/usr/lib/gcc/darwin/3.3/libgcc.a +#LDFLAGS=/sw/lib/gcc/powerpc-apple-darwin8.8.0/3.4.3/libgcc.a -L/sw/lib -lg95 -lg2c +#LDFLAGS=/usr/lib/gcc/darwin/3.1/libgcc.a +#LDFLAGS=/usr/lib/gcc/darwin/3.3/libgcc.a /usr/lib/libSystemStubs.a +#LDFLAGS=/usr/lib/gcc/i686-apple-darwin8/4.0.0/libgcc.a +#LDFLAGS=/usr/lib/gcc/powerpc-apple-darwin8/4.0.0/libgcc.a +#LDFLAGS=/usr/lib/gcc/powerpc-apple-darwin8/4.0.1/ppc64/libgcc.a + +# macros for prerequisites (for GNU make) +# Q=all, F/C=Fortran/C source with path +Q=$^ +F=$< +C=$< + +# linker flags for the readline library +RDLIB=-L/sw/lib -lreadline + +# directories for installing the binaries are $(INSTDIR)/bin and $(INSTDIR)/lib +INSTDIR=/sinqsw + +# linker flags for pgplot +PGLIB=-L/usr/X11R6/lib -lX11 -Wl,-framework -Wl,Foundation -L/sw/lib \ + -lpng -lz -laquaterm -L/sw/lib/pgplot -lpgplot -lg95 + +# -L/sw/lib/pgplot -lpgplot -L/usr/X11R6/lib -lX11 -lpng \ +# -Wl,-framework -Wl,Foundation -Wl,-framework -Wl,AppKit -lg95 + + + +# link NeXus file input routines ? (comment out if not needed) +NXFLAG=Y + +# linker flags for NeXus +NXLIB=-L/sinqsw/lib -lNeXus -lNeXus77 -L/sw/lib -lhdf5 -lmfhdf -ldf -ljpeg -lz + +# directory for the HDF include files +NXHDF=/sw/include + +# directory for the NeXus include files +NXINC=$(INSTDIR)/include + +ADD_ALL = myfit + +-include make_deb +include src/make_gen + diff --git a/makefile_rhel7 b/makefile_rhel7 new file mode 100644 index 0000000..4c0a31f --- /dev/null +++ b/makefile_rhel7 @@ -0,0 +1,68 @@ +# RedHat Linunx (rhel7) with AFS at PSI + +# only debugger version works +DEB=D + +# type of library to be used (LIB_TYPE=a or LIB_TYPE=so) +LIB_TYPE=a + +# c-compiler to be used, flags for different options +CC=gcc +C_FLAGS=-g -D__unix -MMD -DF_UNDERSCORE=1 +#C_FLAGS=-g -D__unix -MMD +C_STRICT=-Wall +C_RELAXED= + +# fortran compiler to be used, flags for different options +FC=gfortran +#FC=g77 +F_FLAGS=-fimplicit-none -ffixed-line-length-none -fbounds-check -I. +#F_FLAGS=-Wimplicit -fbounds-check -I. -Wall +F_STRICT= +F_RELAXED=-Wno-globals +F_OPT=-O +F_DEB=-g + +# macros for prerequisites (for GNU make) +# Q=all, F/C=Fortran/C source with path +Q=$^ +F=$< +C=$< + +# linker flags for readline library +RDLIB=-L$(PWD) -lreadline + +SINQ=/afs/psi.ch/project/sinq/$(linuxsys) +SL=$(sinq)/sl6-64/lib/lib + +# directories for installing the binaries are $(INSTDIR)/bin and $(INSTDIR)/lib +INSTDIR=$(SINQ)/stow/fit + +# linker flags for pgplot +PGLIB=$(PWD)/src/pgplot_rhel7/libpgplot.a -L/usr/X11R6/lib -lX11 + +# link NeXus file input routines ? (comment out if not needed) +NXFLAG=Y + +# linker flags for NeXus +NXLIB=$(SL)NeXus77.a $(SL)NeXus.a $(SL)hdf5.a $(SL)mxml.a -lz $(SL)sz.a -lpthread + +# directory for the HDF include files +NXHDF=$(SINQ)/include + +# directory for the NeXus include files +NXINC=$(sinq)/sl6-64/include +#NXINC=$(PWD)/../gen + +# a hack: it seems that napif.f is not properly included in libNeXus77.a +NAPIF=napif.o + +ADD_ALL = myfit + +-include make_deb +include src/make_gen + +# location: unix/napif.f +napif.o: napif.f + $(FC) -c $Q + diff --git a/makefile_sl-linux b/makefile_sl-linux new file mode 100644 index 0000000..1dbd420 --- /dev/null +++ b/makefile_sl-linux @@ -0,0 +1,57 @@ +# Linux with AFS at PSI + +# only debugger version works +DEB=D + +# type of library to be used (LIB_TYPE=a or LIB_TYPE=so) +LIB_TYPE=a + +# c-compiler to be used, flags for different options +CC=gcc +C_FLAGS=-g -D__unix -MMD +C_STRICT=-Wall +C_RELAXED= + +# fortran compiler to be used, flags for different options +FC=g77 +F_FLAGS=-Wimplicit -fbounds-check -I. -Wall +F_STRICT= +F_RELAXED=-Wno-globals +F_OPT=-O +F_DEB=-g + +# macros for prerequisites (for GNU make) +# Q=all, F/C=Fortran/C source with path +Q=$^ +F=$< +C=$< + +# linker flags for readline library +RDLIB=-lreadline -ltermcap + +SINQ=/afs/psi.ch/project/sinq/sl-linux +SL=$(SINQ)/lib/lib + +# directories for installing the binaries are $(INSTDIR)/bin and $(INSTDIR)/lib +INSTDIR=$(SINQ)/stow/fit + +# linker flags for pgplot +PGLIB=$(SL)pgplot.a -L/usr/X11R6/lib -lX11 + +# link NeXus file input routines ? (comment out if not needed) +NXFLAG=Y + +# linker flags for NeXus +NXLIB=$(SL)NeXus77.a $(SL)NeXus.a $(SL)hdf5.a $(SL)mfhdf.a $(SL)mxml.a $(SL)df.a $(SL)jpeg.a -lz $(SL)sz.a + +# directory for the HDF include files +NXHDF=$(SINQ)/include + +# directory for the NeXus include files +#NXINC=$(SINQ)/include +NXINC=$(PWD)/../gen + +ADD_ALL = myfit + +-include make_deb +include src/make_gen diff --git a/makefile_sl5 b/makefile_sl5 new file mode 100644 index 0000000..5a0a3a1 --- /dev/null +++ b/makefile_sl5 @@ -0,0 +1,60 @@ +# Linux with AFS at PSI + +# only debugger version works +DEB=D + +# type of library to be used (LIB_TYPE=a or LIB_TYPE=so) +LIB_TYPE=a + +# c-compiler to be used, flags for different options +CC=gcc +C_FLAGS=-g -D__unix -MMD +#C_FLAGS=-g -D__unix -MMD -DF_UNDERSCORE=1 +C_STRICT=-Wall +C_RELAXED= + +# fortran compiler to be used, flags for different options +FC=g77 +F_FLAGS=-Wimplicit -fbounds-check -I. -Wall +#F_FLAGS=-w +F_STRICT= +F_RELAXED=-Wno-globals +#F_RELAXED=$(F_FLAGS) +F_OPT=-O +F_DEB=-g + +# macros for prerequisites (for GNU make) +# Q=all, F/C=Fortran/C source with path +Q=$^ +F=$< +C=$< + +# linker flags for readline library +RDLIB=-lreadline -ltermcap + +SINQ=/afs/psi.ch/project/sinq/sl5 +SL=$(SINQ)/lib/lib + +# directories for installing the binaries are $(INSTDIR)/bin and $(INSTDIR)/lib +INSTDIR=$(SINQ)/stow/fit + +# linker flags for pgplot +PGLIB=$(SL)pgplot.a -L/usr/X11R6/lib -lX11 + +# link NeXus file input routines ? (comment out if not needed) +NXFLAG=Y + +# linker flags for NeXus +NXLIB=$(SL)NeXus77.a $(SL)NeXus.a $(SL)hdf5.a $(SL)mfhdf.a $(SL)mxml.a $(SL)df.a $(SL)jpeg.a -lz $(SL)sz.a + +# directory for the HDF include files +NXHDF=$(SINQ)/include + +# directory for the NeXus include files +#NXINC=$(SINQ)/include +NXINC=$(PWD)/../gen + +ADD_ALL = myfit + +-include make_deb +include src/make_gen diff --git a/makefile_sl6 b/makefile_sl6 new file mode 100644 index 0000000..18c66b6 --- /dev/null +++ b/makefile_sl6 @@ -0,0 +1,60 @@ +# Linux with AFS at PSI + +# only debugger version works +DEB=D + +# type of library to be used (LIB_TYPE=a or LIB_TYPE=so) +LIB_TYPE=a + +# c-compiler to be used, flags for different options +CC=gcc +C_FLAGS=-g -D__unix -MMD -DF_UNDERSCORE=1 +#C_FLAGS=-g -D__unix -MMD +C_STRICT=-Wall +C_RELAXED= + +# fortran compiler to be used, flags for different options +FC=gfortran +#FC=g77 +F_FLAGS=-fimplicit-none -ffixed-line-length-none -fbounds-check -I. +#F_FLAGS=-Wimplicit -fbounds-check -I. -Wall +F_STRICT= +F_RELAXED=-Wno-globals +F_OPT=-O +F_DEB=-g + +# macros for prerequisites (for GNU make) +# Q=all, F/C=Fortran/C source with path +Q=$^ +F=$< +C=$< + +# linker flags for readline library +RDLIB=-lreadline -ltermcap + +SINQ=/afs/psi.ch/project/sinq/sl6 +SL=$(SINQ)/lib/lib + +# directories for installing the binaries are $(INSTDIR)/bin and $(INSTDIR)/lib +INSTDIR=$(SINQ)/stow/fit + +# linker flags for pgplot +PGLIB=$(PWD)/src/pgplot_sl6/libpgplot.a -L/usr/X11R6/lib -lX11 + +# link NeXus file input routines ? (comment out if not needed) +NXFLAG=Y + +# linker flags for NeXus +NXLIB=$(SL)NeXus77.a $(SL)NeXus.a $(SL)hdf5.a $(SL)mfhdf.a $(SL)mxml.a $(SL)df.a $(SL)jpeg.a -lz $(SL)sz.a -lpthread + +# directory for the HDF include files +NXHDF=$(SINQ)/include + +# directory for the NeXus include files +#NXINC=$(SINQ)/include +NXINC=$(PWD)/../gen + +ADD_ALL = myfit + +-include make_deb +include src/make_gen diff --git a/makefile_sl6-64 b/makefile_sl6-64 new file mode 100644 index 0000000..26c26a7 --- /dev/null +++ b/makefile_sl6-64 @@ -0,0 +1,68 @@ +# Linux with AFS at PSI + +# only debugger version works +DEB=D + +# type of library to be used (LIB_TYPE=a or LIB_TYPE=so) +LIB_TYPE=a + +# c-compiler to be used, flags for different options +CC=gcc +C_FLAGS=-g -D__unix -MMD -DF_UNDERSCORE=1 +#C_FLAGS=-g -D__unix -MMD +C_STRICT=-Wall +C_RELAXED= + +# fortran compiler to be used, flags for different options +FC=gfortran +#FC=g77 +F_FLAGS=-fimplicit-none -ffixed-line-length-none -fbounds-check -I. +#F_FLAGS=-Wimplicit -fbounds-check -I. -Wall +F_STRICT= +F_RELAXED=-Wno-globals +F_OPT=-O +F_DEB=-g + +# macros for prerequisites (for GNU make) +# Q=all, F/C=Fortran/C source with path +Q=$^ +F=$< +C=$< + +# linker flags for readline library +RDLIB=-lreadline -ltermcap + +SINQ=/afs/psi.ch/project/sinq/sl6-64 +SL=$(SINQ)/lib/lib + +# directories for installing the binaries are $(INSTDIR)/bin and $(INSTDIR)/lib +INSTDIR=$(SINQ)/stow/fit + +# linker flags for pgplot +PGLIB=$(PWD)/src/pgplot_sl6-64/libpgplot.a -L/usr/X11R6/lib -lX11 + +# link NeXus file input routines ? (comment out if not needed) +NXFLAG=Y + +# linker flags for NeXus +NXLIB=$(SL)NeXus77.a $(SL)NeXus.a $(SL)hdf5.a $(SL)mxml.a -lz $(SL)sz.a -lpthread + +# directory for the HDF include files +NXHDF=$(SINQ)/include + +# directory for the NeXus include files +#NXINC=$(SINQ)/include +NXINC=$(PWD)/../gen + +# a hack: it seems that napif.f is not properly included in libNeXus77.a +NAPIF=napif.o + +ADD_ALL = myfit + +-include make_deb +include src/make_gen + +# location: unix/napif.f +napif.o: napif.f + $(FC) -c $Q + diff --git a/maketree b/maketree new file mode 100755 index 0000000..fdda78a --- /dev/null +++ b/maketree @@ -0,0 +1,32 @@ +#!/bin/tcsh +# create the version specific object tree +# +# M.Zolliker 08.2003 +# +if ("$2" == "") then + + echo missing arg 2 (fit version) + +else + + set FIT_ROOT=$PWD + +# determine object directory + set o="$FIT_ROOT/$2/$1" + +# determine makefile + set m="$FIT_ROOT/$1/makefile_$2" + + if (-e $m) then + if (! -e $o) then + echo create directory $o + mkdir -p $o + else + echo $o exists + endif + rm -f $o/src + echo ln -s $FIT_ROOT/$1 $o/src + ln -s $FIT_ROOT/$1 $o/src + endif +endif + diff --git a/napif.o b/napif.o new file mode 100644 index 0000000000000000000000000000000000000000..f36ae833227e7eb1d00261ab54706e9217dadcbd GIT binary patch literal 37344 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 E4RxN3z5oCK literal 0 HcmV?d00001 diff --git a/pgm/CVS/Entries b/pgm/CVS/Entries new file mode 100644 index 0000000..f8ca63f --- /dev/null +++ b/pgm/CVS/Entries @@ -0,0 +1,16 @@ +/addchan.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/bose.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/csc.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/deteff.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/deteff2.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/subit.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/ufit.f/1.1.1.1/Tue Nov 2 15:54:57 2004// +/zm_fit/1.1.1.1/Tue Nov 2 15:54:57 2004// +/abskor3.f/1.2/Thu Dec 22 16:07:28 2005// +/brows.f/1.2/Tue Aug 8 10:35:11 2006// +/addit.f/1.3/Tue May 15 11:02:38 2012// +/clamp.f/1.3/Tue Mar 8 09:25:31 2011// +/tricslog.f/1.3/Fri Nov 13 14:06:20 2015// +/sumvar.f/1.3/Fri Nov 3 07:22:08 2017// +/trics_ccl.f/1.7/Fri Sep 8 07:59:46 2017// +D diff --git a/pgm/CVS/Repository b/pgm/CVS/Repository new file mode 100644 index 0000000..834c9ec --- /dev/null +++ b/pgm/CVS/Repository @@ -0,0 +1 @@ +analysis/fit/pgm diff --git a/pgm/CVS/Root b/pgm/CVS/Root new file mode 100644 index 0000000..710e291 --- /dev/null +++ b/pgm/CVS/Root @@ -0,0 +1 @@ +/afs/psi.ch/project/sinq/cvs diff --git a/pgm/abskor3.f b/pgm/abskor3.f new file mode 100644 index 0000000..885e332 --- /dev/null +++ b/pgm/abskor3.f @@ -0,0 +1,175 @@ + program abskor3 + +* absorption correction for full or double-walled cylinders +* replaces old ABSKOR and ABSKOR2 +* uses FIT subroutines written by M. Zolliker +* 30.11.01 +* +* > myfit abskor3.f +* > mv a.out abskor3 + + implicit none + + integer l + character*256 file, outfile, line + character*32 spec, value + character*5 flag + real mur, rira, rarc + logical found + + external extract_option, cvt_ratio + logical extract_option + real cvt_ratio + + call sys_get_cmdpar(line, l) + + if (line .eq. ' ') then + call fit_init_silent + call sys_getenv('dat_defspec',spec) + if (spec.eq.' ') spec='DMC' + call str_trim(spec,spec,l) + + 100 write(*,*) + write(*,'(x,a)')'DMC = 1 / HRPT = 2' + write(*,'(x,3a,$)')'Instrument (default: ',spec(1:l),'): ' + read(*,'(a)')flag + + call str_upcase(flag, flag) + + if (flag.eq.'1') flag='DMC' + if (flag.eq.'2') flag='HRPT' + if (flag.ne.' ') then + if (flag.ne.'DMC' .and. flag.ne.'HRPT') goto 100 + spec=flag + endif + + call sys_setenv('dat_defspec',spec) + file=' ' + outfile=' ' + else + mur=0 + rira=0 + rarc=0 + if (extract_option('m', line, value)) then + read(value, *, err=999,end=999) mur + endif + if (extract_option('r', line, value)) then + rira=cvt_ratio(value, -1.0) + if (rarc .lt. 0) goto 999 + endif + if (extract_option('c', line, value)) then + rarc=cvt_ratio(value, -1.0) + if (rarc .lt. 0) goto 999 + endif + found=extract_option(' ', line, file) + found=extract_option('o', line, outfile) + if (line .ne. ' ') goto 999 + call fit_init_silent + endif + + call fit_dat_merge(file,0.025) + write(*,*) + call fit_abskor2(mur,rira,rarc) + write(*,*) + +C call fit_auto_mon +C write(*,*) +C call fit_mon(0) + + if (outfile .eq. ' ') then + 101 write(*,'(x,a,$)')'Name of output file: ' + read(*,'(a)') outfile + if (outfile.eq.' ') goto 101 + endif + + call fit_export(0.0,'lnsp',outfile) + + write(*,*) + write(*,'(x,2a)')'new file: ',outfile + write(*,*) + + goto 9999 + +999 write (*,*) ' ' + write (*,*) 'Usage:' + write (*,*) ' ' + write (*,'(x,2a)') ' abskor3 -m [ -r / ]' + *,' [ -c / ] [ -o ] ' + write (*,*) ' ' + write (*,*) 'where mu*R' + write (*,*) ' inner sample radius' + write (*,*) ' outer sample radius' + write (*,*) ' radial collimator fwhm' + write (*,*) ' input file(s) or number of run(s)' + write (*,*) ' output file' + +9999 end + + + logical function extract_option(optchar, line, value) + +! extract an option from commandline +! options are single chars preceded by + + character optchar*1, line*(*), value*(*) + + integer i, state, j + + state=0 ! beginning or between options + do i=1,len(line) + if (state .eq. 0) then + if (line(i:i) .le. ' ') then + continue + elseif (line(i:i) .eq. '-') then + state=2 ! option started + elseif (optchar .eq. ' ') then ! argument + state=5 ! argument started + j=i + endif + elseif (state .eq. 2) then + if (line(i:i) .eq. optchar) then + line(i-1:i)=' ' + state=3 ! option matches + else + state=1 ! option does not match + endif + elseif (state .eq. 1) then + if (line(i:i) .gt. ' ') then + state=4 ! unmatching option value + elseif (line(i:i) .eq. '-') then + state=2 ! option has started + endif + elseif (state .eq. 4) then + if (line(i:i) .le. ' ') then + state=0 ! between options + endif + elseif (state .eq. 3) then + if (line(i:i) .gt. ' ') then + j=i + state=6 + endif + elseif (state .ge. 6) then + if (state .eq. 6) then + if (line(i:i) .eq. '-' .and. len(value) .eq. 1) then + value=' ' + extract_option=.true. + return + endif + if (line(i:i) .le. ' ') then + value=line(j:i) + line(j:i)=' ' + extract_option=.true. + return + endif + endif + endif + enddo + if (state .lt. 5) then + value=' ' + extract_option=.false. + return + endif + value=line(j:) + line(j:)=' ' + extract_option=.true. + end diff --git a/pgm/addchan.f b/pgm/addchan.f new file mode 100644 index 0000000..4064c6a --- /dev/null +++ b/pgm/addchan.f @@ -0,0 +1,52 @@ + program addchan + +! compile with: +! > myfit -o addchan addchan.f + + implicit none + + integer j,i,n,listflag + character*256 list + real twoth + + integer nmax + parameter (nmax=16000) + real xx(nmax) + + call fit_init + + call dat_ask_filelist(list,' ') + listflag=0 + + do j=1,999999 + + call fit_dat_next_opt(list,listflag,1,0.0) + if (listflag.eq.0) goto 101 + + call fit_get_real('A4', twoth) + call fit_get_array('X', xx, nmax, n) + print *,'a4 ',twoth,n + do i=1,n + if (xx(i) .le. 500.) then + xx(i)=xx(i)-twoth+1000. + endif + enddo + call fit_put_array('X', xx, n) + if (n+1600 .ge. nmax) then + call fit_merge(0.05) + endif + enddo + + 101 write(*,*) + + call fit_merge(0.05) + call fit_get_array('X', xx, nmax, n) + do i=1,n + xx(i)=xx(i)-1000. + enddo + call fit_put_array('X', xx, n) + + call fit_export(0,'lnsp',' ') + + + end diff --git a/pgm/addei.f b/pgm/addei.f new file mode 100644 index 0000000..731913c --- /dev/null +++ b/pgm/addei.f @@ -0,0 +1,94 @@ + program addei + + implicit none + + integer i, n, listflag, l, iostat, numor, j, la, lo + character*1024 list + character*256 filename + character*256 outname + character line*256, axis*8 + real fx,kfix,val,en(999),ei + + call fit_init + + list=' ' + call sys_get_cmdpar(list, l) + if (list .eq. ' ') then + call dat_ask_filelist(list,' ') + endif + listflag=0 + +c treat no more than 9999 files + do i=1,9999 + + call fit_dat_options('x=en') + call fit_dat_silent + call fit_dat_next(list,listflag) +c exit loop when finished + if (listflag.eq.0) goto 999 + call fit_get_real('Numor', val) + numor = val + call fit_get_real('FX', fx) + call fit_get_real('KFIX', kfix) + ei=kfix*kfix*2.072 + call fit_get_array('x', en, 999, n) + call fit_get_str('File', l, filename) + do j=l,1,-1 + if (filename(j:j) .eq. '/') then + outname=filename(j+1:l) + lo=l-j + goto 200 + endif + enddo + outname=filename + lo=l +200 continue + call fit_get_str('XAxis', la, axis) + if (axis .ne. 'EN') then + print *,outname(1:lo),'(column EN not found)' + goto 900 + endif + call sys_open(1, filename(1:l), 'r', iostat) + if (iostat .ne. 0) then + print *,'can not open ',filename(1:l) + goto 999 + endif + + if (outname(lo:lo) .eq. 'c') then + outname(lo:lo) = 't' + else + outname(lo:lo) = 'c' + endif + call sys_open(2, outname(1:lo), 'w', iostat) + if (iostat .ne. 0) then + print *,'can not create ',outname(1:lo) + goto 999 + endif + print *,outname(1:lo),' created' + read(1, '(a)', iostat=iostat) line + call str_trim(line, line, l) + do while (iostat .eq. 0 .and. line(1:4) .ne. 'DATA') + write(2,'(a)') line(1:l) + read(1, '(a)', iostat=iostat) line + enddo + read(1, '(a)', iostat=iostat) line + call str_trim(line, line, l) + write(2, '(2a)') line(1:l),' EI' + call str_trim(line, line, l) + do j=1,n + read(1, '(a)', iostat=iostat) line + if (iostat .ne. 0) goto 900 + if (fx .eq. 1) then + write(2,'(a,f10.4)') line(1:l),ei + else + write(2,'(a,f10.4)') line(1:l),ei-en(j) + endif + enddo + close(1) + close(2) +900 continue + enddo + + 999 continue + + end diff --git a/pgm/addit.f b/pgm/addit.f new file mode 100644 index 0000000..1c08c16 --- /dev/null +++ b/pgm/addit.f @@ -0,0 +1,67 @@ + program addit + +* replaces "powderplus" +* (23.4.99) rekonstruiert am 7.7.99, geaendert am 15.7.99,28.9.99,7.3.00 +* +* > myfit addit.f +* > mv a.out addit + + implicit none + + integer l + character*36 spec + character*256 file + character*8192 line + character*5 flag + + call fit_init + + call sys_get_cmdpar(line, l) + call str_lowcase(line, line) + if (line(1:l) .ne. ' ') then + call fit_dat_options(line) + endif + call sys_getenv('dat_defspec',spec) + if (spec.eq.' ') spec='DMC' + call str_trim(spec,spec,l) ! Laenge bestimmen (l) + + 100 write(*,*) + write(*,'(x,a)')'DMC = 1 / HRPT = 2' + write(*,'(x,3a,$)')'Instrument (default: ',spec(1:l),'): ' + read(*,'(a)')flag ! ^ schreibt spec von + ! Zeichen 1 bis l + + call str_upcase(flag, flag) ! schreibt Inhalt von flag gross + + if (flag.eq.'1') flag='DMC' + if (flag.eq.'2') flag='HRPT' + if (flag.ne.' ') then + if (flag.ne.'DMC' .and. flag.ne.'HRPT') goto 100 + spec=flag + endif + + call sys_setenv('dat_defspec',spec) + +C call fit_dat(' ') +C call fit_merge(0.02) + if (spec .eq. 'DMC') then + call fit_dat_merge(' ',0.025) ! ersetzt fit_dat und fit_merge + else + call fit_dat_merge(' ',0.025) ! ersetzt fit_dat und fit_merge + endif + call fit_auto_mon + write(*,*) + call fit_mon(0) + + 101 write(*,'(x,a,$)')'Name of output file: ' + read(*,'(a)')file + if (file.eq.' ') goto 101 + + call fit_export(0,'lnsp',file) + + call str_trim(file, file, l) + write(*,*) + write(*,'(x,2a)')'new file: ',file(1:l) + write(*,*) + + end diff --git a/pgm/autofit.f b/pgm/autofit.f new file mode 100644 index 0000000..35b4d5f --- /dev/null +++ b/pgm/autofit.f @@ -0,0 +1,152 @@ + program autofit +c --------------- + + implicit none + + real par(200), err(200) + integer j, i, n, listflag, pos, iostat, ipar + character*8192 list + character*8192 line + integer l, lline + character*128 vars + character*128 outfile + character num*32 + character var*32,upvar*32 + real value + integer lun, k + real ymon + + integer get_par_no + integer iret, fit_dat_opt + + call sys_get_cmdpar(line, lline) + pos = 1 + call str_get_word(line(1:lline), pos, vars) + call str_get_word(line(1:lline), pos, outfile) + call str_get_word(line(1:lline), pos, list) + if (outfile .eq. ' ') then + print *,' ' + print *,'Usage:' + print *,' ' + print *,'1) start the ordinary fit program with the first file' + print *,'2) select fit function, and setup fixed pars and correlations' + print *,'3) do a first fit' + print *,'4) use command "exit" to leave and save settings in last.fit3' + print *,'5) start autofit. Example:' + print *,' ' + print *,' autofit mf,i1 out.dat 1964-2018' + print *,' ' + print *,' fit datafiles with numbers 1964...2018' + print *,' plot using mf as x and fir parameter i1 as y' + print *,' ' + print *,'6) plot results:' + print *,' ' + print *,' fit -p out.dat' + print *,' ' + print *,'7) if in doubt, check fit graphically:' + print *,' ' + print *,' gv pgplot.ps' + print *,' ' + print *,'Tips:' + print *,'- use "temp" for temperature' + print *,'- use "intexp" for experimental integrated intensity' + print *,'- more than one fit parameter might be specified,' + print *,' resulting in more than 3 columns' + print *,'- in step (2), use commands "win" and "keep y" in fit,' + print *,' if you want to make the fit only in a window' + print *,' ' + goto 999 + endif + + call fit_init + call sys_setenv('CHOOSER_PAN','9') ! 9 plots per page + call sys_setenv('CHOOSER_POPT','A') ! all on one file + +c read parameter file from last fit + + call fit_load('last.fit3') + call sym_get_real('Monitor', ymon) + if (list .eq. ' ') then + call dat_ask_filelist(list,' ') + call str_trim(list, list, l) + call str_append(line, lline, ' ') + call str_append(line, lline, line(1:l)) + endif + listflag=0 + call sys_get_lun(lun) + call sys_open(lun, outfile, 'w', iostat) + if (iostat .ne. 0) then + print *,'cannot open ',outfile + goto 999 + endif + write(lun,'(2a)') '# created with the following command:' + write(lun,'(2a)') '# autofit ', line(1:lline) +c write header + line = ' ' + lline = 0 + i=1 + do while (.true.) + call str_get_elem(vars, i, var) + if (var .eq. ' ') exit + call str_trim(var, var, l) + if (lline .ne. 0) call str_append(line, lline, ' ') + do k=l,9 + call str_append(line, lline, ' ') + enddo + call str_append(line, lline, var(1:l)) + call str_upcase(upvar(1:l), var(1:l)) + ipar = get_par_no(upvar(1:l)) + if (ipar .gt. 0 .or. upvar(1:l) .eq. 'INTEXP') then + call str_append(line, lline, ' err') + endif + enddo + write(lun,'(a)') line(1:lline) + +c treat no more than 9999 files + do j=1,9999 + + call fit_dat_next(list,listflag) + call fit_mon(ymon) +c exit loop when finished + if (listflag.eq.0) goto 101 + + call fit_fit(0) + +c plot it to file + call fit_plot('y') + + call fit_get_array('p', par, 100, n) + call fit_get_array('e', err, 100, n) + line = ' ' + lline = 0 + i = 1 + do while (.true.) + call str_get_elem(vars, i, var) + if (var .eq. ' ') exit + if (lline .ne. 0) call str_append(line, lline, ' ') + call str_upcase(upvar, var) + if (upvar .eq. 'INTEXP') then + ipar = n + else + ipar = get_par_no(upvar) + endif + if (ipar .eq. 0) then +c it is a variable like 'temp' or 'mf' + call sym_get_real(var, value) + call cvt_real_str(num, l, value, 10, 0, 7, 1) + call str_append(line, lline, num(1:l)) + else +c it is a parameter, we write also the error + call cvt_real_str(num, l, par(ipar), 10, 0, 7, 1) + call str_append(line, lline, num(1:l)) + call str_append(line, lline, ' ') + call cvt_real_str(num, l, err(ipar), 10, 0, 7, 1) + call str_append(line, lline, num(1:l)) + endif + enddo + write(lun,'(a)') line(1:lline) + enddo + close(lun) + 101 write(*,*) + +999 end diff --git a/pgm/bose.f b/pgm/bose.f new file mode 100644 index 0000000..1c74a5d --- /dev/null +++ b/pgm/bose.f @@ -0,0 +1,180 @@ + program BOSE +! ------------ +! +! Simple user function example (straight line). +! + implicit none + external BOSE_FUN + + character str*32 + integer i,l + +!--- +! Welcome message + + call fit_vers(str) + call str_trim(str, str, l) + + type '(X,2A)','Program FIT(BOSE) Version ',str(1:l) + do i=1,l + str(i:i)='-' + enddo + type '(X,2A/)','-----------------------------',str(1:l) + +!--- +! Function title and parameter names +! + call fit_confun('lorenz/bose', bose_fun) ! function title, function + call fit_userpar('BG:Bgr(0)') + call fit_userpar('DB:dBgr/dX') + call fit_userpar('EF:EF') + call fit_userpar('T:Temp') + do i=1,9 + write(str, '(2(a,i1))') 'P',i,':Pos',i + call fit_userpar(str) + write(str, '(2(a,i1))') 'I',i,':Int',i + call fit_userpar(str) + write(str, '(2(a,i1))') 'W',i,':Wid',i + call fit_userpar(str) + enddo + call fit_main + end + + + + real function bose_fun(x,p,n,mode,cinfo) +! ------------------------------------------- + + implicit none + + real x ! x-value + integer n ! number of parameters + real p(n) ! parameters + integer mode ! mode + integer cinfo ! calculation information (see below) + + integer i,i0,j,k + parameter (i0=7) + real x0,w0,y0,db,bg,kf,l0 + real voigt, bose_fact + real xnew(9),ynew(9),wnew(9) + + if (mode .eq. 0) then + + bose_fun=0 + do i=i0,n-2,3 + if (p(i+2) .ne. 0) then ! ignore delta functions (treated later) + bose_fun=bose_fun+p(i+1)*voigt(x-p(i), 0.0, p(i+2)) + if (p(i+2) .lt. 0) then ! make a mirror peak for negative width + x0=x+p(i) + if (i .gt. i0 .and. p(i0+2) .eq. 0.0) x0=x0-2*p(i0) ! shift zero + bose_fun=bose_fun+p(i+1)*voigt(x0, 0.0, -p(i+2)) + endif + endif + enddo + bose_fun=bose_fun*bose_fact(x/p(6))+p(3)+p(4)*x + + elseif (mode .eq. 1) then + +! x-independent part + + do i=i0,n-2,3 + if (p(i+2) .eq. 0) then ! treat delta functions + call fit_delta(p(i),p(i+1)) + endif + enddo + call fit_limit_xrange(-p(5),1e6) + + elseif (mode .eq. 2) then ! transform x -> t + + x0=x+2*p(5) + if (x0 .ge. 0) then + bose_fun=sqrt(x0) + else + bose_fun=0 + endif + + elseif (mode .eq. 3) then ! transform t -> x + + bose_fun=x*x-2*p(5) + + else + if (nint(x) .eq. -1 .and. n .ge. 7) then ! convert from multi-voigt + print * + if (n .eq. 7) then + print *,'Convert from voigt' + else + print *,'Convert from multi-voigt' + endif + db=p(2) + bg=p(1)-p(3)*db ! different bg definition + j=3 + x0=p(3) + y0=p(5) + w0=max(abs(p(6)), abs(p(7))) + l0=p(7) + do i=8,n,5 + if (abs(p(i)) .lt. abs(x0)) then + j=i + x0=p(i) + y0=p(i+2) + w0=max(abs(p(i+3)), abs(p(i+4))) + endif + enddo + k=0 + do i=3,n,5 + if (p(i) .gt. 0 .and. i .ne. j) then + k=k+1 + xnew(k)=p(i) + ynew(k)=p(i+2) + wnew(k)=-max(abs(p(i+3)), abs(p(i+4))) + endif + enddo + p(1)=w0 + p(2)=w0*0.05 + p(3)=bg + p(4)=db + kf=1.55 + call fit_get_real('KFIX', kf) + p(5)=2.0723*kf*kf + p(6)=10 ! default Temp + call fit_get_real('Temp', p(6)) + p(7)=x0 + p(8)=y0 + p(9)=l0 + i=10 + do j=1,k + p(i)=xnew(k) + p(i+1)=ynew(k)/bose_fact(p(i)/p(6)) + p(i+2)=wnew(k) + i=i+3 + enddo + x=i-1 + else + print * + print *,'Up to 9 Lorenzians multiplied with bose_factor' + 1 ,', folded with gaussian' + + endif + print *,'Negative Wid makes a mirror peak at -Pos' + print * + endif + end + + + real function bose_fact(wot) + +! argument: omega[meV] over T[K] + real wot + real K_meV, x + parameter (K_meV=11.6048) + + x=wot*K_meV + if (abs(x) .lt. 1e-5) then + bose_fact=1.0 + else if (x .lt. -30) then + bose_fact=0 + else + bose_fact=x/(1-exp(-x)) + endif + end diff --git a/pgm/brows.f b/pgm/brows.f new file mode 100644 index 0000000..63bbbd8 --- /dev/null +++ b/pgm/brows.f @@ -0,0 +1,216 @@ + program brows + + integer pin, pout, n,l + integer nmax + parameter (nmax=9999) + character filelist*256, name*256 + real xval(nmax), yval(nmax), sig(nmax), rmon(nmax) + external list_none + external cvtyp + character*4 cvtyp + + call sys_get_cmdpar(filelist, l) + + name=cvtyp(0) ! init types + if (filelist .eq. ' ') then + call dat_ask_filelist(filelist, ' ') + endif + call dat_silent + pin=0 + pout=0 + call dat_open_next(filelist, pin, name, pout + & , list_none, nmax, n, xval, yval, sig, rmon) + call dat_get_filename(filelist, l) + call list_file(filelist(1:l)) + end + + + subroutine list_none(name, value) + + character name*(*) + real value + + end + + + subroutine list_file(filename) + + implicit none + + character filename*(*) + + include 'napif.inc' + + integer fileid(NXhandlesize) + integer status, type, level, l, m, length, j, i + integer rank, dim(32) + integer*4 idata(64) + real*4 val + character cdata*80, name*257, class*257 + + external cvtyp, cvt_str + character*4 cvtyp + character tab*80/' '/ + integer cvt_str + +100 format(1x,10a) + + level=0 + call NXswitchReport(0) + status=NXopen(filename, NXacc_read, fileid) + if (status .ne. NX_ok) then + print *,filename,' is probably not a HDF file' + goto 999 + endif +1 status=NXgetnextattr(fileid, name, length, type) + if (status .eq. NX_error) goto 999 + if (status .eq. NX_ok) then + call str_trim(name,name,l) + length=256 + status=NXgetattr(fileid, name(1:l), idata, length, type) + if (status .ne. NX_ok) goto 999 + if (type .eq. nx_char .or. + 1 type .eq. nx_uint8 .or. type .eq. nx_int8) then + length=cvt_str(cdata, idata) + elseif (type .eq. NX_INT32) then + length=12 + write(cdata(1:12), '(i12)') idata(1) + else + length=4 + cdata=cvtyp(type) + endif + write(*,100) tab(1:level*2+1) + 1 ,'| ',name(1:l),':',cdata(1:length) + goto 1 + endif +2 status=NXgetnextentry(fileid, name, class, type) + if (status .eq. NX_error) goto 999 + if (status .eq. NX_ok) then + call str_trim(name, name, l) + call str_trim(class, class, m) + if (class .ne. 'SDS') then + write(*,100) tab(1:level*2+1) + 1 ,'Group: ',name(1:l),', class:',class(1:m) + if (class(1:3) .ne. 'CDF') then + status=NXopengroup(fileid, name(1:l), class(1:m)) + if (status .ne. NX_ok) goto 999 + level=level+1 + endif + goto 2 + endif + status=NXopendata(fileid, name(1:l)) + if (status .ne. NX_ok) goto 999 + status=NXgetinfo(fileid, rank, dim, type) + if (status .ne. NX_ok .or. rank .gt. 16) goto 999 + if (type .eq. nx_char .or. + & type .eq. nx_uint8 .or. type .eq. nx_int8) then + length=dim(1) + status=NXgetslab(fileid, idata, 1, length) + if (status .ne. NX_ok) goto 999 + length=cvt_str(cdata, idata) + else + do i=1,rank + if (dim(i) .gt. 1 ) then + write(cdata,'(a,16i5)') ' array [',(dim(j),j=1,rank) + length=8+5*rank+6 + cdata(length-5:length)='] '//cvtyp(type) + goto 29 + endif + enddo + if (type .eq. NX_INT32) then + status=NXgetslab(fileid, idata, 1, 1) + if (status .ne. NX_ok) goto 999 + length=12 + write(cdata(1:12), '(i12)') idata(1) + elseif (type .eq. NX_FLOAT32) then + status=NXgetslab(fileid, val, 1, 1) + if (status .ne. NX_ok) goto 999 + length=16 + write(cdata(1:16), '(g16.5)') val + else + length=4 + cdata=cvtyp(type) + endif + endif +29 write(*,100) tab(1:level*2+1) + 1 ,name(1:l),':',cdata(1:length) + +3 status=NXgetnextattr(fileid, name, length, type) + if (status .eq. NX_error) goto 999 + if (status .eq. NX_ok) then + call str_trim(name,name,l) + + length=256 + status=NXgetattr(fileid, name(1:l), idata, length, type) + if (status .ne. NX_ok) goto 999 + if (type .eq. nx_char .or. + 1 type .eq. nx_uint8 .or. type .eq. nx_int8) then + length=cvt_str(cdata, idata) + elseif (type .eq. NX_INT32) then + length=12 + write(cdata(1:12), '(i12)') idata(1) + else + length=4 + cdata=cvtyp(type) + endif + write(*,100) tab(1:level*2+1) + 1 ,'| ',name(1:l),':',cdata(1:length) + goto 3 + endif + status=NXclosedata(fileid) + if (status .ne. NX_ok) goto 999 + goto 2 + endif + if (level .gt. 0) then + level=level-1 + status=NXclosegroup(fileid) + if (status .ne. NX_ok) goto 999 + goto 2 + endif +9 status=NXclose(fileid) + if (status .ne. NX_ok) goto 999 + print *,"o.k." +999 call nxlistreport + end + + character*4 function cvtyp(type) + + integer type + integer i + + character*4 t(25)/3*' ','char','f32','f64',13*' ', + & 'i8','u8','i16','u16','i32','u32'/ + + if (type .le. 0 .or. type .gt. 25) then + do i=1,25 + if (t(i) .eq. ' ') write(t(i),'(i2)') i + enddo + if (type .gt. 9999 .or. type .lt. 0) then + cvtyp='????' + else + write(cvtyp, '(i4)') type + endif + else + cvtyp=t(type) + endif + end + + + integer function cvt_str(cdata, idata) + + character cdata*(*) + character str*257 + byte idata(*) + + integer l + + call replace_string(str, idata) + call str_trim(str, str, l) + if (l+2 .gt. len(cdata)) then + cdata='"'//str(1:len(cdata)-5)//'..."' + cvt_str=len(cdata) + else + cdata='"'//str(1:l)//'"' + cvt_str=l+2 + endif + end diff --git a/pgm/chooser.f b/pgm/chooser.f new file mode 100644 index 0000000..3201d4b --- /dev/null +++ b/pgm/chooser.f @@ -0,0 +1,3 @@ + program chooser + call cho_choose('?') + end diff --git a/pgm/clamp.f b/pgm/clamp.f new file mode 100644 index 0000000..0318333 --- /dev/null +++ b/pgm/clamp.f @@ -0,0 +1,152 @@ + program mclamp + +* mclamp = multi convert to lamp format +* ^^^^^^ ^ ^ ^^^^ +* preparation program for 3d plots in LAMP +* converts all the data formats recognized by FIT into LAMP format +* +* > myfit clamp.f +* > mv a.out clamp +* 6.2.01 LK / 26.8.02 MZ +* +* To be done: +* - if the input files do not have the same x-range, the output may be wrong +* - instead of 'number of files to merge' a tolerance in temperature +* should be given, and clamp should merge automatically +* + implicit none + + real int1(4000),tth(4000),step,y(1000),tem(1000) + integer i,j,f,l,n,np,flag,int2(4000) + integer merg, numor1, numor2 + real rnum, ymon + character*20 sample + character*1024 list + character*4 yflag + + call fit_init + + do i=1,4000 + int1(i)=0. + enddo + + print *,'number of files to merge:' + read(*,'(i20)') merg + if (merg .le. 0) merg=1 + print *,'step for merge [0.025]' + read(*,'(f20.0)') step + if (step .eq. 0) step=0.025 + + open(1,file='LAMPascii',status='unknown') + + call dat_ask_filelist(list,' ') + + flag=0 + np=0 + n=0 + + ymon=0 + + do f=1,1000*merg + + call fit_dat_silent + call fit_dat_next_opt(list,flag,0,step) ! DAT + call fit_get_real('Numor', rnum) + numor1=nint(rnum) + if (flag .eq. 0) goto 100 + do j=2,merg + call fit_dat_silent + call fit_dat_next_opt(list,flag,3,step) ! LINK & MERGE + if (flag.eq.0) goto 50 + enddo + call fit_get_real('Numor', rnum) + 50 numor2=nint(rnum) + print *,'read numors',numor1,' to',numor2 + call fit_merge(step) + if (ymon .eq. 0) then + call fit_auto_mon + call fit_get_real('Monitor', ymon) + else + call fit_mon(ymon) + endif + + call fit_get_real('temp',tem(f)) + call fit_get_str('sample',l,sample) + + call fit_get_array('X',tth,4000,np) + call fit_get_array('Y',int1,4000,np) + + do i=1,4000 + int2(i)=nint(int1(i)) + enddo + + write(1,'(6i12)')(int2(j),j=1,np) + + n=n+1 + + enddo + 100 continue + + close(1) + + yflag='1' + 105 print '(x,a)', 'x-axis: 2Theta' + print '(x,2a)', 'y-axis: File number [1] or Temperature [2]' + & ,' (default: 1): ' + read(*,'(a)') yflag + print * + if (yflag.eq.' ') yflag='1' + if ((yflag.ne.'1').and.(yflag.ne.'2')) goto 105 + + open(3,file='LAMP',status='unknown') + + write(3,'(x,a)')'LAMP_FORMAT' + write(3,'(x,a)')'HEADER FILE written by the LAMP APPLICATION' + write(3,*) + write(3,*) + write(3,'(x,a)')'DATA_FILE: LAMPascii' + write(3,'(x,a)')'SOURCE: clamp' + write(3,'(x,a)')'HISTORY: DMC/HRPT' + write(3,*) + write(3,'(x,a,i9)')'X_SIZE:',np + write(3,'(x,a,i9)')'Y_SIZE:',n + write(3,'(x,a,i9)')'Z_SIZE:',1 + write(3,'(x,a)')'FORMAT: Ascii' + write(3,'(x,a)')'TYPE: (3 )Long Integer' + write(3,*) + write(3,'(x,a,i4,a,i3,a)')'MIN,MAX VALUES: w 1: Long dim =',np, + & ' * ',n,' min=0 max=9999' + write(3,*) + write(3,'(x,2a)')'TITLES: ',sample + write(3,'(x,a)')' X: 2Theta' + if (yflag.eq.'1') write(3,'(x,a)')' Y: File Number' + if (yflag.eq.'2') write(3,'(x,a)')' Y: Temperature' + write(3,'(x,a)')' Z: Counts' + write(3,*) + write(3,'(x,a)')'PARAMETERS:' + write(3,'(x,a)')'----------' + write(3,'(x,2a)')'Sample Name= ',sample + write(3,'(x,a)')'Temperature= ' + write(3,*) + write(3,'(x,a)')'X_COORDINATES:' + write(3,'(x,a)')'-------------' + + write(3,'(6f13.4)')(tth(j),j=1,np) + + write(3,*) + write(3,'(x,a)')'Y_COORDINATES:' + write(3,'(x,a)')'-------------' + + do i=1,n + y(i)=i + enddo + + if (yflag.eq.'1') then + write(3,'(6f13.4)')(y(j),j=1,n) + else + write(3,'(6f13.4)')(tem(j),j=1,n) + endif + + close(3) + + end diff --git a/pgm/csc.f b/pgm/csc.f new file mode 100644 index 0000000..8fe19e2 --- /dev/null +++ b/pgm/csc.f @@ -0,0 +1,210 @@ + program csc + +* convert single crystal data +* ^ ^ ^ +* +* converts any data format read by FIT to inputfile for +* TVtueb (E2, HMI Berlin) +* +* > myfit -o csc csc.f +* +* Nov.03 L.Keller +* Dec.03 M.Zolliker (merged DMC + HRPT Version, 1 pass) + + implicit none + +! max. number of files, max. number of points + integer mf,mp + parameter (mf=2000,mp=1600) + + real int1(mp),tth(mp) + real tem(mf),omega(mf),mon(mf),tth0(mf) + real lambda,dtth,lasttth,lastint + real reverse,omegasign + integer i,j,f,l,n,np,flag,nfiles,linstr + integer intall(mp,mf), int2(mp) + character*32 sample,owner,date,title,instr + character*1024 list + + call fit_init + + call dat_ask_filelist(list,' ') + + flag=0 + + call fit_dat_next(list,flag) + + call fit_get_real('lambda',lambda) + call fit_get_str('owner',l,owner) + call fit_get_str('sample',l,sample) + call fit_get_str('title',l,title) + call fit_get_str('date',l,date) + + call fit_get_str('instrument',linstr,instr) + if (instr .eq. 'DMC') then + omegasign=-1 ! Vorzeichenwechsel von A3 + dtth=0.2 + reverse=-1 ! for historical reasons, revert output + np=400 + elseif (instr .eq. 'HRPT') then + omegasign=1 + dtth=0.1 + reverse=-1 + np=1600 + else + write(*,*) 'unknown instrument: ',instr + stop + endif + + write(*,*) + write(*,*)'processing ...' + write(*,*) + + do f=1,mf + + call fit_get_real('a3',omega(f)) + call fit_get_real('temp',tem(f)) + call fit_get_real('smon',mon(f)) + + call fit_get_array('X',tth,mp,n) + call fit_get_array('Y',int1,mp,n) + + j=0 + lasttth=tth(1) + lastint=int1(1) + do i=1,n + do while ((tth(i)-lasttth)/dtth .gt. 1.5) ! step is higher than 1.5 times step + j=j+1 + intall(j,f)=nint((lastint+int1(i))*0.5) + lasttth=lasttth+dtth + enddo + j=j+1 + lastint=int1(i) + intall(j,f)=nint(lastint) + lasttth=tth(i) + enddo +! check if step and number of points is correct + if (nint((tth(n)-tth(1))/dtth) .ne. np-1 .or. j .ne. np) then + print *,'step ',dtth,' np ',j + print *,'theta-range', tth(1), tth(n) + print *,'mismatch' + stop + endif + tth0(f)=tth(1) + +! print '(''+'',i5)',f + print '(a1,i5,a1,$)','+',f,13 + + call fit_dat_silent + call fit_dat_next(list,flag) + + if (flag.eq.0) then + nfiles=f + goto 100 + endif + + enddo + write(*,*)'too many files - fatal error' + stop + 100 continue + write(*,*) + nfiles=f + + open(1,file='csc.asc',status='unknown') + print *,'create csc.asc' + + write(1,'(a14)')'SYS$SYSDEVICE:' + write(1,*) + write(1,'(a6,a64)')'NUMOR ',list + write(1,*) + write(1,'(3a)')'EXPTYPE ',instr(1:linstr),',SINQ' + write(1,*) + write(1,'(a3,x,a32)')'USN',owner + write(1,*) + write(1,'(a3,x,F6.4)')'WAV',lambda + write(1,*) + write(1,'(a,i6,a)') 'WIND W1= 1,',np, + & ' W2= 0, 0 W3= 0, W4= 0, 0' + write(1,*) + write(1,'(a9)')'PASS TTHS' + write(1,*) + write(1,'(a9)')'PRO T_SAM' + write(1,*) + write(1,'(a8,i12)')'MM1 MON=',nint(mon(1)) + write(1,*) + write(1,'(a,e12.5,a,e12.5,a,e12.5)') + & 'RELA TTHS=',1.0*np,',',1.0*np,',',reverse*dtth + write(1,*) + write(1,'(a3,x,a32)')'SAM',sample + write(1,*) + write(1,'(a5,x,a32)')'TITLE',title + write(1,*) + write(1,'(a10,i6,x,a4)')'SETV STEP=',nfiles,'OMGS' + write(1,*) + write(1,'(a12,e12.5)')'READ T_MEAN=',tem(1) + write(1,*) + write(1,'(a4,x,a32)')'DATE',date + write(1,*) + write(1,'(a3,x,a32)')'COM',title + write(1,*) + write(1,*) + + + do f=1,nfiles + + if (reverse .lt. 0) then + j=np + do i=1,np + int2(j)=intall(i,f) + tth(j)=tth0(f)+dtth*(i-1) + j=j-1 + enddo + else + do i=1,np + int2(i)=intall(i,f) + tth(i)=tth0(f)+dtth*(i-1) + enddo + endif + + write(1,'(a9)')'SETVALUES' + write(1,'(a4,F12.4)')'OMGS',omegasign*omega(f) + write(1,*) + write(1,*) + write(1,'(a14)')'PROTOCOLVALUES' + write(1,'(a5,F12.4)')'T_SAM',tem(f) + write(1,*) + write(1,*) + write(1,'(a13)')'MASTER1VALUES' + write(1,'(a3)')'MM1' + write(1,'(a3,i12)')'MON',nint(mon(f)) + write(1,'(a3)')'SL1' + write(1,'(a4,F12.4)')'TTHS',tth0(f) + write(1,'(a4)')'LDET' + write(1,'(a2)')'W1' + + do i=1,np,10 + write(1,'(x,i4,a1,F7.2,10I12)')i,'/',tth(i), + & (int2(j),j=i,min(np,i+9)) + enddo + + write(1,'(a18,a27,a15)')'PEAK','BACKGROUND','INTEGRAL' + write(1,'(F12.4,4i12)')0.0,0,0,0,1 + write(1,'(a16)')'TIM1 1' + write(1,*) + write(1,*) + write(1,'(a14)')'PROTOCOLVALUES' + write(1,'(a5,F12.4)')'T_SAM',tem(f) + write(1,*) + write(1,*) + + enddo + 200 continue + + write(1,'(a14)')'DATE 01-JAN-01' + write(1,*) + write(1,'(a13)')'TIME 01:01:01' + write(1,*) + + close(1) + + end diff --git a/pgm/csvsumvar.f b/pgm/csvsumvar.f new file mode 100644 index 0000000..d242a80 --- /dev/null +++ b/pgm/csvsumvar.f @@ -0,0 +1,319 @@ +! Output variables for list of files in comma separated variable format +! +! interactive usage: csvsumvar +! allows specification of output variables, list of files, and output file +! +! non-interactive usage: csvsumvar [list of files] {output filename} +! relies upon environment variables `dat_defspec` and `sumvar` to +! determine which variables are included in output (same as plain sumvar) +! The output filename is optional, if omitted output is sent to STDOUT. +! +! Cobbled together from the guts of sumvar.f by Gregory Tucker -- 2017-11-02 + + program csvsumvar +! -------------- + implicit none + + integer nmax + parameter (nmax=10000) + + character filelist*2048, files*2048, spec*16, sumvars*256 + character var*64, filename*128 + integer l, k, km, i, n, pin, pout, lun, iostat + integer first,last + real xval(nmax), yval(nmax), sig(nmax), rmon(nmax) + + external list_values, list_vars, list_nix + + integer mcols + parameter (mcols=32) + integer ncol, nframes + real cnts, fmt(mcols), vmin(mcols), vmax(mcols) + character line*1024, names(mcols)*32, time*6 + character formatted(mcols)*128 + common /sum_com/ncol, nframes, cnts, fmt, vmin, vmax + & ,line, names, formatted, time + +! call fit_init + call sys_get_cmdpar(files,l) ! l is set by sys_get_cmdpar to the length of returned character variable, but isn't used + call dat_def_options('entry=') + + ! check if files contains the output filename too + filename=' ' + call findfirstlastnonblank(files,first,last) + if (last-first .gt. 0) then + files=files(first:last) ! remove any preceeding or trailing spaces + i=index(files(first:last)," ") ! look for any internal spaces + if (i .gt. 0) then + filename=files(first+i:last) ! after space is filename + files=files(first:first+i-1) ! before space is files specification + endif + endif + + + if (files .eq. ' ') then + call dat_ask_filelist(filelist, ' ') + if (filelist .eq. ' ') goto 91 + call dat_silent + pin=0 + pout=0 + call dat_open_next(filelist, pin, line, pout + & , list_nix, nmax, n, xval, yval, sig, rmon) + endif + call sys_getenv('dat_defspec', spec) + call sys_getenv('sumvar', sumvars) + if (sumvars .eq. ' ') call sys_getenv('sumvars', sumvars) + if (sumvars .eq. ' ') then + call sys_getenv('sumvar_'//spec, sumvars) + endif + if (sumvars .eq. ' ') then + sumvars= + & 'Numor:5,Date:16,Title:25,Temp:10.3,dTemp:8.3,sMon:10.' + endif + if (files .eq. ' ') then + print * + print *,' Variables listed by default:' + call str_trim(sumvars, sumvars, l) + print '(x,a)',sumvars(1:l) + print * +30 print *,' Enter a new variable list, for default' + & ,', or ? for help:' + read(*, '(a)', err=91, end=91) line + if (line .eq. '?') then + print * + &,'--------------------------------------------------------------' + print * + &,' You may configure the default with the environment variables' + &,' sumvar or sumvar_',spec + print * + &,' Example (to be typed on the Unix prompt):' + print * + print '(x,3a)' + &,'> setenv sumvars "',sumvars(1:l),'"' + print * + print * + &,' For each column, write the variable name and the column' + &,' width, separated by a colon. For numeric values, give' + &,' also the number of digits after decimal point, separated' + &,' with a point. The columns have to be separated by a comma.' + &,' The column title is right justified, if a point is present.' + print * + print * + &,' List of variables in the first file:' + call dat_silent + pin=0 + pout=0 + call dat_open_next(filelist, pin, files, pout + & , list_vars, nmax, n, xval, yval, sig, rmon) + call list_vars('*', 0.0) + print * + &,'--------------------------------------------------------------' + goto 30 + endif + if (line .ne. ' ') sumvars=line + print * + print *,'Output file name (default: terminal):' + read(*, '(a)', err=91, end=91) filename + else + filelist=files + endif + if (filename .eq. ' ') then + lun=6 + else + lun=1 + call sys_open(lun, filename, 'w', iostat) + if (iostat .ne. 0) then + print *,'can not open',filename + stop + endif + call findfirstlastnonblank(sumvars,first,last) + print *,"saving output ",sumvars(first:last) + call findfirstlastnonblank(files,first,last) + print *,"from files ",files(first:last)," to ",filename + endif + + call str_trim(sumvars, sumvars, last) ! last is the length of sumvars without trailing space(s) + sumvars(min(len(sumvars),last+1):)=',' + + ncol=0 + k=0 + line=' ' +35 km=index(sumvars(k+1:),',') + if (km .gt. 0) then + if (km .gt. 1 .and. ncol .lt. mcols) then + ncol=ncol+1 + var=sumvars(k+1:k+km-1) + i=index(var, ':') + if (i .eq. 0) then + call str_trim(names(ncol), var, n) + fmt(ncol)=16.3 + else + call str_trim(names(ncol), var(1:i-1), n) + fmt(ncol)=0 + read(var(i+1:),*,err=36) fmt(ncol) +36 if (fmt(ncol) .eq. 0) fmt(ncol)=16.3 + endif + call findfirstlastnonblank(names(ncol),first,last) + if (last-first .gt. 0) then + formatted(ncol)='"'//names(ncol)(first:last)//'",' ! stash for output + endif + call str_upcase(names(ncol), names(ncol)) + endif + k=k+km + goto 35 + endif + +38 if (ncol .le. 1) goto 91 + call putonline(formatted,ncol,line) + call findfirstlastnonblank(line,first,last) + if (last-first .gt. 1) then + write(lun, '(a)') line(first:last-1) ! cut off the trailing comma + endif + + pin=0 + pout=0 +40 line=' ' + call fillspaces(formatted,ncol) ! reset the formatted column strings (only up to the number of columns) + call dat_def_options('entry=*') + call dat_silent + call dat_open_next(filelist, pin, files, pout + & , list_values, nmax, n, xval, yval, sig, rmon) ! this calls subroutine list_values for the pin_th entry of filelist + call putonline(formatted,ncol,line) + call findfirstlastnonblank(line,first,last) + if (last-first .gt. 1) then + write(lun, '(a)') line(first:last-1) ! cut off the trailing comma + endif + + if (pin .le. len(filelist)) goto 40 +91 end + + + subroutine list_nix(name, value) + character name*(*) + real value + end + + subroutine list_vars(name, value) + character name*(*) + real value + + integer l/0/,j + character line*80 + save line, l + + if (name .eq. 'ShowLevel') return + j=index(name, '=')-1 + if (j .le. 0) call str_trim(name, name, j) + if (l+j .ge. 80 .or. name .eq. '*') then + print *,line(1:l) + l=0 + endif + if (l .gt. 0) then + line(l+1:l+1)=',' + l=l+1 + endif + line(l+1:)=name(1:j) + l=min(80,l+j) + end + + + subroutine list_values(name, value) + character name*(*) + real value + + integer i,l,j,first,last + character unam*32, form*8, field*128 + real f + + integer mcols + parameter (mcols=32) + integer ncol, nframes + real cnts, fmt(mcols), vmin(mcols), vmax(mcols) + character line*1024, names(mcols)*32, time*6 + character formatted(mcols)*128 + common /sum_com/ncol, nframes, cnts, fmt, vmin, vmax + & ,line, names, formatted, time + + if (name .eq. 'ranges') then + nframes=nint(value) + elseif (name .eq. 'Counts') then + cnts=value + elseif (len(name) .gt. 5) then + if (name(1:5) .eq. 'Date=') then + time=name(17:) + endif + endif + j=index(name, '=') + if (j .gt. 1) then ! string + call str_upcase(unam, name(1:j-1)) + else + call str_upcase(unam, name) + endif + do i=1,ncol + if (unam .eq. names(i)) then + f=fmt(i)+1 + l=int(f+0.001) + if (l .ge. len(field)) l=len(field) + field(1:)=' ' + if (j .gt. 0) then ! string + field(1:l)=' '//name(j+1:) + else + if (f-l .lt. 0.04) then + write(form, '(a,I2,a)') '(i',l,')' + write(field(1:l), form) nint(value) + else + write(form, '(a,f5.1,a)') '(f',f,')' + write(field(1:l), form) value + endif + endif + if (field(1:1) .ne. '-') field(1:1)=' ' + call findfirstlastnonblank(field,first,last) + formatted(i)='"'//field(first:last)//'",' + endif + enddo + end + + subroutine findfirstlastnonblank(field,intf,intl) + character field*(*) + integer intf,intl + intl=LEN(field) + intf=1 + if (intl .gt. 0) then + do while (field(intf:intf) .eq. ' ') + intf=intf+1 + if (intf .ge. intl) exit + enddo + do while (field(intl:intl) .eq. ' ') + intl=intl-1 + if (intl .le. intf) exit + enddo + endif + end + + subroutine fillspaces(vecchars,lv) + integer lv + character vecchars(lv)*(*) + integer i + do i=1,lv + vecchars(i)=' ' + enddo + end + + subroutine putonline(vecchars,lv,outline) + integer lv + character vecchars(lv)*(*), outline*(*) + integer lo,i,first,last,k,thisl + lo=len(outline) + k=0 + do i=1,lv + call findfirstlastnonblank(vecchars(i),first,last) + if (last-first .gt. 0) then + if (k .lt. lo) then + thisl=last-first+1 + outline(k+1:k+thisl)=vecchars(i)(first:last) + k=k+thisl + endif + endif + if (k .ge. lo) exit ! shortcut if we've run past the end of the outline + enddo + end diff --git a/pgm/datafilepath b/pgm/datafilepath new file mode 100755 index 0000000..bdafbd0 --- /dev/null +++ b/pgm/datafilepath @@ -0,0 +1,97 @@ +#!/usr/bin/env python3 +import os +import sys +import time + +USAGE = """ +Usage: + + datafilepath [] [] + +set current proposal for an instrument for fit +""" + +instrument = os.environ.get('dat_defspec', None) +proposal = os.environ.get('dat_proposal', None) +printit = True + +filename = '/tmp/.senv_%s.%s' % (os.environ['USER'], os.getppid()) +lines = [] +envdict = {} +try: + with open(filename, 'r') as f: + for line in f: + if not line.startswith('setenv '): + if line.strip() != '#': + lines.append(line) + continue + head, name, value = line.split() + if value[0] == "'" and value[-1] == "'": + value = value[1:-1] + envdict[name] = value +except FileNotFoundError: + lines = ['test $$ = %s && rm -f %s' % (os.getppid(), filename)] + +proposal = os.environ.get('dat_proposal', envdict.get('dat_proposal', None)) +if len(sys.argv) > 1: + proposal = sys.argv[1] +elif proposal is None: + if printit: + print(USAGE) + printit = False + proposal = input('proposal: ') +envdict['dat_proposal'] = proposal + +instrument = os.environ.get('dat_defspec', envdict.get('dat_defspec', None)) +if len(sys.argv) > 2: + instrument = sys.argv[2] +elif instrument is None: + if printit: + print(USAGE) + printit = False + instrument = input('instrument: ') +envdict['dat_defspec'] = instrument + +if len(sys.argv) > 3: + envdict['dat_defyear'] = sys.argv[3] + +key = 'dat_spec_%s' % instrument +datspec = envdict.get(key, os.environ.get(key, None)) +if datspec is None: + if printit: + print(USAGE) + printit = False + datspec = input('file path (containing ****** for numor): ') + +elements = [] +for spc in datspec.split(','): + res = [] + for elm in spc.split('/'): + if elm.startswith(instrument + '%%%%n'): + res[-1] = proposal + res.append(elm) + elements.append('/'.join(res)) +datspec = ','.join(elements) +envdict[key] = datspec + +with open(filename, 'w') as f: + for key, value in envdict.items(): + f.write("setenv %s '%s'\n#%s\n" % (key, value, os.environ.get(key, ''))) + f.write('\n'.join(lines)) + f.write('\n') + +year = envdict.get('dat_defyear', time.strftime('%Y' , time.localtime())) +datspec = datspec.replace('%%%%', year) + +if len(sys.argv) < 2: + if printit: + print(USAGE) + printit = False + +print('data file path:\n') +last = '' +for element in datspec.split(','): + if '/' not in element: + element = last.rsplit('.', 1)[0] + element + print(element) + last = element diff --git a/pgm/deteff.f b/pgm/deteff.f new file mode 100644 index 0000000..c61e692 --- /dev/null +++ b/pgm/deteff.f @@ -0,0 +1,190 @@ + program deteff + +* 1. linearer Fit (A+xB) einer Detektoreichmessung * +* 2. Normierung der Daten mit der verfeinerten Funktion * +* 3. Speicherung im Format fuer deteff.dat * +* 27.4.99 keller, Aenderung 15.7.99,28.9.99 * +* Aenderung 3.11.99: schneidet Punkte die 0 sind weg (HRPT!) * +* 7.3.00, 24.5.02, 9.8.02 * +* * +* > myfit deteff.f * +* > cp a.out deteff * + + implicit none + + external FIT_LIN_FUN + + real par(16),err(16),int(2000),tth(2000),par1,ti,step,tf,lim + integer n,i,nret,l,count + character*36 spec + character*5 flag,flag2 + character*78 title + + call fit_init + +! Function title and parameter names + call fit_userfun('STRAIGHT LINE', fit_lin_fun) ! function title, function + call fit_userpar('Bg(0)') ! first parameter: background at zero + call fit_userpar('dBg/dX') ! second parameter: slope + + call fit_dat_options('cal=0') ! turns off calibration of raw data + + do i=1,2000 + int(i)=0. + enddo + + + call sys_getenv('dat_defspec',spec) + if (spec.eq.' ') spec='DMC' + call str_trim(spec,spec,l) ! Laenge bestimmen (l) + + 100 write(*,*) + write(*,'(x,a)')'DMC = 1 / HRPT = 2' + write(*,'(x,3a,$)')'Instrument (default: ',spec(1:l),'): ' + read(*,'(a)')flag ! ^ schreibt spec von + ! Zeichen 1 bis l + + call str_upcase(flag,flag) ! schreibt Inhalt von flag gross + if (flag.eq.'1') flag='DMC' + if (flag.eq.'2') flag='HRPT' + if (flag.ne.' ') then + if (flag.ne.'DMC' .and. flag.ne.'HRPT') goto 100 + spec=flag + endif + + call sys_setenv('dat_defspec',spec) + + +C WRITE (*,'(X,A,$)') 'Calibration data files (e.g.: DMC/1999/ +C A4-34) : ' +C READ (*,'(A)') FILES + +C CALL FIT_DAT(FILES) + +C call fit_dat(' ') +C call fit_merge(0.02) + call fit_dat_merge(' ',0.02) ! ersetzt fit_dat und fit_merge + call fit_get_array('X',tth,2000,nret) + call fit_get_array('Y',int,2000,nret) + + write(*,*) + write(*,'(x,a,$)')'Title of detector efficiency file: ' + read(*,'(a)')title + + if (title.eq.' ') then + if (nret.eq.400) title='DMC detector efficiency file' + if (nret.eq.1600) title='HRPT detector efficiency file' + endif + + if (nret.ne.400) then + if (nret.ne.1600) then + write(*,*) + write(*,*) + write(*,*) + write(*,*) + write(*,*)' **************** WARNING ***************' + write(*,*) + write(*,*)' The number of data points does not match ' + write(*,*)' the number of detectors of DMC or HRPT' + write(*,*) + write(*,*) + write(*,'(a,$)')' continue? (y/N): ' + read(*,'(a)')flag2 + call str_upcase(flag2,flag2) + if (flag2.ne.'Y') then + write(*,'(a)')' program aborted' + goto 102 + endif + endif + endif + + write(*,*) + write(*,'(x,a,$)')'slope=0 ? (Y/n): ' + read(*,'(a)') flag2 + call str_upcase(flag2,flag2) + + TI=TTH(1) + TF=TTH(NRET) + STEP=(TTH(NRET)-TTH(1))/(NRET-1.) + + PAR1=0 + DO I=1,NRET + PAR1=PAR1+INT(I) + ENDDO + PAR(1)=PAR1/NRET ! starting value for Bg(0) + PAR(2)=0. ! starting value for slope + ERR(1)=1. + ERR(2)=1. + + lim=par(1)/4. ! points below lim are excluded! + + call fit_exclude(0.,0.,0.,lim) + + CALL FIT_FUN(7,2,PAR,ERR) + if (flag2 .ne. 'N') call fit_fix(2) + CALL FIT_FIT(0) + CALL FIT_FIT(0) + CALL FIT_FIT(0) + CALL FIT_GET_ARRAY('P',PAR,2,N) ! reads fit parameters + CALL FIT_GET_ARRAY('E',ERR,2,N) ! reads parameter errors + + OPEN (1,FILE='deteff.dat',STATUS='UNKNOWN') + + WRITE (1,'(2A)')'#',TITLE + if (nret.gt.999) write(1,'(I4)')nret + if (nret.lt.1000) write(1,'(I3)')nret + + count=0 ! count: # of excluded points + + DO 101 I=1,NRET + + if (int(i).lt.lim) then + write(1,'(F8.6)')0.0 + count=count+1 + else + WRITE(1,'(F8.6)')INT(I)/(PAR(1)+((I-1)*STEP+TI)*PAR(2)) + endif + + 101 CONTINUE + + CLOSE(1) + + call str_trim(spec,spec,l) + WRITE(*,*) + WRITE(*,*) + WRITE(*,*) + WRITE(*,*) + WRITE(*,*)' New detector efficiency file: deteff.dat' + WRITE(*,'(3a)')' Copy this file into the directory /data/ + Alnslib/data/',spec(1:l),'//' + WRITE(*,*) + WRITE(*,*)' Normalization function: P(1)+2th*P(2)' + WRITE(*,'(A,F12.5,A,F10.5,A,F10.5,A,F9.5,A)')' P(1)=' + A,PAR(1),'(',ERR(1),'), P(2)=',PAR(2),'(',ERR(2),')' + WRITE(*,*) + if (count.gt.0) write (*,*)' Number of excluded points: ',count + WRITE(*,*) + + 102 END + + + real function fit_lin_fun(x,p,n,mode,cinfo) +! ------------------------------------------- + + implicit none + + real x ! x-value + integer n ! number of parameters + real p(n) ! parameters + integer mode ! mode + integer cinfo ! calculation information (see below) + + if (mode .eq. 0) then + +! Define here your own function + + fit_lin_fun=p(1)+x*p(2) + + endif + end + diff --git a/pgm/deteff2.f b/pgm/deteff2.f new file mode 100644 index 0000000..25e8d26 --- /dev/null +++ b/pgm/deteff2.f @@ -0,0 +1,203 @@ + program deteff + +* 1. linearer Fit (A+xB) einer Detektoreichmessung * +* 2. Normierung der Daten mit der verfeinerten Funktion * +* 3. Speicherung im Format fuer deteff.dat * +* 27.4.99 keller, Aenderung 15.7.99,28.9.99 * +* Aenderung 3.11.99: schneidet Punkte die 0 sind weg (HRPT!) * +* 7.3.00,24.5.02,9.8.02 * +* 16.01.03 zolliker (Fragt, ob untergrund flach sein soll) * +* * +* > myfit -o deteff deteff.f * + + implicit none + + external FIT_LIN_FUN + + real par(16),err(16),int(2000),tth(2000),par1,ti,step,tf,lim + integer n,i,nret,l,count + character*36 spec + character*5 flag,flag2 + character*78 title + real flat + + call fit_init + +! Function title and parameter names + call fit_userfun('STRAIGHT LINE', fit_lin_fun) ! function title, function + call fit_userpar('Bg(0)') ! first parameter: background at zero + call fit_userpar('dBg/dX') ! second parameter: slope + + call fit_dat_options('cal=0') ! turns off calibration of raw data + + do i=1,2000 + int(i)=0. + enddo + + + call sys_getenv('dat_defspec',spec) + if (spec.eq.' ') spec='DMC' + call str_trim(spec,spec,l) ! Laenge bestimmen (l) + + 100 write(*,*) + write(*,'(x,a)')'DMC = 1 / HRPT = 2' + write(*,'(x,3a,$)')'Instrument (default: ',spec(1:l),'): ' + read(*,'(a)')flag ! ^ schreibt spec von + ! Zeichen 1 bis l + + call str_upcase(flag,flag) ! schreibt Inhalt von flag gross + if (flag.eq.'1') flag='DMC' + if (flag.eq.'2') flag='HRPT' + if (flag.ne.' ') then + if (flag.ne.'DMC' .and. flag.ne.'HRPT') goto 100 + spec=flag + endif + + write(*,*) + write(*,'(x,a,$)') 'Flat Background [y]' + read(*,'(a)') flat + call str_upcase(flat, flat) + + call sys_setenv('dat_defspec',spec) + + +C WRITE (*,'(X,A,$)') 'Calibration data files (e.g.: DMC/1999/ +C A4-34) : ' +C READ (*,'(A)') FILES + +C CALL FIT_DAT(FILES) + +C call fit_dat(' ') +C call fit_merge(0.02) + call fit_dat_merge(' ',0.02) ! ersetzt fit_dat und fit_merge + call fit_get_array('X',tth,2000,nret) + call fit_get_array('Y',int,2000,nret) + + write(*,*) + write(*,'(x,a,$)')'Title of detector efficiency file: ' + read(*,'(a)')title + + if (title.eq.' ') then + if (nret.eq.400) title='DMC detector efficiency file' + if (nret.eq.1600) title='HRPT detector efficiency file' + endif + + if (nret.ne.400) then + if (nret.ne.1600) then + write(*,*) + write(*,*) + write(*,*) + write(*,*) + write(*,*)' **************** WARNING ***************' + write(*,*) + write(*,*)' The number of data points does not match ' + write(*,*)' the number of detectors of DMC or HRPT' + write(*,*) + write(*,*) + write(*,'(a,$)')' continue? (y/n): ' + read(*,'(a)')flag2 + call str_upcase(flag2,flag2) + if (flag2.ne.'Y') then + write(*,'(a)')' program aborted' + goto 102 + endif + endif + endif + + TI=TTH(1) + TF=TTH(NRET) + STEP=(TTH(NRET)-TTH(1))/(NRET-1.) + + PAR1=0 + DO I=1,NRET + PAR1=PAR1+INT(I) + ENDDO + PAR(1)=PAR1/NRET ! starting value for Bg(0) + PAR(2)=0. ! starting value for slope + ERR(1)=1. + ERR(2)=1. + + lim=par(1)/4. ! points below lim are excluded! + + call fit_exclude(0.,0.,0.,lim) + + CALL FIT_FUN(7,2,PAR,ERR) + + if (flat .eq. 'Y') call fit_fix(2) ! fix slope + + CALL FIT_FIT(0) + CALL FIT_FIT(0) + CALL FIT_FIT(0) + CALL FIT_GET_ARRAY('P',PAR,2,N) ! reads fit parameters + CALL FIT_GET_ARRAY('E',ERR,2,N) ! reads parameter errors + + OPEN (1,FILE='deteff.dat',STATUS='UNKNOWN') + + WRITE (1,'(2A)')'#',TITLE + if (nret.gt.999) write(1,'(I4)')nret + if (nret.lt.1000) write(1,'(I3)')nret + + count=0 ! count: # of excluded points + + DO 101 I=1,NRET + + if (int(i).lt.lim) then + write(1,'(F8.6)')0.0 + count=count+1 + else + WRITE(1,'(F8.6)')INT(I)/(PAR(1)+((I-1)*STEP+TI)*PAR(2)) + endif + + 101 CONTINUE + + CLOSE(1) + + call str_trim(spec,spec,l) + WRITE(*,*) + WRITE(*,*) + WRITE(*,*) + WRITE(*,*) + WRITE(*,*)' New detector efficiency file: deteff.dat' + WRITE(*,'(3a)')' Copy this file into the directory /data/ + Alnslib/data/',spec(1:l),'//' + WRITE(*,*) + WRITE(*,*)' Normalization function: P(1)+2th*P(2)' + WRITE(*,'(A,F12.5,A,F10.5,A,F10.5,A,F9.5,A)')' P(1)=' + A,PAR(1),'(',ERR(1),'), P(2)=',PAR(2),'(',ERR(2),')' + WRITE(*,*) + if (count.gt.0) write (*,*)' Number of excluded points: ',count + WRITE(*,*) + + 102 END + + + real function fit_lin_fun(x,p,n,mode,cinfo) +! ------------------------------------------- + + implicit none + + real x ! x-value + integer n ! number of parameters + real p(n) ! parameters + integer mode ! mode + integer cinfo ! calculation information (see below) + + if (mode .eq. 0) then + +! Define here your own function + + fit_lin_fun=p(1)+x*p(2) + + elseif (mode .lt. 0) then + +! Use this part to do some initialisations. +! (e.g. read files, write out comments on your user function) +! This section is called by FIT_FUN (command FUN) + + type * + type *, 'to define your own user function leave FIT and type MYFIT' + type *, 'Example: STRAIGHT LINE' + + endif + end + diff --git a/pgm/getdatafilepath b/pgm/getdatafilepath new file mode 100755 index 0000000..0d00441 --- /dev/null +++ b/pgm/getdatafilepath @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 +import os +import sys +import time +from glob import glob + +USAGE = """ +Usage: + + getdatafilepath + +get datafile path +""" + +if len(sys.argv) != 4: + print(USAGE) + sys.exit() + +instrument = sys.argv[1] +year = sys.argv[2] +number = int(sys.argv[3]) +key = 'dat_spec_%s' % instrument +last = '' +for datspec in os.environ[key].replace('%%%%', year).split(','): + if '/' not in datspec: + datspec = last.rsplit('.', 1)[0]+datspec + last = datspec + for i in range(10,0,-1): + pat = '*' * i + if datspec.find(pat) >= 0: + break + else: + pat = None + + if pat: + fmt = '%%.%dd' % len(pat) + datspec = datspec.replace(pat, fmt % number) + if year < '2020': + datspec = datspec.replace('###', '%.3d' % (number // 1000)) + if os.path.isfile(datspec): + print(datspec) + break + else: + datspec = datspec.replace('###', '*') + files = glob(datspec) + if len(files) == 1: + print(files[0]) + break +else: + print('%s:%s:%d' % (instrument, year, number)) diff --git a/pgm/polcal.f b/pgm/polcal.f new file mode 100644 index 0000000..edceef3 --- /dev/null +++ b/pgm/polcal.f @@ -0,0 +1,444 @@ + program polcal + +c this program work, because the dat_tasmad_read routine is +c coding the polarisation information into the x-value ip.b +c where i is 1..9 for xx, yx, yz, zy, yy, zy, xz, yz, zz +c p is 1..4 for ++, +-, -+, -- +c b is 0 for signal and 1 for background + + implicit none + character files*1024 + character bfiles*1024 + character line*2048 + character word*1024 + + integer l, pos + integer i + real xx(36), yy(36), ss(36) + real cnts(9,4,2), sigma(9,4,2) + integer n + character mukind*20 + character single*1024 + logical merge,bgr + integer listflag + real numor, mon, lastnumor + integer status + integer iostat + integer summary,sumx,sumy + common summary,sumx,sumy + + call sys_get_cmdpar(line, l) + if (line .eq. ' ') then + print * + print *,'polcal calculates polarisation matrices from files ', + 1 'measured with the' + print *,'polmat command on TASP/MuPAD' + print * + print *,'Usage:' + print *, + 1 'polcal [-m] [-b ]' + print * + print *,'Options:' + print * + print *,' -m' + print *,' merge files' + print *,' without this option, for every file a polarisation' + print *,' matrix is calculated' + print * + print *,' -b' + print *,' treat numors given before -b as signal,' + print *,' numors after -b as background.' + print *,' the files are merged even without the -m option.' + print *,' without this option, polcal sorts out automatically' + print *,' signal and background files' + print * + print *,' -f' + print *,' make summary files fort.11 etc. with the' + print *,' matrix elements' + print * + print *,' -f1213' + print *,' make a summary of Pxy vs Pxz (output file fort.1)' + print * + goto 9 + endif + +c Argument processing + pos=1 + files=' ' + merge=.false. + summary=0 + bgr=.false. + call str_get_word(line, pos, word) +1 do while (word .ne. ' ') + if (word .eq. '-b') then + call str_get_word(line, pos, bfiles) + bgr=.true. + merge=.true. + elseif (word .eq. '-m') then + merge=.true. + elseif (word(1:2) .eq. '-f') then + if (word(3:) .eq. ' ') then + summary=1 + else + summary=2 + sumx=0 + sumy=0 + read(word(3:4), *, iostat=iostat) sumx + read(word(5:6), *, iostat=iostat) sumy + endif + else + if (files .eq. ' ') then + files = word + else + call str_trim(files, files, l) + if (l .lt. len(files) - 1) then + l=l+1 + files(l:l)=',' + files(l+1:) = word + endif + endif + endif + call str_get_word(line, pos, word) + enddo + + call sys_setenv('dat_defspec','TASP') + call fit_init_silent + call clr_me(cnts) + call clr_me(sigma) + + if (merge) then + if (bgr) then + call fit_dat_silent + call fit_dat(files) + call fit_merge(0.2) ! merge signal and bgr + call fit_get_real('Monitor', mon) + call fit_get_array('X', xx, 36, n) + call fit_get_array('Y', yy, 36, n) + call fit_get_array('S', ss, 36, n) + call fill_me(cnts, xx, yy, n, 1) ! 1 = force to signal + call fill_me(sigma, xx, ss, n, 1) + call calc_pol(cnts, sigma, status) + if (status .eq. 0) then + print *,'NO DATA' + goto 9 + else + call info_line(files, 'S', 1) + endif + call fit_dat_silent + call fit_dat(bfiles) + call fit_merge(0.2) ! merge signal and bgr + call fit_mon(mon) + call fit_get_array('X', xx, 36, n) + call fit_get_array('Y', yy, 36, n) + call fit_get_array('S', ss, 36, n) + call fill_me(cnts, xx, yy, n, 2) ! 2 = force to bgr + call fill_me(sigma, xx, ss, n, 2) + call calc_pol(cnts, sigma, status) + if (status .eq. 0) then + print *,'NO DATA' + else + call info_line(bfiles, 'B', 2) + endif + else + call fit_dat_silent + call fit_dat(files) + call fit_merge(0.01) ! do not merge signal and bgr + call fit_get_array('X', xx, 36, n) + call fit_get_array('Y', yy, 36, n) + call fit_get_array('S', ss, 36, n) + call fill_me(cnts, xx, yy, n, 0) + call fill_me(sigma, xx, ss, n, 0) + call calc_pol(cnts, sigma, status) + if (status .eq. 0) then + print *,'NO DATA' + else + call info_line(files, 'S', 1) + if (status .eq. 2) call info_line(files, 'B', 1) + endif + endif + else + listflag=0 + lastnumor = -1 + do i=1,99999 + call fit_dat_silent + call fit_dat_next(files, listflag) + if (listflag .eq. 0) goto 9 + mukind=' ' + call fit_get_str('mukind', l, mukind) + if (mukind .ne. 'background') then + call clr_me(cnts) + call clr_me(sigma) + if (mukind .eq. ' ') goto 19 + endif + call fit_get_array('X', xx, 36, n) + call fit_get_array('Y', yy, 36, n) + call fit_get_array('S', ss, 36, n) + call fill_me(cnts, xx, yy, n, 0) + call fill_me(sigma, xx, ss, n, 0) + call calc_pol(cnts, sigma, status) + if (status .eq. 0) goto 19 + call fit_get_real('Numor', numor) + if (mukind .eq. 'background') then + if (lastnumor .eq. -1) then + print *,'WARNING: background only' + call cvtnumor(single, numor) + call info_line(single, ' ', 1) + else + call cvtnumor(single, lastnumor) + call cvtnumor(single, numor) + call info_line(single, 'B', 2) + endif + else + call cvtnumor(single, numor) + call info_line(single, ' ', 1) + lastnumor=numor + endif +19 continue + enddo + endif +9 end + + + subroutine cvtnumor(result, numor) + character result*(*) + real numor + integer l + + write(result,'(f10.0)') numor + call str_first_nonblank(result, l) + result = result(l:9) + end + + + subroutine info_line(file, type, prthold) + + character file*(*), type*(*) + integer prthold + + character line1*132/' '/, line2*132/' '/ + real vmin(5), vmax(5), mean(5), diff(5) + integer i,l + character line*132, label*4 + logical secondline + + if (prthold .eq. 2) then + if (line1(1:3) .eq. ' ') line1(1:3)='sig' + call str_trim(line1, line1, l) + print '(x,a)',line1(1:l) + call str_trim(line2, line2, l) + if (l .gt. 1) print '(x,a)',line2(1:l) + endif + + do i=1,5 + vmin(i)=0 + vmax(i)=0 + enddo + if (type .eq. 'B') then + call meta_real_range('QH', vmin(1), vmax(1)) + call meta_real_range('QH_B', vmin(1), vmax(1)) + call meta_real_range('QK', vmin(2), vmax(2)) + call meta_real_range('QK_B', vmin(2), vmax(2)) + call meta_real_range('QL', vmin(3), vmax(3)) + call meta_real_range('QL_B', vmin(3), vmax(3)) + call meta_real_range('EN', vmin(4), vmax(4)) + call meta_real_range('EN_B', vmin(4), vmax(4)) + call meta_real_range('TEMP', vmin(5), vmax(5)) + call meta_real_range('TEMP_B', vmin(5), vmax(5)) + label='bgr' + else + call meta_real_range('QH', vmin(1), vmax(1)) + call meta_real_range('QH_S', vmin(1), vmax(1)) + call meta_real_range('QK', vmin(2), vmax(2)) + call meta_real_range('QK_S', vmin(2), vmax(2)) + call meta_real_range('QL', vmin(3), vmax(3)) + call meta_real_range('QL_S', vmin(3), vmax(3)) + call meta_real_range('EN', vmin(4), vmax(4)) + call meta_real_range('EN_S', vmin(4), vmax(4)) + call meta_real_range('TEMP', vmin(5), vmax(5)) + call meta_real_range('TEMP_S', vmin(5), vmax(5)) + if (type .eq. 'S') then + label='sig' + else + label=' ' + endif + endif + + do i=1,5 + mean(i) = 0.5 * (vmin(i) + vmax(i)) + diff(i) = 0.5 * (vmax(i) - vmin(i)) + enddo +! temperature tolerance 10 % + secondline = (diff(5) .gt. mean(5) * 0.1) +! q tolerance 0.003 + do i=1,3 + if (diff(i) .gt. 0.003) secondline = .true. + enddo +! en tolerance 0.01 + if (diff(4) .gt. 0.01) secondline = .true. + + call str_trim(file, file, l) + write(line1, '(2a,3f8.3,'' en:'',f8.2,'' T:'',f8.3,2a)') + 1 label, 'q:', mean, ' file(s): ',file(1:l) + + line2=' ' + if (secondline) then + line=' ' + do i=1,5 + if (i .eq. 4) then + write(line(i*8-7:i*8), '(f8.2)') diff(i) + else + write(line(i*8-7:i*8), '(f8.3)') diff(i) + endif + enddo + write(line2,'(7a)') ' +/-',line(1:24),' +/-',line(25:32) + 1 ,' +/-',line(33:40),' <-- mixed values!!!' + endif + + if (prthold .gt. 0) then + call str_trim(line1, line1, l) + print '(x,a)',line1(1:l) + call str_trim(line2, line2, l) + if (l .gt. 1) print '(x,a)',line2(1:l) + endif + end + + + subroutine calc_pol(cnts, sigma, status) + implicit none + real cnts(9,4,2), sigma(9,4,2) + integer status + + integer i,i1,i2,k,ip,im + real sum2, d2, sum, pij, dpij2, c1, c2, sq1, sq2 + character line*80 + + real pm(3,4), sm(3,4) + logical done,bgr,matoutput + integer l + integer summary,sumx,sumy + common summary,sumx,sumy + real numor + + status=0 + matoutput = .false. +c k=1: normal polarity, k=2: NEG. polarity + do k=1,2 + done = .false. + bgr = .false. + ip=k*2-1 + im=k*2 + do i1=1,3 + sum2 = 0 + d2 = 0 + line=' ' + do i2=1,3 + i = (i1-1)*3 + i2 + if (cnts(i,ip,2) .gt. 0 .or. cnts(i,im,2) .gt. 0) status=2 + c1 = cnts(i, ip, 1) - cnts(i, ip, 2) + c2 = cnts(i, im, 1) - cnts(i, im, 2) + sq1 = sigma(i, ip, 1)**2 + sigma(i, ip, 2)**2 + sq2 = sigma(i, im, 1)**2 + sigma(i, im, 2)**2 + sum = c1 + c2 + if (sum .eq. 0 .or. + 1 cnts(i, ip, 1) .eq. 0 .and. cnts(i, im, 1) .eq. 0) then + pij=0 + dpij2 = 1 + else + done = .true. + pij = (c1 - c2) / sum + dpij2 = ((1-pij)/sum) ** 2 * sq1 + dpij2 = dpij2 + ((1+pij)/sum) ** 2 * sq2 + endif + pm(i1, i2) = pij + sm(i1, i2) = sqrt(dpij2) + sum2 = sum2 + pij*pij + d2 = d2 + dpij2 * pij * pij + enddo + pm(i1,4) = sqrt(sum2) + if (sum2 .eq. 0) then + sm(i1,4)=1 + else + sm(i1,4) = sqrt(d2/sum2) + endif + enddo + if (done) then + matoutput = .true. + if (status .eq. 0) status=1 + print *, + 1'------------------------------------------------------' + call fit_get_str('Title', l, line) + if (k .eq. 2) then + print *,'NEG. polarity ',line(1:l) + else + print *,'normal polarity ',line(1:l) + endif + print *,' pix sigma piy sigma piz sigma' + 1, ' |Pi| sigma' + do i1=1,3 + line=' ' + if (summary .eq. 1) call fit_get_real('numor', numor) + do i2=1,4 + if (pm(i1, i2) .ne. 0 .or. sm(i1, i2) .ne. 1.0) then + write(line(i2*20-19:i2*20), '(2f7.3)') pm(i1, i2), sm(i1, i2) + endif + if (summary .eq. 1) then + write(i1*10+i2,*) numor, pm(i1,i2), sm(i1,i2) + endif + enddo + print *,line(1:78) + if (summary .eq. 2) then + write(1,*) pm(sumx/10, mod(sumx,10)) + 1 , pm(sumy/10, mod(sumy,10)),sm(sumy/10,mod(sumy,10)) + endif + enddo + endif + enddo + if (.not. matoutput) then + print *,'WARNING: zero count matrix can not be calculated' + endif + end + + subroutine clr_me(values) + real values(9,4,2) + integer i,j,k + do k=1,2 + do j=1,4 + do i=1,9 + values(i,j,k)=0 + enddo + enddo + enddo + end + + subroutine fill_me(values, xx, yy, n, mode) + + implicit none + integer n + integer mode + real values(9,4,2), xx(n), yy(n) + + integer i,j,k,m,dbl + + dbl=0 + do m=1,n + i = nint(xx(m)) + if (mode .ne. 0) then + k = mode + else if (abs(xx(m)-i) .lt. 0.05) then + k = 1 + else + k = 2 + endif + j=mod(i,10) + i=i/10 + if (i .gt. 0 .and. i .le. 9 .and. j .gt. 0 .and. j .le. 4) then + if (values(i,j,k) .ne. 0) then + dbl=1 + endif + values(i,j,k) = yy(m) + endif + enddo + if (dbl .ne. 0) then + print *,'WARNING: duplicate points skipped' + endif + end diff --git a/pgm/subit.f b/pgm/subit.f new file mode 100644 index 0000000..289e3f5 --- /dev/null +++ b/pgm/subit.f @@ -0,0 +1,64 @@ + program subit + +* ~= old changei +* range and steps of file2 are interpolated according to file1; +* file2 is scaled with factor mon1/mon2 +* 23.4.99 keller, modified 7.3.00 +* +* > myfit subit.f +* > cp a.out subit + + implicit none + + real const + character*78 file1,file2,file3,title + character*16 cc + + write(*,*) + write(*,'(x,a)')'____________________________________' + write(*,*) + write(*,'(x,a)')' File1 - (Mon1/Mon2)*File2 + const.' + write(*,'(x,a)')'____________________________________' + write(*,*) + + 100 write(*,'(x,a,$)')'File1 / file to add: ' + read(*,'(a)')file1 + if (file1.eq.' ') goto 100 + + 101 write(*,'(x,a,$)')'File2 / file to subtract: ' + read(*,'(a)')file2 + if (file2.eq.' ') goto 101 + + write(*,'(x,a,$)')'Value of additive constant (default: 0): ' + read(*,'(a)')cc + if (cc.eq.' ') cc='0.' + read(cc,*)const + + write(*,'(x,a,$)')'Name of output file: ' + read(*,'(a)')file3 + if (file3.eq.' ') file3='diff.dat' + + write(*,'(x,a,$)')'Title of output file: ' + read(*,'(a)')title + if (title.eq.' ') title='difference pattern' + + write(*,*) + write(*,*) + + call fit_init + call fit_dat(file1) + call fit_subtract(file2) + +C write(*,*) +C call fit_mon(0) + + call fit_add(const, 0) + call fit_title(title) + + call fit_export(0,'dmc',file3) + + write(*,*) + write(*,'(x,2a)')'new file: ',file3 + write(*,*) + + end diff --git a/pgm/sumvar.f b/pgm/sumvar.f new file mode 100644 index 0000000..7522c0c --- /dev/null +++ b/pgm/sumvar.f @@ -0,0 +1,271 @@ + program sumvar +! -------------- + + implicit none + + integer nmax + parameter (nmax=10000) + + character filelist*2048, files*2048, spec*16, sumvars*256 + character var*64, filename*128 + integer ls, l, k, km, i, n, pin, pout, lun, iostat + real xval(nmax), yval(nmax), sig(nmax), rmon(nmax) + + external list_values, list_vars, list_nix + + integer mcols + parameter (mcols=32) + integer ncol, nframes + real cnts, fmt(mcols), vmin(mcols), vmax(mcols) + character line*1024, line2*1024, names(mcols)*32, time*6 + common /sum_com/ncol, nframes, cnts, fmt, vmin, vmax + & ,line, line2, names, time + +! call fit_init + call sys_get_cmdpar(files,l) + call dat_def_options('entry=') + + if (files .eq. ' ') then + call dat_ask_filelist(filelist, ' ') + if (filelist .eq. ' ') goto 91 + call dat_silent + pin=0 + pout=0 + call dat_open_next(filelist, pin, line, pout + & , list_nix, nmax, n, xval, yval, sig, rmon) + endif + call sys_getenv('dat_defspec', spec) + call sys_getenv('sumvar', sumvars) + if (sumvars .eq. ' ') call sys_getenv('sumvars', sumvars) + if (sumvars .eq. ' ') then + call sys_getenv('sumvar_'//spec, sumvars) + endif + if (sumvars .eq. ' ') then + sumvars= + & 'Numor:5,Date:16,Title:25,Temp:10.3,dTemp:8.3,sMon:10.' + endif + if (files .eq. ' ') then + print * + print *,' Variables listed by default:' + call str_trim(sumvars, sumvars, l) + print '(x,a)',sumvars(1:l) + print * +30 print *,' Enter a new variable list, for default' + & ,', or ? for help:' + read(*, '(a)', err=91, end=91) line + if (line .eq. '?') then + print * + &,'--------------------------------------------------------------' + print * + &,' You may configure the default with the environment variables' + &,' sumvar or sumvar_',spec + print * + &,' Example (to be typed on the Unix prompt):' + print * + print '(x,3a)' + &,'> setenv sumvars "',sumvars(1:l),'"' + print * + print * + &,' For each column, write the variable name and the column' + &,' width, separated by a colon. For numeric values, give' + &,' also the number of digits after decimal point, separated' + &,' with a point. The columns have to be separated by a comma.' + &,' The column title is right justified, if a point is present.' + print * + print * + &,' List of variables in the first file:' + call dat_silent + pin=0 + pout=0 + call dat_open_next(filelist, pin, files, pout + & , list_vars, nmax, n, xval, yval, sig, rmon) + call list_vars('*', 0.0) + print * + &,'--------------------------------------------------------------' + goto 30 + endif + if (line .ne. ' ') sumvars=line + print * + print *,'Output file name (default: terminal):' + read(*, '(a)', err=91, end=91) filename + if (filename .eq. ' ') then + lun=6 + else + lun=1 + call sys_open(lun, filename, 'w', iostat) + if (iostat .ne. 0) then + print *,'can not open',filename + stop + endif + endif + else + filelist=files + lun=6 + endif + + call str_trim(sumvars, sumvars, ls) + sumvars(min(len(sumvars),ls+1):)=',' + + ncol=0 + k=0 + l=0 + line=' ' +35 km=index(sumvars(k+1:),',') + if (km .gt. 0) then + if (km .gt. 1 .and. ncol .lt. mcols) then + ncol=ncol+1 + var=sumvars(k+1:k+km-1) + i=index(var, ':') + if (i .eq. 0) then + call str_trim(names(ncol), var, n) + fmt(ncol)=16.3 + else + call str_trim(names(ncol), var(1:i-1), n) + fmt(ncol)=0 + read(var(i+1:),*,err=36) fmt(ncol) +36 if (fmt(ncol) .eq. 0) fmt(ncol)=16.3 + endif + i=int(fmt(ncol)+0.001) + if (index(var, '.') .eq. 0) then ! left just + line(l+1:l+i)=names(ncol) + else + line(l+max(0,i-n)+1:l+i)=names(ncol) + endif + call str_upcase(names(ncol), names(ncol)) + l=l+i+1 + endif + k=k+km + goto 35 + endif + +38 if (l .le. 1) goto 91 + l=l-1 + print * + write(lun, '(x,a)') line(1:l) + do i=1,l + line(i:i)='-' + enddo + write(lun, '(x,a)') line(1:l) + + pin=0 + pout=0 +40 line=' ' + line2=' ' + call dat_def_options('entry=*') + call dat_silent + call dat_open_next(filelist, pin, files, pout + & , list_values, nmax, n, xval, yval, sig, rmon) + call str_trim(line, line, l) + if (line(1:l) .ne. ' ') then + write(lun, '(a)') line(1:l) + if (line2(1:l) .ne. ' ') + & write(lun, '(a)') line2(1:l) + endif + if (pin .le. len(filelist)) goto 40 +91 end + + + subroutine list_nix(name, value) + character name*(*) + real value + end + + subroutine list_vars(name, value) + + character name*(*) + real value + + integer l/0/,j + character line*80 + save line, l + + if (name .eq. 'ShowLevel') return + j=index(name, '=')-1 + if (j .le. 0) call str_trim(name, name, j) + if (l+j .ge. 80 .or. name .eq. '*') then + print *,line(1:l) + l=0 + endif + if (l .gt. 0) then + line(l+1:l+1)=',' + l=l+1 + endif + line(l+1:)=name(1:j) + l=min(80,l+j) + end + + + subroutine list_values(name, value) + + character name*(*) + real value + + integer k,i,l,j + character unam*32, form*8, field*128 + real f + + integer mcols + parameter (mcols=32) + integer ncol, nframes + real cnts, fmt(mcols), vmin(mcols), vmax(mcols) + character line*1024, line2*1024, names(mcols)*32, time*6 + common /sum_com/ncol, nframes, cnts, fmt, vmin, vmax + & ,line, line2, names, time + + if (name .eq. 'ranges') then + nframes=nint(value) + elseif (name .eq. 'Counts') then + cnts=value + elseif (len(name) .gt. 5) then + if (name(1:5) .eq. 'Date=') then + time=name(17:) + endif + endif + j=index(name, '=') + if (j .gt. 1) then ! string + call str_upcase(unam, name(1:j-1)) + else + call str_upcase(unam, name) + endif + k=0 + do i=1,ncol + f=fmt(i)+1 + l=int(f+0.001) + if (l .ge. len(field)) l=len(field) + if (unam .eq. names(i)) then + if (j .gt. 0) then ! string + field(1:l)=' '//name(j+1:) + else + if (f-l .lt. 0.04) then + write(form, '(a,I2,a)') '(i',l,')' + write(field(1:l), form) nint(value) + else + write(form, '(a,f5.1,a)') '(f',f,')' + write(field(1:l), form) value + endif + endif + if (field(1:1) .ne. '-') field(1:1)=' ' + if (line(k+1:k+l) .eq. ' ') then + line(k+1:k+l)=field(1:l) + vmin(i)=value + vmax(i)=value + elseif (j .eq. 0) then ! numeric + if (line(k+1:k+l) .ne. field(1:l)) then + if (value .gt. vmax(i)) then + line2(k+1:k+l)=field(1:l) + elseif (value .lt. vmin(i)) then + if (line2(k+1:k+l) .eq. ' ') + & line2(k+1:k+l)=line(k+1:k+l) + line(k+1:k+l)=field(1:l) + endif + endif + elseif (line(k+1:k+l) .ne. field(1:l)) then ! string + line2(k+1:k+l)=field(1:l) + endif +! goto 39 + endif + k=k+l + if (k .gt. len(line)) goto 39 + enddo +39 continue + end diff --git a/pgm/trics_ccl.f b/pgm/trics_ccl.f new file mode 100644 index 0000000..2ab6993 --- /dev/null +++ b/pgm/trics_ccl.f @@ -0,0 +1,368 @@ + program TriCS_CCL +c ----------------- +c +c fits data from ccl-files and write *.col file for upals +c and rafin.dat file for position refining +c + +c replaces "none" +c 8.5.99/21.6.99/15.7.99 Juerg Schefer +c 29.11.99: Lorentz-Korrektur SJ33 +c 10.4.2000: flat background SJ33 +c 31.10.2000: transfered to UNIX ZO33 +c 22.11.2000: problem with printing is fixed +c 02.02.01: h,k,l may be real ZM33 +c 17.06.2010: Lorentz correction for tilt Geometry, SJ33 +c +c link ccl,fit4_shr/opt ! attention: check for last fit_n +c + + implicit none + + integer np_max + parameter (np_max=1000) + real output(20),th2,omega_cal,omega_fit,chi,phi,yint,yy1, + * dint,delta,yoverall,h,k,l,s,temperature,range + real omega_err + real output2(20), xx(np_max),lor_cor,fwhm,radian,degrees + real bgr, wmult + logical plot,iexp,flat_backgr + integer lorentz,comens ! SJ33, June 2010 + integer next_flag + integer iall,iincom,icom,icenter + character*1 answer,hard + character*128 input_files + character*128 output_file1 + character*128 output_file2 + character*128 output_file3 ! SJ33, May 2012 + character*128 output_file4 ! SJ33, May 2012 + character*16 out + character*2 off,weak + character*30 hkl + character*12 hkl_int + character*18 hkl_float + character*24 datime + integer ldt + + integer ntyp,i,j,numor,ii,iout,np + radian=3.14159265/180.00 + degrees=1./radian + + write(*,1000) + 1000 format (/,' FIT CCL Files: Version 2.08, update Jun. 21, 2010', + * //,' Data processing of files *.ccl from TriCS single' + * ,' detector mode') + + call sys_setenv('DAT_DEFSPEC', 'TRICS') + call dat_ask_filelist(input_files, ' ') + output_file1=input_files + i=index(output_file1, '.') + if (i .eq. 0) i=index(output_file1, '[') + if (i .eq. 0) i=index(output_file1, ',') + if (i .eq. 0) i=index(output_file1, ' ') + do j=i-1,1,-1 + if (output_file1(j:j) .eq. '/') then + goto 1002 + endif + enddo + j=0 +1002 if (i .gt. j+1) then + output_file2=output_file1(j+1:i-1)//'_rafin.dat' + output_file1=output_file1(j+1:i-1)//'.col' + output_file3=output_file1(j+1:i-1)//'.comm' + output_file4=output_file1(j+1:i-1)//'.incomm' + else + output_file2='rafin.dat' + output_file1='upals.col' + endif +c + write(*,1004) +1004 format (/,' function type to be used (0=gauss[def],6=strange)', + * ' typ = ',$) + read (5,'(i1)') ntyp + if (ntyp .eq. 6) then + write(*,'(/,'' width factor [1.0] = '',$)') + read(5,'(f20.0)') wmult + if (wmult .eq. 0.0) wmult=1.0 + else + wmult=1.0 + ntyp=0 + endif + + write(*,1013) + 1013 format (/,' Monitor to be standardized , monitor=',$) + read (5,'(f20.0)') yoverall + if (yoverall.le.1.1) yoverall = 100000. + + write(*,1015) +1015 format (/, + * ' plots (answer=n [no=def], y [yes,terminal], h [hard] ',$) + read (5,'(a1)') answer + plot = (answer.eq.'y' .or. answer .eq.'h') + if (plot) then + hard='y' + if (answer.eq.'y') hard='n' + endif + + write(*,1019) +1019 format (' Flat Background (y/n, default=y) : ',$) + read (5,'(a1)')answer + flat_backgr = (answer.ne.'n' .and. answer .ne.'N') + + if (ntyp .eq. 0) then + write(*,1017) +1017 format + * (//,' output intensities: 0=experimental (def), 1=gaussian ',$) + read (5,'(i1)') Iout + iexp= (iout.eq.0) + else + iexp= .true. + endif + if (iexp) then + out='experimental ' + else + out='gaussian ' + end if + + write(*,1018) +1018 format (' Lorentz-Correction to be applied (0 = 4-circle-geometry(default), 1 = tilt-geometry, 2 = not applied) ?: ',$) + read (5,'(I1)') lorentz ! SJ33, June 2010, tilt option added (3 options now, def=0) + if (lorentz.ne.1 .and. lorentz.ne.2) lorentz=0 ! SJ33, June 2010 + write(*,1011) input_files,ntyp,wmult, + * output_file1,output_file2,out,yoverall,flat_backgr,lorentz + 1011 format (/,' ',78('-'),/,' input from file(s) :',A30,/, + * ' function type ',i3,' width factor ',f6.3,//, + * ' output: for UPALS :',A50,/, + * ' for RAFIN :',A50,/, + * 1X,A16,' intensities used'/, + * ' monitor: ',f12.1,/, + * ' Flat Background (yes/no): ',L33,/, + * ' Lorentz-Correction (options: 0 = 4-circle-mode,', + * ' 1 = tilt-mode, 2 = none)',/, + * ' applied option No. ',i1,/, + * ' No. 0 Icor=Iobs*sin(2theta)',/, + * ' No. 1 Icor=Iobs*sin(Gama)*cos(nu)',/, + * ' ',78('-'),/,' hit return to start ',$) +c + read (5,'(i1)') ii +C if (ii.eq.1) goto 504 + +c + if (ntyp.ne.0 .and. ntyp.ne.6) ntyp = 0 +c +c this ends the input for the program, the rest goes automatic +c ------------------------------------------------------------ + if (plot) then + call sys_setenv('CHOOSER_PAN','9') ! 9 plots per page + end if +c +c loop over all data following: + iall =0 + iincom =0 + icom =0 + icenter =0 + open (unit=1,file=output_file1,status='unknown') + open (unit=2,file=output_file2,status='unknown') + open (unit=3,file=output_file3,status='unknown') + open (unit=4,file=output_file4,status='unknown') +c write headers for fullprof +c write (3,1027)9.99,0,1,1,0.00,0.00,0.00 +c write (4,1028)9.99,0,1,1,0.00,0.00,0.00 +c1027 format (' title',/,22H(I6,3I10,2F10.2,4F8.2), /,F7.4,i5,i6,/,i1,3f5.2) +c1028 format (' title',/,24H(I6,3F10.4,2F10.2,4F8.2),/,F7.4,I5,i6,/,i1,3f5.2) + next_flag=0 ! start flag + i=0 + call fit_init +c +c ------------------------------------------------------ start loop -- +1500 continue + + call fit_dat_next(input_files, next_flag) + if (next_flag .eq.0) goto 2222 ! last scan of last file read + i=i+1 + + call fit_mon(yoverall) + +C set limits if peak to narrow: + call fit_get_array('P', output, 20, ii) + call fit_get_array('X', xx, np_max, np) + + +c get information out of title: + call fit_get_real('two_theta',th2) + call fit_get_real('omega',omega_cal) + call fit_get_real('chi',chi) + call fit_get_real('phi',phi) + call fit_get_real('h',h) + call fit_get_real('k',k) + call fit_get_real('l',l) + call fit_get_real('temp',temperature) ! SJ33, Aug.30,1999 + call fit_get_str('date', ldt, datime) + +cjs type *,' ***** temp=',temperature + numor=i + if (l.eq.88) then + write(*,1007) + 1007 format (' data numor not found, exit') + goto 3000 + endif +c + if (ntyp .eq. 6) then + call fit_fun(6,1,wmult,0.0) ! select strange + else + call fit_fun(ntyp,0,0.0,0.0) ! select other (guassian) + endif + if (flat_backgr) call fit_set(2,0.,0.,0.,0.) ! flat background +c range = scan with: + range=xx(np)-xx(1) +cjs type *,'******',output(5),output(6) + if (ntyp .ne. 6) then + if (output(6) .lt. 5.0*range/np) then +c set position to center: + call fit_set(3, (xx(np)+xx(1))/2.0, range/np, + & xx(1)+range/6,xx(np)-range/6) +c set fwhm + fwhm = max(0.2,range/5) +c arbitrary limits: minimal 3 steps, maximal 1 /3 range + call fit_set(6,fwhm,fwhm/10.,3*range/np, range/3) + else + fwhm=max(output(6),5*range/np) + call fit_set(6,fwhm,range/np + 1 ,3*range/np,range/3) + endif + endif + call fit_fit(0) +c + if (plot) call fit_plot(hard) ! hardcopy / terminal +c + call fit_get_array('P', output, 20, ii) + call fit_get_array('E', output2, 20, ii) +cjs type *,' output ',output +cjs type *,' output2',output2 +c +c +c get results now: + if (ntyp.eq.0) then +c function 1 (gauss: use only background, intensity=sum) + omega_fit = output (3) + omega_err = output2(3) + off = ' ' + if (iexp) then + yint = output(8) + dint = output2(8) + else +c modified 14.7.99 sj33 + yint = output(5) + dint = output2(5) + endif + bgr=output(1) + fwhm=output(6) + else +c function 6 (strange) + yint = output(7) + dint = output2(7) + omega_fit = output(3) + omega_err = output2(3) + bgr=output(1) + fwhm=output(4) + end if +c +c make notes for easy data inspections: + delta = abs (omega_cal - omega_fit) + if (delta.ge.0.3) off =' *' + if (delta.ge.0.5) off ='**' + weak = ' ' +c +c write on output files now: + lor_cor = 1.00000 +c L = 1 / SIN (2-Theta), page 156, Schwarzenbach, EPFL: +c L applies to the calculated value of the intensities +c Ical*L = Iobs +c (measured intensity is always bigger than corrected one) + if (lorentz.eq.0) lor_cor = sin (abs(th2)*radian) +c +c June 2010: SJ33 +c tilt angle nu is read-in as chi from file *.col +c correction formula: not used (3.59) on page 154, Schwarzenbach/Chapuis Cristallographie, Presses EPFL ! SJ33, June 2010 +c used: Arndt and Wills, L=sin(gamma)*cos(nu), where gamma projection 2-theta, nu tilt + yy1=lor_cor + if (lorentz.eq.1) lor_cor = + * sin(abs(th2)*radian)*cos(abs(chi)*radian) +c * sqrt( (sin(abs(th2)*radian))**2 -(sin(abs(chi)*radian))**2 ) ! SJ33, June 2010 +c write (6,*)' chi=',chi,th2,radian,sin(chi*radian),sin(th2*radian) +c write (6,*)' Lorentz=',yy1,lor_cor +c +c + if (abs(nint(h)-h) .gt. abs(h)*1e-4 .or. + & abs(nint(k)-k) .gt. abs(k)*1e-4 .or. + & abs(nint(l)-l) .gt. abs(l)*1e-4) then + write(hkl, '(3(x,f9.4))') h, k, l + write(hkl_float,'(3f6.2)') h, k, l + iincom=iincom+1 + iall=iall+1 + comens=1 ! SJ33-May 2012 + else + write(hkl, '(3(x,i9))') nint(h), nint(k), nint(l) + write(hkl_int,'(3i4)') nint(h), nint(k), nint(l) + iall=iall+1 + icom=icom+1 ! SJ33-May 2012 + comens=0 + endif +c + write (1, 1005) numor,hkl,lor_cor*yint,lor_cor*dint, + & Th2/2.,omega_fit,chi,phi,temperature,yoverall/1000.,off,weak + & ,bgr,fwhm,lor_cor,omega_err,datime(1:ldt) +c + if (comens.eq.0) then + write (3, 1025) numor,hkl_int, lor_cor*yint,lor_cor*dint, + * Th2/2,omega_fit,chi,phi ! SJ33-May 2012 + else + write (4, 1026) numor,hkl_float,lor_cor*yint,lor_cor*dint, + * Th2/2,omega_fit,chi,phi + endif ! SJ33-May 2012 +1025 format (I6,A12,2F10.2,4f8.2) ! SJ33, nuc +1026 format (I4,A18,2F10.2,4F8.2) ! SJ33 mag +1005 format (I6,a,1x,f9.2,1x,f9.3,f7.2,1x,f8.3,1x,f7.2,1x,f7.2,1x, + & F8.3,1x,F6.0,1x,2A2,1x,f6.1,1x,f5.3,1x,f6.4,1x,f6.3,1x,a) + + if (dint.ge.1) then + s = yint/dint + if (s.le.3) weak='w ' ! weak + if (s.le.1) weak='vw' ! very weak + if (s.ge.15 .and. yint.ge.100) then ! write strong hkl to rafin.dat + write (2,1009) hkl,Th2,omega_fit,chi,phi,.2,temperature + icenter=icenter+1 + end if +c + 1009 format (a,f8.2,f8.3,2f8.2,1x,f5.3,f9.3) + end if +C + goto 1500 +c -------------------------------------------------------- end loop -- +C + 2222 write(*,1006) + 1006 format (' Bye bye, normal end of program.') +C +C ------------------------------------------- +C error exits here, does not pass label 2222: + 3000 continue + close (1) + close (2) + close (3) ! SJ33-May 2012 + close (4) ! SJ33-May 2012 +c +c writing the end message for the user + write (6,2040) + write (6,2042) input_files(1:60) + write (6,2041) iall,output_file1(1:30),icenter,output_file2(1:30), + * icom,output_file3(1:30),iincom,output_file4 +2040 format(///,' trics_ccl prepared the following files for YOU:',//) +2042 format(' TriCS-input-file used:',A60,//) +2041 format(i6,' reflections ',a30,' for JANA2006',/ + * ,i6,' positions ',a30,' for rafin (to improve your UB using the dataset)',/ + * ,I6,' reflections ',a30,' for Fullprof - commensurate data',/ + * ,I6,' reflections ',a30,' for Fullprof - incommensurate data',//) +c + call fit_exit +c + end diff --git a/pgm/tricslog.f b/pgm/tricslog.f new file mode 100644 index 0000000..1d7bfa1 --- /dev/null +++ b/pgm/tricslog.f @@ -0,0 +1,260 @@ + program trilog_pgm +! ------------------ + + implicit none + + integer nmax + parameter (nmax=10000) + + character filelist*2048, files*2048 + character trilog*1024, trihead*1024, sumvars*1024 + character var*64 + integer ls, l, k, km, i, n, pin, pout, j, lhead, ltot + real xval(nmax), yval(nmax), sig(nmax), rmon(nmax) + + external list_values, list_vars + + integer mcols + parameter (mcols=32) + integer ncol, nframes + real cnts, fmt(mcols) + character line*1024, names(mcols)*32, opt*80, time*6 + common /sum_com/ncol, nframes, cnts, fmt, line, names, time + +! call fit_init + call sys_setenv('dat_defspec', 'TRICS') + call sys_get_cmdpar(files,l) + + call sys_getenv('trilog', trilog) + call sys_getenv('trihead', trihead) + if (trilog .eq. ' ') then + trilog= + & 'dTime:5,stt:7.2,om:7.3,chi:7.2,phi:7.2' + & //',dg1:7.2,dg2:7.2,dg3:7.2,Sum1:8.,Sum2:8.,Sum3:8.' + & //',Temp:8.2,sMon:11.,time:7.,bMon:11.' + endif + if (trihead .eq. ' ') then + trihead='Numor:5,Date:16,Title:60,Sample:20,Owner:20' + endif + if (files .eq. ' ') then + call dat_ask_filelist(filelist, ' ') + if (filelist .eq. ' ') goto 91 + print * + print *,'Variables listed by default ' + & ,'(configure default with setenv trilog / setenv trihead):' + print * + call str_trim(trihead, trihead, l) + print '(x,a)',trihead(1:l) +30 print * + & ,'enter new header variable list, empty line for default' + & ,', ? for a list of variables:' + read(*, '(a)', err=91) line + if (line .eq. '?') then + call dat_silent + print * + pin=0 + pout=0 + call dat_set_options( + & '1,512,bank=detector1,entry=frame0000,frame=0') + call dat_open_next(filelist, pin, files, pout + & , list_vars, nmax, n, xval, yval, sig, rmon) + call list_vars('*', 0.0) + print * + goto 30 + endif + if (line .ne. ' ') trihead=line + call str_trim(trilog, trilog, l) + print '(x,a)',trilog(1:l) +31 print * + & ,'enter new frame variable list, empty line for default' + & ,', ? for a list of variables:' + read(*, '(a)', err=91) line + if (line .eq. '?') then + call dat_silent + print * + pin=0 + pout=0 + call dat_set_options( + & '1,512,bank=detector1,entry=frame0000,frame=0') + call dat_open_next(filelist, pin, files, pout + & , list_vars, nmax, n, xval, yval, sig, rmon) + call list_vars('*', 0.0) + print * + goto 31 + endif + if (line .ne. ' ') trilog=line + else + filelist=files + endif + + call str_trim(sumvars, trihead, ls) + sumvars(min(len(sumvars),ls+1):)=',' + + ncol=0 + k=0 + l=0 + line=' ' + lhead=0 +35 km=index(sumvars(k+1:),',') + if (km .gt. 0) then + if (km .gt. 1 .and. ncol .lt. mcols) then + ncol=ncol+1 + var=sumvars(k+1:k+km-1) + i=index(var, ':') + if (i .eq. 0) then + call str_trim(names(ncol), var, n) + fmt(ncol)=16.3 + else + call str_trim(names(ncol), var(1:i-1), n) + fmt(ncol)=0 + read(var(i+1:),*,err=36) fmt(ncol) +36 if (fmt(ncol) .eq. 0) fmt(ncol)=16.3 + endif + i=int(fmt(ncol)+0.001) + if (index(var, '.') .eq. 0) then ! left just + line(l+1:l+i)=names(ncol) + else + line(l+max(0,i-n)+1:l+i)=names(ncol) + endif + call str_upcase(names(ncol), names(ncol)) + l=l+i+1 + endif + k=k+km + goto 35 + elseif (lhead .eq. 0) then + call str_trim(sumvars, trilog, ls) + sumvars(min(len(sumvars),ls+1):)=',' + k=0 + lhead=l + goto 35 + endif + +38 if (l .le. 1) goto 91 + ltot=l-1 + trihead=line(1:lhead) + trilog=line(lhead+1:ltot) + pin=0 + pout=0 + nframes=0 +40 line=' ' + call dat_silent + call dat_set_options( + & '1,512,bank=detector1,entry=frame0000,frame=0') + call dat_open_next(filelist, pin, files, pout, list_values + & , nmax, n, xval, yval, sig, rmon) + if (n .le. 0) goto 39 + print * + print '(x,a)',trihead(1:lhead) + print '(x,a)',line(1:lhead) + print * + print '(x,a)',trilog(1:ltot-lhead) + + do i=0,nframes-1 + line=' ' +! call list_values('Frame', 1.0*i) + do j=1,3 + cnts=0 + write(opt, '(a,i1,a,i4.4,a,i4)') + & '1,512,bank=detector',j,',entry=frame',i,',frame=',i + call dat_set_options(opt) + call dat_read_again(list_values + & , nmax, n, xval, yval, sig, rmon) + call list_values('Sum'//char(48+j), cnts) + enddo + call list_values('dTime='//time, 0.0) + call str_trim(line, line(lhead+1:ltot), l) + if (line(1:l) .ne. ' ') then + print '(x,a)',line(1:l) + endif + enddo + +39 if (pin .le. len(filelist)) goto 40 +91 end + + + subroutine list_vars(name, value) + + character name*(*) + real value + + integer l/0/,j + character line*80 + save line, l + + if (name .eq. 'ShowLevel') return + j=index(name, '=')-1 + if (j .le. 0) call str_trim(name, name, j) + if (l+j .ge. 80 .or. name .eq. '*') then + print *,line(1:l) + l=0 + endif + if (l .gt. 0) then + line(l+1:l+1)=',' + l=l+1 + endif + line(l+1:)=name(1:j) + l=min(80,l+j) + end + + + subroutine list_values(name, value) + + character name*(*) + real value + + integer k,i,l,j,k0 + character unam*32, form*8 + real f + + integer mcols + parameter (mcols=32) + integer ncol, nframes + real cnts, fmt(mcols) + character line*1024, names(mcols)*32, time*6 + common /sum_com/ncol, nframes, cnts, fmt, line, names, time + + if (name .eq. 'ranges') then + nframes=nint(value) + elseif (name .eq. 'Counts') then + cnts=value + elseif (len(name) .gt. 5) then + if (name(1:5) .eq. 'Date=') then + time=name(17:) + endif + endif + j=index(name, '=') + if (j .gt. 1) then ! string + call str_upcase(unam, name(1:j-1)) + else + call str_upcase(unam, name) + endif + k=0 + do i=1,ncol + l=int(fmt(i)+0.001) + k0=k+l+1 + if (unam .eq. names(i)) then + if (j .gt. 0) then ! string + line(k+1:k+l)=name(j+1:) + else + f=fmt(i) + if (value .lt. 0.0 .and. k .gt. 0) then ! allow minus sign left overlow field + k=k-1 + l=l+1 + f=f+1 + endif + if (f-l .lt. 0.04) then + write(form, '(a,i3,a)') '(i',l,')' + write(line(k+1:k+l), form) nint(value) + else + write(form, '(a,f5.1,a)') '(f',f,')' + write(line(k+1:k+l), form) value + endif + endif +! goto 39 + endif + k=k0 + if (k .gt. len(line)) goto 39 + line(k:k)=' ' + enddo +39 continue + end diff --git a/pgm/ufit.f b/pgm/ufit.f new file mode 100644 index 0000000..6f0c219 --- /dev/null +++ b/pgm/ufit.f @@ -0,0 +1,92 @@ + program ufit ! change FIT to your own program name +! ------------ +! +! Simple user function example (straight line). +! + implicit none + external FIT_ufun ! change FIT_ufun to your own function name + +!--- +! Welcome message + + print '(5(/X,A))' + 1,'Program UFIT' + 1,'------------' + 1,'User function: sum of lorentzian folded with meas. resolution' + +!--- +! Function title and parameter names +! + call fit_userfun('Quasielastic', fit_ufun) ! function title, function + call fit_userpar('B:Bg(0)') ! first parameter: background at zero + call fit_userpar('D:dBg/dX') ! second parameter: slope + call fit_userpar('S:bg.scale') ! background slope + call fit_userpar('G:fwhm gaussian') + call fit_userpar('P:Pos') ! position + call fit_userpar('I1:IntInt 1') ! 1st lorentzian intensity + call fit_userpar('L1:fwhm L 1') ! 1st lorentzian width + call fit_userpar('I2:IntInt 2') ! 2nd lorentzian intensity + call fit_userpar('L2:fwhm L 2') ! 2nd lorentzian width + call fit_userpar('I3:IntInt 3') ! 3rd lorentzian intensity + call fit_userpar('L3:fwhm L 3') ! 3rd lorentzian width + call fit_main + end + + + real function fit_ufun(x,p,n,mode,cinfo) +! ------------------------------------------- + + implicit none + + real x ! x-value + integer n ! number of parameters + real p(n) ! parameters + integer mode ! mode + integer cinfo ! calculation information (see below) + + integer npnt + parameter (npnt=10000) + real xx(npnt), yy(npnt) + real gg,xp,b,q + integer idx/1/, nb/0/ + + real voigt + + if (mode .eq. 0) then + +! Define here your own function + + xp=x-p(5) + gg=p(4) + fit_ufun=p(1)+xp*p(2) + 1 +p(6)*voigt(xp, gg, p(7)) + 1 +p(8)*voigt(xp, gg, p(9)) + 1 +p(10)*voigt(xp, gg, p(11)) + if (idx .le. 0 .or. idx .ge. nb) stop 'FIT_UFUN: illegal IDX' +10 if (x .gt. xx(idx+1)) then + if (idx .lt. nb-1) then + idx=idx+1 + goto 10 + endif + else +20 if (x .lt. xx(idx)) then + if (idx .gt. 1) then + idx=idx-1 + goto 20 + endif + endif + endif + q=(x-xx(idx))/(xx(idx+1)-xx(idx)) + b=yy(idx)*(1-q)+q*yy(idx+1) + fit_ufun=fit_ufun+p(3)*b + + elseif (mode .lt. 0) then + + call fit_sort(0,0) ! sort data + call fit_get_array('X', xx, npnt, nb) + if (nb .ge. npnt) print *,'background points limit reached:',npnt + idx=1 + call fit_get_array('Y', yy, npnt, nb) + + endif + end diff --git a/pgm/zm_fit b/pgm/zm_fit new file mode 100644 index 0000000..2b71f58 --- /dev/null +++ b/pgm/zm_fit @@ -0,0 +1 @@ +this file is used by config diff --git a/pgplot_rhel7/drivers.list b/pgplot_rhel7/drivers.list new file mode 100644 index 0000000..28c20c4 --- /dev/null +++ b/pgplot_rhel7/drivers.list @@ -0,0 +1,114 @@ +! PGPLOT drivers. +!------------------------------------------------------------------------------ +! To configure PGPLOT, ensure that drivers you do not want are +! commented out (place ! in column 1). N.B. Many device-drivers are +! available on selected operating systems only. +!------------------------------------------------------------------------------ +! File Code Description Restrictions +! BCDRIV 0 /BCANON Canon Laser printer (bitmap version), landscape +! CADRIV 0 /CANON Canon Laser printer, LBP-8/A2, landscape +! CCDRIV 0 /CCP DEC LJ250 Color Companion printer +! CGDRIV 1 /CGM CGM metafile, indexed colour selection C +! CGDRIV 2 /CGMD CGM metafile, direct colour selection C +! CWDRIV 0 /CW6320 Gould/Bryans Colourwriter 6320 pen plotter Std F77 +! EPDRIV 0 /EPSON Epson FX100 dot matrix printer +! EXDRIV 1 /EXCL Talaris/EXCL printers, landscape +! EXDRIV 2 /EXCL Talaris/EXCL printers, portrait +! GCDRIV 0 /GENICOM Genicom 4410 dot-matrix printer, landscape +! Caution: use of GIDRIV may require a license from Unisys: + GIDRIV 1 /GIF GIF-format file, landscape + GIDRIV 2 /VGIF GIF-format file, portrait +! GLDRIV 1 /HPGL Hewlett-Packard HP-GL plotters, landscape Std F77 +! GLDRIV 2 /VHPGL Hewlett-Packard HP-GL plotters, portrait Std F77 +! GODRIV 0 /GOC GOC Sigma T5670 terminal VMS +! GVDRIV 0 /GVENICOM Genicom 4410 dot-matrix printer, portrait +! HGDRIV 0 /HPGL2 Hewlett-Packard graphics language +! HIDRIV 0 /HIDMP Houston Instruments HIDMP pen plotter +! HJDRIV 0 /HJ Hewlett-Packard Desk/Laserjet printer +! HPDRIV 0 /HP7221 Hewlett-Packard HP7221 pen plotter Std F77 +! LADRIV 0 /LA50 Dec LA50 and other sixel printers +! LJDRIV 0 /LJ Hewlett-Packard LaserJet printers VMS +! LSDRIV 1 /LIPS2 Canon LaserShot printer (landscape) +! LSDRIV 2 /VLIPS2 Canon LaserShot printer (portrait) +! LNDRIV 0 /LN03 Dec LN03-PLUS Laser printer (landscape) VMS +! LVDRIV 0 /LVN03 Dec LN03-PLUS Laser printer (portrait) VMS +! LXDRIV 0 /LATEX LaTeX picture environment +! MFDRIV 0 /FILE PGPLOT graphics metafile +! NEDRIV 0 /NEXT Computers running NeXTstep operating system + NUDRIV 0 /NULL Null device (no output) Std F77 +! PGDRIV 0 /PGMF PGPLOT metafile (new format, experimental) Std F77 +! PNDRIV 1 /PNG Portable Network Graphics file C +! PNDRIV 2 /TPNG Portable Network Graphics file - transparent background C +! PPDRIV 1 /PPM Portable Pixel Map file, landscape +! PPDRIV 2 /VPPM Portable PIxel Map file, portrait + PSDRIV 1 /PS PostScript printers, monochrome, landscape Std F77 + PSDRIV 2 /VPS Postscript printers, monochrome, portrait Std F77 + PSDRIV 3 /CPS PostScript printers, color, landscape Std F77 + PSDRIV 4 /VCPS PostScript printers, color, portrait Std F77 +! PXDRIV 0 /PRINTRONI Printronix P300 or P600 dot-matrix printer +! QMDRIV 1 /QMS QUIC devices (QMS and Talaris), landscape Std F77 +! QMDRIV 2 /VQMS QUIC devices (QMS and Talaris), portrait Std F77 +! TFDRIV 0 /TFILE Tektronix-format disk file VMS +! TODRIV 0 /TOSHIBA Toshiba "3-in-one" printer, model P351 +! TTDRIV 1 /TEK4010 Tektronix 4006/4010 storage-tube terminal Std F77 +! TTDRIV 2 /GF GraphOn terminal Std F77 +! TTDRIV 3 /RETRO RetroGraphics terminal Std F77 +! TTDRIV 4 /GTERM GTERM Tektronix terminal emulator Std F77 + TTDRIV 5 /XTERM XTERM Tektronix terminal emulator Std F77 +! TTDRIV 6 /ZSTEM ZSTEM terminal emulator Std F77 +! TTDRIV 7 /V603 Visual 603 terminal Std F77 +! TTDRIV 8 /KRM3 Kermit 3 on IBM-PC Std F77 +! TTDRIV 9 /TK4100 Tektronix 4100-series terminals Std F77 +! TTDRIV 10 /VMAC Macintosh VersaTerm-PRO Tektronix-4105 emulator Std F77 +! TXDRIV 0 /TX TeX PK Font Output files +! VADRIV 0 /VCANON Canon Laser printer, LBP-8/A2, portrait +! VBDRIV 0 /VBCANON Canon Laser printer (bitmap version), portrait +! VTDRIV 0 /VT125 Dec Regis terminals (VT125 etc.) Std F77 +! WDDRIV 1 /WD X Window dump file, landscape +! WDDRIV 2 /VWD X Window dump file, portrait +! WSDRIV 0 /WS VAX workstations running VWS software VMS +! X2DRIV 0 /XDISP PGDISP or FIGDISP server for X workstations C + XWDRIV 1 /XWINDOW Workstations running X Window System C + XWDRIV 2 /XSERVE Persistent window on X Window System C +! ZEDRIV 0 /ZETA Zeta 8 Digital Plotter +! +! The following drivers can only be used in PGPLOT installations on MS-DOS +! systems with appropriate hardware and software. Do not select these +! on UNIX or VMS systems. +! +! LHDRIV 0 /LH IBM PCs and clones, Lahey F77 32-bit Fortran v5.0 +! MSDRIV 0 /MSOFT IBM PCs and clones running Microsoft Fortran 5.0 +! SSDRIV 0 /SS IBM PCs and clones, MS-DOS, Salford Software FTN +! +! The following driver can only be used in PGPLOT installations on Acorn +! Archimedes systems with appropriate hardware and software. +! +! ACDRIV 0 /ARC Acorn Archimedes computer +! +! Selection of the XMOTIF driver causes a stub driver to be placed in +! the main PGPLOT library. The real driver is placed in libXmPgplot.a. +! Applications that need the Motif driver should link with libXmPgplot.a +! before the PGPLOT library. This treatment means that only Motif +! applications have to be linked with Motif libraries. +! +! XMDRIV 0 /XMOTIF Motif applications containing XmPgplot widgets. C +! +! Selection of the XATHENA driver causes a stub driver to be placed in +! the main PGPLOT library. The real driver is placed in libXawPgplot.a. +! Applications that need the Athena driver should link with libXawPgplot.a +! before the PGPLOT library. This treatment means that only Athena +! applications have to be linked with Xaw libraries. +! +! XADRIV 0 /XATHENA Motif applications containing XaPgplot widgets. C +! +! Selection of the TK driver causes a stub driver to be placed in +! the main PGPLOT library. The real driver is placed in libtkpgplot.a. +! Applications that need the Tk driver should link with libtkpgplot.a +! before the PGPLOT library. This treatment means that only Tcl/Tk +! applications have to be linked with the Tcl and Tk libraries. +! +! TKDRIV 0 /XTK X-window Tcl/Tk programs with pgplot widgets. C +! +! The following driver is included solely for use by the aips++ team. +! +! RVDRIV 0 /XRV X-window Rivet/Tk programs with pgplot widgets. C diff --git a/pgplot_rhel7/gidriv.o b/pgplot_rhel7/gidriv.o new file mode 100644 index 0000000000000000000000000000000000000000..2173278c484c3e2adfe996c614cf5b5621631f51 GIT binary patch literal 37064 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 B!W#ep literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grarea.o b/pgplot_rhel7/grarea.o new file mode 100644 index 0000000000000000000000000000000000000000..044a361423fc82b53bfae15b04bc6f3709a6eedb GIT binary patch literal 8376 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 PO~LK>a1aD-TkZcFoG&^A literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grchsz.o b/pgplot_rhel7/grchsz.o new file mode 100644 index 0000000000000000000000000000000000000000..77e797422e964b81caae0d971de1ff651af49abf GIT binary patch literal 8272 zcmbtZeQX?85r2DUCl{Z6vE!tK*ub?t%DE(W{%RTp+Bn~5dTvZU3aLo1=e-YaeP6j- zw|7=(fdmrQA*8L;B0x%nRBAx!Uu^|KDiSG`t5OtDDh2vSLXp5od;~&8q!hx;+j;A~ zxedfH((Rl1z2D56H~Ze(UHggc@f{vb6G}93uUN1YDnzVxK_8OpkXS8NiP-e#LKkAw zxzMHfbSg9-2kmlv+6-Nd9sXlDHhnEN{oe5O`QhoeMy6l?0s773C8l@AW|~pEvb_Ds z$s-;imWSuAEZ^T|VI3oN_U7dstsy4?fDv%rZ-oGBNo=M&6r0I~eDRr7s67ta>iCQq z3dRn<7Cs9>wGQp0flmJxzchdVvsxMYoHlRT2JbkHVjYW1`T;adRET=p@$zuPZFi^GIozord$ z;yA6hLPk*_v}xKhzl8->KzcBRi%pO!)<^i{9ST6zZY-Vw=<_y#56p9u)Md4#-XsHP zvJ(kT(Y|E>F1cD0I--z?F;Ny}LcJh`2k^Sg${)1zpe;qn6T>mIg`WR}ehO1-;0}Mm z4ZY8myBIX?8o?bMeamg+wDi1mm%uu+5uM|=^H_R5Y8LGyCZOgIPIJ3?Mp+#k2|skeXV%$39nD?cmGMS z@TcG=c>wuwSiCy~w`mAq;ub)#|L1_+c=t8wiGXr&GaL(zNh(19B8dFM+;QnWk=}WTbp~0>FG#mM)okWD=}W zt%QZF;h1&l4)zFeE0`iz%o=(!XH5doOj0+CW%MbPF|3i7bt>h|6j+%;9;;Th`clct zI9QVf17};R!dNwXV)g$dXG1K zrTOp@&(VNd<&jD)Zzjh?q+*t>c3f%YbS@b&(^XSMQb{u@B4d>bsOhoEY$7=}R!%=E zB9dc4Mj=zI19CKTq03g^}UQ@Kb2 zT`s%KA3w$U{GS1g$HWjdBKD%;5Y9aTeQx9Xf|ir=$NIx}a>MxF1`J~=9;i~jOXKgc zU$!h0K56WPwQ@-ttZTguPZO)#YtO!p4smF) z)x&_hFCwqNo!BT|xkKD=ehOI}Z^Nmja9k<%VrAHv=WkeewqQHo!Z?->wItMX^3Dg@}Xh#KUR{*za?Z_|{$lmp;7o z<7EI}7v-C7VrP8Umd)|Rt{pq}Y~P#MyLn4|yL`3G>85-Srnhc*`=-y2emT0eXYovX z|GFiZHwx|t+$#znMGyqH5!PDa4}*?^IMzYo2N4889IL7DClCZd9Ji*z=`kr+pmQ~= z`-68J^?$(+MLp*f{&(7tI2RO!_gbb{LoGiiZezH*uXhrTap(~!k@XH7^Vx(G0oh_T z_P8m^XN2L$$=<{8j}!khg!4QT3|D#La~nm?*Q7XA3zoS2;|JO5t5@;W+>SE-2C`MY zivJD5pJn_K+3NdR@h=mu@bW(9Ql{X{-FcM`qS|&e$4QnlC4?{ zi|bj*FG*43ZlrN963+SajDMc&_ZVND&}yBk`1pQ;;-_&`eDxe!Nx0&lBKuax4_jfx zos9n@vhQa681aV~|8c@c7=N7b2N*w2>s)92W5mxf{-4OMG5##^zr^@Ggny0k=Lr8g z7(vzor@g81bKG{9P3P z6ywhlf0psvs6H<<{v7dNW&9Y$f0Oa&iT^g^mn!@ooPVTKzt?tX?35dRRv qUnc%D44)!?k^0f3)FtA4&r~{gC>`gebi~{70>a}2C2GZX#{V}|-^7#v literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grclip.o b/pgplot_rhel7/grclip.o new file mode 100644 index 0000000000000000000000000000000000000000..5819aef41c672de0fd25d46122af8d2851d77532 GIT binary patch literal 3288 zcmbVO-)mcS6hAjNNwcO)(sqh6l?ZdT(%y7w{XxYpbGmgZLnZ^!L3@+lCUMD4dUIP6 zUvvzapkVhh5cCgFP!JsGo3Mw?zrZKKcb}w>KIl33o|D~sdPV4g@BNq5#fK*)eKcqj=9P)M_>llKYQ&|?tTCq6iX90CX3dCJ%lLApZTI?>}Bsm z3I)_<56%@!IWkD!g!H|0q&06s?%U23N?nC9^yF@E4@9M9nhT?v5&9HDD2kma*3jG9N? zw#)t-aD=)mf0&vwfz){6CFxw>?wy0m;|xjc8p z*($HweuytF&%=<)7-poXAdmT>DUal z-R)is=(JrY2K0C9uHAJoNW{&?b!rk82FAQ#(Q$EH%*BH6{&VF>wqNHtCQK@?(`#*73L0wY*eaI()pvhC{K22`0Jl2CcHV`Jwd|RJhTgf zCsjywC#^i;;lGS{bi(NdA0`ucv6RXTPP_t9G~xJRFu;rdfz!?(CNtQPI8Mtx6Iq{i zQIG#Cgv>V|&?8!KIT&S+CF2Qwo=QPBTt%qN}DEv0d-zofSmVZ?E8!T_~tm}{Ni|}MBJgtrJ Sgv$xhamu7bqW3BKM*Ryb3-WIO literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grclos.o b/pgplot_rhel7/grclos.o new file mode 100644 index 0000000000000000000000000000000000000000..c9f96742ff687c750f2436afe8dc125781b4e99f GIT binary patch literal 7784 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grctoi.o b/pgplot_rhel7/grctoi.o new file mode 100644 index 0000000000000000000000000000000000000000..11664637dabafcaf465a8878c036049d03ea3e50 GIT binary patch literal 5000 zcmbVPYm5_B6h61JkCyJ1WfyP}A5{xk6sG&=@>J|Duyjoo5HQh@ly0|MDob12S+g1l zKk6g3u1bPGG@AWmBK|^us7NqiLgj;LT6)@@z784%4q0(9JveeiV?aT zuj~!|6)XQ18?IcBRjyXHg}l|}1INkr)cQ~h{oxpv3yCyQh&y#A}eB3tz>YN zw8!aofy5V2Oth9YA>A&nuJ&0j!&62-xcf+B^!2mv4J508_*6f|t*#Gw*JyjU4IG<= z(&q%lQs2hKm74hV#dL0*dhqzr)ZTqi)ygMCMO%e|_I-BIKT!Tn7>(tx#KliBcFVx* z!>3}^9ih%xbvzV|S4Tr#apbz=RU@=AUfmmt#>yvSUqW|JZ(pQ;`HGdR0K^=zDA3^_ z^lO1RqFuB#0eE!raElgL?O)@6IT{%5AUrxtbO30Lpm_-&?(m>t1Bt^OkromfBVhTU z4yV_IqQkV=p+#daiPF;-0>6JP7634-9TqhC{Q&;OFpLRXgc$Ci%&qsJe6K%@sz5uM zW9xp$OQRlw*W5q>k14p^Jf>cl#wT6$;vGV@5(w=ZR%=-lq-{f@1V5m{4AV#!V&OTw z`>gcHHSGp*yEJb$Eo`xA(xEeVH5r<*z=thFqU`_;e!^QW;q7OfPhy} z_P|!W3vn&big)uIVI&bwj+MfNQdUpx3Kxp`r_(7TT*~I238(UV_T+QnQZW@SWD4VX zqhIgUdr1b!6jMe%tB+Z=`0V!0)$a5x70b2Bb7fDcy5+MtTyD(`eF2f<96zA)6kV$Rv^@BgOQypqn-p zl+BIhYk=`=E{#Cma<+`d^Qjt}!o)}}xhIWr9g&jQ$P8hY57q-ZJ$ceOEG3sW(mHl% zS;KWIIXq ze;Ac&O=N$T`xoUn)IVAywSU_YQ)40oYq%k=k>DWJb~EbS^0(nf1Cd-O%1^n~{7J+p zCYOnvMW;EximUmvXs%)u;T!fBN&waNxf%S=m~VZ6J1LlhRDT0?Zu9SQnSTq~s`ID* zsxc|uFPy)d1P7_M71X)qk8*zLPyG+zrRIMZF^VbekTq!mALx%Iz@yAB$3uv_`G3d$ z_E*Xb{vWYFtL@<$``Z9BGOxtHMusqDnE{$Di>Ni&cR7Cve1VKx{|YYaN09WF`+5#y z>a&AlM>+pl5*(z~?^-+Bx6xuDoo9#Jkf&T~ejj3P`7h5#1=6F|VBgjJwnAaZt^uyx zP+(Kk%#PPx7+@z zOKgm98XSlxHVqAJ-LNgOZD26IApwcZnDud%z>kPRvY1Zb7ezLgp$fOq4T;Vh?Zv<8 zFB@qm@vX*8M&689cSqhahu^4})iY-Gm$B*#o2th*RbN~;^7Y68Fz`4UIgOWk z%N#ie0n=(7-hCh<%G30&*8MBr}q6k6nnc`7UpRCUURfzs~MCYLXYh|6%gXewV^{ly7Kzap<`1|9yLOD zj)CTx(8VXtgl4Xbv_k8+Y_*^13thY(dH|h^?MB&LfXykg88%1mjO_KaJznI*x=2SO zAW$!X3L=O{I?U1QBCRJHBCP<#0ay|rT^H##M=y~K8vSUcp+4?2p(PMXH7M)$>Uyz$ z-)pyjq;L3LW6!xU>lfyz3;H8ZM)rdRna$Uih8{zkBZnlmKd{MqEe3AK6w4ewVLTmH z^u4Z;o!qfc#>ORbPI;Nc&{a=I9I@%Mb7#GONFT21hF6szM%y zufo1*q0i#v?K}1iN}gSepF&f^yCKzm)zj-jF>uy5T3LuWhS7K-Ed+{LJuX!wH5AK6mW-Acn$&?vj^Nbq2h+!esHM7kVtkf|i zS~tZ<+{j>jWOt-!4nJ3U7OWXFjSE`Zn%6W3Th42lY0NTO;bsb4C}M3w1S6uk`NPm7 zL_^eAH9gp}viXYUyH~fw+K{<=ngOJ9&Ji9SYYTvCBZy5%^Ta7y?=&Hrv|bRWq8Mvi zF+BjnwE0HOK|q>rUQsi>N>Zi+pc$W`iD00mPDgtoO@zQ&QIx(wnAr^Do@HSCvo4Zj zZM&%EYeBOR?V1R-X3rAyrZodT$1q}TsCMomQ0oF@u3=1t!6G(q7UWBa`N)CPz6g^M zgc^n|SGpEh2_`Rr<wCkj~C;MtAOlHeozq_GZkTI(vT)G z>idgR(4A)~cu+JpS%WBnPVit;p(C92U{Uk5dFvSI@KFGv_dc@NDFkB7@AS< zc|Y_cF|^6Kv77wRjlSHoLF2v_{L!tq`o-Xne$h&U(GOR{_;QZ$7};j~k*HAMc%5{*n>KwPm|E1jQ zFwrH(u8VcOTWWfrrhEm&&N`8`>UvI1Zv*XA0r4ruu8VcON=kepe2tRTQt$w(LKvZL(@DuVZg_jW{ftlG*LM8<>Y z0l@>T{N zfK{*RfvS?rVBb)#k`(%SP%ha{*RHNzg={vn1DeHhe>P)vr82NY)Ru)rDcifWcZIa( z?2u-X6{v2_47dow;|f(OpOr33R+hj7)I&wb7R5pdyV6#&h>#bHWfii*b{s1&jmRXV zoeYcusqRowWb&?^ww;b0nf$<2mvsW1g69~jVj-0pH;n&rS?ltGg;h;u8ZuLG(jtr7 z6<`?q)tk44HxwM#N#?^VqAQ}8hL?5sEbCt0vpn2!jXe-Hldgv^UEV1Y3CAv#vu=XY z;PjW#c*&KcurdR-$W$CVB{GzyTm@z)R{%WiBnNITLsc9q;)D%hAmfI-qEmnYNKdwq z&REH;mk2c5Q-whp*DyF7j4P{2;tL6!b;gzRK;jq@PU2SttZ6Bp3vKkHmMN66TnInJY0X4P zmiswCIQNAMAll?~rO)|X##I;n^P==`WSvYD>p+oXXzL6)!nIs4oVyA-c}&PZ62>d! zPrhTqYdW-Xj(GmI0mf|tB#z7DI-C$u&X@-_p zT#6g#S1;UG20BrHnNEWC5z@!`(Tno0#!-PzKmAjrKVMfSE<#HGZmo^DDzB6Nt!!XQ zPx0=92FI|kU%rY6A-{wvvJdxjfbpCleZNos(WDx`dVU@R%+LRQY~U(=HGdc;U%SxuQHuXBC}@Spk1~%P z>2v3KO2^1JigVz{{Z9qV&;QG`+5W>bQ@e8iwGP%mUW0gRjKNY2PM8Ic74(e+=?*aOpIj#fuaUmv-D@-`uPEt~rplDOgT73buW@+=Q z&JXw;1b=)I{HK%PuTFx$J_-KjBsiSk=@X9kk`?XgT@I(&_}b-oS%H^c;v_`k z>iCv5eeuMW4I8dqe_i6bzBTdn`1)4LS}xYE?c}h=w@R%0iy4b#cwbFBcEtu6zQE)P zJ8i5>wks0pl=mK$fRk?~pH9GgoL$jicrkG^IXeLX795e2pLewGLWz3nhO9y!J^+zD z@Ox|0$tOh0v87Y1IOKg5gp|l97T4l;$Gj3l5DGrOc+V?*D}qpPy~Hzx!Uqt9f_!|2 z6pr^77S8{!2TL56SjE4Z7FJx#ag|c|X2Q9h?S!LWJZdZcsD^()!=Kdf4{G>Zge$+$ zCCfX6bH9zW*>JyYgeyDPkL3c59|l>)*`@K3`)|tsM>QN*JH@|Iv$IIU3mU#y!*A2< z;3}o;?A7?^Yxp-cKIUKTEZ@`k5sm+XhU1#2?Egl?@$9ScziRezwO07M8vh~pSNZ%L z$@8h^{PP)KjjNmS@m|MrIpdFzyn*r6NpB0||BGa`exiu+cc5`7HsjBy{5ymzzUk4$ zZH&K%@coQGNccg<&yoEvGyZx6D8BW)rUNpPR|=V#YU#{~^Y|h4_~-{vh%D z82@47Z)SWoe;;RjwQmhD{!y~8=2OK#gLu0b|9RpMGyC^aJO>#6H1Qu`{9eM<{)Hmu zvx#^QGyXHgf0EhnAo<6PukfEUzDe?L8UHSd|1{$dlKd9quc3I}WBmOjPoaHK2o zUuArCR(O-~pC|r58UGt(zmfXYcu$kuO0~Lw)En^}hDXWH0?m$E3o)ggjQ=X-xpxx& zD#rf`@#BoIzK?%W>Si^w4WsW3mT60uOj@2 zh9h6)`5PLJe1qA$#D8P>G_pU14$bO5IYV~Z7_Q!bKFIJC+38~V8)RoY!(W0iU@0;Dcf>Dv-4o8S e`Z-^W@}mleH4;-2y8%jK#l*0M!qzlEpd5^nvXoVf6iB-!V4@zH z7&ozr{s$iX8;tP^@!*w3NHeU!I<+WUHAeITscKfX{D$Idr%;b+Bx zD6kzEdp|i4Pr(SmI16k6b^%*~-Ej7hvkOKqup5{F_5jZTdx7T>)Tii;tq#f;)f`?W?*xMNVoin?donw!C>tEyf#$>;wAvmVw>w8lE>fVC` zy}p;ZwWQtFmUbDNo|qU@lG8JbgUYBns$Nk>hK5Im(!*&bId85ix?#C|Dm_S>CFyd3 zNe}0lv>lcDB5mOpXy_>Te$V%bFe^tJfvlW(9@J#zX-Jck^_EF_Iq*SFg3#my0Q&$bkVCqV(#?B6~(7&mQlXXR43eA zE8VFY71Jx_zd^wYbYEJ1D~)@$vsb|v5_D4gF#H_x+unl9WI)bfP@XUukc12D5|H?y zXLIN$vWfU}T}BM8`LFYbF_%&eVTi)>r$iDuFN@=tz=@%G9w3rUVrM;0c%IITIdA@) zZ$9rIr*A;<_k?^Oz5eq)Q~%pA_h&s_bGD5#bDD)sJ><$Cf+OZ&tK=v?ALJ^a1J!AFHSt|m|6>7F)=PoKiGyH)&iOttJOC03d)%x1MhX?ALAAy+IF zwQM0*V%9zUYs$_Szpah(){a{Vy?YYs4DI3Q*p-V!LWrj`=ln||A;d>8IRBbRh@V#+ K*1cQe{rUy!MZ5w4 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grdot0.o b/pgplot_rhel7/grdot0.o new file mode 100644 index 0000000000000000000000000000000000000000..f05a9a8fa7c37a4c664971b3ac0d9d8739d9d949 GIT binary patch literal 8112 zcmbVQdu)@}6~CVyh=YUUJa`O{8rBrd*4P2ULm(jGX&@~rkB+geuH)E_!LQm5br2hW zgh5i83bsz0)>WcgC&B*MT4~x#>n1id(8e^hr^ZwbZAhc-)|H`Eow|vg-~G;Y?30gf z^hox-=XZbSanHTqy`Oz-OW#(PWho<;TCXNGgDMqhob31LZjYL)W~qI9!lQo;hsWOy zkN@*_lfOQEY8pnvG5_tR=HsU?k}raNw*K_#8>CY|Jh9^r!Oxz)LENU`)uxl*)}7;H z0U|V=JWm>pA0P8T4PIzE`FTD5^jKJrkCQffbS$8TXMBgc>L$J>Lyvy{^dRx9Pt6UF zzZM?979M{yJpRW?<{N#d+~b=&{HL}kYT7Ps?&x;G!9-t2cX(oNhyPMt2idDW0#^4; zZ0^_)o>);GVxn9(=`B2ZG5oPl{Fvf3TMzhJy&Ju5-+W)Q)nfUlE9F|Gwzn$f?oeLu zdKyuxE@*9NboF0NG?sN?^ZUly>&yQYlc!D z0*nQz4U^*-o#CZ~S}eHsF4jpjF0MFO;8kj7l}db{Wo>T-yJ;b@LqzafRs&@Ntht5q zrxLhndEF?5!qSit3U^m=EvF%OT^$In4Z5$lhwj&D2bS#(j4H9dbeN2$m6hd&3&^yQ zDuwDp9v{VbL&d>Ys8_EC!iZ%}j=UGT1Cge1w@)~sI~}?Ag7!Ija7O!IbjraQeZ-OL zj6UR;!@Z!p9i!a~y2sJOy`Xy?JvgJztGVx+PW5&6@UUae?gicFn6ESHobN8j93-mj zXX9}^2$N61Yn5l?v7b53I`V2Qsywlwg0g1+onY6QNCUiCZFsC)XZF`RQ zymX9Cl3H0u16~Wyy}mg%3Vj&jFC-doC zX+>~Za2a%^l7+!ssVkVk-J2}rV~3JUgQ+YHKpHA%Y@2(|_dLnBJ)^(#EWGBK<5}l9 zoE#o?t!i`CQwq9lwu$QF)}@9kefz{l;zb^v+B{XUD=E`&&<8c_4o@*yN{F3aJ=JI@ zY4%jqN!^WQy1F6?2XnGO{iPA@;K7QKN9*Qm1_v^_X{jR7QkGm~vayuysf!&_Gm<+GK zU)HsBS=aKV%i9CHOGvM;vY~^;kxVH%pn}Cx z!ET34uMkg1gQa-6q=JLdQd9*8ibd+i2Zoc8=)gcBepm%H$A(hbM6L!%r?PPZa<;Ke zO6OuV9NP2QXeLg6t2{+%Pb7iaHk6MF;#7)LeS_ItDITOcb<*~Z9b&uqP$W?xKRomI z-?Wn{o^E|PRk`WmzI^oQ5U!E=q)7~fv%FyEm_3_X#4+nIm+?i6(@9h#eRnx>WGt*d ze7;|MoRdzWO#B-)Sxx0`zKeYq-wil@t3}4b1uEwRet4E`^_ITHl|ucnMzVhU2$Mcx zxk|rUEA=@jRU*0lH0Bh4^?kOHStrCtY#BdF7<^W)Lh3`VaD3@o>M7#NoM3;I?ekEo zL~=)HOk$w-aH9I>;d|JZXiVk=dcVW`8wr>5e}*up_`^)>g0m`-+;JLnia*5hjXmm5 zzfq^ef1WV-G(75R`6|a>D;CDYH|;rMJK107*TqiuXBuN?+LzhhjGJ~Qev~?hu`@$I zp$;&Srt-6W*buqpX;sh*)N`ue7aZ2FmAJ;R?5Oo0hU<)?~U@gj*Kx57@DDsF|{QY*;3 zrK+ChzJzC|r~$&8)j#gEQwyvobaBz;9^65y3aV ztsWEn%Qjt^^)dOsz`T;+-(>zLh5zRme@gJpe%S5FFEjs7f+cBuIivIZOg(?kxcNUHD)PU~_#DAM z!TEGBZumEu-zoU>7+)j!9@aMrzFDV!!8h+Y9~Jy|))RssW<4kP$2k9^fbOA7lMF!MFd3r2Q`VMt@oGTUh^r;9q9_lHhat>eqsQll4~xzm@ZUUGn+fzAg9{ zOaLB-Irf8x4>nZIA~ z$Cw`#{G-gz3jR6fKPmX;PCYL8mzh5y_`~e~i-LcX`7a7S-YpF&+#}^E{#U2-vdn_1E!Dqm_Bgx P&Mp14V~_;CtNs5M*}BY5 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grdot1.o b/pgplot_rhel7/grdot1.o new file mode 100644 index 0000000000000000000000000000000000000000..dacebbe3a92fa3223eaad20916c80d730fa4f568 GIT binary patch literal 9808 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grdtyp.o b/pgplot_rhel7/grdtyp.o new file mode 100644 index 0000000000000000000000000000000000000000..7802fa816875c96038dc22376b056d9158be0e3d GIT binary patch literal 9416 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grepic.o b/pgplot_rhel7/grepic.o new file mode 100644 index 0000000000000000000000000000000000000000..ddcb787f7a71554370017fc33db7e21c4526b4da GIT binary patch literal 7552 zcmbuDe{5S<702(hlh%n7*G&S9rAS^E)&vndNz)%{MU!@E;;iXf+61Id;5|S8dX4>T zo*i(aY3ml1wX3pqh`~VRuK}tiA$1_3!u}wzL5n~FCYabCjQ%z9N2Q6Mf51>V=iYOj z=aW|;a3%ZR^Sz&Y?s@0lci*$0I65;KFbtuKAr6UkORGZswtc-lE}P@x1ENPHmv1MN zms(M|B+josZYN(%UV0yz%a1+PCu&nSCizwO12b-8w;O=8-fJ|}fK;}O3Z+bUk97p#s<(m= z!hzG>XolAN(QFGt1YHLDYTqSi4ex3=*bx?@!(#&9X&BSpNJs7iIsw2o!)OEFs71RV zV7%fM2p+FdgydR80@Aq4S70}E1Y2MXT=|%6%k_}$7U{rH-jMJVs>%m|3U(LC%_~qB%!^6Hg+l)Hr8?V3WAMXj@7`RIJ#-n&6tlt5@Xxtm0 zzUFt;sUJ0~Vyjhfg%SBR$bsj}A@pW+;%yapzR+Z4l-2R3B*)v3^p>5Vx4#2l0#6AM z=$(Y`5Va3L`%H(_cf_FrEPA-vzBMl7yz|f(!LJY;ZSwx_d~lXDm#g)Yb7fAO0itq6Ca6>pe;n+%~otHp2MeD z-mO^k`Qf-1gAV|Gc~$*w+)<8EA!RAub?>;iI725a}_nltWRHO{+9C zloEJ4=3QtHr$80rqwrCK&s#@GTxOWu2E>@SMJF^be=j==ks+?1l zb5yM&_Ep?0RMnb^eR<2Qps2#Ita4GG0q9kU@P_qYu27<}KrmBn z5ogNTMV!7;&gG!0m)*Q5;w=NSV0=>#&&4LoZp}5F*l2t-zArX1G(0l2dw6%O|5P>; zOPV#M5AGfiZh8ToSat?oS|xWLs#0C1+02|>0IRZC!K5$ZJWUriIv|SWylt69b)jH` zi@HpoU6Sdm6l)pbs5x>@2{T$($y;!2OkSlfovXcpDP6<_TR8_it(bj!^a&3G+auZeiZteGO7u2!L$O)unAW;*R= zKP%#rQIhTC%1uJicCsLp)nE?^JJ>NxS#ahNO<3w%BXCakwr(Da%Aqj)9 zXRUb}mo21nF8HC#`oF3ejD|F+mmrU)acc8h8xD)6(hC;X5V+o@u*<3v_^OQa=!4@P z(jOolPMW5&+GMR8d@eka(C7a;9?wCHiSzCiH!mqFt`ar{x5e+Ugv;q2qk z=Qsa;nqQB{{B^>I&;JF`(5L30Da!)Qe~=|s&#&vR0qr;b8tt1w@~103PS@Y0@w#8v zzoYTm*0mm|?N_0J8Vgh0qVfE?^!4lU--U)>{t7TygL2kw3s-4CWbEJx&{4uaMS%N`7_xS|1_( zUaE1p_e|NzbiIBbAszkbT%okrqhmZVa(0C2&rqDlnLbGTX{PJ>K1n){GsScrCqCz} z=Cdx>iF@7?`RGyYME|BH9w@%ey7&%1^Amz6B<2=uQ{i0_cD`4`Au zrCP_M&q2MOn!ir|-()=APgs7hszy9-5PzF=?LSHOUm1Un>;R3^e1Y^Z={lZKTE}}B ze}VY>82?YQ_5MW@^K+H>eT=`K^a;{6f0Oj%jMu+K&Mbn=>3oFtX8dEsA7cJ55I@EE1>$EJf0g)8F3aXXLVglVf1UJ$OxN#W$C&;y@eb2pp?S|U{j0>6sUJ<+@>21>*XcHP X=r+c$+o@6`#Fxl5@^Ee!bnA zv4#v+(Y|pUlq6U4V-pL6Lx@ojq~a=+eD~n9zGCCM&EqJ3xAMx_R8~wB=*Biat(}x>Dk9m%EBj}K)g&RSKJuP^n-m5wClvjMc zEgbfY*^Qthp8k5H-u@o(^ns(oIUAqDgHYYoZ&l95XP@_)b>cU*sHjJMZ9N_&-~4AB zY29TY`R0#8;;1c~01v(c57B@fzK#9x3{ZOywC`IZ@%AWGKx^u&l`r=SNRiMbb3-Ez zdKzi?2nc^b=7PqDLBgMc>ty<-W#0f`mVX1f?mQ zhD0OiHSm;gDab=wOivYKg`yQT#$p9KKW-YOSkcOzj2ZcCHlK?X zZ6j7l7c%+M&gk~&c9exk+h);-rZADE?Se6p?uuGDz_HX4EgM$wogn7)t;8QIRxguqOlwxQjXki*kVmMl5B)qE!|uQOxYxwyPWTCv#Q_jZPJ(r8T__)oCk< zU@Di9LlljSD4Au1rV6$RRk5U_ls5DNf{rVOkZGg;8Y<*dDX7YMI}MeABON?E67J92C0oyhyQAIFJHp#LyS8`k=-LtPIA$ip zalPc=+jeXf_UL4)X8Ip+gT~bUgh8z&dSYbl38=DV8EZW`J_%A`s(_K7LicKB){QfR z9WFBYv}NcSXTB0O$}*HzR)(^WDJ4Y?y~KECF}h_ZhM=7QsZf?fINJmxJCy;{NaZkC zMoKqO0~a}MC-vf(l)!R=7Nm?Jv&|Y0Ai|~)2k*LTPq+i3x%K~tQLLris7)UeTDeKv z*sv;a0nTm&@OJ8x`?N3Abk^4wYMb%z5B2)8p*8^eLIDviPGw8_DAXm}smD~yHZyuu zx*JXEC0#^Ei$xJlnxm8Hgg!cIo2NunavaFYrSdgE#>$xh8|-Ccg7nO>M9Ky`G~*9ng+Ud<=UnJqW_qd3 z&pafNnz9ijj!6P7)CFR%hZ@IG8AWBW&4fb=swo$1q^iKj!d!(mKde6HYxIj3HU68d zgLC&oKgUqzI|O3Zbr;UXmn)-4`UQ$#nBMLfKfHAF_>BO@ZK8q4DW1y|wRDd^)E(icg; z+og+5&Mg7PeL~)%$NcdI#pnMpVB99^zfa@i``2AKcNRLm#=lJCD}9VVUds6RPXLBC z6%U%S+)l(EwlHdZRWAVBOMjg9-8QnPDy66DXGvf6tNPJpw^FA^=_%eXp@A54Q#?lc zy^2V+n!kcygoaoAnr?L%?)}>ekkVIpGhjS-pyul|{v{M#h5PU2JJJ`>Fq9^m7~U6~ z;K#?utGw6v7tvWL{Z3VR^6@Jjtbx2b@y}}vmZINt$D$uzo*?cOVZ`N^z_KCy%ibmq z#b23yt%_fGZx+A6KXWWEe&@SpS%=^GZ1KP`^2>`~v@8b!@e2w*>-7s-R2Pox*W!xj zDeA)!y++*(c(Zu-T9|mw$CMEGDdxrBbsfA1aJQWfwRF|{qP({y4h|mK*Eg6r(%(OH zU^p?{w{P$O-saS0ceG&1+nrf9Wv#vfo(A9qBt zfogu9Z)3PxU!{k3DAh|Qt{0YyeLDa99JqpimHfGz;ol;Bh~aM#elOwNPv^_6noE_R zIc8^$~`GS?->f1Knu7+>Y*zcKzxonsp5&w&f|1{xq zjPLv@TZpeS{(ACX-K()1_m7IpGmL+d?Ei$>kCXf}##iUzw~RkV^6QNM1G4{D#y>~$ zKN$ZC$yXVFfn?{eXVtv%8sW_}ZxnI9i-d0=T+e$@m({-(&m*l7GzjjU>Ow z_=_aJ!uaHl_&wt5`{CcT?l&`j2k~!X z{0#A9j2|cdZpQx$@eeTm81WA?{+Ebw5b6nlQxt%a7LBW_&=%xH$vgw+i literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/gretxt.o b/pgplot_rhel7/gretxt.o new file mode 100644 index 0000000000000000000000000000000000000000..f8ae1256c468b668fe682adb09554a539676bcab GIT binary patch literal 7424 zcmbtYU2Ggz6~41;Cu^_0aqPM+bsn~3Gx?Zin#QsPaTIP1n~LSlmyRJP;s?C!+7 zv&-xl))p!O19e-uGzeOdf>cyM77|hc2?g>%pis;MB2=Z&m(UlAA0iM4cz~jC&b{ZZ zXOAa<;YvIAp6`6;=brmBV}Jbk#8|{Igl>j7EY>BB3h_ew`Zyzp8F81mLu40kX0uPX zBC>cuJU*0Np6DORE>HG%{j{YY9ZdjmU}E`L|7do3AJVeR^_D9*Sd-G?kFzhsz}RlQ zGtm=28jmLW65EY#qic&0k^9AXj}Xy*5sx1RjSwv0?FenMNHN-5s|`e9+ADEh_-+Y%zRXiWnJaCMLIB~ z5(&X(T>c>7iu-<4w5gyldJ;xZNN|`%kH)&@-=PnqzYW}RFAO~y%H0e)5$YivJ@aH( z4&mtgLb>7Ssn8rYgPskIwi)zXsE5sfdQ=$2Wqv83U z4$Xn1bT%HtgRp)Ae$hA^A9^Wl*0~=wqhhO7^n}s-8o-fDl^A+6?!sdgxm0YDW|Va2 z>ynviLuRn;1ibw%cnG{DM5J#Fo-rC9gz@aG$O z!C^#9!_zSSk?4e{e5=5d<)>?o`{A@zDVHm5y5?EwYN1-H z`1?|OQhQJqqTtzn-B0E5ZB+28)@)%o<+z~0*4DU4d!xM%UyTg)Mp_{vXu9Dy3_nG< z30a;5NjVc`Ikd_{Lpgaf7Caaa=KvMr-SAUJa`7aFkK>I|^8j)(eHT2JUCV(Ey{c{) zx_a3`-F&%jis1C;YPOeNNH0`MC1)0f)w$`CW2N&BRHRXbT&=W!_x=&E#}eew>wIlN zx-;w0ebkxpq074^8KY*EP*?SA=xV-+x`Jg^5maedR;45y*S8C{H!$nCGw(ex2wGK$ zg6F_Y(8ixfo4iv(N7YI`-<0})xpL{o!cozo7!|J|N_co6CT4r$k*VZZ#q&MWO^&2S zQV%5e3=QuY+B>{AIdImVNoGx7;k)+^3U7KYkA}_+re&4AS?J1jS#)#e!W>A|`6@2K zJjQ97=E$HZRSJ$}mejOC1{ZZ%Os6c1SuOc9!c{TyZW-%aSEZbD9V|<=E}g5Lf(4$( za$9*9l~&%g&;r-F;LVt|qLifPI!@KIn_@$WZ6QuP^w7cN090Y{KTn@_-5t~$3ulE< z?=t#2w#J@?4UhN^(#frQEO921NyJ2|HedG5Y3O}V^+i4M?2?)C?Yb{gGp28f)O4)| zLwkCzkTa*JJ^LdfB{>Rm+*1uoAC?O!ANeJBJP=Q^O{K9T-HNdEW%!Si1PjQd3UwypRSVn}t3 zC+9v6ny~m+D89DG`gOvO$NwB)=u`7xDBF7|{vlRa9bflf26mXePy1#!`O}@Y)BV@U zUh8%Ll?@+dN~7&G?x%E#kI8F zM?*8g{K6`Xcm@$I6?k^-W2R}FDG&* zCQctcGLbtyHg@j#WNz}v(TU^o8&-aH1HEorB*UjST>}F58CK!#TdLt-KG^Ww;hxm^ zg9t*y700=0oUT*3Qo&W1e>edT>x1{>gS0_u`!?|3fess<18kcAE+vY4s7LeQU9gkk zy6)Nz{pdL&bwBa7|6SzlD8s)k{)bl*mA35uHna&g6PuO%m2_*`j zdX4{(wK~#|CRACk{qEpnqMS5PPop0gx39T#$O`-y^J3xev0u| zi2nfN-$(c{#$P4;6ywwDNStT!wfjQCF@v|gPF}^FkMS=P{}sm9`{oAY4^cih8UAy^|IToS@EFY-Mcgv_8?KAt8OrBA!u9_7 z0r^QY{8hpaF?^Q%oMiYF;=2t07V$sLaD9JPNU!rJvGJvjdFpRG)afzD^}M;CBpN}( K+R%}b^1lFO$Xc@i literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grexec.f b/pgplot_rhel7/grexec.f new file mode 100644 index 0000000..9dc8fb1 --- /dev/null +++ b/pgplot_rhel7/grexec.f @@ -0,0 +1,43 @@ +C*GREXEC -- PGPLOT device handler dispatch routine +C+ + SUBROUTINE GREXEC(IDEV,IFUNC,RBUF,NBUF,CHR,LCHR) + INTEGER IDEV, IFUNC, NBUF, LCHR + REAL RBUF(*) + CHARACTER*(*) CHR +C--- + INTEGER NDEV + PARAMETER (NDEV=10) + CHARACTER*10 MSG +C--- + GOTO(1,2,3,4,5,6,7,8,9,10) IDEV + IF (IDEV.EQ.0) THEN + RBUF(1) = NDEV + NBUF = 1 + ELSE + WRITE (MSG,'(I10)') IDEV + CALL GRWARN('Unknown device code in GREXEC: '//MSG) + END IF + RETURN +C--- +1 CALL GIDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,1) + RETURN +2 CALL GIDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,2) + RETURN +3 CALL NUDRIV(IFUNC,RBUF,NBUF,CHR,LCHR) + RETURN +4 CALL PSDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,1) + RETURN +5 CALL PSDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,2) + RETURN +6 CALL PSDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,3) + RETURN +7 CALL PSDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,4) + RETURN +8 CALL TTDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,5) + RETURN +9 CALL XWDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,1) + RETURN +10 CALL XWDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,2) + RETURN +C + END diff --git a/pgplot_rhel7/grexec.o b/pgplot_rhel7/grexec.o new file mode 100644 index 0000000000000000000000000000000000000000..cc290ee809bc6cf86d7c67114c9c56d5b77183a1 GIT binary patch literal 8264 zcmbtZ4UAM*6+Um?0?X_V`vXOw*0Bs_w}IJRSdpNGU07f?3_n3IZEYQ9XWqfcDRE@FG)Tm9gH8nz7E&fC?nBY10-7|CN z&K>K|$#unfT-vgN{|Xyv{0mEvL{@ zb4(w<@Mu$4Vr>lnPSFhCY=*a(;Z5M6JT9j@6>o!^G3dn^hPTq)AEt*pknx(%S+vc`MK z-0@*y?(Bgj!8SB3=)rE`7_UGAHkKG#+!>vyH{qXj)FDIY!e)G6jvMo5-}lX!6Lk&}jMsnU)w$-z3vDM$^k=T23aKNU&NXcnw1P zdBoqsUk6=qxrlMMTWAx2P8_cmF^da=qWDiQFoCTDKs$qFUGD6_tJqjEg#{VcDLctX znlj)}QkR4*wC4u~t=1=ZWS$CqrZ+HpRqKwM@b5XgwC)(F``Z}^Va)nSed9xewDauG zAIukyy{1J4t*#otwo|K7-RY0%GI(#0H%TKw9kH} zVOgg|#Ce~T^)m|glC1wi!QPN{z5}U$f0o$XD*tIeu;F^G!~#$RuD?>nJOh8vz~6&L z{vI^)_n?u#2aWtaXyorfBYzJX`FjTbo`Ja!t*CN!f$KH?MFan$fq&7!zi8lJH1IDP z_!kZQiw6Eh1OK9df3Ye5zAFDRaJ|OgHSl*0{9OZo*TCO3@OKUTT?2pDz~43ScMbgA zru+x1{Eq_HYy8Uw{$&IIvVniuz`tzZUpDYB8~B$E{L2RZWdr|m1OFw6_}fE278_9W z_jKX7s%mT%I$u`$Em*CVdED`3`#5AtaVMtJkfXyvHt#tZ$L%|q&8Kcy-w%1RY~Qs% zw5{NJZXzEVjtoaW8d@_rv}SPa(ArSnUMCfbCOjWsy|$k_Hjqe{2Bu2cNOE#uy5zV6 z#|DlSa=Gk5tWHf&&voB^IL|xI96%+#l=4G z6}hZGfGXwTMNc}(b@(G(KSNJ8xgGRebURVZ|F!*)%#TH#aQ^4&P`|G#G=>WGUzg>w zL$m{^qWf+_qt1!^k1zFGt(Qg`FPbBL{PrWJ$E21qc>qk4qKNK`FUrRJuU_Lf;(4Ny za_jjMh*8Wn_*3O+nO}e3;QU51yvFu`freo_sJb|4Iiy{ik;X zZqK}KM~wS|)vEN#8-mA?4Z80v8gz_&J@G;U@Ih`UOWpTA#7+G_FAvY$Pb%^KxuO4$ zBBsYg2u{fS{M;psME89JF;jjBkvCMI+mxT~eSQ4CjTpt$^PG|Se}XnuI6s%)L!+tv z@piw}YPGTSC5YRol9=V`meA;Si}00?boxTESW#UuVckDeuE+3L!G}x z2yuJHyAjj(E^2v6=6{oL-7|EofS!G?|o%=f1| zv{7tv=a_Jskw&qrr=EJ74YY#lg}zzRCl8a@fM2~dS%7+vGXDI0r|G8qTNk?jO!!C> z{8LSE`buDmGt&frpb7q^CivHy;7>HcPc^}7C)!AC%TV>;9p4_?y?Hbi-@R?yC${d3 z?;G75+Zu;>ChZ@z<0UVC#Laq+0?`4yly=;>JQ^z|_Kv3tc#^C|Nfz?S1fH!uH=EC3 z?js2|ABRjfoaW)5SA6-Zf|Ebv zFG`&5JlaYa|Cxf*YGnKk1;0wc{~~ePhA2MY$#djJMmnuMj_4jc_X%%+9ZmdiR&Y9cah#kMhw~m*{Ff>I_h|l{m)==Oh_CAZh~~dacmX`# z#Q!^*|Dg1Lp^5*GH2-1g|GMH&?@`S6x0*lmeOK|PGY$LGCub6#7v^ir=MM2z{ds4m z9ZTK4`EgA+?XGk#C*d8E@h|%@&>ACQ-0@ZXpOr7vE!hPDT&v-{?_Do(iX%R$OMRV! zQ-2*p1m{CRyosNlk14mRz>B!mfE9xlEi(As>-;{`me;KH943<~ogjPgED zAPVn4Jf0!hPu_nR|A@r@=r^mL@%a1l-!y!;^q((Fj>F$syEXin)WaIi-(Xj1_=8g4 zq~ZL1cDsf@A$8uDNTng>Z?_Yg|5>R|YdC+`y1k(Tj literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grfa.o b/pgplot_rhel7/grfa.o new file mode 100644 index 0000000000000000000000000000000000000000..6fdc742a8af9c602b2003dffdf16a2ee947221bc GIT binary patch literal 13688 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grflun.o b/pgplot_rhel7/grflun.o new file mode 100644 index 0000000000000000000000000000000000000000..3647de513d6de39a261f7282f65ea2823e905d04 GIT binary patch literal 2960 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 A+5i9m literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grgcom.o b/pgplot_rhel7/grgcom.o new file mode 100644 index 0000000000000000000000000000000000000000..91265071856897c49f1277d3ae196f51ec77053a GIT binary patch literal 5496 zcmcIoYiJx*6h5<)q}wKLw@r;LR^1=ll4v`-Nh5|zHM>ok4XjrC&`NE$o6RIyo9wQ$ z6WfYfN*Z<5XheVXhi?S^A?hEWC3HO#>kfu7Y_Ft-<;{6{(1SMbIV_y%N%=;3cGh->gLqG z)c#cNB-&~#v~`iz=5(_jS)r}eqF9@dpaQK*?doLWU!U+-ep=Vj-U}-e6Tfy zh7Bl&$;=fSNjuou-9oyi?s?rZfF&q;x^Ntto3Fx*083ZGnx^JvfMx4p5HrAs_@hDr zglQ-c!NLVo$kA(#@hbr)+GB(|YE6HO4Oo1a#fEXvba8f;)(5C@0xy)Bilzlxn-lTj z-w!Pze-a#12xBFXmeQlaeJ*pN-ibg6cH&dhev6!kPiKpumzKznR1=kI(I|{1DpvUx zvtTEx#nP>bLV04MTuM}}LZUKS886$H8(l_MqI#qXFlvpW+8A;3F7;}&N^c8)H5Qs^ z4b5t;H*E=B+PdY%&`L}P{~}Go%hKMtXG3a3yrVtU5yLS!beP)^OoH&^ZW(Z>x3P9{ zbBE_=gYdTJcXY7>BVrqZTRp#no*&kv4vC)zJA|#Un+E&pIC&W~*dt!;p4WcWE5?AB zgdq8(@LlW{23#+XHY7Wq6vXm0cR@H7M~xa+Wa+~HIfgZu%w0zxBX=qO-064vu)$M? z9a$ceJOq)Y#f3akvH#nm%jGPyIyr9VxE}-8?v8CMTeg)i#k!4d6>sdH1T zeTO+5%j9hr-?*tm`kv#C6ic=_YFh0Fi>2W$-J;Gx)wYVIQOI!%16#LljX8XMKLiH$)osUwv&`|lVVj3-FoyGX9*m)C z6oUzW{k+Wm;B~5@|jD2zTFEgt+uN`-v>Anu~TA#r(Jao#-2s zO7hQ2Vs2I2zB>LHez(w};3w7pYE-IYBKx_Ot`}W=h^T%vM{50cBc{eg2->(H$4Kyz zYI_~(g7U-pu9M6Y<)_?g{ybt7vkQNII>Gt3_(9~wU;0r&jCk)=%=VwMzjHNZj2iJ1 zh+d&8M!GNA|BRwkM7Xz({~OMY1mGeH<|EaA3UxvCTOClp^UzktFLiw!F*PQo`;7A^ zN$`RE=q)>>=53--EgWppJf1(aP z{|RPfwmnpBpaY9c=+_nfc+xh-!%UuS(uBy&G-^j)#c0Bh}~kzg*f*AQIuU7X?2; zAQG*7nsvdcUPOe`5hM6R1R@dMhCjidCJ;%@d)kG)yt2cV^3oug)`Y~lz=!+uUgE>) zj1hZ-aTymMXK;j zAqB6nET6Oz=OxCc6?^H=eLkG(a4*Y`_;8B#Im^%aaI)`X`DGtY_N%B+NUyt%a{`n7 vEX!~EaI%-bI8G|~GaTmt<7)l=>q>Ys6`o=XPk59bNNSvzgSu6Oz literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grgenv.o b/pgplot_rhel7/grgenv.o new file mode 100644 index 0000000000000000000000000000000000000000..a079f352bd09760e8fed8e92c90ae5c07cd28503 GIT binary patch literal 5984 zcmcgwYit}>6+W}$$2#jee)N%~l#av_l9J5Ej)5q&sWbp9w=!-!GE37+h=M8%f2hQx;%6ulEsq2wq*C}(q@og)N;QOpB7`VVFz4L4XFa~2 zRiz?vq@8=tchBpdx%bY!JD;%+$21L?G&lfj5~BbY;%oefU`JpZ+ys_?Ci$Y}7n8rS z{mJBI8@UzR_mXee{#^1+YvE5*7BX?m|LalzrL_M-#=n?pKK^EaEj~ZpEj0tczi2Pn$#}+p!)jbdX3ut#fqw}-3yt)` zTeqIO-fGMxd!IE#*ENA(*>!B4on%!5P&n^#7qR~%Yb`e&3q zT-lXbyn4<^H!`c%lMmjm8(w?HPhGh&z3^|%>qswL)vo*=0jX^*ok{MqmWs&{ducLh z*~p!=m%QX@duc9tueI>gsh6a@=Q@0fC5BP8l#{Ecs`Y|7F_o&;DxY>Iyi~nVzCSflDU~YaRJ}Hls^+W3 ziuVC?$Q(-5XX^m@THY6HFd)Vz zN_(DLs(OZ3F`QztGU0fx;TUB%?|6k7WJ{IlvS(CsM#(KzYO^LB6D=zjDrF<*6pHR7 zoIG;UJ~5Uxgj;;g*fx0l$$6Y7(UfjldcgdH(lQ1(+!l0K)9!v?{wqy8 zs(CcAt_G)={ejff;8V>0PC`1&%`Qhff@W9^PP3~qnSlnMRIN_PE_Y3Z*@}d8_}u(5 z3tm(2r0S|yc5Q3gRp*ykxTR^wNvY=bKBVD#X5 z)C43`c1kW}#Z!8jaf;I}965fEakx_RYEIc0Hiyj*8AE#phxY6p+-vMO7`-RP#g!}R-UjREIJ00HbJ+HiIyv#Yhnd=*F9(AK56GpWpg!} z0{=T1=z>;_x=D>7Mx@R__4{)(>Zlmm_2Ng4i1)KC$Wt7i-y{=l#~UeZ$1|oJSQqqwM=+ zQnYP`iS4+Z$4=s#M**pPo3!V6?1SxCegqj6qrM?&pHdvFx->sjjO-n`pl%@{M5^u+ z*cVlQyiy1X*B_6M8|wcZ#8jVTcuvOOLqdpD-KViHD*hH3pY17+Ui@)AIWIajkWbb_ zR?sst{x=zrEyw5f65>(zW8$a@u={Q7e<|%1HF!wct2oDH{55H>yk>Y*+K;fJYELdng#wOXYHC2=ne zbyw=LXU$@wQpTHW7LSO9avt!iTB^*r)Ye@Oay1t(1x@dPQWg*O?%5EWcRjp9hX6ck zR-Ky5PH~(>qd_C~7TTlUS`Fy9#A!v+5rOgX5Kdbk<7J7{9!0a7alYM>AKD8UUqqgW z^lA1o{v`sDNT2pH#=lD-65-qM$M{78kyQNU02Vl%U0Hu6gwxz+{GSr%e0YcImK!1Y zr*Ay#zb}NpJA|7OSN$9a>E9aCm!D5jgYYiLI}g={b`}1P@Q%Sa-@)ZEPOM;x%|y8o zQFy|6U2i84iTs2=p>)nBV*k8@(0V6gJQIlULD{l@DdNAX0Wr>Tk4c>Uu>QwGIL9RD zObDks@c45fob>tM8J=(CpYWR0J1bj`%e8(egp>Zar2KFQr?_90@?#;K^#3O1rxg7C zG;pME2aTv3>CZ^~dm)_se?!X8hj7w=M(STu@PA1Bg%D1DxW4yFoYcbep+n+S2j&T4 SUd4HjSN#}dghal>{{IX2G@w`j literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grgetc.o b/pgplot_rhel7/grgetc.o new file mode 100644 index 0000000000000000000000000000000000000000..1f14947c75fba29772d83565ba968a9bc84c6623 GIT binary patch literal 3376 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%0DTr_CAd9AWb#ZbO z5KSFu^&b`;@Q)!xbg_fhI{cA8YW)1I+Kr(zyg5*Rem~Rxlv}n-Mvcy27@m6s-u<$- z@`uvWDnMZ(e>|7X7mkmQPaT;qOlNcXBZyY!{g1+e>lN^qpqJFQ1GI(KT>dM!kkppaR%$pI#F4tv9L}!*F){cBqs{hK3M;M0q3cG AZU6uP literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grgmem.o b/pgplot_rhel7/grgmem.o new file mode 100644 index 0000000000000000000000000000000000000000..37b016f166c70fe1632491190a6814035952a954 GIT binary patch literal 1576 zcmbu9&1(};5Wr`%)utNKC?aA-_9Q8oN76(rMQYNTWRYNETS4)#Y|~8(W*bTNP`!8v zg2js$kAi=Ncns8oe~JeWiWd(;oq7AFc|6yP4rFKEZ$2~o@uJ>pq$~?qELer(wuWK2nT3{**r2bPs>H-P@A7hqn82GXHim|6%g@2%78bD^9+7 z@4=!|5fyRMSt^#6ise$-$!`QZj_XG;FO(Ol<^{T-SkE`WI>=cInc4Ik>_hyD^Z;BW zeJ7i{pG`|vQT#ILS~fRMJw%TZF?tq8{x*nFG>r8gTf?C5izqmVKX0?{3W zVX%*Ee-H%%2QQ2wzxxD)3=j6a-p~&NF8{yU!2-0#(?+4HIu{K-W1JW8Y%&V@d@2s) z{4;o@KD?Jpu^X-_ZmTn^r)(J7>~$UeRP$f+OPEV@@tkN%;r;~%N>eNe>lMwG4t05_ zA2gfu7`4$LmSUjvd!;)D=lwChi-x%q^8HNM|15IO=l!2UX6}yiztIKdQLIj`=KM*s zQ*cKOwX71(BBS1B|2bqy{a>m1Z=qiov%l`sZHk+L@5ef0+djE_Ok!;(PD1k~ZJ46FN5~t^s>TtgN79qRwmw4D6?uJ1qx@h#! z@W5-f+H19z*KRa6>s#JdZLL-Jpf?Nx73)Fh_xpn`R-E2P+6?`NU&parB_|5;4E~rq RXp_)$u0QL`l1@3#{~N~$aqs{D literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grgmsg.o b/pgplot_rhel7/grgmsg.o new file mode 100644 index 0000000000000000000000000000000000000000..fb155256cdd07b2d6b07ccba141e8403c9b8e050 GIT binary patch literal 4336 zcmbtXU5pb|6h71G!u~*Ab_GGyj7cS3Bh&p;Hz=_D?9xpt5dI`eQl{N$x9oOWW~Nfq zL=mGj>n0c<^Z^qeeDHxM6C?3KH<83wcrfuv^u_R?3BGA0!E^51(@yWsMgu3Ax#xW6 z@7{Coou0lmm7R`h8Zc?F3)&K+025tpep0ZLumv_jrg;3&Q|?VrSYe2Y_n3AD6T^wKr2Y!>Fy zHMe@kF8FD$?3_&(s+CIBNqcS~T`ScVs{XU)s5zSU&U*kQw^Z>;W-&NDJ*_2d)DzwB z#Js`Si-R!(vtUA^`^b@QrAW<;3=d&e->w)H+w-iFZ8-Hx-gb8wB09dRl8HgR#sAX6 z-jrN>*n(^@={j;x;}fJ47SFVl-9qMvpdI!;K0G-#&p&7UCS}X&2jU2V{~|Aba-rJ%t#%vXN`>I2l)1}A%Fw>_U$lI z=ri;`jKzAy%|uRn{Rn7{er@ZzwcVF-6CXp29wJeN6N%;c2eJ3`i}Bda1XjuP&R2XZ zkE8Df;~aCYy=2U&##7b?)`WNP)| z_k+9*bf&w2ABYZ`l#+U~)GNOg?Np3h=kU8iv@G5L^y#BKxFdo#%W)fyga_Xp3F43< zFoM)vbR#I{{rZofZ&WJIe@dByYP)|G|97P!UE(mQ{<~4Bu8HhZ4+UO_r32NE_DHSY zam3V^6a#zl9jZ9K|P04f)~S83vJOf1XDTG2&a_ zX=(qJ1o&=Cc*R<2eH@EzXuK)?C&D1|s_mr+j9hx;fqI;T5UKtbQ5RLe%MtaXCV*stokcmq5ldK=_6V;D?gV>+(4T#C5 zBG;yqGU%-~Bsi`c!z8P7CtZUYGNhAIN%^RCRrB{C7M1^o=r{pBLVcLj{9#>~C%ZWO zc`uAHuScF(nn%=32#=~T;i3uTu&q&F@oN;Q^w#QIrh?Idn(URNgDj$=(qWx~1fmYI zXo^-BH%9?c)PZ(?CFy|OcLeF;1a&HcnXfi~+VM`JJ3J7o|81$J^C^#PhXdWeD134i z{MA)(?5rc>EUtpL`*1V6Z&*q>$Q{TY+Pf#4J2X9gbm~~{*q*)FDMU-fpmof7e(s!G z_U#ZvEv1JIXim1AAr)KaW~HahRHu6M-Z^Vc3O9Ubjz6l@3KSQ2~{j|O6^ zA7GsOfaj#1<4Y0$?FYm-=Y2`y949N~mqR$|n7ChK`zfh#%7l`b+ V=A>g@#rck@aSU=oqJ5`_>0eQEwr~Id literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grgray.o b/pgplot_rhel7/grgray.o new file mode 100644 index 0000000000000000000000000000000000000000..7588dbb56f2e1cf5657ebe54f7c6bb16429df0f8 GIT binary patch literal 10912 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 Yqe1mCj_M<>zT5FQUNl0(*!KAU0Yn2YYXATM literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grimg0.o b/pgplot_rhel7/grimg0.o new file mode 100644 index 0000000000000000000000000000000000000000..02820d98557b5620716a896492b998fa137b98cd GIT binary patch literal 9792 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grimg1.o b/pgplot_rhel7/grimg1.o new file mode 100644 index 0000000000000000000000000000000000000000..14111ece443a03a3c59b01c79daa64537ccbd1fe GIT binary patch literal 12800 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 NPBMr&qbcFY{{oL?!tek9 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grimg3.o b/pgplot_rhel7/grimg3.o new file mode 100644 index 0000000000000000000000000000000000000000..ab552f7eeb47a2ca31e2f823783f9fbca6e9b335 GIT binary patch literal 13848 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grinit.o b/pgplot_rhel7/grinit.o new file mode 100644 index 0000000000000000000000000000000000000000..e0f3732871e2be80e4e5cb7f719bdaa10dcf03a4 GIT binary patch literal 7208 zcmbVQU2I%O6`s56Bx|p;@lT1WI*2WTu&MB_*KwURki>BvXPr7taBL7ku(`h8pBwKV zcdy%BSE8T*HLU`DpzTWnMSw5}P(_6V1*BF%)I6oUROF$M2MR$%pz z(aaO?!dB+OWF&K8F7dL2Gv{CI%G~$L${RmH^Ey6W-hxjone)GlTtYg7?|Z@*_Jtx?Jg-`DK%sSigj@}3{u>WBHrDi zeF<8SG!V?7qSfyCU+8hvyNx?@(1bo<cZUjR^)9{Q?`vA1h$V)P`D+z7j_Z{i9uT2OkISzfj z_=v!bB#&|wy{BI}^PG7XE1@DjtK8A+ZQg z%eooc4o`XO!&PIY?0h{{tGh|3n5uczb2-OP)!oXcQ%<#9u2xcY&q>t^wNll;H#wRd zMO%o1=T=-lna8(9!K*pTg>=%bKnIrY*5!9cc>D2iJ@Vo3j^md;@%3+nwt(X_Fcjfg z2=M{1l$a>Xrc)jn$qKy93Ldo6SwMyOApEI8az!MDkEvFxvjH*Lenq^4xusfDD|qFK zp35Ww!!Vv)r&d^jGRRFSVLlt(HpeGBj%|izU}daP-lmsRi2{kVVRo%DI(x8gLajMAkbA_CjSavH*2lwv*l1d?v zAqQX<{ALZRyjwz{S~Z`Cs!{a{P&w%7*n8j^@b|pTR982ztkB+2ANA{-o#uIb7 zrFh2n6+XOI%DYP_>8m6p?@*RMcwjpB|GWo8oo#_*}g53i}gA*bBim5ti8DC z=fQesRvd=mXN~+62}n#(n;&Di7&^)jSR6ybZ~GPPtg2-G(T~0)?j(FS)QH2a(osH7 z7T4xBUO%YG$FFs$wGBQV?>zL+iyr?H>)_le=;s&?nIRBw(qQ3Se3dbZr0*Y4qZ;xx zruHwc5zpTOU|bVN{#m}i;Prz>pm6Rf=rj3$4i^@RUMD<1=$re`1I9H05fuAc(fG`@${eOL`^J@q(Ue~res2-Mg|<2kO!Y5aL;AjZNJ`)NF%m!7{K z|3he)^4CX~ZE*kKm7vFK95H@&QM*X~e}P7z@c2!!BYk~`8gz{Y;16JgxPNqG^1nv+ z*KsA&dUF4*4%R?kmw4kAgQXdk8NaWisGi4ZYI^;|$eA{iV2;tW3+XL`SSpmO6 zPho+*x0kRy2__u=6JRJ|(Puz0eo8Xy4a=441o8Y01oAdT-MGz6>Z5@7i@)EB6Hk55 z3xPieO#Dg4Pv}k2`skFO)#>rk{qX6cKCQCHW=~EYna!S@o<4naK0AM8a`q^GaOtnS zdJ{jGrA;5p?e{F6H*|6HmMS_X+>e-*w+K%|8w;)rz7jOP4?!qe=ikJqYe%kJaChL{ zg#}j>|1C018<}1+Eqoi2pzKst3onp;7u7gCcxSwq;d*`UAsqc`ZG^@HIL7mC5}RcB z7bwmX41bmE(+n>X|6_#nIMt7q_MNBWtS}w?^@GJ%RVxoS$zG)z^@F<@f6igic|Jq& zd{x162M76=2-o}`;(w3vas9F2eT_x)uP9TzNVSef-*dkvT=SnNeVsqePZ00-jDLmr zH<*5g?0+%-kI4?vIIUkKJW9BZ=N?-3I~jkC_;)k@n`9>$f1UXI82>EcQ;fes_zA}U zIN^HTup8IwI^hoEzeaeC>8pP>3ejZz9W>uBGJb;WuQ2|1NdF?^XUP6GcU`VEi?*Kgan0ApVyb zf1T`S7~dlMTa3R!_751J!WSEE_XX)8iN*a(u=*t=~h@}oc(3M~c=KWSnhaoKLS?Lxa-c5e}Q z(1+T<#uN?88wQ^YiJIVpfV|j6!_Sj|FNzO5`GV0zeGn_A&fGh*dwO;a1}E8jX1@7m z=G?jGoO}1pZ9BL7lmZb2o1kb33UIWtsCT()7c7D&U~eS%?c2+9-{l`H&*j^{Z^?g2 z&d8Oa!NI|uQ*~raTvy#wJ+m*zr*k(Vf85W{_;NRp-g0%ye_Bnq@p%GXKfxsr59zbmaEUpLy0P0r34xCP~0bO_x z7CtPC?i{Mz#}@RtMwyGx^(&YBQyITHOQ@AhIiM^d__Iz1&EL@Db6_5YJ;0xvs$u|C zjS$`Cp{i%mS?$dSwTh(1s6s$9D-P<$Ay5Ion-$|n*rWDg4*;lyQhgA>o}<*##a~Bg zu%_;B8Wc?8;Dfz*RqC%`9bVlvjTu!qHkb{MWs`P%I6Rg~A56rZa5kAb9FC_)N7Jcr zHWLqz4ULVYoi%oc-9a|MP$uc5 zTC!~E3U$sTFJM6O`k?Kc=(&jSW}H*YqbGy+*Tnazj_(0=v|cT#t*m+%TecK&`jNPOi3IB> ze7;LTX_=ipHtNLs!NxoB#$nMiiIJG?B#t^@55$}p*!|fos)_#bp=hkXKa)5Dw#)IL zWNI)y2N+4F5(uQdV2?DCj?dwYjrXTwqY2EbWs2b=7$VGzp&r|GswD6XwNq&)VPjuf zvra62h~pB&(ZLMn@ow~gTtgU3YZu=jbEJzcb8XenVF4^b+izfG_RjafMeL)~i|WW@ z5S-2+!Y%yi@=!N4-K<4>f^t4?d^^TceN&|V*M`I7cB9|KC}f&J+QzyVCTvEhc~8VY z!2RpuR|fTuo{`zVKE%wN2*GuZ%aNgp$=!v%a`ivt(^sAo)u-BK{TO1Dv+!m^on#k3 z5ckdNLGIP8pG4Heh`5jAe>R+k3CI2=zQ=vX13X2^G%@2H^p(5+%VqALz8K8=KZTf? zlgbTn{WdZ*F}d`7%GJNc^(CJAkDqTP_33>?IfaL+EAMmtPXypm>dSZ@@pAE9d?2(w zBK|XuH)t?w9w7=KRSv=T7va?q3#w3motyVpL1!FY~HKtX%zO-v7(cuZvk<_vt$E{O~J%N0*3I zcE!>>%FTrEvK>a87nxDPDtViD1gmiO#Q-`V6ckU1qDFOfs~BTJplE2C<$cp@h^Jca z&MAR0e|;&4h$V~1@LE7Cs8lTX$`4{jskx*z}B<8x6btbsXca=wX^JstFf!@0$QrEKp zI#>~0Vm2@?`Gvp5z@@JIS)n}i6G^cm`RT73$?M+Wa>=)n?Y9hkAKP^9l1QGNo(X4o zqRMLuGM`1Cu$_Qx7d{U2sq{vQbcPsXomeDZCfLMY#OLt*}>7{90Cl>b$>e=%@A pF5q_!r~H>V&jH5C)Xyt@U5QRq(J6=Mgv*XG^MuHWLb>(){{Udni^Ko` literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grlen.o b/pgplot_rhel7/grlen.o new file mode 100644 index 0000000000000000000000000000000000000000..822964839939f61f0b93944e57a7d600b9196c3b GIT binary patch literal 9880 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 T&vnH4+e@`mgN-0)+iw4VU!0Q= literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grlgtr.o b/pgplot_rhel7/grlgtr.o new file mode 100644 index 0000000000000000000000000000000000000000..a6f2826e9d22479ba6eede23d82fa23d96396f79 GIT binary patch literal 3064 zcmbtWOK%%h6h3z*ug0mHI0aFahmmMW5SdAx@K6w`MWJm3MO7(c0g@Rz6UQVTJ2R6i zWdj=o%Pv@egb+K#0>qL%8qChk_DV^<{oE!G6+wNQp-nor1SR^+J=U9<+N6i5Mt}TFWERYY>SE=Uid$VUH8Vd&Dvq zIgB6dB>phzd7WK<7!N)OJE@=aq65D(==TSapTr%1*d6W<(&xN}*YK0O2~juR@20W0 zlkf4V(JIcmXN==;`EwZ|Kj?_ZGd%JXAoMJcJY^=cu3sI*X&glLb#L8!q25@%)L31+v{qlb6>itB2WgJ4 ztSu8=yK-ftzQj4p{~?&p+NGEeZ;?5gH|OW3XYTR#1Ao-|#+L6Tcl&A3CND|jeBKo; z4Ubatwu3Yvubm{UhV8>{D`>al@D6!#xF1-k7wrtjfc;(+jse5NHujT?6w(6TfiAGT zF!Pd!(-20?8x7LX<7KZTY0%lTdEstrC&tV9zjB@n;N6#$>-h!(z3Zi4NKV|$sT7JpL`T=SFPZ&c@iDNaB-z?GR z0@zvjWxmIFS^j~&I4l2>|E0}WVf3}Wcs4+ICH@DSufxBwfL@oZU-G|WrELFxFL{6S z94q;9t`->6cNevPwfsN9D2VPKw(cF_zgVJOn}F{&e$X{P&Quxys=a?T_7_F-7kxz? zaT9d^uOcS8TY6&AN7+h%mvsodZ0CXJeN)ENj)8w&5P6@1<6c7^&Zmrd#L3v> z3K!o+i=z&{iz4_vfk^$Exk(K>3vNw%-YWVWZz^1PZ>Tyr(~x)bX~Zk%JW=>N)_&j4 cnzy*0q9asv^e;Mad9%7s9ZnYXExp738|uNz^Z)<= literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grlin0.o b/pgplot_rhel7/grlin0.o new file mode 100644 index 0000000000000000000000000000000000000000..2d2f635a9fae851779a871c64ea6a737539ce52e GIT binary patch literal 8872 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 UER~En-r=!uKW!4VeB1s18yomYTmS$7 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grlin1.o b/pgplot_rhel7/grlin1.o new file mode 100644 index 0000000000000000000000000000000000000000..b50d2d2137e1304b304d591b8c05a7bed270c5cd GIT binary patch literal 9976 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grlin2.o b/pgplot_rhel7/grlin2.o new file mode 100644 index 0000000000000000000000000000000000000000..b122727fc48399e3930245766134444482db130e GIT binary patch literal 8112 zcmbuDe~eUD702&;vkL>>pZ*Dbd7gh}vY;{$X29YEbc<`_7$x zbN2ZIy~(_L&-Z@rx#yjG-+gcQ%&vH!u4zIQO>7l2mQsZ<7RW-%i-WK+KCv^h&6rq^Zqy7D zwWb;0#`uwlVT|V^1M%@x;PPOLwpa_z5kh}d^tTG( zi-SpFIS*=eNSDCeZs92Xt=ksp z^M&w(phkc>Z>Ar6=LaC5#TvQ}tdc=2SXFnhA|S*jf ztz|L94;gs~Qtrdl2)|s;pe~JnanaX7hp!2fE%a@&EtgETo1_EH@rHz}Xji@ngPLm{ zLi3>yEX^YgR;{z4&uu~WV7`yzbza^5tI(P&I}D6Oo9X#?>f;#4EVlmzFLjS6dp~O2 z(}TA<@S0Z)-s;CZS#Nc(XAJkF?)RMSe$)e=9_~jy=;^^*^lgRULvPv= ze5~|~MuWA}vDy~lxpDF888~Me%TwSvuo6!N`6kep_d(N7?M={rav=`TS480oY^b-< zzSARuIPuq^ZxLSna3;z_Cip$D@TcS^c~%ASJi)akIi#V0x9tcd2mcBR{>W~5G8h22 z_)|)tMU&1jda2EE4moiS9O_~au9|i?xDc-LO$g_m7E5L-v2w+Vnz>lnE*(po)mX(U z9*>!&LZMWQRctd>&X)6~>iTF`vPm9MXMqLSaRc0)IM8>yUqPFkrdRGDI4`mUIHuy8jdkSW_~ zs4CSYGFdZOM$rkwG)oE~uB6=Fb z#fTP5)pQi{vKF?nIYi^qxkSbWKhBN*AJ;I9#WPU8_FR5?sLdaBIPe?FaA&yfyRB}_~!}iK*LoyI|hAT^XF)OH6HUHgdd;(E1;oI#X(b++XQZA3!~;& z^(4?<<3sqzER?lQRlllns(ulARJ#sAV+)OUYuM)O>!h(TMGuYN$Q-EqSMsaS@XFtp zJl3xjST$bl>lV=X*@3=mH2*C$T!qJvHjf=~W3e+RM4b4N4 zsZZR&vSp&3uBBz|d=ajq_;7#Xz5MN-Q#O;1I|8$$^v{xx+Z|U~>3F_j;eMWTWVy3& zt1F&fTLSay-d%Y1VnH3-YGbPvRQhk}0m1VUi_$;pnBqaI`E&a))73hvap;F$Ns`<^ zyz;+_p7ZTYe~RMS%XB<9u^e!!dYsRY{RyghoC&6@I8VC#V6Ihpni?1<>gqiG0@KT6 zf0gNzWPih@WB&17gymaKRgZs)?C(;I@vAjL>HDOsymeB3eoQ*&Z!`YqWdDZo>V*0u z<1dl@0poFxVp0EsSMiKcJVB~eJnarH9w1%u*T|OtA4h-i!}~ReU(5I!>6=Jbe2(-T zjPIs>HNg0D#D9|UZ;+i~{3P)u#(#wL(~O@Y{b|OlzpXyc_-W!VGyWRslZbd<6HUn;;r^K>yM=1CA8rxK*(w#!nId0^_%l{~L^-CjK?XFQNQT zFK3g{AAYu;=uf< YZ%FJ@ZLX_tYVIeDgP>q;DD~3*C&9C~K>z>% literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grlin3.o b/pgplot_rhel7/grlin3.o new file mode 100644 index 0000000000000000000000000000000000000000..754b834945f2926c57b61dc1b6c448e9d96428e3 GIT binary patch literal 10424 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 K2nBsQ{r(roE#6)L literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grlina.o b/pgplot_rhel7/grlina.o new file mode 100644 index 0000000000000000000000000000000000000000..395de64fb8aa84fa835be320c0ac8e80982dfb89 GIT binary patch literal 7296 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grmker.o b/pgplot_rhel7/grmker.o new file mode 100644 index 0000000000000000000000000000000000000000..3f50b3599cb1851154251acf25ef1c5a4954bcf1 GIT binary patch literal 17384 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 VqhH-d9M3u|+)h%W%68cPzW{7pDt`a~ literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grmsg.o b/pgplot_rhel7/grmsg.o new file mode 100644 index 0000000000000000000000000000000000000000..afd2a6dbd2c066ea15fc24c474914eabba9e4e6a GIT binary patch literal 4432 zcmbtYPiz!b7=N>~vzNq%G9hvupkGLak@L*E^T+$*(nyI z0YX$ZKq83;4#g7(OgMPcaN0x@u3St!2{$M{dne{S)b3`&(#Z=2jmWY-kf>Kk7m}#Gl^T{nf|q~XkjK{hk6LR70-x%>c%s1 zh-Up)KScd^vwr7$0)&is6a1RV+h+Y2wrTbkmNR!Tq6;@N_o&ZZxR$vO`RtDv=nvXj z?WNRUa&J;ktrH$~yX|?x(LfD+j;7AUFUCIC&&6Zkq^Led?bL#2PgC!?K|jl!>&)ARUl5~Ud$us9 zYc*jMoax1)WlvAL&PieTHUU&B&s5rg`BK>-pb|I-J<<#tJ2=dICEw;!U7Rl43l60T z1-7YZMPNZ5iXaS}6{qY8qg?SEgDSPP=Gpl<>F3N^GcLu!grAPmp5cTF3ONvY9> z%9|mCZ6w~mEkYRBE4ZPE8va*^XQ@XX-m%!OV}rk*Op| zS5q6Qw&Pv=^U@HfH%zMkZc?gqg8i{If!7)7fcjyL)cPGEOpOW8yAnJJAw;U}A<{+V z|CxRtLA*}LkKAg0n=r&|-q^&0j!K|65Sw2$e~C1}Mw%7@^MUk#Q^7eu$5|ph^I_9v z>3=N@M%bQ@z~C|_Hx%D3z(8uQbA(0J?|wx6@ND7nb6u}S#3V=@m-)9r2$7oq3hAQq zC-C+mVt=e3wv?Lx24RTFcEtL0QRctQfb2Ox_umm7<^O^l)Ykv;Z%BW|OuQX6sR-Mj zB&P1aL(+eT5}4=D@NHtEQtgoS<8?y)@EgSbjKfTpintb?mqG8eAfMy9F$`H9J9O9S z%?COrmB=?hP0hcOu&De(-oIawK1^!J5E8M(W6H~XjFwU?%*xS zakzAU)2ssNf)w+idGkW3KEFA@c*#r(CPlk>40hca+4@3UC>KCf^>fe zwJWfGqU$)Z;_ZZG9SGIGA=S@N-!J)a_evLhybJz*7u@QCf6@hSKIo0yzTrTygmoZy zaPOX+b#P+hz5P?x)SkV${e%{0f`_9;kDjXSIu^ZvO66imQS+>i+>+-|AW|)aeemL} z%{Z==pQU$H-gDdtKdVroryA%*{~Me+?54jT1;qChb}G&}<9vVM7^1$6=ZFUZN1T6T zoGL&f#KD@d{b_(iz}Hh_oX;n4+%b$V6AuE8v(Grc)3D>ir-yemaO~m&H4yJ0#`)gD z7(nX%!}Vdj;adgoG_Z&h{!QN^^&Fqa$G_){^GSJ4+H-s<(tig6V!R>ccVy3Tc%Im& zAmC_B$0ft|jPp~O?Rj12LiW&=rMwivQO_wU;~ao^oPpGOKO+X$06OMXoX@HnCk-be K>??Wo`|^J;G_TeG literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/gropen.o b/pgplot_rhel7/gropen.o new file mode 100644 index 0000000000000000000000000000000000000000..f30d4e5a86b909bcb9b86898826b41bea954797e GIT binary patch literal 12792 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 S)j3{Y!H=78439#T$o~QpaDn;& literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/groptx.o b/pgplot_rhel7/groptx.o new file mode 100644 index 0000000000000000000000000000000000000000..96efab964cf1ed576b4b1ad47d90903c14a952a0 GIT binary patch literal 5016 zcmcInU1%It6h5<)-)_2YlMq{5Ws$X{(#|Gn#9D2eruo^>kktO5Md)<1nWWn$yW8D~ zq@}2(K^xjge363sAo$=zA1n&`P(e`qc~A-}C_Y&5rJxU0d?+Z?bMBn8xqCAq(Bgra zd(L;h^E3C}xwHFn|L{P>vOvUw-LPZ{3b0ter1vPb2R1+(q|g8H6Y?)SWz8H*FVvDJ zJ>QpH|5aZy(ToO;O$uB#k{WFdV)Pnw$v8UF^B*M>IQGrYB{z{R&CMm-(Zui$9Iz6pw{hUAbIHHa zNH1JhpsIa|T0j20at*;hf+_TbQ0MGaytOaOYfRklt7l1qSN! z`%=CCugeWsHrQ3PzK`P-Yzx)R){0Z@afQ)Mx~~ANxZ~bLJ~It?dElx$XA1@w?rWb8 zjvPr06iR+6lTUOz-OiJVu8z*Gj_sY>6YU4R@kBb~2l%$_TVN)i^TBmXUU_E9ce#yR z-uEWGQv0b~etcK=7T|uT3*#QZ;J$r36YW@J%j((b+$OQk9t3MPZf$I;Z&<{)d=p}H zk*HZ3jNP;&w_=s~bINC?{md9RWxo`RCqyfGQyItiW_@tRGkyk~v2qzzZ)|4L&5Vte zycfYyoB+z@Ckj=-R4(r!P@rH+-|6fSQ_@TovQ;6)nK4==ETbjP;QUS!7SzE^;LsW6 z<*~DT!S@`TqitnBlRd?8-U)Z2L~DNElE4gf8mseG%htoXx%1Sat?@RZZerwahzF#_ zV1Ng4q&l)L>lxq7xcYD~Mgx6p!^EsbZw%$U*Z5A14J#$}&l^pcTspx`j6$w4D2KSD zF}ZutVLlUaukid` zVwAHBFI^gVL3ZgN>Jl$~6cHo6@}XsZKgX|OTLy^}o1V|a$T!OIe;H20go`W0?^VAy z03N1fnwaqy&=)p;J3{7fEpp}gWnSMw%*;vUj&c1CGBh!{SI`$${{YvQcv`;)@G|RP zMT~L^4^<_vbNx>R;8E(!_%Y&P@%#Be*|tjjXB=_k9|0Bnn`$yt;2$4s5 zet~bG5;lLYgsdNZgCt(oZyjR1)g+}FKj8jXd;jTq%-$)%4caUycld#+9{oQu>o+16 zR{v{SY!o_QbTQ{o_vt$EYT(biIwraux?`!2uucdMn_W3%Y@Y?FlF+enJpw(Y4Ht^;#T(d>nNW+6nX?2|i6AikXMbB@)RaJL{%Gm*ij*#!9;14lxCy!>`UIUl9 z&l>qJv;BgGQw@>htVmrsM^0)u`Q*GTXgJN=HMY-aIPr^Yzog;B|Ag&}8czK8*VBnD>pwC;VNuzteDvd6o10 lVBpsoKh8Lrw0A}H{V6*6M5o-M6Hf0GiJ2#%&>**-|34L#wiN&X literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grpage.o b/pgplot_rhel7/grpage.o new file mode 100644 index 0000000000000000000000000000000000000000..421031af93752530c643a308d3ce87226bc559bb GIT binary patch literal 7672 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 Twhr9hjisF!8cATg+5W!(Nw=6# literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grpars.o b/pgplot_rhel7/grpars.o new file mode 100644 index 0000000000000000000000000000000000000000..75b5cbb98ca702c035012fe537d50caaef657d94 GIT binary patch literal 8040 zcmcgweQX@X6`$R;;|q4qj_ptbAz7tMYEwAJ#x5Zw;C0T)x;e-twgV|2m-BgjIbz=( z_mL*Sv578jSveO-sSpxWph6`ois+{lk}7$V4bQcgp)#UAw`L!gml#kJY~B`6In#eJIpQSfZ0FL zXYKp@F7WJiKJRt@+w1(X*ZIBQIqrAf=$U+dyxq)wtV}faM&7jYo#-BLK0J@(bkm7> zI>NaNij^N%j_CkWjd`-dKnwF^6%JN@zY&D^Cx~w4UQw(gIwQ-evz(v@{_9S5H6b{B zvTL!fpXgemPoAwkI97qq3oynJoLRv6hjWf*n0%#n|Gl8y_vsAa4S}1 zU8fZ}Yvuh$&~p3+V@-{LN;y|7-OAr>1dm}L%Q<%#GgF7Ti0S;+ zIi6oTV?F-hSVgckQeE$ycb?!DiIDrkw|2g-n;&;xsoIZl#YOU9DA1xif z)ynr9!Mq9n)>MsZIR|Kqtf_zswH`3;#0o%w1|2ZAQNgb^S*w?vO}Y0KEAqOP&(y%2U&FaIxwF+Ful4nQFh|VN#*8{~#_sB{cw>hC651c3PR@y9 z53DJ_p<@NOmMAo%;1=pPR-nKNHCFOM`RdKX3Z^nf-OCu3RyFxbwiz}E#3KHw5yNBV zE<&58g_hQ_mQGi(jWl^S>%+bUto$!&73N_K_Y!Ob*e7e?lN8H+|5*_8Yn2}7pJvNB z+IxSk^@*9A;oZ-jS1zsl=53J~vGX1`Qa)1=3^J@6djPkRslqV6TYDH^d1{Fj0PNHb7Ok`T_&csfp#d^qU z5U4y`!oz|nSDT=kPu);lny<;w`znaI!{$K5}75X1!-2855_zY znV=sngUp9D0fLUh^0=S#D`=Oh(Wqu#jlKX(kAhkyeekI$pLziSLIM6-!^7#;WIE=H zY;R4b68G7WOlvw8zrQt-7#&T-ThpmXYciS~Nn|>G?Y?%D35lkX;Z)i;>{cB|=$hD`4XUqEeOzhC zZG1sBsA8*UgXeV4^Q}{dJZsc}Me4wnY9kb@_iqjM48&7*BoU3r_Si!@tXwQ&>zUn2 z+h1h$SXvK{4#uL{L^dtriP2alV-LZUDc#IQm1GI$aq*B;vX?BQO(o=OY(%Uatz-(7 zWC-V17W~G`xskSl-~9#tC-`0fQpp&3i}A%8#$08I&s!O$k`&?m1-2+EnJ6)zi4sv< zsF`ULawlgOvDPT0Pwosr2<)JL`)=w#Z(*{rI>bDJ00*huKUNa?hiTonTKH zKo2q2Vf_M#v)^NoM)s;t@qWHrv~x2RKligxe3BYD^yFUN|C?Fu6fF9<+!s{8xiFzV z&fZmkf}Bk-NFzz*DK7BYLX$cBSg{wJ{ZRqxW)~tO ziD)bm9%Z{5Rcx3}q_*6r2v72V$E1C^$C#dqeJ-j%tk_1>Rq+R{qz zN`OpnGnjxWxO98@lK9fQM>F9;;)8nKaXaTy_DI;5v3F&NZz!Az6W?Gu4XizwjfTR5 zgDGgKkJ`9UEIyo=1&qYvHUJ6N*)vXXuqeh|ja-;>{O8Jl5^oRhcRXU{mj1*kTJ49zH+fHnYjN8l0vri zgI>narHvJi$An0dNMFrzO=$ldHWtVd`iCLq{tW;o$3(w9^hXOqUPeJ6*%lAjQu#kv z;yUql!u7-4a{e%27?Zt9fOF|4W@vGMjdFf`fyfw|?qmKwsW{nocNzZ|YcL8SSGz;u zQ})k*MoK|#Jxg5|asC)mp8r9>J?ajHPdR@M-J^4_R%_+r+IxE6jd& zRhs)0ANZnkJ;`L>4+(C0mqboZb$LF

    _kWjw zi~awFfQxm0EZ}&>;&m>-z(AND>tSsn^$f=WzlU)9Yb1Njfz(>YzDKghdneMyGWO31 zxVRq!;WrLi}+#z7vu2r7tdw!)aNHI;&^4)3I9m^1m!q?-(fB! z>@QntDzocm0q5uCa;kNI&16?vid-k)nD=caw@dglOkTxCId8Xw^Sqm+IBzi-&sQXz z7yfg)k1-q%FgYRM>`Fxuytg88`~9v+#@UEC+T)!8=^=M0*z zZRjTi9PRmho)vJkx0yXZ$9O%zV|Kq{Bbu>CiXz7t&h57``3(u@d+2Whjy_MYy#JQ) zrF^q6J=)^`R)$v!IL>Q;`8P`VFvG7FaEx;co5VE&j&Y7M`)dUp?O$Z}DRZ0>ap0{Qm(GKT7BT literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grpckg1.inc b/pgplot_rhel7/grpckg1.inc new file mode 100644 index 0000000..b6a2118 --- /dev/null +++ b/pgplot_rhel7/grpckg1.inc @@ -0,0 +1,98 @@ +C----------------------------------------------------------------------- +C Include file for GRPCKG +C Modifications: +C 29-Jan-1985 - add HP2648 (KS/TJP). +C 16-Sep-1985 - remove tabs (TJP). +C 30-Dec-1985 - add PS, VPS (TJP). +C 27-May-1987 - remove ARGS, NULL, PS, VPS, QMS, VQMS, HIDMP, +C HP7221, GRINL (TJP). +C 6-Jun-1987 - remove PRTX, TRILOG, VERS, VV (TJP). +C 11-Jun-1987 - remove remaining built-in devices (TJP). +C 5-Jul-1987 - replace GRINIT, GRPLTD by GRSTAT. +C 16-Aug-1987 - remove obsolete variables. +C 9-Sep-1989 - add SAVE statement. +C 26-Nov-1990 - remove GRCTYP. +C 5-Jan-1993 - add GRADJU. +C 1-Sep-1994 - add GRGCAP. +C 21-Dec-1995 - increase GRIMAX to 8. +C 30-Apr-1997 - remove GRC{XY}SP +C----------------------------------------------------------------------- +C +C Parameters: +C GRIMAX : maximum number of concurrent devices +C GRFNMX : maximum length of file names +C GRCXSZ : default width of chars (pixels) +C GRCYSZ : default height of chars (pixels) +C + INTEGER GRIMAX, GRFNMX + REAL GRCXSZ, GRCYSZ + PARAMETER (GRIMAX = 8) + PARAMETER (GRFNMX = 90) + PARAMETER (GRCXSZ = 7.0, GRCYSZ = 9.0) +C +C Common blocks: +C GRCIDE : identifier of current plot +C GRGTYP : device type of current plot +C The following are qualified by a plot id: +C GRSTAT : 0 => workstation closed +C 1 => workstation open +C 2 => picture open +C GRPLTD : +C GRDASH : software dashing in effect? +C GRUNIT : unit associated with id +C GRFNLN : length of filename +C GRTYPE : device type +C GRXMXA : x size of plotting surface +C GRYMXA : y size of plotting surface +C GRXMIN : blc of plotting window +C GRYMIN : ditto +C GRXMAX : trc of plotting window +C GRYMAX : ditto +C GRSTYL : line style (integer code) +C GRWIDT : line width (integer code) +C GRCCOL : current color index (integer code) +C GRMNCI : minimum color index on this device +C GRMXCI : maximum color index on this device +C GRCMRK : marker number +C GRXPRE : previous (current) pen position (x) +C GRYPRE : ditto (y) +C GRXORG : transformation variables (GRTRAN) +C GRYORG : ditto +C GRXSCL : ditto +C GRYSCL : ditto +C GRCSCL : character scaling factor +C GRCFAC : +C GRCFNT : character font +C GRFILE : file name (character) +C GRGCAP : device capabilities (character) +C GRPXPI : pixels per inch in x +C GRPYPI : pixels per inch in y +C GRADJU : TRUE if GRSETS (PGPAP) has been called +C + INTEGER GRCIDE, GRGTYP + LOGICAL GRPLTD(GRIMAX), GRDASH(GRIMAX), GRADJU(GRIMAX) + INTEGER GRSTAT(GRIMAX) + INTEGER GRUNIT(GRIMAX), GRFNLN(GRIMAX), GRTYPE(GRIMAX), + 1 GRXMXA(GRIMAX), GRYMXA(GRIMAX), + 2 GRSTYL(GRIMAX), GRWIDT(GRIMAX), GRCCOL(GRIMAX), + 3 GRCMRK(GRIMAX), GRIPAT(GRIMAX), GRCFNT(GRIMAX), + 4 GRMNCI(GRIMAX), GRMXCI(GRIMAX) + REAL GRXMIN(GRIMAX), GRYMIN(GRIMAX), + 1 GRXMAX(GRIMAX), GRYMAX(GRIMAX) + REAL GRXPRE(GRIMAX), GRYPRE(GRIMAX), GRXORG(GRIMAX), + 1 GRYORG(GRIMAX), GRXSCL(GRIMAX), GRYSCL(GRIMAX), + 2 GRCSCL(GRIMAX), GRCFAC(GRIMAX), GRPOFF(GRIMAX), + 3 GRPATN(GRIMAX,8),GRPXPI(GRIMAX),GRPYPI(GRIMAX) + COMMON /GRCM00/ GRCIDE, GRGTYP, GRSTAT, GRPLTD, GRUNIT, + 1 GRFNLN, GRTYPE, GRXMXA, GRYMXA, GRXMIN, GRYMIN, + 2 GRXMAX, GRYMAX, GRWIDT, GRCCOL, GRSTYL, + 3 GRXPRE, GRYPRE, GRXORG, GRYORG, GRXSCL, GRYSCL, + 4 GRCSCL, GRCFAC, GRDASH, GRPATN, GRPOFF, + 5 GRIPAT, GRCFNT, GRCMRK, GRPXPI, GRPYPI, GRADJU, + 6 GRMNCI, GRMXCI +C + CHARACTER*(GRFNMX) GRFILE(GRIMAX) + CHARACTER*11 GRGCAP(GRIMAX) + COMMON /GRCM01/ GRFILE, GRGCAP + SAVE /GRCM00/, /GRCM01/ +C----------------------------------------------------------------------- diff --git a/pgplot_rhel7/grpixl.o b/pgplot_rhel7/grpixl.o new file mode 100644 index 0000000000000000000000000000000000000000..6287fd12ca27bd488f15d69d130cf5a0b871f371 GIT binary patch literal 13744 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 Lh`FaJ=g5BpKStR} literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grpocl.o b/pgplot_rhel7/grpocl.o new file mode 100644 index 0000000000000000000000000000000000000000..a93bffc660931aa4929f6a979b7e05b823bb77d8 GIT binary patch literal 5592 zcmbtYeQZ z2y|Mi8v2!{5Y(Yfts1FSrD=amtyF2Bm7x0r#wIP$5B8yLTBl8kYg*Tj=}vFwWUE~`uXR4t+S$6zJoz3HJs2;!BscCq?+C{```DfX`++r5$pMcRfeIzrO@B7YEF}S30L+Ds^}tC^ee3B997hT<bGP%)_6nyVhJN`G!yB z@8R>8vZ2n&I=k>Twyv(TwRWQR!T4pC@&%T%=Uc^XzjpkEv)bIwo2AmEHnpo%xQ=Zp zV1tMwWQMO|Gd{u{z8xXj={spOd#{=OAL430#@T<+zW4sw?Ek>DKEmzlwkHjww4X8T zR?R&56ZG%;Hme9PwY|rS)QWR#pHR7g;6Cc{z}u+pCbPEZL~-soh83sI14B$P*ZcX$+69PJ2y+mj8n(M4M zXfK(>lLE~kg~XQ`M{6Zox&ub$C>opi)H0fPJ@qX34o64P+CZM;AkQ6@En^xge20j$ z9X*X{KUzfkRb~Y%Du!{cfmlc?hH-AeN`iK`D6As4$T257LM8SW#ZNqI@oza@pwiFK zN}sPhNkzDm%$KTg%_<6YRd^lUb$A4?n)YenHoUTDD>`V6(cxTUCYQA02O2Zk^ua{j zY0M>4hZ^JQv9WZjF_(=uW=1ljX=jVoVzrPBFp|xr;H2ifO@`M?byShjR&>W zHI@ET*t`zJKgZ`-huQMsAT;G`4}_mvW(S&{tgr)H3zbH_5oodlVVpxB z^lcCDE?c>yV@@;%R?f+~;{l;%6QfbfNsK#S4Mm+OSg~9V)kG{mG8m1;vWdfBF&`I7 zriRmtfYD?sfk2vqt$5C9zE?z#rsIn|Gx=C5I+j3oi7$$KF+!M2k5z$1&%{Iu3reM( zgoRDqm~*1>M|oW0z~FEedBhRzNt!+$^pxWAf z;|k@c+-m+PV#LX}8#Pzx1CJ!ct_v4&e#Dr@DYYi@ZsPH4`T7Ne>N|0Z_J`{WkE z9=^vA^IHG7$NFo~S6x5-98zmS2(sL<5c1habhHXp-XP?B#)Od(pBGIa!lD~c$&xWryxnh z`UP|z6|erC_1HhUr9`|q*R_bL&ko|g%JaWZh9qkJWUIB4`&oX#FYtiRAV&9ynxE2m z<$s#rP~zQ(ZcNnt0#`@!^TEd@6(`$RvJ0-4;aLg!dv%y_{*Y0U7)#zJf?uqDaex8% zL(W4CsP;f9FWret#b9@c7tS|BnKG6-i6D!=+iom6Hg`AY1qJZ!T%VyTNL~i zZr{sCHE)}Oi@bdjkNjxMD0l<6^Ab*d5Pg|eaBjkkf{V4iBjJ>{i`#!v@YlHgHwAb9 zhk@rp!K1WrlqxZzPW-QPdxeBk?N8tzNm#*8yD&5=`1d%zpN}-nj}k-V^CNVc5IXIn S&YC-rC>~#g*$IaG z7>Y;tvOkeAX1tu9NG+$#^q4VjWQK?mwsC31OfRI~Onp)a(ZXqCg2yt4G zb^tmfeaK_t?(M-n2`BE}qM?C7D2FrDhL&#dXc&K|M|li8%z2EQQ|si~orYcA&b9s4 zj#~|Kord>*uG(rgTVAf?S99%pd#@E-wDWczGEv=U)23Y$J9DbLk~8M$JBbSui9ya# zI&8bvTN^8-&5dh|R;}e*o_i2jZKv)oSkH$A@j!R@d4(Sl5(vG@j|iCzWi{j!qs=?} z-mdg7t2j@vtXy|h4KHx(uAkj)cw2AJPtn@7O>4E~2fpK3^Y*;`x|N@q&Ckru&RN+F zcgrd|fxxHdrij)qUtX}X>@)Qk#(ZK086R$tagZ_2j|?Y2=ZyjWg4BfzzmlHWNpnN& z&S5ifDm(|in70+@yL*luaF@y6asr3!N~goDTiLIdol3=bKOj4_5m3XcwH^WX8lKBQ zOE^a?+xr#IX}TON0y^A|IxrE9iy#|^#`QSA*9u&ldobMzoa(OhbGOSipX117J=J8f zH|`1F*GH%zCH=63_atI@o_QUE`cvFhrWrBOS)P$c9mVG)enH~;EyY!fBRv-mIbuGk z|1A5WE}c~VhNjSMudrUn;PRXF!@Z1>ZhMK9`kG*WBKv1a2lNknr1x)=F+Cbur{jooB^*@NI zA1&4EKVmE{zbO}_&M%vVq}zVPXk7l}sIXW5=pP_G{}+rQrm|x;q&b=YGX=<5vSApLdo2NKZNrPiGea_Ylrzar-akD(%~G7&+wz?hgn?yo7($NM2kObN*A4xc7XnR z7{wHC#-3Qz5myQDxDEpke{59P?ripb4TQ?eBYEh#VHF0N{QP2zgqMGaSZZ)$O*Nc$T8o|JFP dS&tv>o8n=rc+{_W;A+qHI2M#l*sth&;a_6M1jYaW literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grpxpo.o b/pgplot_rhel7/grpxpo.o new file mode 100644 index 0000000000000000000000000000000000000000..31825ac4d60eaa07ed6561e9c7d5289c5f523ad4 GIT binary patch literal 9752 zcmbtZeQ;FO6~Av^2rq2d-6R+jV(Z$j5UlJbuu#5~YzVlKASgl6s&VtONgmlRcQ>-3 z2&3_X%t8ghPDhE5zAI{MDm&asKkv0rT%duhYit5JPv^!^V{AUEpmd^tMS5onHncn0ON=)RqSHnZuR z*$!%lUA+p?GEnRYbby%_Db|m52P&e)y@CBeC{~Si1;Wcudmn0pl%xAP0#Wqd5Z%`u z=!yc} zn1?|q?hN?L9awp5pgOOOzNnn9nV6V>Zibh`Fyv>A!c{r{+J7b{@SaS%36pQp=u2C_ za$Drq$Ze6^BRww)rAE2jQ|E4XtDYuLjZ&-lDur;(6PZU9GeRK zixi~_`hxuW%YYw(%Eed_qCruthDNgiZ0FX(P{AEPF$0DTq!609`aCXEndahJ3=L{U z1va}@n{}|KI?iz+6w4b{ZAE$fQXtMyR-1Gfdm{!+#IVf7i=v`KEKIF5T5XM$#v;46 z&EBSMlWpn&QK=QM&CK|K1{$_mny*qDDYrF%R&MiGR$&gV8}V9I>P!gw3}XxpQA|@Q zxBM^k+79U96mDm?6T04!dm(6-qX%bn(~wgR&gk`yTxWEHV-6RB-ryMRLeR~Q9xep! zcJ$zkI^WGLUv(N^XAjpoj@gBvTO9LsMxFEB=$HdXg|#;Bz=cp=0mG%War?tgz3zE( zGAi7LP#WcGuU>|&=yA4LgUuWCx#sS2;OX7&Z8omA+=ew@V!KcpEavguH3-?uUm&mA zXTZCFEf7|2(>l0nR9^x0TjrSfB|#9t^+hJ@Z?(amirz7=db}h-xfm<3)8kdRP%$&W zHQk7sCK~!c;E!~*!rW9FaPz@wLGVQi0ytt8Ag!MO1b?K@y`|x4(C{Y_x4HLc z;u6C`);}<(4-UreDSQdY5H5&2U6J8k;?C(PqRh#b>hG1}-~B1<3MIRDOLjXyh22QW z?){S8t|@j;5%LO2m$+NV`cbk|#AaFj0YR$BDTk%M-ooIb zbC^CbWpIo~kfZmfuu<=i=^*e1h;7znC|Gd{*wt)&QVeX)E@ z1bcHisK$GT2YO3lp0Bf1b)fIdWa@xh+{EclU2_p?Yp7~|dp?{$+( z8)tlbbcE0$1qNqM9qm z3CFuXwW!vM{FDY&$Wu?b$=cqh%aiYl)*7z0jlX<8evq$t?)3vcZ($%wZ-MY% zcK>hNaC<&@X262;%)Z*>3P2oZ{Ti~DGfv{TKVzZo$n=B!788XJ^d!-owki|(0>kAz zy@GJ`Z+<{0eW?vc|3Pxr&hT$ho*NiGhxnTrevou|A9$hh%djR%KX1Wcs=z)@~yw)gt(M&$@i0f zCF3_!9!nTML;mG?Q~Hk*e?8-GC;nFEe~|bw#y?K{6yxt9{&vQnApAbYKT7yM#@|c+ zA7%Vg#Q!$qFCqLmF+Uql=P1o|91()etV{!z#+>^NcUgxAPf)Hu(uN{!zlOV*Edm|7#il6!AARKBX`2VEl8$ zHyB^;gLiR0>AM;KV+ydB@ip4u9%1}Siu(lPHxvK6jK7QedxG(!#DAXg^*qKuM|un6%X7(6 zhRf&sDw`k4#aq_N`0|W$<23vp#(x5xKuIwE8M?o_YwcC#C>>y!u|M7)befj F|6lXmo+$tT literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grpxps.o b/pgplot_rhel7/grpxps.o new file mode 100644 index 0000000000000000000000000000000000000000..bb883fe9a262a1f06f7f1652f51dbc00421d7beb GIT binary patch literal 11648 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grpxre.o b/pgplot_rhel7/grpxre.o new file mode 100644 index 0000000000000000000000000000000000000000..1f35b7d4d5333c9a910b4d542e7550e5016e6c9d GIT binary patch literal 5560 zcmbtYeQaA-6+iDi$8loUc0Ne66_62+Hkn#GO+%ONqw~ws^hGjT*Ceb!+SGB~)R|+u z_A5)Kv{9AOE%L$^X_LlOsgd>%h*8iq2_{WbStryH8cCoZ~grzPhn-H;ErJ zm*;iMR{e?e)j{1tIAm7G^&{0COXGUGS$$H!Mk+u>>cI8Lv*)o!b9r3Po2ZYO%Y*tX z#p)ugL|6}D^Mv)A)yw)V^j?cZHH!4UGmoxC#&0@F+AwE(Hwu@XG{Nq77k{d(MeceB zf49~mU;Eu!RE}d<#>V84PYl zen>0UXt}8DG&6rTwY=Vmi9^N#-&Lz)c=^7owI&$V-B*|L)PyJX8&18jW<;Xfsc54* z21~cPk%#pEUg`W+mCl;g6!xt;iY=>J*sbck-d{_9@3fo8{@`tQ&?BN*$P)my+Z3e<6H`gyFJP<$P9ih`i0Tjw9>lc(wCuDIcnVLUh6@D< z*mowZ+CrT{we^Z)Ea{cYk5U}vaoYwPkV}K25k}NNgQCsX7k#y@UxI{!55 zv=#9CXGyn6c~=4`k{*VSat>_>#7)>d9yXq@)g z2JL0IuA#X}P&%B9KUxUQS+4ZT0&W6jppao2Qs^3?2}A>SH(E%D;yEG6=OYF$;7^4S z92Mo`@HQOnhZ-6xiS+48qEyMnGiMT|a&bDFu@aSB;cOyPoS7*W5|wf$QJN~{i`JLp zz42a>0jA2O*>X01TCC6A*miYStJWEK<%317E$}z(tlFihN8196fuy>t?KewWMSWb+ zo_J5YGjQJrYAcqpi>gDq%V7`%3!e7{VtOF9^9qBH2&Dp}Vz!By0#V@{@VrBmrNV_x z_6%?e74vRIoL+^qTbV%3rtHq!-Tdc2h2N~}*XsJse+s`j*Y6JD=Yy5!7Vz?Jq&w+| zAl)sv3g_MVdjeBngr~n3kOmdy3JZU%**U>#x)o@p?`J(v7OxPP(n zaQK>{{aXq5BV>fT&;(7r1o#Yc%ERsN6!=boYeHr=E*?cJGnaGGO`@2$>%SL$sVT>X^^f*Q?%x<A|JtTNYw!MhDdihHtKl_uo4S#a}7Z9VEY=={uhJ@i83<%EonXe*V&tGkF z9QFu5X6(oOd%~af%oD<&W#;V1@|!pzOxkAX5&mb`P;g#9!>{9{UjJ6>>>phT_UCii zf|z{wDfWvZ{|yp6B-dZBb~2Ae9jEt&LkEfx{K@$#O}+de?(ab-j62HtU4=9uJ0JXY zU4m^6yTo58;o9c96R8FZ_Q2(TG?I;j{+Ef9b*Tk7^g! z#08b@`Mpp5@t%ed%0z_IF4Fpl#Ibhqi~|GR4+!k`dD88h`QA74=FR)rxAthyw%&kYC@zNDs3tW=mAV+7l)JRpr534$YWILSb}3{Y z`|#KY=J8qBa9kZZGnziV97J<`10p}d#{@o(yfyFf7oZ-y(lmO5Y5&?BUxToD>^

    @eUF!{}?p z?&f|H0!siAHH^lvi_L3+C}F548z5q+l?v&JjzX$tE`in17Hj|;815!5>si)vgLYuJ z-jLxb#)(_ONOO%KidbN@N_`p>Z8!(Dz`givtot|#Qb;$L*qt%i^1skK+tI1y_HFe; z@ABnd54z3QgFm|CA-@>>(R+Nk{^;GlF+lK?i(2To1a-*MmRmKbyM?e);wH z(C?eG>p^$>#_Nyz$GhD(28k+nZ#;|}VRBVps_%`5j`)o_`P5WYHKKiBX)ioOB(Dc~ z4;&hRFN?zyESkHg>KD5d9u%rUZ}JFk!!DrB#Yad5LwZw3?gI^f3^(X=B!cG!P6@$L z0|AWI1qhBj2?+j3pSLISJZSi1B&?2rWk3zW(=e_?=fYFJsNn1{5>}>?C{>)eJ(MVw zi+j^{HBoU2`xACCpDz{?m9m{EWlOnYbxnL#d==_SWy||*s}#@R>60y&?0wmexKn@z zERFSJa6z#7#n(d*1hy{-q!tF|K)2Amb>}@>x_87@#tOw)wrrJ#9J>-rr4KlEI_6Yj zmR)rYq~rL;a*Or}k6TCxsNuT&P8~bIv}yGsLJYNw#Xr`efoXICnEKJII>5>u^>-le zcY)?+NPS6*cD}tmsqj3`mO<`F>P|jWH`3>^#_*xvpml9hfJ9r>0=UQ*Y{&J~P7a}} ze8J1`!!sg9rxuBar`87GGhOT|nEs#>v(z1Z02*8bhG-eS30whFP%cxU{x zu~qFItJ+t0td6zqOs8U|Rdw-|t93U{3LV+`@;<2YHJvmowRc!0C!BM#>r=q?vp=D)j7qH}e_XL0*DsMhw{!hE*|W|y z+p+$05D*h#s`F&u#YCz({|vthf?xi==`(+=z-4=$zxja4vjcrM>l?CC=TY$#8NXlb zNWX}Vp>)x}ZUDI%ezJeu-hTbZ=={7F+Py{g?``wS$ZJslxaP%J4o=$zZcETN5{%C; z!-(rI1$JAngVWw7?4L(pr)nXn{1;2m{Y;rk1}&&?Cr&Rxy+izP%>48cR4vm%K!OTa z%JdRcG^w5@jJ(B@&k1Tn&wjnO0X|>7e=SBl_hZZ5zkd96Gx*sw1Kta`*MA!=uKpSL zbX$XuCcf(?w{F|MxqDl3dvEVR&#vUI?#@(htAQa}`dT`|9e!_Cxt?J|A_4*ZopC$b% zs?jaa5kk)q&i%%z-&61b@8{{8Pl= zCHOZJZVCQ5!uJY3e={Bw{0ZV87W{7$J}&tDo%1!pUrghDR`5A5FADyC^8aJOH%b4g z;PZZXQ}BmK|E=JEkNm$a_(w_qyWqb^`W3-HMLN$9&+o4YpHJgP75B?I!j}-v{I60x zeBLmBg81!%&+B-D@E;<*SMYa|p8>&dBmMJ&A0yone3SID;Pd%1D)>XB9~Jz6(|Dg0 zeC9nP_#aaIF9`lA(q9(*FzK%f{yEa$5PS+p{YLO7NWUofm&o8<$)|h9Wx;=w_(5vt z`3=zl7a^S2!(|%pV!>}C{!N0<=SV{EP2#T;{EOtjNAQP;-!J$!#s8q-A0>WD@VAiv z{epjr_=g0a-@%Uw{yE}5A^4vo|4$441o592e7uWb`L4ju_~APS^3MqV+XzDW zWmE?+X4;D4u@_{1=4JqVe%M+3UJd3kCiI;xG5$_}=IH#1;>Z s_pTq3pFILUNq&mdjw*$&5%0Z@Wo%#><763ezS~PbF>Hi_zP2P#Q*>R literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grqci.o b/pgplot_rhel7/grqci.o new file mode 100644 index 0000000000000000000000000000000000000000..1b0176c6d05e3668c4855d6b1a7e2f806ee740af GIT binary patch literal 7392 zcmbtZYit}>6~41;*K4n1{77g>B3J@W9aPWSi5sGnCVn)|x^bI_9Z*vVXFQ(W9ea0n zJG)NS=Ft`snkY1_#H$jm1Og$0s6?R>s0e65YTO@)NQm->R3H#CDng<>MAf2j&Yg4i zaXbMGSMuC*zWbfWJ@+wV`=P^=;}OG9+zfS4)ig$xDz??+VJ!};t!j&!N?m$0b-5Xl z%j&`l554n;y&$F@y9<%;;bRRSSEK0kweHlDsmogsxP1N-=K;FZ^1x4&(Pi{@^u$Nw z(T?pMT}HRjd5cn!U2397spxxEJbn;Hlxi}KL+#Oy1MxfKj}B|zaGL>?=4KU*Av)0$ z0mECi8C6n56IzB;fK2opYLCD~Vz*U+9dV^v>r@zRGmMEIbR2&-q>uzcyJ56~cf>Yz zLq3>)6Xb>yQ88Vvj)+!n@`&t(foK!hz{Cz|S(i-9P1=DGctb{AGoIQ4M$NV|qG*N< zrU*_xh|kul&F4XC(E};u8MTprhu(wE*KsFq4?~ZJayNobhI$A`kB^1r5RRS*<%Xm8 zhUTyl^kitXji6JZ9yWqbhk6J{!&mdvR9Jn(J=_;svyGsqLh}tr!}C2BnuA2?Y@ES^ zP&)y?s-BGx&xg%==A(_MilKdE`#3yfBp(3zbgRa9n9zYm=SZXe>tWS~XRjB=;`oTc zwWLpZ+Xq0yABLOsWzmM00N_2779(k;OUYu%HSKJ&=ojW4yPPb!-h)ZIkk1#qWXZRa#Y{0*DBof3G54UZ zRK|bMcFi=t3Nn7tUdRlZt_L`_*6LNaIlAedmt*&zkL`>^AS4bRIeB7iBGI4l3WrM;X^ zsAT6bucGfjS1MaLma(lOfw&if0{7J8}RXBzVxLd&JRRe`R8qq#!HwXIx`y&knIP)JBV zAQf}vIndHxUYi8PSoB<+Sh1p`!1RI&En&Uvw1;DM+Onam;HqZ)IjfY_S`Zj#>pKlm z;cUR>Ix;qPAkhbf*!`a?pf=MkGnP*(qtauNg1-pR*8`-n+4*0F}WWlOu5DRP|A7$cg;y^V`uTXYOs7gQVLVJPioa{{6 z2S33?|Bq(^Z1JMeUqN+#hDnyk8t#dPwjDHyAz`IEpq&Xi^>*kn4ll!2!gmo4w@gDj z-=NhL84Ir?^!dNq4}z_}Xlo&~#POdKxa8h_6Z`!{#EZ4QNqc<535ur2dIGC6`lYCJ z{cw$B{Z0WUeWK-6{iamv0xES)a*xAUSo|yt4Ka4HoTY#a@>N^Z%Y{zLs^#*G7 z$@UDmAjq6>Y?18uGm(19T>@NUNPULvhscgQ$t}Y`*!&+3nSVQQIe)Ip6~LrVjP)Ce zkFVJJCb^ejFf9I)6rb&}{_s27y7*56hCZ1GqHbOK_Y|dei-qC%+^+yT%>DrFyMFS= z9oupLEZOro_ZhNhoqM)p{Us0(6KSd}*~|6k`m_CuAcWO#HDvwpNU=SyAATmuy90fH ziQ->FrLM{R!*WM@u`@9G2N~Q7Dnc?oh6#(GrTg<>;HLVN@v8$uKwgvj^9=!OH5$5O zF^{lJ5D%*`;&jP~AklSilYkJd&c4wgs_On2Qa2P;_?Ln8EvoP&u5VF&Lc(xb3^5c{ zROEFyUB2sZ{-~}E;QDpf)pLx7Fk)ELU4VC~*KZ_<7yL$}6n?{p@%IUSA1_hu%T<3p z%^aCLHaapnb8LKk>hSc;^vLMsVf@78&(U+1?~$%QHA6VPpJ#fvUDqkLLAv$4-Is zdaxb(;khFf>x+&3Zy{%+0bIpDPI=xd@NI-o34AB{`4HhU&)}D-+TF)_o~`qPHRbjZ z5;#wM7hroN=&E`CiS$RQ$GBWugg#3+`U!e6CIi{wncL3qHNpR7UXEh+h=^YlMGH@PogyD)lMBZ=rqr8Nu%({VBn} zLi*PQKSlbt1^;W5&yNH@OZuwd|C0E>5d4dzzbg2@BmFhOUm^Xkg3s{`nl}#Peqg+f zaNa-Pr+jV|{5A5M5d6;(-Y@tu()S7eIpU8Aejn+Rg3o^^zhCfEq|XZebCiEU@Ux^> z1V2IfToC+=q+b#I*NOi{!CxW$tAfv$_p^e(O8WDXPx)UJ{58_A34WaNxi0z9z|rpo z|L^4gFM=PV3+^q!=Y7V19>s9DfBJ~uO>ubtJV5!pi*V+rh|lkL=D$MxI|M&V{DZ>tHgg;@Mp>YV}id%{4WT;{%01{?`eT|lb^5D z`Pocsh26IVzlr!ixC#Fy!GD>2{ao;QKV296?~wmL2>eCD|0Zyo{5R9Qd40c0{62xd pO8i3t=lj>AaWtnbsge5cE|zhCWsJ)*;{44i{UmS@8v3sH|1X@-O$Pt~ literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grqcol.o b/pgplot_rhel7/grqcol.o new file mode 100644 index 0000000000000000000000000000000000000000..90cb838d189f027a96f148ac861f5eec58278dd2 GIT binary patch literal 7000 zcmbtYeQX>@6`#FzlJlMI+Oa{Qj^I+-)PZErcHE>&Y2&1gb8eiZI0;Cp%5}Z>we@{v z?;P%eL_*b)q^?T;pin``AD~uIK~^9{tYRC*^q>&-jUt)614e}Ca;%*_cHfTVZOPM>~~2Amhy&-NVCq}2u7 z$O6Ychc?}zi>II`>mSRYk+n4P@6fw3)-vw&Z6V33|xrVI}BcqX#o;ews(-O!YN;IAE;VO3)+5e9fpi--E^+I7)lt{?5Je z*Kluqp>3LVcCix`akP&OPr*G-{T!(H<1NZ=WP&w=0`3js_~0R$(`0)iLmy+;$@1`RKbB*j<2GA8EWZdo7n^}<~q z>u}ImX}8cw*Bid$mD2T~_CVfirW=0sSlX*qDz$355qRl(v0kn`Qn)4S788KcX;#-*+bT=#pCe}aL8KL7>uc*^N`#=(3Bf-R(8G0=xA2p zNmUG>Kb8elh|O>*BUx&R;cZ*k>+C=_ZnFw5Dpk){o<_+bh*rhNF-$%yqBCD;!8cVuS_AHp<(!Y@0xL?ZycZ?TXt1@kKw^1W~A#(RsV!l~L4# zJcvfq#W9QsqUgDG98+m{2u8E`FYBKU%kNj4`C>j8nfI%?+i%?ju2mI_fe&TCfXy}r zEcj(ird}%)K(uN>5rl_{?mciMHB}3mfm=;YI1|qH)cEMw_~_QLt*MdOd@hx7n+o5u zRl4_c=*X)C^B^iMSz|Z%zyfIXb{#9;M(-VoO`v6=T4{-Lt>}AhS>-EXuO%z#t4h|( z%^bR@v|JD^Rlk9ccez31e^Zz++mpw(NeQc%nGa3Zw>dXi9ZfI0P*!S*0C;~M!V8<=Y-Q}21=H6 zFUXf&r|b z3{HiPHf+F7qm6U%b;Br<{v_2eBi~SJ{o-dMuip{CxKDKOntW{u@h~cp#<};v zm?{3{>y?pyPPl(CHjiHbjQd2(gP1I|Ta*azoa@4fDgOJ0`1lis$Nv&w+$RQmh~n$@ zhZr`_Jr0;Dem^d3Xxbj<-vbwq{|I2{Q}duJ+Y1zbbNHfFxQ?&o69Aj+FH@i`$}GHV zJ1x(XeMq2AFRdGnYdeiU4;{oK9!Z?npm%oicik4DgpM{2pBvAH$g9kJA3TRk;c8JbpO9I>_r1f4|CLsoKj{ zp<>y_OfWxFg%PJs&Vty>PIK*FSHIK1j{Z3i8M5Vyj{wxQWhG5`|8fuzTTn6Cs4eIr zMR45XYa{j1@1M1Ro4k(zJ|Nz`ngWSUeXgth7{y2QLk_>o^e1L^@65s7yJoTnr=||= zIh;MbYxm5aEPk%YZ(S+jJ6D_IdcizCysFwKFeo&R)ApB@jXotjL$KjI@fxKCh4aIv z@gFJ`{-aS%lzt_XZkAx45Tu{XRuF`jP)9kgmtI|8;Z_?2hnp>@?-MpW%3Z zVLPNmnExk9|2#>Z52-@^a#%WhbRLf|Ke%VHJ+4IP|DU9PgCzQou8;3A{(Y4HbJyU% z#Q43$|0Uz=o%n0Ue~k1$GQQq%e`frjkpFiXAJ;Rs50nV!`y1k`f38&BaK0Jh4bZrL zj%~s}PB;qWmk7U^@o%E%KEe2Bh<`ide@Ob>jDLanhZz4N>Gw1KCF1*xufNrgGyWCg zpJaUfydPzJU9Tq?KSA^TF5{1o{(Z)ur?@XNeung)Gk!q)Uon1(^xrf7GsJ(3@z0R{ zH^%=9>HlE-3#8jLKfNAaBfOt*RB=6ABK%{Ff12{y$oN-?pJx0U2>%S@$4TGA_@{_J z%lIRt-^=&|q?Z^!L;5ksKSlX}neny#X~y3~`Fx%6&yfBd#($6a&oKT4(w}F1{XAY~ z{7a<2%J`JN_#NY4A^lCpAEtcX=6rf_y~p^gi65hJRB=7T>3~ZTuGh~y#9znwBgEgp z_&MS`jGrO?cEV}m KB&vKz{r?M&J|d3* literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grqcr.o b/pgplot_rhel7/grqcr.o new file mode 100644 index 0000000000000000000000000000000000000000..a61b28a89625c35ade59c86f19cec67437c96f32 GIT binary patch literal 8704 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 alS;=9rQ>`m9dY$rfyW7ACkV!N$Nv|t8z&P0 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grqdev.o b/pgplot_rhel7/grqdev.o new file mode 100644 index 0000000000000000000000000000000000000000..9964c2cd7e4a8e6e0e5e91ab128158abdc50d310 GIT binary patch literal 8264 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grqdt.o b/pgplot_rhel7/grqdt.o new file mode 100644 index 0000000000000000000000000000000000000000..2409d910deb24df4c3cfc968d853e083e122ef39 GIT binary patch literal 11272 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 TWF2w&%}2NI!A21Dsrvm7c|#y7 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grqfnt.o b/pgplot_rhel7/grqfnt.o new file mode 100644 index 0000000000000000000000000000000000000000..93736870a4aeed6e8e4a418f5d853f4fd5def377 GIT binary patch literal 7400 zcmbtZeQX?85r2E_@vA}`?M20mViV$ip{GEZhM--5v93+L}@QR>pBhhJ7kr*U_C zcVa9NZQs`3X>=JK8nwDq9JLL;mPoeqrg$9^1U{~&07 zp6U@TTE&5Ztir1>?}9v-)t>h>ob+013?KU%QnLWlHN6sqD3&b8k2F95p{o@gwAG6> zQw1x#Shd~s+4R|Rq2MflSXrDcI9596K(QMI&Q=S%`gaY1|6RZCKCt?A$h!_q1bw_Z z`sADf2C9^EIp}I-HxHeKgB(0OlN>L*o@2_n#|=+iVN%HRJ4*GHM;hwzf^N$Kl*;2OR&f>5Vzs z-tomqWVD_4Y^qu>dgiQ3RXx}5=UH;?f|>H{nx|58re~_uY_$raJ-e9CnzOU6eOje7 z$A_F!uG|C^oRSSd*?0Cyg|gMef$dx}i#Eg!L^5H+&OT~sVr%GkdPC;S% zVdq*4FG-hr6b!U1-u)6*(4ON*MEh^~akK^OB9n|A8<_?tZXK3|)2;i1%x-NiKfS35uq7 zbo*W>^k<{e^}`odS-%;;WK8s2(I1#fT|_0&B=;!T!p5)AA>wty^~15{_$FW&v++p= zGPa|bEHqr-U}JyA91vtqXgf{*yO~J6VnoyKQ>tUr8rTQmOCfMHDLfv8)z{<@;nJz`;aeD0Tl z9p*nw`>vnjamRk#KTrN_=e|JxtaHzPtp5ZA#6+5^LjH37x&G|`5(r`SyB@NBc%;~$ z*AL&8mudX#s05nKKP-2o*E)QszmvlUKt)K7kHdtGU!nVR1nj{k#}C?qGV)r~ zpKk^+mZPCN7V`+p1o5y6BTknL2c|x{=F`MCL>sejc8IFLk0Jq6RN*fKYg<&|NnG2a z`h3t^RaE3PI9!1F>=_by?}SBcWx$$=YO&B&ufYo7qh;SK)u0Or9!Ck^Dhjl~w9rEXuV7!MmI^KKO82_lRs@thY zTJY|;Q{cQF?1yo9?nvE5e2%}Bf{h9MD&=!X;J+gLn7~gG{z<}Rp8i*=)w_@LJQIjR zSCB?N6Tq=<_*sDMyx%qIbB**R>Tz7IEka)*oag%?%JUn9Oa6BS|L3H?AozSkyd?Nf zkp45l=X>y%g8yU6=XZjS=LXv!{jM=zi}Zg`&-rIa*T0v7%=0}*cn6Kc{CUD}Bb@nn z(|+Ln$owVZrv?8#(mzf;^OuQ#K=AooO$q)A@gEj^`dCx*f`5bfrv#tZ^>c#n|Jth5 zqkAx2Iw@Ckk;4hQ@ zSHb@&>F~3QZm8mUSs^?@IPZrmK27mG!TcMq{v!A>y5RmP_%!g>E##7_!-hWLGg z{~Gak3I06shXw!h#Ge%WCF0Krex3NUg1=1s1;OXf&YIw_5dRB;?^67$f`5bfPYS;N zrxq;DGXm#x{>?y~ExZ|^e_rrkC)x|i?>7bihcvI>3;bom|0eL0 z6n`VloA<-B#P1XMbHpDJ_%p;WlO0t`Q6s_kE|$^2GLFkK;{47j<0R1t4Pyu6{|glb BQ`!Ik literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grqls.o b/pgplot_rhel7/grqls.o new file mode 100644 index 0000000000000000000000000000000000000000..51f4daf6c5a8671cc5423af69ab2b83980b0b84c GIT binary patch literal 7424 zcmbtYeQX?85r2E<)MuY_@<&43BtqAeBzA=N?8Kx|P!ik0&ZTue8plPni0gW9?{4F} zz02-8y|Y>(+LSu7(iRC&Q7NGEAtOK(s6>$vr63W9KT3rZ!5`kO&k&pOQAwkI~)3_R7b^aVzZb|U%HWA z+JMNCc>Jdq-v5&wpr$V$MC2uWtm5NJ6oX#xO+S-f+Kj-`#Yeve(53bVelD~gZAYRn zJ|2%IwkCSCUak8UAtF1)u|6T99}w~QA?OjJP1g>0MH2_&AC5mUDtV)w8c;TD5CM9u zF9MFYY|-kZh$OU+)Cq^XA~2EIt~#(SE<{I@3B8?~cB~Hr$M1j?Qb6d^w2pXyZR~}7 zApgs4kQ+`!#ALY=5ox@~BeEAdqHW*<6FV$*Su&}&$pD({L_%}ZzIZF(lB>0$BQ}^M zgt-r&9YGGDJp)=hLXkA`v_{XrL+{4$Yq-bsF!Y{K?t0Lv&Yr-o(>&tJ?M03g!Q0jLL-Eu;j1|_6IS2w2q!{owjOjQG~aMEJl~U{IdGKD#)Ehe z8Ykd)^|SGbV%V%RpKL`%4E-ZpC*c_*{Q&6qcSwAj4gx&7$6D<-M@1)|y#(4T?1-vgG+Qamg*voti6 zk@sNU1${Up9Y0w2kqap?d>pB3tqM%m@Er(TE7>SYj%kCy;DHzhQ4RWPrK%yCt2^&m zZfYU5P%akjIZ!L}vqjrX{A*?-!~Cewx=;DdVyTIT#; z?x>X7P%xgI#azsiI|rgvl?67kXXnAH)GAo+8fMlqw~+y1dwxyM!mP@=*+JbZML#Qw z<-Bbg#h?zr#X6R-s@0%?^Nx+xs8nV6V0&O$YglA6=U}IqGfecrRn5Cu!z)NjE>0C| zqat#;nji-wk9zX|7c?bl|jbSLOGm5RaqL)HwGP^o5PTNQX$R6RsbQ&Br$Y!kMUlB=iZVhmbA@w`tKSF*=aIOy>Ve|h=$o#v2tMXTMc@i)l z6UX{JjgMco&5d&}L1)d4y$xcvyuIr%Q$n5?%9c5)h*G*|$1GMbn=mOCs8YtgIGe@URj*m@cPEJlvPn^k|85^IPz&BL&7W*PmS3=3Syz4p$uYcj1Fgt%SmN&_>6551YdA`x@Jp zK&-htwliF<$8N$gj+#3{SYK=^{x-UZ#sj#HFHt_n8U8%k(+q!|?2nQ}cM2_$;73*C z?o)X>#8>$|OXF6XaICdzkC3AH@=rm)9%J~+WM3kQVO7l$`aIz(jzQyom2l4gHsila z_Kz4}-5ft-{Lhm8E5=v%<8K-N1I__9{NP_$ zAr={5{V)4D#_uQlON@Vx#{CxKr^$Yi@zwr*h4Bky|B~@l-G0OPD(^QL|2o-!V*F*Y z|H}BUk{zXWMibA=3gKOZtNn19=6gHiuM&Sd>n`x3fVtqd`d@L zW&BmLf6e%Bk;5CD9}PN`pIYB5#QzK9$LNClCyW0M%{NZ*(8T@IPy9`UtM~=t-@*84 z;_qhs*NJ}@;}?iO%J`2E|2X3>68}ENKTmv<@t28TWc&oxr^fgz#DA3W%M|}9#$P4= z7Z{&j=f#&9{uaggdQ+TDlnaXQGyXN|d-*;1D~$gv@vkxdYqZ{PF#b0wpX&_2Lipbp zewO05)4bJwc%JyX8U9`3k1_m*#8>YRXi|#OqxpSI>DZxk99QXxt9MZzCyAZVFm`kN Fe*todRM7wc literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grqlw.o b/pgplot_rhel7/grqlw.o new file mode 100644 index 0000000000000000000000000000000000000000..dc00a880d0c461457354c7d106fb1b3ad1cbf648 GIT binary patch literal 7440 zcmbuDe{38_6~|}qocio@EIUp}n^2(SS0vqD9pkN~1CNDx(u;15JAAtZ|mq#ywiL4@~a z-`wpzZvewc-kJBE&wKM`W_Nadr$@)fLYgL2(Zn86x0EWxTx-2OEStmPUa?M0Bre`g z%&$UaUYx&r`n^Bc49&y~yHR-!FH3lNBaA`c?M}?EMl*3GaqjAq^J~vu`}_Omo6h!M zzu3HO{nI~&9<5W`+};)47Y(;>Z12?8XdU+m5!xaSbO{lDKt!W^pht)%UEA9hZr>IC zQ1rsEk_(!3^7%$pM9@F9aSW~zYVU&fQ!P^O)}aEAj*&+D zong_6&)!z(i{d3B!V&rGw(bE7|CHP$kBe437H}U(Zqrb}6g`3D*5^RMKeAUp)p`jm z{8LI)oCVL2FyN|bx7%04Ri5y0wrFu9U5Xb=wr*zQMYr&bWtQV5+c_CG3;BG(iI-e6 zUd$A8h4KgW0et{%Au{gC+_QQbUkn+yXijJPb=v_QOH1vrTN`eB^v%eVpNM=t6oMhW z?)}G(jz1CWjX8x_#x;sr+bqRW)+yVxVsa|3R>1rs6r-GV^_XNr7i!#)Wo&QaV0Z^O2h=HM|_EwHg~RVWaFoh`eLkUZg$> zNLCW+YQAC!|Ju%!EH^$IpDpBa_B1q$GgCR+jHhi_?%EP3OSv7rJBBb$wKOZk7!|0V zwNquN(oPNsu9nOkRHj!|i>?J$scayUF^wW3c^gU7EaZgkl&y^A_DtJOYWL1tXR6|nPi z1&XdpN$nf44itwN43LGM;2R=|Y2$vmFbBg6Hf(xq{ii!2RqPc?;tDA{lVAWKi>bARnRQ zxnjXq=uV+*>98!laO;}W-Tq{C^`P%bxEb%T$E#}dZ;U;X>RmyX=}Akb3dzuKTKXCJwX z|05I>4_JTUW8u4wArg;ud0rLydK7Z~aF6)A0j_h zakdN{LG%A+!2H{QRr#xRxda-IiDTWQ@$psbFPyyyok8O-()h|B*B}0WTQ>eHpkYkK zK~t7Z@;?^P*~X~xRlNXokpEG-?|Lbos+6CqzeWD4U)9f(zp_=W{FMDuXrRW@6lchv z@4s4q<$nztLF;!bVE^!uQvPcH@N$**7|b zh3`iaUsqV*uLR3WSm2YmyoBWw5~R~+u&%J6MP8=U;k!&%AJ_E`+`l!x^;GXm95HCr zEueRbKi`Q#jm7)lMhN_t58`)#?&o{d7S+G3yRx!=;?S6Uj9P-q=X?6{xlYCpDcJTskjb{^9I=!pN?y-%Ezdo^1*immUCWJ z%b$)zaglV)N3A(ZpCMhv*-Z2O0_mLp8sl$}{XNF3ljBE>f0688GG3jJzh-=y^7%dE zd&vG1<6k2FHscdydp{V~_Z`0@uym52ns3&V#Rk&V`fQ{7WGmz6i0@20K|`{5Ghb06cE zh`*ole;_{2_z2lM8K0myqm1t%`!M6zk^MB|6J)0te}?io$@nbUvy8t$`~}9(k$su* zuT%c7Fn)pTFERe-#D9nJi)4SF@sy5ulkrPrzs309k;B`Z4|^TTPwnq7i2n=YBXq$1 zlg0loZdhT{D2F8m_n zUnc$rkODP7FJtpyt>A1w$ZN)c^nh literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grqpos.o b/pgplot_rhel7/grqpos.o new file mode 100644 index 0000000000000000000000000000000000000000..d5d22c2f147c0717d18b707ea45dd4d9be802c9e GIT binary patch literal 6992 zcmbVQdu&@*89&!f8YfQEr0J%rEt1#0vPZ9zChbarHR&UDx~wgIY*JO#++1JVxACjj zPO&qIA!xUVZc;#lZ43?3KOmrK4>2SVn-K48)3i|}Gzl>cX%az5h*1Q8fGFR0&Uc*a zFQ-6uB;Rws-}n0-=Q|Hy`{4tV;}Odex>@30u`Fp+h~BQ{@u(b*iW^10NL^}2=~C~- zE1wxlxmT{P>%B1lGw^VA-RTSSZ4n%txiG(94*EKz`hBgwMXNJPz2@pqtv>74p8ojW zc(iA8PoK5k>Rls5i{76O=}0toK92nc>iUVEzRNs#cPk+}FQSVqJY zJT2>=J!|19uX?y-tfZ5zCM#9ncJs+fP(JIqwPe*VolCmqVzFFGRs%O#$yEyF+75fW zy&YvCa>2PuxoT(eDWh5&tF?<|tj#>whj8iLti(<+3m8U^+2wkICcSLx? zGgU80&L(Heg@Qi~!^+H5!FQ8cA8OE?ce+~GxozhN*w2*w8hUF~XQel%4&A5y41(EG z0pm8RZUMVW;6YcdIjGCIP6ffDj}+G}7ldD`c{wi_nD$GVPwct_VOfA&;KK~irq)24 ztY1J!m2x%_hIHkmhJ!0RJ*giP4eQDT4#{i2+GrBKU=LOJKV zPC-pZafYk}(XdK7pC$F6zxny@oY%@OugwF*OTY9^OQ0lLmrrK{@Y8yvKAe;QGkk}U zuOlHBqcm=*6<}~Bw6x6z3<>oS`B;rYSXJbo51?h`GiXhZElA=Eh60i7xSUkvf_Ck>DP5MbOV zhI^9Y526rioO>R0ruZ@3*wC~+&c7QzJpLB|L!X)lL)m^w@$YVa$tqmO*Zr3PHrZdL zK--jA^QrB0|18-z2{cI1zTvpG)A)B`fEY_tXnQ^{J%4TgJPb_r+eP&Y?;qUK+Fs*` z@w1D*k5c}xq7Z64e^c&ApI@hpUL=DXK!o3+E8=4qQ~Xgnf4h{M=99;7D%b#dZQ_G# z43=WlxMML7QznR;DvUTCauy`I;x<==Xmj?h22p`0Yh{bd9dE+1k}F$O^sWQ}i3%zv z(?$g?QV7RP)`#kIlyvK%H+dfbyife~T7r1$Rb8FOFg~D58+!3juUhGYlSlTBO{R~G zj~_p9B7I_P@8kjb0!Ht7>NQB4<9@+B{&h_?I_9#1;nl#q0vpZ;KYv028qNco#^0n3 zb)$lt_{}8KHMru8ZY4dM`z+%Rko+yiKTG~!X8aV%uQL8Q;=j)Ld6Iw4_?Lof<{#}g!JIa3-0?98h{x69C3ga)5{By>q zbi@_LUn2RpjQ<-l(0W~;CHjK;fboA!{C_k5F}mP7$WHHvmni=Yglqo;#QzB6-%k8H z89zn*Va9)k_@j)UC;kNEf1LOaF#a6z(~Q4^_yxvaApQ*F>+i_VG5#X)FEPGN{-0v} zCE{OZe0=Z3w!rYqz=24{>J<~ zLb!ef)qI!y_tLyI?ht>N;om0yA%>qPewp+rQi>7@zhCJwD)boR>M`Q_-GKW^pb{GT H4*UNP@iQf* literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grqtxt.o b/pgplot_rhel7/grqtxt.o new file mode 100644 index 0000000000000000000000000000000000000000..30e72ebfd535e46575fd19042e605af2c184b2da GIT binary patch literal 14256 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 AZU6uP literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grrect.o b/pgplot_rhel7/grrect.o new file mode 100644 index 0000000000000000000000000000000000000000..a4987a344024d45c6214d9daa4a99f8f0a1fa0c0 GIT binary patch literal 8712 zcmbVS4{V!96~E6;R;NyFC+VNCR@4Qrbx~_4ZCbiQ*Q9@)HC?kdg;ChDFOKba^}l|0 zQo9T$t?kyRWOV-|7)%;Nut-B=0}TzBAcbyZV~hctgeXYUBt!%V)<&8t6;|H6d*^(9 z{t9#_`MdXi_j~W&-Mzc-Z26v@eY;$SA#^dsO=3>ds1O0)oZKzNZqY6liGv4X$N#=5 zHvU#@{FkxQjo5O0lkh+AE(o!SzR;S!i5;P3vGI$s@%LjBTd@5Fe9Yhj2|*+TV&i{^ zjsK&LFzXNO2(5u9@cfY}|6^1BA58fpXOH@3{Vh8}&8G)K%_pZy^Fiy=+GwLcGCk(@ zhtEp8W$+vb1^kg$wDqgf8u{=cYw)8qwEhiRzbbvUkN1TZ%D%$m1ECNG+#Z`42!&%4 zrO?9I#NDBgZ8*ozZTjr(KNm)eaf7eTyUpwNE%mh+tw!KFAzUj(Z<`SAknnnMf)*hf zBF5Hcw{Nre6W;r~C9iwF0hGo@;r1Zf+vWnp>#jGdB$p)2>k6Wn4eo{pY<6vxvdkPQH%JGDY(#>+7+;?Oys_LNj0W_9 zrLj_@l{;(N>>3On`uh|dT>UaSM%UXr}=gEaEs%dT?=~9 zFq9TaQ1ltaPbXL3IjxA239^6-p3Qswc5yleSnyv>w*M#1TcBS10 zM~T)@@{~udDz)EJu^IN&7{<6^#b(%zhfhs;1Y&MBAudtZ^j&O9V$%XNaV^~iPY=nP zK|Um3a;{|&kbxWMsny@^7JfVao=9Eq>bLBAzYcVdXR7H$3QAXc^N1W9E; z2J&wYXewL8x1<=)c61ENS7^!txpPn&;@T-AkJR-;ccgV)L(-Y09C*&=;%TVRtExJo zDreIxOQU~*pKGY zCG=b=9+Te8GE_&?!w4pG8QDcKp24<)m4K>PGO;ZcHwy@=DB|&aMx=A4L@Hs052tg( zTQ;qRRy7$ZD-EMTn^L7v6YKxEA*0p(2r;EI7)2qUOhQ%8TPf@ZBiwzV9YEjeC>J}TY4BB#k1C7sIq04XF0Da%N)LI6re(- zfKy+=E^3C>CC$rn!qQneVTDX-SY-04bll9S@k>%Nm&NHUtC_g!Esp`suaOl zt>7HTlR3E>Ni&XixV9;4*es4fh2|239xKYajN`TvHGRSyCxqC&ef#EM7^YYOI9LdMoNitNkoRtk|`oX#UhA_q0!W!IW%M?#zaJN6qL>-^EE&wol5|a zSH_Bz$;WFrknlM(n*hHyPbOqV3Nd8^@rVe%0TM9ZkzBr%h`?N}h1`xGCcDJQVA29V zH1ZE#1;G^0FL|G^x#=dEp8@a|ttm@E;}{Y~7Au-QRZ+!$^g6VwX0ej+>iwSZ0XkGk ztya7*Tz~ZWLGAItbm~g?KU?it37m^3FvpO&TOFtZk70Y^T)dy~F(LmF&EHq#ZAu7K zagF%=9R!T~1W0^e-UEer7!_OL+i^6NWu(^$`^Ua{|0ZDQlZFeDDlsB*-&{`v zoyUY8`pEuwtdXgrauxgKG;bTwnXPbpyxs7akUqIW8QI6*3=kjx1AuX#XgNUrcc5Y` zoI4I}PW?|&|JoksA8)t3|HlDCpPC1vEGMY{ZniMGe_c-k+sXbM4i?HBt?>9!=dmL_KrgHSH7-F6KD_@Xz?}LI(*Eb;=lz4ZV?kbnxNya((OtI+isg2U z1mkm>VZ_R>xwE-!ZEFJ zH8p-C;g~5ndm8U2obwM|g|B{&RC^k?koKeRCph2stkao*ILckLLG;RM{5-T_p=~8I z4*7aK*UMIQKH2y4M;NZx_hW>ke|ptQWTOp7|7*zEHiqNf70X^#RpV(T{sD&T_u!`q zM{}Y|M17N+i(kii)aD1*QkRn?VEl+q0By``OO;H`3zwGyW;^^BKlhKX3_=Wc*3u=NUgt z_}z>@P54R1*WbY&V*DB6e~s~7*BkC8sX_@^oU#~6Qv^lvi0-apSW z{wdOb$oT)J_+MuHNz#AK_+HZg$oSKw|C#YAd~uQSXGp)y_{%9C552ch#r&Bey@hI> z55J-gKFs(YI^b3@{(I!Vi}Az6-@^DK#J`#GW5hqe_~(g#C*zM0Kh5~}5`T>GPZ9qf z#{WF=zr^^H#DA3W^*i`U#-Aqs(~PgryB8RLhWI~Y{6#eX(+vL$#re9;kLIGudB$%i zzFuck?feUj{{%XL@;>wb2IbRYidW~!JLEsa@G-(8HXPsYZ=-W4`)oMA$Ajemc7}gc zvf*cC8;*YBX87~OZ>3A8_VYaPwLes8%A|$;zN%$x&@%ebGUED<&;10k5eoXY`~MFk CzwkN$ literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grsci.o b/pgplot_rhel7/grsci.o new file mode 100644 index 0000000000000000000000000000000000000000..c57999ffe7c80bcb8a498fc38552b665186564c9 GIT binary patch literal 8432 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 IvAE;;H;1w0VgLXD literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grscr.o b/pgplot_rhel7/grscr.o new file mode 100644 index 0000000000000000000000000000000000000000..19faeb8bb3b7be067909454f4cc18d66fa4a6178 GIT binary patch literal 9016 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grscrl.o b/pgplot_rhel7/grscrl.o new file mode 100644 index 0000000000000000000000000000000000000000..82892a7400f4affe92ee5300e28ae4ab283929c5 GIT binary patch literal 8504 zcmbVR4Qy1$5#D!a!YN9qAQp6z*(r2qGmIFz}olKjEjPH0p7FcRnB7AMeg^ zwrE||3Bhrkgo;*C18Pdz%B79ev{L0NZ9~+kp=#Acm6HCbQGS$4u9B({H&vB1qBFa* zckjl}ZONi{yYtOAv$M1NcK4Z)ZISIB!w|X{;x18_XXcD z$I`*+$XGmhB?7H~nWOIxm}4LHj{U-c;HgwBX!`{eB7Kkc+DKY0pZb;Uk-}K z`>#UNoTzyMo~@==8hmN$PaYxmH9qhh=z7OqnQ3gg|LfDx#z)LFuDUeS*xVCrn%NAB z^FDA~tyrWKZL<_hl){{)SO!kFfoJd<0M4qKplkS4PY3rz#^b?* z5ojGYM_(BD1+a`}tdApz!Ytfd9~!I0;}w0ki_ z0w)uE!1T{uJZnMct*JqVXOnEpWh2`)(t)A8A;VFObHiX%8!rjNi*{IQ<3kP!=UR9^ zjlXqe7vF}~e5o+e%BX1m8+tePHH+JO#tps4m3uvC#MOg4x@XcY26yycSFSs{(=~?c zLHD}$c0K4mR}a^N?sxUzj=In0fho8Ax_j8=nzQRc54gtbj=IOY+cgG`3iWOr#uuUT z2E0>#H$MN8+o+>&R-?ja4cNk1I0LZfOm`i6GyM8xWFl-Ipsjx&xZX2Qj^IvFRW^g7 z9`-vSgpY=6 zkOksPQUD_-Mr6;*-uWdWp?bTbVcu4n3j|ehuTp zhK2Aek7wA`jBu>K5Y87;A!{IQ?%bHzYmFrUxaP+N8`ola$w#1jQ-c*J12y@i~4#BoiV zRafkaWxE|^yOXo{R|vV4I9_q)rz7i0xYr4CQ+ZAU=&+n}vz!{?mYo2o1o~kX?*U0A zTa3x3mFeh+3OqcLHncmV(jKo7$_TFym7-&;AgTp(7At1KMJ8*dl&21I2vsSQLfufN z6cf(nF<400;o z>+grEl(Ul}jhg{5u!|kL4g|Kt8nR>AKv$?MbVp!KN9UT3wVi7NZF>{(fEg<)eD&IP zVfPK96Dt)*msZ9;3Kd2ZtxCiH`Idy0ExaTU-cTOXJcQv@jiswyq;tuX6-%qJfebyD zWa3g8nYetq7#CR;TGEPPzWTEnOle7_Z7`d{wB<{(549*TnM0UGt3QiMt3PI;1x{(w zj>ifEP-RMT@>8%DK#IkW3`&aZwS?KT6IF4+WF>^yv32W)KpP~s{eNdvt+qw9{EXqf z!YDNvOY7(R9)q_h2>3G6$(4GrAwS`H*n6sGwAQ=cXeh7cP+=%jjP;37p=hgmK)38f zIuN<|Th$BHo#>MInWndlo#Mq_<_cH+1QNsfY2+5TJ=0NY9efSfW`q;$@z;=nr3 z#xe=;>+lqVC6z=>*+4uZgj;3;@*RTRD-nVet%fCS9VNTOK(yZmKQ!WxUj@JvHy?R+ zI^1+qo4@sNLR6KdAaM){kIOG8eO(q}F<{t_o`)q!g0cc0#9ett;LC42ywtd*-lzkPa@~c%6mYP(5L1>Q)(4ejc;%bO$kLDedYYy1 z%FNG#!GFtaQ2L?CV_L7k)lywB@)k!v^?8Y&alUzJ1E5*FcP&5)^);v7Unky1i()ZTqA9H*bk-ivmsGhSlXSZRZBFalCgX zN(l?~Ct`LsDwab(SaAK~SpR)Z6^s`P$M-5&;+S2{&l8R-4DWUtADaWeFbDqZ9C!o0 zF!&ncyQlpxBOLq1S54!q7+cbC0~0;dZFIorbUlN8TRhCe~_K8Cjw|1*U1IMp|0 zWslc!o^bfVwW7-d)WA3q*X!va2afsFZ~9{lzeMuasK$77&JlWwaGi&x6#owh=lq{A z{wb32+`^*ydY!za;PO1;UrVt3Syg4eJ_r6nxQ^!{#q%EHCSRoe#~QpmS#z z{}ki(06i19xn{w2o0O!BW7pTZHZGX6BluQR^hkKW~cx?jA{_o+Y|2xW0591FIe<$N-iGPUkPZQr_{1zH-p7AG% zKg9U@Og+W;mx=!<+>c@{&f5#mcNiNKl%=d UI^E`Y6B%+p0m3miG*uG$4=4K_2mk;8 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grsetc.o b/pgplot_rhel7/grsetc.o new file mode 100644 index 0000000000000000000000000000000000000000..a47a54cc39900c213d4073b2cd421cd6fe6b8b49 GIT binary patch literal 7664 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grsets.o b/pgplot_rhel7/grsets.o new file mode 100644 index 0000000000000000000000000000000000000000..2ab56813e5278707c646fadb7948954524afb1d2 GIT binary patch literal 9232 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 Mr$wX2x7Yu_0X$$`(f|Me literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grsfnt.o b/pgplot_rhel7/grsfnt.o new file mode 100644 index 0000000000000000000000000000000000000000..deb30b60f17fce21250c76b336e09a8065d079f7 GIT binary patch literal 7640 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grskpb.o b/pgplot_rhel7/grskpb.o new file mode 100644 index 0000000000000000000000000000000000000000..cb0433abc23826ecc35d1c53a1a8552e3c63c593 GIT binary patch literal 3976 zcmbVP(Qi{_6hF7O+X@|*v7v53O-&Svu-h?)4h+y+*w)2HgfV##>~70lSGKjay)%P= z#xzPA9Qp_7tKrGSClg=Ph{i`Bd@}w4#()X&$tb~d?meg6e!WYOldRu4zwZmf(#u66Hgs*-K}`3;S~lmCNn-H}}D?=Z(&|BZdk zAGFp!>+qdxUuB!OV{cxt&RZ9(x2*j4pzY9JFoxopxNhvw2DO1+fQYFb@7IkZ@mJ#4 z(;k}Mstp0?J)p-3ogIoGElTF>&_q8OJ%cdP8;=9@J`eHuG0XhhmGR$g4y3^O5aXC9#F(K(fyta29KA{oOWpjkWIKnKs7- z(J!~LMt1-sQcr`^qF!Z}2In^m6Y8TyjbIvo>DN(v5&!(Yc-i;2oiWdr4>}QH@)-M& zYHx$De-^x$5AnG+|DB$61j_YufDc`e$NGoY;xXuJCRVxQo-I*Itx?DLkKF$O-4WQ^gP zdd5g>L^DS6qaMo``>@wCCYyaHjdbLaF^Pa>B$0qb49FNUFdLUwUAuszTldE$(dy2M zZMx373+6@JwZSYj8mKyjwNlDjdMwIL}pSa);@Fb2@M-J~Wj{6U&Sb74})}*gQ9Yeqf=cI@o#bemNyRgCCSJ`nO9 zFDXPKN+(Ae&nj_zloTdlWIN3^~cBvh{|oDFRXr=>q|WKAKw98^*=+5ataSs zPfl}v${!S|FXJtAhQ55oL<*Dm-hJ$xpJhIN?c9e9if3h7J`iel-O1x?p1HMZ9j{ByRi m1#s$Hj_m~=Wj<`SZx+>+y&#|HDlTVG&6A)Y6zYAj|Nj9^`ba7O literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grslct.o b/pgplot_rhel7/grslct.o new file mode 100644 index 0000000000000000000000000000000000000000..67bf4a2a4704f732f6b7530ba15cda24622770e4 GIT binary patch literal 7944 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grsls.o b/pgplot_rhel7/grsls.o new file mode 100644 index 0000000000000000000000000000000000000000..fa412d9965e66c1c83df1fb95fabf17588b3c642 GIT binary patch literal 9592 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grsy00.o b/pgplot_rhel7/grsy00.o new file mode 100644 index 0000000000000000000000000000000000000000..bfeeaf156df3b30acc89d05f752d4a21d3d92d01 GIT binary patch literal 7208 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 Iwl)5L07%1gc>n+a literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grsymk.o b/pgplot_rhel7/grsymk.o new file mode 100644 index 0000000000000000000000000000000000000000..882a7e76c489d2ec34daaaffeebcb6abe3311f8e GIT binary patch literal 8736 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 wToB7e8BjZO#1zsQ40X}hizwsvbf=uqKd zAi)V5gNYjB^udG&H9lY>L8S{1LlfhJFXD^(AVK2;$O9yj%yaH{Zuj-}TTD1fzjMy- zo`3h;KmFQMUA^5dAwZFUtuUi06rfN!BezMh4H{q}j8}%n=aN2N_3Vw>H{L-hG`@v^ zO*`DRZ=OM+<;GY+gx(#0<*fV6bnaLv_G4q4P*I~}@Z0-UQDn-W)Ci1dyxq=8Uu zsvQSAXt48q+o>~!&f1K$0l7Ea_m826Z6Hq3ILZWw$&KEjowY(vuzS>s}}VD#vHKFo_ZIWxov7Sz??;* z=;M<16|G=+C`wQLwi*|jR3ae5D!?;iK@qEF#!0Pi0I2l> zm$80><^>+Po<7+J31|;FQxKN1HYPp@s5rtPk;qLCVXQ~hl~dX-(uP4UtY{{Ss$#@H zQL9MB)_{1LVu+a$M1$q1+-qX_fl^xwUDjWUf+v{=v0T;WNsijJqjqJ$rc_adGj33g z%Z22nI6LrDLywgLsyz~~cFXq3VJbilf8_=5aa8CdfqW9GUD6(2$6zklM@huLzPb36 zhYT%6Akv==3}usM>~LTxlRgrUu^>T7juEpB3z9NK6~D?<*eu4A6Kt#F-~kYst+cb5+jmam6)5RMzqLcSlI|m zGc3*G8Rh~GD)9nCZpas4LTQ&6^}#3vn{u$Ub;(6{W7`D7Mb^X80pn5D+b3|9E^sg@yep1N9yYFs}eLmk{Zdz`(!iGkCn96#17^nQ82T)jKvQtDH9)vn7Md9 z2WDR+7XdSx&7v5OjwHg7XfzW)2Bx&Jpk%5)T>=awQ}I$D9V^j?Mxv?6U>t+m!bEV9 z5`X5b|5`J9Vd$UsQzov*D00Ce?_Z7 zx9yz8|0WyKZD1!&g>5*f&q>ar$`NVlb1*C~Gk zzDy9Qb)x)~ThHH*m>v@$xW)OS+MuRF1Z|!2ujc%#DHsyv$5*7X{KpW}V!do4Rd}~KVd|=?Q4iR<`RKKiOF{l90{DU_{5WECCF=R< zJ=7`x5Z|Br{Pq5!yCadE8}3d!4H{*uU|AWCl~8?79VVPNnU=&T`!-SW)$B_h40*Ck zG13f>zt74B44{)xP6o^?2N5w~{wz3e5^dA~+7+clch7uV-_-XaMRv;CjCdXVGwnxC z^s{;iFTOchLKwn3dUtoU_l9?Ockk=kAKu^I(c2X+zVE3H(>|f99^y|_BDxQWbbNya zm*IP6!PPOP`KerFsya`&7eDI=L{gnpc+`UB{Y;{M9-iQFg{!_TXPn~L{#pR~J||M~ zf3j2vGFP~o|9Zw%d{*&a42u-5^6q3@#o=QHFWPYXE`7;{Qy>0f{fLIM3V98u`<3XV z#ftM%b3V;D)oI^#AI^eb)^K$)zhPX>Yl8LfHG4HT)mLS&*6BCR{dh*Nm^Q;gt7D)`K>j?CE=i=s6Al#e!jvhJVWV z2@PMy_#x&rY`@>tdUz?jOU literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grterm.o b/pgplot_rhel7/grterm.o new file mode 100644 index 0000000000000000000000000000000000000000..6d1c7da693808d199485caf6dd6eb12b5d4e7307 GIT binary patch literal 7424 zcmbuEe{38_6~|}q?BwjTFBdy$OPxQit!ZpT?(D=#Ljv(7jh%CIX+mOy6jZM3_1@ja zcYD{pHJtrN8wj*6$j~ALLKG?dltDs@K!QRf6j2I+e_Bwf${&>efr=#}eu*Cv6ovO@ z-kkTIH-KTJ+nM*B&%Am2c4l^+JT{S^j2MQ{#Slltx}{YiE_biDv$B~Lw~HMjcj-nh z_t8#NE*%t)j^tMIgJZds>A~cWItI~E9)yGWmE(isxt0BhZ;zINUOyGMB zW2ztN#9csV0N7?2UEmwFWFG{Kch~{J<6VlF%xNMbjaytI`=BG*0b}6K$7NgQRkk~% z14DKq5G=+s?*U!0@4}8QH7T^7gcc+c9OlrYvEK9V)CbVt26oB|Q%{Dnn^E(j9>Uc# zPlm-1uD&yr4OdTv#;_UnZ0Ky8QO|{X*o-LFYWf0{F&3CnM|hX+G*wi$IMG~RGE zJl@lxF>sak#>2P~)_1@Qt-bNyD`9tC_6F1J~8 z%DU}kNoKo{43@h=?|vOF0#6AM8JL7?jM|5weZEKPyV6hrmOR>Szm^rfIPX04CGZl1 zqfPGr-VcI>KP`92Bc~US7JRfMZ!=K9yH*0pz1Kj&AKA(Cy*~pBe_Dwr4e1P{m)aI} zR*8$?Fd}B*Y8d}W^ukrXRp8h%GG?)nsW+UoRnFAC+6CM4GY!XmBxBX8)tZ}Wcvhxf zs#j|M{`B7TUbKZMdA{vc(?xt6mAtw&Um8t2E_7h&Y8|9IqdOnC8X4IU>4X`fCkek% z_$lB9M0pY{<&{zA#&HtW42?jI^>)XjBgDIWUIa78^^_ zjoF0i{mz^ZRne_T-wmq*7G?>Nx@SYx@J&QYmRUzpMPXUBif~-tF4^ADyyMQj3jAK3vYG-omkEsy0og^JXF=D%$GTLVF9fAVjZ)$i1W0CI5ymt zxc_q9WLnFnQY$%@SyA^3&S3tgOr}$n$*foWIpL}Ri*6P3+f+Hkj26ILa2?D`y(uG9 zD+M#Wh-tTqE_PZ)(}Jpr&$;BynT@ivYKAr`<|-Hy5-pwGws_=U!>_Vwv&dz%F`$SqYN^;y{txc#nt_?y>4Gxg7nq9MMgR_8W!cr-rro2HA zB8?m0h6JYFns28e5qn_aTJto{E*FX(_@UeSzp50B#&bb_?gTt#sm-@H92jk704%N{ zaIsHeIaP_BP~$xM@VJBYdr60POOt7H0pBmQtw4SJ0R+y>@0`0@F1ny~q^w12bEA1r+SU|+C}T!;AM z&7h{+QJHaVt=G}eNHD&z45Qw;J~+^dZg?B0&S>lI128nB0{-9+DN*(LzM&^7cftl4 z{9uMRmZ-p|ys<iwna94debo=aGhZm-ngj> z{^f%O_Z_ZDt-l>bDEP$j-n34~seDqwr!N0+0uJ+o=i}ethec;r>sDYNV87Pif(Dd3 zRkh(PxSQ!Z?|K~i(f5ex0phj)-E^=VWBNIY=M>W)C;J@JUm^b8q@zi$rK0}GSwG8k zocMmiqT@*@Q}|SC{TkUzRHOgks(pfV%@0#NpS%T+=Q**|6cU&(%z@vCJ2hVgp*pBb;` z`zPa9D4uT06L#bNS|hHXbe;cS6Q5#yjO<~?=gH3j#t)G_&Uo!N&-fhKGmL+X;+bW9 zne2JS|AF`>={nBlLXxNZ0EpNBjWe^?KFsam|;BA7%Um z`9H$^FB5-)@kfZCX8bDg4>4Z9BQG%iI`Iw0>+|j+zLgXzyxoPTG!{697r6Qlb^43~`lhD$O% z3w>DbAziPZZ;X?k9zvP|$bK|Gxkuky`)& literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grtermio.o b/pgplot_rhel7/grtermio.o new file mode 100644 index 0000000000000000000000000000000000000000..d36535882fdd7ba06a0121c6bc9ffba2af7c9750 GIT binary patch literal 3032 zcmbtVO>7%Q6dwPyF(q}~041oX+QU*3L{@eZL{&;-H%>By2%&z1Dgm zE{a+z%N46_N+m8Fkm!K}haQmVp`s8)atRd@5-OJpdH^m|w1*;us8HMR-gqY&FZKnV zwDZ3Ay`Opec6au~m^$wF`3M&u*-ths&JuDZuz}+Y#>rN)g;4ty`8#SC{YsC$#G}o2A25}m-@=K`Z8$hB;`1@ zgE9h2?W7z+bQn;sF z$!uHaq59S1+g1BMGT0(vbi&!i8lu{tlS|e!#Qvex@B6C1QC~S8tp9l8I<U=1_%WmYnd=|9od@O&!^m+Ll(--7VnEpck6f`|~88>fC!EBr!XJn(3=K@wYU3wmz z&Cb4N^Pg$Z+O3cnM{AcujiXaQ!@T}*cGUhJS%^~YDz)!Z`&V{TR12&IgM>8;+{PYu zqjqQQ&DhN+sj~?;qE6`ZCqOUb3m|TOX$|CNh!?c4!LD@X)dqx(nWkY%3ufNRm$H&& zNLe#o&gHd=l+oYHYdVB5$(n|xn|q~c-7Mxy>4G$$FX&P!UDP4TkP1dAt85`;Vsvz` z)HiYPXumY93@gt{gVESvbSO3?^&QbO5=~o8eqgA-S@&VLzVGcL#8-{@c6N7#&O-k( z@Q=H`al9WryyAP$e5Euv)7 zR+=btl?qWz0}Tw1DSL>b8O5Srf{+pnP=Uz|RIIf22E<{uo=eS}FvMmv|6`RP7ss^O zQzP!$_s}UwP{0Ux!sX?VkHAAk$+`It0!E1QMZx)_?1l?@;g~_1#PPFjBi_B9h8V2* zU-M&-i~A44B?{mFphyDd{kykC;=mz}!X?TXxBmf=1kCfeo)kDS^iqfW=XpH#H8>XksqU=g)6DaNgNt%B)M~&=ADiKib~jF+9}O zOe(w1ZZLTd=;8Z60Jz=$Rdj&7-&E_XcmH*V2Vh)~{J!R)nHgAriml#2+fJ~*b`wUP z9lxzbzzPue<~^Rk`t&y(I2Y2U4n7y;`d8Y$k z@4%n#z>};A|HES5P&A^bqfuO9K$d|`k<^5G=s-eE9U32>8k;C{PXI>)YBPAUSP>(9skK-YRuFMMnwk;|Gy~$zm<|!K1PhPUIHTnv1Gnk1Ue;T zA6uJe!B)U`@z)RXnZSny{u_bcCh)%rJkF8V>2l|cUxHX?THwVxDVN93AI}_KCnLo7 z2>hbJn%BTPU literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grtext.o b/pgplot_rhel7/grtext.o new file mode 100644 index 0000000000000000000000000000000000000000..90c889865741656db0fae1d0f925ea4363432c0a GIT binary patch literal 18768 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grtter.o b/pgplot_rhel7/grtter.o new file mode 100644 index 0000000000000000000000000000000000000000..4c990ff3f161a99b77d4ec02e487a69983218a40 GIT binary patch literal 4016 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 literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/gruser.o b/pgplot_rhel7/gruser.o new file mode 100644 index 0000000000000000000000000000000000000000..d502f371cee55ea63b4619fc4f2db21a553435d0 GIT binary patch literal 1696 zcmbVMTWb?h5S~q?oJE*G?Mk&qnBjZ!2mv-zpfo@};ZxV)XXZ>2A;{cHVp3YA<;G zM|XVS`g-e*e)}CjHkG=pPG_$#gwzB}unTG|5{*UT(YQK2XDz9QY4`bXJcN~}s62}D zXbzNBzY?4n8GVj#Jd50^o(G^sI_dR4bLrl|Q@8F_n;zF=Z$S6@lipDt#2ODPwz&wb zVb}Y*EKuEAHkoa$+Q61f+XS}QXaK9%$e{2jivlawDiy1WA=R2~F>F8Fu+8EFjH7I; zT)0;^D;6(yaHV1@t?;np3XR*nw@N;bgb4=mI62~P@Czekpp4_8I$}HlB2muZA>K`f zBp)R#LuW183*C9p{3zy9{TLouM1AtfB5a{GbP^Wt6tSN;2n&L1ktg&F@&e1DyRso+ zXY5^`?~-B&{^GXb;AvK}+(g4UQ}Va?{=}YWf0Qfo1%C`V=j@RJjW=2*LlS5IWIKDO z@EzXNMV>H$+!!8b{UgW?tFQ9@&!b-!XMNcxV~X>@_dS^t*gbS()W@(+h#xj#;tz={ z_h~nb?6Za8{`Y#p^k)M9y@wBB5Dq@XlT!aJ?mL0nFU1K+-|sLUO7)e7RcA$Dxm1K( z1t?^5vq?Qyn9XG7)A>SPPv+7EC|UM$t#rSNcTMt(X(F`KKYM)<|E=^b(2fPKA|@eT H{!ab^@y(bl literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grvct0.o b/pgplot_rhel7/grvct0.o new file mode 100644 index 0000000000000000000000000000000000000000..1915b4b55dea75cee75fc08cdc40a80b279a9d25 GIT binary patch literal 9232 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 BbesSH literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grwarn.o b/pgplot_rhel7/grwarn.o new file mode 100644 index 0000000000000000000000000000000000000000..df7046c30236a230c70d6dd7969cf3c06de7a03f GIT binary patch literal 4512 zcmbtYU2GIp6h5=Fw1sV#{)rOQ?8DNurp(e(lwg4V(Qe}^4HT>i$vE9kw@cgEb#_XN zQGS9yY>-4FF+QMAJoJGW-y}p55=rop2YnUa02n!KAX&nNF?%G1gF=`+9H zNAq;~LHV!rg(f0iBX{ZYzvbWWQuqBE-l_Bj-&?vooNTx?oNR6(#wwOZY`h+^ThSym zV>6tL))A%ri|^vvdY``&-xaL~Ja8e~Vn=0mt^966G(QEWlA0X#0S*~Nuh=}VeOKI1e8oq4! zByy@flE5H|&YsEc-hr;Ix+Kg^QM&3n@Y{m3_?=*2S*x>j1^#dzPYkKyw_hdN}(M|9@$*JTW z&(7Iy=Um>I-qY6wqpuxKj1*kYwVXts(PzAr=-uAayM0H`jzs4{dpeP}Jb`c9(FHI% zG_*U>i8fu2KyH^S(%wD@+H$kDrLn%@W30Sq5vPa5U;UBz>F7t15A?Iq$n`j8$0(gx z@T@6pJy*1|thx5QW%%ncrY+9`W2#gFW7?it%$e5IlxrUc!{-Pn@5~gcfcd;*BTx{= zqNOlB#x8aM%`ejG0DF2iQ5VxSNVl;e}PAimqqJgKer8r!#&q%yO;_5lo zPUH|#W6@3^pO0(bgSKIzI6fXzRibi-YuGPIB5mHFsP_ACP+b%8S2hZ()6#(QN8d=z z-(kd5pJe%`1ed525S2TQV`1?->9-YyzZ1o$*lK(WG4feCyiq5alYn$1Kzyt5^AhW= zFobei+V4?tj?aFUrM*If>(c(RGQf5WpQ~YS$%1;0iLzDg&mta{zy6T?(Y1!>&w2d< zG1Vu9Iw|9Cr%pgr?&mlb7JpL4XM6g7R8ngED~OR#=Ar7#S2F%Z24u_ex%~$5F#AC{ zscrvbe?!_UG$@2EDunx^#MJsLO8Z@kV_rYQw^0cTbuQ%l(Qgpj^Yg1rl!Fwn6(2P|U1`JOC*=A28IA{qzgrLs(}@>_KOTmS>7f-% z^9Y*>;b9pjT-+Ae*P17N@oJ$x+#1L~|31_HZmy>KJ=%X^_(%=>jT-pz8u-Z? z`0C}}$PD$!o(bk?=D^@U#yl`Ga%lgAIWaJp*^g*$M%)@ry!I3=*EaDEly`E0fs$t~ zxp~hHKy=M4&DgG)oy8ke*0Wsww5@0_{ryk~pHoz+^pzOr z^Mm-5N5(U#ldzwEq@SXI{fd7Ib>_b#apv=mcrU=;6ySdv!0FqvpOpX}8xNr z-|MK(g1e1(0O3^iIebXC;uvRpibbNHSDa7AxgI+N-QSt?Cpk;ERM`Kx?DOwG<3kdE zQMT+~cJaRrLKx?`uS%T#ydwLr2XGo=IVu(AGtO6Q!s+2Um<#X;cVvG#fKxs>-kTEV edCG3(gd-oEV;W;!#i{m4R6hwH6?I6p#quA|{l{Sd literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/grxhls.o b/pgplot_rhel7/grxhls.o new file mode 100644 index 0000000000000000000000000000000000000000..439185f339325d4ca61ca0c885dd0e18701ae5a5 GIT binary patch literal 4608 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 C(dCZ- literal 0 HcmV?d00001 diff --git a/pgplot_rhel7/libpgplot.a b/pgplot_rhel7/libpgplot.a new file mode 100644 index 0000000000000000000000000000000000000000..67c6e2b0270513a1f22c391676aa374d41a6fe85 GIT binary patch literal 2104724 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%0ARoHeV;V zx@pbedQ;O+PzOn>I`w3BEq9wM8?rS-qq?+ywYjhwqq>VRs=E}Ux{VmsZNn8aL*9{2C^bJcE}0G`?Oh(n)i;4i$i*%b&ZfjaUz?eBSzJb z7Yi&y;m!F}RaBA-@tYawjt#RaO2L3di&T9?PaspyA~lPiT?v^PDHg3<>O<#yxkEv# zyb}Cq^;Nz+_|fycTtB+Nn}?yG=X+Bd3VMN8!cfqKUI~8Ge>E4~=&N79gmb)gHWYM` zH@|+=pWk!6dC;is`G%L`me1VPi_*`=WgqvIy5_!YG#E>Z7EgMVK$vlLjqO2b&ST`o zT14~t9Xb(@QzixTO>IF$*|*n9nEiwixM`i~AeyHWQ3rhR?WW8hf=7Q~5O$ijL1+nO znIpUL{cy1v)ONO;&i3yr3no%~GAxYLC*kKJk~kSZ>6MO?+Q^4Lfvv9Bq*=tqEyVDY z5CGJ!1sI<6c|!2V{zEUGw4HqT6J*Sxp+oZzLu`Z4OXRcUKFA9o(WBn~0?3oYb3VcqP4Rn8E;({U(v9lwS9GQu)x?tZfb3bFRP^mUiDTSe&?|hb9}i>hLcS5 zpGTg_go6(2@cd@ttxU(eIc$mhT2PsZ*Pf1dCVw;TYu+&vuPYsIemdS-PYx}ViMKi( zPmbdZ(}bHgrhiGGd@4qQ>JM>sWT={SG-iwP5k&x|IK?f(JTsCr zC|C9lc#fXo`Q)?TtL8JFoMwe4`Xa_Xqs9~hpG-DV)cEB`(hHiguk++ZnuA#3Nlcu^sFriq*>$;e zeHw-~VQgNbbhqmDoP~tRT(P;iFVDL!lr>pAGh!x-|6y~*?Pd@6Vj8BMQCv!EHXZK_ zIr{N``f5&kx1z4;k2(igri^{MA))ps%jB9%eg>lmWJKR_3b~PvG*j@yOrt;G+-3qY z<~9v5uG2>Y2$`BL@ikxj(dr_7Z6y9BDo}ZY3W}&P$lAjRp)Gff=Avt;^924Kar{#K zneRqBr;BT(>u(WZS|;K>VLoN4hX{{jG`E_uT!o7pzyE*<EzggHiYKTTo2^zY#G zB|g%_=af$WYlK0j@W^S*lbn7sNBv1Yo*=d_{(I2*Cv$?e(!UZ9ls2b93$ly=%?iH)!#Fo>o<|O5?`(#vZ>oH$nN9(zXp$EbpGMjc?W$8 z6xGOVXW{T-zD=i}YcBgme%byBLL8&hcY?B<;QcetWuq`dnX^W78*=Uh_nydojwU}O zNX#)qpW~KZlOu$j5wjb5HfHBsxp8xX@E)fDY6r2-xUt3td^=@@N6f5q78D#qUUv>% z`VV-H(SB%iIsra>eh&Ns!rgVVR#P|#F3G{KQ+(Mo|H>SEe6suUb4?EX`W!gsQhjpn z&w+2tfqyFp{)-&=?i~2*IdJOtGvhkl5&W{z=@u|9au5z9>j~kH)1TyLy2D4< zn^r|-udIVa@F5QW66S+@l!LcA_|Xo24dbv19Q-M{6y(?AnHMz01Lmj*y28aQAvi`vq|blX}Cq0Sw+ll6Ux}MF)e= z;a%*da$W#|%o=MMT{{;F^pyEPR_VGt|#2B@-zL$1pQIbB)bsQFVlT=-J162^s(dmU!3;)`z5 znTjv{+;bKGuk4rh6JF%M2*SxUDE?tw|Lu$mKVj*?HHyEE@gBu*WL)-@kn*lz`5#yO z9_D{q$(QxxUsC)&=6_xB(Z<0%rT9B796YD^cqhT^Qv7}k2d^l;r29w3w<-g4wvOVT z&*dG&xhUh(@_ zzFbeq|2XDdt@t~c->u}|%K6!(`2EcPh~m#-T;5;sqCTU{`-0-j9{mp~`9Ti6kqxZuPgpe=Kn?UKgse( zaJZDWpZ#*yh1@?FgMqa zf`dc;?^q5_(1wwEzJc)_3SY(ew;ddEWPc{vCjc}gDf7QSWWL}_Sq?UbhY?)niGQ!~ z(VYL0+-a74?qN9v3YYJnBNe`k{qiy;m_IZ1sw|if1GYBhfDt1o1UjZKBdo( zFmY>K#vrtuI3kfjwmIv@k9}K{4W4}tPKw88oiu9}{m#P11~W=Z=FFZ=_DLsM73m@D zbKoXeW>PJqKJcg@eU3?KW$JI0sXwHiOY}Aul9K6fP47eO*aOwk9?}mcdlcE@pQtE2 zgp_%!hmog%?BQfjAbSMa6De>K0w<7XGT9T!oF{`>w`~m4%TM%P zJN7|b7LzK49YyNY&m~f?Ri%Dqpzb%vZ^Q6x?3^7q6l3k=?%jt}_Ex+jR8Hja@yhPU zLX~qL>wJTBR7>qi6+4DD32N%Zo{0#jo(r8#n6ynVfj}G8_F`|_n zqtiN`IFNau@n=w6BvnFxu95WjHy3g;Me=1;zWH65aBJ?ljJfRrc-2glF)&~-Qh(ML z1ZR^&*9pR2I?0LcKyH5Ys{Kr+D5 z#}NE(fMhftH>mer*_tfzyent=-<72^W>5&s($VYAs5&zo%G^Pr;JpK$M46-RR zcA41|$ej0;NTl9Or2atXLyeS0F?F;YXZ-q2kC9}8^XT9&^3%~@_*IQ$BJ+6Nto~y`MTHi6saXg=J_J= z-4AW5Cthgnltk*4MCwQM&dgdfvb$Ai;ryq(lgGS=mQi5g#^}uA z3_APCZ0X~y#-JNv%W7)O|mu6o({~$DsM=df8H*#Q9 zkRx`}9pkn`fgxW@7ldwKMUjSM;RQs%49B_)@t8(NFOc{Ii88IsfTa-oLeEA@&H@R` zt?c!o^S#`mpjBQ8ezf{-UmpDEd0ws`UEs~bP|)+esSO3az$;-W=t8dqKkC1li||o6 z;L7_Yoa3#tp`eSr`Sqjz{GRL0gGOz)HM|thOlJAQE9qzBvTylHUGw8?lumWRnutli zB{;mf23?XMGy$`f;mwP)d<(5_;v2+FpX3C(m{TcWObBhWd544#Ka-qMcB8L&@it_Ya~+{U|y)dTMml@=jX1 zFd;mWwgofQMj3;tvKD2sGwrr5HZtD9p#!a(((#h%Ii^vjrANF~10vvC!S;1AaxtHL z)QO^^1UDL|oqkJt7_tWt_-URXKRaRtBD)+ z@U*_PM?pMmvn#uUmQj~q-tKCOllJ+6AK}CI39FUARgG}g0EbYscl*FYeFmlY4drXA zCf{YwL2803Hf6CnSs%1O$$X$rc=p*o=9ZxdUFOUn(bMQiuEse%b<3>M{jys0%)78E zfRFWIrEjth)=@r~6Nk}b9k^v>ti#-<<$3uxglR~lJ3=EIkx(da3L)j`V|s!ik8#*N zziKbPyuD#n*3mmnEz4T7faa!_22u3>XVLJEqfY5he;t+)2BRN+YJ{^)t}&H6_=5E@ zdlK15M;aFSrk}>R?rm1(XmWJ=xc-oNpz+a8`jV3LU#4)^Xl?}sY7G1m+m2#^c$U#z zyg+rC5Fx=65wDxKxYfZ6@OOG`4^w<}!AJW$8 z*AfPqTwHQl^KDLF%hvuTqU$_C!ZRGd&5BF^YA&g2dE=LHMo&z~v<@9VNwCfnnAM*0 zk0o4}{}#fuOvLYGVhKEs(cBb;`O5JV* z0lxUV=))5RV>Pakcw*mAf#P;~<1nD&F`D}Xae(Rjhfd=(CSk4guasYaN66u;zuP?5 zuYkA`U)rDXgz2^evKMpu&%omtoqu26K`&wjsv<7fWWw_4Pp6N^+n0Vdx1ZG%?i!uG z8|J#fd;7-}RpZ7Phzxj}*nmj7^lna3e!khVVZ!}4QN(_*C^qDXR#JA*(DkKprwlZ{ zJ;9K3cT7~?m-`wM_30<$`NjRAO(_9ByetQf=f#yT`he(}*)JLE$Tfy)J_k&nQ7M>`3l`Dj02z{f2w{9gkkgU1KYjNoqoB%|f* zwXl(cSEul$UxVx9-mPfMVSvMZ0zX*%*rxFpKq7kS@bTja|- z;%UZ(-^>0VDL(Ewm|s{cE&l<|&+Ckf{37=MMe&!ge+0)9euD8BGJo zqxfckoWf=@F8m(mzen-q{1c4V!wA36dV}*6U%ss_Q~aIGm+K?>zms`M#qVeSwMza+ z8NW&KWlZEliZ6#A-=X+L?Ej47U%~R_x*-_%kCb2Z-6a1jng4Aizmfg2d4urpV!oWW zA@X~ezng90|B?NoKQH_~#zkL7_&;P^cJdegPR8Z@B;nt{`6=Y~L-_s7KY?-Ki{954Dcsao-+pCkI(B0tVN(SMQrBp4U{eBrO-{I5~+8`-~sZQ)Pja(z(od)WU` z#kV7ow0=(U#ecuz%lRh{EB;RQKdJbf{ownG-_QOZD}Djz|JRz&ox(ke|A-{O;ZmPb zZs25OS?Wj5N1CMgMa(~vapAXcevViC1oKZ+{9iGDp5iw$Up5gD`Q6N4toS|5uT}Eb zFuz6d`$aAz2fg=ey`%oxoQ8d`2EbkTk-j`Jov1_U*mk<=g5&h11{Ou75}?@ z9iPgg-eVg<7ZiPpf|6V0W z&eJ8y1s$hDt|Dym*!^odQ7Dq=O+cfd z;#SfdxM+QM1>IA7VvE;zqa8L|ewNYhpZQfL_~!0<8+>zjp$)DotRUrs?w2Xy_Di@t z&`+@H2*uB|p9$TAC}phu6r-1rASdZ1v=`Inpvdlm)L*LT7$7?RrwW^kF2vTMW=JS| zchEED{yw(;MdFu}Zr&^JrL|^K6FUIfl5fO1I?_F$GlMF7&l-k;PI)^DdWNr{CFz1r z%POcT*_5i(UlXbCRHgQALl#Y6i;9#SWs0+yij%n)s3OWzHyZ^Iy8Ps;AfHkH=zeUm z)kZA8th@&0J_vdfqV_j{FPp0gOIhi#uZl*`dHo~|c-$o6L?^4re9^cG%mm@;2aC#{N(iJ{hTsp8=JH%h8X`wc>YZ!(C%ExsvQ{XrmZTC zYKIv^aa239{kzHnlY2;=fS)yp8nK%xgaMdfv@Rz2Lq@W}k#ju$6XA;n1=GllKlVrP z;^*kNgBYGqEl!$C3-ca^!YsB;-R%tSl*IXH@ihl7=YxMfVjx6$PS=6^69Z^l+} z%NoN_utc1)EI1OZ32haR)HU(m$JH&%d$F&hxMhhd(ZngI!W(honaUMLyi845*D?kq zMcS3JZ=LWLaXbU+n3oNVdABd--7?UU7I5&c(ZQ31d&`z~6FuPb$!BISW|)m?WvT)_ z7nznoX^u}vG94X2#z?)1Uu=1t}qXaPL@#_I^Yd1S)Ix3WQj}FekF-Cn^+#W8q@UJWgXMo zI+}{>8mG6lw_edumz>_w)Ut9q7A3W|Oz&u~o8Gp(t+_RMV)4x4nZ|GL9%{n}rToMS zXt<*38*K19ULHKp z=aqJktjOCGikuS8DoldeWb0^uO$pJ_2sh1N(_{((`w@QWM!ENT<#I- z!s`6z(v>=lJDg@<%#p0)Cn-$l3G~-J6SENBlR;H{1Sot-itWC0()K znJ=zvThbNu`{V$ovKhoVexnfCmiiO;yX5fIe<|0$d;jB|CGiCxPnfzzjp!au|0l+m z`O*3JD-%zf$iA4&mas;!m&)#;}Llmoo~)3vgdl3UjbS7e~^ z?GXu9#ApNg_-3RcD*(-(tAi!)VK9AXS(1ZangcJ(fhP!eHw>OtJcptSCG9(&1DF46^22Cc_SnK> zg=b0R$noirKheRP_<_-Kp38xc=jRo2Fjp$_r!lVO;GGVG>+N&E_2Bj zC|vsb?_*r&vqs^P&lV-8o&8-7j=C0eJv&e?;P}pf`GB=dJp=zY_J2g--(ml!6h4K^ zi}xsu)IZ+UF!x(4jX%i#udt2ixNpTg#txAq>-V2!T=RdV_}^szuM{8mBh2g8O6TVm z_Wu{#B46G!a^FdQ_ApO$JcN(-2S#+fgfF@j$AU;k_-IdHM8`|`=+D8NrudB(PU|=c zUv$A2DSi+0MaN6{qWf~C;`cE>$+++f8Gpax?_^wbhlJnGybmjWKlATU@^5GSUd6Zb zZM651;>Y>9+oAYH>=zv`$4DF$*_(jYY9WUWayK}DMCzvlfUc#6DeS_jRGGBDOgfFAt*C>7u z^F_x?_zU=c+pPF~%oiOm;mbSw(~7^7`J&4u{4-g;=yIj&pZQO+9O0vH1mo^`hyK7H zSdQp;!ONd8pa;8@oM#M5E1;cxy8J&X{;kZ9aK1#o=!zZAxa4yd=jS{J$NOFO^>KB! zkpI83{H2Qjcb3!O;NU;Tc&md$zU;xdTH)<{|92}~_N0{SkNivD4_W%K!$-Q;ak`&S zxU}zIPwN_jaPUU{Sex&2si?+cf27%eA`NMs<} zl}}$6bg6hV$ey7maz<$oLe*df6h+3KYFIaq_@s17KW4D|` zg~L8C3$f2j32AS|DICWRFUCGEOGRrd^`}fksFf9#n9f4#amauM8)>U8K|Lkvc91&S zu%$*FjX;P)U?J=(I_;U{*3*H(q|HT1;-F_z=c4^@D7sPX;v6hUy|Ey*t19&u=#Eja z`GiW)0mD-=`Jgk97YA$Kx8Ws>&jhi`H>*-VOZ~Mf^_s~V9kP6ioSbYjMn@DE8Le{( z&L;)6C5eruwMfkywtIdzWj6$nvQ!9r?&Ha^-P=RtUGhpDX>(Ct3MtiikUVS~_C<#~ z)LFnvUa9I~sb_W%HyKQ9yuGl8a+TP4PvIt%oK6kD&Di%8-eK%774{kXp~CyfPQ3py z#M^OTx?lS_H#vPg@yG!RU(t-pmR0zI2AHGp1^q8ar3?CB5=u`H^uHvO9zvu4B`RNe znca3`R_Tj$zl4pWkX;=xihKwig**aBAuH`KLMCREz9w0vugQEA@_K3kY$F`SH4daF z2lqfT=-qct8yJ^%;Q0eJLzEtUA4K4UF|Ej(34XM?*p~-CdY+f-M;CbWFckEBZ)!t9FYrnj3cAoM!H@c{=A!rd z>enyf9B-Ws1zqILuOId2_grrtG|Kx>EyaV7(eJ`$!uHO-Y>}_jHOsTnV3bkWI%+k+ zkw8&9~`zS)p4v)Q}6IJpn9&KG)8```ZOsBlr}Ya7DT3%>cs=vTt$6m&+nMqix2wdA5m=k=uWm5k1c z&I*@W^)Ay$$0?`A%wQV|UgDNT6h1{Jrl+}~V4*-_pTdrvY~z4gamyGCDG$B8Rw9T! zn;py8rc-FenHi(GK-gjrGPzv?lIvm#8#Bp?Q?eNfE|g@%E@Fp__Mvp*t}qV+M!q+{ zxORm2)-VdDxFrEo590ZNLlpOujCoGvl^n@s^IQr9*{(S>6z7xAcFqHgC5i$QUd@A1 zV3Mpzx?-nwQdYFoHL+9{NEYt^bTIXi=)@$e9OQ1plx*mNzR-S^l2+6v>l!(inA31~ zU>dkjlY3ULtvbXpN=a``8>!Bop1WU_BFi?(=8cmKY2da>xsTeV zql$5maaUVAPV;4*qpS^=4p7s{wp?^$<=m!;4$@kMq_Hbh4PU>5v||(IonZ8SO@)NX zJchZS8}hbipVND1=pTDduifA2fBH$hanvRKnVvq`V#?T|+Xi~QXPI2ON6{&kX1`nP zJRH(7-666$IOpEiQQNv@r3H^p|9HY6(|#p^Va;IUqao#%SfUzR;vcB)(HzbYnrGMO zw9vuPWdc8+bqC7m`w#|mi?~L*{uU9YWfBxT%*4Ckag63xQOvbyt`pLSNS%Hy zVUVdW*HR3`kzvbv=vSxJM3~MK$W0vaKUJXe2AHeT7~-GH^=1ZE0I<>AB;h(wpf-BS zkDjtFKi;=mCgQK>^h@AzjOL~&%$NRkoW8_I{bN2;r!Trk!jq)F#Ocf2iQtmH*nJcL zw~l`p5+iehwbH*5Pwe|CMBHf-InLtvE(W*eKEas2e-a$O43Qio9U|A^bBqk((SGd^~3`t}YVlUtVLkn$S!=e~JAcWgGdIYXPW_aY^@N zzFuEuT=O4R{2lE7mg38O_S0Su`d5cQgN7#qVSOV#b9(mGK6}-^qB3;>)+B zEWSf9u5Ul{*DL-VjLSZ1!k6!#e^>nXa{fQfxbTbEFV{!%e+A2zeO82@VEz+q3x6f^ zMMqNjjm-OhivMZmzrwiid)WUw#b$Z&&e;_HPUde>`~>IcPR51b z&-~9RK7XDB_bdEGmLunH!t3e;$@!adT}1cwStnhWFXwLx|0CwA1i`NqUv!A%V@~)d za(+g0Ie_DRE&YZPZ`?zx$GkIQ?m)ZqjFJoD!{IOIRY_*o7P{#Q6ZuI>`>xqN>v zb@-4Y{Wn*434GCkPda?ym$Lk89UOAxy?8z2pdraq=nv*5gqTUeO_{OF z=oy?4B)VTsurAKVV8iycO^MrBy{CK4^@Tz5EYd@w@?3Ws*|Slg13lnsqp5V-#_7q5 zO@+t+j=VZR-5uw=s{z_Mv~`nc%vkN5k&gZiRf40vgYB3`WmIlPTa_C+=Sl=XEsC03>maGvn9Jt;gl@lt5;FA~z7TjuOCUwbo7;1M z2F=cC_fuZv!9Lcrk{<=?(>zp=Fx04 z7-=+U^1e@ScyntM(n8}f$r9e&nB}XtzOgSDW*Oc^S>|ZMNB<}N*v;Zuk%bx=5@okK z!fVPs#VXsst1K|-UP&VI@RQbF8HaZ`{sgw#E8}L7I9ytWV@7)grM3XW#cBgG99&Mnq0pOoBhNL(WAq|jkXHLRWSEv->o<`dp`NBz+i=O+VMlQj_w%Z@##qB0+P=f`QQ@2*!$j9 z#Z_XkiPr>fRdjYVv`@c!`qiz?%}rO5v#s;;=BB#o%bI9Ukn}zvH66`!PM9+r*<5Xo zLwZ}zlyb8*_x{y>^4MRRV8{^P0S~mf>j3=4fv?8xMd^Kq!{KNJ|X>Vw*Ew%~?bO*Q4 z+1a$!i38UDcW!?Y#8GGTCw+8s8dJu$ezd8v$TGQf5VrB4`6g!Ln-}Rw!y$8k(-^ni zKqiy5J>$%B>GaVgLFR$RM>~joX|tVy=T(5_R#3Rc5am_|(Ym@ubMbmq6hlv7!iCIs zemSE4aE)~REh0?IBq(@4U(gghj?vs|3iG8OH5=n*bVZOp($?wM5(b&>cN%$vu{?;P zWov&6$44C3b3_lySV);gU2yCeJ3c(3Esc14gsEofhJ;V*oWgP4>S?0u09~Zr*nW|9d|zw zd9UFz@ukj^Q$#-BTt4n+A0Km=F5j8sPj>_1$UVm|Q}(hih}{o_n*lTKidvAlZQPGA zxc^-IT!Y$s8uzO3&A5k$U(b9zgQyGPU&*+ZT=WRw*m}fq~$c=hNJ1e?-{1~M1 zZ!%xX%&`H{Iw(J2vr5A%;weA%Bt?qA{eG5;jRpUSwbOA!7}#uq5Qe2d809K!Esex2ff zg7G%Sg>MH;gFx0XOL-6B`}_vQFJiwefe?N>%fDUmWlrmpj0+z+pD_QS_>JuUn&N-f z(u19f-@|^H`xE*7jQ>RO``G_0wuS#K_Wxe-B|W*G!oP*{Gn(rO(QyAux&@32|8SNo z?T7HA%sW=`yO}>n$uDC6X^JoVOUO>kB0s@A+3!d4BhUZkN`52zuT=8i#rf${{2und zU-9KEt6LPmkNqE3d^>&?1a~X`PWIoc_+0(LgNonJ{vC=xf%7kOlu|#kKgJIge+>Ko zlWpNgxqV^|ILxZpSXsP zW9wn0o<-M5_Uk|~UH(@U|8^5Q2xQ+;;mdvV6U9H8>+MyAn^pWI>#qvGg!xe}H@vuI zW^lUs3U6e5D&tbF`&rI(g+IpldlWAHu=xuAEc06wem|$XLE)kU_1`#m+u=;z#%Ihv zY3}UOSu;v$hIZCTvu4rntP+~5ol#OUXZGxP{G_=j4SD~HK6KF7lo{LZU$N){n!PPb zr2Z?l$DP7`U-lGk=jd&SV_w8GiEBPEQ%efpfr(r?5Q(;mNWG&FyH~uUGS#2nHNy0P zvkxAk3EQGeF5N-j%Hu=FO2&I6UKa!TuvU7vT5M- zH1DSHRX1zrh5K^J-@_)-7WT=Yp_{rV-Gy!4v;f1gZxez) z_8)R_>?h>IpCDt5C=|mWp}-zTb3Mrq2etHj(B^dMCAt48-O2ZSGrGAueBy-gNKELu zI)Bn1akn1mqzuCNPI0jznQ?wv?=C~DGBgniE)bTsg*v!c7(27wY-pm*Cm&7wcGLwo z8J8XZLQ6fEDd$x>E9@Wql(RdhJH)AGo&(+QjPqcZ&u1+>FU7)h84Pq6($jMEre>@s zZ);tK?S}ajk2=hxo^{Tm_?fNkNt#QH&n})_d{TU7$&8sLvu4bS7oFcwA5YXKEq=nR zV*_(?hg6avcsk#o@h8tdWpGf$03mdQ02E!&Q7V)i7m(N{EYJ+h@0o5r~9$dZT6HgPCh zr=M#sda&`)cAGw|N=M@FR=DO?;B(r~K$a>GET2Q_DpBzj69_|GGwVQxxb+ ze;21O@lpSnztHLDnu|W3iL&lW@*wGp-A4g%OFF{4g73Q%1Yld@iH)%jal6zH59pQJ zP|baU9bfSAgz2^iF-0f+8F(C{^AEqy zJLr87OeUWL(O=A`KgqwOkFLBg{cXrBnKP}G{?+NH1C#^2f8Duk^DU!FjC#ZqGSK+u zroqZRm(7*0METakCREJ zipT&Q`G>)?h}x4m?F#{t!DE1XU+_x-lCkxd!LPKik%L#D@JBF?W+B%cIPMBr_vFrj z1DCS^(2l}D4)EjPAv4%HaJjw`4|2GvH*#>jVAAsW`JZRuG%j<3?i@Jsvy~t43l#sy zj1P7WT=LnX{ls%Kl86s{7*C9tN3;(o6ba0{7IaD=~p8d_m9-eJ&M1Q<$qPlPq6<{#h2&d zyNch)epx3f_4#?0|4YU1VgGAv3x5y$-&FiQ_RE~E@LynD&h~*9<=x5nVO$@={~+f_ z&VCSnKl4iz{}tw+%DC|5J~>nIrCb*%ei8eZD83xB+obpj_RHS%l7DGm)+v4?`+L|H z{_C9oTNPh;A6NVk`#-1neeC~|;>Xzkh~n>L|5J+3*$IB2`2FnPrT9PR2*1&M?hO7> z@t9^zk~U|Q1WGtUCy$Q>n{72ys6|Aaz00K`QXJZb~4K!uW*^O zcGsJu-ejMI66Q;~(r%uj@GDq;mBPQw`MK1=(XWvH%GC~zbid4UHY;3or6it|i|KZv zl03+#^dS)@ZjDPHT+4|g5*gGPKbpo*J?CUsatQ0AXV0XWc9_AhkG=z$WK(AB0qdi? zOM|r~gINCD+cj((B$(H-UFA%DtG763{=a0MGv9gU0;GTbZ=JJuy{vylvmYJGie^7| zC@Y%%+@Y*!_H+H~k^QKD-SGddbH-C;8s>10bzuDc zJsjM1&UmTqZ&G|>Wa8Oh3ztmfCC=viWQNHK{RCKr$Mel3?10udp8+`@^ADMD#(Uk2 zl)a5>oYO0GJ*$-uaI)B5INL3e3G27E!~22HJRkU+^8v4T-p5ks16t#ZyAR`#F#B5P zY;IMob1wTw&M`Ynn*RycIqSz;cd&BJEnmk2hY5RG%=Z)e>rwVkVS5_c!1+^%QQGS` z?aFrO^pB@t$UM;aXbX|PHj@7HDnN59C|qNRB70_`g>{YQ;`OK~hQ5>QZ#xhC;`3(mKH+Y8A*Rr)A--J3( zi2r?#e^Wn16}8w_hg8oW9Iy0E5x_hhN{j;4RI^ZxHO_2$RS?ly%N!{QQ)IFm4Bf;VZO{r|=ERw{IH%B}ioO9KZ55+-SCgx-85c$ur|FdihU)s(uD*mnP->&%5etuK&Wv}KJ6d%t4 z%ulVAF0ZtUuQD$ANwEJ9ihmvZ->&t^vcB=3b$zm|cl~EwpDgQR2fIF5)_=ZT>yt&7 zB+f5)xj&=q*XxrvgFt4m>yt(9+qFJfbOr{yK3V3b2fIF5*2BMD>yv+Ct22-}Fsc7s z>yxED8tnRHS-(Em^~s%leFwWfS=Q6bdtCD0$PKPupDg=j40e5TH|OW=TAwWIrLW`8 zvE*OoP6xX_S#%@@yFU2`eBIx!^~thFwO*h6G}otIpWMWFl&>4SXab}Ur`IQ!asKuC zWLf{L*C)$99fMt;Ec<{Ac73wwp2%FUaznRA9bce=~@94IrXmQjCla*&{9#{G#@bK&b%srte{C*J>Rg0hxKy_rb; zDUo_1k$S2s^~i$M&WepU7gkfq#z^;{M_)CuJoRXz*L?S$Q@8NeptAS)x-W|HVN74hJa zmj8`o$u<%mhAWZ!={B+~^2)EsRgoG?3$INaC*hN#_Pk6p#s;viAnizuckG1)^kJmg2RI@5d8qMd^Y2OU8i36UAeB?Okspr&BLw3C>) zAGMH?FS2H{Or&`-yU%g3h3uB`eDFl?d9}k^$L zOB^mwAh6#tHX>dAPAk~+do*L=U}YfgC(>9lU6+~iCq3m)1_R5V^prmt3@m>#tsk5z zf6`O_WH7M&Nl*Ecp7P5m%)kmbCSBI{K-`(~uk@6ErKkKWJ>_5NDgR1O`B!?%ztU6w zm7emi^pt<4r~E4i7Mziybosjiac9ck?kRt}r~K`n^0#}+-|i`YyQlo^p7OVQ%HQrO zf4isr?K#U|k}m)1^xR6O{9T^%cX`U+@^^X4-{mQPm#6$)p7M8j%HK7h z{D%@^n+J?=Ky%c#>4u2OQX3dGe)*9>R`H9?XQtbAN3^5*D!WA9s4D2S`7M`sE*si% zd(N1vLovkt2Kcp?l@&UlzG+!!OI=WdE=+qvZFA9;O)d4O5+0m&I=!xnXitD+_rDnc z)j=+u0=%c>U1h57!n|jO-5kCl(mgDaAO6Sb78G|R+h-Kd;9b+(TkC6+wE=Ib{y+VU zcidue`ok-21pT?Dj6M3cly6tz=F&ZQeX?cTVefUbjveX9O+SSNOd}h(?n5_nJf@{B z(}hd>=-gFuL*{|TpFwevzBZCR=2l&!xfK+sG4Q8yhGdLWWN7Yb6rjrl?xw?R3^|t! z^@VGs>u(WZS|(yvaR+c2JdV*^`cU?!uh(@WeWb0^uO$pJXVRZ*{)5xkU3N)dZ1kSs z)|Y!b$8U6nl3UUjxQ!gX`jd6x_LI);qkwM&i7)pb*6~SRL?-MaejubCB}{XBDL`Z3 zCd~&)5F8;9+1A`1!hQMg=MJ;v6E^0(bpG!mOv@xF*v#q6I~W*@=3Vn0NIzWAGXQuG8jGIIe*{Kp+Pa4}!!_~I8^;)(x9 zQ+%nwjH<2KTFZg)EblZiPf9CXGhQ~2F|GvC~zLZ~_ zGWL%?3Feb^`glHl>6dW(y}$O4qI(VU^}kPdLT0A3t7Pcw>ZRAC<=_s=HW;(SkcZFs z&Z~$1jJpnB-tV~Fc)qp4^XJ3Ma^RQbz%feTld~}g{-GTBM|0qx$bo+@2mZwzcxE7{ zxa#y7?8~JvQnP%S-Pei^x39UXy(!t?oO_S`t~!=AwAXOg*a;GLO?_*N8>OzbrLHzf z!rGf!mQ&hS)wZ{gYIRe6d(*0#przB=Z5`H5Cav9dm9?ovL2#=1we1<6ZE3&i9URv| zbW-kgaPS4+!8qDB+>L@i=is;-1%JuGp`Rl79>&qWLcX+>!?_`YANQW{Cp$RWNWo>V zXpvJ$VK6fsKH50pmoqN>BEu$4`yBj>9UNURkt6FpMUJGq%HbdG@I`k(_>%6X9Q=1QBvNYEBR91R~+P&i# zN4jQ6o&By36y$%J@l)8Ad|t->c?y@ZoyoYQ%iiD|g-d=eRdSFv%yMg)dPCY`n%N=w z`3n12IXJ?q*nf?KL$=iK1_w8MzOFYpIQVjZZgFtK=j)Aj7zUWZxpUEHP>VqhcQ1nf zaB#!N4MRrC0Sx@F10*BukJM+J^C|6*;G(S780_(izlHs$DO|><&rF>!WCc?G8pK5H`?2(%aae)dS8F>6j~X&h$o>$mgq zB4tx%Y^#G%{=V`H%NLa|q`lHf{eW_uNUbR>txWx~GWEQ(X?pCI_fQGDPYbU*{NXr7 zPxPJ&A=~iNkDpf#r*PU>y}Lh@=$&vK{Z%I-rb~U@gU?Zc%VQhR3}nvEE(+X@*Ap8n z3QPCIjtln0#;-4YodhO&Z!XM7jNUEA|Kza3IKfo}zk}ea-t~oOpZ2*S`^JTZr4<{G zK4Zhnv0JX8w}xrx5*v>oIV9jABPbz)NJ)aWd*5OcO)Vt-1`07bf%-(E_kv*wLQA?I z4<+iJPjvs9tjM17SpKko+Y`HJeRl;Fa!+jW`fg~drAq-q#jWHgM!hf!h4FjJ2bXI> z>MvDP2U8Lot0-m4IHhDeK_Ti= z4Y+oEo$2iHJ+b^Pn`}PwZ{CD_#)=-LGF)^9%Jv8q3sph+EZrD2o|5jrgw`(DM#Lad z_Y9LOZvC5O=PxNNiWR?j)$myHOV^CBv17%gh;r2!N{Px9E8fd^$=sdE;oaLqySEMX z!kep^=)K0-RDguzy+(P?UtjoVa>N$eyjPgKQ$cb4IDSdtV)8yD z*K$o^JbfXFoiJ2eO+>9WRKBQd3a5~lYH3gGvWmhA^K9V$FXQw zvte)Y5=w2uOR-z-p=|VCx%b)Md=0f(nR=`$l`KpwNWE4?nX9g>8&*gauyNs*=JM2* z^^Xy!_w-QWw#wc$H~y_E^;+f`@7@vK@SEgC-MDo@c9a|rix|HeFn~mus!{{YPeGW`~n4e*|WI-+^sy`8XcnbxC4>P>2i+q5sZ#DVG zQI=qgrO(&+3T4)O*$p^fV_)dm?;v5$c>|VPdAtvu@8u2!t@29nqt&PT^593$^K$*@ z0&gCMf}Zb9Z7ApkUI{}%7kVZ5QUBFkbb+sa{Swac*4a?dMc(}SQGb5V_2xmN{A?`6 zW0E;F=D*U<#${LdN?o%i8x5jHCvoO21V=XCv2Ij7J$|!hK`0q~V+5hur%)iwsHPxP zB9HB;D;$rR8?s@M&9|?!@zT_2a|d%Hn{QheZN4h)+p;bz<|ZA}hR)bza`*b$Q5`d! z+>Pp(>H3mcVM#a4<|kdOC^a~84zV{N5me$S^SY}|dQD>G|Q z3-6cV9l%_Jpa;D{A4bqOyg`_O9rqZ5Fy}zwg2WwyAJM5aC~iQDj>qLj8(9ESG#HP20e|d|pyx)f8_2?A#_$Al_zCVn3rOs% z3Be!xCtf`MX7b@rkTDbEMi?%S!A4l&s8{2UJ8zoIJIA;Jj5UXYrIeQe`kbyp%pgyo zfR+z^BkylBm?<>_bkSsp(*a0=(&Lj2iFGT7HtH`68BFWp1AQO*tly0aZgQS*9PK#cN$w8 zh`Te5U2BCnzj899^pZkBtvDMwS|r%~*no%J}OgNaab+)~kg8SGG1s94_CM_bts?gSxP16trXR{p+W^NUCim^~o zEzV60MS`}_R`Gl=4XzArmE}ptbLo&7ad)Q+UoC}yJOhdI+YFgB#Pj0}PndE)sE zgD8i%-^KS#C^%o7?`0?ww1>8er!2!0rzoO8Tq6g|^+L(SEw>$=j3jrPTsY5RNs_U@ zrZYQZtGM5p&P261k4a~iDqTEMl1Q*Jyft$#Sl6}u6iOcGHtoAsJaQ*R0d5&KH8ddl zFFCqgw{TFBzJ`)_Dwa5WLywrJKvfJbUf+Ot z(Y8lIC7c1Wx>hu`khOY6S8d?-P==_o>p2^2MQv9{LmkOp*3xW}z`I?_3B90Cdpb}SK9{A=Ay2ywK-^^SO}7165KPvvQ&c2$zj=Ngi%$K`ovZBL30yn zLA=$y*Ot|qP3TBNI!HFGKtAhMv|mZqiY`-=we?qYlCN!bTT_sgGg3-Mu~&4FWsWTy z%5H3JwMkT0m#wD*+>On>l!NSSPUpTR?upv2V72`*cSjd4U6#)E^7aGU(hdDP7`>kx z=ES72FgO0Zy!;P@=jBbgB{DBB-aBkwUeV3N%kxTZ7*U>A+CB2Dyz3&7%SPmt5>%d7 zL=>V@lzF73ZB22<>J`b_%L6D=Tf0$QX6H6@R$Z}Gt-idYL-ea_FTcE<^x=!0-QAj6 zmbGR9=H4n6y=-e2*L5Uk%n>OEqNPo$J zCir2d(I0T80W#(xogv0`TE`O(nFkslx*^<-athXx^bb*i${SSVi2ofk$QJ~78@NWt z$49O%6ZmCCHr96jf=7Kpl&(K?o3%{Dyv+;*1i|4dPl>KX^%UT%zbT&j!yKKIU+(|g3G?OuTbzE0B+Rzvewc7y`X!vc#7BC# zBs%@i5vFAl6udde^uNmSB^|_tdG};%%NZ5cmq|;~e2fC%*70wI0v?$Ytd;(icw#?I zA>vMx$nhnP?_zLk?#~$;aQ|}rMkPS%Pv9Su!&m=HJ=cFCaV5T7|6DrTaaKNiRT5%b z=O2EZcThJS#Syq+L~#n}Pp1z(O5JuM=B7gY1~hJwZFKtCp&1`||GGNc+$d*?Yg`ed zU8X?t9=v_J`3n>zrnY`zLshxK*9*WBLP*;0=)k*OI{K+kksP z@Ctxr&}N~D7yL4SWFQAkx8Usn$!PiA7B+IwmI;3cS5 z)p16-ME*V8Fri$ooNqfgnpBZ5`vXS%05X!# zBI^y-GY-qWug>K`A}!}W#=$?5{v@AI=im?Hew^l?@8IrrsdsR<{uws&i=31xfwbtD zX+zg}1m6eJFBSX`jC1$M$N~R2BW3Vs8cO>r@gSc+8H}VkEKkzK&Nwjhtd&l88RzGG zh5wrUXcu8bPAT)3SlIN3ShPXv6)yR_hH=QjpO_Ro1ebOP{Zbggr5(B5!s-0*XG(CF z!XIFNAKS<_+BY#@W(VX$1~!p_dDL2_TrU4xj0^v9_DlOC@^OE`{LEVEd~RX?YitW2 zZ4k_#td-{9#rd%sDYoB<{K)e%j>9ECa>mnPjEnpP%f7z&r$p+``@Sd zR%#H`D}E9CS17)uceUb6yVtGwH*f+nTPOK%WZp*F>D962&o zV$RsNJ^qj6JpQBr|Cb)0FP!N9;PLlJyE$6Q%X;JAXgRLq9Gv&l-{Oz%?G8@9t|6M_ z;d)%>diZ;!9F-1E`G2NxxVawwM+*n;HwvluMz(mb8<}4o-f#@TUvTVw3t|{L!gtf#TY3=Q?sY z$DnShC+Fu<4_A5kOM+il0AKIn)+h|~-yW{7inn?A_vCp0U2q;N>!DK$`ml%pii6611i>@RdiDO34Jpo6+JVtD&yA{O?Db(KrsuA5@K&~t{ya6JtjW0nvELvc22Pafxad5!&1qb6M~)5y)b$d;E7F>)d?2I-0# zVZFcKhJzx$M~%dE)K|0$7P{HQRj|-?Vw0WNpjA^O7TaV@R3R88!N#bz$K;w`L`n{W zL2|KbJM0=K5?@t=l9;sErU%yqha+pz5W7+V;gX`E%w~RqTM>!|e0G21tVWxy*(j#$ zGS~0O*b&h&k^0!M_<~r+#`uT_I^v5i>W)t^|3<{xqmv@BlJ7?oYOIO!(7>0D_LCac zXV7S{+9rnlDwo!i8h*Pum6YYbO~?vRF0Cgu{Eke%!d92cjRvimeB&e^>^yH@<92#k zbqHm1c4op(&TR*ivnwp;_WYct*T~U1ajWXrnE;rcY4B({fEYfRy;URnCO5?LE?<0E zMtn9~bk+RAFUyct8a52s`UxmY&8scR>C%jTbATm z)xZWKdA{8r<-lA0i6B!X9P|Kp2`s!%U=HTdD3_te)%W%DTA|EC&ChpcVX9RBR#hy%&#f$wU%#QltJ`&6G&mQD{xOk%yVPHa z+(=k|JV$>0%?IYo1QZ-A74kkt9OrZAAT3P)cD}%X)AL0A)a~o90p`mD6x=2HU+@yW zDDF7n`Slq>uX)O(^Yb?X3oHN5kn#@&*DwE#Au<64_sKIu86%GK_1}QBF#XSne$CJN z<1?7A{{z4%Q+Ws)_nheehyvoPe)YEj56geOT+pW;AV23uRhCQrtmJnwhJ7yQx`<`Q zJ0!u~Bl+uXH1n&+ufUfP2&=#Nk(S}MKSG*caaOZ`?K9^nd7jzLh~xb7hn1c5Z9G|U zy2OF+oWg8)_--vs{~Wn~$5V*oeEm*RPLRBRUKT<6Xtg_hY5R`K^sg1#eF`N}^>0*b5N*@CN_TO@wDgX^_TXqkskmw20pw@Ca358p2F z+dTZ|691@&bDtNwd#q>bhxI>0;$QLb3nl&?2WR=;DRO@5;rfo~6$hvMOC+x6S?f*U z%(#s8rste#8uoE*v%Z`pGr_T+cKd2H+2Kg+Q%!_t}g0Nw*O{dwC9g~*I{3dej{R5&*SO!JKHZx z*Zw%&^Mk6M|4#QjX%Z@)sDuSW_g^C&!^~t>#oFtFQ`?WZ|BI;Khxp#Cs^_=a1L)a> zsL8kQ?YconZ~T6aVayUa*@?t39>5Gzf6p^KW;=C1A8+?J_eEy=N9S`~Q zfs?D(=`P}UChOz+fm>n~#mO6sut=bLP-Ssh^xoo902P_l0t0^b5_^9<7@0lV|3)_Y zNgNWdBfZuTG_G8He{AoMV+uVRZHQX|FNz%Y1JomMX3WjLnz%o{m_snc`T7ez8y#%^ ziO@k+lRRCT-?R}YO^c;|Ino#|b2tpH6vBbVrnA6RS+0nWgn=R4D+P19A0uX)y&Ao9Q460F~9ac&Agg_l;DNNruyE$UU=&HhsC&Gc5jn^s&I^7T_-`fG;h8uPA^w z7Qi|73abZ>h3z1smbSQD=y>h&+WJD)xORhOavB;rRIW9CZDVsA*C_H9SRJgaY2?fq zI{c>Emad?=rLHMh-da}&WLaHnYp~o3L4n}xdA8Ro!#c(uYf|&^^BkN{9Lm4Z!QHX? zRtM)eT>0N{@DUFFw1e}Ws{CgK=XJ@pq4*yJ=jF^xQ}O>1oP7|-`HCk6Cttb%gG~2u zZGUq-T-%@aKPpGt8BS+oM^pBN;{nHnr%xO3m~f7BQ!6*+D@UCi8N7r>?(EfdFz?ay zZ5X=1qU>8Q^Wg=LSr90^rrB*GhA2NFt7mbTydrt}a~38a)N0nQHm+u6%NgLu ziwa1q1`TMOiq2ALoH_!} zAMczf`JKxZ2p$2yuCZR`*XME!5T<_=9~$6vtjYTiM@GK> z8eqOmK*5y)>ez%BozGniEKGk{h<@JJeEq9JWC9A_BZ|rxah$K8^%JH)E&4S-kDrjQ ze?2hDR33uH>HgO}3W%@z)!zs_EdLa_a1Qhg^I^&FsR?TQ3(wQ9{Le{#pI$G3e_VR} zn*Y-Xgw1Ue? z)4!hya2$`h&e!jzxnc4K{tOd#BrIQ835kc*JaKt|a|?uUEN2x;HZf*afMw$vikTL# zv8+GvwU9jX`7UP8NG{H9&z(ol)JW#mZv#4?srMb`bB|ib?8N!UeuhrZr{Zt3uo?d{ z=(i_-o?FW^M)FaP`^3om37yK<;B@UYps$=t@p}x;m}5J5!wb*g z8cFy3brwH2|J{n7Z_Mm@;z?6b=iBe2_|12YSm2umLfgS%+-SPYVJ$%F5~_q>l0=2T zAIUnB&&~gGFT(iZ`tPfHUajh}G4)}hI4nr4=UpKq5!-g7Ht~6SRvhO=J?-mKdF z)2tB#u|%|{hp6Dej_D!VrP=b>m?a`Do_+E<95#r9`C;}UVtDv990V&0EFRB68XkUu zRL@1W5H+$Qu?HnlqK`_{*dl6X)8*_&icy>!8{AOW8bppZ5;y(jTGLA~VyHn}tOhBy z$lPp-h8U^W0eE8{`pgv?^3Zp5{JHw*$`R3xkr4~ej*c5~_UG)Ljsv#zGEZirrF7zg zQz}kLjV-Mho8+<4by^RH)sYFS0ZcUD5H8%U7MKQy8g94M2U%;vGXYgD4GuMYbtWGk zgbO(3V%t3pwn(-}@U8-xG8!Vm0?k#L$)){uCUa6kO5sj*8lEKCu+QCJuH9TzHg>Bb zt(lbTgLpE9l#Df_meWlQ@Z zP6tS%tFCUXYwKuiuaUE%F!7+l{dln+%%xVFRIKHooR~Tg;YW|7HD@Am)V0D6k z8*|WnZe@Y|X?xiR>=az*>pB;S{xOliQwHbdB8THg^Hdh>ZfjBe+@9o)GyvBq8AM|6v+Q&Gk!Vnw}`uuKdk;n9c4@7*546;^!OG3XaW7-7yV^cOy<`w z|LsT#(_bd~H9yZE-@o|!?*c}d%0tjNvtcS!7FUvLXIUBj?Jh20xn+ZSpVeg%(DrRN? zJf#Mgi8n7PmU)Yrn=tUX9J$Hmia~ieLz?emnKvofG|oBL8H_BZp;%^yMiF}ryK_Q% zf9CZqr#wqWh}T~jUS0s_$UcnUQ2@WG0DeaSTqjA)PEve(Z3mR$rkw}(t>D^vyz{AT z#{*_Q-~U=Lz9NimUYF%EiTFeeb6aX!>oOzUu{a(&UXH9EeLt)=g~WL+D&B=K9s3sc z8;Y~O=!mn6QT#T7aKzpB&mS{rzTQ0!PQBWPaorvr<7^Wu-~C3gtM_dVpM8w-#|y5< zCEZyt+u`%kNBMfivOUYK3!$vN0CC>`<`IOG;f=X+iK~1bI~~7K`{@FBbSOj!Q*@tg(s^U6v0JORljOGWoz-gf=SG(JCAa(~h!{l?(?PMKZ%TvcB? zSEB#i%&@*}a6_sZ`}2$X&KmO&Gl=3}x1;dZNH^Wrm@26-twojc6hX+tnG8LT;wyxP zf@R^AJlZPMHb2<77qOOe}O?dsZyjK4@mogndU> zz@WH&a0Ner_g?^no$g(nnx4kz`O2$$m!;C?Lw)=<-hwK8mU9UVh3nB!2WT53pQPhA z<}jb>E*$3?^U#@HP@Rw2nNQj2gzn+lNnV-T9V#D_`yuMh4zvz(idXLq$d`4IEe|7N zmsfb+obOSww?rpLqF;`Th^9uwx5l@=Z_%rJuZ^CR zT^wG~&Ry}_@l~FrF_EijuS?b>o9b57v^T6ma3yxBY)>{X7rXKC!E9qcuH*)M|7Up( zjP;fUb1s-ub;-QyBoCTS?>3wS*0ApQ_1desE35$A8`}d7uQg|ceOuw_T)kg$8d$?0 z&g5GoQu96KVhUA*4+tv~T&cmI3KR=gcWuoVViC=cxnT{?lM;l?DCz;G?G|if=8aW|T1TB=GJyTzQ^E$}REwh5h;m_W#ObI!{ zv3D|aEg6hI+Kw`S1ZXN1RGVLsf(;xx>VkpJ594C0&Re&Bh_6ZPg;{M2(q7lreke;X zGEY_hTyhFWu5-zzR+bjG+!nnx)>m}Ppc@Bw9~OI0#C}fU?=weir;I25!%Z0nNz^N^ z8h6}h#b}z&yin$^MUy?0R_5e zT{k0+^SSI`!}RZ!hc`V>^r_p|UjvLX{W;@j<%F<)U8niA94$x;%RgKS#ctDenos>T zNMu;5DMKA6`Bk4LXg-bKgn*ARP4|kM;0gA*Y#%@7FPe}fgfpZ z{fF6k>71{l!UT04dzqKu>;Dwe!}O1Oi_NI{S&kC?X?<$BIBK9wQ($X$?u)!V1wi@SEBfO{0j5>4y(Vk)SuQ9 zea_Wre#M6a^ZPD9!EVw28%7-Gm!EOJ?4(amNG1`^>xf;7ufNco^K_Zi`L>8r&)2WG z@00g`bI!I_!t4Q=63fhRSf2id%@td|+!T~3e%QAZIG2(;Yh}r{SrnQ}&!6k2Mt6={ zN2DB!u|Mz~?*n1@g$3|S3*gHN;G8oHlfSM2-dh0QSOEW20enXRTt@MDBsD9z@H0`M zLd&?a6WgtLbnhU@naEIerDPOn2Z0=;dAV&{Jjp&wypS| z1=sRuUp-7ZLY9a3c;)N`NUg=*D1d0)w;gH!O8!O#BX$P>ivksZ*y?+ z|0wY-9)7Z%@6USpD#7n@aLWIf#CJM4Pt zIo)f<<>}tZ53>_67e6CRH<2f`9R!jmvHsIYOZQEsgopWKGxc#$7o>Zm=^m3sx3733 zW4%VQmDv4u>ig>x28uky>d%(OmYUc@tov+&ma2EUDRuY$<2sJX!>(u_(Y^nY_Tsbu z1$o;KJDW|q;{uQ7PWX54ujnYcH`sSr;-OGP&YiyK3@Y@UE+X~>HEP$H_KMZne@k*tk zef*@dX%mCinrj)DgpYE!u0&|+X+c}fDm;VP*z^GJOB$9{*w>@E0~-*}x}>_LqrEn0uf;g4rXAZ6x7XsKP(s*Upsk*JfZ%N|sT_-C$MC$Y zc-_9jt+n9HkOpyHPwundXvFE*4msY|XPXHG;e6bTm4K`K{Z@ScxrS|V=25*mMkSy4 zV&UmC05Q%`s9v@gI-g%};S7Gf#G5^QnZ#FlcuL~ed3dA5*Lk>JH@zOtc1!m@>t)I_ zMdBa!@YNFE=HYrBb8do8k5|j_ISXg-N{N5L!*7xJgC1Tb@kc#;v&46M_&ka0GlrID zh2Y=w`1-8%3&D%vkHnvz$9*1O+sUgApKVh4gQVkT`($6HxNb#G`R*LVF$MT13hwjE z3-Hqg`1*RA^}u_h-shWyueg@;RtKkUZJ+v`NWXsm)#GdZB$1bn^7*F@&sx|FDCAjd za`@ha(f$7|Zt-8+Xo8PLuP@uFlBt5m1(j=S$_70JFYPvmJ?k*zD1j%VKX z&L_$TQ{G`#o)MQ!K2aVwLOETs@92k;l-9>5N&8uhy$qR65Yv5krPd-+1!JsEir3$`eSkEz$oC8}8!uJmV!d9>UYU0+1>vvwixO;!enq&LA`f0b;xB6^+l4K7nHEoW6-`RbaA_dQf^NvDY z+f;E>D!;E92898p>#hI{o5bHYMhKIeU;G&PTA_`@5K>xzfxo;7HGtmuGqoRkG4wQ zVOfE59v+R5sfKi~whVmn1>xIG&CQH6yv>G77~XEfqY__Qm%0bxwdCmIfGAJ5KSU?Ba02+)F*8{VWgK>_X$W? zzw=@I28mhwyPq8Py6hQe^*mPb5M`NbA6AW(iCNHC(bqX_7K{kR#Bmr1FmW_>Vu)b1 zleKCX7K&$^`Rw)2wc~3$zqFMnQ#C!CQ@c@ktUliZZ;lalS1QR1g8hxjZIt$`OL3>b zs-6c^du;|@uWQRq-p3H6W0l3VAe}*bD=P?sM&esNyx*(-<=)wEXU0p@E^$>Fy^>vcDBy`3)a6)I^VdcUojm- zBofmPno6|F>mw$8k@db?C@gDtb~RI(EcU@vlaw4v#+-J?*I23Gq8(UGa_4sUu>Ycg3!~V_|g6 z@b|-d^nqyWh}gS##}41fNJn(lh*(?v!dS`1=*J=>);+K(`iaQM=#mi~(bnOMW3~7= zQEGQ|(MY?&0FI|}=8X9loPWv1^Det!25Vqe6CU-NY8sQ~C10|kDT(i)w>LD^B`>(_ zg7arpRnEFBzY43Go3F;2>?A%4lf1m*vWsV3e8Cw>99mtnskt2}KBzumdsY?(ZotNU zt+m*l&WtCQ7q*GDva`E>(-zhoJ`xTy4Vh1Ln>KVwSovAMOoFt9)v%Lud*Pg=k~0!q zszJ>d3pQ=;%Ie4sotepZnFgJF>+Bbd;tiLcq*RV!j3 zJDT%3o6diSQ3Xt&J5B8!aBqggV*3WY#)qK>{EowZ=c#7t($>0FIlDeKG%at=0k8(4 zE^Arq?rEOcqakB|`;YPUs31u4oZ!#z5X*tl`7N4{y{;?tu4NCeAGnP&3K@kk_2~7& zINcch5%&ixX}>@u!}2WesY(@C32&l7!$^!3*Oqf99# zLe`aYQVg!%dYNC%uRsF=%s)v1@wZF<4iDG-dK{fd56gc7r&i#k8QKVbHJ|!7Iar2- zz%r}t`ParWY|G&z+KApo<8JbW1 zZ%KYlSAUP>*SPwcPvg%aK+HSMf#$DQqWF6J3jY*=u=?AcvJzHUgp;?e^}W`-cDt3Y3Uew9faxUW#;#t%=e-c@CS@I&e!iGbns z;Wv-J-(C-LGIMH(<>wWZ@7_4OTl3tUqrgs=%f;!W*zwuW%vy0L3FYM5u3X3V8>Sj7C%^~FM?*pQ457RuKvVuUE7e713wuX_sk<@}oPRn94*?>`(l?s1JE5sq>=>8+_#T;)$dI^9Bt&*w8O&oByrBj0@|f3)EA zIOb8lu74u_RtKNv$l)6X<)7)ud7FbTarkTx75JlD>G0ih_BgnE9zW>dN#s|(A9dur z@Am)X@K1F3lcj+%d9;JiDS%();BNh|6cSFZ!&ylY)yP-|zwpyGOGQ5zmMcOHW}o@+YA_5Lu%!bXmnOP08vPnG{o!7p(5 zEYA}Xzes$QFH!R`4~7+2y-S6l@|EA{;Cf7iu5obceMI8#ad7fEOHH@d{ATNCzQlVR zocwl)-|FC$e~H9D>)_<;Io{*o2Vr}g{=!Am_{`~3?XoO*vKaorP$a)@icxya$OJRiUx-Et5A zgoT48;xpN8pKkltFsT}*UJVo1F^VrI$wWBHcID&7%rB`lPv9F&xC4EIXUe3B(=2nz zkTo-_&W}dqfFL)5yJt2=ZPw{GmKiHIknG$2PWhVR4KHj%zF9r5K2VF~bf0;c;x606 zs5{zkn{vR@T4 zO)39%Qal+OxgdJlh>o+zeImYaRTQVr9M^!~t=Rpg<;y>pT~Iau;xm$XJH%~BI$%NA zHl9^LS86>RUPmUpF@s$%p{&O{JDujk6Ikt5jV!WhXm4{hxKtp#c387jBg?Wp4c_4L zB%JYhyR>KGCWOY}&t8m%!10+)jGMUrY|?<|`;+1#>UCAIl~EmBV?K-K?}t2~3H<>r zCMYxqUx{Pp*on^61Lojw<##~)Vl#@9x9~flHx8;OF6$nALGhkgw5zxb2tEi32ADHm z$NGXpn|uFf-51$!gL==gXU2}(i!|c+I#;wrFm~tc2(*Rsxrc5H{)pQ?l8ANxp#jhL zb@AGv%tOsT5qV7q<>^uVdUb2E&t*IHF>5y$!5IYl?KJa9~nZ2xZ+45&F|CWI}q}3N!APooUbT0RxVoiJ_xDj$C~Gh33llva!KkXuZs@ zuRoLE1<3oqxpG@6F>~d36@+Na%r=GL`E%1`y&3x=>;0MSQ<`i}fq4Ce;WG;0GA`9U z8+2HB5c?ME9IMXm+G23NkB-fl<;=F}p_L$M;&_Bk7E$2olSgzpUt{r*MJ^;Ad~H$&bL1zuFpQET~-#CT#6?eVpEs_&RkbmN!=Y? z@H(D#{&%gRF0+T0`ITE}CeFEHA7kQfx$reV+Z<1+f3F-PxPQNH0UqXjU4@=C4mSTp zC}Fv@oT^jvpQ?cP+AP&S1Gt7=D#wsv&gXJImzaBfG2b@+z|FB<=2z=afeR7v>x60h zL+YP>qUJx)Sm{Lyfm>+3%&%Ymu(FdpM+&9STpT)4x39m@SZRZl|11h~oUh+W$_bM9 z=8u)!UNoz|@b^9Cpt4kRzi{7=>phS6#1e<6!O{Xa+bQK}e!a&}Ex_lPf}MCR0?QF7 z^y1jOx3yfn95!1Ko1*A>5a|MmtiyX8(!d-AZPXbCG%~_N;@CUlavOf1@qyZtc5fJ z=8A=H?j%kQ^EpduG?V9GrTZ3hZvCfwsrr6aSXIw|YdqukZ84vhoYnKQiXBFUtSRCk z37eEZd?I`!;UR{QZ3jGEeznD{6H52qWmg9E-kB=Hkzm@L2efN|bM3lx1&y9_?HWa) z24yGL2g^p`*Psx#Pd~^xcIhuz_^gX;xf&58CsM>9onb~wS`mzG+WDSfkW8x&F)z*D z;2Cu`!n_&vqhiJJ_eR@BM9&%#O=kD(KE%mhtDWPk( zOY2(CNb;!ZnyrV6s3Q}8HiNB}P}a-NaCZP4hd+B+83ym1yy~)jvWeKHV}m)ruj}Zn z-s)g!$MWU)SV|if`ggQxY5sOI+xCD8jqx~^;~$;5q~2M)v*?!Sjj`^c=(jnd`y1Je z|Fh0pn>w}CYkvJpzR*~*UglkQN?vw-yuag&7^h>ILSspNr!4f0=j$&tmOR+}I+n~R zkbvf2>?QCRTvv&Rk1>6nfV_xZ=W`3qTkG0)eWqglapdCH-+W-cOzP7;+Bz9=oX_Q* z&#zO`J7plF=ZX5M+t*(Mj577P96{rBKcGXMxBi0d<}%l|%Js|7Af*1f$y zb(on4E5AH7+Un{qwK&ue?17gsFN) z>Ti?~S%16-X@13r1Cv7)ruB5*{7~nuJ7wN_fgBk1ap>ynFZ3*?Htz4wDOL9Td2n8o z=l9Kj7IOykP6@*Hb7Jz}&&HcqPQLr!FmJtAipBORO*W^Xy#B)Q@&fo31@N{4cy9q* z#);1SH-^lG9$0g1jIV8NXvc>~R$yUrduvToHGkSL0EO{!d)A zWyN~YXW)wwrX%jom$w+y_7S}PmA}@(k8?gsPH`JM_<4G5UmT~=QO;}4)6X@m?07)+>NsGUr1SWt zYct3>9#UB0P8-!g76Rg6?ws@%I?aHXYzQayPud%IBU+ zY3`{s2OpE0)$`5SJ&(`sd5Y5#B{;@(@0QdkkQLkO*nmA?BtzG5DLl6BS;9Sa>bYA_3%5t<%+?Wh z<6+VJ=0vdX3`5ukW^rQuG+JvSEy?=E(U|NKtBb&(CJ};B$k&tLphP3o(a>CI?;f6H>Ow(^Qd8+ zXyB$)NU<759#8|@9QCmc?u1{3sj=P0zbm!J`1hrrG5&+8XW?VYY%jcBu6^op#ls^< zMoMtyM(q|cvFtQh!QEn}1XG4(cZ!K;H;y@s-|5Rn`A?l6ALZ`hPz)`%&?xckEqxt6iTLoxApWQ4gA?*IuMj|~w^ zzxMt#|B8NLP((Mr9u#@X^b_bwYhaJdL^^YOiNq+G&WjFim3a*?GcGT4sxo9wKCocdB$%c-oDGMUgcrnu*QG?4q8>?NKlUTbnH+4mB z>WbXd*4)(AoK!3nn5sRG%x~Hf@b?lFGcgy1H*2f1I6_r`^!V}kMg5di*|dE^jc|*cJu0N_m0y=dg6i1AO6q2^{_egY2PqQ)>L z5_zTg2)uhSOBrxVBLjXvAzN^9=xpBbtY~eiy?VvO@eNJ2&;oaO=GHYbc6RilNObxL zY|4fI@oS?~O5%4v5WOjqh~F8#YQ&W2lB1&2^-YjzV8PmRFS25Se-VEuUQlf=iYHU? zQv(olzW7A=fJjQP`Vl z_@|kC`D;;Bj@DK*=nORcbSB?*O3U+=8x6WL`M#COw>po1ksw+d|M;!sY$C`*0HiISuZ6q}>nv*t@uk=kSocn~@73d?y{UZV-oxjiiB_JhfJXIRcV z4<_ffu$YGo$t`@prhC6{~ zea%gd-l^j!jh|%VGJmriG8%A{6pSs~a`#=EJ{B;yRD{>kjO{bEGFP;AHn*-|lm#8o zqA=v?G)G+9u#9qRSGHaaZ)GPAbtQK7N4RF$RUPnJx?0T9Q&q{8l9Zlsz$V}y^H6emRrry ztD)smC(rm*nKr>s*>zGc{wT7w&e^7JMXT8dZ-54&I_>4#gQn0hkC(=2+H76%i;C+E3KRZwA_nqd~JCdgR+)5<)7`c~9 zLD?m{&gY(sME{t`FBe0;y+dto)*nUr^*0}wFOxYwZzeN>U>hTj^SN`77N);+oXw=? ziTbJA*IxsSGG$zVkacsU+{#zn*VTXo=GS){%3C1$eZI!kUnTi9pZbd>|1Xs&3I6fl zSRns-=7}x{rmDaK`ELO3sW8m)kox0Xv(|^!D@UDvnJ7SQHp&=roX`Cr(!%sF5dE5; z=P%4=;4{D}Q+Ws)r#1((yc4VX)&Bz6VflY2C-hX2r=I3h{~^h*>FU3Agobi`&8O&h z5g_IjGe}DQawUqd^{?zE%u~ zTjao~k5%gHFJv?DqTC#>pfJbz`kkblAbJ01GhnOa&0p&#omI{mV7u~rMSBgq_Ud|n z=JhRIR*n>2f5U^{_a_ClvrD#Lb8-C^=Gowd$*C-WUsM2}TL8xh(Y!1*-#?xtu|l>4 z91`>4#rSw|SVxb zTQJSRSss2+hHi%SGJ0>8a?bW}=}t5IMrk=;7XIbJ*YZd-kYZ zQaQg7JR!d7)%}~^>fz(1Jg0hii^R|JaBXKZJY3hmqy?v^&vGpKe2;&H#FrM}^HUpi zTK*SoH0bpByl&`j@c6e_II~|ClimCIhdjR4=bfJXQjv4F$A4bp_j~-b@OOFq7Qy#; z{CdIv)8o&O^YY&we}nLU>+wel|1TbYyYL4|y4L4t!H*Q2*;qfj1=n_}{EvxTe({D* z`Fm|NnCQv>h~VdVeEX6*2rlsW?~wRBk6$W!-{tW?BKTDvU)!I46IILKAmv%>@#{rS zk0<|Q!vCPh-yr<09=~7kyFC7O!PO>O%cJ{HKI-vz3;*k${Pj|vXFUF1;s4Cz>o@Iw zXgU8=1{7oKzh{(Ug=S%!k9$#mO z@ALR^>EOQN@du0EuX+4Z;eXfTYd`y}$4?9Yd5{01l>bj2zh3zL9)Gp)bsthj*?u+% z|0wab{d5R_wBX9$E^*yEMfumu37GEjcT2oNeC0QY{EI#QUWu!XxAK!xpI3TvhKrnK zjvS6B)m`K9W5U0_0RJYB|9%m)+2ik#^8BmAXIaMxez%8j68r%V-!J%AJ^VO1f6sXM zIfCmv3U%_YQ*hmPRq=ZT$7i{WQ~U+NM|$`e(RY%EFA==V!#^VURKZ!jJfv=`E;!r6 z?-E@1dsV*T3q1b!gnzZ8m*ce0%Xz%k!@nVTw}&qkIq&!IdBWf2;V%ilNCxz*H|qV0 z@S7!_Q8|SMamW7}W`c$(N5jPR+0K`fWFj18yYlf$1P@sUZ`*qMX{TG$*5tw4w(jO6 zinwy)m*d$7-+hFQ;~v^LKErju&sHG>qs4YE3to+7!QC%(R>9*9`44{-`QZ--8N7<6~S_U6Aqo5$Vgx7S| zCfKov(~Y z0Z{yK{;WjA1k96{S{X7W%AX@i=7Eo3Y;bTSUrh4iH1T+F+q* zHPqIj>gYO}>N;C29`ZHMS+g%FTV#pB-Qwrio^hZ;_fzY^($+Cw{JDVp!V+HW za!Ojp%P)gtx|m-ECsE7rN~R1>qLx8F)G-uhgBk0}jB+oa^+3BuUo|n+_6TKe5M`J<}$zjJ457mhRE+c2>D$h^1DLhcZJCB%9EephMh~rKaiZOL0gob@tj0G zHG1lE68%Etm%(Z9`DJhtwG7%SaxN7ugEo(xM86Ez3-D?2W5JyFM^yI@T~Kwt?1HLG zUly3`LdbZ0T#1_4XV86LgphqkJS20&)6A_eBRdmt%?&g5X?PiEEzFF$-y39YD8_TI z%jhu2B+pn1>U&GEC**Ai)%4o-gLu`+H=T!KMwnwiD3*T%G$YKn5ftM@V+)D%K|?}X zWo8Wr55eLe--ec3ashKgrt%H1STP>Z>hKLVH#7~9^OSV2Wpij6?$YA5xi*I*BY#_) z!+#7j!zAkxf9^aKqCq)-;QUTNo|J7OeviYSk1?_QSpEjVPV;Nu(^F4e;%cKa265st z1u3bR!z|GG__|I(4$3^#{OmEqRH=ULZna=Ox3WO~n`}26upf4vpPxf{|CkJ)6$`hU zlZ0@z0pL0E>u)|VUnZbnq7XmGh~s?j9HfQm-~D!*NzW7YQ>3rI1{h_^;UZ++ZXxQO zS8>g+alY&G%fz(Nhg-&dUg3N$#~VJzoZmmf=AUZ4%&*Voc+pc~xX*?h|1hLz`L$kd z1?J17fT8AjFyD61=k|abrhmWaFQYIx);~r1`acScGL?s*ac7GD1K9{}2RkhPx)Lkr zRO@AawfyS;o8-?BB=B#N-^Vqd;!hwz%x^zCB!9UQ#naUa?3!I)O*53&H zX@13r1M~Y1K*4^|zlRaW`Q;BQJL$XMVl$P>fiX&vzJ50IF#RvmkO*#$^)kP{{!D@w zAn*S_8$oIGUR@0Q8?kID`7Uf9B6iQN&7a;cj|47FC`V8!VymOjUXIx)}rE{AqdB7 zm18)?e?$Vr3j7nE!kZKRta_aeIIeCuNxwd)4*Ga<7;w#_2=E;70kvPk*$L!kX zQBJ*-^A1N2`J<(<+Z~+z-NOH(higCln1^o=Ip6VcwH49vpO%xl>0H}9Vqvy<#M4q9 z*EWy%@9;-AL(*0LLl(~DW3skACb_nGlyi#Y*Yof5UE4hJdxWp!TjlfmpmS~W$bX+f zv){5*KCel-4~aZ2|3-PqAKflb{wfOxdjzLPe!bwXZ64)^ z+2)bILHNJ*6Ynw;@cHz6Wd6a*m;I3^R`MU*Id0Ic(FKBzz^6wSCYnw;;+XQ!Q z^C(}hqYI?{s{D6I+_lXkzf_LXwaugadXewi=8>=M*0s$eUu_-MiXJV0y~uZM^T_{{ z$aih?D1U?SUE4hJ)mF;2%_D!i@Lk(H^6wDbwap`cx8SaA9{IiaqjPQZ$loh`*EWy* zUy%&w+UAiTm*aPB^T=0QS=Tm?d_CW;Z65h*i|E?sk)Ia%u5BLq+RwVSdF0m%-?hyn zU+gzwtsk*~I?u5BLq+lBAi=8^w%sW;a)kNn-jcWv{?SLfR1k-t~?u5BLq zIx*_n<{7>WnqAvG^7%YL=i26xAD0f!wap`6Z4q7DJn~D0@7m^(KUt3VS<%lZ`Dx+1 zwt3{gD16s8kNkS!yS91cs|}KCn@9cz;k&kZqKa+&1X=8^v&!gp=+T)u0YN4}05 zT-!YI!))_7PDso7b8Yj8KP9;N<^baCSBdL4J06zf*8cVksh_WVxZW3^_V60WqH}Hb zSpN5loVUneRONrpu!BHt;S_HbzV^qA$|YoSaIT1sd<`?MVIS9L6<Y@f)Z?fxC>h$?lD^&-eRdlON_om z>3=0I|2fj1Mf#n_v@UTu_C^%`W)TgMg4}M9h3R3C04WRSjD!O2wYZ!643^=5#;9y0 zK=R_JAX#@wTsVqlL*9jHh+K>kUinO-bk|E2iE)QpIg9N+irb*3d-ct!pkv4m1g!yH zHuU7W)MG$7J%^wUlekYM;dI|Td@-bmRToqNV|o?#kNlQNn~Go95t>UR-Pc)^mD+n8 zjQ&!+D+AaAo^|@Z#BKMYu|8nw*pacfl;^a(vUhal>Ay(aHWrEL+R9Wao%nnuPJOHr z8$P1#j7s<2XH;@O&NTO}G|b9h_lPBFBks+ zr*hX`*46WzP3+zu>6j;Hlu2Jtls=M}XX+f8#JAm%$;7QCDY-XVaq>)FAiF_>+$#;$ zP%2_GgMF3V`=cnB(QS0*2)=ZumauoQD<_-3sG=7eo9>GA&5fjMQT}l|dHLPa*!{}L zj*GD&C(jNlTMCFvG}Df-sb{*XmnRXS1#Ah}ptNvX`u6~hq&?pKc;xvLUhVHk#OBG>}eY8{7qrpDLXjOF5B>$g45+J|4SNbJt}48-Yo z@L(V>`B&f2&hqc*O`GJyACYU+BtNdWl-F?Ibe3Sb8pah~5dZ}ZQ?p=eNK ztla61fh!?8&!W|fzIg_&<9Y0Fh=J?uBHh+-KwEyEg979k{LQ*J4816nI}o%gR6;m9 zr!K4v;pnBI+;DVuXc-2AUKXltAn4ps2?Igrg-QrV!_VgYjUA`1YEvxFI(NG1;`MoQQeMh#bLuu}wSH@aSq^I{>mnb9X1&12Hm zb>vf_NjsVJZ6=wS{z&n71dD>b*Ii&<@QLxSgwH_QBExfxe{hCeG2 zIhKJy4SyLqjvTgy;~5(q9LFkSe`VtF;J7Oh=AXpH=GSCnlNZ?PVr#H~=H3E?e-b}o z(Q%(cjDLy@Jt1O*J*wDIf!Su%`w4!Ga=qbp!4nU>>u9v%$k>SZU0>bQz4hbqi=KY^ z2l20dHU5j2;wN$^(g{b$M{K?O?r8a__@;PA?CAJ~v8$pJBTvU4h)x+9oiwr|dgk!O z(Rszy(KAO@o&D0nj;CV{(bFSO#!iTzbABGve1_# zxHAjAEWuZ@kaJWf_<{hpNR@pV01{Xvm8&hSR1Q_oxz86fVzIo<-MsWouqHlagIL~+UgyTATE&<& zb@ni|Q>c)w78Yjj(olP4V}NnUdzrT4%c4OeM{{jD{mlpF%Vdsk@TCCU z&#agE^|`#Shw0zIih#qSunR3HI$hv#Pe9)Ke#~VOre)9w>dFkzx{7DC6 z&^)+0{= zsHej4wuRI`i{#h;r-Au0Dd3Z$zl;&b`P@5^7N&oP=-2!_|EzmoKVKX9G64nOKS=#g zNPgABymW)*#MOEYOLeLLZEzX(^Ea5Of*?4R!W^gh)c*m}H0;oV4@!O)W7y~ZRxq!a z!R?a2-V>npr|_>32&@0SA?KeWHNRe$!-4sIpOI~*QSeP=6UqMgz!9*z6;w=m8@9) zY@Nv*vy*yxf?{@_E(gb}9yq*;@m#{h(uvp;Zc%yoRjemYDBAMnC#%;y&1Ur_+BEr4HL0B1ZYV2l2$^QQ6#W7ewkPUFw?%wy7l%+{B-G}O{ey}hn=CH=b2I>Z}W zn>(78;VGzjMfUR$??buh*dK6wueRh-x!~Ey@E))Dl@88Zh2ozVobBQS2mi8zvyCYK z&yF1SO^QdPQ}fG{5S;Sg=J4lBCq_K!;2nZ98{4wVzs|vra`5#I&i-2YH#_oAbnxvC zpIx@{?{@e}2mhwScgyqZ0{pki1;+C8o}u#3cW}4fICDYg*V`3>({t6S-#8S>?f6~12{9d5IqavveI-yqJuO1~YX<4(n!kw&Mtf5j(QI5U6E zW+zR_q>Pqy#kF42&Oe=(L>neKy5!YN*EVnMK8eAO$%<={34ryTZIbepZ0DW}e?-r?ZnZ;|+2 z9==oJ_j~xCCBECkr%3$_5?{-yYc;S7i*bslrIJqa@GTOb~{+zFbzpwI2UlQl51lpVt^&pT~br;=0c)qbz?Z$#DPb z@zsX^9>JBLw)8;zZLObw7yJp2UoZH#Jo$^|y!^=HZxH@3Jie~!`Mt;AF8o(KeyQMb z(ZggO?{2||3$EoqQSi5V{JnzfngQkWl^)#`kFVG1*`E9giC^gPOQqa%J-*iC5|5u2 zeuKx?>uQz9uNVFrkN=!4esGJ&-yr-Cc>JWqKko6j3;(koUv0W~c>LYMf5hYKdHJTt z-z)s5J^lp2pY!;7zJKlUb^MWi2PN%acrm%p>iIoJ@DjnPj_pVLlVd!-_FrQ>e!a+< z;PIzP`OotB8-zd8H{$`&q z@sE1^mqfv5Jbqj{xPSNfdcE!R`1;1=s~-PWDbM#kep=-J)Z-76$qlHUvg~!*iPJ02q&Z}uXd|zbU?D2KY!G|6B949o&aoz3VcM0yUAt3(( zIgjqXzr=N|)_;3)zApSfc=%XtH!`?n`6)-o{evBx$%XSM}=onBnlL_bQQpsfX(e=NiFD-@NghG=Q}ulc!7> z=-QDI?G&K99Dn>h7GHD8Svzt&N}k4k#r3m#p5oe(WEEDCVBg*cQ+t_WR*CFjUaS&% zf(rzur(edV$Ca=j?=_RO>DqVE=6u~pp99GZr@D7Wkba5*xr)Jnm3{U71}VxSEfIrM zD$>1|8K-a|L3I&-n@93@MV!Bvml#w2g^wpnVYR;y*6*0c9<{|}O0 zh2i~v7^AP|f{rWqBGi~V-iRBPDE*7&{58YD3J|k=WLavCSx)jZNO&QWFOASMkgzya znYf%Q27U+NMF8!oDunhRG%q!;d-X?i*LqZ**`At`xa}?I6;M2^zCdX!Q&0s9`7#t` z+!KJSQga{>O9e`>)&>MDT!ApIF{w&b+LQ$_+eb=*2t-Wr zu+{;5}I-QqkQX=}4Hf&1SeRwH607tM*Bh=5fZ?*;cg=i#~Qmp1&6h zJZ7%%zkU|7Mk{+BOx=RQa~X#9H=Epf&Z@r3)SA~?QDUx$_QNZ>pNKsF3TCsg zCWBqiKl7T5;xmSxIds+tF2dlNjCeLW;58Y}+6zc?S7u=F@s{jTj8VE2!>q}`s~=s8 zahxv2INmPBIKjku6PTUj|2a)b$)H5nz73Bd7jB8VJ$D*LTX_f(gdB^o2nG11Rg7cZ-8!h#7U zbBRVm`<3DbEXr_Vow+f5qQFg@loRdBjpcH?a=2LRk&$ByYof7D+pGE7-$^xZF>GPY z`VE^rTnqodBszkHcHP-HJtNCe;r0b|q+~pTW@D%T z;=hQWh<_JH$Bl@;v^BnIYy9l3@ev=7kGeZLaYX!co8lM6ABeAre>MIPd|3eUbo4wd z09k|uAQdA&_P&ea7sZzTJ~n!HY+>}`NNn8i?ZOXvgj|cm%ecI?9?m+ClZC|=L6@_} zL&0jBhD&^&gz`M4aE*tCKZL<79jy6puSWHUJ5};pt2|WVYpwFga#}Mb*eE542CKuB z1I^~^%!Hki@8N=_aF@;56_#^D{xQGa+OER`Af3(vA0Dj2Di7A~XoXJDiL+p-?yFOk zg>IMNXS2{xB)B&VStZ%uuSsyJ>Eqee*JKlI=ueWQ@2RkoL4ymV&{)3V=b9oqwWP@P zL4mZS$n_(Ew4{Kvu*b>?4w3zsl;}Uj$6AFSU8#|5zPTD4EuvyUTV$(7-jR_%SA!ic z&p)6Q0d1JafnBPPV>3Lq1>h1Kx?@A{#v~Wtl=(Yfuj|7Oc5`t1oMx z0I!N43FVprdcC_C#_tc=XRJ=ZcVW{v}VJe{Qf2ETo*z_GLj0Rdl zmIq;l$@03^z+L6j(N@=xHvh*^1Zzx^UZt+tm zkIh(hzSi0za}6A5ZPA_+WA7>Yr(Ik0H(yPZL_fp+&mWkU1Ecf%CAp{CMEn+7OSJbS zOW7}-EA1E=j9WOfMrDlPGAxr+>`&<{k`y041vq6MYJPU&Qbf^UJ=K4xYl*m30Ud7* zuJd)Bi$wpJ$k+Y%ON(u8)*nUs^*0}wFOxYoo7ZA^H_eFSd@e^+Vfy1!Y$ocZqfgzw z{u*GEDMK}ctZS5V`?CFb1L(}JHl30^Xp#I$1;oc|1LM@c7O}AW8zsNmkV>}9v1&Qi zNq$XNe~aY*t#@Him+Lko;$uv=d*WfgYL^_sy$zU_#ib@g>YqjO>;KasGAU=LnPtge zW8;_gPH@BYPZ#}V6b8rh&pP+@?*K-b%0tk&7e)WScnw4KtG^5Eu>8H!@XTvwkx5VU zssEINIkaGhF+!V32;r;%l!KKGYMXRy#HGZWGm&3 zTMIPOt7Vlh7n_qx8vz;x$r5UV?M>z7TDLTHl98{Uh31w7YRX4Mr*G~f?tNplP0rwYeU1~Ha@?WpGzVvS z-Yddpc(~5^%=Yl#Nqnw{uMjy0yB0>v+2+U@Dq(tSCCu^@FPHdw@wI;R*f<`eQ~tYc zG-oXgk9Vn*^A1T@zQ)yNU-3tUcfZH~v&46Mc-UGP>ODd9x@%#GzejL)Ee!F8r9HT7 zVTkLv*j)=l{6FwV=dOjZ_W+B#YhlRWBJ$m}FfQL+3q$^YSuugT7KVJeOmf!3kiT8{ z>qHMd@^u{Ju7x3AUlh1&VaPAVADz1vhJ2l4cGtp?pC%dZ%c57?$xRjxbPb1=r(W=H zdHl_CUVbFF@;3bCwi6NE^&7)4Ed#U{5qGf{AQ8A#4Eo}I=gFOSpHSQch|yD ze!a+d*TRth72&&UVaVSge0MDj`R7YH+_f;|Zx_D17KZ$zh3~F~A%C~<-L){}e+++g z?phe~_X^)#3q$^~g1c*B$k+4ju7x3=wwZM9S{U+6rJU|s81l~*++7Ppep>KjsF-Exocs_uNS_%7KZZmMUT4{hWrh}ch|y@KTmLXEe!eF1$WoNke?FVT?<40Zo%EP zFyyOq*TRs$SNQH)81nligS!^S@TFedwJ_xKd63Rs3qyWfIyiSN4EeJ~?@p1&(?@=( z@ZGgAch|y@|8u7x3A$DQt481i=u|1|Nnz3q_lxNBj^-zz+KEez#zj7aCMg&}@~$XO)$7=0^= z;@q_`Rs-zxEE9Gv_QiTs~CIQdUY z{Fe?+zJ6!$cMeW|LLOZH5}!1RK1I&U$sVqj0p~b!Sf2NZe4Wo{d5FI%_#%(5$^jK-QU@5`&mYj>!XAyEJ{u^d#NE zfA?ksCm6()8^0X)#G`Z9F6}@<8jBM)!k^Xi4K80A#pO%Wt9tKD#c?=7 z2Ij?*5H57>o*qrybRk;B0hTmjkq*{5rI5o6mF;pRtkeNmq+n&AzpAOSud|=4j~1uQ znx;mqvq5ZG%B*UdmkL?d#B%ZG1IhRh&*l`L$g$952;x%#2Z?###F7p9Dh*^!Ng>6& z>TLba`@skjm+aw3WKe8nuJf5QPk%LW+ZWL8ah*O@b#8+ra@vV?4zc@L<59-{`I)Ve#P9IvTQm6(jqr!1w85P3g@XZ^9&7vnP zeX7rJb{htGDA{6N7KLS0r~|Cv!r>y%DOlxHc{)~dC2r%hSS3CkwBTe!O{pqg{!>NI zW4(>3GJY>-JM{CLN}c?Y4krZC_+ZLf__FTC9)4x2#H`gCX6mSCSH+n#gTyVjLN*sv zjXHBw;?4dg7MLOy13@7on>1%rg?VRRB11 zajLzexbn;gO%)~9@xd-#`(3O8GOM`K>DXp_UGx=2+3t8@4HU^uED~oux@ZqBNeJ6AM)3GllF2zS=LXwBM z{mA~ejeWG?(Xqc65{!KWeZdq|^ds4# zpwe0r<9Dx``v2Jb7Wle~I{$O;ZOf%;lav&wf)L!NlQ*RG(J$4c;tt}ggmy9yW{DvGWMD*xYi=J!2! z?(d$Irl6~S{?q23neTk(H@`D8XU;iuelz1LSV~c5LZMn*agLYZ7GGsjrLw8j-MNht zhi=AS@#k)Ov};U#>bG@0Pp6(ZQ#QuwS(nR2U57}qx22>-^|WDkoZDpbluU0zvT%A+ zlp2?MZFyDM%(6`R5#{4jhomZ{M@~<4d!}S^QCZm=Bu0ioCZ*09lW~)W-d5{)wWF~g z%gE``^f5A>ND|3x<#;-g1P_uRCmTsn#>wMY>FW;;VkJ2G)u~u`+6gWzYzcGD7|d20 zGhK9=J_b3B^;ZAg@mjLywUxtC~`j9!$;O-AP= z>M$Ji;>6sBgU(BoFdTG#qJ(5Lxi%L}NGjiC2^S=m*>KPWiTWm^$@*THsDnk5Co$a^ zUmI7Rl62OK>x$86%zxklz|}O?`O2@lF5EiCO;alDGXq{Kp7?`VOKyW0z!fg8u$PQj z-xVUuTf1c{Qp}a0Oht-=B}ru#Qyf{|y0$neW--OF?xnzQJX0dz8c6yeBk}!|}6DgiL@(?x61BDUHCZP-B15AC6Ao$bp5tqH{A_?J-NLlm~ z$?+AR-!yGM<~L0`Br`tyU)fj545!(c0_&I&))85Iej=itt$KJ^!Zik z=~dYWGl!)orZU%LKkp_yJ)32~0-g9*n!JQDsglYPy3qQrg8c`9%^Vhuj48l>ZKw=ie#FQn^^(*>IE zTrX`k*%eZ*O-eaXn)2nA_Bhuk%W9Zid`iABod7S_(x|&Zy`% zH?7n19@o*7-|A5&wa|OBmbPrmVpBb-8T0cL=DE;+kv@`&=DiyjIH(|tUTWreHiH{g zod@+Oq&@2yC~QJ~3B9-_!eQ3f_CeVk=GfakQ21T1-pzWHGo?3BWe;g_!gs1~Ms`mX3}W z^FGsErTWplNal#q8>D-#B){#Nj>@H?<@5&Wep8apb~{oJ33}dLlJ5N_`86fv_fSbX zn)8#Kik8tE==n@Zx{W3IH7BHdx+EQL&b}(<%Ollg67mD+QBDLpYd@I>g;(!_<=@ad zPw}oAU-0U|mGG&gp(NK(JCRJRJcuC*B_?&dgM*V5XBGjDI}YIayR zra$QAb_SIB8_M=?z6Yt_n@igc6saAHOC zx^&)`o66_rwz;`|QpzZmCQRas=e42A1Z-@+dbJ$d*GhvDjr{q!d0{#`P}2F?aXM$u zPvINZq%m#Z?j=k7`8w9 zvFg`)%3kekF<$}Rtfrix$BByDq1ZpzjFfNTlLUv%15J-kT~*W^{DJwmm`D?h>W4_* ztZz!VRfNu_KSv_%IXV9EKGhESkN}7BgGgI`804@r1&Vg-oUz9d2%P0&R3s_?9qt3A zpDTpq$RByz{2K*>OxiAs*E#B4tzjPAz>)-bTqXXb^n3KY*$HQE%uzi{f?$T znhL7`%iS_W`ezUG3A7kAb!lF2lNjm}lf<(-q5M!KREO>VgMwL|Ag2ZeE^e|v#J`q{ zFLz1#Kcx9HJ;Y(G&gQ>MFvuiNyv{Au{O{0*PvXp<$GapVDgB67`xGZLp&prz$NM$C zp+!?Py~UZ1`1druQ8SvM>03zDBhR1kcf^xae$i>3!Fob*pe-^z@o|FLz6U9HX#PJ% zAaGWHgstwN4;_iGTSJ_>v*;7QsXL#dE&!(lX?n zFNx5dn*4j+;%NV7f9b5R=2cy89Sr}7+$eg$;rc{Zz&S*n0L7u6@a#mq51=@Uf55{f z_@{=zQ+k1;PeFN7{t*F=R!jVI0Upkcx?6Fp&;Ja;e|!l3UhUkh9IU7eXK}9MZuS3^ z@_|>$U#x$CqkkrTcOd`B0KY%r9~$6iLJ@J0k6S2nS0i#VW`FSrU;=U7<->&I7=ZpLn z<=<=M_i6cX&KLQ8%74W0^BR6kkL2%EK5cuc5BI%$!SDx^KSJ{-{}ScVCY|yJm5=q` z;mAKl!<_R)zPFr`=X=9vyXBlO@@q6-j@(oJFBRvUFY;Lq+$V~BF5uOw`I6tFaypDY zS8AAZzR2%WKI@0_2Nma>FYbbIup}gNk2o_(!XJ&Si=D%H!N{md}-1 zo}BYVepWlUj~V&jQa-;_kzb>HK5tO|dCKRUFY@!s|F)5Tg7P`%i~JVlb74!$zh29M zb8*P;Q~sZf{7&U_&KLPRl|NpOl+QUhobyHgfbvc>{Odpv$2ni*4=S(D@ZYKY^9=q0 z)pL&Gp!s(gCqBB&@Oiy2AA;X*_-A=B5kFs2KIe9A3HT_Bm8$0sgMU)-PZ^xg!FL8Y z?)#(lyuKLVkbkh^;eJWLrzrkVz=xb;75{#KgU`A4EN@`==X z2cL6}b_6*1ztr$Y104KM$RFIN0v!C~^+n{)00+NW>+6dF4nEf&zAwPRU#jQz^#BL| zJu3g(0S-Rr_Wm%y!T+Z6|0lq~zfk2r72x0>q%SMa1UUE~RsQn<4nFML;9d-Hr@x1z zgEfC}@pql_%L5$zH>&&z0S^ABl>eFl2Y<5s!Lht4|7XhQct3FP6^`1C9LRuMXYeCb zpDhNzLhEtB;P-ej(Fo0m`TB7nnR}=4NUowCqGDXx(2ofEA%}k89Fwtfsu3v;vP1bY zbRu6#_kT{==~E~BDP_Z$Q&s~d)z!LVt-ME9MfskmvpuhOK-bi~U$rg2b!Ild_2QZb z9GvgjGa`S+L#uza8$tIh{eU(kF$nCrKYJg}^X1O(D4CcssxZmIPs})|FbPA3bPKVV zv~h4Sb3(@XMh8KOE#qv7F`O+iwlKA#TqjQ4DxH__f3rBBs64D807Wi6O@f&buETTl zBr+phnK=IlCt#?V5)&nn=UxJlg&7F_lD%t2B{LBAg`N+2ft|nS&U$?kIy;d&9JC=( zLNYoRbI?mPOGYnBPGS^84TXhtN_tr*Eg{1Ns;6J_WnP)iDrbq4P^0S_o# zwpkGTX}J8dvJXfIe?-cnw?X6RD)~*NUML?czbV)6N;ovA*-v{UXNQHG&N6(76f>5l zYnD%$)Vi`sDF(gJXI`D~HjW`TH^|7zmBRauY=K#*_6uqBfd26>$w^vEEk%QVbIV+)1 z{xFS^5*7@PEu)+T74GViUGe(h1P@?+@Nh+NISX%cvP9zmdk?Ku^E}Jfv#40ZmI6r63kiPv0=cf%~^Cc!QM?!7;&M3#C|KbUQ;VG zXRju4ure#M-8zuvxZ^QyYg2`>Z+!cJb4|0pymCXiG}%d=YgcqNUM0t_4u5Q+uVZOj z*^EML=8Y%B4kstW>|U zam7**5+rLBYqaISyp+GN)l;>U2l|`vIah*FEq=t=%UC*wB8TsG76aiC{T#dm0dXjQ z5OK(OT~(Goc=tjz@gEqd%mcuIWPze#`xg zV*VChV9(I>Rxh4EnV%F-Qu$SCXB)O3bO}sP9GJa!A-hHM{{jMmv-%@!bq9T?HyVld zYJx)r17!0@Hc9#SY5#S;#D~u2AI61#@ctHThHy=#f)WVpGUG-@!n5-JO#EfPIBxjs zL2DrwixF+K@&X*!UuauXuW@K*l>v|5sp1K3Uuau{*MTJdOv4XtW&HEB8_St;+SD2H z1mhpA_H7a)&p>No$IfRWubFlWuFay|y&#h_;iwbZBT9uf7gKyPca7neK>T#Y(e@$d zIWOi#%16D%qdDRaZ82mdCE_kUR)4#O%elXONHX6)#wx;hg z@?X&K^@04b72|adj&d$jeQxovE1!`60maE5t^AK0KCesk*Kp*2(+8tHdPH)_XFvC# z;^cou<+J?AuTkEQ4WBjuPb*G-Uc8@Tjf#_B zqv4wk|DQBpu18FMUU?rieB6)WKCL+Uye{rC{6{@KUe}fUKIMJO@M+`m--?sJQ^P+q z`~eOBMvpk4eG>np<*PpYMo9jk@~X7Gu>J5`ceUc=XEl6+;nS9fwqNA)8#~vHrF`00 zH5mDM4KFbA?^gY}jyC1DDDN7>=eNXe#mVo}Fl{5K&$A$iyUFl(YWO{RBtNC$j~M=d zhCgBWUb@)Q8UCP#?=yT}xBO;I{rQdldxoD;{U0~-v)aM^((s>F{vQm#M)@Q4;f?3p zsQg0|r#^Y*^II?Z|D}B1@5ygb{uCph-}c{N3}9pVe~NXygwn|LulUVt!%xw0V2p;P+_0qqIDz&kmJ;n8Defo?-B(l+X2BDd$}( zf0f1~s8!;S@Og}WM9>d8^aJN}pp{dNNO6!I%9m%+u2oI@|BZ3_Y15`wJGcMqR(1yu zZnaP%s+DnpL!)_h{r|c7=>A7!dAk04rhM;&d%lFYy3a3Pwrp9$R($!5dLBsCZ$0nD zIZb=|2kL(Ji<^#89%PLbx*~=?UD8N zMr``_>U;X1-}HmEDyl(aoEXq{m<9k^W@QWspspy_58V;zPqX*GTk|i9aPf{QukRakRDIuw^13tbUH$$3=Ptib*ui(rc-6Y1HR@(n z0r#ua$)dts{0-~J$tS@$DD^iIYteCSIegyKb>cw9$4xFNC)DusroDx3W<-ge=i&SbsROUa!y0@4SV}X{B9{WceQqd+kq}|dYuh`% z!w;)C2GpZT{lTmtAd40Z>w{2p>+;sF&S){NsqWC$fYie9vtXrIDdT% zcg{P;aNz8>8I0lRaG@`ky7J1Nboz7nJmcJ-{~OIJ|AEJUf@xdTRP=@BukEu_+olX33bG1U`>7&Tm{97f~Vo1Qf&VFtpO)y$J zMEdh|!16T^7C4(8V{%F7zdPal@x)-y|0cn#Ok~%r`ADVd%)irMxZkiAp&e+YrVvD^qDY;{Lmw|ixgZ=ad~^W2e_ z&HrG*lJc+7>p!&77iwZ#18yC%{oDCwROlrNK9oxsDx6`)eMKmQ>3ikAB^^SMMaQA% zpXC>yL&zLa-L2>&(rnHAji4L_+4?m`qmu(Xs%J;YB9%<-r&h2dw-(Z96 zh4D;7|GM0B`5T^|AT^xt|Lp_r1UG%V;-<^xwDOzX^_6eJ781RE80;?EltDH@5EvGl z*y5qD*Lh^qi^}}gEqyr&<+t9M`=LAb=Jv|5u3waRKHvYqZs<0MpL*GU1r*sYq2i{; z1*rQ1VD~{q#5)Dt77t?@w%(n4#0jg-qUhQ{OOa>)G#a5dCGxhY5u< zkR2T+zfN}gkliEpa2F8SCq%aCkYCvyWZ}6|Jmb!d>d*LTSGMQA)Dv^$qjG-pt+_$D z1Lim1k$Xmt*oNjgcf2EqtF2-4ow=+#-kqyN-P~|Ls^~r`nqZ9WfcAz6_IQxmPTC)W zqi)%fX$BZt(}6cX&A<(=omqBPncr;!`$OnBoqQZG1ayB0ro|+L@?h3MnOKnoL5Z#8 z;M_RQMmU7C5vmHa5yt!32#2~TX)3Y@1onG~-Ydzg3y8#&z*Ht5;{API~=qj zQ9?30_tYdElF^G2xyk69L>-2MUYwZQaL{>)5{84$Pn3|1CfDYIbCb$9S;7U0Wi}ji zL889NXtKT+ChA~O|2B|bf(xP0s(&9}8&@t$I_t&Q*DtsV{PR(&avH>lD{Gbw5L^g1 zZ}q~r@8B32WFL19c;Y-Y4&uo}HfPu<8E3Zdxo%9G-L?Cmo#RQleGIf z9~_I>otf<$SKL+}$%zZi!s@kiKC zzi?YIpm8Z&<)&Yt+&!T1xHduXr{VFJjax4v{1GX08RJY2MaI(k9fs0$fs^F9;$t|q zs1Y%*(Bup}S-te!jB)9j)bbm%&t^tvyV9>aEHgHJVk*;>-IhJ((uV9Gub7=a_VDcG znRa1iss_?CM7t=eu8pFN=ltXQ+(rtbaTINHzc_={vHyKBcCGqK4;x}mS495@B?q{4 zyrR7ihre4jAj9VLGP_j#5F961rM~SdS=O)q&5AfyJv8H5qG4G_ncjV-qwxRMbXc`s zy+wy)-o|s7?o|clo?gMg5ekYj^wPXYPU7hm47{npqc>3c>5`NEkgCSa@y&z&-dNT= zdbh;7b*64-fEgsLwQtWAUxO&VknD=0@{zzI&4$^IiMDTBdCQ3HTjb}++bx@!6e_-v zUgjZX^i0XQGaX4oRT%SQ1KYp0Hd&ITT~h29I$M119VdE^^ZE6L@pu#3YMvCQaZf`o zHGUq{@`wTT=)|VBR=50g!UUyOnG4glM)Gj;l)?#0`#HHwCP4Y_qkF9kK41momp9d^ zqp_=Xl}ORGjuYlRiN=2B&a#zlZh>V?(vijfzE?k=?buE zRVQW&xdpCY#+0blD`oDNTk4rhHoKWoI`ha)jKbG3JsnKEda0RFQXE~YIz+X^2~x!~ zqohQHs4Ha;cYc%<{Z);flHSda>TF$!@_2RVh+;`lAjwe+RsI}W)yeN$%Z zh%F;;9MyAB=EEuXUG6XRO%7{HPv_jIzxEGvQg+qyhYrFGPsow3Rz0@&uy-X)JFys& zZhMs%@Q6RSF+t?RzG;Hu6Xgipzf>wH2k!q|K)lc9gbK0NsIigWB$jPNE38+ z;}(M~uEoUto+;mQ@%U!X3EY-f`xLw74IU0-s;DDdenWkm`-T!fj>Lhp`OlTOr2MN< zG2&QH$R8qY{*8h`CdY!s>m28SaqO5l^WqU>tyU*+d)<4t$Tbyfx$B2W|8C8AI)nwz zre7;@)Fq%rGZM}pBJKIVQ!pzNa=xPZ<4ztr%e_e=lk%Ud`7=GrA8#u*e>{UhCVAp@ z?s?7sE&efraI7o!_=LnHrN6GiCpkGz={-!xifLj_^q}hhT^B0+Sp5;Ux`Vw36(+7-Bk^r6DStHc zr2Hpq|G5}K0%!9NqKdrW{VjZ(gVKKs-{5?AQ?MTMRQya6 zd#(0W*R^&oo9YQKwf-_Dn>Bah`MYy%cXKf5> zW!01QLOm;$KhN<0q+zrxIO^j=vbLFeh*M8IAHY%m6FwMq>k+uWHa)P(;4?J*_5jCu z@tfs40~~VNHT>QH2j5@Mg|&yN&xu+NA5lJntRq1GsyO-YSN<0jxBLeT{|x1S$MD(T z{K)Wsr{O0JpZ(CYhW~=f=Ys+DsZrj+8c+Q>zvwW<$;*B|+L<#GNa_5Zr3M?chf@>?{_`Ele|DgJB2 z@6#~b3;8Fh{+!nX8uZ_(e6E2^KF!mQ(sbkxD4%N}lmCqBKi%*LmCrSh$-h+b^9`T+ zaSdehxqI9a!>`dW`#kWUW^0@{w`MCGM-D3Cy%I6x$)Q2BQ%PClO-K5y`xmh+xKj=qvO zeZFq^wVLnuhv5Iz@JA~D8N=uNx^P|`%7F8pN9cJ#f84J>=CqOfbAW^YxXOP`fP;_s zO}JwN9DJ^EdQyOck2yN#_l^LEoOLSaJpm3mS1A6$00*CIuYWAS!M{cG z<<8YS-)kfe?ta7PeCu${WXMTtzOZD1qnt1KVDz-XY0Le`0EeDGR5`EKhi}Sxwdy&= z;GAd6=TFd7gv&X6o~IuX^g}-V!1-=xOY{Pg~;7GAH z8jY!dqx@9Bg9@_*Wl|G|KC-S7_HR0%(=+%<-MXA|QW<#DtNqJ3T3RYKKN^{uKVlRf z>ksmC^4#ixuhjgzwVm$M9I7f|{#`{%nr|wFe$&@2-dawSKVQ4z8G1d!urWBI{`jQw zevOscBKI@wPjhQK@oCO0t*Y4XNW+@AHOz@sTHfT`hjZ6_t^MwaasH_&G-YkUqG~0mp0IxIpk@(;qK!S@}EA^e0JLcV!28z+123 zCWBip#$x8a5aU_a?g}Vdrsiz(K(Bop$YJAkM1Am3OB(YqPcRkG7-gh+-sG` zgXPYah@|{CN`DB)e31V^@@MmJ6wJyLDB7mrYY+&WMLO_qqpT}*2C#AnuFPxY9w(&kq zZ?cKFKaItiFY!-mdV8JjP{5uS&!6f4Sv*PQw>P2wDuv7RY*!fHwAU_V^BH?L0)eyo zBW!gCeLyp6(FEwXF%E9?N1IB@f3jYG9OD$4b2fkC_6XkazilL)3G_?S5O`9_1J?&d zqf{n-GB1wE6pc<6;)b4IG`2trd`WA}AvzO3Sq5Z>qehAyiaq?65SNH~7~ohe?>k5r zo;9A!;eg{0PhD`VPvW?);W!>@+tX1#+Fhg2h5AfX9CFYv(&2srNBMJouxLII;^#LK}1qqJY zcf9OyQFEWjDZG~*=p2<`xtCET^H72XVEjB3ECIt5(m=x{V5HrSE)#_gNu}gcFFQWM z6p=B(bQ8HxjSYg5yquFxDmdw+vM}jnoNj@E&c^r3FZE)G8haU&Og2d$KeD?$m{u}! zZ5VPFX8IE3QZSwWsHo<8rIKkS`$Er0UV%Zq=gzt{37wtD9S+)%C?Of0`-2MUYwZQaL{>)5{84$Pn3|1CfDYI`;y8xS;7U0Wi}jiL889NXtKT+ChA~O zf741YDZVzIim#0;vB_CUdtZ#(pb-rA@fZ=dfH5f%7}r+Ab@ zRs0e5Q#{I{G%8x*N;ky=W#9pY%byeke;OWlSvh96;g3jJ8q%X%TlKl6vofR4PajvcE4wCrd}a3V?9Z}aaeHrwdQr_azxamyT>wAa zzx#vey;^;x2i#cU(r)VbQBe*~j@!`$*7&V3_)akWSDXKrYp^d`uI;>DvRJ#qZOefs z2wR`fI)B)MmmN(Qyu^bpHdg8EYQ%;eYQ+y&LQPGp+KMgXXPf|dg|cl>*^)3+Bp?jfNY(oSDr z&flvY?BS9KUcTc_P$3f)_s``D%3-IbDw(+m!)(?@M zb{YC@Xvp+<8nEXCa*Y;HR-Zvoet2!L<%fHO)k&ae+d=q^q8;wH@MF0c>qyFf^07V* z>k0WIZ<~LkV36tWF5*!)S&3G*4Yvv(={d&3^wTvx^CQmmJg(97jOX!eO?bXJVH1pQ z93uUV7-SU3o4*g0mh}x1L0!nfF`rO=coyXOuw36SnAHjC@6!AyBM>;teYeCV<-bJp zXL{5h>|1UAco2e2^2F=hQ<^{Ru!u8%9zQD)N$C&Q!Mu~1P>)Q>{0V;O>wi54b*! zM1Fv5{-`F~_X!l$X#aZ^0)eyn2T?^{@Px%ODbXDZg8t8Uj#Do$YpUWOO=U$2r%E>qH5`gx4u z7(DOWcs8nZvWkDEN-(s;-=BS9lH{B}g#3$#z%MiThW7vd*;~y1C&TuCiaaj+2m6=W zU#6+8y$z55!k(hXX?mQBqdcDr?w#Hi-Pe;t1)?4O@fwfI4d+Q5&j)Z8$ICt(aI^yQ z-vm&c#V_)3i5z|du=1M&eki|v2>dOIqdy4G>wd-2j?g7g&;L@~^0{9L^g&-kKJAYo z2lo=dXe?@@9euX%mZQyV{guMczomTtWx%%+=$}{K zIE|4x8@d|oe<{|Dvq`IYi_Du14lf1=_`jQjz`TMhp> z#n%}ApyC@0pVz<^!)JND%ka5x4eg{6jq<5c-oF_BwVE&OS;@~U?;gYFf+OEhoctCI zKWzAWRX#r6!I9smVcK`H{C}qS^M=1u!x^nl^1q@u=P4nG^Bqw9Rfd0p;u94oe^BvL z4F6cg&o=z5hR-$pw<-T(!>`fs<%ZAs6fK6I*D!5cc)o8#A&OgX_)PycBY(2$bBp2k zY4`(%|6ApM-0*j5_%nvj`q*Rm0~&tN@V)j?^k0TQsNo+Q{&>~rY0K9~-rpMji<&`N zEhF_!nV+{WqU;R-tb#g{v5;KsC=$vjUe>z zQ+|`-uT_4#k-t;7Q5n@2^^U(h$l}Hse1nIhqYeI`;wKy2b!ZYdRdJ|| zCi#@|&ouZUdS2nY0o=#A@6V-yeBk#ff2qN*R{5(9ew*^&Yw({b|5FD4jPh4$Jc4>j zIV5~Oq#qIVqb%tMj%Ro{E2r9_UUn$ozdh`~jmsHloPL@Z#f#g2yZFg?kXKjhj^4(l z?#*?V)Ger+zhItNyDXg5|EF2~zn#_poqYe-i%mtulnHe`Gor3)P4z%;-=Ma_d{gBEz1uLy1?BN{NVM z^7PUN6ZWeTZph^&Jl}<-)Fp8( z?0R5>v$;WvVDo%Ads%CCa(?r=+>G7O&OJ{(b=1D&T@lDB`bB8n`FX3Pj^lzBaKpX7 zcW1V6#5U2>71X#9+n%Z`qNJpfHc#Ky|Eqg`fAl?1ye9RHp2rV5;T!$G>bWP?KW3Y> zgZlovxB0>q^~XQa`X^c1w&(tZmtRr0sP2loE9(~D_e$FW6)#_VP>E?!uo;v$4GPw* zl}@s-fGyUf4c4ngFkG=#x`5CsNXAsc6>BB7f<{7>G!l}vY7dr$aA9V2h#CpKRhpT< zYO=UiqM>JxAogV#35}7AM#3;5UVC;VOc4qpm?;!OFieO;uBS_7AOg-koLhUMhvY1> zh%K=v+826$mBjkDClrL$*_VG&hbg3F)%4~ z8OvI=8^&~B8;5pp7y|=Cjk{Aqg}7ZC@chP=Y1NP6%gfv|cwnnk9Nt?SWxNqm1r#_= zN~97$vB^>ex*t@d!WB42G$IX;bGAw-Uk{LWtswZ*@FAB~^hgMQM9QL1L*wWw`F+I} zoRz`h{aA7K)v~y3Pj>n8>@km|PpZmPX1g*6%YUpeyK-5&v1;oVvyWx(diL4X*~hbA zz3Z{`afhZ~Ck9QIrYl5KQP;bTtg`3{MPR!`Kfev9qxDQsawHe_O!U89A6U~7M|(?> z#p8VG=-SxNckFbut~7xnHF`|TK6>=u80WWU$aK^#9j}~HpmOZ$S}hncprUu9ik3A{ z|4>p0lsUFQ>fOM=R0TyC_b8??feM*>A4QQO`SotFr1KTns7H}Q@681j`byH>s(d_f z!bv)MgLE59(y=c%)hClap(8al*B%{v+@on?90x9Uarzi9)60qTJ3yG0*j*~urX|io z@o8lTK*^U_p!k*&#W9%f3*<(*T4zhhzcxj8IV zYV6v#{g`aww-nY?FK^k`u9nuOYoKb8Etwi>g{EYZQF{k$xr&X#)XWWEoubB$#Twh%TN*`J+cFU2kmFY7-WH zJz#q{^qM#+SuxhBhEx1Ao1O7Po|>OE!R(Gr3bnA-1!ZMepnhTA?iJlw7`C~wvqcVW zt=Q(yRc%=F_7z(!mS1n}{Ne^_x*TtEt$Jp8<<04tdI?`B2-B-^Dn*6quQ!DGq}Hv9UpxkQ7s4DQo`{b#MI(P zob6e3sL4ml?-BB6F+^r{Ake?~`R|;_hy515W5P|8Kj3k%3{V`$_n2$=_( z9^EkVw~qP$(L`8oy~JA#Nx1e3I``07?l}@^&k6iW6s)*fdG&@nT>el;w)_?dW@QQ# z%{v&sQS@*A5dT{4T!~4_pKF`4o{&HCw)r;-2ATYZEMDivxQFuspE&d4u~Q%l@dW&py1B0{qzf-WJ{C6dsf0E7GKdDTX6Y_w&K=Z$Pi1Mc%c)5Vz zrr+(2ZlaSREO1Q6Bc7w^4`|V2nm)wfx7>#mGipX$8@9y=VEGgNs(6yhZ*M~V4aa6} zZl%xR`^-p>R)2)8?x42gf)iJ(k!VM_#;8Br6)tnz_X!m3fF;&rI6n0_pM%OG2-dZCWU&*wzfswZ_&= zti)c*)=VBvhqNtoUqnQAv~OH@v~8LvemINY?qPQ=p-jpDoZ^;WqZa}$FO=I0vMn7P z*Ni1jIb6>IeZ`^jNBoZ}2l!zDewbdjR?g9iTYY8@fsYcIaA-N>QDzQ4%$#ZPFRDIs49=H*)-Ux;X}P>v z`ADviLlzsHdS0hE( zfP-JIVU8m}KJYIoevck;zI;~#^bN(yp9_MxANYg2KZg8A6(^tRe`WZ*2R?83@6+%> znh*8ieW+4#%I6xUuQB`@l{3-sxz^}3!_O=KY{TzWe3s$2D1NcwH)&&8Z1{c3Z!vtX zVY=GzcPf9q;h&)RX2Ty)oNMf{eE4qrLBk(Z{>P1cJfFdR&hYtOwa4(;k9^(m+23)^ zJnFN?i;sS4_<0RKZRB&b^!J9(a^zZolusM33atkuL;LL0^tAaTpZz0k{K(&_{7EW@ zeA<+qW#kVizuxfQq33&%;SVbRGQ%%de7WIgHQa9atf#jaevO7X4ov+oRQ#QWpV#oM zdL)0d>i^G%-=g798~&lH|CbEEPs0O-f3k-8-i73-ubqnjx8bwgpHiHB%KeSutNQZ& z)%(aFBu{akFFw=59d7v=t~UG!JUu$u@Uz;%oo4v78GNJR*C@Zi@OeF7YWR8OUuF2e zR()0(ev9(E4S$!`*Cxa7Q~phc&$VRVZ}>Zv{}IFIJ^Nn`e?a+mjak~9K4AER%Kw&; zk7pyehYilPQhyZ4(N`SDf70-ua%dF&ZU{bK+SpEZD1WT#g<^z!j^iAzIQhJv*)?YQ zf*IO`;lBKSt(VgSIk>-%Q2guw2cP%*^9=rZiG#a5z#)hCxg`M(IkWV-xH`bWr%mdr z00;ju`GX7Bm<69U-0KaW_ffVlln?l{?cHkltr7k*eo+3?GJ0aC;5@tm01_ ze3hrWNsrzp;H)G0_sbVlEZvSoOIFAo1)H*$CWj@KFvi13*++OUD zF1w;PV^{Px*%iI#>6U!|3$iP^SkKK0t>=2yZOcWgNAHFJ_tdgEBUWjZo6n8pFurc{ zh@2cJ)cNp{57g(Tql&R`(sV5ARQbS&915jDfEifW>74x5Qz46{S6jPB6lCW&FA__* z&27244V#;D3me3@L`Q(`Z*FZ6uq5!g$4?yP@FLT4v(hl4gGN=QcM-kYRDGI~)WHyNFisKap3ixYDj z4mvMU!f?>}i4v00D?WFQemT*C0nGFYBkf?7mnyl}Ii8@%+-w@JE(7P4vr4Eu) z^)36#Cz8&3@e9Rhlx=G15PPJt(i^0=Ux=Hn*g)aCQF?p6C{*u5<8hD7Y~Qf~_oO0+ zhmNwNai_$i0?nAzf2JV&x#ZGEL{0^MV*91?yCj4^!oiYDs9S~ol1n&k4=7yzdqME0 zVOesiOti!wk+N|qw|*0}ci5=N?eZP<;Y40(>!zvuVcj$#ol9kREMMKz)0;kheEL=1 zX2}&M3Rj%Ft;rGgO7!nQgt&Cn={*U*Z%_>OO7wp;#`wlwns8Fgxi+Hz<1x0bG=U<_ z1NKVve=1JLH~vEMg6Ya@r8Z_ugnxR8pro@ckQIb*3!t3=lAa`g{(&cpVC?RUeZ`*r zFkN}MMk}J;OPj06AhnzLyf3qrCT~;$>H#ik<5;Fh1YZ@J}84WJazkn?Y#_Bj;=bGul^7gIiEtwlf^o&fuUo1@iV(TIOZCI34 zOL^fzHGB_}puTI!J|qYPPCEP|2a^Yjfv^KFXyUs4!F^{zKI}*)C_Yh+z;(z#(J1;& z>?`)zywF8K=7FXk%9e!rKU$nUhZQhzg0|CAT zp^j|%EfCDgM9M#Eg>FG0aF#n);*#>8akNjwdP4rl+veXW7-WX;#S)CRxW}bZ**33M zO^-C82c{{w9lSTAwr&*M&sNJ?K>=2N_sEy%xWddlbV z^_rex9+@x0UltEA+kR+6HG@Pw^85+kBc7!4dv8MhRSB2r*{;V4X8R7v?pFODLLhKf z|0LZ(&+A8BeoMi)W~Kbu{PFmol>b8QKl2hFI-7qO7y7~b`?UqZm00RB@fX_SxS`kb z=a+ZOM@uPnN&5?J)uGV0s98UaF^46Zwb>o) zMaNa`txZ@ZXleIScl4_T9WV0X&^~c4w4FE$pg3G}C?(==1t<>JG1@qB^lxxh&U-xU zq^g_+QlYtU=-&TSk8gNBl$|+;7_n)+5tFj^5Ioq|;O$<#T_{ znFhaHFIa0kfqoNio>(TZviw#aauM6a$tm!tX2YLc$fBH^?w`=%=2H&aS zj|Di&ANL}-JNzNme?Y^Z)+6+19Rd21;w-l*T0UP>-15I`_z!FNCx*{^z*C0*E)73t z_-LbWDb1hya2*GJL#948o*o@;_#f7=8y|-}`NR3zd_Oua z`#2lFA`pKbV0dwR4`aq_boZZ!P) zDrcqP*J$`U!>`tGui@u4yw&hGs6PK__$?a#u;KH%-DUWF8vb{~XZ!fF;qTP&Hw~ZP zI=PP}%V$7&j~TwIAN^W!@&`5ig5f`=39|Z-7xOhdPLHhLhm?Pm;b*mjJKpg3XnjpL z{2JxI-tcEA|9r#GD}SEh)3#}e;kPKi)$r%2{56K(r~D0u|0d;cG5np%f0yC&9{eH0 zA5i|k82&jbf4AWeD*s-?KUB+qz~Jnsz7fbF7fF6#`2VeP28ZDP%J6Sh{+|q=wh)-H z4aau!tPe&xgKyOH!FeAV$~GW;ZloWg=tnuw51h}`EC*n4)$Z4qjb6$Qaiita_WxV|l*!Yl zP9NsC{%7zqs;<@@Yvpy4)c0gz99iS#Quhq) zmTH-fbzWrIn~Fshvfc_7d|5QAqDFX^%91cx^+o;`{->;b^KFTCrrd(vx~*9%LV%BK zLk(6;a&3Nf)%D{DIJiQp^0A}RbjF|wG;m9j$2rLVysh=Wcqj z;->SY%tbp{vL?`O#9gQfESR&%Etmt}T=--+sruYP_+*wlg1Cji|OLCwpAU zDm5d-FH7TyzaclG;>~WpfI#(#z_LD-^K;X&z)eNXy%qDdT(EGE;7Eib5EUzGekujE zFem4;P}aebHE`xv)clVGmWtB4Dh`&+S$LGl`o1fLg$T}(=tZ(9k1UcSb`P@T50<>C z#F97@uq2Kwj7bS9&(K(4a3%|WjqfxfGJ4zih4N}Bq zo7aY+mTSV01gg(*G(R2^1hcD_$u>>}G40(&DcjeEK{v)yAp78PQ~^&LQOX6&+)iA% z_lU|^wZ^2&t|`)dO;MI*Yj`4=?St#HYl;*o>+Y1*vRoFK?YlQfP!`D2;GG-F)&{Y= z5G=&ru>k`(2X0BSQBI`-KLtw?oE`oM2bLsgw+eep5>%-N6fXa+Ao$a;Sd#oqLii(6 z7JUvHztScn)Aqw;ZNaxPQgwwTiRG4=9|Az}5KE3}YS=rMuv6_vtrNk>y|r@t^? zW*)tV>gi{q&eZJ;yjsCjG*6|)hm+LzOFfR3Wr?`d4KZd{?&9?QPnNnNUK5L79LrS? zDO69E_jz=^CDrKJzb7t*W=lCsqy8zTl+?g^n&uKcN?Fo-LR=`@Zz*ZGHz=Q~rs7x5 zSP70j7btvdj42%EW_3vup*P6=>5_9_t|#=L@rjj)X5%PO8slu$GewU69G{d)-(yPf=f+NoRZOT9Nyg+e1z_kK5k`e-7C42feIVNX7P6(<1pWwe&i-cum62adxR7 zyOZ1juLmSL_#NPyUdraGqx0I;9auVNh@Ip_e>VyGFR+!Iw2E#~#4YHPWInY&_{q~waE%b( z-{AJOu8(WAFSV}Ej#Q@duV`JLctg4=r$v+ghF1BhMqS8XI9?^es1`rsY!4y>GevGF zo2*@k5a-{O{k|l~C+kojhIgX;0grD*0L8UwKkq|@UzCxRHf9sh4FHD5x z)=Rv_kc4ZwqZ1FE<;nw^`z{@F;NPtuzuMI{WP)I*BU^q81hX;)ioC72*jytJILnUgh-(4l>2an~z>)m1U!@PK0DOgha>d`($wLiqa982Z# z28ls>>uNRq4W?mOE}kr@ODLl@;r#I`W6yuPU{)sN+~bA>3pU=s;4F8GU`hEeOvoSK z!EOF{GPN=VivCygpNv4@Ecb&Fmz00I=Fjw~f0Vh+|FeQYCVAp@ZX%QwH_Ked%%8_S z!bwWM3Ym#J*&pIxrsMHJiJ?CxiRV^LA7b!ZF20=rGipXVG<^#a1&-%W=zHQxD!(0C ze&O|l@oc6iK29*xM4jj?BE${)L;P#?PtqOacFlm_bY3MGAe%qN2$J%z)&Bb$i4UF4 zKa30g;QfD_Fkd3Ww+XYoCgr#I2F#OHX@H-9O zuHg?Fe5Z!-d;v#2(MI9!@P`=xwT3^fN1Q&nfWD+S<+Nz|d`)r7|E}TFcJ3#J&wKAv zhW`!?KWF&7|4|XJ#geRw8aCzMfssE z9{9Am3T^Sg?^FJzMju{Rp)DTxJCz^W;z9l?imy{SEdK$;X#>IYtx-I*#e@7o#Y0;> z$meyt)5z!hAZ=VI{|N0DLR&n@uhI0hwIY9&<{R4LfuC1C>xcX`$`5Vvz;980Xp0B^ zf24fZQHdWk@cWd1uov5+1D^xJp)DTx9Geeq@xae(xrDZO;P=WOTxg32ev9%$ zTRiZ2{e-r7;P)v%w8aCT>%fJ!c;N3;erSsaeud(pEgtv-iifs%;Pajo+TwvfsQl0t z5B#IGUP44999{AjAGqlA6e^B|MEgtyC$RAv2iwFEE)ibok<1-uhp)DTx6O%kPyiEZP`J0sg_5cT;{VWz*fTNyYQ2zS@9DKUZ z82mKle<8pjYp>#8HF!p^hwmHwEX99k@GBLcp&bZhLm%G%>J9!)t(Un5=iIs_25(e8 zwse7`{H)^tXz(v7&if~Vda5q{FEkzpTrbTU4xi8IM*{khFa5yzE@tIdBT^jl4D)rb zQjPm>^LYByGft~^ZvWRe+6X1p)w*M?SUir8WGy4Hn{x%VxpLFD*I$@#f?eW4Vx-r* ztzNVgV?5c>&w0eMPz?AgN4dCW#^o57&2R0>$6@@`QGd2IhK`ktMv8$-W}2%R35Y>T z9B@s`t|IhdQOv!Y4Q~}8{PKGCFr|k`Bq}MTy*GbWWlU!$B`j z%xyU6yhI7ZLFXq*NJeKR*5-mGN#&a?;ey068xFc4QQu@VS>Fp2b+D-KcGF96*%a*B zo`|oFE3ZpB>&5-Ws2>naAMqxUlFdR^`iL{-_c9DjMZv~p#o@iR(P(_a!W4iq{KR%z zqwxfRKf>rgrPIOXje1acObP&0^nk*n-zEtDG(7gQ(YT}Ik4RaxQBuC*c3O@5VW&0r z{I8}j9G@N;&*+o&tVI_%*h>xNF473tMp-vS09QcKt#XdDCFJjj(c7HY?{kC>Pb>>o zOqRvd;ZBl2pUBmi!|<~-_7!{7$UycKTG@m>kRVkB%Hieh@Fdb+YO$OHw(3Bgh<^Ln z7|L0Elv;E6Vq4zPDwZxHVY%2W$blO{!3LAXDfSMl+!j#7UtLE;yp)lL)@6}`(@%gZ zD_3}vi&pHyr8Xn`HuX@Woo-(mx@}Xt-_*+4WbFU0O-V)`UR7yd!?o-veCxHg9T-Q} z&)L3d)|XeOm;5Ex$NBqM7sp=C(m@nCjJsP5ge5viK3Ulqx5x81I}3adgqtXT!2NR` z5bt)K;SHQuEZtfpVf>6bnXQG@WU}$;>@4N9TEY*O}{|f&B;utN2cTPpEbRqMQ_#g7H2x*U)1#e zQGlq7y=i)@7tf!}e-}?u`L!g}A1(=|XS*CHn7#HPd$;C4fI#4^{s>#$L9ea!iS}xO z!z76B+BSb=lazn8Uca>xA3B?V7#I4%`}?(F2uH;VXFdEqjqBAhSD<^jVm;kSO? z*C0Wwx=2cmgp$7Xqdh0_XBd9*H+}yQDIe?`_iN`NS)!89hW!4Ec80djZ`O;%4~J_9 z=RjP$EjJdYw*b)MZ(=A1^n)j8Lu3gO-vF{Ww0Ah-$N6CVT@}g0>*iREC(iOcQE|xO zxd1vXz@ZP<;Gb#mjjHDygRfP5p20C12DiW8vZ?19pUj;vuW>*<2G41@FTkO{nw&*9 z8T^+TzD18v8}&%{LG`elFVXY*q~ey3`9W~x|H%iV`}IgZ`_!*1PX2uw{=VV!oPTQg zT$}$H!^iaj_j`Yc_4$_SKT40(C$GE;#iclAjABg+4Y;rD5n->k@gT=C}&e<#Cw zy^{YG#W~iCAnJEOarP7B->v%ax+i~7`P?&x{38@UQ}ZQ1tKl~qeN=oj*YImJe5v7A zYIvF9=QX^_@VhmGb%x)fVSa<6{>Q5R?=bv64ZmNHMEHhQDa|0~&t7 z@b6Rk-!c3_4gbjS$0+|v%g^|Nc-HWL#|qGRBu9J5Y6r(rN1pG`RsLayU!(k^6(|1+ z<)38udF7vK_>U-mrs20Jf41Rs9g&5G->3XW!{>S-D-D0A@~<;|-cx%Ge?a+L4WHlC z{?YIUl^^cOgZmoZTi`x!|8_a;^l8KXcFDE}6>6Oxweoye6>UDK=eZZVM)o}S=<0+0C(Km( zzMkj)1n5aZCjj~*pvMWNMhWx>K!b!%0QA`EGB4(YQBKfL8BY1|6NRvo`V_+_jB?@M zt}c7PJ@caQMBZ;0Mx9CcS%y)_68`n-(Vkx`;b-r2&(gtn(s8LnQk7CS=}D<`#`tfU zZ>uc_T01%=Z9OwG%4E+hJF9F~Ra&ZX#Ps-sCxRn$QCZm=$})H`+$Mj%U1nW#;mu88 zyx#Et@#D(cGq8*IH zeZ$A2^ojE4a}>|eA0xi$VoQH~(#26{*HR41L-XhW&ia)2r0wYXu$IUl?r=B8wBhzO z)?IYwfBv=Lm$o%d@&n%OtFKzwxMFE%(M-g~j>eVCfq716S4T9dY1N7qOILP9lUAMZLhA1t@NUKMXm>U8(78el~oP$bn3~wW(D3=Ar3hKs`476v30IOuxVgu-y6~ z(zhy+@3s_U(+@SqJvhdvn4t+!eyAf`e$da#M9M!ZxC?>6S?*kkvtdSw1Q4mHNzrw#h0#;9)-xs(-V^;vsCnEc88jHXw0 z2}iWgwCBb1C-IZwNh-gM3H9gRO*A3f6|f{#X{Y%GW~4`Zt_WM*L9Ib!5w}qj;90#w z{-{6mA8L$xr}keQ^MEWko4-d(f5H1(7^6lprGgp=>oVg;u1e1>6OWh{#|?k&b<}>T zOB(CO^%ss&$M>c9F$2#llctiSuaNZxR z9NwHQzIq5bn})#AKfqDWbJ*-&+($iJf`4`h{6B`kdEZAn7^xf_^!5{vT{dc*9TP{r zz;R3*?H;<)`FV=|x&h95o2Ufj%lC9ZxSzuT$0f+GAyWa0Bkn_mv2vU581WnC)&j;)@eSNPg?46c))Yr%5dq5|AvoLh2ZBqxV@Aq%lY=ayWhM;jnWi5L+SqvHCU2oo(Z zFq>}@JLJJse(U&+@;5i1IaCyhHh%tlQY&*RHhn=Tn-Aag?TS8(cJw@dbj8gdN2<+^ z*0b)dHAQ=_$||8Jj*w+VMR+w%-@nu6n=0M8d_-i*qN#co!Z}Ge5A^1y%VC7%D&Dij z3%7YiB-_1?-}Li}n-Aw8d>6_52&e}Tuv{_rH zpFXQ!wxj(YEOlC2sO*ORlX4BR80rKpi#i$0qRL{Zl3l+47Y+SCEAV>mcDYBZFWKDd z&Y{0Imy^sSgfo*+4YC$}P<*l_ZMBpI1kZqA*>P4@UftKev}Y~Kjj!mPC|4ksPkn=^ zo!@$QZidJz=upy98@9R{Y3RSFq5s~7{x9b@yQkWG|Br)2O_}`G{EMi@9#f67yRL)% zD!Nzp_FxrVX#!FZg1gvY5nS1UcSLT}o{B!q?CN=L!}^2eq>mH@pUUC1;bW`WdS_pa zh$<>Ta3+AW_0AkR4xAp+6g2fMX9il%TO_r%9ACb1dvMJM?ICPKQuT#4B*k24Lkkgu zs|;;u31a@>np$tJPwEGe<6Yz}xoxPg{&l&Qy8a(GNZ-*utLXu@p#0|fx%PbO*ZE9W zt_AfeZKOd|C~iuS?pkR72-l?YV9o_|Ap|T*TxnOERmG;UqF0@JsQmmMsr~+ku=!xf`Qx6hhtBwq)fIJT zd}sCO`u?Bv51!lq+oxo`6 z+x@5ubTQ+khZR4SeWFUZ^=GZi&8X<@khW6S^FZo}wm(U!+b%hcVC z+hKjhoV{}HM^)U6j~Vs-AIVKdg$DUZUtKRzu3cB7y>Dw~aDvkjJ$Tq=9LFzJ7!cb0I2E9)&zv@1#} z;wz<_5x;we5XH9iE|Ff5B`leswBydU7gKusAE`g%rxlyprC@>{7L)AJ(Yv12_po;y za1UE(zuL3z5Wy%6*R$@DuF3bTQcSLlC1zp1=|}mVr{pFy{R2Xd*wxPI-`mjtguOoG za+s0Vi^KM}4gHTx85Y`1+}|$Wyv1d=>B04H{5R&&F~Soqd98%jqB}& zno@U_BW`mziVn@IcZZ}r<6Eom#g!<%aThMkb-9Iw49}9AR#&#?KT=QB6g5=I9(_*# z7PeLaT#vuSHCeqw<~E9a-;TvYu$N#?)bOBtI*{f*B0$_deOo<{l0N^b!{pwI;yzkr z)!mKXCyx4~TuC?Fj|ZJse0^uYnY zT?CW~ok1awDWpc)v4x-*W|XBCjKXkz#qrTBIaHR(5dR@5Amf5LN%EY0NDve$Rh*(U z9#fR$OBiP=9afmBbhw|XG{HsTD!W7K*FRdn)JVUOqx3ZS$&5hn>~{>#_`!L%doZe1 zo|(f3bpXz#ZvBCjg1f9!84Rz%X%I1RqgF~{#*M=4rk^kdvzwmNfG8}PUxMGlR|3p9 zl_nt(c}NImEbR+D{~!@o!ku+^5;{API~=qjQ9?30_xL0olF^G2xyk69L>-2MUYwZQ zaL{>)5{84$Pn3|1CfDYI)04_KS;7U0Wi}jiL889NXtKT+ChA~O|I(gbf(xN=ZH$-8 z)n5fyUXXOwi*W-Et^&8bPLw(k*E-zjrYJR$*JYX8KYdDvB*|>wrmJShRA<8)q->2+ zHB32LR_Trdo;aCtZeYX5X14cj7~LjUzv0Hg(QVQj#33)p1Y^0QSFS1H#>)CkPw8@} z^2~apyAkXjS5haTOnkcI(QRS*Z%=eVl$H;^j)mugCo|~NPC_uVeXpiXj{V_!Pd=&F zDY)w`Msitqdz8}1jq5!3gj*cFj7qCTD&^&vz}5|;V##)mrB&J9iKTst@D70k6O4)3j%`;@MpdX?T(t~C2>J{SALeG_;d1f-X;%t@KMfy# zSyj7)@JFQV@M@PgYSm#QyoRVb7p{q%GAO_aQ0AnRzty^XY=o!YS9Tho8@h5|!DWr( zrfZf@nbf+nNzPVW;iLHY%+&O;saqb*UV3@<6SAcGV_ETLPkADJT2*$<$BT4YpnU(32Q|T#H>FHIOs_dhg6>q)f^|wEK`{lBV`x#ZTko%>=&z_RGI{Vg4 zE_-&m=Fn_U=KJeqCHIe}(hE}QX;s<(d{_4M&!+1pWY!}8ld94uSKXfZ&iY?xK9M>* z`*617f=st0uK2I)>g-|J+4Aq0>@k_EL_&3TVOqwpQ|DbgXZE=lSD#$Ha#i*6j>h(u z)~3$t=A~;|o0e9$c2+kwb+xWpD(w^B9^8YD97jKV+}ScJSSwz*bAC`Ut5%M62*B0* zgH+h+*uP5?r=xYzcU=RO^>g$H9{mg4Ll!D~UG#)&vQhMc9)S(z+<=}$V%{YEBi%)d z;i~Q1R^cK@bcIp&Ya{w^juV7PR&A)=r8$QkTjHHx8&;~X|5Y1svx{z7@LkLYJUlIxzNT-PV$ zy1pd8BelF(9;2e$^bCusRoV*JDrC+0yEj->9C*F-4R9=J2U0vM+ku`}_`TTZBBV!G z7NWiHOeMWhkFugXz04#r-Pe^*ov~y;{n$nVE)^}N_fds1(T3FR46w+BH%?pXm3oA@ zM)m(xkFv5qy(|>B1HhwNLO<6d(mtd9B zIfX5HX;TfU(k&Z!&OsyEQgR(pTbf{|qDy|OC-9se%j9~Vn%f>7JNnL1M-s%|HE`pi z&L~@*%T`Z}DU2!2DY#Bb z_qbrII4%};1zW{K1<0Rn;g>z;0;NcPkFLK`1BKSqL@!l#yaZ(*U7w(A>1HH1s0PpJ zv9KY^N7BUj;A1yLAs;c3!`}1x5-vR}o21l0TnFyE=g4*bIEA@cXp(&^)1j?PPeXFEG7Nm#yfy zYBko+aI00w#$#8tEsfe%EpKgVY^%AZb!GGG-2xYGVT!i3ZH=8>Q8yOcXzO|-;+B&<|iWa_z7Dv_~I9>;&yR)e+>XezF#grLXk)vsu*u%QDKy=R< zv54)8)C2Fwz6$y)U>LzF+wyJ7+KNn z7JShKP}~|PuEoU5zcgOe*^MoMbUhJQ00(G|4Z9IE3{-|3v>1I;?P%<3T_s?XoUx0O zQ(TL4Loswmt5-_xV>6s^XQGa!MJ>uL1LI1qt7T~yN~pv`HZ^q$#vy5Gs~-ImQRo*GiAjT@BaL@2VX$E?#r+2j+jei8R5eeu(rN}fZcU-H>Ccf!drshQ)FI?;6+Sh} z4|QbAZ-HP|CQ_W@#z&)wYheR}v)s9YCFNiFMn{k52q1stZS!vw3^Mh$C_eA{{vUhq z0vJ_swvV6P4X_Ag13`_K>K0cFs4?6W6>EY)7YPsq1S|z&2qenQTr?;GHbF^46fCv2 z+G3UVqpeo@)wX!4;uWmDV5=3iTC`e&SnF4`(pJmweP-VG?CiT|fuQwYzwbYgotbBz zdFP!ubLPyMGnag8%gB=85?}na35Jf*`Oh}@ zypZ!hi{m2y7#bJ-MXxr(v`j=9b1Z)Mf5y$V#F4z12>i1$p!{-cD3k3wFe;cPS@sWSr`#Sx*3DYtO@-`k|`ak3Nk`Cg+?BMwFQfJXrT9W2g3V>V3 zf1;m_ak4~YTjGiRG~wcQsk=G8i@~kAe_~A6|2-VPMhTGe6ZjQ!1eO1`fa{O>y%JyQ zUvI)9BFwR89cMl7I2fE-fB3cT;N_i&U(b{F8~fcNO`SfP>7evGXzU!u%ww@m^Q+T$ zg3_GeeH!NOL+R{u^i|`-IsEwM?(0_5CJ=O%jMdXjh-EEOR>Yqs6 zXKnwkhhINL650*SB1hZl8apSwN5(fpTWxz}oQ;OKkpQ%iaCc3D^jFXxGEaYoEcg8bF$zV$O@8==T8uh?+QWqiY)l5Ecn_i_^ny+^;z&cv*7n+ z!Rh^izckWmK!b23kU1uZ4uC8_=QR8b$B$VjLa!$K-*xDU%DM%qU5Dn@UA(Ba3jT(s z#dbHMd9{n+uWqU~_+|6z;jOn;CA}vZ@8bEFTDxgBY})aNV$<6$y%6HHY!0!k;pWSH z-$&agYgS4)9Bn4rLcz~x9Bn!J#DY&_9POkl=MKgp2W`0UyKw^vKHiH2FLH2K&e@D3 z-Oo6Dd^m>D>B^c&q>I)=8wr~8m2Cr&(( z^G65&tb@z`8zLX~In28bzaRNUj+`+e{F4luS{{BlX?+S9M}E=fh@4`^A;&GB=?;#r zrSRJr*Ya;;9P&{%!k4oZfFJMRUj#q~mRtTmad5Z%Z{a~m1ox*uk$)%STA#jMi9|-@ zmobj~q74^0iya(K4Z*Kv9O<6m;P*Ow^izcYyDa$a{9dH<`)dbx^IL*SMh1M;1(83Q zahMS_|G;{^Z?P@7>@OtYg5S*Yf8_8{Zci|Nufm70{tqz@8roGc zzhDRCL(X%|f1Yv8e^v1}ak_s|eAHij}Sd^w{@^pX9`Bp)KbgZUej{2G@3VUfFTlknF5A(j_*RWq++Jt{S>)(rQ&`kL=U(SRP{_)H^PVqM|U-T8e z++U|F{#NG8*;~Sw{ldm8eh2gA>@DF-xl}8Dl>H0X7XBmbze@27+25l0a-XkJe5qG* z_Lj(>$9n#k;!8c*sO2+X&e(z1lt1(2>@AUB%J^@U{0;1vv$upV_w7!_-^zYDdrSCo zhS^@l?_htF`zOL5&iWt9xaco?0La-}!rz3-N#;bwk8%SiXKxArMN9We6(5V|V9rRy=_MVfj%a^magx|*e z9;}zhm;4^exbSafee{`Jvc=R%4j*yk%&8Iw$Mg3)oZs^u9DKQN$2&Oq7chUCgM%;c zA#)V|KI>Vp@K?E9nj9SR<-JS#?U0SXZ!-_)bHD%t|7-A&S?Ayg`vd#eJ2?1fflTHH z4i3Id6L~=4G6UgZ2ZtPd-+<9)b^Q-_ezz&Ud@s;vc%8u=XQ_|S1%C~U|5?eAGr8V( zaPU81{s#^YJ*Ds4gY^Oz_!IO8bEtzOY$!)K(!s%R=IfqtaPa3be}IF7zml)}P=#N_ z_&Eya&kEjH2Z#J_QTicsfrCT7^lzp+IQVBVztX{t{+#Zm4i5f3%wOc-;7?-yGKI@? zsMWzC=TN*Tk-6T%A?N#CZr@P&aKomBV+wzj@t-(2xJ{UvTj^0Y7B^rua>quP$8gK!Y5bW^YW)!4dY~EJxm#g)h(h;~YNZ z?6zXO!3tl>@<%v0Waaaa>Uan5#WG;Y>{mp`rG101?;Pd}zK3ynPuKW0iZ8R0?{LzE z{ypgr=5B>sl$NF|dAu1B9XMpj`;2^-75p`h z(8AYEaOpq4uJ9ZX$gn!5?udI|xQxXjIu||YUfldz%*AQ=bK&KkIkT_0xHxXitV5QK zDnBy0Loz8b2`S2&OU07&N=fibi z*q+V@6)nKM4q$-^}GF?>4Bvcqh^2 zmu;@6ygRoTX{jHbegy>urN4t;(%kEZv~~J(2-7l=n!KA1gU2zNTS;L->F)_hAFnn# z{i_JmGLhUZ`~p`Dk7G0!b8Ujs&qKu~Bk@uGcrVuJe~B>26dpN^k#}MFW+J$xFZNd` zASnL(oY4N}Dt?pWi+r&YJXRupu_ayc|A-vG-1k(36>@x?FUdbRFh8Kbpz@^kAC zs~SC#89^)*kZ}Ft(x7M>0X_C;9#xPT{W6>APXB z8@x~dTtyiPa&w0ALP=(tpfl{iikR6CvWC?<>N<|md_l2?zt03O`18WbY%G`^j>UdS30^3ZIe!v&Xe8pt?g@bI=l+_@tN zE8rV`q{9b(9anI7?g;Q@%#(D0;qP|F4|MK`#J`r~i5#g>s}z18`{mmo)N|{>I>nE( z{&zC2`9D_tC)xjq;!B$*W0In0JM*?HzO*Z^FfRN%S)aERAN3YS&WaNL)6ADKNzp%P z=^pmUgb{v|^?FA#F8mtCk5hd4#$T-XE17?~;$weHm~$0>gN42EiZ6Za>59LV`7*~t z^#3aJtgboY`)Y zI3oWN=F1syhz9*@IR0;y{O#=D!8R=LSF(R6+amuB_WzA-Sm1A9|6aC*FM9Okd<%ao z^A2TP_;MfiQ~VC*pQ!k+Q`#`Y6+g;;nZqFRm$RI4ieJe7DQpYBH~XUh6V{0{cN zsQ52)1PPb&k#G3_qxg?7|6hy?KgtbUH-4~5`M=Hi?aR3E3z`2J#Xo`h0~J5X{2_|} z9P3k}_%+NQt@w*s{)LLalKC?gU)mAb?LqY4!2CwVmuKV`mHe&Dm$|%BK62LG&5GZ_ ze0RF<;Ns_z|a@?VF$5zY;e@i5uyP8#vlV7>MO6Z~Srd z8~9DGes1b0y7-`>r=31@_>e)vhs5J_?i_xH;3M3i;^I?>4voi$4jnSMv)|-uoQ`3M z(WAsWg1*WnTc;;FlC)j?JLRpj6MK@^ytRkaPPYED^}S@f`2c($vXN~47jLh;Vspc# zNxSJe_9BjMDNE#`(l}U>unH6i?ZJ-1Aa4%5$<{Z_BenJIwC&MXY&IRN*ywG^)|Z9j z+ikZd@SIAv-I>7ipuBB;;vM*}c?^m^+R1b0oV|5(Xm8!z(fLDrhDo1 zUHh9&Yr8q8&@Cp_ZHgX@*T|mDd+i`PL*D_9<>l^76{bqDc_|m@NIHeRX95nT$(gBp}K@R)13C+DP!TQGvM1xsTUeF0*};F@X?k%gGTh|ubAr5H34X|IHovJK zesuW&hO#tT<~0nccg00tPH7VZVeJlObyC~ja<3|1)} zG`B2E{3<5Ox(*Se<7XS=p31{N%Q*td57$VS-{dUm@8EbC!*z{Lzk&jFnS#Hao{unc zosd4#*6CLg2ATTVb0GuLha`$II{jKgfep67{_iY~Kf*_>L(&&Hc*hsFOO<)F>s>H_ zyD|VnloGB`(zXDD(P=dk7F2%k1e71TEuz1a>o)>q66DGHxng)6qtm~c!h+I|a)(*s zGba;3^IjBPGe*~_Zk7%mh{E`Dd9o!Kf_9$yr1}+IliKK(ihgaq$~Kd9ADSJ z3Qm8x5ZRXe3%rdSLFG4`%TKNo$`9W;B);IFWwbqn$vfB|$n6@fKm1yE@Z~H&S@(hT z`p}B}&*yz3Cn7@fZ0+6M2_KSoa-=Kzy^KLPV%kr5;4Y(J2)kKN~I$gq6W zpmc-lM>Ad0LH0%b)s(4VJXYOr0Gl}o@6vhfcC8b$;AL6xDOvEDS@0!UaNFIa4n3_} zA7nk*7Ol^mJ7-~C18wOvla3HxL`%I>&ac~I9%?_sJ+*T^6=JfT4qGBw$@WQ!@?<+5 z(o}lya*9}rll$Dm`1XWiE$Z*_xMZt%%Ye>;n2DsDcgx ztSF{GI=HH$g#MEBS3!SMNyMypy!pe*rHA9xCVbwy?_&C)gRD%U>^il)>d(pcTaA9n z_N$I5Z+%n3EOEe_?N=X@tfGVdMx6OzoT8d|5QZ#0xSW1cWo!!x3tF0&B+9+UXldIh zkA}c-#$5S|%}Y;DR`uYs9a~$z)IxDh`MJYr4?&_ygHG{VF__AE=U)s@%CO9oS`L+3 z1C`<8Mb%W4Jr~ZeC0|}cH43)x!n!yWWdRlTJSxK4*`^TV2VIEGAI`MJ_YNs?-z@r( zBGSbdcZ<&uQGD^v6<-N8z{&RVL>Vd=#T_E&#I--L5k*ErhRew+CrYxs9f$X|4r%Qge*Us>@wVHl;iUDbLAAiv6pVXsNC-QohlS60;EPo zuyMAWSJ~c_ld6cjV<*i^B$_`AHT1Bz?@sJWQr>nvl1^4dO54`9pe#%2c(@!QQ$drn zrL1&ISxW*OILyc0v~k$-_IW7tdraLgZ(o9IgmV_DiWl%@8QZ#ZY%4WKe^0hP!m5oX zqN5unZ&EBSZC%^)7+q}R8w%fR1h+6N|2DU#7Tr~1M(OlqU&o2EyaO?392827J`A&2HMh6My}MMu{m^T zEHx+ub-`DWE#5dX)QG~O<}EsI+!G~-jO&E9)D|V1_w-mAqY9TqcXtzhcIC<-d-4%# zsRkyi@{`SP(wTuhZ=}ZVd?YRRQq?vb4~pi`v{R{CWd`X@ZYc+_UxU4+rDZ)`5g2ah zlC3|NTHE@5s?wrf5;;L+if1CWkVD+-9rtXF3!gkOlpk51+jRgR{soacB+bZ_~jL5KE@&d0fZ`En9p-_%KbhuV|)=xjcm)#qJ6soK}v z{eA1eg*f1)NoRwtOz74}spgx?pE_?Z*b5?z3ME}V4+}c!(#pD}3*k&H+IWsK69ts9 zplM&|`M-kDloZPy{dy2OCXm}1v^-EkFk10JkPgAAhO4+$ILehK5s4$*>=vGOZV?6vGZJW!YHpk_<5O9$j6Vr zkgN}`ApQi-F%Q;0Lx_#~&v0LJxE!j61sLu#gb@6(|Imy2j3OWY1nF_;^1~p^_zB-b z?vMAhIP;Re|7B%E!-GP%&yAikZCdoAyJpg1aBITXg!01|+ZiTT$~SIV|aMq=-ieEBHg1~U%#KsgW)siQ#xgR(!z!D`IQS6^XYAI9EMO|6gQ7E zj7y^Q@zBM150#cjHIvM8Ts+^L!7hA57q{%C81}CAzH9CcS~J3ZBw#W>3teUyVA+hw z#CdJmOp0@vufr%`Hby9eO)6fUA5Zql^1a%;W-f z^R%dL;U(2obizvQg3C^!A^rIa7dWS_3@aL3G}!ogNRy6nv4@zLlSDc-kHnlBQ@M!B z7Uz6a$%z|uddnP>&CV?Gq{wtwOXi_7d>V?o;**b7ahG{=vGa*1RrU~(177PnleLu< zpE#ApmJSwMm=k8y!6gT^0JJYxSv`j)LHN-eW@>qL?ro79!q-RIb5?b^wrg{@$cS#{ zypT_9F3qQ7@=Tn{3=J)wjjkzSk8Uxz3HPbl=FZ#}x0K-=0R!YnN7|zT8=Q6S%zAEs zndVzMeYA9tXB0!x1jWwqhQF$b;9*S+B*G8!XT5oM&z=l z!1SFxZ-fAB>$GI~o_%>cI}TyxQd&^m#Bb3p!aDRlm? zCrryk{349_kSVs7|EsyJ6cUvFMowSiqx^H}PpAJ4!XQ(4*FPlBEx2QYP+y(q^o5hB}?e}Nw+M^O3g2)KSI z5{WPMx;J6E?SSkgr@svz$7ub7bO*iQGd7ZRIPqCBkN$M}ct;6J--}ZKnRV9ke|7qP zfO3HMe{b#!?vPBAech_eEJ%-&{VWaCmUM$};_h4)d0s*?uD3RY1O(y5guClmWu5Er zEc}uzcrpuKkp;&bgdlwuWx<;Wcl9jf%DX%Ze`OYYbr$@qS#a)4nsvQ+5y>_Yhqi86 zP}|_H@0C*|XjTp#4>7-*`tp}o!>+GxaHiR)c{{07C8P&zC+*;Pi7Jv$@v9c$jiR9r z$4Pjnk=`(9i*W5_u1gs}GPuvt{s=w?AQ`lKXcGiSxx+vX`nrN|07wQnnr6Yvxj_Jq zCQER9!GX~@z6%MCHc9xmIJldx?4_>tf1dfGzuZY3jvTbHBEO9rc&(4@wXE?+9lopQ z3l8q;DSIPoJ>|>?(GziC`f~g?Z+b9V&r-&9x>q@Tybp<oSP@*OD&Y2VhDV*Lp5zT+3PQ@bT!Da{H>ockkav z7?*U5O{$*v3xyA5{CP({=BJ5#hRysh&Z3FI-F}0^J&x}yxzF(20WN0;NOwzc?*5oM z41tIaUB&cchv4$u8pt^0xUXQRIylmu!@@=?{HLtvScM# zvrftB!ul+6a9m?C*RVs%=N0z1IXL*U*pKHEjPUQaUhnH{0|&o_{nAep{uVBW?<)QS z?Eis-qdd=H{eSA{ae{abktih&$2`0T*vZXWnA-jDgJNS zzen+LpTU?xd9p>ml$V@kA@cFegE^ej7yd5xC)gIgv=1jMzO4V3vn+(4wBo&U6n`1x z6^skNhH=>oTlA^t>mp}a2!AE>7b^L~n7>5H-@yD8ia(I?8x?;mP5!G1Z*Lik%5movVkJXw7&%Ka$ecQC&<)Fa1E_N4bGJOYu+Obmc4y;TJN0qT*i<0-0Hi3qQ&HTE&0E(mgrLLijbz zU#9r-)l1es34bN?zoPiJvp%w~f$%pl|NDwBeF8blLik&m|FGgq`}Hfvh2O#a?TXLC zPM+**AlI>g%lS1&4*Jhx{zu7qfdk|$3#9AvyK(v=|69!O%ee3{eGlds#a|8rnGp*A z3gcrG-frpMYzN2ly^Z;`4vy#eNXFeWD1iT!acqbSBl=&(IQGAG@%OAZ?F`b7mojOTO6ae>Vc3vt)wAt?|4p za^j4m4)QH$5PU*xXbM;}a$4~I9m9$TofO?&e^QH>_) zzAk3MU7pD83W4y1Xg1yw*M@g%{A;v1Da~#ZMkGz_i=Qw4S4acXxSzH>Gr5?v6;f!%Ryt zh4cx{O(~N7UFvw-mruu36)%o5r9ac&ngX*wCG6HUkGqUMGuvF1Xr864W+uKjARVdK z1&sG++&n25gN27}kkRSmj)BaBjgK+iprj=IYm^e2ixymCh$3S~(uj)~%{`j}be_Py znagh_Kdw=JxJJ7CCKIM*66CGsc>dTBKr)(JL0C}waSTwAk?Vx?k+x31k}${|On z1eM?Lfb#1_T*<$b>o>BbKZD;Tiv5(WL+gJt!9nR)aQYG-*ALT|bozG^2ARSmr!m)a z`actZZAoA3pAsGve+)M$C+{czW{$6DUXyN+m>}s2A7k&pbp4U|!-dGU>7He+H$$mFKFVeQ}L0 zKR3*EgZF=Lt_v5sTM*>_ckc6I+c(|HSp|ajdBJ6M=f=Fly5j!MW4CMJ{tLpn*J(Fm zDP~``2_R`3rsc=bm0^=fQ75n9zFL3;cnZ*v_OFMFjgCk7ZOBtII{tubASn(IJ zf2o6`oHwz5rGrD(2KKi*IQaO3xyf2ackp+x{}u-qE}-=e4*p@>!2L+!GN(uMl62)Lk)d{S-IC#0}Zv29A3QM$3sC)XH|{W3|cL z>VPr5A;DvMr=5CQr}yN22THOjF?I>)xWno*V4{J?56KHfMH zJ4g)0wiTS$4Wl$j=3H9 znt5l%e8!=gX0Xk!p|^)>;*`xOFRG_PiDED=>P{=)dpcf<-b)s| z=gNZjSZcw0o?Y9OL8E+c%u2sEe(m2IGd2e0dgdePsMpOb zMvp&3aCpr^^E3{92A!wynwm7hvWX&Uw?M$?YG|%Ju5sUfA@Q|TMA9Q zLUT39s6#*ATcqh2vhCB>n{S+UxhPu416eM*8gc>*L^ha{HWyUYT1n`ZW2Q7&yj&F7 zAm6`zx#+$R`ZUWJ(>D4(fO9^vI<(UtP3o%XqX}QTkG2{#eHmzH7J%}pqzAhKbZ#9l z{^Vt{GWET_Vevd%-#N6p6jo)Gxy((KWThYUiTr;e>pk7EbW=@BbMt6df!vC4Yi?dC z4XJ-ZW9k3dJEMDEoNizAS4~&Oxs^-Ut#5H^G}27AG4o=6NtF1Qw}W)d6M*ajmeQYb z+Z|+(tZgZ0noFmTcT>nb*!XA&M3kEY^hZZR>)%Y6mWlY2IsIaI9HY4yD+o$|Bd0I% zQGR$A*XiF#7-R~MoW`u+^v_fUE9r~<4PpnymwIzD%M(lDiTxdpFX3YUIiquCLnNN? z?k5K@rKa}|#~&_4wk7`p|AZVt<+mf?`UQ;{_on#z-iPc$e!qVl9>-|?gLDUdW1fvv z$Qe6~yg}a_kj{I$^qX0-Z5+337MwzW79J7nJz16JtwMzJJ!6K zqd)>*>NFvRS#aE^L44HnAiRWdcRi%6+e~KRS17)$pQN4?_Z_Vx+we9mIIOOt&BJMZ zVndTz=UBa{w#r@aSlv`DembSyyj)S5xCe1B$yhepD;VG?Bf*aaNCr3_QG(++4uku_ z9TT5yP}@G>-WUEH#vuo33C@o#GiI7?>>E1EIuEGUx&wHf8Tlt0`tMKF4KT+W_k9i8?TF;pZ7d`PDg^~Q` zTCcyOl;E2gzmjdp$Mq6(9Xo_Sll5QAxaQ;e10(!jTd(&$wuO)D4D%yv`FxSPnQ`IE zbK*(Gmvt(?Q+(X7Fn_R?FCP;ZVcxQqxxUCR?mw9KtmX5UvENQ0w9hv1YZ&jr@+7}Q z`T0=5xahx<`JYw%2=j{+e*^PRQ~ZI9mnr^M#>XnY%pbZ)@jI9=XZDExw==#-@$JB@ z=gIkt!k6_n^6dc8P(GMf3UdS7!oSSI-mOZ0lKs+87Jd`+|6B2E*ndCU!v8Mww<`Wh z_CKxoZ?pep#oxgGHxysuzpMC?-iM0c&icr@GX$f2I+&Nw*I)Gi8sl-sg&$@A0LA|z z^JSj4@TH$}w&IK2awR{>{>h4eE$e@=;@7bMQpNAj`ZOv2O7>r)_#ZI;dd1(s{;w*& zl;e8E-^%{G6ra`i?o<2@_RG3)DgT!^f~@0^^6cPF-SbMm+;@Lc@}u0q{YCNR{MZi^ zU)Dc#;dDeFSx4B1anUEq@{dw{IY(6b3Bs>o{vgGdbs(Qp@>eqdJjHL|>orO7H!%MT ziZ9Q|OB8=A^XnCVKFeRO_#MpulHyChWVOQo#By$OaEEc|;FU%uHs zq4-j7-1SK44@kTJmXh;0>-i6bOM4yVe1nE6a~l1@$T_QmUt(eJIOa?J`6S_KYT;BS=c`WZLc%o|@u-O)V zY3RW?2{$37^feg?m2NTjRkFP$Q9<&b@NjrXDDd0~I-UagnnUMP#N$tt91~yhV(j`Q zbhX^GFv?rsZvBHvfzHBcnL(k~{Btj*v(&6Qskjf_B;r`@h9#?Bw8uQqvJ^Vu;ROmw zwr(+jhM64jLb7cM1%>{QQa#x|JyG!>1f?BxkcpJGKHmCh`#F1)H!ok3Q*lZ|&*ojB z6)!IP^Uf(0mrlryA_HUKe!ltPP+4oofbI98Ok&ALn)e*Ll)kS|N>sF$Qv76F&v3GJ zl_{cRTX~ptU6q&$4ah@BQmjhMGM=(9olDVTHnHDzK1HK!wf?1az#mN6m&KC* zC~e*=rQh5UI=Ip=9gFi{QY9a?lG+<`D#}~`VJcOs;L8VCq&&1YRp_MyUMi!rddkb% zFWqa7hKXH&yUE0@_Hxo9sG4ahMOM^jau>N*!2$*ZTXT!MZd<2OWQ~B-O{gdGQyB! zy6RygpRP?u+39~?)+br@EDph$;5Rc%$5y@0$g2VpseHhzW7@PELh1C5#%xcbf0;+hCWkDL8+-P7CagoUqsg2w#<5uF z__$E`wEX7F!^3EU@n3`|s=hDOVQC%C?%LPtwlxB=(}<8V6cIBKOPY~ zf$e>5Dn8ssqj(MeM9ATOJelIiB*&70vaolVnJj>yJMml~6ZV#vNe^(RbXWp!pgEh- zFdd~XZXA~c6ZVz`A)Yt~bGZa;JTApA z`^3=3TDa^866cK!MZBxS>oAD~=G7F>0;%5?7A2Xa zb$_>BE#-eE>u$hQ9P8SL_7|iIPn@6kp$c)z_B9c2QD~ibB)3$^;=CzU7UGnhS&1di z@B6F@asD?$r2h6L;<<%0Oi_n%u}t)fC*#7_a;|4FCF~7aCvGV+k|a(kIMBpB$gcns z#VO@V7hIRB_@(-M!c{W0>T)z)uz{qFefcqJ;d{6((x|9uY{^a$n4~!^T=YyX zq(nNiEYlwc*XuINshnh7)s*AN+`JpYBXbL`kBrQXx95z^EnL;5G`INLuBExdo4cKt zyD<_uwoC4Cf=Y7>i9%G0GSXkj`H9Uv`E)GYj8pld=`mdjvc;6JL)Trt&xPh4MJ|mY zaCL#D$R3Xv4?;R}XK--VJ;s-CtDyDLX=R&((!%kr7O7tyACFvadQ&8FN&LIg&`fSw zmiV&wA({!-D6e@mYn{N~fPy8Hp25XBlA!o^_p~v1DuYDN z;5JZ5Q2wLG+9+=RAyVi6dcuOz{{^RCY{mG$n%hbtLFvaieTk3q$9F}YKE44$rtrvV z%m5ILA@SylF@HByw_Y?nz9ADAAZt@XS1xUIAKf&>J{fTn?8X>YR`4{+M zas-uMMZopL+rGq?>)M+zzQshOu@`ar+tSd?YmNM9-4UgP2g^5cAlB6(EuDUM!h+J@ zg9v24Y%Tv+m!BV?9N>ML=dj?tHRP0x`y7b)GbhqB9q~^o*LZMc44SKgm_h3$Esh$L zX(HyzrsKF@-8nDv97VI5mrgalp;>UemIm=hX2Cz71+U72Uz!E4&w^i-1#ixRw`IY( z-%P^=w(D3lXxQMv3}%~O!~1&gZ+mbGH`|EMt(!Nup$^k;WP9+2g^i2gpIg1)a@ez} zgAChlLr$7{9oayD7m@X8j2z0uI4vr>7(8UrxdjTMWBG+^Z0pXQHJeDphE#xt(@cR09PA2wydf8pS6IqY_DSB}huL$He< z&HZNJt{iE9(Js4PYwl*4IXvhxTuy&5?%Xio^1MY_FeqQX)W*-3&)dmCv*J13ZKLH zXB-@HWKPEM4vzA zT>1n^#=Vc?2qXi{#c5EcwrSphf1@8X0Qn{55%*w)9&Tc6^!-p#|k z*!7Q7-m%WR9Lu^#B-_@Sy%>{i_ar(fZpJ4(P)k591{HM%)OUiY=8XGtbFO_!tZ3^M zU1CK~UKNQIZrvU0U7jd20SKOypx|u?-i+W!D40%~r-12+5hl1eR`ddbUqtW=6g)jK z)C3@Sc7lRmMeuJB{0s$8q7Te=htXseeF8s!FVWVo#{Cd0+7Y|%w{(ZZidL<}13h-# z4{{l==sa1mA2(1NB~8i{(S2rCrpSFWFp5Gk_ASA_N@ps)SyeU~TOb1IVbC6>(cO~0f2d_vCkt;H5pv@M^IN#>rSx1!Ck?tPS{he6hKj|v} zi#X4jYh2b$0hB8$j-)H)e~c8|V6md#UEWVgArUWA#;L+kHAyzlOEg&#LtPPc&rQ8` zHEt4Wkc=XWtRfAlsIkI#Ny={G{LV-jN{TdCDNb`l!K+M#j}<*_v~Wbw)tT`MX+c#M zm6fzu6l$AJ_cK*Lnys^lCdg1q$Qb?F7Svu_y0v^gv)AN`*oqZYv^4c%05ur{Nz-ZX zkUCVn)1M|A?+_@Px~k?ap#kp`?Il5=;VRA@nj}p6wNsshBOnMIWWKu^jCxjBtO~u4? zkeK78(7cqFM#@qAJ^xC|p|fR+<&OSR5IQE1+ZnVxP(mRj&FR9a3ASd>*cz1UnJ=WHUJtWn%L#80j7eZUYY`5aDOayrnhJKJ z-1NO_>s;R@7pM6e9G@BI4)r&!)S6Yx(!49#d;Hrb;dhpr8P%bIXcS<2G|i(#3vCSSlVN;BlY(OFLkjab=y)I6|tJr?@QDq_xTrPEORIx zrzZ4?pjFL?l}{1+L=luvf3(ldx%3-lH%5#u!Vs9}?0J*!-%&zO9uzh%;bHihPafmA z0udv2lr4-9^K&@JX#WZTMZLqnP8R;yAF=cF4o9iu7Gn6&5CGIJ3rOtkgy4_;M_hFH zo8-fvAU%$V8(}CKgGIbB(z8FNf?@LV$Gk}nMjH0NNzTCVX`#P`Pt2$P(dW#+--pK? zHfGGU@Jad68y82P44>9F+^_F-S1+b<=1MBnJUFNXW~4NuJfLimjQn){=T4@H{p zj25O)YBTN?pS9O_Ur@ZI+@ftkI!cae+j6$aP z;!4H4%oBxA^5b1CvHE(5`ro-LF&ij05!o%!5g5FJGFd1>#QS2GccF3C`&N41N z!?RIRzp@0gj~}n%unbWblrZFox;dk&&1O<+wPD4L4E>O8((0$|%;zpNX|;CQq3jvV zHu1!Hi0Ox$T&`Uv9?meBpvcDDB)09 zDMs3^_O-Z}lP2Ef?7S)kUCoux(PDLm7XM=TTR9%d-?LP*R7LGJOvtMg=T8_iynETx zBXxoIWZcLye*cD*MZ&7Y>1fuG5${gs|HO}Xu{a;`p-OQ&qF&1obtzZa{#@jgAE}#C zu?XtNMIc2H@@7jxjOC&vh?DlM?krn|Z|5;ZdPsG#f@{k#gu30Ry!L7P&L2qQnKbZRn>Z2`jxXUX(VV75y@J- zux@U8_G#KJUBdyHQYqAmcxvLy5 zl6MK}%VNvsNKGh!y6Vb#g_qVYn0*%M)nxN#<{x+JcotJrO(&aNdMm%(stGZm z-F$FM%%OJPgvJn9a6D7E}$$3oGf1{bOPW#s3^8Y>_eF z#;nu)N<6V2BvjlE&AXK2yBOS>`&-78n%*LgUxG-Ek^BqvD{=&t-^~Hn56>crFYOnq znQnU^dn2d+5%k0JV?^lwYp_*YoV|JCXH0m=d1r+LmW zveWsw!Q9xYvgrJNc=<|#^+x=aO{rirTI|o%O5wKo?vYV9ZGWhTUk_6;kYC-3+Ig9M zoV!Mz=cr!X#JVEPJ|{u@y+x0DKsxvz$6W#=z?1iNK8Ke&k z?#ILEPv(Zs21o|?INA=u7XT!Kwg*kE;5PsyqxoO6a0XxI^67LR;~QP$vX2wwqr4^E zbGQ-GeA&NA>u5_p{)=xL>3B z$2quL&SM$Z`C6C-{}JQJhCA2Ud?6tWIHv1Jewl8*ezD3FO5d@}ul*{9)>RfXOG}0J z5BP`7!!?BwoFBsnykDfWZv(9uBggH6pX%U9cRC7$%t&kb>B>mzScRX({D}&`nf++r zU~u~})%elA!3ZvT%IGuli$5_kdM^0+9MHzL;A`2x+QE@8`<$Q;N)C=VzhM752M525 zmHn=RgKsA_c-~JHK7!kq#}zL7l%Zb+BYNJ+{A1V#j&yO)!z2{`8w-0f*A~H2HxT6R z&j>j;a{My3HQ(Kz5&TymgpBO>C49bZy(*R?dfsN(9xcDO4&h6G(A}RA^8doTYZbqc z<=nuy$nVAFpBmq{`Asta+lt@JxVt|i%BP0$`xSoy%ipT>S;>6aUs3caWuCh~Bjj&j zzI+@Iei7sD{*2&nW!&AL5#@6NACwef-fJX z-2E9LU-ISd&j`Mhue(2^DSwtP{SCRkU!piLefYUA`qVJr-JcQiCvm={e=7Wy%y;)^ z1YhcntOXGM2Ijl_GlJihad&@4=)aY5cYj9k#kl)3n(}A9yFVlNf8hwrRen3zkE3E> zqG z+ls%E`R^;fJYVeGJo}tQd2V37tmzW{rJXsF!{z#JWxuC zpq3=V!o6gWaIBtzD_u53P$kP7=O{hk=G>a^QOZ8#`xbAF72nRVS{|g`6u)HaA#D~ zy@ccUcX06KBYCldBaW=48|L8P{};eWyWv?9L>pmRA?MJFh6g?{vTh_;ows5|ncj#Pz(fd2gsOS{f_z>WA&> z*St3zJGR7Y>}e99rET@`U7u^-8!?P%eg3XN&3kj^tZp30;ZN7aN44db(gLSZt@)$Q z?7gh_*s9-{B-ffG%fIr$>DwEkwA5thx&PX`w=L9OvA6jjR4mO@K#&nP3umUkMOXMx zg0PnAGq7WmcEv7ylX63AU#7o{>ptm^u?t^~6}?55YjkN_ghZCMMoP~N#cn{4I(f6v zh<|t<=~Y*m5?7gJgIz^d7)5Al3@uVI8j&JUY1+@B$iq;itmOk|^UeM4xtTgg7CUY_ z3pVI!<9q2Q?BcB7ATRdZbjaOO`)WpIJw$h`hoGkg{8TX0=$^6-YZUk60dA-XrfWjC z#vo?_tulZECTCF-`EZbOxWS7oT8sq<9Ap}H%M90fIhR+`%;U&OU^dy+YI@{4K!zV z+AZO;k65?n^~mMn!BmvtlF+(o;m_q?@#H1plD_Mvt&7ZRi1fcNoXlUd=DF~I+;G{E zYotJT8$F(5g>-iG4-fNBB^ z&D<1cgw-^=I*KRCV8DilBI+t%ROLQ~exetrlCv%h_}K_wpfm=O&vsEvC~A%kj2gfE z$XmPk#ipr83mY4}1^B6+J-7N`CwAHUsI$8vQml+wSZSLfnn`Ksf6Yvv64l9RP%@UQ z=RlQFF~}S!Q$qXR4>8g=l4T>rPiT%5=0*)V_0uysDo*8#`#}2QtDu z&`d7sXHfjVvO;J8T%){M_d^_xt_qn#Zg^0BxJJ7CCKIM*66C*g%a}4S7|pF9OqVHm zvrM1Wj;p|r^pUnszmhP>ly6<+G$xNLRGj@{N&OKU?~Ga}aEm$q@tl8&uer;z#GlNH znl86Q4&Yu%SWy0(0`lLJxH|uM9nv}xTZ?U*eJ1zO+C1F0R`S$nN0ue+Q3awEpmG-9g{X6?`j4IGixt zBRYK~6O{f+zMJz}`hsg4y#IT1n{bC@nvY}OLweODV}IQgVvO_Uc7y1;qIRVl z^mE*~O8)be2eIa0CQmVbaD2V(S3$xE7K6HmG-XagnS(VsOUa;JgVFcVF&6f5DX0F7Lyn9e13JmUk?vLO zAFS}(*?%hAI^EAHT+*HF$Z?ytMG8-_ztO>=5B^}*Sj#UT_ImDI1#l&AzjgRXH_852 z6#i}Yzpd~vGDzkFYngN*r;_nQ#3l^*M)vn{aOm?z`hzJ{_>C6!PEq*x7@x&9g1IUg z#H~N#Mu50+eZ>u2?k_DTjzBVy?aHTnr*7f=1Kq~pRyj6$|gnB0FM4-IVP3VK%iwyAQL7PDBz)!OIvBF39e;$o9HkKOhqV_$tg$Onn z>5>YAw`*!BtQ&6x(nLvGoj=;pR~_Wk(zg4dUT~V{Zzy*$Im2sab)m5>1Bcg4rvWU} zICRVNaHD+8BSW~r0V6}b&Zjle;Vv|?Gl`ByiI2Eo)TGH5jQd=C&ceF*g6gJ*I1V>H zBc6ImUqY%4q(56{$dP@e*(oM8^XHPr1z666I%g(Kl6|o6={8qs@7T1$s8jFlAJe-x zo>kKSFc~k)ExrT`jy|DxX|JfRdR`^3Gg{Pm@q)_v)%9s$WnJZhxxnmNBpk_5RJCya z{OSb_UeSVu4b??dZYR?syQ)h$UUkjPIdvo_^AdI*iBlA`M{YX>DJA$JqbrNTSnm; zLzL$^9_~xmXztk*sPhE=CN94?N5HE9u8}T3JkzyIg1pHLHo)T;&8?uYp!B!%!(QGo zkUrAZ=~og4neKCoyxxcZ6*~N0N;6CDF&nJBv;qw4n5-s`ig)#_03~*EV?nd*6Ne;;Kw{e*F$=M5YOP zS4LmleP@;D8YJXpitq}v;M_r?KAZHEW}a6*eq?F+%<<=*J8{&cnUhLKmXAXJX)Zm) zXZn2)+zzNa{<|%wiMo$EEVw*}p|9z7GLM@x^X`MHRmr%N0QkVs-+?*McTy<_JcnT* zN8a1u$MY3N-*L%H*te1ZpaZgaJlAM zP8@+`aJ}3%jjlE=AUg1OvC~f**6H~v7;=#xRsco4iiq^GS_<+&=f%1mX=|c+0wSdXt&)Q z>}I=~2yNYI^V^}P|2%d>2^E#UEiG+OJ1J3~Bxby{?F(LMTh9dXdY=AN>;|kvNLH1R zh}hjwCjwnaa$d4(S28j$kw+;-OHa?ayWz0W?IZ3^X;9jB(%rPpbQHVv-b_i;WRq|y z?Pd&BZnOU0m^IS+g4qg~=FrII#M6H6?w3r{eK5g>W^iCn;&SX|yTL{$J-b5sM(gbZ zX>F9*OnH9x{XL1(rP2nl4YW%y?VTD=W#G)|iJml@=F!m3-gGJgWpn81R16J=&~~jk zp`Fjr3>#dNw2P2_iJBjq>P$Cr->Hwv^-p=VC#*(NZ^k)k=f0-iv*}&>lh{9$?yB_t zL$Q@84fLnK*az$!DpOwQ*8EuZ4z*Kc3S`R65weBokvwv+iP|XpsNUbm0acHWvW4ie zlu(zD%s90hhXR8!ZEI?8Q04uP*f&PUw?P3j z*(((KXD%IuO@<))3mwGCt7e!K-MRg4co|(CIVyVR>#s-innrxP zPoyM)$#>a|Bp)=dPvWFFb)LBY%9-5PQQE@A{*U5*$B(B+#3VIZ+se+cx7c^fI>oSm z%1(;^J$7#K<6Z5EdjqFO2N{d=hYUr$`p`P@{3OLo3AV0}dKtgS0>A02x6~82BukqB zzPnUBKWAN{0N3Um7h0!P!c7SyVkr7O%f$1(pFi4w(DG8hgUD&$XC9!tYYh498;zGw zv1C^TJo$}#KYP_lN-6QyMIy0R-M)6IlkFQm!ENfy#t*zr9bU^bHmI9d-++DU4x%AB zg%*9yDjk(Ie2-Q2nZ+KZ0& zt#kLDo40UoZI!bz9B)`xi!!3~_bTga$a43glPZHUUJOpv9Qt+vtFnqLyg1t}=#XQx z$6e;`bF`rcedwa~Navh$M!b-|cnpXSEgD*MT6}QvpuxpM1`UZ9UQj(do~&%J_{l>C z_+uSI^A4QE0bojeM8!Y&zof4v6k6? z1#KM0(O?R!<@F~UxE_a<9ZH$zTRMG=aY5$6#z))AZLgmO9FqQc6{x)CS*J0?zm63` zi|rcCMGr~m3H;6c1lwWW=Is787z5Mgm+c$UIXniw9>N@>)32bgp!9D$-bRw^g!yAg zTc=-17-ZV#6FJz({536G`|%A3@ntMj;=jfEYrgo!zMSJrJh9*5_-mD7I{(*ZiQhuQ zATYzM<^SsV*HDP);*-d+DWLo?{;JFG7Q(bl$hnu(FNVi4ntKz41*N}@)0g z>7yS8nZhHdF*`Z^ky*-5^!PEcgW{iP-huW%fAc|(Z&OYEPUZM1#JVJ1!7)Dxm{QY| z_%%XgTkkGz z?h&0ns(DcQHQfGIQn+h$`fix(2Je6GH!QB)ZidMnF<*HVXz<|57&N~Uu_N|HK0{Dv z_NKFPbgO9ZVfR~@JfCrY=Vhd5@4p~?Xcj)+TZ8x`v*4q%;1dXU_pFn>1Ewil<~MR* zliuoO>Z$4aXZt{R*}N<8o$j)#T3GegS8si@7dFW5a$@s45v5&9e=xY`aX-tqy9$70 zfa80=;8OsS!EK0pPjI=fz{jmB_#ep)102^x@T2&~gB+Bv;IcWp#@90+a&Yep|5*oj z<;xxuS|9WoV9du%r)!~yoCMe zN5F`lW_XbNs|{*#gf+4MD-MqQ%H9|f4{=_u>VPg7jwDwWn1*j zXWo$t|19Hi#$oXz#e|%!_*bxB_At_Xsb7+=%nPpIc)~~hg~2Lm7~!Lz1T#nR<$1VJ z@gHLU62&jHV!RcKzmxs4#~HlHZ<6`9D83BR$N-h_YnU%%RHFZxT1N%03T{-)w@Wqh~di+*x5AQ<`WV19SjSM>ib<8nHQ@a^X~&y(|_g&*hm za(=z=3t5k0O8z32Fa1s7Cz(G+@vmV1RK|s0!~9Cc-^lz0iocTiS1A5o##8x_BUaas2u^05;K%oB<)E17?-7kZK|6*PfsUSg6tvzm@1 zH&-uNmDgsE>~3vHOebf8B9n6#IWhB$oU_SUW}P*pgDHSmAsuZ$W0w&)k3=t`KRWT6 z_WQws*iAld3LOJKgHELGJv*@^Hic%9&7l2(dap_>CyknytWJ21hioFJ?c$_dTUrv^ z2}LC&=kLKFlWbpQV9b?E9mKxMgySss9fmW^P&s#LXR(*H4QZS2(UiEOOHY40cEfPW zlSwk!zShXV^t)nsj3DyRoWHd;Me>xGWWk}yYBW!;?a0!$Q%>I%y8+$Bu~l!E$L^-d zc;z%BuaGWWdqpT&_48!a?()#vwDZxxoO>wWWvj}Y_w;R?&}yYpDVb}4kW_}~4DsS} zn(RhLk(X1VlvHwG2h5usoW84}3(b?;b#2+14T+;0x|cRT5!!hnO`2P=dFdol#ZPeH zW}DbYElR#XRD#|X(%tixKlD*W(kb7#Z=4Bx&i+uJ=zP8O-J}l5IQ|=_ednIh89G+)o(aEcnS%rn2`G;o@=XJ_*{Cw*gGUhkAd98caSb@Vr#`HdZ_`t}G-?iwP; zq0XV-G(Y(;$4hePyzlO$6^I39x*j>qygeEeka>JZ$vnQJc^==Dl%nk+p#1l>`4vJx z!cpLxskV0s?ck?|oyP|Z#yrzM_IZ5WAzIG-j@om*#haJzElBsqyW(l&g)hW!>Y(Ex z^ytL2a4%yn-@efEU#DC;bNMWH^m{?*m_Tl4(DFbD!DvNKy7(EI1)~!JxxwhzKpi@R zUJ#gCXV8g(5;}uU3X~9x24Bs|M+cQ}u!M1eW!4#Va-hD!Xt2KH19i}-9eoSW!i|u+ zHx~Q%#*86Bxt=*H9rb#eL%{Q=5R5~>d(EaT>G}+TP%^z{)0T88A5Ht~jqkEBxzFRq zfh%TQy=vXiUNq~^rWGP0e4qT!J!e$-ip4>zZ7<8oR+VxL0@{@8!?MMq91 zAN~aCadg}WLjf5q?wP5F>c@M868zX_BG&JJCSv%6K9R$tchWiA;gj>%%$*w@bJtyW zMaPU8vo1R3Z_)g9cij~(IXrq*_>vr<|E!csfn_C?N-D&=k&_m&u5Dp`VQj z;!F)rUm#AYzb2}de+~oRV!J0*-?ce)^mjB(C>2y{QmzTbZD7N*Nt24)i#C5D>S7ir zu!!T}dJfjoFj30pa4Fq(W5{QRKnuLljtIQ~bfRp@4QFwhLrQieXctBlL`5GWq zMe|7oOj^x;rZOME`;lj?+S7vh7+#$1OWB;WU>@enF2-rRbds<=0h!NN=4qkkc;&!( ztEQC9=jnaVJ*5el=4do?b~I(z9)pYD}{mLpDoXkc`=p@c9P-6~OImS&D3pT)F>Y(!k{^mG-Y0Q-;rJ(#EN|)bc!n90+yv1gWgT9Tz;~34Qp~JxRqbJ))a-EPq z($?u$5(b(4peL6#C9Jp3oA%?|2jc5@wla<{>9JT}SCMmhmiQGMU%p{TeDRCj!to_s z>{%RtvLwU-y8PB=iT`6xz>J2A&;afYgsCJ9J04K}m_H-sA=d?S5VTGZ@Fu5U43A?p zcRhs#r9Yh0m-x8;5UJD0@VAypkawhc)lbcd0tTbGsGqYRJBp!6}q8{I z$^qX0KiAe4O2q6ktO|&{LHojh6?7i6#e*w##EyM|l4c_Q4966Fh;j16B?X&#^r;;+ zQvtRbW}YVvM$p_}v@`BpUg>{)mTa1!7)eDm7hL07d>_} zH0ztw&y?l=T74O!o4nYU3ZZi2Dc@i znS#sSpulmJ1ux+n4s8s|R`By39QU^1ZHz+>+8V)S4xrZOHb)Mc4B-#wb^{jbfZ($n z+?79J0J z_AvtUxV)sl13vI;7&oKKpK{-H#fKd7Z%1hD`;FPAN zPhM8qkUkPflaQt*RiuTskXTxaf}*0J_=tiEir$Kd1(XJ#D2gaPs^T?>Ai|Z4qViwg z%=*rmvodLuw4mNUlV8rB`R1E7vuDqqz4xp&Gl-gC_|r7}7Cl=2nTF5v=RT+8Xf&y;%pD>j}9^XcICg>@Tm!yV)&iPpKAD2SIjc} zF6EzV_*(pAiQ#uEe}&=yNfW%?@-@8P@b6dtR>Mze2loNP|A+EFY4{b&|GeQZQ~o`M zpHcod4WIkV{?PF2l>fNl*J?ZDy6C*V?aKeN;V)GFKaKoO(+e3$ze~jXk-=*O< z7(UnWJ<{;IH9Xny@h%G&?sJUic%fe3%0SM6j_H498aeC_FX)9|Yxti~S{+Ge|p73ph&(ZUJ%;21}@QVOP{lInpHF2IrRDVlGE;s~PXOBClm$Hb{dJuQ&Kd18_*nQP>HUhClk zgHuPj!r+Bk{#6E_rg*#JY|lT_a$axn>5AWCaL&QG!{Co7|K|pO7$+qzr5_B;mvf++ zd~}cZXQjLMdHO-6A9Cmi&Tn7VGcdTc`}NmEtI{D(8PwJf+wJiarc6%5_1$)RHa~hK z$4ZxLrF@g-tp|GLA3No1k+$2_9p9{madX6Kd$C$=x8>}pd)PB)Hs4i#y@<~ zIc`Iqt|Nf0?6ofD`to%G?if^#imDcPtH3a3zS%{);ag^rXUr_d!yC%mC6P1eJuo8{ z!_Au#Sr>F6Ou%rTx|t{kLmoK8!@Beu@h zyOMZwXBJ0dW=lSj!~F8*Hy4U=x|kE6UsW!-Zzz9OvXoUqQJxLu8<3B%#7erlwxN8X zGmc&i@lWV#vpq$F_YXShZOIki7PP~cpsM5K z@@g@)&cNt;HjJ*t65knuYvo^FJ|%bMBys7MYAi=Ozr5ju`Q;1Ua-<6jo_qq!kzV-? zG@rnPSZ;nB=HKE}jsCQWrB0 zoByW7Msm<3k%zs1Q(_{i0kvkf_R9N7!O=A*J?xctg`RbtoI_w0?77oF8bfD9x&1+_ zqY~oi>}|0!#L+oXZXBH%Ekl3MxzXJEgU*Xe=npzSDj|->ujYcTSpCK&%!<}of6xWd z^2X74dC!iP!J_fCM;B)AjSGJjJL^S%&PS7CXRmxv5xSV`zP@(2SRKECxA%yRAmdIe zalYdETDgf2M0C-0+tx}@?qUtzwRX7JC})!nm(7u~0ldQ|1#k4}?pT`_yj_FNc2_K> z&vh?Z1qYxzfK!#F58!uyDbuL^q_}?Zlfw`^06}?3NiJh&;4pY!{0`jk7^gcHKP@8W zb?{^jj}dT&$LKi@Ku8Ra@00`nH5?iqqwy*14UchMJiyd{5(NJm7Q^ELIU)QLDL$~k z86M-j-+(-2+ozn-aU$= zLq(;_ikhD*D%)DLEVZ@p$k9dnv=)`6&MRu@Dy-PAuwwK{6E>Vu`M)<8j@z&3!mUMb zN}cR&jq!ZLxZA<<4_EFF^1ak5hJvYdc`AL_%>;7;;`5c(<3I{*is_%PFXy|mDP|VC zvMD}ObK8|oG4q5?G5v4V{Kf8e`#ET`Q8!Cb*c8*x5z@kBbumFOXdPB&)XziM}o19xym8#*;`c>DSl~aS2>wry5(Lsu#r(dRZfM&5Ysts&o zarIlU$zI>BV;fi2zkMmnvZ5ZA!n)vV55rb#2MhaRtkc^6kq|nY9xu=KoWQ3|8TS&~UoeQmxxzv31h+u`txVuY zyYJw{O<6;j&T{d%ise81aG!$tAb;d-^RE#MGVSGhR`VxcD9+iu>IJoB0`Wyn|F{us zxodh!|HueP+5P&ft-`ToLb|%h`NM92=fis0BA6``(x-G_emnw!vs~zeV)?Jr{Fxs0 z50N(i4+~~x3Y1LI{BeClXSugYBrxVfZo8(ZE`>PL^Z4an(*Lx~r#PAk^~iKQeqGZW zS~8@^2cl;%9r-`f^ro34DNSETq8?d)gugGISpDA-x&HVPWqMwJWMlgt$ZppBe~Ccg zZ21wkWe0t$W>Be-2tuUIe;>hO`9G}24!gVll052AuK)jRO106O8tL73R4;N5J~grV z5iuK1Fk&{S=>9_6PCkdB7SdY_Nwcm(e4*`SN(K|)a9_vxQ+mNGd%-h;hw}4nJN+xO ze;@3tG3TYSrvTm_^Nl%?KOEXMYLT{(91y_0iu;gwqxj)~V{nK#ZPal4;GQ9VtN7up z{5w7D?`f)f;{glt|^l1ja0RqL%^@nVE_{Dvm!8sFi zq2er$29qTQXF1yfIk*ONSE~o*1YW7(O?qVcd2TlZIQW$N!2n17AE1@@@c;*(?db~! z->zXESss3`f6wq~^Y~JLBVV?I0|MqfK5YjM?uCD(;eXdjPm<#e zAMF>e((vEo;bf-a^SN}6;cwS4ZEFxj`O#m&H5mSr8eXGE^3ngmU1j*R0eH9J*Liw! zqv4;W*Y^{K->!U43upavUEr@8ey8%kVdV2Z{DI+jDW5hIlz*G@esB2Q%750#zeVwX z7{1pa$~S_ZALXYt%qizc=IUS5A87bBDxbE?f`t z{)LABvf^ADfbu&PZ#Dc4D*s9&zf1Y=GJN(IoWD=`-O9hk@DEb_vqpYO!(TT1Ey{nu z@cEqhj^T6N>Yo}u>+v^+zgo|iHa#qVo$_8Z{KK?7gY~76{C4G)D9-jno7e*kzf<|; zhW{ItKf&<3lz*b(Yw?pa4ZmCYvkm`oP4G6$*YGmKe^B`=4L_wF+~tPP`=`V3E0q5p z!*9{^z1i?H%I`FM-p^k${5s{|Yxviw{BIk6yYhcz`0JGaYs2qU{vQngomxNtYxrHt z=f@G-1N-F>8jtMIpLA<@e?5}VXH{t1i02)L>kkd&;2W3DuE&b+Jh)SO;h$mh{eY(@ z^9-LhiLC)2&v!nD!u3^w^EnZ&iwgXATF>_wIVWnny)VFVzKfLqu)%jI{wsrDp!hQe z|GDBX1~|&|QO)-sih~BIMgHLi>q{r`FL^i_t2nL~-$4*{cz~n)tcS@4|B9BU(%{^e zpxWRUK)ASt2LFP}32h9K@8=xb?+Xbp+tqiJ&*wkSOX=D1Oz`>cjX3%(&Tk|uCyhkn zP?uW8E({e<%hJBv03LhnapTj@_1y+=F$$@!(j8?1E&2Kh_5{E3kL?mMz2l$LJFqP{ zEC6R$i_O`?f<`O>E7cP4JZwhYx(zbji-uT}wTf}u@XV%#Vl{U_$HMY4Fq7LZ@y;@@ z`h*8c-~CRho6P2g=-WL-PNanCksZ7GV9U80m?Bq-5Y1m_@`R67d6x zxZhb5Huycr2bD`v%23SvB`fSfKE~}qUWq-(&qJBU>K^1{CF9|;2l?mR9^{|PRf6n6 z{yAB2RVraad6zG5BFmwc?TzE18C=`6TtD3P{- z8d-Z27@X^y3W_d|2M5)QwM;g05X|9nA(+EuLqlK==Rz=t8`6fj^~hK3;fAy!&WFl| z3|W(l8!Mq)Tzbe*vEA99Wl2FH;mWm-^SLgya>3ziE=mga^EuwJ zcKDjsZ0Pp2auJXNM3&&ET2hw6la%?9q>%`eNjm{F$UkK8OtGvg7V^MVA&<6co-Kom%gA#R<6>^3

    FvClrhr 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

  • xW7k^~&z~ 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

    -tjuX0xp3@73vQC%ole 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̯%y# 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

    {Dpm8~^|RZdBsOcZg#pes#pvOis0Shf=?uxpiCI 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%0DOyOm7TjndB8?sRP1~cze;zOMMEtb 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%0AByHPvqXxpG!8&c8s}ZKWXRUT`QC6~Q>A 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