diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index dd84ea782..1233e098d 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,8 +1,8 @@ --- -name: Bug report +name: "\U0001F41B Bug report" about: Create a report to help us improve title: '' -labels: '' +labels: bug assignees: '' --- @@ -23,16 +23,10 @@ A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] +**Version** + - MESA version or SHA [e.g. r24.08.1] + - MESA SDK VERSION [e.g. aarch64-macos-24.7.1] + - OS: [e.g. MacOS 16.4.1] **Additional context** Add any other context about the problem here. diff --git a/.gitignore b/.gitignore index 0685b1a91..c4cbda92c 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ vgcore.* ## Documentation /dox/ +docs/source/_tags ## Executables @@ -44,7 +45,17 @@ vgcore.* **/LOGS2/ **/photos/ **/png/ - +**/png1/ +**/png2/ +**/png3/ +**/pgstar_out/ +**/pgstar_out1/ +**/pgstar_out2/ +**/pgstar_out3/ +**/plt_out/ +**/plt_out1/ +**/plt_out2/ +**/plt_out3/ ## Bill star_data/public_* diff --git a/.readthedocs.yaml b/.readthedocs.yaml index a9f31076d..bda3cfa9e 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -8,7 +8,7 @@ version: 2 build: os: "ubuntu-22.04" tools: - python: "3.8" + python: "3.12" # Build documentation in the docs/ directory with Sphinx sphinx: diff --git a/.zenodo.json b/.zenodo.json index 53d01ed68..0286d4a5c 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -11,18 +11,21 @@ }, { "affiliation": "Center for Computational Astrophysics", - "name": "Bauer, Evan" + "name": "Bauer, Evan", + "orcid": "0000-0002-4791-6724" }, { - "affiliation": "Max Planck Institute for Astrophysics", - "name": "Bellinger, Earl" + "affiliation": "Yale University", + "name": "Bellinger, Earl", + "orcid": "0000-0003-4456-4863" }, { "affiliation": "Kavli Institute for Theoretical Physics", - "name": "Bildsten, Lars" + "name": "Bildsten, Lars", + "orcid": "0000-0001-8038-6836" }, { - "affiliation": "Center for Computational Astrophysics", + "affiliation": "Flatiron Institute", "name": "Cantiello, Matteo", "orcid": "0000-0002-8171-8596" }, @@ -47,8 +50,8 @@ "orcid": "0000-0001-5048-9973" }, { - "affiliation": "Space Telescope Science Institute", - "name": "Meridith, Joyce", + "affiliation": "University of Wyoming", + "name": "Joyce, Meridith", "orcid": "0000-0002-8717-127X" }, { @@ -56,6 +59,11 @@ "name": "Marchant, Pablo", "orcid": "0000-0002-0338-8181" }, + { + "affiliation": "Flatiron Institute", + "name": "Mocz, Philip", + "orcid": "0000-0001-6631-2566" + }, { "name": "Schwab, Josiah", "orcid": "0000-0002-4870-8855" diff --git a/CODEOWNERS b/CODEOWNERS index 883fde98f..3b4ac5903 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -24,10 +24,10 @@ linters/ turb/ math/ @rhdtownsend mtx/ @mjoyceGR -net/ @fxt44 -neu/ @fxt44 +net/ @fxt44 @Debraheem +neu/ @fxt44 @Debraheem num/ -rates/ @fxt44 +rates/ @fxt44 @Debraheem #star/ #star_data/ #stella/ @@ -56,7 +56,7 @@ star/test_suite/adjust_net star/test_suite/c13_pocket @fxt44 star/test_suite/carbon_kh @evbauer star/test_suite/cburn_inward -star/test_suite/ccsn_IIp @fxt44 +star/test_suite/ccsn_IIp @fxt44 @aurimontem star/test_suite/check_redo @fxt44 star/test_suite/check_pulse_atm @warrickball star/test_suite/conductive_flame @fxt44 @@ -89,7 +89,7 @@ star/test_suite/make_he_wd @evbauer @fxt44 star/test_suite/make_metals @fxt44 star/test_suite/make_o_ne_wd @fxt44 @evbauer star/test_suite/make_planets @fxt44 -star/test_suite/make_pre_ccsn_13bvn @Debraheem +star/test_suite/make_pre_ccsn_13bvn @Debraheem @aurimontem star/test_suite/make_sdb @evbauer star/test_suite/make_zams @fxt44 star/test_suite/make_zams_low_mass @fxt44 diff --git a/Doxyfile b/Doxyfile index 01a9f8d8b..84c9ccdcc 100644 --- a/Doxyfile +++ b/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = "MESA" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = r24.03.04 +PROJECT_NUMBER = r24.06.1-rc1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/README.rst b/README.rst index 5c421441d..d1136949b 100644 --- a/README.rst +++ b/README.rst @@ -1,25 +1,44 @@ +.. image:: docs/source/mesa-logo-200.png + :align: center + :width: 200 + :alt: MESA + :target: https://docs.mesastar.org/en/latest/ + ###################################################### Modules for Experiments in Stellar Astrophysics (MESA) ###################################################### -.. image:: https://img.shields.io/github/license/MESAHub/mesa - :alt: GitHub - :target: https://github.com/MESAHub/mesa/blob/master/LICENSE +.. image:: https://img.shields.io/badge/repo_status-Active-brightgreen + :alt: RepoStatus + :target: https://www.repostatus.org/#active +.. image:: https://img.shields.io/readthedocs/mesa-doc + :alt: ReadTheDocs + :target: https://docs.mesastar.org/en/latest/ .. image:: https://img.shields.io/github/v/release/MESAHub/mesa :alt: GitHub release (latest by date) :target: https://github.com/MESAHub/mesa/releases/latest -.. image:: https://img.shields.io/github/issues/MESAHub/mesa - :alt: GitHub issues - :target: https://github.com/MESAHub/mesa/issues +.. image:: https://img.shields.io/badge/zenodo-community-blue + :alt: Zenodo + :target: https://zenodo.org/communities/mesa/records?q=&l=list&p=1&s=10 +.. image:: https://img.shields.io/github/license/MESAHub/mesa + :alt: GitHub + :target: https://github.com/MESAHub/mesa/blob/master/LICENSE +.. image:: https://github.com/MESAHub/mesa/actions/workflows/build-linux.yml/badge.svg + :alt: BuildLinux + :target: https://github.com/MESAHub/mesa/actions/workflows/build-linux.yml + +| + + **WARNING**: The default ``main`` branch is the development version of + MESA and is not guaranteed to function correctly. If you are using + MESA, you should use an official release version. -**WARNING**: The default ``main`` branch is the development version of -MESA and is not guaranteed to function correctly. If you are using -MESA, you should use an official release version. Overview ======== -MESA is built to allow users to run experiments in stellar evolution. +MESA is a powerful and versatile open-source software suite built to +allow users to run experiments in stellar evolution. Stellar evolution calculations (i.e., stellar evolution tracks and detailed information about the evolution of internal and global properties) are a basic tool that enable a broad range of research in @@ -41,10 +60,15 @@ pedagogically) by accurate one-dimensional calculations, and this is the focus of MESA. +Links +===== -Documentation -============= - -Please visit https://docs.mesastar.org/ for up-to-date information about installing and running MESA. +* `Code repository `__ on GitHub (this page). +* `Documentation `__ for up-to-date information about installing and running MESA. +* `MESA Marketplace `__ for resources for published papers using MESA. +* `MESA Zenodo Community `__ for downloading official release versions, SDKs, and MESA project inlists. +* `MESA Users Mailing List `__ for info about new releases, news items, and requests for help/bug reports. +* `mesa_reader `__ to interact and plot data from MESA in Python. +* `MESA Test Hub `__ to view results of regression testing (for Developers). +* `mesa_test `__ tool to run the test suite and upload results to the MESA Test Hub (for Developers). -The `MESA Marketplace `__ provides resources for published papers using MESA. diff --git a/astero/private/adipls_support.f90 b/astero/private/adipls_support.f90 index 68545137c..457dd338c 100644 --- a/astero/private/adipls_support.f90 +++ b/astero/private/adipls_support.f90 @@ -79,9 +79,9 @@ subroutine do_adipls_get_one_el_info( & integer, intent(out) :: ierr real(dp) :: sig_fac - integer :: nsel, itrsig, nsig, irotkr, nprtkr, igm1kr, npgmkr + integer :: nsel, itrsig, nsig real(dp) :: els1, dels, sig1, sig2, dfsig - integer :: k, i, j + integer :: i, j integer, pointer :: index(:) logical, parameter :: dbg = .false. @@ -181,7 +181,7 @@ subroutine adipls_mode_info( & real(dp), intent(in) :: freq, inertia integer, intent(in) :: nn, iy, iaa, ispcpr real(dp), intent(in) :: x(1:nn), y(1:iy,1:nn), aa(1:iaa,1:nn), data(8) - integer :: iounit, ierr, i, j, skip + integer :: iounit, ierr, i, skip real(dp) :: y_r, y_h include 'formats' if (use_other_adipls_mode_info) then @@ -235,7 +235,7 @@ subroutine store_model_for_adipls (s, add_atmosphere, do_redistribute_mesh, ierr common/ccgrav/ cgrav real(dp) :: cgrav - integer :: i, iriche, iturpr + integer :: iriche, iturpr integer :: iconst, ivar, ivers, nn_in real(dp), allocatable :: global_data(:) ! (iconst) real(dp), allocatable :: point_data(:,:) ! (ivar,nn_in) @@ -287,8 +287,7 @@ subroutine store_model_for_adipls (s, add_atmosphere, do_redistribute_mesh, ierr ivers = 0 ! It's not clear what this does in fgong_amdl - call fgong_amdl( & - cgrav, nn_in, iconst, ivar, ivers, global_data, point_data, data, aa, nn, ierr) + call fgong_amdl(cgrav, nn_in, iconst, ivar, ivers, global_data, point_data, data, aa, nn, ierr) deallocate(global_data, point_data) if (ierr /= 0) then @@ -682,8 +681,7 @@ subroutine read_and_store(iriche, iturpr, cgrav) write(*,*) 'read_and_store failed in read_fgong_file' call mesa_error(__FILE__,__LINE__) end if - call fgong_amdl( & - cgrav, nn, iconst, ivar, ivers, glob, var, data, aa, nn, ierr) + call fgong_amdl(cgrav, nn_in, iconst, ivar, ivers, glob, var, data, aa, nn, ierr) if (ierr /= 0) then write(*,*) 'read_and_store failed in fgong_amdl' call mesa_error(__FILE__,__LINE__) @@ -709,7 +707,7 @@ subroutine store_amdl(nn_in, iriche, iturpr, data, aa, x, nn, ierr) integer, intent(out) :: nn, ierr ! local - integer :: i, j, nsin, iggt, inp, in, nshift, nnr, n, n1, nstart, idata8 + integer :: i, j, nsin, iggt, nshift, nnr, n, n1, idata8 logical :: sincen, sinsur real(dp), pointer :: aa1(:,:) real(dp) :: ggt @@ -726,8 +724,8 @@ subroutine store_amdl(nn_in, iriche, iturpr, data, aa, x, nn, ierr) ! test for singular centre and/or surface - sincen=aa1(1,1).eq.0 - sinsur=data(7).ge.0 + sincen=aa1(1,1) == 0 + sinsur=data(7) >= 0 nsin=0 if (sincen) nsin=nsin+1 if (sinsur) nsin=nsin+1 @@ -735,7 +733,7 @@ subroutine store_amdl(nn_in, iriche, iturpr, data, aa, x, nn, ierr) ! test for inclusion of g/(g tilde) idata8 = int(data(8)+0.1) - if (mod(idata8/10,10).eq.2) then + if (mod(idata8/10,10) == 2) then iggt = 1 iturpr=8 else @@ -746,13 +744,13 @@ subroutine store_amdl(nn_in, iriche, iturpr, data, aa, x, nn, ierr) ! test for number of nonsingular points - if (iriche.ne.1.or.mod(nn-nsin,2).eq.1) then + if (iriche /= 1.or.mod(nn-nsin,2) == 1) then nshift=0 else nshift=1 end if nnr=nn - if (nshift.ne.0) then + if (nshift /= 0) then nn=nn-nshift end if @@ -772,7 +770,7 @@ subroutine store_amdl(nn_in, iriche, iturpr, data, aa, x, nn, ierr) end do else do n=1,nnr - if (n.eq.1) then + if (n == 1) then n1=1 else n1=n+nshift @@ -788,16 +786,16 @@ subroutine store_amdl(nn_in, iriche, iturpr, data, aa, x, nn, ierr) ! set g/gtilde (=1 in models without turbulent pressure) - if (iturpr.eq.1) then + if (iturpr == 1) then do n=1,nn - if (x(n).lt.0.999) then + if (x(n) < 0.999) then ggt=1 else ggt=1./(x(n)*x(n)*x(n)*aa(1,n)) end if aa(10,n)=ggt end do - else if (iggt.eq.1) then + else if (iggt == 1) then do n=1,nn aa(10,n)=aa(6,n) end do @@ -815,8 +813,7 @@ subroutine store_amdl(nn_in, iriche, iturpr, data, aa, x, nn, ierr) end subroutine store_amdl - subroutine fgong_amdl( & - cgrav, nn_in, iconst, ivar, ivers, glob, var, data, aa, nn, ierr) + subroutine fgong_amdl(cgrav, nn_in, iconst, ivar, ivers, glob, var, data, aa, nn, ierr) ! derived from fgong-amdl.d.f real(dp), intent(in) :: cgrav integer, intent(in) :: nn_in, iconst, ivar, ivers @@ -834,7 +831,7 @@ subroutine fgong_amdl( & ierr = 0 nn = nn_in - if (var(1,1).gt.var(1,nn)) then + if (var(1,1) > var(1,nn)) then nn1=nn+1 do i=1,ivar do n=1,nn @@ -846,7 +843,7 @@ subroutine fgong_amdl( & end do end if - if (var(1,1).gt.1.d6) then + if (var(1,1) > 1.d6) then do i=1,ivar do n=1,nn var1(i,n+1)=var(i,n) @@ -895,7 +892,7 @@ subroutine fgong_amdl( & aa(4,1)=var(10,1) aa(5,1)=0 aa(6,1)=3.d0 - if (aa(5,nn).le.10) then + if (aa(5,nn) <= 10) then nn=nn-1 !write(6,*) 'Chop off outermost point' end if @@ -903,7 +900,7 @@ subroutine fgong_amdl( & data(2)=glob(2) data(3)=var(4,1) data(4)=var(5,1) - if (glob(11).lt.0.and.glob(11).gt.-10000) then + if (glob(11) < 0.and.glob(11) > -10000) then data(5)=-glob(11)/var(10,1) data(6)=-glob(12) else @@ -911,7 +908,7 @@ subroutine fgong_amdl( & d2amax=0.d0 do n=2,nn d2amax=max(d2amax,aa(5,n)/x(n)**2) - if (x(n).ge.0.05d0) exit + if (x(n) >= 0.05d0) exit end do data(6)=d2amax+data(5) !write(6,140) data(5), data(6) @@ -929,8 +926,7 @@ subroutine read_fgong_file(fin, nn, iconst, ivar, ivers, glob, var, ierr) real(dp), pointer :: var(:,:) ! (ivar,nn) will be allocated integer, intent(out) :: ierr - real(dp), pointer :: var1(:,:) ! (ivar,nn) - integer :: ios, iounit, i, n, ir, nn1 + integer :: ios, iounit, i, n character(80) :: head 120 format(4i10) diff --git a/astero/private/adipls_support_procs.f90 b/astero/private/adipls_support_procs.f90 index b6e165908..2ef742898 100644 --- a/astero/private/adipls_support_procs.f90 +++ b/astero/private/adipls_support_procs.f90 @@ -45,7 +45,7 @@ subroutine spcout_adi(x,y,aa,data,nn,iy,iaa,ispcpr) real(dp) :: csummm(50) common/csumma/ csummm - integer :: icobs_st, nobs_st, i + integer :: icobs_st, nobs_st real(dp) :: obs_st(10,100000) ! huge 2nd dimension to satisfy bounds checking integer :: ierr, new_el, new_order, new_em, n diff --git a/astero/private/astero_run_support.f90 b/astero/private/astero_run_support.f90 index 9ac6a423d..85aa7c053 100644 --- a/astero/private/astero_run_support.f90 +++ b/astero/private/astero_run_support.f90 @@ -53,7 +53,6 @@ end subroutine extras_controls type (star_info), pointer :: s integer :: id, i, ierr - character (len=256) :: inlist_fname include 'formats' @@ -207,7 +206,7 @@ real(dp) function eval1(id_in,ierr) type (star_info), pointer :: s logical :: restart - integer :: id, i + integer :: id include 'formats' @@ -647,7 +646,7 @@ subroutine do_bobyqa_or_newuoa(newuoa_flag, ierr) integer, intent(out) :: ierr integer, parameter :: maxfun = 1000, iprint = 0 real(dp), pointer, dimension(:) :: xl, xu, x, w - real(dp) :: min_chi2, rhobeg, max_value + real(dp) :: rhobeg, max_value integer :: i, npt include 'formats' ierr = 0 @@ -815,8 +814,7 @@ subroutine do_simplex(ierr) use num_lib integer, intent(out) :: ierr - real(dp) :: final_mass, final_alpha, final_Y, final_FeH, & - final_param(1:max_parameters) + real(dp) :: final_param(1:max_parameters) real(dp), dimension(:), pointer :: x_first, x_lower, x_upper, x_final real(dp), pointer :: simplex(:,:), f(:) real(dp) :: f_final @@ -825,7 +823,7 @@ subroutine do_simplex(ierr) real(dp), pointer :: rpar(:) ! (lrpar) integer :: num_iters, num_fcn_calls, & num_fcn_calls_for_ars, num_accepted_for_ars - integer :: seed, i, j, k, num_samples + integer :: i, num_samples logical :: start_from_given_simplex_and_f include 'formats' @@ -1047,7 +1045,7 @@ end subroutine save_best_for_sample subroutine set_sample_averages - integer :: ierr, jj, j, n + integer :: jj, j, n real(dp) :: avg_age_top_samples2, avg_model_number_top_samples2 include 'formats' diff --git a/astero/private/astero_support.f90 b/astero/private/astero_support.f90 index b6fe1195b..0d891469e 100644 --- a/astero/private/astero_support.f90 +++ b/astero/private/astero_support.f90 @@ -69,12 +69,11 @@ subroutine get_one_el_info( & character (len=*), intent(in) :: code integer, intent(out) :: ierr - real(dp) :: nu_obs, dist_j, nu, dist, min_dist, min_freq, & - R, G, M, sig_fac, b, sum_1, sum_2, sum_3, empty(0) - integer :: min_dist_j, min_order, n, cnt, int_empty(0) + real(dp) :: dist, min_dist, R, G, M, sig_fac, b, sum_1, sum_2, sum_3, empty(0) + integer :: min_dist_j, cnt, int_empty(0), int_empty2(0) integer :: nsel, itrsig, nsig real(dp) :: els1, dels, sig1, sig2, dfsig - integer :: num_l0_terms, k, i, j + integer :: i, j integer, pointer :: index(:) include 'formats' @@ -162,7 +161,7 @@ subroutine get_one_el_info( & call set_to_closest(freq_target(0,:), & model_freq(0,:), empty, empty, & model_inertia(0,:), empty, empty, & - model_order(0,:), int_empty, int_empty, ierr) + model_order(0,:), int_empty, int_empty2, ierr) model_freq_alt_up(0,:) = model_freq(0,:) model_inertia_alt_up(0,:) = model_inertia(0,:) @@ -597,8 +596,7 @@ subroutine init_obs_data(ierr) integer, intent(out) :: ierr integer :: i, cnt, norders - integer, dimension(max_nl) :: orders - real(dp) :: sum_1, sum_2, sum_3, range, nmax + real(dp) :: sum_1, sum_2, range, nmax real(dp) :: x, y, isig2, sum_xy, sum_x, sum_y, sum_x2, sum_isig2, d logical, parameter :: dbg = .false. @@ -1393,7 +1391,7 @@ real(dp) function get_chi2(s, max_el, trace_okay, ierr) integer, intent(out) :: ierr integer :: i, l, n, chi2N1, chi2N2 - real(dp) :: chi2term, Teff, logL, chi2sum1, chi2sum2, frac, & + real(dp) :: chi2term, chi2sum1, chi2sum2, frac, & model_r01, model_r10, model_r02 ! calculate chi^2 following Brandao et al, 2011, eqn 11 diff --git a/astero/private/extras_support.f90 b/astero/private/extras_support.f90 index fd953c1b3..c6490b9b2 100644 --- a/astero/private/extras_support.f90 +++ b/astero/private/extras_support.f90 @@ -66,8 +66,8 @@ integer function do_astero_extras_check_model(s, id) integer :: max_el_for_chi2, ierr, i, j, l, n logical :: store_model, checking_age - real(dp) :: age_limit, model_limit, err, target_l0, X, Y, Z, & - frac, surface_X, surface_Z, chi2_freq_and_ratios_fraction, & + real(dp) :: age_limit, model_limit, & + frac, chi2_freq_and_ratios_fraction, & remaining_years, prev_max_years, min_max include 'formats' @@ -676,7 +676,7 @@ end function do_astero_extras_check_model real(dp) function get_chi2_spectro(s) type (star_info), pointer :: s integer :: cnt, i - real(dp) :: logL, sum + real(dp) :: sum include 'formats' cnt = 0 sum = 0 @@ -866,8 +866,7 @@ subroutine write_best(num) integer, intent(in) :: num integer :: ierr, iounit character (len=256) :: format_string, num_string, filename - integer, parameter :: max_len_out = 2000 - character (len=max_len_out) :: script + integer, parameter :: max_len_out = 2000 ierr = 0 iounit = alloc_iounit(ierr) if (ierr /= 0) return @@ -1094,7 +1093,6 @@ subroutine astero_data_for_extra_profile_columns( & character (len=maxlen_profile_column_name) :: astero_names(n) real(dp) :: vals(nz,n) integer, intent(out) :: ierr - integer :: k ierr = 0 call star_astero_procs% data_for_extra_profile_columns( & id, n, nz, astero_names, vals, ierr) @@ -1177,7 +1175,7 @@ subroutine move_extra_info(s,op) type (star_info), pointer :: s integer, intent(in) :: op - integer :: i, j, num_ints, num_dbls, ierr + integer :: i, num_ints, num_dbls, ierr i = 0 ! call move_int or move_flg diff --git a/astero/private/gyre_support.f90 b/astero/private/gyre_support.f90 index bf76ff772..19235571b 100644 --- a/astero/private/gyre_support.f90 +++ b/astero/private/gyre_support.f90 @@ -29,7 +29,8 @@ module gyre_support use star_def use const_def use utils_lib - use gyre_lib + + use gyre_mesa_m ! No implicit typing @@ -66,19 +67,19 @@ subroutine init_gyre (gyre_file, ierr) ! Initialize GYRE - call gyre_init(gyre_file) + call init(gyre_file) ! Set constants - call gyre_set_constant('G_GRAVITY', standard_cgrav) - call gyre_set_constant('C_LIGHT', clight) - call gyre_set_constant('A_RADIATION', crad) + call set_constant('G_GRAVITY', standard_cgrav) + call set_constant('C_LIGHT', clight) + call set_constant('A_RADIATION', crad) - call gyre_set_constant('M_SUN', Msun) - call gyre_set_constant('R_SUN', Rsun) - call gyre_set_constant('L_SUN', Lsun) + call set_constant('M_SUN', Msun) + call set_constant('R_SUN', Rsun) + call set_constant('L_SUN', Lsun) - call gyre_set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') + call set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') write(*,*) 'done init_gyre' @@ -99,7 +100,6 @@ subroutine do_gyre_get_modes (s, el, store_model, ierr) integer :: ipar(1) real(dp) :: rpar(1) - integer :: i integer(8) :: time0, time1, clock_rate real(dp) :: time @@ -124,7 +124,7 @@ subroutine do_gyre_get_modes (s, el, store_model, ierr) call system_clock(time0, clock_rate) end if - call gyre_get_modes(el, gyre_call_back, ipar, rpar) + call get_modes(el, gyre_call_back, ipar, rpar) if (trace_time_in_oscillation_code) then call system_clock(time1, clock_rate) @@ -204,7 +204,7 @@ subroutine store_model_for_gyre (s, add_center_point, keep_surface_point, add_at if (dbg) write(*,2) 'call gyre_set_model', s%model_number - call gyre_set_model(global_data, point_data, s%gyre_data_schema) + call set_model(global_data, point_data, s%gyre_data_schema) if (dbg) write(*,2) 'done gyre_set_model', s%model_number @@ -305,8 +305,7 @@ subroutine save_gyre_mode_info( & real(dp), intent(inout) :: rpar(:) integer, intent(out) :: ierr - integer :: iounit, i, j, skip, nn - real(dp) :: y_r, y_h + integer :: iounit include 'formats' diff --git a/astero/private/pgstar_astero_plots.f90 b/astero/private/pgstar_astero_plots.f90 index 7530c4797..154e7bc1f 100644 --- a/astero/private/pgstar_astero_plots.f90 +++ b/astero/private/pgstar_astero_plots.f90 @@ -137,9 +137,8 @@ subroutine do_echelle_plot( & integer, intent(out) :: ierr type (star_info), pointer :: s - real :: xmin, xmax, ymin, ymax, dx, dy, plot_delta_nu, freq, marker_scale, & + real :: xmin, xmax, ymin, ymax, dx, dy, plot_delta_nu, marker_scale, & x_obs, y_obs, x_model, y_model, y_txt, xpt_min, xpt_max, xmargin - character (len=256) :: str integer :: i, l, freq_color(0:3), freq_shape(0:3), model_color, model_shape include 'formats' @@ -410,9 +409,8 @@ subroutine do_ratios_plot( & integer, intent(out) :: ierr type (star_info), pointer :: s - real :: xmin, xmax, ymin, ymax, dx, dy, freq, & - x_obs, y_obs, x_model, y_model, y_txt, sig_max - character (len=256) :: str + real :: xmin, xmax, ymin, ymax, dx, dy, & + x_obs, y_obs, y_txt, sig_max logical :: show_model integer :: i, n, i0, i1, l0_first, l1_first, & r01_color, r01_shape, r10_color, r10_shape, & @@ -627,7 +625,6 @@ subroutine write_plot_to_file(s, p, file_prefix, number, ierr) integer, intent(out) :: ierr character (len=256) :: format_string, num_str, name, extension - integer :: len ierr = 0 diff --git a/astero/public/astero_def.f90 b/astero/public/astero_def.f90 index f2628cb3f..ede83e7dd 100644 --- a/astero/public/astero_def.f90 +++ b/astero/public/astero_def.f90 @@ -963,7 +963,6 @@ recursive subroutine read1_astero_pgstar_inlist(filename, level, ierr) integer, intent(out) :: ierr logical, dimension(max_extra_inlists) :: read_extra - character (len=strlen) :: message character (len=strlen), dimension(max_extra_inlists) :: extra integer :: unit, i @@ -1167,7 +1166,7 @@ subroutine show1_sample_results(i, iounit) use num_lib, only: simplex_info_str integer, intent(in) :: i, iounit - integer :: j, k, l, op_code, ierr + integer :: k, l, op_code, ierr character (len=256) :: info_str, fmt ierr = 0 @@ -1270,7 +1269,6 @@ subroutine show_all_sample_results(iounit, i_total, ierr) integer, intent(in) :: iounit, i_total integer, intent(out) :: ierr integer :: i, j - character (len=strlen) :: int_fmt, txt_fmt ierr = 0 ! sort results by increasing sample_chi2 @@ -1513,7 +1511,7 @@ subroutine read_samples_from_file(results_fname, ierr) use utils_lib character (len=*), intent(in) :: results_fname integer, intent(out) :: ierr - integer :: iounit, num, i, j, model_number + integer :: iounit, num, j character (len=strlen) :: line include 'formats' @@ -1595,7 +1593,6 @@ subroutine read1_sample_from_file(j, iounit, ierr) integer :: i, k, l character (len=256) :: info_str, fmt - real(dp) :: logR include 'formats' diff --git a/astero/public/astero_lib.f90 b/astero/public/astero_lib.f90 index c8add47e0..a0cac505a 100644 --- a/astero/public/astero_lib.f90 +++ b/astero/public/astero_lib.f90 @@ -24,9 +24,7 @@ ! *********************************************************************** module astero_lib - ! library for calculating neutrino losses from non-nuclear-burning sources - ! neutrino losses that occur during nuclear reactions are included in the nuclear library - ! the data interface for the library is defined in neu_def + ! library for calculating calculation of asteroseismic variables use const_def, only: dp use gyre_support, only: GYRE_IS_ENABLED diff --git a/atm/private/atm_table.f90 b/atm/private/atm_table.f90 index 93cbee2bf..1b6f976f8 100644 --- a/atm/private/atm_table.f90 +++ b/atm/private/atm_table.f90 @@ -105,7 +105,6 @@ subroutine eval_table( & real(dp) :: dPrad_dL real(dp) :: dT_dlnR real(dp) :: dT_dlnM - real(dp) :: dT_dlnT real(dp) :: dT_dlnTeff include 'formats' diff --git a/atm/private/atm_utils.f90 b/atm/private/atm_utils.f90 index ad90a9f02..3ce656813 100644 --- a/atm/private/atm_utils.f90 +++ b/atm/private/atm_utils.f90 @@ -219,7 +219,7 @@ subroutine create_E2_interpolant(ierr) work => work_ary - do i= 1, E2_NPAIRS + do i = 1, E2_NPAIRS E2_x(i) = E2_pairs(2*i-1) E2_f(1,i) = E2_pairs(2*i) end do diff --git a/atm/private/table_atm.f90 b/atm/private/table_atm.f90 index c9b65d7b6..0f83e86f3 100644 --- a/atm/private/table_atm.f90 +++ b/atm/private/table_atm.f90 @@ -83,8 +83,6 @@ subroutine load_table_summary(id, fname, ai, ierr) type(atm_info), intent(inout) :: ai integer, intent(out) :: ierr - integer :: nvec - character (len=500) :: buf real(dp), target :: vec_ary(20) real(dp), pointer :: vec(:) @@ -505,7 +503,7 @@ subroutine load_atm_table(iZ,ierr) integer, intent(in) :: iZ !index of Z table to be loaded integer, intent(out) :: ierr integer :: iounit, i, j, ibound_tmp(ng), ibcTmin, ibcTmax, ibcgmin, ibcgmax - integer :: cache_file_version, text_file_version, nvec + integer :: text_file_version, nvec real(dp) :: Teff_tmp(nT), logg_tmp(ng) real(dp) :: bcTmin(nT), bcTmax(ng), bcgmin(ng), bcgmax(ng), data_tmp(ng,nT) real(dp), target :: vec_ary(100) diff --git a/auto_diff/private/support_functions.f90 b/auto_diff/private/support_functions.f90 index 93d5b2b72..55e78e626 100644 --- a/auto_diff/private/support_functions.f90 +++ b/auto_diff/private/support_functions.f90 @@ -57,7 +57,6 @@ end function int_real_pow pure real(dp) function int_int_pow(x, y) result(z) integer, intent(in) :: x, y - real(dp) :: x_real, y_real z = x**y end function int_int_pow diff --git a/auto_diff/test/src/test_auto_diff.f90 b/auto_diff/test/src/test_auto_diff.f90 index 8fd55af3a..88f9b7531 100644 --- a/auto_diff/test/src/test_auto_diff.f90 +++ b/auto_diff/test/src/test_auto_diff.f90 @@ -52,8 +52,7 @@ end subroutine should_print2 subroutine do_test_auto_diff_star_order1() type(auto_diff_real_star_order1) :: x, y, z - real(dp) :: a, b, c - integer :: i, j, k + integer :: i call header('Testing assignment') x = 3d0 @@ -123,9 +122,6 @@ end subroutine do_test_auto_diff_star_order1 subroutine do_test_auto_diff_1var_order1() type(auto_diff_real_1var_order1) :: x, y, z - real(dp) :: a, b, c - integer :: i, j, k - call header('Testing assignment and comparison') @@ -543,9 +539,6 @@ end subroutine do_test_auto_diff_1var_order1 subroutine do_test_auto_diff_2var_order1() type(auto_diff_real_2var_order1) :: x, y, z - real(dp) :: a, b, c - integer :: i, j, k - call header('Testing assignment and comparison') diff --git a/binary/other/mod_other_tsync.f90 b/binary/other/mod_other_tsync.f90 index b502e7363..fea064e03 100644 --- a/binary/other/mod_other_tsync.f90 +++ b/binary/other/mod_other_tsync.f90 @@ -138,7 +138,6 @@ subroutine null_other_tsync(id, sync_type, Ftid, qratio, m, r_phot, osep, t_sync real(dp), intent(in) :: osep ! orbital separation (cm) real(dp), intent(out) :: t_sync integer, intent(out) :: ierr - real(dp) :: rGyr_squared, moment_of_inertia type (binary_info), pointer :: b type (star_info), pointer :: s diff --git a/binary/private/binary_ce.f90 b/binary/private/binary_ce.f90 index 274b877d3..2b792aae0 100644 --- a/binary/private/binary_ce.f90 +++ b/binary/private/binary_ce.f90 @@ -39,7 +39,6 @@ module binary_ce contains subroutine CE_init(b, restart, ierr) - use chem_def, only: chem_isos use interp_1d_def, only: pm_work_size use interp_1d_lib, only: interp_pm type (binary_info), pointer :: b @@ -47,7 +46,7 @@ subroutine CE_init(b, restart, ierr) integer, intent(out) :: ierr type (star_info), pointer :: s real(dp), pointer :: interp_work(:), adjusted_energy(:) - integer :: i, k, op_err + integer :: k, op_err real(dp) :: rec_energy_HII_to_HI, & rec_energy_HeII_to_HeI, & rec_energy_HeIII_to_HeII, & diff --git a/binary/private/binary_ctrls_io.f90 b/binary/private/binary_ctrls_io.f90 index fcd425546..b8f0f5676 100644 --- a/binary/private/binary_ctrls_io.f90 +++ b/binary/private/binary_ctrls_io.f90 @@ -277,7 +277,6 @@ recursive subroutine read_binary_controls_file(b, filename, level, ierr) integer, intent(in) :: level integer, intent(out) :: ierr logical, dimension(max_extra_inlists) :: read_extra - character (len=strlen) :: message character (len=strlen), dimension(max_extra_inlists) :: extra integer :: unit, i diff --git a/binary/private/binary_edot.f90 b/binary/private/binary_edot.f90 index c5f0fc084..5e92f5602 100644 --- a/binary/private/binary_edot.f90 +++ b/binary/private/binary_edot.f90 @@ -196,7 +196,7 @@ subroutine edot_enhancement_Isotropic(binary_id, ierr) integer, intent(out) :: ierr type (binary_info), pointer :: b integer :: i - real(dp) :: de, Mtot, xfer, costh + real(dp) :: de, Mtot, costh ierr = 0 call binary_ptr(binary_id, b, ierr) diff --git a/binary/private/binary_evolve.f90 b/binary/private/binary_evolve.f90 index 17f42f80b..4b8868b9d 100644 --- a/binary/private/binary_evolve.f90 +++ b/binary/private/binary_evolve.f90 @@ -400,7 +400,7 @@ integer function binary_check_model(b) use binary_irradiation type (binary_info), pointer :: b - integer :: i, j, ierr, id + integer :: ierr, id logical :: implicit_rlo real(dp) :: new_mdot, q @@ -506,7 +506,6 @@ end function binary_check_model integer function binary_finish_step(b) type (binary_info), pointer :: b - real(dp) :: spin_period binary_finish_step = keep_going ! update change factor in case mtransfer_rate has changed diff --git a/binary/private/binary_history.f90 b/binary/private/binary_history.f90 index 951f2522f..8d21fec9a 100644 --- a/binary/private/binary_history.f90 +++ b/binary/private/binary_history.f90 @@ -70,7 +70,7 @@ subroutine data_for_binary_history_columns(& integer, intent(out) :: ierr type (binary_info), pointer :: b - integer :: c, int_val, i, j + integer :: c, int_val, j logical :: is_int_val real(dp) :: val @@ -121,7 +121,7 @@ subroutine do_binary_history_info(b, write_flag, ierr) integer, intent(out) :: ierr character (len = strlen) :: fname, dbl_fmt, int_fmt, txt_fmt - integer :: numcols, io, i, nz, col, j, i0, n + integer :: numcols, io, i, col, j, i0, n integer :: num_extra_header_items, num_extra_cols @@ -408,8 +408,7 @@ end subroutine do_col_pass1 subroutine do_col_pass2(j) ! get the column name integer, intent(in) :: j character (len = 100) :: col_name - character (len = 10) :: str - integer :: c, i, ii + integer :: c c = b% binary_history_column_spec(j) col_name = trim(binary_history_column_name(c)) call do_name(j, col_name) @@ -418,9 +417,9 @@ end subroutine do_col_pass2 subroutine do_col_pass3(c) ! get the column value integer, intent(in) :: c - integer :: i, ii, k, int_val + integer :: k, int_val logical :: is_int_val - real(dp) :: val, val1, Ledd, power_photo, frac + real(dp) :: val int_val = 0; val = 0; is_int_val = .false. call binary_history_getval(& b, c, val, int_val, is_int_val, ierr) @@ -521,7 +520,6 @@ subroutine binary_history_getval(b, c, val, int_val, is_int_val, ierr) integer, intent(out) :: int_val logical, intent(out) :: is_int_val integer, intent(out) :: ierr - integer :: k, i include 'formats' @@ -812,10 +810,7 @@ subroutine get_binary_history_values(b, num, specs, & real(dp), intent(inout) :: values(:) logical, intent(out) :: failed_to_find_value(:) - integer :: i, c, int_val, ierr, n, t, j, iounit - real(dp) :: val - logical :: is_int_val, special_case - character (len = strlen) :: buffer, string + integer :: i, c, ierr include 'formats' ierr = 0 @@ -844,10 +839,8 @@ logical function get1_binary_hist_value(b, name, val) character (len = *) :: name real(dp), intent(out) :: val integer :: i, ierr, num_extra_cols - character (len = 80), pointer, dimension(:) :: & - extra_col_names, binary_col_names - real(dp), pointer, dimension(:) :: & - extra_col_vals, binary_col_vals + character (len = 80), pointer, dimension(:) :: extra_col_names + real(dp), pointer, dimension(:) :: extra_col_vals include 'formats' get1_binary_hist_value = .false. diff --git a/binary/private/binary_history_specs.f90 b/binary/private/binary_history_specs.f90 index 38303d675..297540bdf 100644 --- a/binary/private/binary_history_specs.f90 +++ b/binary/private/binary_history_specs.f90 @@ -52,7 +52,7 @@ recursive subroutine add_binary_history_columns(& character (len = *), intent(in) :: history_columns_file integer, intent(out) :: ierr - integer :: iounit, n, i, t, id, j, cnt, ii, nxt_spec + integer :: iounit, n, i, t, j, nxt_spec character (len = 256) :: buffer, string, filename integer, parameter :: max_level = 20 logical :: bad_item @@ -195,7 +195,7 @@ integer function do1_binary_history_spec(& use utils_def use chem_lib - integer :: iounit, t, n, i, j, id + integer :: iounit, t, n, i, j character (len = *) :: string, buffer integer, intent(out) :: ierr diff --git a/binary/private/binary_jdot.f90 b/binary/private/binary_jdot.f90 index 8e9ddffff..4aa54e7ee 100644 --- a/binary/private/binary_jdot.f90 +++ b/binary/private/binary_jdot.f90 @@ -120,7 +120,6 @@ subroutine default_jdot_ml(binary_id, ierr) integer, intent(in) :: binary_id integer, intent(out) :: ierr type (binary_info), pointer :: b - real(dp) :: alfa ierr = 0 call binary_ptr(binary_id, b, ierr) if (ierr /= 0) then @@ -212,7 +211,7 @@ subroutine check_jdot_mb_conditions(b, s, apply_jdot_mb, qconv_env) real(dp), intent(out) :: qconv_env real(dp) :: qconv_core - integer :: i, k, id + integer :: k include 'formats' @@ -256,7 +255,6 @@ subroutine default_jdot_mb(binary_id, ierr) integer, intent(in) :: binary_id integer, intent(out) :: ierr type (binary_info), pointer :: b - logical :: apply_mdot_mb real(dp) :: rsun4,two_pi_div_p3, qconv_env, jdot_scale logical :: apply_jdot_mb ierr = 0 diff --git a/binary/private/binary_job_ctrls_io.f90 b/binary/private/binary_job_ctrls_io.f90 index 429274ea1..e3c709304 100644 --- a/binary/private/binary_job_ctrls_io.f90 +++ b/binary/private/binary_job_ctrls_io.f90 @@ -94,7 +94,6 @@ recursive subroutine read_binary_job_file(b, filename, level, ierr) integer, intent(in) :: level integer, intent(out) :: ierr logical, dimension(max_extra_inlists) :: read_extra - character (len=strlen) :: message character (len=strlen), dimension(max_extra_inlists) :: extra integer :: unit, i diff --git a/binary/private/binary_mdot.f90 b/binary/private/binary_mdot.f90 index 75888ddf5..335af30b9 100644 --- a/binary/private/binary_mdot.f90 +++ b/binary/private/binary_mdot.f90 @@ -502,7 +502,7 @@ subroutine adjust_mdots(b) use binary_wind, only: eval_wind_xfer_fractions type (binary_info), pointer :: b - real(dp) :: fixed_xfer_fraction, actual_mtransfer_rate + real(dp) :: actual_mtransfer_rate integer :: ierr actual_mtransfer_rate = 0d0 @@ -690,7 +690,7 @@ end subroutine rlo_mdot subroutine get_info_for_ritter(b) type(binary_info), pointer :: b - real(dp) :: rho_exponent, F1, q, rho, p, grav, hp, v_th, rl3, q_temp + real(dp) :: F1, q, rho, p, grav, hp, v_th, rl3, q_temp include 'formats' !--------------------- Optically thin MT rate ----------------------------------------------- @@ -735,7 +735,7 @@ end subroutine get_info_for_ritter real(dp) function calculate_kolb_mdot_thick(b, indexR, rl_d) result(mdot_thick) real(dp), intent(in) :: rl_d integer, intent(in) :: indexR - real(dp) :: F1, F3, G1, dP, q, rho, p, grav, hp, v_th, rl3, q_temp + real(dp) :: F1, F3, G1, d_P, q, q_temp integer :: i type(binary_info), pointer :: b include 'formats' @@ -751,12 +751,12 @@ real(dp) function calculate_kolb_mdot_thick(b, indexR, rl_d) result(mdot_thick) mdot_thick = mdot_thick + F3*sqrt(kerg * b% s_donor% T(i) / & (mp * b% s_donor% mu(i)))*(b% s_donor% Peos(i+1)-b% s_donor% Peos(i)) end do - ! only take a fraction of dP for last cell + ! only take a fraction of d_P for last cell G1 = b% s_donor% gamma1(i) F3 = sqrt(G1) * pow(2d0/(G1+1d0), (G1+1d0)/(2d0*G1-2d0)) - dP = (b% s_donor% r(indexR) - rl_d) / & + d_P = (b% s_donor% r(indexR) - rl_d) / & (b% s_donor% r(indexR) - b% s_donor% r(indexR+1)) * (b% s_donor% Peos(i+1)-b% s_donor% Peos(i)) - mdot_thick = mdot_thick + F3*sqrt(kerg * b% s_donor% T(i) / (mp*b% s_donor% mu(i)))*dP + mdot_thick = mdot_thick + F3*sqrt(kerg * b% s_donor% T(i) / (mp*b% s_donor% mu(i)))*d_P q = b% m(b% a_i)/b% m(b% d_i) ! Mass ratio, as defined in Ritter 1988 ! (Kolb & Ritter 1990 use the opposite!) @@ -769,8 +769,6 @@ end function calculate_kolb_mdot_thick subroutine get_info_for_kolb(b) type(binary_info), pointer :: b - real(dp) :: F3, FF, G1, x_L1, q, g - real(dp) :: mdot_thick0, R_gas, dP, rl, s_div_rl integer :: i, indexR include 'formats' @@ -841,7 +839,7 @@ end subroutine get_info_for_arras subroutine get_info_for_ritter_eccentric(b) type(binary_info), pointer :: b integer :: i - real(dp) :: rho_exponent, F1, q, q_temp, rho, p, grav, hp, v_th, dm + real(dp) :: F1, q, q_temp, rho, p, grav, hp, v_th, dm real(dp), DIMENSION(b% anomaly_steps):: mdot0, mdot, Erit, rl_d include 'formats' diff --git a/binary/private/binary_photos.f90 b/binary/private/binary_photos.f90 index 6cf00b5d0..dae7b18b0 100644 --- a/binary/private/binary_photos.f90 +++ b/binary/private/binary_photos.f90 @@ -40,7 +40,7 @@ module binary_photos subroutine do_saves_for_binary(b, ierr) type(binary_info), pointer :: b integer, intent(out) :: ierr - integer :: iounit, id + integer :: iounit character (len = strlen) :: str_photo, filename, iomsg, report_str call string_for_model_number('x', b% model_number, b% photo_digits, str_photo) diff --git a/binary/private/binary_tides.f90 b/binary/private/binary_tides.f90 index 2692ae41d..011582380 100644 --- a/binary/private/binary_tides.f90 +++ b/binary/private/binary_tides.f90 @@ -108,13 +108,13 @@ subroutine sync_spin_to_orbit(id, nz, osep, qratio, rl, dt_next, Ftid, sync_type integer, intent(out) :: ierr type (star_info), pointer :: s - real(dp) :: G, m, m_lim, t_sync, r_phot, delta_total_J, & + real(dp) :: G, m, t_sync, r_phot, delta_total_J, & sum_J_sync, sum_J_non_sync, tdyn, tkh, rho_face, cv_face, & T_face, csound_face, ff, omega_orb real(dp), dimension(nz) :: j_sync, delta_j, tdyn_div_tkh integer, dimension(nz) :: layers_in_sync - integer :: k, k_rl, k_xm, num_sync_layers + integer :: k, num_sync_layers type (binary_info), pointer :: b real(dp) :: a1,a2 @@ -418,9 +418,9 @@ real(dp) function k_div_T(b, s, has_convective_envelope, ierr) porb = b% period if (has_convective_envelope) then - m_env = 0d0 - r_env = 0d0 - do k=1, s% nz + m_env = s% m(1) / Msun ! assume fully convective + r_env = s% r(1) / Rsun + do k=1, s% nz ! search if _not_ fully convective if (s% mixing_type(k) /= convective_mixing .and. & s% rho(k) > 1d5*s% rho(1)) then r_env = (r_phot - s% r(k))/Rsun diff --git a/binary/private/binary_timestep.f90 b/binary/private/binary_timestep.f90 index 10df58821..5f2ab5d31 100644 --- a/binary/private/binary_timestep.f90 +++ b/binary/private/binary_timestep.f90 @@ -39,7 +39,7 @@ module binary_timestep subroutine set_star_timesteps(b) ! sets the smallest next timestep for all stars type (binary_info), pointer :: b integer :: i, l - real(dp) :: dt_min, rel_overlap + real(dp) :: dt_min type (star_info), pointer :: s integer :: ierr, num_stars ierr = 0 diff --git a/binary/private/pgbinary_ctrls_io.f90 b/binary/private/pgbinary_ctrls_io.f90 index 96611294d..3981feee3 100644 --- a/binary/private/pgbinary_ctrls_io.f90 +++ b/binary/private/pgbinary_ctrls_io.f90 @@ -1393,7 +1393,6 @@ recursive subroutine read_pgbinary_file(b, filename, level, ierr) integer, intent(in) :: level integer, intent(out) :: ierr logical, dimension(max_extra_inlists) :: read_extra - character (len=strlen) :: message character (len=strlen), dimension(max_extra_inlists) :: extra integer :: unit, i diff --git a/binary/private/pgbinary_full.f90 b/binary/private/pgbinary_full.f90 index 7488b72f0..1102a9bf5 100644 --- a/binary/private/pgbinary_full.f90 +++ b/binary/private/pgbinary_full.f90 @@ -766,7 +766,6 @@ subroutine do_pgbinary_plots(b, must_write_files, ierr) logical, intent(in) :: must_write_files integer, intent(out) :: ierr - integer :: i integer(8) :: time0, time1, clock_rate logical :: pause @@ -826,7 +825,6 @@ subroutine onScreen_Plots(b, must_write_files_in, ierr) integer :: i type (pgbinary_win_file_data), pointer :: p logical, parameter :: dbg = .false. - real(dp) :: dlgL, dlgTeff, dHR logical :: must_write_files, show_plot_now, save_plot_now include 'formats' @@ -905,7 +903,7 @@ subroutine update_pgbinary_history_file(b, ierr) type (binary_info), pointer :: b integer, intent(out) :: ierr - integer :: iounit, i, n + integer :: iounit, n character (len = 1024) :: fname type (pgbinary_hist_node), pointer :: pg @@ -950,7 +948,7 @@ subroutine read_pgbinary_data(b, ierr) integer, intent(out) :: ierr logical :: fexist - integer :: iounit, i, n + integer :: iounit, n character (len = 1024) :: fname type (pgbinary_hist_node), pointer :: pg @@ -1009,7 +1007,7 @@ subroutine update_pgbinary_data(b, ierr) type (binary_info), pointer :: b integer, intent(out) :: ierr - integer :: num, i + integer :: num type (pgbinary_hist_node), pointer :: pg include 'formats' diff --git a/binary/private/pgbinary_hist_track.f90 b/binary/private/pgbinary_hist_track.f90 index dd8438b41..c9311d0ef 100644 --- a/binary/private/pgbinary_hist_track.f90 +++ b/binary/private/pgbinary_hist_track.f90 @@ -649,11 +649,10 @@ end subroutine decorate integer, intent(out) :: ierr procedure(pgbinary_decorator_interface), pointer :: pgbinary_decorator - real :: xmin, xmax, ymin, ymax, xleft, xright, ybot, ytop - integer :: i, j, j_min, j_max + real :: xleft, xright, ybot, ytop + integer :: j, j_min, j_max real :: dx, dy, xplus, xminus, yplus, yminus real, dimension(:), pointer :: xvec, yvec - character (len = strlen) :: str integer :: k, n integer :: ix, iy integer :: file_data_len diff --git a/binary/private/pgbinary_history_panels.f90 b/binary/private/pgbinary_history_panels.f90 index 09c31d072..39092f1a3 100644 --- a/binary/private/pgbinary_history_panels.f90 +++ b/binary/private/pgbinary_history_panels.f90 @@ -619,15 +619,14 @@ subroutine do_history_panels_plot(& real, pointer, dimension(:) :: yfile_xdata, other_yfile_xdata real, pointer, dimension(:) :: yfile_ydata, other_yfile_ydata integer :: i, ii, n, j, k, max_width, step_min, step_max, & - y_color, other_y_color, yaxis_id, other_yaxis_id, & - clr_sav, npts, yfile_data_len, other_yfile_data_len - real :: hist_xmin, xmin, xmax, dx, xleft, xright, & + y_color, other_y_color, & + yfile_data_len, other_yfile_data_len + real :: hist_xmin, xleft, xright, & ymargin, panel_dy, panel_ytop, panel_ybot, & - ymin, ymax, dy, ybot, ytop, xpt, ypt, errpt, & - other_ymin, other_ymax, other_ybot, other_ytop + ybot, ytop, xpt, ypt, errpt, & + other_ybot, other_ytop logical :: have_yaxis, have_other_yaxis - integer :: grid_min, grid_max integer :: ix, iounit, ishape, num_pts include 'formats' diff --git a/binary/private/pgbinary_star.f90 b/binary/private/pgbinary_star.f90 index d554db2ad..375c7a590 100644 --- a/binary/private/pgbinary_star.f90 +++ b/binary/private/pgbinary_star.f90 @@ -160,7 +160,6 @@ subroutine do_star_plot(b, id, device_id, xleft, xright, & integer, intent(out) :: ierr character (len = strlen) :: title, status, mass - real, dimension(5) :: xs, ys logical, parameter :: star_subplot = .true. include 'formats' diff --git a/binary/private/pgbinary_summary_history.f90 b/binary/private/pgbinary_summary_history.f90 index 3a50fac0e..8413b40ab 100644 --- a/binary/private/pgbinary_summary_history.f90 +++ b/binary/private/pgbinary_summary_history.f90 @@ -77,7 +77,7 @@ subroutine do_summary_history_plot(b, id, device_id, & character (len = strlen) :: yname real, pointer, dimension(:) :: xvec, yvec - real :: xmin, xmax, windy, ymin, ymax, xmargin, & + real :: xmin, xmax, windy, ymin, ymax, & legend_xmin, legend_xmax, legend_ymin, legend_ymax integer :: lw, lw_sav, num_lines, & npts, step_min, step_max @@ -147,7 +147,7 @@ subroutine plot(ierr) use rates_def integer, intent(out) :: ierr - integer :: j, ii, jj, i, cnt, k, yaxis_id + integer :: j, cnt, k logical :: show(num_lines) logical, parameter :: dbg = .false. real :: ybot, yvec_min, yvec_max diff --git a/binary/private/pgbinary_support.f90 b/binary/private/pgbinary_support.f90 index 3c0577f4b..35f2aa713 100644 --- a/binary/private/pgbinary_support.f90 +++ b/binary/private/pgbinary_support.f90 @@ -48,7 +48,7 @@ module pgbinary_support subroutine add_to_pgbinary_hist(b, pg_hist_new) type (binary_info), pointer :: b type (pgbinary_hist_node), pointer :: pg_hist_new - type (pgbinary_hist_node), pointer :: pg_hist => null(), next => null() + type (pgbinary_hist_node), pointer :: next => null() integer :: step step = pg_hist_new% step do @@ -73,7 +73,7 @@ end subroutine add_to_pgbinary_hist subroutine pgbinary_clear(b) type (binary_info), pointer :: b - integer :: i, num + integer :: i type (pgbinary_win_file_data), pointer :: p type (pgbinary_hist_node), pointer :: pg_hist => null(), next => null() pg_hist => b% pg% pgbinary_hist @@ -211,8 +211,8 @@ subroutine open_device(b, p, is_file, dev, id, ierr) integer, intent(out) :: id integer, intent(out) :: ierr - integer :: pgopen, system - character (len = strlen) :: dir, cmd + integer :: pgopen + character (len = strlen) :: dir logical :: white_on_black_flag real :: width, ratio @@ -296,7 +296,7 @@ subroutine set_hist_points_steps(& integer, intent(in) :: step_min, step_max, numpts real, intent(out) :: vec(:) integer, intent(out) :: ierr - integer :: i, n + integer :: i type (pgbinary_hist_node), pointer :: pg ierr = 0 if (numpts == 0) return @@ -342,7 +342,7 @@ subroutine get_hist_points(& type (binary_info), pointer :: b integer, intent(in) :: step_min, step_max, numpts, index real, intent(out) :: vec(:) - integer :: i, n + integer :: i type (pgbinary_hist_node), pointer :: pg => null() include 'formats' if (numpts == 0) return @@ -576,7 +576,7 @@ subroutine show_age_pgbinary(b) character (len = 32) :: age_str, units_str real(dp) :: age real :: ch - integer :: len, i, j, iE, n + integer :: len, i, j, iE if (.not. b% pg% pgbinary_show_age) return age = b% binary_age if (b% pg% pgbinary_show_age_in_seconds) then diff --git a/binary/private/run_binary_support.f90 b/binary/private/run_binary_support.f90 index 87f6eceaa..d84f375d0 100644 --- a/binary/private/run_binary_support.f90 +++ b/binary/private/run_binary_support.f90 @@ -96,10 +96,9 @@ end subroutine extras_binary_controls result_reason, model_number, iounit, binary_startup, model, num_stars type (star_info), pointer :: s character (len = 256) :: restart_filename, photo_filename - integer(8) :: total, time0, time1, clock_rate + integer(8) :: time0, clock_rate logical :: doing_restart, first_try, continue_evolve_loop, & get_history_info, write_history, write_terminal, will_read_pgbinary_inlist - real(dp) :: sum_times, dt, timestep_factor type (binary_info), pointer :: b character (len = strlen) :: inlist_fname diff --git a/binary/test_suite/jdot_gr_check/README.rst b/binary/test_suite/jdot_gr_check/README.rst index 1f9d63ca7..926b8cbaf 100644 --- a/binary/test_suite/jdot_gr_check/README.rst +++ b/binary/test_suite/jdot_gr_check/README.rst @@ -9,7 +9,7 @@ analytical result of `Peters (1964) `_. +* Part 1 (``inlist_project``) loads a 0.5 Msun zero-age main sequence model and a 0.8 Msun point mass. The binary system is given an initial separation of 2.0 Rsun, and is evolved until the onset of Roche Lobe overflow. Along the way, the ``run_binary_extras.f90`` calculates the deviation from the analytical result of `Peters (1964) `_. .. code-block:: console diff --git a/binary/test_suite/jdot_ml_check/README.rst b/binary/test_suite/jdot_ml_check/README.rst index fb103e9a3..5886468db 100644 --- a/binary/test_suite/jdot_ml_check/README.rst +++ b/binary/test_suite/jdot_ml_check/README.rst @@ -11,7 +11,7 @@ follows the analytical result of `Tauris & van den Heuvel (2006) This test case has 1 part. Click to see a larger version of a plot. -* Part 1 (``inlist_project``) loads a 1 Msun zero-age main sequence model and a 1.4 Msun point mass. The binary system is given an initial seperation of 2.75 Rsun, and is evolved for 14 billion years. Along the way, the ``run_binary_extras.f90`` calculates the deviation from the analytical result of `Tauris & van den Heuvel (2006) `_: +* Part 1 (``inlist_project``) loads a 1 Msun zero-age main sequence model and a 1.4 Msun point mass. The binary system is given an initial separation of 2.75 Rsun, and is evolved for 14 billion years. Along the way, the ``run_binary_extras.f90`` calculates the deviation from the analytical result of `Tauris & van den Heuvel (2006) `_: .. code-block:: console diff --git a/chem/preprocessor/chem_input_data.tar.xz b/chem/preprocessor/chem_input_data.tar.xz index dfa6f8456..b784a5a56 100644 --- a/chem/preprocessor/chem_input_data.tar.xz +++ b/chem/preprocessor/chem_input_data.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d5663cb6e49036bb5450f8e3810cc87d330038338335801f1b10862305eb6bb -size 365452 +oid sha256:bbcee04e2fd47f81c17830d65689b204fb9c13c9c12ed10d455fb4d0029339a9 +size 366964 diff --git a/chem/preprocessor/src/chem_support.f90 b/chem/preprocessor/src/chem_support.f90 index bb0ae2bb3..71b0d868b 100644 --- a/chem/preprocessor/src/chem_support.f90 +++ b/chem/preprocessor/src/chem_support.f90 @@ -2,7 +2,8 @@ module chem_support use const_def use const_lib use math_lib - + use utils_lib, only: mesa_error + real(dp), parameter :: no_mass_table_entry = -999.d0 character(len=256) :: data_dir, output_dir, masstable_filename, winvn_filename integer :: masstable_header_length @@ -116,6 +117,7 @@ subroutine read_mass_table() do i = 1, nlines read(mass_unit,'(A)',iostat = ios) buf call parse_line_mass_unit(buf, Z, A, eval, mass, error,ierr) + if (ierr /= 0) cycle N = A-Z ! store mass and convert from keV to MeV mass_table(Z,N) = mass*keV_to_MeV diff --git a/chem/public/chem_def.f90 b/chem/public/chem_def.f90 index 97bbe6d42..7955006ef 100644 --- a/chem/public/chem_def.f90 +++ b/chem/public/chem_def.f90 @@ -55,6 +55,8 @@ module chem_def !AGSS09 m,s s, with some m !L09 m,s,r r !A09_Prz modified AGSS09 - he, c, n, o, ne, mg, al, si, s, ar, fe. + !MB22 m,s s, with some m, supplimented with agss09 + !AAG21 m,s s, with some m ! storage for Lodders (2003) isotopic percentages type isotopic_abundance_table_type @@ -280,6 +282,8 @@ module chem_def real(dp), parameter :: AGSS09_zsol = 0.0134d0 real(dp), parameter :: L09_zsol = 0.0154d0 real(dp), parameter :: A09_Prz_zsol = 0.014d0 + real(dp), parameter :: MB22_photospheric_zsol = 0.0169d0 + real(dp), parameter :: AAG21_photospheric_zsol = 0.0139d0 real(dp), parameter :: AG89_ysol = 0.2485d0 real(dp), parameter :: GN93_ysol = 0.2485d0 @@ -289,6 +293,8 @@ module chem_def real(dp), parameter :: AGSS09_ysol = 0.2485d0 real(dp), parameter :: L09_ysol = 0.2751d0 real(dp), parameter :: A09_Prz_ysol = 0.276d0 + real(dp), parameter :: MB22_photospheric_ysol = 0.2485 + real(dp), parameter :: AAG21_photospheric_ysol = 0.2485 character(len=iso_name_length) :: chem_element_main_iso_name(num_chem_elements) integer, parameter :: chem_element_name_len = iso_name_length @@ -306,6 +312,8 @@ module chem_def integer, parameter :: AGSS09_zfracs = 6 integer, parameter :: L09_zfracs = 7 integer, parameter :: A09_Prz_zfracs = 8 + integer, parameter :: MB22_photospheric_zfracs = 9 + integer, parameter :: AAG21_photospheric_zfracs = 10 real(dp) :: AG89_element_zfrac(num_chem_elements) ! fraction by mass of total Z @@ -351,7 +359,12 @@ module chem_def ! eps_S = 7.14 ! eps_Ar = 6.50 ! eps_Fe = 7.52 - + + real(dp) :: MB22_photospheric_element_zfrac(num_chem_elements) ! fraction by mass of total Z + ! Ekaterina Magg et al. , A&A 661, A140 (2022) photospheric abundance. + + real(dp) :: AAG21_photospheric_element_zfrac(num_chem_elements) ! fraction by mass of total Z + ! Asplund et al. A&A 653, A141 (2021) photospheric abundance. type (integer_dict), pointer :: chem_element_names_dict @@ -550,6 +563,10 @@ subroutine init_chem_tables call init_AGSS09_data call init_A09_Przybilla_data + + call init_MB22_photospheric_data + + call init_AAG21_photospheric_data call init_L09_data @@ -1718,7 +1735,219 @@ subroutine init_A09_Przybilla_data ! fraction by mass of total Z end do end subroutine init_A09_Przybilla_data - + + subroutine init_MB22_photospheric_data ! fraction by mass of total Z + ! Ekaterina Magg et al. , A&A 661, A140 (2022) photospheric abundance. + ! supplimented with Asplund, Grevesse, Sauval, and Scott 2009 abundances + integer :: i + real(dp) :: z_sum + include 'formats' + + MB22_photospheric_element_zfrac(:) = -20.0d0 + + ! first store log abundances from the paper + MB22_photospheric_element_zfrac(e_li) = 3.26d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_be) = 1.38d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_b ) = 2.70d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_c ) = 8.56d0 + MB22_photospheric_element_zfrac(e_n ) = 7.98d0 + MB22_photospheric_element_zfrac(e_o ) = 8.77d0 + MB22_photospheric_element_zfrac(e_f ) = 4.40d0 + MB22_photospheric_element_zfrac(e_ne) = 8.15d0 + MB22_photospheric_element_zfrac(e_na) = 6.29d0 + MB22_photospheric_element_zfrac(e_mg) = 7.55d0 + MB22_photospheric_element_zfrac(e_al) = 6.43d0 + MB22_photospheric_element_zfrac(e_si) = 7.59d0 + MB22_photospheric_element_zfrac(e_p ) = 5.41d0 + MB22_photospheric_element_zfrac(e_s ) = 7.16d0 + MB22_photospheric_element_zfrac(e_cl) = 5.25d0 + MB22_photospheric_element_zfrac(e_ar) = 6.50d0 + MB22_photospheric_element_zfrac(e_k ) = 5.14d0 + MB22_photospheric_element_zfrac(e_ca) = 6.37d0 + MB22_photospheric_element_zfrac(e_sc) = 3.07d0 + MB22_photospheric_element_zfrac(e_ti) = 4.94d0 + MB22_photospheric_element_zfrac(e_v ) = 3.89d0 + MB22_photospheric_element_zfrac(e_cr) = 5.74d0 + MB22_photospheric_element_zfrac(e_mn) = 5.52d0 + MB22_photospheric_element_zfrac(e_fe) = 7.50d0 + MB22_photospheric_element_zfrac(e_co) = 4.95d0 + MB22_photospheric_element_zfrac(e_ni) = 6.24d0 + MB22_photospheric_element_zfrac(e_cu) = 4.19d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_zn) = 4.56d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_ga) = 3.04d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_ge) = 3.65d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_as) = 2.30d0 !meteor AGSS09 + MB22_photospheric_element_zfrac(e_se) = 3.34d0 !meteor AGSS09 + MB22_photospheric_element_zfrac(e_br) = 2.54d0 !meteor AGSS09 + MB22_photospheric_element_zfrac(e_kr) = 3.25d0 !indirect AGSS09 + MB22_photospheric_element_zfrac(e_rb) = 2.52d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_sr) = 2.87d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_y ) = 2.21d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_zr) = 2.58d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_nb) = 1.46d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_mo) = 1.88d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Ru) = 1.75d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Rh) = 0.91d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Pd) = 1.57d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Ag) = 0.94d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Cd) = 1.71d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_In) = 0.80d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Sn) = 2.04d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Sb) = 1.01d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Te) = 2.18d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_I ) = 1.55d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Xe) = 2.24d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Cs) = 1.08d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Ba) = 2.18d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_La) = 1.10d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Ce) = 1.58d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Pr) = 0.72d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Nd) = 1.42d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Sm) = 0.96d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Eu) = 0.52d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Gd) = 1.07d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Tb) = 0.30d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Dy) = 1.10d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Ho) = 0.48d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Er) = 0.92d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Tm) = 0.10d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Yb) = 0.84d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Lu) = 0.10d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Hf) = 0.85d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Ta) = -0.12d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_W ) = 0.85d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Re) = 0.26d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Os) = 1.40d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Ir) = 1.38d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Pt) = 1.62d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Au) = 0.92d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Hg) = 1.17d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Tl) = 0.90d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Pb) = 1.75d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Bi) = 0.65d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_Th) = 0.02d0 ! AGSS09 + MB22_photospheric_element_zfrac(e_U) = -0.54d0 ! AGSS09 + + ! convert to fraction of Z by mass + z_sum = 0 + do i = e_li, e_u + MB22_photospheric_element_zfrac(i) = & + exp10(MB22_photospheric_element_zfrac(i))*element_atomic_weight(i) + z_sum = z_sum + MB22_photospheric_element_zfrac(i) + end do + do i = e_li, e_u + MB22_photospheric_element_zfrac(i) = MB22_photospheric_element_zfrac(i) / z_sum + end do + + end subroutine init_MB22_photospheric_data + + + + + subroutine init_AAG21_photospheric_data ! fraction by mass of total Z + ! Asplund et al. A&A 653, A141 (2021) photospheric abundance. + ! Supplimented with meteoric values + integer :: i + real(dp) :: z_sum + include 'formats' + + AAG21_photospheric_element_zfrac(:) = -20.0d0 + + ! first store log abundances from the paper + AAG21_photospheric_element_zfrac(e_li) = 0.96 !± 0.013 + AAG21_photospheric_element_zfrac(e_be) = 1.38 !± 0.09 + AAG21_photospheric_element_zfrac(e_b ) = 2.70 !± 0.20 + AAG21_photospheric_element_zfrac(e_c ) = 8.46 !± 0.04 + AAG21_photospheric_element_zfrac(e_n ) = 7.83 !± 0.07 + AAG21_photospheric_element_zfrac(e_o ) = 8.69 !± 0.04 + AAG21_photospheric_element_zfrac(e_f ) = 4.40 !± 0.25 + AAG21_photospheric_element_zfrac(e_ne) = 8.06 !± 0.05 + AAG21_photospheric_element_zfrac(e_na) = 6.22 !± 0.03 + AAG21_photospheric_element_zfrac(e_mg) = 7.55 !± 0.03 + AAG21_photospheric_element_zfrac(e_al) = 6.43 !± 0.03 + AAG21_photospheric_element_zfrac(e_si) = 7.51 !± 0.03 + AAG21_photospheric_element_zfrac(e_p ) = 5.41 !± 0.03 + AAG21_photospheric_element_zfrac(e_s ) = 7.12 !± 0.03 + AAG21_photospheric_element_zfrac(e_cl) = 5.31 !± 0.20 + AAG21_photospheric_element_zfrac(e_ar) = 6.38 !± 0.10 + AAG21_photospheric_element_zfrac(e_k ) = 5.07 !± 0.03 + AAG21_photospheric_element_zfrac(e_ca) = 6.30 !± 0.03 + AAG21_photospheric_element_zfrac(e_sc) = 3.14 !± 0.04 + AAG21_photospheric_element_zfrac(e_ti) = 4.97 !± 0.05 + AAG21_photospheric_element_zfrac(e_v ) = 3.90 !± 0.08 + AAG21_photospheric_element_zfrac(e_cr) = 5.62 !± 0.04 + AAG21_photospheric_element_zfrac(e_mn) = 5.42 !± 0.06 + AAG21_photospheric_element_zfrac(e_fe) = 7.46 !± 0.04 + AAG21_photospheric_element_zfrac(e_co) = 4.94 !± 0.05 + AAG21_photospheric_element_zfrac(e_ni) = 6.20 !± 0.04 + AAG21_photospheric_element_zfrac(e_cu) = 4.18 !± 0.05 + AAG21_photospheric_element_zfrac(e_zn) = 4.56 !± 0.05 + AAG21_photospheric_element_zfrac(e_ga) = 3.02 !± 0.05 + AAG21_photospheric_element_zfrac(e_ge) = 3.62 !± 0.10 + AAG21_photospheric_element_zfrac(e_as) = 2.30 !± 0.04 meteorites + AAG21_photospheric_element_zfrac(e_se) = 3.34 !± 0.03 meteorites + AAG21_photospheric_element_zfrac(e_br) = 2.54 !± 0.06 meteorites + AAG21_photospheric_element_zfrac(e_kr) = 3.12 !± 0.10 + AAG21_photospheric_element_zfrac(e_rb) = 2.32 !± 0.08 + AAG21_photospheric_element_zfrac(e_sr) = 2.83 !± 0.06 + AAG21_photospheric_element_zfrac(e_y ) = 2.21 !± 0.05 + AAG21_photospheric_element_zfrac(e_zr) = 2.59 !± 0.04 + AAG21_photospheric_element_zfrac(e_nb) = 1.47 !± 0.06 + AAG21_photospheric_element_zfrac(e_mo) = 1.88 !± 0.09 + AAG21_photospheric_element_zfrac(e_Ru) = 1.75 !± 0.08 + AAG21_photospheric_element_zfrac(e_Rh) = 0.78 !± 0.11 + AAG21_photospheric_element_zfrac(e_Pd) = 1.57 !± 0.10 + AAG21_photospheric_element_zfrac(e_Ag) = 0.96 !± 0.10 + AAG21_photospheric_element_zfrac(e_Cd) = 1.71 !± 0.03 meteorites + AAG21_photospheric_element_zfrac(e_In) = 0.80 !± 0.20 + AAG21_photospheric_element_zfrac(e_Sn) = 2.02 !± 0.10 + AAG21_photospheric_element_zfrac(e_Sb) = 1.01 !± 0.06 meteorites + AAG21_photospheric_element_zfrac(e_Te) = 2.18 !± 0.03 meteorites + AAG21_photospheric_element_zfrac(e_I ) = 1.55 !± 0.08 meteorites + AAG21_photospheric_element_zfrac(e_Xe) = 2.22 !± 0.05 + AAG21_photospheric_element_zfrac(e_Cs) = 1.08 !± 0.03 meteorites + AAG21_photospheric_element_zfrac(e_Ba) = 2.27 !± 0.05 + AAG21_photospheric_element_zfrac(e_La) = 1.11 !± 0.04 + AAG21_photospheric_element_zfrac(e_Ce) = 1.58 !± 0.04 + AAG21_photospheric_element_zfrac(e_Pr) = 0.75 !± 0.05 + AAG21_photospheric_element_zfrac(e_Nd) = 1.42 !± 0.04 + AAG21_photospheric_element_zfrac(e_Sm) = 0.95 !± 0.04 + AAG21_photospheric_element_zfrac(e_Eu) = 0.52 !± 0.04 + AAG21_photospheric_element_zfrac(e_Gd) = 1.08 !± 0.04 + AAG21_photospheric_element_zfrac(e_Tb) = 0.31 !± 0.10 + AAG21_photospheric_element_zfrac(e_Dy) = 1.10 !± 0.04 + AAG21_photospheric_element_zfrac(e_Ho) = 0.48 !± 0.11 + AAG21_photospheric_element_zfrac(e_Er) = 0.93 !± 0.05 + AAG21_photospheric_element_zfrac(e_Tm) = 0.11 !± 0.04 + AAG21_photospheric_element_zfrac(e_Yb) = 0.85 !± 0.11 + AAG21_photospheric_element_zfrac(e_Lu) = 0.10 !± 0.09 + AAG21_photospheric_element_zfrac(e_Hf) = 0.85 !± 0.05 + AAG21_photospheric_element_zfrac(e_Ta) = -0.15 !± 0.04 meteorites + AAG21_photospheric_element_zfrac(e_W ) = 0.79 !± 0.11 + AAG21_photospheric_element_zfrac(e_Re) = 0.26 !± 0.02 meteorites + AAG21_photospheric_element_zfrac(e_Os) = 1.35 !± 0.12 + AAG21_photospheric_element_zfrac(e_Ir) = 1.32 !± 0.02 meteorites + AAG21_photospheric_element_zfrac(e_Pt) = 1.61 !± 0.02 meteorites + AAG21_photospheric_element_zfrac(e_Au) = 0.91 !± 0.12 + AAG21_photospheric_element_zfrac(e_Hg) = 1.17 !± 0.18 meteorites + AAG21_photospheric_element_zfrac(e_Tl) = 0.92 !± 0.17 + AAG21_photospheric_element_zfrac(e_Pb) = 1.95 !± 0.08 + AAG21_photospheric_element_zfrac(e_Bi) = 0.65 !± 0.04 meteorites + AAG21_photospheric_element_zfrac(e_Th) = 0.03 !± 0.10 + AAG21_photospheric_element_zfrac(e_U) = -0.54 !± 0.03 meteorites + + ! convert to fraction of Z by mass + z_sum = 0 + do i = e_li, e_u + AAG21_photospheric_element_zfrac(i) = & + exp10(AAG21_photospheric_element_zfrac(i))*element_atomic_weight(i) + z_sum = z_sum + AAG21_photospheric_element_zfrac(i) + end do + do i = e_li, e_u + AAG21_photospheric_element_zfrac(i) = AAG21_photospheric_element_zfrac(i) / z_sum + end do + + end subroutine init_AAG21_photospheric_data subroutine init_L09_data ! fraction by mass of total Z ! Lodders 09 diff --git a/chem/public/chem_lib.f90 b/chem/public/chem_lib.f90 index ba9e32c68..0dfcae6ef 100644 --- a/chem/public/chem_lib.f90 +++ b/chem/public/chem_lib.f90 @@ -402,7 +402,6 @@ subroutine generate_nuclide_names(Z, A, names) integer, dimension(:), intent(in) :: Z, A character(len=iso_name_length), dimension(size(Z)), intent(out) :: names integer :: i, ierr, count_isomer - character(len=80) :: message logical :: use_al26_isomers count_isomer = 0 @@ -439,7 +438,6 @@ subroutine generate_long_nuclide_names(Z, A, long_names) integer, dimension(:), intent(in) :: Z, A character(len=long_name_length), dimension(size(Z)), intent(out) :: long_names integer :: i, ierr, count_isomer - character(len=80) :: message logical :: use_al26_isomers count_isomer = 0 @@ -614,7 +612,7 @@ subroutine get_stable_mass_frac(chem_id,num_species,abun_in,abun_out) integer,intent(in) :: num_species real(dp),dimension(:),intent(in) :: abun_in real(dp),dimension(:),intent(out) :: abun_out - integer :: i,j,a,z,n + integer :: i,j,a,z logical :: found abun_out(1:solsiz)=0.d0 @@ -705,7 +703,13 @@ real(dp) function chem_M_div_h(x,z,zfrac_choice) ! Returns [M/H] ysolar = L09_ysol case(A09_Prz_zfracs) zsolar = A09_Prz_zsol - ysolar = A09_Prz_ysol + ysolar = A09_Prz_ysol + case(MB22_photospheric_zfracs) + zsolar = MB22_photospheric_zsol + ysolar = MB22_photospheric_ysol + case(AAG21_photospheric_zfracs) + zsolar = AAG21_photospheric_zsol + ysolar = AAG21_photospheric_ysol case(Custom_zfracs) call mesa_error(__FILE__,__LINE__,"[M/H] not supported with custom zfracs.") case default diff --git a/chem/test/src/test_chem.f b/chem/test/src/test_chem.f index 27dcd3b7a..3d2552c39 100644 --- a/chem/test/src/test_chem.f +++ b/chem/test/src/test_chem.f @@ -57,7 +57,7 @@ end subroutine do_tests subroutine do_test_chem - real(dp) :: c, n, o, cno, w + real(dp) :: c, n, o, cno integer :: ic12, in14, io16 include 'formats' @@ -184,7 +184,7 @@ subroutine do_test_Qtotal end subroutine do_test_Qtotal subroutine do_test_lodders - integer :: ierr, i + integer :: i real(dp) :: percent write (*,*) diff --git a/colors/private/mod_colors.f90 b/colors/private/mod_colors.f90 index cfa75d607..c97d9a954 100644 --- a/colors/private/mod_colors.f90 +++ b/colors/private/mod_colors.f90 @@ -318,7 +318,6 @@ end subroutine Read_One_Colors_Data subroutine Read_Colors_Data(fname, thead, col_names, n_colors, ierr) - use const_def, only: mesa_data_dir integer, intent(out) :: ierr ! 0 means ok type (lgt_list), pointer,intent(inout) :: thead character (len=*),intent(in) :: fname @@ -535,7 +534,6 @@ subroutine Eval_Colors(log_Teff,log_g, M_div_h_in, results, thead, n_colors, ier type (lgt_list), pointer,intent(inout) :: thead !real(dp), parameter :: Zsol = 0.02d0, colors_bol_sun = 4.746d0 - real(dp) :: colors_bol real(dp) :: lgg, lgz, lgt, alfa, beta real(dp),dimension(max_num_bcs_per_file) :: results1, results2 diff --git a/colors/public/colors_lib.f90 b/colors/public/colors_lib.f90 index 85d42e57e..2e6151be7 100644 --- a/colors/public/colors_lib.f90 +++ b/colors/public/colors_lib.f90 @@ -193,7 +193,7 @@ integer function get_bc_id_by_name(name,ierr) ! input character(len=*), intent(in) :: name integer, intent(inout) :: ierr - integer :: i,j,k,n_colors + integer :: i,j,k get_bc_id_by_name=-1 ierr=0 @@ -222,7 +222,7 @@ character(len=strlen) function get_bc_name_by_id(id,ierr) ! input integer, intent(in) :: id integer, intent(inout) :: ierr - integer :: i,j,k,n_colors + integer :: i,j,k get_bc_name_by_id='' ierr=0 diff --git a/colors/test/src/test_colors.f90 b/colors/test/src/test_colors.f90 index 3ceea5a7b..835c0d586 100644 --- a/colors/test/src/test_colors.f90 +++ b/colors/test/src/test_colors.f90 @@ -16,7 +16,7 @@ subroutine do_test_colors use const_lib character (len=256) :: my_mesa_dir - integer :: info,ierr + integer :: info logical, parameter :: do_one = .true. integer, parameter :: n_colors=11 @@ -57,14 +57,13 @@ subroutine do_one_colors real(dp) :: boloMag real(dp), dimension(num_results) :: results real(dp) ::log_g, x - integer :: info, i,total_num_colors + integer :: info, i character (len=8) :: vname character(len=strlen),dimension(num_results):: colors_name logical, parameter :: doing_solar = .true. real(dp), dimension(num_results) :: solar_expected_results = (/ & 4.75d0, -0.11510d0, -0.14211d0, -0.61768d0, -0.36199d0, -0.68894d0, -1.46926d0, -0.32695d0, -0.78032d0, -0.39024d0, & 0.05223d0, -0.10512d0, -0.33801d0, -0.44312d0, -0.44123d0, -0.43080d0 /) - character(len=256),dimension(20) :: names ! solar values diff --git a/const/public/const_def.f90 b/const/public/const_def.f90 index 3d12266a4..9404ef634 100644 --- a/const/public/const_def.f90 +++ b/const/public/const_def.f90 @@ -24,205 +24,197 @@ ! ! *********************************************************************** - module const_def - implicit none +module const_def + implicit none + ! real number precision options: single, double, quad + integer, parameter :: sp = selected_real_kind(p=5) + integer, parameter :: dp = selected_real_kind(p=15) + integer, parameter :: qp = selected_real_kind(p=30) - ! real number precision options: single, double, quad - integer, parameter :: sp = selected_real_kind(p=5) - integer, parameter :: dp = selected_real_kind(p=15) - integer, parameter :: qp = selected_real_kind(p=30) + ! integer precision options + integer, parameter :: i4 = selected_int_kind(9) + integer, parameter :: i8 = selected_int_kind(14) - ! integer precision options - integer, parameter :: i4 = selected_int_kind(9) - integer, parameter :: i8 = selected_int_kind(14) - - - integer, parameter :: strlen = 256 ! for character (len=strlen) - - integer, parameter :: max_extra_inlists = 5 ! number of inlists an inlist can depend on + integer, parameter :: strlen = 256 ! for character (len=strlen) + integer, parameter :: max_extra_inlists = 5 ! number of inlists an inlist can depend on ! ! mathematical and physical constants (in cgs) ! ! math constants - real(dp), parameter :: pi = 3.1415926535897932384626433832795028841971693993751d0 - real(dp), parameter :: pi2 = pi * pi - real(dp), parameter :: pi4 = 4*pi - real(dp), parameter :: eulercon = 0.577215664901532861d0 - real(dp), parameter :: eulernum = 2.71828182845904523536028747135266249d0 - real(dp), parameter :: ln2 = 6.9314718055994529D-01 ! = log(2d0) - real(dp), parameter :: ln3 = 1.0986122886681096D+00 ! = log(3d0) - real(dp), parameter :: lnPi = 1.14472988584940017414343_dp ! = log(pi) - real(dp), parameter :: ln10 = 2.3025850929940455_dp ! = log(10d0) - real(dp), parameter :: iln10 = 0.43429448190325187_dp ! = 1d0/log(10d0) - real(dp), parameter :: a2rad = pi/180.0d0 ! angle to radians - real(dp), parameter :: rad2a = 180.0d0/pi ! radians to angle - real(dp), parameter :: one_third = 1d0/3d0 - real(dp), parameter :: two_thirds = 2d0/3d0 - real(dp), parameter :: four_thirds = 4d0/3d0 - real(dp), parameter :: five_thirds = 5d0/3d0 - real(dp), parameter :: one_sixth = 1d0/6d0 - real(dp), parameter :: four_thirds_pi = four_thirds*pi - real(dp), parameter :: ln4pi3 = 1.4324119583011810d0 ! = log(4*pi/3) - real(dp), parameter :: two_13 = 1.2599210498948730d0 ! = pow(2d0,1d0/3d0) - real(dp), parameter :: four_13 = 1.5874010519681994d0 ! = pow(4d0,1d0/3d0) - real(dp), parameter :: sqrt2 = 1.414213562373095d0 ! = sqrt(2) - real(dp), parameter :: sqrt_2_div_3 = 0.816496580927726d0 ! = sqrt(2/3) + real(dp), parameter :: pi = 3.1415926535897932384626433832795028841971693993751d0 + real(dp), parameter :: pi2 = pi*pi + real(dp), parameter :: pi4 = 4*pi + real(dp), parameter :: eulercon = 0.577215664901532861d0 + real(dp), parameter :: eulernum = 2.71828182845904523536028747135266249d0 + real(dp), parameter :: ln2 = 6.9314718055994529D-01 ! = log(2d0) + real(dp), parameter :: ln3 = 1.0986122886681096D+00 ! = log(3d0) + real(dp), parameter :: lnPi = 1.14472988584940017414343_dp ! = log(pi) + real(dp), parameter :: ln10 = 2.3025850929940455_dp ! = log(10d0) + real(dp), parameter :: iln10 = 0.43429448190325187_dp ! = 1d0/log(10d0) + real(dp), parameter :: a2rad = pi/180.0d0 ! angle to radians + real(dp), parameter :: rad2a = 180.0d0/pi ! radians to angle + real(dp), parameter :: one_third = 1d0/3d0 + real(dp), parameter :: two_thirds = 2d0/3d0 + real(dp), parameter :: four_thirds = 4d0/3d0 + real(dp), parameter :: five_thirds = 5d0/3d0 + real(dp), parameter :: one_sixth = 1d0/6d0 + real(dp), parameter :: four_thirds_pi = four_thirds*pi + real(dp), parameter :: ln4pi3 = 1.4324119583011810d0 ! = log(4*pi/3) + real(dp), parameter :: two_13 = 1.2599210498948730d0 ! = pow(2d0,1d0/3d0) + real(dp), parameter :: four_13 = 1.5874010519681994d0 ! = pow(4d0,1d0/3d0) + real(dp), parameter :: sqrt2 = 1.414213562373095d0 ! = sqrt(2) + real(dp), parameter :: sqrt_2_div_3 = 0.816496580927726d0 ! = sqrt(2/3) ! exact physical constants - ! CODATA 2018 - real(dp), parameter :: avo = 6.02214076d23 ! Avogadro constant (mole^-1) - real(dp), parameter :: amu = 1d0 / avo ! atomic mass unit (g) - real(dp), parameter :: clight = 2.99792458d10 ! speed of light in vacuum (cm s^-1) - real(dp), parameter :: qe = (clight/10d0) * 1.602176634d-19 ! elementary charge (esu == (g cm^3 s^-2)^(1/2)) - real(dp), parameter :: kerg = 1.380649d-16 - real(dp), parameter :: boltzm = kerg ! Boltzmann constant (erg K^-1) - real(dp), parameter :: planck_h = 6.62607015d-27 ! Planck constant (erg s) - real(dp), parameter :: hbar = planck_h / (2*pi) - real(dp), parameter :: cgas = boltzm*avo ! ideal gas constant (erg K^-1) - real(dp), parameter :: ev2erg = 1.602176634d-12 ! electron volt (erg) - real(dp), parameter :: mev_to_ergs = 1d6*ev2erg - real(dp), parameter :: mev_amu = mev_to_ergs/amu - real(dp), parameter :: mev2gr = 1d6*ev2erg/(clight*clight) ! MeV to grams - real(dp), parameter :: Qconv = mev_to_ergs*avo - real(dp), parameter :: kev = kerg / ev2erg ! converts temp to ev (ev K^-1) - real(dp), parameter :: boltz_sigma = (pi*pi * boltzm*boltzm*boltzm*boltzm) / (60 * hbar*hbar*hbar * clight*clight) ! Stefan-Boltzmann constant (erg cm^-2 K^-4 s^-1) - real(dp), parameter :: crad = boltz_sigma*4/clight ! radiation density constant, AKA "a" (erg cm^-3 K^-4); Prad = crad * T^4 / 3 - - ! IAU - real(dp), parameter :: au = 1.49597870700D13 ! (cm) - exact value defined by IAU 2009, 2012 - real(dp), parameter :: pc = (3.600D3 * rad2a) * au ! (cm) parsec, by definition - real(dp), parameter :: dayyer = 365.25d0 ! days per (Julian) year - real(dp), parameter :: secday = 24*60*60 ! seconds in a day - real(dp), parameter :: secyer = secday*dayyer ! seconds per year - real(dp), parameter :: ly = clight*secyer ! light year (cm) + ! CODATA 2018 + real(dp), parameter :: avo = 6.02214076d23 ! Avogadro constant (mole^-1) + real(dp), parameter :: amu = 1d0/avo ! atomic mass unit (g) + real(dp), parameter :: clight = 2.99792458d10 ! speed of light in vacuum (cm s^-1) + real(dp), parameter :: qe = (clight/10d0)*1.602176634d-19 ! elementary charge (esu == (g cm^3 s^-2)^(1/2)) + real(dp), parameter :: kerg = 1.380649d-16 + real(dp), parameter :: boltzm = kerg ! Boltzmann constant (erg K^-1) + real(dp), parameter :: planck_h = 6.62607015d-27 ! Planck constant (erg s) + real(dp), parameter :: hbar = planck_h/(2*pi) + real(dp), parameter :: cgas = boltzm*avo ! ideal gas constant (erg K^-1) + real(dp), parameter :: ev2erg = 1.602176634d-12 ! electron volt (erg) + real(dp), parameter :: mev_to_ergs = 1d6*ev2erg + real(dp), parameter :: mev_amu = mev_to_ergs/amu + real(dp), parameter :: mev2gr = 1d6*ev2erg/(clight*clight) ! MeV to grams + real(dp), parameter :: Qconv = mev_to_ergs*avo + real(dp), parameter :: kev = kerg/ev2erg ! converts temp to ev (ev K^-1) + real(dp), parameter :: boltz_sigma = (pi*pi*boltzm*boltzm*boltzm*boltzm)/(60*hbar*hbar*hbar*clight*clight) ! Stefan-Boltzmann constant (erg cm^-2 K^-4 s^-1) + real(dp), parameter :: crad = boltz_sigma*4/clight ! radiation density constant, AKA "a" (erg cm^-3 K^-4); Prad = crad * T^4 / 3 + + ! IAU + real(dp), parameter :: au = 1.49597870700D13 ! (cm) - exact value defined by IAU 2009, 2012 + real(dp), parameter :: pc = (3.600D3*rad2a)*au ! (cm) parsec, by definition + real(dp), parameter :: dayyer = 365.25d0 ! days per (Julian) year + real(dp), parameter :: secday = 24*60*60 ! seconds in a day + real(dp), parameter :: secyer = secday*dayyer ! seconds per year + real(dp), parameter :: ly = clight*secyer ! light year (cm) ! inexact but very well measured physical constants - real(dp), parameter :: mn = 1.67492749804d-24 ! neutron mass (g) - real(dp), parameter :: mp = 1.67262192369d-24 ! proton mass (g) - real(dp), parameter :: me = 9.1093837015d-28 ! electron mass (g) + real(dp), parameter :: mn = 1.67492749804d-24 ! neutron mass (g) + real(dp), parameter :: mp = 1.67262192369d-24 ! proton mass (g) + real(dp), parameter :: me = 9.1093837015d-28 ! electron mass (g) - real(dp), parameter :: rbohr = 5.29177210903d-9 ! Bohr radius (cm) - real(dp), parameter :: fine = 7.2973525693d-3 ! fine-structure constant - real(dp), parameter :: hion = 13.605693122994d0 ! Rydberg constant (eV) + real(dp), parameter :: rbohr = 5.29177210903d-9 ! Bohr radius (cm) + real(dp), parameter :: fine = 7.2973525693d-3 ! fine-structure constant + real(dp), parameter :: hion = 13.605693122994d0 ! Rydberg constant (eV) - real(dp), parameter :: sige = 6.6524587321d-25 ! Thomson cross section (cm^2) + real(dp), parameter :: sige = 6.6524587321d-25 ! Thomson cross section (cm^2) - real(dp), parameter :: weinberg_theta = 0.22290d0 ! sin**2(theta_weinberg) - real(dp), parameter :: num_neu_fam = 3.0d0 ! number of neutrino flavors = 3.02 plus/minus 0.005 (1998) + real(dp), parameter :: weinberg_theta = 0.22290d0 ! sin**2(theta_weinberg) + real(dp), parameter :: num_neu_fam = 3.0d0 ! number of neutrino flavors = 3.02 plus/minus 0.005 (1998) ! the following quantities are not exact - real(dp), parameter :: standard_cgrav = 6.67430d-8 ! gravitational constant (g^-1 cm^3 s^-2) + real(dp), parameter :: standard_cgrav = 6.67430d-8 ! gravitational constant (g^-1 cm^3 s^-2) - ! IAU 2015 Resolution B3 - ! standard gravitational parameters = G*M, units cm^3 s^-2 - real(dp), parameter :: mu_sun = 1.3271244d26 - real(dp), parameter :: mu_earth = 3.986004d20 - real(dp), parameter :: mu_jupiter = 1.2668653d23 + ! IAU 2015 Resolution B3 + ! standard gravitational parameters = G*M, units cm^3 s^-2 + real(dp), parameter :: mu_sun = 1.3271244d26 + real(dp), parameter :: mu_earth = 3.986004d20 + real(dp), parameter :: mu_jupiter = 1.2668653d23 ! astronomical constants - real(dp), parameter :: agesun = 4.57d9 ! solar age (years) from Bahcall et al, ApJ 618 (2005) 1049-1056. - real(dp), parameter :: Msun = mu_sun / standard_cgrav ! solar mass (g); gravitational mass, not baryonic - real(dp), parameter :: Rsun = 6.957d10 ! solar radius (cm), IAU 2015 Resolution B3 - real(dp), parameter :: Lsun = 3.828d33 ! solar luminosity (erg s^-1), IAU 2015 Resolution B3 - real(dp), parameter :: Teffsun = 5772.0d0! solar effective temperature (K), IAU 2015 Resolution B3 - real(dp), parameter :: loggsun = 4.4380676273031332_dp ! log10(mu_sun/(Rsun*Rsun)), can't call log10 because we don't have math_lib at this point - real(dp), parameter :: mbolsun = 4.74d0 ! Bolometric magnitude of the Sun, IAU 2015 Resolution B2 - - real(dp), parameter :: m_earth = mu_earth/standard_cgrav! earth mass (g) - real(dp), parameter :: r_earth = 6.3781d8 ! earth equatorial radius (cm) - real(dp), parameter :: r_earth_polar = 6.3568d8 ! earth polar radius (cm) - - real(dp), parameter :: m_jupiter = mu_jupiter/standard_cgrav ! jupiter mass (g) - real(dp), parameter :: r_jupiter = 7.1492d9 ! jupiter equatorial radius (cm) - real(dp), parameter :: r_jupiter_polar = 6.6854d9 ! jupiter polar radius (cm) - real(dp), parameter :: semimajor_axis_jupiter = 7.7857d13 ! jupiter semimajor axis (cm) - - - ! many routines allow either a value, a log value, or both as args - ! omitted args are indicated by passing 'arg_not_provided' - - real(dp), parameter :: arg_not_provided = -9d99 - real(dp), parameter :: missing_value = arg_not_provided - - character (len=strlen) :: mesa_dir - character (len=strlen) :: mesa_data_dir ! = trim(mesa_dir) // '/data' - character (len=strlen) :: mesa_caches_dir - character (len=strlen) :: mesa_temp_caches_dir !Temp storage must be local to run - - logical :: use_mesa_temp_cache ! If false then dont use mesa_temp_caches_dir - - ! mixing types - ! NOTE: some packages may depend on the order - integer, parameter :: crystallized = -1 - integer, parameter :: no_mixing = 0 - integer, parameter :: convective_mixing = 1 - integer, parameter :: overshoot_mixing = 2 - integer, parameter :: semiconvective_mixing = 3 - integer, parameter :: thermohaline_mixing = 4 - integer, parameter :: rotation_mixing = 5 - integer, parameter :: rayleigh_taylor_mixing = 6 - integer, parameter :: minimum_mixing = 7 - integer, parameter :: anonymous_mixing = 8 ! AKA "WTF_mixing" - integer, parameter :: leftover_convective_mixing = 9 ! for regions with non-zero conv_vel that are not unstable to convection - ! used for time dependent convection - integer, parameter :: phase_separation_mixing = 10 - - integer, parameter :: number_of_mixing_types = phase_separation_mixing+1 - - - contains - - subroutine do_const_init(mesa_dir_init, ierr) - character (len=*), intent(in) :: mesa_dir_init - integer, intent(out) :: ierr - - integer :: i, iounit - character (len=40) :: version_number - character (len=strlen) :: filename, temp_caches_disable - - ierr = 0 - - call get_environment_variable("MESA_CACHES_DIR", mesa_caches_dir) - !write(*,*) 'MESA_CACHES_DIR "' // trim(mesa_caches_dir) // '"' - - mesa_dir = mesa_dir_init - if (len_trim(mesa_dir) == 0) then - call get_environment_variable("MESA_DIR", mesa_dir) - end if - - if (len_trim(mesa_dir) > 0) then - mesa_data_dir = trim(mesa_dir) // '/data' - else - write(*,*) 'ERROR: you must provide the path to your mesa directory,' - write(*,*) 'either in your inlist or by setting the MESA_DIR environment variable.' - ierr = -1 - return - end if - - !write(*,*) 'mesa_data_dir ' // trim(mesa_data_dir) - - call get_environment_variable("MESA_TEMP_CACHES_DIR", mesa_temp_caches_dir) - - if (len_trim(mesa_temp_caches_dir) == 0) then - mesa_temp_caches_dir = './.mesa_temp_cache' - end if - - !Opt out for temp caches - use_mesa_temp_cache=.true. - call get_environment_variable("MESA_TEMP_CACHES_DISABLE", temp_caches_disable) - - if (len_trim(temp_caches_disable) > 0) then - use_mesa_temp_cache = .false. - end if - - end subroutine do_const_init - - - end module const_def + real(dp), parameter :: agesun = 4.57d9 ! solar age (years) from Bahcall et al, ApJ 618 (2005) 1049-1056. + real(dp), parameter :: Msun = mu_sun/standard_cgrav ! solar mass (g); gravitational mass, not baryonic + real(dp), parameter :: Rsun = 6.957d10 ! solar radius (cm), IAU 2015 Resolution B3 + real(dp), parameter :: Lsun = 3.828d33 ! solar luminosity (erg s^-1), IAU 2015 Resolution B3 + real(dp), parameter :: Teffsun = 5772.0d0! solar effective temperature (K), IAU 2015 Resolution B3 + real(dp), parameter :: loggsun = 4.4380676273031332_dp ! log10(mu_sun/(Rsun*Rsun)), can't call log10 because we don't have math_lib at this point + real(dp), parameter :: mbolsun = 4.74d0 ! Bolometric magnitude of the Sun, IAU 2015 Resolution B2 + + real(dp), parameter :: m_earth = mu_earth/standard_cgrav! earth mass (g) + real(dp), parameter :: r_earth = 6.3781d8 ! earth equatorial radius (cm) + real(dp), parameter :: r_earth_polar = 6.3568d8 ! earth polar radius (cm) + + real(dp), parameter :: m_jupiter = mu_jupiter/standard_cgrav ! jupiter mass (g) + real(dp), parameter :: r_jupiter = 7.1492d9 ! jupiter equatorial radius (cm) + real(dp), parameter :: r_jupiter_polar = 6.6854d9 ! jupiter polar radius (cm) + real(dp), parameter :: semimajor_axis_jupiter = 7.7857d13 ! jupiter semimajor axis (cm) + + ! many routines allow either a value, a log value, or both as args + ! omitted args are indicated by passing 'arg_not_provided' + + real(dp), parameter :: arg_not_provided = -9d99 + real(dp), parameter :: missing_value = arg_not_provided + + character(len=strlen) :: mesa_dir + character(len=strlen) :: mesa_data_dir ! = trim(mesa_dir) // '/data' + character(len=strlen) :: mesa_caches_dir + character(len=strlen) :: mesa_temp_caches_dir !Temp storage must be local to run + + logical :: use_mesa_temp_cache ! If false then dont use mesa_temp_caches_dir + + ! mixing types + ! NOTE: some packages may depend on the order + integer, parameter :: crystallized = -1 + integer, parameter :: no_mixing = 0 + integer, parameter :: convective_mixing = 1 + integer, parameter :: overshoot_mixing = 2 + integer, parameter :: semiconvective_mixing = 3 + integer, parameter :: thermohaline_mixing = 4 + integer, parameter :: rotation_mixing = 5 + integer, parameter :: rayleigh_taylor_mixing = 6 + integer, parameter :: minimum_mixing = 7 + integer, parameter :: anonymous_mixing = 8 ! AKA "WTF_mixing" + integer, parameter :: leftover_convective_mixing = 9 ! for regions with non-zero conv_vel that are not unstable to convection + ! used for time dependent convection + integer, parameter :: phase_separation_mixing = 10 + + integer, parameter :: number_of_mixing_types = phase_separation_mixing + 1 + +contains + + subroutine do_const_init(mesa_dir_init, ierr) + character(len=*), intent(in) :: mesa_dir_init + integer, intent(out) :: ierr + + character(len=strlen) :: temp_caches_disable + + ierr = 0 + + call get_environment_variable("MESA_CACHES_DIR", mesa_caches_dir) + !write(*,*) 'MESA_CACHES_DIR "' // trim(mesa_caches_dir) // '"' + + mesa_dir = mesa_dir_init + if (len_trim(mesa_dir) == 0) then + call get_environment_variable("MESA_DIR", mesa_dir) + end if + + if (len_trim(mesa_dir) > 0) then + mesa_data_dir = trim(mesa_dir)//'/data' + else + write (*, *) 'ERROR: you must provide the path to your mesa directory,' + write (*, *) 'either in your inlist or by setting the MESA_DIR environment variable.' + ierr = -1 + return + end if + + !write(*,*) 'mesa_data_dir ' // trim(mesa_data_dir) + + call get_environment_variable("MESA_TEMP_CACHES_DIR", mesa_temp_caches_dir) + + if (len_trim(mesa_temp_caches_dir) == 0) then + mesa_temp_caches_dir = './.mesa_temp_cache' + end if + + !Opt out for temp caches + use_mesa_temp_cache = .true. + call get_environment_variable("MESA_TEMP_CACHES_DISABLE", temp_caches_disable) + + if (len_trim(temp_caches_disable) > 0) then + use_mesa_temp_cache = .false. + end if + + end subroutine do_const_init + +end module const_def diff --git a/const/public/const_lib.f90 b/const/public/const_lib.f90 index f401ea40e..c6f23aaeb 100644 --- a/const/public/const_lib.f90 +++ b/const/public/const_lib.f90 @@ -24,23 +24,20 @@ ! ! *********************************************************************** - module const_lib - - use const_def - - implicit none +module const_lib + use const_def - contains - - - subroutine const_init(mesa_dir_init,ierr) - character (len=*), intent(in) :: mesa_dir_init - integer, intent(out) :: ierr - ierr = 0 - call do_const_init(mesa_dir_init,ierr) - end subroutine const_init + implicit none +contains - end module const_lib + subroutine const_init(mesa_dir_init, ierr) + character(len=*), intent(in) :: mesa_dir_init + integer, intent(out) :: ierr + ierr = 0 + call do_const_init(mesa_dir_init, ierr) + end subroutine const_init + +end module const_lib diff --git a/const/test/make/makefile_base b/const/test/make/makefile_base index ebdb4cafe..907ef665a 100644 --- a/const/test/make/makefile_base +++ b/const/test/make/makefile_base @@ -12,7 +12,7 @@ include $(MESA_DIR)/utils/makefile_header # # SOURCES -SRCS = test_const.f +SRCS = test_const.f90 ################################################################# # @@ -28,7 +28,7 @@ LOAD_LOCAL = -L$(LOCAL_LIB_DIR) -lconst TEST = $(TEST_DIR)/tester -OBJS = $(patsubst %.f,%.o,$(patsubst %.f90,%.o,$(SRCS))) +OBJS = $(patsubst %.f90,%.o,$(SRCS)) $(TEST) : $(OBJS) $(DEPS_LOCAL) ifneq ($(QUIET),) @@ -47,12 +47,14 @@ nodeps : $(.DEFAULT_GOAL) # # COMPILATION RULES -%.o: %.f +COMPILE = $(FCbasic) $(FCopenmp) $(FCopt) $(FCfree) + +%.o: %.f90 ifneq ($(QUIET),) @echo TEST_COMPILE $< - @$(TEST_COMPILE) $(FCfixed) $< + @$(TEST_COMPILE) $(COMPILE) $< else - $(TEST_COMPILE) $(FCfixed) $< + $(TEST_COMPILE) $(COMPILE) $< endif ################################################################# @@ -61,7 +63,7 @@ endif SRC_PATH = $(TEST_SRC_DIR) -vpath %.f $(TEST_SRC_DIR) +vpath %.f90 $(TEST_SRC_DIR) vpath %.mod $(LOCAL_LIB_DIR):$(MESA_DIR)/include diff --git a/const/test/src/test_const.f b/const/test/src/test_const.f deleted file mode 100644 index 1d52f83e4..000000000 --- a/const/test/src/test_const.f +++ /dev/null @@ -1,59 +0,0 @@ - program test_const - use const_def - use const_lib - implicit none - - integer :: ierr - character(len=256) :: my_mesa_dir - - my_mesa_dir = '../..' - call const_init(my_mesa_dir,ierr) - if (ierr /= 0) then - write(*,*) 'const_init failed' - error stop 1 - end if - - call do_test_const - - contains - - - subroutine do_test_const - real(dp) :: val - integer :: ierr - - 1 format(a40,3x,1pe24.16) - - write(*,1) 'pi', pi - write(*,1) 'ln10', ln10 - write(*,1) 'boltz_sigma', boltz_sigma - write(*,1) 'boltz_sigma*4', boltz_sigma*4 - write(*,1) 'boltz_sigma*4/clight', boltz_sigma*4/clight - write(*,1) 'boltz_sigma/clight', boltz_sigma/clight - write(*,1) 'crad', crad - - write(*,1) 'secyer', secyer - write(*,1) 'Msun', Msun - write(*,1) 'Rsun', Rsun - write(*,1) 'Lsun', Lsun - write(*,1) 'ly', ly - write(*,1) 'm_earth', m_earth - write(*,1) 'au', au - write(*,1) 'amu', amu - write(*,1) 'mn', mn - write(*,1) 'mp', mp - write(*,1) 'me', me - write(*,1) 'planck_h', planck_h - write(*,1) 'qe', qe - write(*,1) 'avo', avo - write(*,1) 'clight', clight - write(*,1) 'kerg', kerg - - end subroutine do_test_const - - - end program - - - - diff --git a/const/test/src/test_const.f90 b/const/test/src/test_const.f90 new file mode 100644 index 000000000..00388ef44 --- /dev/null +++ b/const/test/src/test_const.f90 @@ -0,0 +1,52 @@ +program test_const + use const_def + use const_lib + implicit none + + integer :: ierr + character(len=256) :: my_mesa_dir + + my_mesa_dir = '../..' + call const_init(my_mesa_dir, ierr) + if (ierr /= 0) then + write (*, *) 'const_init failed' + error stop 1 + end if + + call do_test_const + +contains + + subroutine do_test_const + + character(*), parameter :: fmt1 = "(a40, 3x, 1pe24.16)" + + write (*, fmt=fmt1) 'pi', pi + write (*, fmt=fmt1) 'ln10', ln10 + write (*, fmt=fmt1) 'boltz_sigma', boltz_sigma + write (*, fmt=fmt1) 'boltz_sigma*4', boltz_sigma*4 + write (*, fmt=fmt1) 'boltz_sigma*4/clight', boltz_sigma*4/clight + write (*, fmt=fmt1) 'boltz_sigma/clight', boltz_sigma/clight + write (*, fmt=fmt1) 'crad', crad + + write (*, fmt=fmt1) 'secyer', secyer + write (*, fmt=fmt1) 'Msun', Msun + write (*, fmt=fmt1) 'Rsun', Rsun + write (*, fmt=fmt1) 'Lsun', Lsun + write (*, fmt=fmt1) 'ly', ly + write (*, fmt=fmt1) 'm_earth', m_earth + write (*, fmt=fmt1) 'au', au + write (*, fmt=fmt1) 'amu', amu + write (*, fmt=fmt1) 'mn', mn + write (*, fmt=fmt1) 'mp', mp + write (*, fmt=fmt1) 'me', me + write (*, fmt=fmt1) 'planck_h', planck_h + write (*, fmt=fmt1) 'qe', qe + write (*, fmt=fmt1) 'avo', avo + write (*, fmt=fmt1) 'clight', clight + write (*, fmt=fmt1) 'kerg', kerg + + end subroutine do_test_const + +end program + diff --git a/data/net_data/nets/README.rst b/data/net_data/nets/README.rst index 9041423c1..03e771c0b 100644 --- a/data/net_data/nets/README.rst +++ b/data/net_data/nets/README.rst @@ -347,7 +347,7 @@ in ``$MESA_DIR/data/rates_data/cache``. Whenever a nuclear reaction whose rate has not yet been cached is used for the first time, the terminal output will show a line similar to the following: -:: +.. code-block:: console write $MESA_DIR/data/rates_data/cache/r34_pp2_1.bin @@ -362,7 +362,7 @@ argument. You can pipe the output of this executable to a file to obtain a file that you can easily plot. Example: -:: +.. code-block:: console cd $MESA_DIR/rates/test/ ./show_rates $MESA_DIR/data/rates_data/cache/r34_pp2_1.bin > rate_r34_pp2_1.txt diff --git a/data/star_data/zams_models/CenterXfrac.png b/data/star_data/zams_models/CenterXfrac.png index 5247b83f6..d6edf33ca 100644 Binary files a/data/star_data/zams_models/CenterXfrac.png and b/data/star_data/zams_models/CenterXfrac.png differ diff --git a/data/star_data/zams_models/HR.png b/data/star_data/zams_models/HR.png index 62accbea0..b9beabbfd 100644 Binary files a/data/star_data/zams_models/HR.png and b/data/star_data/zams_models/HR.png differ diff --git a/data/star_data/zams_models/zams_z2m2_y28.data b/data/star_data/zams_models/zams_z2m2_y28.data index d52a6dd82..477b2e382 100644 --- a/data/star_data/zams_models/zams_z2m2_y28.data +++ b/data/star_data/zams_models/zams_z2m2_y28.data @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a151fa60c390da3af24aae416a2d80afbc811b4abb3e9015510c91049e5631e -size 31823499 +oid sha256:84651346e4313c7160c7b6f2b8d15629da71fc50a9ffa7eb019dcd24413fddbb +size 31825816 diff --git a/docs/requirements.txt b/docs/requirements.txt index f6303c444..3e9c6283c 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,6 +1,9 @@ # Defining the exact version will make sure things don't break -sphinx==5.3.0 -sphinx_rtd_theme==1.1.1 +sphinx==7.4.7 +sphinx_rtd_theme==2.0.0 readthedocs-sphinx-search==0.3.2 - +sphinx_copybutton==0.5.2 +sphinx_design==0.6.0 +sphinx-tags==0.4 +sphinxemoji==0.3.1 \ No newline at end of file diff --git a/docs/robots.txt b/docs/robots.txt new file mode 100644 index 000000000..2f2b4d8c9 --- /dev/null +++ b/docs/robots.txt @@ -0,0 +1,3 @@ +User-agent: * +Disallow: / +Allow: /en/latest \ No newline at end of file diff --git a/docs/source/about.rst b/docs/source/about.rst index d9eca689c..b9139707f 100644 --- a/docs/source/about.rst +++ b/docs/source/about.rst @@ -114,6 +114,7 @@ Developers * Eoin Farrell * `Meridith Joyce `__ * Pablo Marchant +* `Philip Mocz `__ * `Joey Mombarg `__ * `Radek Smolec `__ * Anne Thoul diff --git a/docs/source/auto_diff/more_detail.rst b/docs/source/auto_diff/more_detail.rst index 1b8ae9785..ead925508 100644 --- a/docs/source/auto_diff/more_detail.rst +++ b/docs/source/auto_diff/more_detail.rst @@ -145,7 +145,7 @@ Sometimes the operators are a little inscrutable: binary%d1val1 = -0.5_dp*y%d1val1 + 0.5_dp*x%d1val1 + 0.5_dp*(x%d1val1 - y%d1val1)*sgn(q0) end function dim_self -The reason for this is that they’re all auto-generated by python +The reason for this is that they’re all auto-generated by Python scripts, in a way that optimizes for (Fortran) runtime speed at all costs. @@ -301,7 +301,7 @@ mixed partial derivatives with all of the star solver variables. How does it work in Python? =========================== -So how does the python side generate these files? +So how does the Python side generate these files? Config Files ------------ diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst index 80688613c..2b65396f7 100644 --- a/docs/source/changelog.rst +++ b/docs/source/changelog.rst @@ -2,26 +2,190 @@ Changelog ********* +.. warning:: As of r24.08.1, building MESA now requires Python (3.5 or newer) be installed. + +.. note:: This section describes changes present in the development version of MESA (``main`` branch) relative to the most recent release. + + + + Changes in main =============== -.. note:: This describes changes present in the development version of MESA (``main`` branch) relative to the most recent release. +.. _New Features main: -.. _Backwards-incompatible changes main: +New Features +------------ -Backwards-incompatible changes ------------------------------- +``mesa_reader`` can now be installed with ``pip``. +.. _Bug Fixes main: -.. _New Features main: +Bug Fixes +--------- + +fixed small bug in star/private/create_initial_model.f90 that will have a small effect on creating inital models + + +.. note:: Before releasing a new version of MESA, move `Changes in main` to a new section below with the version number as the title, and add a new `Changes in main` section at the top of the file (see ```changelog_template.rst```). + +Changes in r24.08.1 +=================== + +.. _New Features r24.08.1: New Features ------------ ``max_allowed_nz`` is now ignored if the value is less than or equal to zero. +**Update to starspots** + +Star spot parameters ``fspot``, and ``xspot`` have been added as general controls +and are now accessible outside of ``test_suite/starspots/``. Star spots are off by default. + +**Replacement of HDF5io by ForUM** + +The HDF5io module (in the :file:`hdf5io` subdirectory) has been +replaced by the ForUM module (in the :file:`forum` +subdirectory). HDF5io provided a high-level wrapper around the `HDF5 +input/output library `__; it +was based on source files copied from an alpha version of +ForUM. :git:`ForUM ` (short for Fortran Utility +Modules) is a small library providing input/output, operating system, +memory management and utility routines for Fortran. + +Now that ForUM has officially been released, and also that recent GYRE +releases also require ForUM, it made sense to include the official +distribution of ForUM within MESA. One important consequence of this +decision is that ForUM uses :git:`fypp ` for +pre-processing and templating, and fypp in turn requires a Python +interpreter. As a consequence, building MESA now requires Python (3.5 +or newer) be installed. + +**Update to GYRE 7.2.1** + +The GYRE distribution bundled with MESA has been updated to release +7.2.1. Full details about this release can be found on the `GYRE +documentation page `__. From +the perspective of MESA users, the significant change arising from +this update is that the MESA-to-GYRE interface is now provided via the +library file :file:`libgyre_mesa.a` and the module file +:file:`gyre_mesa_m.mod` (previously, these were :file:`libgyre.a` and +:file:`gyre_lib.mod`, respectively). A new variable, `LOAD_GYRE`, has +been added to :file:`utils/makefile_header` to simplify linking +against :file:`libgyre_mea.a`. These changes will likely only affect +those users that make calls to GYRE from inside +:file:`run_star_extras.f90`. + +Kap +~~~ + +**High Temperature Opacity Tables** -.. _Bug Fixes main: +Type 1 Rosseland-mean opacity tables from The Los Alamos +OPLIB database (`Colgan et al. 2016 `_) are now available (`Farag et al. 2024 `_). +These tables cover the region :math:`0.0 \leq X \leq 1-Z` and +:math:`0.0\leq Z \leq 0.2`. Each set of OPLIB +opacity tables contains 1194 individual tables, a +dramatic increase in table density (in the X--Z plane) over the standard +126 individual tables provided in previous opacity releases. These tables +are available for four solar-scaled abundance mixtures constructed from photospheric estimates of the solar heavy element abundance: +(`GS98, Grevesse & Sauval 1998 `_), +(`AGSS09(a09p), Asplund et al. 2009 `_), +(`AAG21, Asplund et al. 2021 `_), +and (`MB22, Magg et al. 2022 `_). Users can +adopt this new set of tables by selecting one of the following +options for ``kap_file_prefix``: + ++ ``'oplib_gs98'`` ++ ``'oplib_agss09'`` ++ ``'oplib_aag21'`` ++ ``'oplib_mb22'`` + +See :ref:`kap/overview:Overview of kap module` and +:ref:`kap/defaults:kap_file_prefix` for more details on the +implementation of these tables. For further details on these new OPLIB opacity tables, a direct comparison with +the Type 1 OPAL/OP tables as well as their effect on solar models can be found in +in `Farag et al. 2024 `_. + + +**Low Temperature Opacity Tables** + +Low temperature Rosseland-mean opacity tables for both (`AAG21, Asplund et al. 2021 `_), +and (`MB22, Magg et al. 2022 `_) +solar-scaled abundance mixtures have been privately communicated by Jason Ferguson. These opacity tables were +computed following the approach of `Ferguson et al. (2005) `_. Users can +adopt this new set of tables by selecting one of the following +options for :ref:`kap/defaults:kap_lowT_prefix`: + ++ ``'lowT_fa05_mb22'`` ++ ``'lowT_fa05_aag21'`` + +**Opacity interpolation** + +We have updated the opacity interpolation scheme to provide much higher quality derivatives when doing cubic interpolation in composition. + +MESA interpolates across opacity tables in the :math:`X–Z` plane through the use of two consecutive 1D splines. +MESA offers users the ability to choose linear or cubic interpolation for these splines, +while leaving the default as linear interpolation:: + + cubic_interpolation_in_X = .false. + cubic_interpolation_in_Z = .false. + +This choice of default was primarily due to the fact that +the previous cubic composition interpolation scheme in MESA suffered from poor quality interpolated opacity derivatives with respect to +density and temperature, which often disagreed with the numerical derivatives produced via nearest neighbor +Richardson extrapolation. The figure below shows this comparison on a logarithmic scale, where in general red indicates poor quality +derivatives and blue indicates high quality derivatives. + +.. figure:: changelog_plots/cubic_dfridr_dkapdT.png + :alt: old cubic relative kap derivative error + + This figure shows the logarithmic relative error in the derivative :math:`\partial \kappa / \partial T` (:math:`X` = 0.625, :math:`Z` = 0.015), + for an OPAL opacity table grid using Grevesse & Sauval (1998) abundances, generated from MESA’s kap module, using the previous cubic interpolation scheme. + The OPLIB log(:math:`R`) = −8, 1.5 table boundaries are marked with a solid black line and the OPAL/OP log(:math:`R`) = 1.0 boundary is shown with a dashed line. + The approximate location of the Z-dependent transition to an electron conduction dominated opacity is marked with dot-dash blue curve. + Regions for Atomic, molecular, and compton scattering opacity are labeled and presented with their associated blending regions. + + +While the opacity derivatives do not directly appear in the canonical equations of stellar structure, they do appear in the Jacobian matrix for MESA's implicit solver. +Numerically unstable opacity derivatives can halt the progress of the solver and ultimately crash a calculation. + +To improve the numerical stability of MESA's cubic opacity interpolation routines, we have implemented +automatic differentiation into the opacity interpolating functions. Now, when using cubic interpolation, the opacity derivatives for an arbitrary mixture +in the :math:`X–Z` plane are computed by taking the derivative of the interpolating function as opposed to the interpolant of the derivatives. This improvement +has led to a significant reduction in the relative derivative error and an increase in the numerical accuracy of opacity derivatives computed with cubic interpolation. + +.. figure:: changelog_plots/cubic_dfridr_dkapdT_ad.png + :alt: new cubic relative kap derivative error + + Same as previous figure, but for new cubic interpolation scheme taking advantage of automatic differentiation. + + +This new implementation of cubic interpolation in composition for opacity tables comes close to achieving the derivative quality of the linear interpolation +option (shown below), while also providing more accurate opacity physics between opacity table grid points. + +.. figure:: changelog_plots/linear_dfridr_dkapdT.png + :alt: linear relative kap derivative error + + Same as previous figure, but for linear interpolation instead of cubic. + + +For this MESA release, linear interpolation remains the default method for interpolating in composition between opacity tables +while we continue to investigate the residual areas where cubic interpolation appears to occasionally produce lower quality derivatives. +However, adopting cubic interpolation has been shown to consistently increase the overall +opacity of a model, and can directly effect the structure of solar models, see Appendix B & C in `Farag et al. 2024 `_. +We anticipate making cubic interpolation the default in a future MESA release version. +We encourage users to experiment with these different opacity interpolation routines and be mindful of the effect they can have on their stellar models. + + +Chem +~~~~ +New initial metal mass fractions ``initial_zfracs`` taken from photospheric estimates of the solar heavy element abundances in (AAG21, Asplund et al. 2021) and (MB22, Magg et al. 2022) +are now available. See :ref:`reference/star_job:initial_zfracs` for more details. + +.. _Bug Fixes r24.08.1: Bug Fixes --------- @@ -31,8 +195,8 @@ Rates There has been a bug present in the rates module due to the incorrect phase space factors for reverse reaction rates involving greater than 2 reactants or -products. This bug resulted in inconsistent equillibrium compositions when the network -evolves into nuclear statistical equillibrium (NSE), at temperatures exceeding 4 GK. +products. This bug resulted in inconsistent equilibrium compositions when the network +evolves into nuclear statistical equilibrium (NSE), at temperatures exceeding 4 GK. This bug effects users who evolve models into NSE using large reaction networks. This includes evolving massive stars to core-collapse. Smaller networks such as the ``approx21`` networks are less affected. We strongly recommend that users update to the latest MESA release. @@ -45,6 +209,13 @@ See `gh-575 `_ MESA no longer produces a segmentation fault if it tries to increase the number of cells beyond ``max_allowed_nz``. +``pgbinary`` +~~~~~~~~~~~~ +A bug in the `pgbinary` axes definitions resulted in models crashing when running in single star mode and has been corrected. +Another bug inhibited the mass of the not modeled star from being displayed in the `pgbinary` panel and has also been corrected. + +See `gh-634 `_ + Changes in r24.03.1 =================== @@ -94,7 +265,7 @@ shmesa ~~~~~~ We have introduced a new set of command line utilities for interacting with MESA. -See the README in ``$MESA_DIR/scripts/shmesa``, or online `here `_. +See the README in ``$MESA_DIR/scripts/shmesa``, or online `here `__. These utilities provide functionality such as changing inlist parameters (``shmesa change``) or filling in the full ``run_star_extras.f90`` template (``shmesa extras``). @@ -245,6 +416,8 @@ this ``sed`` command (along with ``sed`` commands for the next changlog entry as to update all inlist files (``inlist*``), which you can run in any work directory where you want to update every inlist by invoking :: +.. code-block:: console + $MESA_DIR/scripts/update_inlists This script will save the previous versions of your inlists to a directory named @@ -274,6 +447,8 @@ been renamed: You can substitute the new names for the old ones using the command line tool ``sed`` with, e.g. :: +.. code-block:: console + $ sed 's/log_center_density_limit/log_center_density_upper_limit/' -i Abundance-based timestep controls are now arrays @@ -2287,7 +2462,7 @@ terms that contributed to that component. The format of the OP_MONO opacity table cache has changed. If you have used these files in a previous version of MESA then you should do: -:: +.. code-block:: console rm $MESA_OP_MONO_DATA_CACHE_FILENAME @@ -2415,7 +2590,7 @@ ionization routine. This was due to a typo in the original paper that presented the ionization scheme. Restored the missing factor of rho^1/3 thanks to a later presentation of this same scheme (Dupuis et al. 1992) and a note `here -`_. +`__. Added a user control (``D_mix_ignore_diffusion``) for when to ignore element diffusion in surface or core mixing regions. Previously, @@ -2429,7 +2604,7 @@ turn it off, but weaker mixing won't. Gravity Darkening (Aaron) ------------------------- -Added options to include gravity darkening, in the form of projected (surface-averaged) luminosities and effective temperatures of the star viewed along the equator and pole, to the history file. Assumes the star is an oblate spheroid; see `here `_ for more info. +Added options to include gravity darkening, in the form of projected (surface-averaged) luminosities and effective temperatures of the star viewed along the equator and pole, to the history file. Assumes the star is an oblate spheroid; see `here `__ for more info. :: diff --git a/docs/source/changelog_plots/cubic_dfridr_dkapdT.png b/docs/source/changelog_plots/cubic_dfridr_dkapdT.png new file mode 100644 index 000000000..3af4d9d3e Binary files /dev/null and b/docs/source/changelog_plots/cubic_dfridr_dkapdT.png differ diff --git a/docs/source/changelog_plots/cubic_dfridr_dkapdT_ad.png b/docs/source/changelog_plots/cubic_dfridr_dkapdT_ad.png new file mode 100644 index 000000000..40fb76c77 Binary files /dev/null and b/docs/source/changelog_plots/cubic_dfridr_dkapdT_ad.png differ diff --git a/docs/source/changelog_plots/linear_dfridr_dkapdT.png b/docs/source/changelog_plots/linear_dfridr_dkapdT.png new file mode 100644 index 000000000..d8d576686 Binary files /dev/null and b/docs/source/changelog_plots/linear_dfridr_dkapdT.png differ diff --git a/docs/source/changelog_template.rst b/docs/source/changelog_template.rst index e31b3e2c9..25e41c5c1 100644 --- a/docs/source/changelog_template.rst +++ b/docs/source/changelog_template.rst @@ -1,7 +1,8 @@ +.. note:: This section describes changes present in the development version of MESA (``main`` branch) relative to the most recent release. + Changes in main =============== -.. note:: This describes changes present in the development version of MESA (``main`` branch) relative to the most recent release. .. _Backwards-incompatible changes main: @@ -21,3 +22,4 @@ Bug Fixes --------- +.. note:: Before releasing a new version of MESA, move `Changes in main` to a new section below with the version number as the title, and add a new `Changes in main` section at the top of the file (see ```changelog_template.rst```). diff --git a/docs/source/conf.py b/docs/source/conf.py index 57f4eeb2e..3efc340aa 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -20,8 +20,9 @@ project = 'MESA' copyright = '2024, The MESA Team' author = 'The MESA Team' -release = 'main' +language = 'en' version = 'main' +release = version # -- General configuration --------------------------------------------------- @@ -31,7 +32,12 @@ # ones. extensions = [ 'sphinx.ext.autosectionlabel', + 'sphinx.ext.extlinks', 'defaults2rst', + 'sphinx_copybutton', + 'sphinx_design', + 'sphinx_tags', + 'sphinxemoji.sphinxemoji', ] # Add any paths that contain templates here, relative to this directory. @@ -49,6 +55,7 @@ # a list of builtin themes. # html_theme = 'sphinx_rtd_theme' +#html_theme = 'sphinx_book_theme' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, @@ -72,18 +79,55 @@ 'logo_only': True } +# sphinx_book_theme options +#html_theme_options = { +# 'collapse_navigation': True, +# 'navigation_depth': 4, +# 'repository_url': "https://github.com/MESAHub/mesa", +# 'use_repository_button': True, +# 'icon_links': [ +# { +# "name": "GitHub", +# "url": "https://github.com/MESAHub/mesa", +# "icon": "fa-brands fa-github", +# }, +# ], +#} + +# sphinx_tags options +tags_create_tags = True +tags_overview_title = "Test Problem tags" +tags_page_title = "Tags" +tags_page_header = "Test problems with this tag" +tags_create_badges = True +tags_badge_colors = { + "star": "primary", + "binary": "primary", + "high-mass": "secondary", + "low-mass": "secondary", +} + # Set master doc master_doc = 'index' # Set logo html_logo = 'mesa-logo-200.png' +html_favicon = 'mesa-favicon.png' + +# Set canonical URL from the Read the Docs Domain +html_baseurl = os.environ.get("READTHEDOCS_CANONICAL_URL", "") + +html_context = {} + +# Tell Jinja2 templates the build is running on Read the Docs +html_context["READTHEDOCS"] = os.environ.get("READTHEDOCS", "") == "True" + # Override theme stylesheet html_css_files = [ 'theme_overrides.css', # overrides for wide tables in RTD theme ] - # standard substitutions rst_prolog = r""" .. |MESA I| replace:: `MESA I `__ @@ -91,6 +135,7 @@ .. |MESA III| replace:: `MESA III `__ .. |MESA IV| replace:: `MESA IV `__ .. |MESA V| replace:: `MESA V `__ +.. |MESA VI| replace:: `MESA V `__ .. |Msun| replace:: :math:`{\rm M}_\odot` .. |Lsun| replace:: :math:`{\rm L}_\odot` .. |Rsun| replace:: :math:`{\rm R}_\odot` @@ -103,3 +148,9 @@ # set default highlighting language highlight_language = 'fortran' + +# sphinx.extlinks configuration +extlinks = { + 'wiki': ('https://en.wikipedia.org/wiki/%s', None), + 'git': ('https://github.com/%s', None) +} diff --git a/docs/source/developing/release.rst b/docs/source/developing/release.rst index 60d63c880..0ec6c9121 100644 --- a/docs/source/developing/release.rst +++ b/docs/source/developing/release.rst @@ -40,7 +40,7 @@ Documentation Testing ------- -- TestHub should report all tests pass for both Linux and macOS on multiple machines and with different OS versions +- TestHub should report all tests pass for both Linux and macOS on multiple machines and with different OS versions. - The previous SDK version should be tested. .. note:: @@ -81,7 +81,7 @@ Making a release ---------------- Run the release script in ``MESA_DIR``. This requires ``$MESA_DIR`` to be set and takes one argument the release version (you should add the ``r`` prefix as well). -For version ``r12345`` this script will make a branch ``release/r12345`` and then it: +For version ``rXX.YY.Z`` this script will make a branch ``release/rXX.YY.Z`` and then it: - Updates :file:`data/version_number` @@ -91,14 +91,18 @@ For version ``r12345`` this script will make a branch ``release/r12345`` and the - Updates :file:`docs/source/conf.py` - Updates :file:`Doxyfile` -To the new version ``r12345``. +To the new version ``rXX.YY.Z``. This script will also make zip archive, which can be used for local testing to make sure the release builds. .. note:: This zip folder is not what we release. The actual zip folder is generated by Github, so that should be tested as well once it has been made. -The release script does not push any changes to Github. That must be done manually with a ``git push``. +.. note:: + Once the script has generated the new release branch, update the changelog headings from "Changes in main" to "Changes in rXX.YY.Z" etc, + and delete the note near the top of the changelog about changes in ``main`` relative to the most recent release. + +The release script does not push any changes to Github. Once you are ready to push the release branch, this must be done manually with a ``git push``. (This is a separate step from pushing the tag in the next step.) Release steps @@ -106,16 +110,19 @@ Release steps To make an actual release (once testing is complete), first push the git tag made by the release script: -- ``git push origin r12345`` +- ``git push origin XX.YY.Z`` This is the key bit, as the Github release will be anchored to this tag. +.. note:: + The tag follows PEP440 standards -- there is no ``r`` or ``-`` (hyphen) in the tag (unlike the branch name) -- so readthedocs can automatically determine the stable version and add version warning banners. + Go to https://github.com/MESAHub/mesa/releases and craft a new release following the guidelines `here `_. .. note:: If this is a RC release, then make sure to click ``This is a pre-release``. -Add an appropriate title and description. The title should be kept simple, like ``Release: r12345``. +Add an appropriate title and description. The title should be kept simple, like ``Release: rXX.YY.Z``. Once created, this zip folder should be downloaded and checked that it installs and runs a test case. @@ -125,7 +132,7 @@ Zenodo Once the zip folder has been created, it should be uploaded to Zenodo prior to sending a release announcement. This helps avoid swamping our GitHub bandwidth with user downloads. -- For a pre-release, do not upload to the main MESA zenodo repository. +- For a pre-release, do not upload to the main MESA Zenodo repository. Instead upload to its own Zenodo entry. This can be done on a personal account. - Official releases need to be uploaded to `this MESA Zenodo page `_. @@ -148,11 +155,15 @@ Acknowledging support Getting all authors who committed code (this includes merged pull requests) :: +.. code-block:: console + git log --format='%aN' r21.12.1..HEAD | sort -u Listing all commits that acknowledge help from someone :: +.. code-block:: console + git log --all --grep="-by" r21.12.1..HEAD @@ -166,12 +177,13 @@ needs fixes to simply push a new release, and flag the current release as not wo New readthedocs version ----------------------- -First gain access to the readthedocs account (that is currently accessible by Rich, Evan, Joey, and Earl). Then: +First gain access to the readthedocs account (that is currently accessible by Rich, Evan, Joey, Earl, Meridith, and Philip). Then: - Go to the ``Versions`` page -- Find the release branch (not the tag) and ``Activate`` it -- We want the branch, not the tag, so that we can update the docs post release. +- Find the release tag (not the branch) and ``Activate`` it +- We want the tag (following PEP440 standards), so readthedocs can automatically deduce the stable version and create a version banner warning. - Wait for it to build, and check that it works - Go to the ``Admin`` page and then the ``Advanced settings`` tab - Switch the default version to the release - Click ``save`` at the bottom of the page +- To update docs post release, we will need to use git to change the tag to point to the new commit (SHA). diff --git a/docs/source/faq.rst b/docs/source/faq.rst index afb5422fc..b6e976702 100644 --- a/docs/source/faq.rst +++ b/docs/source/faq.rst @@ -524,7 +524,7 @@ previous version of OS X. open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg - Install the latest version of the `MESA - SDK `__ + SDK `__ appropriate for your version of OS X. Why do I get the error "stdlib.h: No such file or directory"? @@ -532,7 +532,7 @@ Why do I get the error "stdlib.h: No such file or directory"? If yore using macOS 10.14 (Mojave), then this error indicates that you did not install the system headers (see previous FAQ or `the SDK -website `__). +website `__). Why do I get the error "C compiler cannot create executables"? -------------------------------------------------------------- @@ -641,7 +641,7 @@ the MESA SDK. There are a few possible solutions: (1) Use the contemporary version of the SDK. There is a `list of old MESA - SDKs `__ + SDKs `__ that indicates which version of MESA was current when each was released. @@ -756,7 +756,7 @@ a simple script, images_to_movie.sh, which uses ffmpeg to create movies from PNG files produced by MESA. To make use of this capability, consult `Rich's -instructions `__. +instructions `__. Programming =========== diff --git a/docs/source/installation.rst b/docs/source/installation.rst index 9ea836563..0d4b72cff 100644 --- a/docs/source/installation.rst +++ b/docs/source/installation.rst @@ -22,6 +22,10 @@ The minimum system requirements for MESA are: Most laptop or desktop computers built in the last three years will satisfy these requirements. +Ensure you have Python (3.5 or newer) installed on your system +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. warning:: As of r24.08.1, building MESA now requires Python (3.5 or newer) to be installed. + Install the MESA SDK ^^^^^^^^^^^^^^^^^^^^ diff --git a/docs/source/kap/overview.rst b/docs/source/kap/overview.rst index 2b33878e9..6f045d70f 100644 --- a/docs/source/kap/overview.rst +++ b/docs/source/kap/overview.rst @@ -57,10 +57,27 @@ High temperature :math:`(T \gtrsim 10^4\,\rm K)` The OPAL tables (|OPAL|) with fixed metal distributions are called Type 1 and cover the region :math:`0.0 \leq X \leq 1-Z` and -:math:`0.0\leq Z \leq 0.1`. Type 1 tables from the Opacity Project -(OP; |OP|) are also available. The set of tables to be used are +:math:`0.0\leq Z \leq 0.1`. The Opacity Project +(OP; |OP|) are also available. Type 1 tables from The Los Alamos +OPLIB database (OPLIB; |OPLIB|) are also available, and cover the +region :math:`0.0 \leq X \leq 1-Z` and +:math:`0.0\leq Z \leq 0.2`. The set of tables to be used are selected by the option :ref:`kap/defaults:kap_file_prefix`. +A direct comparison between the Type 1 format of OPAL/OP tables and +the OPLIB tables are shown in the figure below +taken from Figure 1 in `Farag et al. 2024 `_. Further comparisons +between OP/OPAL/OPLIB can be found in `Farag et al. 2024 `_. + + +.. figure:: type1_format.png + :alt: kap blends in solar-like compositions + + Location of each Type-1 opacity table in the :math:`X–Z` plane (left panel) and the + log:math:`T`–log:math:`R` plane (right panel). Orange circles mark the location of + the 126 OPAL Type-1 tables (Rogers & Iglesias 1992). Blue circles + mark the location of the new 1194 Type-1 opacity tables (Farag et al. 2024). + Additionally, there is support for the OPAL Type 2 tables that allow for varying amounts of C and O beyond that accounted for by :math:`Z`; these are needed during helium burning and beyond. These have a range @@ -164,8 +181,9 @@ degeneracy, the additional correction formulae of |B20| are applied. .. |OPAL| replace:: Iglesias & Rogers `1993 `__, `1996 `__ +.. |OP| replace:: `Seaton 2005 `__ -.. |OP| replace:: `Seaton 2005 `__ +.. |OPLIB| replace:: `Colgan 2016 `__ .. |Cassisi| replace:: `Cassisi et al. (2007) `__ diff --git a/docs/source/kap/type1_format.png b/docs/source/kap/type1_format.png new file mode 100644 index 000000000..c88c54d8b Binary files /dev/null and b/docs/source/kap/type1_format.png differ diff --git a/docs/source/known_bugs.rst b/docs/source/known_bugs.rst index 54231a651..db5a97f59 100644 --- a/docs/source/known_bugs.rst +++ b/docs/source/known_bugs.rst @@ -19,9 +19,9 @@ ZAMS Model Central Composition When ``create_pre_main_sequence_model = .false.`` and ``load_saved_model = .false.``, we fall back to loading a ZAMS model based on interpolating from a grid of pre-computed ZAMS models found in ``data/star_data/zams_models``. The default file included in that directory is meant to start from -a composition of X = 0.70 and Z = 0.02, but one of the models in the grid (1.26 Msun) has partially +a composition of X = 0.70 and Z = 0.02, but one of the models in the grid (1.26 |Msun|) has partially proceeded through hydrogen burning already so that its central H abundance is X = 0.58. Interpolation -in this grid of models will impact the central H abundance for initial masses between 1.0 and 1.58 Msun. +in this grid of models will impact the central H abundance for initial masses between 1.0 and 1.58 |Msun|. This bug affects versions r15140 through r23.05.1, and will be fixed in the next release. For current MESA releases impacted by this bug, the following steps provide a workaround with a patched ZAMS file: @@ -147,7 +147,7 @@ If you get an error: bad filter name: -First check that the name matches in your history_coloumns.list file and your color file. Next check for non-printing characters history_coloumns.list in the filter name. This can bee checked with: +First check that the name matches in your history_columns .list file and your color file. Next check for non-printing characters history_columns.list in the filter name. This can bee checked with: .. code-block:: shell diff --git a/docs/source/mesa-favicon.png b/docs/source/mesa-favicon.png new file mode 100644 index 000000000..a9767fc8c Binary files /dev/null and b/docs/source/mesa-favicon.png differ diff --git a/docs/source/news/2016-06-19-r8845.rst b/docs/source/news/2016-06-19-r8845.rst index deb69094b..80df635e6 100644 --- a/docs/source/news/2016-06-19-r8845.rst +++ b/docs/source/news/2016-06-19-r8845.rst @@ -15,7 +15,7 @@ post `__. reasons, the option ``photostep`` was renamed to ``photo_interval``. A simple find-and-replace will bring your inlists up-to-date. If one needs to make the changes in a more automated fashion, a sample - migration script is included in the release annoucement to + migration script is included in the release announcement to mesa-users. - In the binary module, adjustments were made to the Eddington mass diff --git a/docs/source/summer_schools.rst b/docs/source/summer_schools.rst index bb69a3259..65aaacb82 100644 --- a/docs/source/summer_schools.rst +++ b/docs/source/summer_schools.rst @@ -1,14 +1,15 @@ MESA Summer Schools =================== -*** +************************************************************ MESA Summer School Programs -- this page under construction! -*** +************************************************************ History of the MESA Summer School Program ----------------------------------------- -The MESA Summer Schools have traditionally been held in Santa Barbara, California, until 2022. The 2023 MESA Summer School program, branded as MESA@Konkoly, was held in Budapest, Hungary. As of 2023, MESA Summer Schools can be run anywhere in the world. The involvement of the MESA developers is encouraged, and we are happy to help. +The MESA Summer Schools (material linked `here `_) have traditionally been held in Santa Barbara, California, until 2022. The 2023 MESA Summer School program, branded as `MESA@Konkoly `_, was held in Budapest, Hungary. This was follwed by `MESA Down Under `_, hosted in Sydney in June of 2024. +As of 2022, MESA Summer Schools can be run anywhere in the world. The involvement of the MESA developers is encouraged, and we are happy to help. How to run a MESA Summer School @@ -20,12 +21,61 @@ Preparing a good program takes about a year. Historically, the program has taken 1 year + out (September/October) -------------------------------- -- Book a venue -- Choose your organizational team +- Book a venue. The summer schools have traditionally aimed for approximatley 45 students, one TA per 3 students (15 TAs), and 6 lecturers. These numbers are not strict, but they have worked well in the past. Plan for your venue to accommodate roughly 75 people (lecturers, TAs, students, organizers). Be aware that your venue should have reliable, high-speed internet and enough outlets for every student, TA, and lecturer to plug in their laptop simultaneously. + + +- Choose your organizational team. For past programs, it has worked well to have a scientific organization committee that includes MESA developers, a local organizational committee comprising individuals at the host institute and/or in the host country who can help with local logistical matters, and a teaching committee. 9 months out (November) ----------------------- -- Contact lecturers. Try to invite people with a diverse set of research areas and consider focusing on topics that have not been covered in past programs (see previous summer school pages and agendas for this information) -- Contact TAs. +- Contact potential lecturers. Try to invite people with a diverse set of research areas and consider focusing on topics that have not been covered in past programs (see previous summer school pages and agendas for this information). Please be mindful of the fact that academics' schedules fill up quickly, and you may have to ask several candidates before your lecture roster is filled. + +- Contact potential TAs. We recommend that TAs should have attended a Summer School and performed well. TAs should span a range of MESA experience levels but in all cases have a strong baseline level of competence with the code. + +We aim for 50-50 gender representation (50% men, 50% women and gender minorities) among both lecturers and TAs. We have succeeded in having 35% or greater representation among women and gender minorities in past programs. + +9 months to 7 months out (November - January) +--------------------------------------------- +- Look for and apply to grant funding schemes. Previous supporters of the MESA Summer Schools include the International Research Network of Nuclear Astrophysics (IReNA; USA), the European ChETEC-INFRA network of research infrastructures, and individual research grants (NSF; Marie Curie scheme, ERC scheme). + +- reserve accommodation. Hotel room blocks can be booked for discounted rates. Some univerisites are willing to provide discounted bulk accommodation through their own facilities (e.g. dorms), as was the case at Santa Barbara. + +- open the application for students. A template for this is available from Meridith Joyce, Earl Bellinger, or Eoin Farrell (MESAdev). A Google form is a good way to provide the application. Be aware that summer schools have been oversubscribed by more than a factor of 2 in recent years, and be prepared to rank applications in a systematic way. We aim for 50-50 gender representation among students and have a track record of achieving 35%-45% participation from women and gender minorities, on average. + +6 months out (February) +----------------------- +- post the Summer School website. Bill Wolf (MESAev) has been the web manager for many Summer Schools + +- assign TAs to lecturers. We recommend assigning one first-time TA, one returning TA, and one very experienced TA per lecturer. This ensures that new TAs receive excellent training while the more experienced TAs can provide leadership on the development of exercises and management of the group. Please be aware that it has not been a requirement historically that the lecturers have any experience with MESA. It is the lecturers' jobs to develop the scientific program and contribute their subject expertise. It is the TAs jobs to turn the lecturers' science into accessible, MESA-based exercises. + + +5 months out (March) +-------------------- +- close applications + +- make selections among applications. An admissions rubric used for the 2022, 2023, and 2024 Summer School programs is available from Meridith Joyce (MESAdev) + +- email the supervisors of potential attendees to confirm that they have their advisor's permission and funding to attend. Be aware that some prospective students may apply without having secured funding and without their advisor's knowledge. + +- send acceptances to students, cc-ing superviors, while maintaining a ranked waitlist. If you do not hear back from an accepted student or their supervisor in, for example, 2 weeks, move on to the waitlist. There are typically several students admitted off the waitlist. + +4 months out (April) +-------------------- +- Begin regular, bi-weekly, all-hands meetings to check in with the organizational team, lecturers, and TAs. Lecturers should begin to schedule separate group meetings with their TAs to design exercises. Bi-weekly meetings serve to check in on the progress of these groups. + +- begin preparing any visa or invitation letters necessary for international students + +1 month out (July) +------------------ +- Increase the cadence of all-hands meetings to weekly. Lab exercises should be distributed for testing among TAs, leaving at least two weeks before the start of Summer School for final corrections to be implemented. Labs should be tested for coherence, timing, and accessibility of the exercises + + +2 weeks out +----------- +- final corrections to labs are underway + +- Lecturers' programs and slides should be near completion. It is helpful if all lecture materials are available before the start of the labs. All lab materials should also be available before the start of the program. + +- send students a schedule or point them to a schedule online. Remind students which version of MESA they will be using and send links to installation instructions. Remind students that having MESA installed and working on their machines must happen before they arrive. diff --git a/docs/source/test_suite.rst b/docs/source/test_suite.rst index ba40c95c0..33e0367ce 100644 --- a/docs/source/test_suite.rst +++ b/docs/source/test_suite.rst @@ -27,8 +27,8 @@ of some of the test problems in the ``docs/`` sub-directory of each test_suite case. For example, take a look at the "high mass" test case. It starts by -creating a pre-main-sequence model of 100 Msun with Z=0.02, and then it -"relaxes" Z down to 1e-5 and the mass up to 110 Msun before starting the +creating a pre-main-sequence model of 100 |Msun| with Z=0.02, and then it +"relaxes" Z down to 1e-5 and the mass up to 110 |Msun| before starting the evolution. It will take under 200 steps (and a few minutes) to reach a central X of 0.5. To try it yourself, @@ -100,24 +100,24 @@ Star tests ^^^^^^^^^^^^^^^^^^^^^ The test checks the evolution of metal-rich low-mass stars by evolving -a 1.3 Msun, metal-rich Z=0.04 model from the pre-main sequence to core hydrogen depletion. +a 1.3 |Msun|, metal-rich Z=0.04 model from the pre-main sequence to core hydrogen depletion. :ref:`1.4M_ms_op_mono` ^^^^^^^^^^^^^^^^^^^^^^ The test checks the functionality of OP mono opacities. -The test vehicle is a 1.4 Msun solar metallicity model. +The test vehicle is a 1.4 |Msun| solar metallicity model. :ref:`1.5M_with_diffusion` ^^^^^^^^^^^^^^^^^^^^^^^^^^ The test checks the functionality of element diffusion. -The test vehicle is a 1.5 Msun solar metallicity model. +The test vehicle is a 1.5 |Msun| solar metallicity model. :ref:`15M_dynamo` ^^^^^^^^^^^^^^^^^ -The test checks the functionality of element rotation in a 15 Msun solar metallicity model. +The test checks the functionality of element rotation in a 15 |Msun| solar metallicity model. :ref:`16M_conv_premix` ^^^^^^^^^^^^^^^^^^^^^^ @@ -138,12 +138,12 @@ criterion), as detailed in Section 2 of the MESA IV instrument paper :ref:`1M_pre_ms_to_wd` ^^^^^^^^^^^^^^^^^^^^^^ -This test case checks the evolution of a 1 Msun, Z=0.02 metallicity from the pre-main sequence to a white dwarf. +This test case checks the evolution of a 1 |Msun|, Z=0.02 metallicity from the pre-main sequence to a white dwarf. :ref:`1M_thermohaline` ^^^^^^^^^^^^^^^^^^^^^^ -The test checks thermohaline mixing in a rotating, 1 Msun, Z=0.02 metallicity model. +The test checks thermohaline mixing in a rotating, 1 |Msun|, Z=0.02 metallicity model. :ref:`12M_pre_ms_to_core_collapse` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -160,26 +160,26 @@ This test suite evolves a low metalicity 20 |MSun| model from the pre-ms to core ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This test case checks the evolution of a strongly rotating, -Omega/Omega_crit = 0.75, 20 Msun, Z=0.02 metallicity model from the +Omega/Omega_crit = 0.75, 20 |Msun|, Z=0.02 metallicity model from the pre-main sequence to the end of core helium burning. :ref:`5M_cepheid_blue_loop` ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -This test case checks that the evolution of a 5 Msun, metal-poor Z = 0.008, helium-enriched Y=0.256 model +This test case checks that the evolution of a 5 |Msun|, metal-poor Z = 0.008, helium-enriched Y=0.256 model executes a blue-loop in the HR diagram and crosses the classical Cepheid instability strip boundaries three times. :ref:`7M_prems_to_AGB` ^^^^^^^^^^^^^^^^^^^^^^ -This test case checks that the evolution of a 7 Msun, metal-poor Z = 0.001, model reaches the AGB. +This test case checks that the evolution of a 7 |Msun|, metal-poor Z = 0.001, model reaches the AGB. :ref:`accreted_material_j` ^^^^^^^^^^^^^^^^^^^^^^^^^^ -This test suite example checks the accretion of material and angular momentum onto a 20 Msun model. +This test suite example checks the accretion of material and angular momentum onto a 20 |Msun| model. :ref:`adjust_net` ^^^^^^^^^^^^^^^^^ @@ -205,7 +205,7 @@ convergence example for the different forms of the energy equation. :ref:`cburn_inward` ^^^^^^^^^^^^^^^^^^^ -This test suite example checks the inward propagation of a carbon burning front in a 7.5 Msun model. +This test suite example checks the inward propagation of a carbon burning front in a 7.5 |Msun| model. :ref:`ccsn_IIp` @@ -234,7 +234,7 @@ and ``other_surface_PT`` hooks. :ref:`conserve_angular_momentum` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -This test suite example checks angular momentum conservation from the zero age main-sequence to the formation of a helium core in 1.0 Msun, Z=0.02 metallicity, model. +This test suite example checks angular momentum conservation from the zero age main-sequence to the formation of a helium core in 1.0 |Msun|, Z=0.02 metallicity, model. :ref:`conv_core_cpm` @@ -253,7 +253,7 @@ This test suite example shows how to use user-defined color filter and extinctio :ref:`custom_rates` ^^^^^^^^^^^^^^^^^^^ -This test suite case checks the use of custom nuclear reaction rates in an accreting 0.3 Msun helium white dwarf model. +This test suite case checks the use of custom nuclear reaction rates in an accreting 0.3 |Msun| helium white dwarf model. :ref:`diffusion_smoothness` @@ -270,35 +270,35 @@ This test case checks the implementation of the extended convective penetration :ref:`gyre_in_mesa_bcep` ^^^^^^^^^^^^^^^^^^^^^^^^ -This test case checks the implementation of GYRE in MESA for a 12 Msun, Z=0.02 metallicity, model evolving from the zero-age main sequence to core hydrogen depletion; +This test case checks the implementation of GYRE in MESA for a 12 |Msun|, Z=0.02 metallicity, model evolving from the zero-age main sequence to core hydrogen depletion; a beta Cephei stellar model. :ref:`gyre_in_mesa_envelope` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -This test case checks the implementation of GYRE in MESA for the envelope of a 12 Msun, Z=0.02 metallicity, model. +This test case checks the implementation of GYRE in MESA for the envelope of a 12 |Msun|, Z=0.02 metallicity, model. :ref:`gyre_in_mesa_ms` ^^^^^^^^^^^^^^^^^^^^^^ -This test case checks the implementation of GYRE in MESA for a 1 Msun, Z=0.02 metallicity, model evolving from the zero-age main sequence to core hydrogen depletion. +This test case checks the implementation of GYRE in MESA for a 1 |Msun|, Z=0.02 metallicity, model evolving from the zero-age main sequence to core hydrogen depletion. :ref:`gyre_in_mesa_rsg` ^^^^^^^^^^^^^^^^^^^^^^^ -This test case checks the implementation of GYRE in MESA for a 21 Msun, Z=0.02 metallicity, model in the red supergiant regime. +This test case checks the implementation of GYRE in MESA for a 21 |Msun|, Z=0.02 metallicity, model in the red supergiant regime. :ref:`gyre_in_mesa_spb` ^^^^^^^^^^^^^^^^^^^^^^^ -This test case checks the implementation of GYRE in MESA for a 5 Msun, Z=0.02 metallicity, model evolving from the zero-age main sequence to core hydrogen depletion; +This test case checks the implementation of GYRE in MESA for a 5 |Msun|, Z=0.02 metallicity, model evolving from the zero-age main sequence to core hydrogen depletion; a slowly pulsating B-type star (SPB) stellar model. :ref:`gyre_in_mesa_wd` ^^^^^^^^^^^^^^^^^^^^^^ -This test case checks the implementation of GYRE in MESA for a cooling 0.85 Msun white dwarf model. +This test case checks the implementation of GYRE in MESA for a cooling 0.85 |Msun| white dwarf model. :ref:`hb_2M` ^^^^^^^^^^^^ @@ -309,17 +309,17 @@ on the horizontal branch (HB) through core helium burning. :ref:`high_mass` ^^^^^^^^^^^^^^^^ -This test case checks the evolution of a 300 Msun, Z = 1e-4 metallicity, model through core hydrogen depletion. +This test case checks the evolution of a 300 |Msun|, Z = 1e-5 metallicity, model through core hydrogen depletion. :ref:`high_z` ^^^^^^^^^^^^^ -This test case checks the capability of evolving high metallicity models through core helium depletion with a 7 Msun, Z=0.07 metallicity model. +This test case checks the capability of evolving high metallicity models through core helium depletion with a 7 |Msun|, Z=0.07 metallicity model. :ref:`hot_cool_wind` ^^^^^^^^^^^^^^^^^^^^ -This test case checks the cool wind, hot wind capability by evolving a 7 Msun, Z=0.02 metallicity model from the zero-age main sequence to core helium depletion. +This test case checks the cool wind, hot wind capability by evolving a 7 |Msun|, Z=0.02 metallicity model from the zero-age main sequence to core helium depletion. :ref:`hse_riemann` ^^^^^^^^^^^^^^^^^^ @@ -334,7 +334,7 @@ This test case checks the evolution of an ~1 Mjup model after the surface has be :ref:`low_z` ^^^^^^^^^^^^ -This test case checks the evolutions of a 0.8 Msun, Z=1e-4 metallicity model from the pre-main sequence to core hydrogen depletion. +This test case checks the evolutions of a 0.8 |Msun|, Z=1e-4 metallicity model from the pre-main sequence to core hydrogen depletion. :ref:`magnetic_braking` @@ -368,18 +368,18 @@ This test case checks the creation and stability of a pure iron neutron star env :ref:`make_he_wd` ^^^^^^^^^^^^^^^^^ -This test case checks the creation and evolution of a 0.15 Msun helium white dwarf. +This test case checks the creation and evolution of a 0.15 |Msun| helium white dwarf. :ref:`make_metals` ^^^^^^^^^^^^^^^^^^ -This test case demonstrates the creation and evolution of 3 Msun model whose initial metallicity is Z = 0. +This test case demonstrates the creation and evolution of 3 |Msun| model whose initial metallicity is Z = 0. :ref:`make_o_ne_wd` ^^^^^^^^^^^^^^^^^^^ -This test case produces a 1.05 Msun oxygen-neon-magnesium white dwarf using stellar engineering. +This test case produces a 1.05 |Msun| oxygen-neon-magnesium white dwarf using stellar engineering. :ref:`make_planets` ^^^^^^^^^^^^^^^^^^^ @@ -389,22 +389,22 @@ This test case shows an example of a 1 Mjup model with a 10 Mearth core that is :ref:`make_sdb` ^^^^^^^^^^^^^^^ -This test case shows an example of making a 0.4 Msun, Z=0.02 metallicity, helium model - a B-type subdwarf (sdB) star. +This test case shows an example of making a 0.4 |Msun|, Z=0.02 metallicity, helium model - a B-type subdwarf (sdB) star. :ref:`make_zams` ^^^^^^^^^^^^^^^^ -This test case shows an example of creating a 4 Msun, Z = 0.01 metallicity, pre-main sequence model and evolving it to the zero age main sequence. +This test case shows an example of creating a 4 |Msun|, Z = 0.01 metallicity, pre-main sequence model and evolving it to the zero age main sequence. :ref:`make_zams_low_mass` ^^^^^^^^^^^^^^^^^^^^^^^^^ -This test case shows an example of creating a 0.085 Msun, Z = 0.014 metallicity, pre-main sequence model and evolving it to the zero age main sequence. +This test case shows an example of creating a 0.085 |Msun|, Z = 0.014 metallicity, pre-main sequence model and evolving it to the zero age main sequence. :ref:`make_zams_ultra_high_mass` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -This test case shows an example of creating a 250 Msun, Z = 1e-4 metallicity, model close to the main sequence. +This test case shows an example of creating a 250 |Msun|, Z = 1e-4 metallicity, model close to the main sequence. :ref:`ns_h` @@ -425,14 +425,14 @@ This test case shows an example of a carbon flash within a neutron star envelope :ref:`other_physics_hooks` ^^^^^^^^^^^^^^^^^^^^^^^^^^ -This test case exercises several of the ``other_*`` physics hooks simultaneously in a 1 Msun, Z=0.02 metallicity, model. +This test case exercises several of the ``other_*`` physics hooks simultaneously in a 1 |Msun|, Z=0.02 metallicity, model. It provides an example of how to include your own physics code into a MESA run. :ref:`pisn` ^^^^^^^^^^^^^^^^^^^^^^ -This test case evolves an initialy 200 |Msun| star from ZAMS untill it undergoes a pair instability supernovae (PISN). +This test case evolves an initially 200 |Msun| star from ZAMS until it undergoes a pair instability supernovae (PISN). :ref:`ppisn` @@ -455,7 +455,7 @@ tables in MESA. :ref:`radiative_levitation` ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -This test case exercises radiative levitation and the OP mono opacities in the outer layers of a 0.466 Msun, Z=0.02 metallicity, B-type subdwarf (sdB) model. +This test case exercises radiative levitation and the OP mono opacities in the outer layers of a 0.466 |Msun|, Z=0.02 metallicity, B-type subdwarf (sdB) model. :ref:`relax_composition_j_entropy` @@ -467,38 +467,38 @@ momentum and energy of a model to given target values. :ref:`rsp_BEP` ^^^^^^^^^^^^^^ -This test case checks the non-linear pulsation evolution of a 0.26 Msun, Teff = 6968 K, L = 33 Lsun, Z = 0.01 metallicity model - a binary evolution pulsator similar +This test case checks the non-linear pulsation evolution of a 0.26 |Msun|, Teff = 6968 K, L = 33 Lsun, Z = 0.01 metallicity model - a binary evolution pulsator similar the one shown in Smolec et al 2013, MNRAS. :ref:`rsp_BLAP` ^^^^^^^^^^^^^^^ -This test case checks the non-linear pulsation evolution of a 0.36 Msun, Teff = 26,000 K, L = 320 Lsun, Z = 0.05 metallicity model - +This test case checks the non-linear pulsation evolution of a 0.36 |Msun|, Teff = 26,000 K, L = 320 Lsun, Z = 0.05 metallicity model - a blue large-amplitude pulsator model originally contributed by Alfred Gautschy. :ref:`rsp_Cepheid` ^^^^^^^^^^^^^^^^^^ -This test case checks the non-linear pulsation evolution of a 4.165 Msun, Teff = 6050 K, L = 1438.8 Lsun, Z = 0.007 metallicity model - +This test case checks the non-linear pulsation evolution of a 4.165 |Msun|, Teff = 6050 K, L = 1438.8 Lsun, Z = 0.007 metallicity model - a classical Cepheid variable similar to CEP-227 shown in |Pilecki2013|. :ref:`rsp_Delta_Scuti` ^^^^^^^^^^^^^^^^^^^^^^ -This test case checks the non-linear pulsation evolution of a 2 Msun, Teff = 6900 K, L = 30 Lsun, Z = 0.02 metallicity - +This test case checks the non-linear pulsation evolution of a 2 |Msun|, Teff = 6900 K, L = 30 Lsun, Z = 0.02 metallicity - a double-mode delta Scuti variable leaving the main-sequence phase originally contributed by Alfred Gautschy. :ref:`rsp_RR_Lyrae` ^^^^^^^^^^^^^^^^^^^ -This test case checks the non-linear pulsation evolution of a 0.65 Msun, Teff = 6500 K, L = 60 Lsun, Z = 0.004 metallicity - +This test case checks the non-linear pulsation evolution of a 0.65 |Msun|, Teff = 6500 K, L = 60 Lsun, Z = 0.004 metallicity - a long-period RR Lyrae model contributed by Radek Smolec. :ref:`rsp_Type_II_Cepheid` ^^^^^^^^^^^^^^^^^^^^^^^^^^ -This test case checks the non-linear pulsation evolution of a 0.55 Msun, Teff = 6410 K, L = 136 Lsun, Z = 0.0001 metallicity model - +This test case checks the non-linear pulsation evolution of a 0.55 |Msun|, Teff = 6410 K, L = 136 Lsun, Z = 0.0001 metallicity model - type-II Cepheid of BL Her type based on |Smolec14|. :ref:`rsp_check_2nd_crossing` @@ -516,12 +516,12 @@ This test case checks that RSP models can be saved and loaded to produce the sam ^^^^^^^^^^^^^^^^^^^^^ This test case checks placement of the convective and semiconvective boundaries when using the Ledoux criterion and predictive mixing, -see |MESA V|.The test vehicle is with a 1.5 Msun, Z=0.02 metallicity, model. +see |MESA V|.The test vehicle is with a 1.5 |Msun|, Z=0.02 metallicity, model. :ref:`simplex_solar_calibration` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -This test case exercises the simplex framework with a check of the chi^2 value for 1.0 Msun, Z=0.02 metallicity, solar model. +This test case exercises the simplex framework with a check of the chi^2 value for 1.0 |Msun|, Z=0.02 metallicity, solar model. :ref:`split_burn_big_net` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -552,13 +552,13 @@ and is based on code provided originally by Warrick Ball. :ref:`timing` ^^^^^^^^^^^^^ -This test checks the counter and timing routines with a 1.5 Msun, Z=0.02 metallicity model. +This test checks the counter and timing routines with a 1.5 |Msun|, Z=0.02 metallicity model. :ref:`twin_studies` ^^^^^^^^^^^^^^^^^^^ This test case exercise the capability to simultaneously evolve two model stars. -The test vehicle is a pair of 15 Msun, Z=0.02 metallicity, models one with overshooting and one without overshooting. +The test vehicle is a pair of 15 |Msun|, Z=0.02 metallicity, models one with overshooting and one without overshooting. :ref:`tzo` @@ -589,17 +589,17 @@ This test case the checks the onset of a thermonuclear runaway in an accreting C :ref:`wd_cool_0.6M` ^^^^^^^^^^^^^^^^^^^ -This test case the checks the evolution of a cooling, element diffusing 0.6 Msun white dwarf. +This test case the checks the evolution of a cooling, element diffusing 0.6 |Msun| white dwarf. :ref:`wd_diffusion` ^^^^^^^^^^^^^^^^^^^ -This test case the checks element diffusion in a 0.6 Msun carbon-oxygen white dwarf. +This test case the checks element diffusion in a 0.6 |Msun| carbon-oxygen white dwarf. :ref:`wd_he_shell_ignition` ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -This test case the ignition of a helium layer in an accreting in a 0.96 Msun carbon-oxygen white dwarf model. +This test case the ignition of a helium layer in an accreting in a 0.96 |Msun| carbon-oxygen white dwarf model. :ref:`wd_nova_burst` ^^^^^^^^^^^^^^^^^^^^ @@ -713,7 +713,7 @@ optimise model parameters using the ``astero`` module. ^^^^^^^^^^^^^^^^^^^ Each of these test cases runs a handful of iterations of a crude -optimisation, principally to increase test coverage across the +optimization, principally to increase test coverage across the ``astero`` module. :ref:`surface_effects` diff --git a/docs/source/using_mesa/best_practices.rst b/docs/source/using_mesa/best_practices.rst index c74a1e26e..7ad63c90c 100644 --- a/docs/source/using_mesa/best_practices.rst +++ b/docs/source/using_mesa/best_practices.rst @@ -46,68 +46,17 @@ Begin in the directory where you do your MESA work. cp -r $MESA_DIR/star/test_suite/semiconvection . -There are four files to edit. First, modify ``make/makefile``: +In old MESA revisions, there were hard-coded references in the test_suite to set the variable ``MESA_DIR = ../../../..`` . +This practice has been removed in current revisions. If you are running this tutorial with an old revision of MESA, comment out or delete that line in the +makefile, the ``rn`` script, the ``ck`` script, and in ``inlist_semiconvection_header``. If you are running with any MESA revision after r23.05.1, ignore this comment and read on. -.. code-block:: console - - cd semiconvection - cd make - - Edit makefile, changing - - MESA_DIR = ../../../.. - - to - - # MESA_DIR = ../../../.. - - Save the file change in your editor, and - - cd ../ - -Second, modify the ``rn`` script: +Now clean the directory, .. code-block:: console - Edit rn, changing - - MESA_DIR=../../.. - - to - - # MESA_DIR=../../.. - - and save the file change. - -Third, modify the ``ck`` script: - -.. code-block:: console - - Edit ck, changing - - MESA_DIR=../../.. - - to - - # MESA_DIR=../../.. - - and save the file change. - -Fourth, modify ``inlist_semiconvection_header``: - -.. code-block:: console - - Edit inlist_semiconvection_header, changing - - mesa_dir = '../../..' - - to - - !mesa_dir = '../../..' - - and save the file change. + ./clean -Now build the executable +build the executable, .. code-block:: console diff --git a/docs/source/using_mesa/building_inlists.rst b/docs/source/using_mesa/building_inlists.rst index 26389c59b..db9493983 100644 --- a/docs/source/using_mesa/building_inlists.rst +++ b/docs/source/using_mesa/building_inlists.rst @@ -14,7 +14,7 @@ In this section of the inlist, you'll have to make choices for which atmosphere You will also specify here some information about your starting model, and about the output of the evolution. Here we describe only some of the most commonly used controls. For a complete list of available controls see :ref:`reference/star_job:star_job`. -starting model +Starting model -------------- To start an evolution you can either create a pre main sequence model and start from there (case 1) or you can start from a previously calculated model (case 2). In the latter case, it is highly recommended to start from a model which was calculated with the same MESA version as the one used for the subsequent evolution. @@ -31,7 +31,7 @@ Case 2: :start-after: ! Start Case 2 :end-before: ! Output history -output +Output ------ There are a number of controls to specify what we want as MESA outputs. @@ -58,14 +58,14 @@ You can also use pre-defined chemical compositions based on published data. Thes By default, the initial composition in MESA is ``initial_zfracs = 3`` which corresponds to the `GS98 `__ metal fraction. There are 8 possible predefined choices for this control in MESA. If you want for example to use the more recent available solar composition given in `AGSS09 `__ , you need to set ``initial_zfracs = 6``. -Since it is very important to use the opacity tables which are built using the solar composition used, we also have to set the ``kappa_file_prefix`` to the 2009 solar composition (the default table corresponds to the gs98 composition). +Since it is very important to use the opacity tables which are built using the solar composition used, we also have to set the ``kap_file_prefix`` to the 2009 solar composition (the default table corresponds to the gs98 composition). .. literalinclude:: inlist_example :start-after: ! Modifications to model :end-before: ! Nuclear reactions -nuclear reactions +Nuclear reactions ----------------- Choice of network of nuclear reactions. This network should be chosen according to the physics to be studied. Choosing a very comprehensive set of nuclear reactions when studying main sequence evolution is not necessary and will slow down the computation considerably. It would however be essential when studying advanced burning stages of evolution. The description of the available nuclear reactions networks in MESA is given in the README file in ``$MESA_DIR/data/net_data``. The default reactions network used by MESA is ``basic.net``. diff --git a/docs/source/using_mesa/extending_mesa.rst b/docs/source/using_mesa/extending_mesa.rst index 1dba036d2..1c5cefd2f 100644 --- a/docs/source/using_mesa/extending_mesa.rst +++ b/docs/source/using_mesa/extending_mesa.rst @@ -176,7 +176,7 @@ Let's indicate that we want to add two columns to our history file. Now let's calculate the information we want to output. This subroutine has access to the star_info pointer, so you can make use of any of the -quantities defined in star/public/star_data.inc to compute additional +quantities defined in star/public/star_data_*.inc to compute additional information about the star. Here's a subroutine that calculates what we want to know. There are a few “best practices” shown in this routine that are worth remembering, so read through the code and pay attention @@ -215,19 +215,19 @@ to the comments. edot_partial = edot_partial + s% dm(i) * s% eps_nuc(i) if (edot_partial .ge. (frac * edot)) exit end do - + ! note: do NOT add these names to history_columns.list ! the history_columns.list is only for the built-in log column options. ! it must not include the new column names you are adding here. - + ! column 1 names(1) = "m90" vals(1) = s% q(i) * s% star_mass ! in solar masses - + ! column 2 names(2) = "log_R90" - vals(2) = safe_log10_cr(s% R(i) / rsol) ! in solar radii - + vals(2) = log10(s% R(i) / rsun) ! in solar radii + ierr = 0 end subroutine data_for_extra_history_columns @@ -266,18 +266,18 @@ Here I've just uncommented the stock example. ierr = 0 call star_ptr(id, s, ierr) if (ierr /= 0) return - + ! note: do NOT add the extra names to profile_columns.list ! the profile_columns.list is only for the built-in profile column options. ! it must not include the new column names you are adding here. - + ! here is an example for adding a profile column if (n /= 1) stop 'data_for_extra_profile_columns' names(1) = 'beta' do k = 1, nz - vals(k,1) = s% Pgas(k)/s% P(k) + vals(k,1) = s% Pgas(k)/s% Peos(k) end do - + end subroutine data_for_extra_profile_columns Choosing when to output history or profiles @@ -376,7 +376,7 @@ condition can be expressed as "stop when quantity X rises above or falls below some limit", there's a good chance that you can choose to stop simply by setting a few existing flags. Take a look at the "when to stop" section of star/defaults/controls.defaults, which starts around -line 230. +line 940. If your condition isn't there or is a more complicated logical combination of conditions, then you will probably need to implement it @@ -409,7 +409,7 @@ neon burning. ! if you want to check multiple conditions, it can be useful ! to set a different termination code depending on which - ! condition was triggered. MESA provides 9 customizeable + ! condition was triggered. MESA provides 9 customizable ! termination codes, named t_xtra1 .. t_xtra9. You can ! customize the messages that will be printed upon exit by ! setting the corresponding termination_code_str value. @@ -464,7 +464,8 @@ run_star_extras.f90. .. literalinclude:: ../../../star/other/other_neu.f90 :language: fortran - :lines: 41-65 + :start-at: subroutine null_other_neu + :end-at: end subroutine null_other_neu This template routine illustrates the interface and as is, it will produce exactly the same results as the default MESA routine. This is @@ -548,7 +549,7 @@ the other_neu at the routine you want to be executed. if (ierr /= 0) return ! this is the place to set any procedure pointers you want to change - ! e.g., other_wind, other_mixing, other_energy (see star_data.inc) + ! e.g., other_wind, other_mixing, other_energy (see star_data_procedures.inc) s% other_neu => tutorial_other_neu end subroutine extras_controls diff --git a/docs/source/using_mesa/just_a_module.rst b/docs/source/using_mesa/just_a_module.rst index efbf995df..116b13b8f 100644 --- a/docs/source/using_mesa/just_a_module.rst +++ b/docs/source/using_mesa/just_a_module.rst @@ -129,7 +129,7 @@ Now take some time to explore the makefile, and use it to build the executable make -Run the executable, named sample_kap, whoech reads a mesa model file and writes out the opacity and its derivatives at each cell +Run the executable, named sample_kap, which reads a mesa model file and writes out the opacity and its derivatives at each cell .. code-block:: console diff --git a/docs/source/using_mesa/output.rst b/docs/source/using_mesa/output.rst index a6e4a42af..20e35d162 100644 --- a/docs/source/using_mesa/output.rst +++ b/docs/source/using_mesa/output.rst @@ -12,8 +12,8 @@ are text-based and can fed into your favorite plotting program. You should visit the `Add-ons `__ section of the MESA forum and see if someone has contributed code in your -language of choice. (There are reasonably mature routines for python, -IDL, ruby and Mathematica.) An example of python plotting is shown +language of choice. (There are reasonably mature routines for Python, +IDL, ruby and Mathematica.) An example of Python plotting is shown `later on this page <#python>`__. In the LOGS directory, you'll find the following files. @@ -104,7 +104,7 @@ the `numpy `__ and While you may want to write your own tools to read and analyze the output of your MESA calculations, `many already exist `__. In that -vein, we introduce a simple module for use in python scripts and +vein, we introduce a simple module for use in Python scripts and interactive sessions called ``mesa_reader``, which only requires `numpy `__. @@ -116,17 +116,30 @@ to read in the contents of a typical ``LOGS`` directory. These three classes are called ``MesaData``, which corresponds to data in profiles or history files, ``MesaProfileIndex``, which corresponds to data found in ``profiles.index``, and ``MesaLogDir``, which ties together data in -profiles, the profile index, and the history file. +profiles, the profile index, and the history file. +Full documentation for how MESA Reader is installed and how to use the +three classes can be found at the project's `GitHub +repository `__ and +accompanying +`documentation `__. + +How to install MESA Reader? +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The most stable release of `mesa_reader` can be installed +through +`pip `__ +via + +.. code:: console + + pip install mesa_reader + Examples ~~~~~~~~ -Full documentation for how MESA Reader is installed and how to use the -three classes can be found at the project's `Github -repository `__ and -accompanying -`documentation `__. Below, we -show some simple example use cases of MESA Reader. +Below, we show some simple example use cases of MESA Reader. The Basics ^^^^^^^^^^ diff --git a/eos/eosDT_builder/src/create_eos_files.f b/eos/eosDT_builder/src/create_eos_files.f index 6ca2a5edd..f4ecd2eec 100644 --- a/eos/eosDT_builder/src/create_eos_files.f +++ b/eos/eosDT_builder/src/create_eos_files.f @@ -21,13 +21,13 @@ ! *********************************************************************** program create_eosDT_files - use eos_def - use helm - use helm_alloc - use helm_opal_scvh_driver - use const_def + use eos_def + use helm + use helm_alloc + use helm_opal_scvh_driver + use const_def use const_lib - + implicit none @@ -45,11 +45,11 @@ program create_eosDT_files real(dp) :: logT_max - integer, parameter :: version_number = 51 ! update this to force rebuiding of caches - ! update min_version in eosDT_load_tables to force rebuild of data files + integer, parameter :: version_number = 51 ! update this to force rebuiding of caches + ! update min_version in eosDT_load_tables to force rebuild of data files integer :: ix, io_unit, ios, info, irad - real(dp) :: whichz + real(dp) :: whichz ! control what is done by saving the Z in whichz.txt and, if necessary, setting the Xs below @@ -57,7 +57,7 @@ program create_eosDT_files real(dp) :: Xs(num_Xs) Xs(1:num_Xs) = (/ 0.80d0, 0.00d0, 0.20d0, 0.40d0, 0.60d0 /) - + io_unit = 40 open(UNIT=io_unit, FILE=trim("whichz.txt"), ACTION='READ', STATUS='OLD', IOSTAT=ios) if (ios /= 0) call do_stop('failed to open whichz.txt') @@ -95,8 +95,8 @@ end subroutine do_stop subroutine Make_EoS_Files(Z_in, X_in, include_radiation) - use helm_opal_scvh_driver - + use helm_opal_scvh_driver + real(dp), intent(in) :: Z_in, X_in logical, intent(in) :: include_radiation @@ -110,8 +110,8 @@ subroutine Make_EoS_Files(Z_in, X_in, include_radiation) > mu, free_e, gamma1, gamma3, grad_ad, eta, HELM_fraction character (len=64) :: fname_prefix - logical :: helm_only = .false., opal_scvh_only = .false., - > opal_only = .false., scvh_only = .false., search_for_SCVH = .true. + logical :: helm_only = .false., opal_scvh_only = .false., + > opal_only = .false., scvh_only = .false., search_for_SCVH = .true. !opal_only = .true. scvh_only = .true. @@ -123,7 +123,7 @@ subroutine Make_EoS_Files(Z_in, X_in, include_radiation) call get_composition_info(X, Z, abar, zbar, z53bar) !..other initialization - info = 0 + info = 0 if (opal_only) then fname_prefix = '/eosOPAL_data/mesa-OPAL_0' @@ -155,7 +155,7 @@ subroutine Make_EoS_Files(Z_in, X_in, include_radiation) write(fname,'(a,a,i1,a)') trim(dir), trim(fname_prefix), floor(100d0*Z + 0.5d0), 'z00x.data' else if (X < 1) then write(fname,'(a,a,i1,a,i2,a)') trim(dir), trim(fname_prefix), - > floor(100d0*Z + 0.5d0), 'z', floor(100d0*X + 0.5d0), 'x.data' + > floor(100d0*Z + 0.5d0), 'z', floor(100d0*X + 0.5d0), 'x.data' else fname = trim(dir) // trim(fname_prefix) // '0z100x.data' end if @@ -165,11 +165,11 @@ subroutine Make_EoS_Files(Z_in, X_in, include_radiation) open(unit=io_unit,file=trim(fname)) write(io_unit,'(99(a14))') 'version', 'X', 'Z', 'num logTs', 'logT min', 'logT max', 'del logT', - 1 'num logQs', 'logQ min', 'logQ max', 'del logQ' + 1 'num logQs', 'logQ min', 'logQ max', 'del logQ' write(io_unit,'(i14,2f14.4,2(i10,4x,3(f14.4)))') > version_number, X, Z, num_logTs, logT_min, logT_max, del_logT, - > num_logQs, logQ_min, logQ_max, del_logQ + > num_logQs, logQ_min, logQ_max, del_logQ do i = 1, num_logQs logQ = logQ_min + (i-1) * del_logQ @@ -189,14 +189,14 @@ subroutine Make_EoS_Files(Z_in, X_in, include_radiation) info = 0 call helm_opal_scvh( > helm_only, opal_scvh_only, opal_only, scvh_only, search_for_SCVH, - > include_radiation, logT, logRho, T, Rho, abar, zbar, z53bar, X, Z, + > include_radiation, logT, logRho, T, Rho, abar, zbar, z53bar, X, Z, > logPgas, logE, logS, chiRho, chiT, Cp, Cv, dE_dRho, dS_dT, dS_dRho, > mu, free_e, gamma1, gamma3, grad_ad, eta, HELM_fraction, data_dir, info) - if (info /= 0) then - write(*,*) 'logT', logT - write(*,*) 'logRho', logRho - call do_stop('failed in helm_opal_scvh') - end if + if (info /= 0) then + write(*,*) 'logT', logT + write(*,*) 'logRho', logRho + call do_stop('failed in helm_opal_scvh') + end if write(io_unit,'(f4.2,3(f10.5),7(1pe13.5),1(0pf9.5),4(0pf10.5),2(0pf11.5))') > logT, logPgas, logE, logS, chiRho, chiT, Cp, Cv, dE_dRho, dS_dT, dS_dRho, diff --git a/eos/eosDT_builder/src/eos5_xtrin_h-he.f b/eos/eosDT_builder/src/eos5_xtrin_h-he.f index c2f22c94c..48277b12d 100644 --- a/eos/eosDT_builder/src/eos5_xtrin_h-he.f +++ b/eos/eosDT_builder/src/eos5_xtrin_h-he.f @@ -52,7 +52,7 @@ subroutine esac_hhe (xh,t6,r,iorder,irad,filename,results_out,pgas_out,prad_out, c save double precision results_out(iorder), pgas_out, prad_out - integer info ! returned = 0 if AOK + integer info ! returned = 0 if AOK character (len=*) filename integer w real moles @@ -85,7 +85,7 @@ subroutine esac_hhe (xh,t6,r,iorder,irad,filename,results_out,pgas_out,prad_out, stop endif - info = 0 + info = 0 xxi=xh ri=r c @@ -355,22 +355,22 @@ subroutine esac_hhe (xh,t6,r,iorder,irad,filename,results_out,pgas_out,prad_out, return 61 continue - info = -61; return - write(*,'(" Mass fractions exceed unity (61)")') + info = -61; return + write(*,'(" Mass fractions exceed unity (61)")') stop 1 62 continue - info = -62; return - write(*,'(" T6/LogR outside of table range (62)")') + info = -62; return + write(*,'(" T6/LogR outside of table range (62)")') write(*,*) 'T6', t6, 'LogR', log10(r), 'LogT', log10(t6*1d6) stop 1 65 continue - info = -65; return - write(*,'("T6/log rho in empty region od table (65)")') + info = -65; return + write(*,'("T6/log rho in empty region od table (65)")') write (*,'("xh,t6,r=", 3e12.4)') xh,t6,r stop 1 66 continue - info = -66; return - write(*,'(" Z does not match Z in EOS5_data* files you are", + info = -66; return + write(*,'(" Z does not match Z in EOS5_data* files you are", . " using (66)")') write (*,'("mf,zz(mf)=",i5,e12.4)') mf,zz(mf) write (*,'(" iq,ip,k3,l3,xh,t6,r,z= ",4i5,4e12.4)') @@ -492,9 +492,9 @@ subroutine readcoeos_hhe(filename) !..... read tables ! call system (' gunzip EOS5_data_H-He') ! open(2, FILE='EOS5_data_H-He') - - write(*,*) 'read ' // trim(filename) - + + write(*,*) 'read ' // trim(filename) + open(2, FILE=trim(filename), IOSTAT=ios) if (ios .ne. 0) then write(*,*) 'failed to open ', trim(filename) diff --git a/eos/eosDT_builder/src/opal_core.f b/eos/eosDT_builder/src/opal_core.f index 0fab773bc..47342e4d3 100644 --- a/eos/eosDT_builder/src/opal_core.f +++ b/eos/eosDT_builder/src/opal_core.f @@ -8,9 +8,9 @@ subroutine opal_eos (xh_in,ztab_in,t6_in,r_in,iorder,irad,results_out,pgas_out,p c included only for purpose of preventing mismatch c t6=T6=temperature in millions of degrees kelvin c r=rho=Rho=density(g/cm**3) -c iorder=11 ! gives all 1st and 2nd order data. See instructions +c iorder=11 ! gives all 1st and 2nd order data. See instructions c in esac. -c irad=0 ! if 1, then adds radiation corrections +c irad=0 ! if 1, then adds radiation corrections c results ! array of length iorder to hold the results c results(1) is the pressure in megabars (10**12dyne/cm**2) c results(2) is energy in 10**12 ergs/gm. Zero is zero T6 @@ -25,7 +25,7 @@ subroutine opal_eos (xh_in,ztab_in,t6_in,r_in,iorder,irad,results_out,pgas_out,p c results(9) is gamma2/(gamma2-1). Eqs. 9.88 Cox and Guili c results(10) is mu_M c results(11) is log_Ne - integer info ! returned = 0 if AOK + integer info ! returned = 0 if AOK character (len=256) data_dir, filename parameter (mx=5,mv=12,nr=169,nt=197) common/eeos/esact,eos(mv) @@ -56,7 +56,7 @@ subroutine opal_eos (xh_in,ztab_in,t6_in,r_in,iorder,irad,results_out,pgas_out,p end if call esac(xh,ztab,t6,r,iorder,irad,filename,pgas_out,prad_out,info) - if (info /= 0) return + if (info /= 0) return do j=1,iorder results_out(j) = eos(j) end do @@ -110,7 +110,7 @@ subroutine esac (xh,ztab,t6,r,iorder,irad,filename,pgas_out,prad_out,info) c save double precision pgas_out, prad_out - integer info ! returned = 0 if AOK + integer info ! returned = 0 if AOK character (len=*) filename real moles parameter (mx=5,mv=12,nr=169,nt=197) @@ -127,7 +127,7 @@ subroutine esac (xh,ztab,t6,r,iorder,irad,filename,pgas_out,prad_out,info) dimension frac(7) data aprop/83.14511/ - info = 0 + info = 0 blank=' ' if (iorder .gt. mv ) then write (*,*) ' iorder cannot exceed ', mv @@ -158,10 +158,10 @@ subroutine esac (xh,ztab,t6,r,iorder,irad,filename,pgas_out,prad_out,info) call readcoeos(filename) z=zz(1) if (ztab .ne. z) then - write (*,'("requested z=",f10.6," EOS5_data is for z=", + write (*,'("requested z=",f10.6," EOS5_data is for z=", x f10.6)') - x ztab,z - stop 1 + x ztab,z + stop 1 endif if (.false.) then ! report grid @@ -264,7 +264,7 @@ subroutine esac (xh,ztab,t6,r,iorder,irad,filename,pgas_out,prad_out,info) ipu=3 if (k4 .gt. nt) ipu=2 if (k3 .eq. 0) then - write (*,'(" ihi,ilo,imd",3i5)') + write (*,'(" ihi,ilo,imd",3i5)') endif c check to determine if interpolation indices fall within @@ -412,22 +412,22 @@ subroutine esac (xh,ztab,t6,r,iorder,irad,filename,pgas_out,prad_out,info) return 61 continue - info = -61; return - write(*,'(" Mass fractions exceed unity (61)")') + info = -61; return + write(*,'(" Mass fractions exceed unity (61)")') stop 1 62 continue - info = -62; return - write(*,'(" T6/LogR outside of table range (62)")') + info = -62; return + write(*,'(" T6/LogR outside of table range (62)")') write(*,*) 'T6', t6, 'LogR', log10(r), 'LogT', log10(t6*1d6) stop 1 65 continue - info = -65; return - write(*,'("T6/log rho in empty region od table (65)")') + info = -65; return + write(*,'("T6/log rho in empty region od table (65)")') write (*,'("xh,t6,r=", 3e12.4)') xh,t6,r stop 1 66 continue - info = -66; return - write(*,'(" Z does not match Z in EOS5_data* files you are", + info = -66; return + write(*,'(" Z does not match Z in EOS5_data* files you are", . " using (66)")') write (*,'("mf,zz(mf)=",i5,e12.4)') mf,zz(mf) write (*,'(" iq,ip,k3,l3,xh,t6,r,z= ",4i5,4e12.4)') @@ -549,9 +549,9 @@ subroutine readcoeos(filename) !..... read tables c call system (' gunzip EOS5_data') c open(2, FILE='EOS5_data') - - write(*,*) 'read ' // trim(filename) - + + write(*,*) 'read ' // trim(filename) + open(2, FILE=trim(filename), IOSTAT=ios) if (ios .ne. 0) then write(*,*) 'failed to open ', trim(filename) diff --git a/eos/private/create_EXCOR7_table.f90 b/eos/private/create_EXCOR7_table.f90 index 78cd90f25..bed070e47 100644 --- a/eos/private/create_EXCOR7_table.f90 +++ b/eos/private/create_EXCOR7_table.f90 @@ -120,11 +120,11 @@ subroutine EXCOR7(RS,GAME,FXC,UXC,PXC,CVXC,SXC,PDTXC,PDRXC) real(dp) :: S1, S1H, S1DH, S1DHH, S1DG, S1DHG real(dp) :: B2, B2DH, B2DHH, SQGE, B3, B3DH, B3DHH real(dp) :: S2, S2H, S2DH, S2DHH, S2DG, S2DGG, S2DHG - real(dp) :: R3, R3H, R3DH, R3DHH, R3DG, R3DGG, R3DHG + real(dp) :: R3, R3DH, R3DHH, R3DG, R3DGG, R3DHG real(dp) :: S3, S3DH, S3DHH, S3DG, S3DGG, S3DHG real(dp) :: B4, B4DH, B4DHH real(dp) :: C4, C4DH, C4DHH, C4DG, C4DGG, C4DHG - real(dp) :: S4A, S4AH, S4ADH, S4ADHH, S4ADG, S4ADGG, S4ADHG + real(dp) :: S4A, S4AH, S4ADH, S4ADHH real(dp) :: S4B, S4BDH, S4BDHH, UP1, DN1, UP2, DN2 real(dp) :: S4C, S4CDH, S4CDHH, S4CDG, S4CDGG, S4CDHG real(dp) :: S4, S4DH, S4DHH, S4DG, S4DGG, S4DHG diff --git a/eos/private/eos_ctrls_io.f90 b/eos/private/eos_ctrls_io.f90 index 3970d8465..6d3f76339 100644 --- a/eos/private/eos_ctrls_io.f90 +++ b/eos/private/eos_ctrls_io.f90 @@ -276,7 +276,6 @@ subroutine read_namelist(handle, inlist, ierr) character (len=*), intent(in) :: inlist integer, intent(out) :: ierr ! 0 means AOK. type (EoS_General_Info), pointer :: rq - integer :: iz, j include 'formats' call get_eos_ptr(handle,rq,ierr) if (ierr /= 0) return @@ -298,7 +297,6 @@ recursive subroutine read_controls_file(rq, filename, level, ierr) integer, intent(in) :: level integer, intent(out) :: ierr logical, dimension(max_extra_inlists) :: read_extra - character (len=strlen) :: message character (len=strlen), dimension(max_extra_inlists) :: extra integer :: unit, i diff --git a/eos/private/eoscms_eval.f90 b/eos/private/eoscms_eval.f90 index a350a3968..c3d793112 100644 --- a/eos/private/eoscms_eval.f90 +++ b/eos/private/eoscms_eval.f90 @@ -181,7 +181,7 @@ subroutine get_CMS_for_eosdt( & real(dp) :: dres1_dlnT(nv), dres2_dlnT(nv), dres3_dlnT(nv), dres4_dlnT(nv) real(dp) :: dres1_dlnRho(nv), dres2_dlnRho(nv), dres3_dlnRho(nv), dres4_dlnRho(nv) real(dp) :: d_dX(nv) - real(dp) :: alfa, beta, dbeta_dX, dalfa_dX, xx(4), y(4), a(3), dw, dX + real(dp) :: alfa, beta, dbeta_dX, dalfa_dX, xx(4), y(4), a(3), dX rq => eos_handles(handle) if(rq% CMS_use_fixed_composition)then !do fixed composition (one table only) diff --git a/eos/private/eosdt_eval.f90 b/eos/private/eosdt_eval.f90 index fc8afd6f8..334605582 100644 --- a/eos/private/eosdt_eval.f90 +++ b/eos/private/eosdt_eval.f90 @@ -1075,14 +1075,12 @@ subroutine get_opal_scvh_alfa_and_partials( & real(dp) :: logRho1_max, logRho1, logRho2, logRho5, logRho6, logRho7, & logRho8, logT5, logT6, logT3, logT4 real(dp) :: logQ1, logQ2, logQ3, logQ4, logQmax, Z_all_HELM, Z_no_HELM - real(dp) :: beta, logRho_lo, logRho_hi, & + real(dp) :: beta, & logT1, logT2, logT7, logT8, logRho3, logRho4 real(dp) :: logQ, A, B, dA_dlnT, dA_dlnRho, dB_dlnT, dB_dlnRho real(dp) :: c_dx, c_dy, d_dx_dlogT, d_dx_dlogRho, d_dy_dlogT, d_dy_dlogRho real(dp), parameter :: tiny = 1d-20 - logical :: debug - include 'formats' logRho1_max = 3.71d0 diff --git a/eos/private/eosdt_load_tables.f90 b/eos/private/eosdt_load_tables.f90 index db5b365d0..170344cf8 100644 --- a/eos/private/eosdt_load_tables.f90 +++ b/eos/private/eosdt_load_tables.f90 @@ -575,7 +575,7 @@ subroutine Read_EoS_Cache(X, Z, ep, cache_filename, io_unit, ios) real(dp) :: X_in, Z_in, logT_min_in, logT_max_in, del_logT_in, & logQ_min_in, logQ_max_in, del_logQ_in - integer :: num_logQs_in, num_logTs_in, version_in, i, j + integer :: num_logQs_in, num_logTs_in, version_in real(dp), parameter :: tiny = 1d-10 include 'formats' diff --git a/eos/private/helm.f90 b/eos/private/helm.f90 index a8cbc1d3b..80c3d4d2c 100644 --- a/eos/private/helm.f90 +++ b/eos/private/helm.f90 @@ -110,8 +110,7 @@ subroutine helmeos2aux( & !..for the interpolations integer iat, jat - real(dp) dth, dt2, dti, dt2i, dt3i, dd, dd2, ddi, dd2i, dd3i, & - xt, xd, mxt, mxd, fi(36), & + real(dp) xt, xd, mxt, mxd, fi(36), & din, dindd, dinda, dindz, dindda, dinddz, dindaa, & dindaz, dindzz, dinddaa, dinddaz, & w0t, w1t, w2t, w0mt, w1mt, w2mt, & diff --git a/eos/private/ideal.f90 b/eos/private/ideal.f90 index e1e05e4f8..44bc682fd 100644 --- a/eos/private/ideal.f90 +++ b/eos/private/ideal.f90 @@ -72,8 +72,6 @@ subroutine get_ideal_eos_results( & integer, intent(out) :: ierr real(dp), intent(out), dimension(nv) :: res, d_dlnd, d_dlnT real(dp), intent(out), dimension(nv, species) :: d_dxa - - real(dp) :: logT_ion, logT_neutral ierr = 0 diff --git a/eos/private/ion_offset.f90 b/eos/private/ion_offset.f90 index 21dcd8c89..8485578d3 100644 --- a/eos/private/ion_offset.f90 +++ b/eos/private/ion_offset.f90 @@ -35,7 +35,7 @@ real(dp) function compute_ion_offset(species, xa, chem_id) result(offset) 23221.0,25820.0,28582.0,31514.0,34619.0,37899.0,41356.0] integer :: k, Z(species) - real(dp) :: A(species), W(species), ya(species), norm + real(dp) :: A(species), ya(species), norm ! Get basic species info norm = 0d0 diff --git a/eos/private/pc_support.f90 b/eos/private/pc_support.f90 index ec436fd93..b7e7a0b12 100644 --- a/eos/private/pc_support.f90 +++ b/eos/private/pc_support.f90 @@ -58,7 +58,7 @@ subroutine get_FITION9(GAMI, & integer, parameter :: iPDTii = 5 integer, parameter :: iPDRii = 6 real(dp) :: lnGAMI_min, lnGAMI_max, dlnGAMI, lnGAMI - integer :: nlnGAMI, i, j, k_old + integer :: nlnGAMI, k_old real(dp) :: xk_old, xkp1_old, xk_new, delta real(dp), pointer, dimension(:,:) :: f_1, f_2, f_3, f_4, f_5, f_6 @@ -226,7 +226,7 @@ subroutine get_FSCRliq8(iZion, RS, GAME, & logical, intent(out) :: skip integer, intent(out) :: ierr - integer :: iRS, jGAME, i + integer :: iRS, jGAME real(dp) :: lnRS, lnRS0, lnRS1, lnGAME, lnGAME0, lnGAME1 real(dp), dimension(nvals_FSCRliq8) :: fval, df_dlnRS, df_dlnGAME type (eosPC_Support_Info), pointer :: fq @@ -309,7 +309,7 @@ subroutine get_EXCOR7(RS, GAME, & logical, intent(out) :: skip integer, intent(out) :: ierr - integer :: iRS, jGAME, i + integer :: iRS, jGAME real(dp) :: lnRS, lnRS0, lnRS1, lnGAME, lnGAME0, lnGAME1 real(dp), dimension(nvals_EXCOR7) :: fval, df_dlnRS, df_dlnGAME type (eosPC_Support_Info), pointer :: fq @@ -570,7 +570,7 @@ subroutine load_eosPC_support_Info(fq, iZion, ierr) integer, intent(in) :: iZion ! 0 means EXCOR7 integer, intent(out) :: ierr - integer :: io_unit, n, j, i, k, iQ, nparams, nvals + integer :: io_unit, n, j, i, iQ, nparams, nvals character (len=256) :: filename, fname, cache_fname, temp_cache_fname character (len=1000) :: message real(dp), pointer :: tbl2_1(:), tbl2(:,:,:) @@ -812,22 +812,19 @@ subroutine Make_Interpolation_Data(fq, nvals, tbl2_1, ierr) real(dp), allocatable, target :: f1_ary(:) ! data & spline coefficients real(dp), pointer :: f1(:), f(:,:,:), tbl2(:,:,:) - integer :: ibcxmin ! bc flag for x=xmin + integer :: ibcxmin ! bc flag for x=xmin real(dp) :: bcxmin(fq% nlnGAME) ! bc data vs. y at x=xmin - integer :: ibcxmax ! bc flag for x=xmax - real(dp) :: bcxmax(fq% nlnGAME) ! bc data vs. y at x=xmax - integer :: ibcymin ! bc flag for y=ymin - real(dp) :: bcymin(fq% nlnRS) ! bc data vs. x at y=ymin - integer :: ibcymax ! bc flag for y=ymax - real(dp) :: bcymax(fq% nlnRS) ! bc data vs. x at y=ymax - integer :: ili_lnRSs ! =1: logRho grid is "nearly" equally spaced + integer :: ibcxmax ! bc flag for x=xmax + real(dp) :: bcxmax(fq% nlnGAME) ! bc data vs. y at x=xmax + integer :: ibcymin ! bc flag for y=ymin + real(dp) :: bcymin(fq% nlnRS) ! bc data vs. x at y=ymin + integer :: ibcymax ! bc flag for y=ymax + real(dp) :: bcymax(fq% nlnRS) ! bc data vs. x at y=ymax + integer :: ili_lnRSs ! =1: logRho grid is "nearly" equally spaced integer :: ili_lnGAMEs ! =1: lnGAME grid is "nearly" equally spaced - integer :: ier ! =0 on exit if there is no error. - integer :: iQ, jtemp, ilnGAME, ilnRS - real(dp) :: fval(nvals), df_dx(nvals), df_dy(nvals) + integer :: ier ! =0 on exit if there is no error. - integer :: v, vlist(3), var, i, j, ii, jj - character (len=256) :: message + integer :: v, i, j include 'formats' @@ -893,7 +890,7 @@ subroutine Read_Cache(fq, cache_fname, ierr) real(dp) :: lnGAME_min_in, lnGAME_max_in, dlnGAME_in, & lnRS_min_in, lnRS_max_in, dlnRS_in - integer :: Zion_in, nlnRS_in, nlnGAME_in, io_unit, i, j + integer :: Zion_in, nlnRS_in, nlnGAME_in, io_unit real(dp), parameter :: tiny = 1d-10 include 'formats' diff --git a/eos/private/skye_coulomb.f90 b/eos/private/skye_coulomb.f90 index 953c52c3b..0d9e4dc97 100644 --- a/eos/private/skye_coulomb.f90 +++ b/eos/private/skye_coulomb.f90 @@ -49,9 +49,9 @@ subroutine nonideal_corrections(NMIX,AY,AZion,ACMI, min_gamma_for_solid, max_gam integer :: IX integer :: LIQSOL - real(dp) :: Zion, Zmean, Z2mean, Z52, Z53, Z321, norm + real(dp) :: Zmean, Z2mean, Z52, Z53, Z321 type(auto_diff_real_2var_order3) :: GAME, RS, DENS, Smix, F_phase_independent - type(auto_diff_real_2var_order3) :: kT, dF_sol, dF_liq, latent_S, min_S + type(auto_diff_real_2var_order3) :: kT, dF_sol, dF_liq ! Compute various mean charge quantities Zmean=0d0 @@ -211,7 +211,7 @@ function nonideal_corrections_phase(NMIX,AY,AZion,ACMI,min_gamma_for_solid, max_ character(len=128), intent(in) :: Skye_solid_mixing_rule ! Intermediates and constants - integer :: i,j + integer :: i type(auto_diff_real_2var_order3) :: FMIX, f real(dp), parameter :: TINY=1.d-7 diff --git a/eos/private/skye_coulomb_solid.f90 b/eos/private/skye_coulomb_solid.f90 index a0ca56e32..aac38d964 100644 --- a/eos/private/skye_coulomb_solid.f90 +++ b/eos/private/skye_coulomb_solid.f90 @@ -60,7 +60,7 @@ function ocp_solid_harmonic_free_energy(GAMI,TPT_in) result(F) type(auto_diff_real_2var_order3), intent(in) :: GAMI,TPT_in ! Intermediates - type(auto_diff_real_2var_order3) :: TPT, UP, DN, EA, EB, EG, UP1, UP2, DN1, DN2, E0 + type(auto_diff_real_2var_order3) :: TPT, UP, DN, EA, EB, EG, E0 type(auto_diff_real_2var_order3) :: Fth, U0 ! Output @@ -161,7 +161,7 @@ function ocp_solid_screening_free_energy_correction(Z, mi, ge, rs) result(F) real(dp) :: s, b1, b2, b3, b4, COTPT real(dp), parameter :: aTF = 0.00352d0 - type(auto_diff_real_2var_order3) :: TPT, x, f_inf, A, Q, xr, eta, supp, g, alpha, Fliq, gr, switch + type(auto_diff_real_2var_order3) :: TPT, f_inf, A, Q, xr, supp, g, alpha, Fliq, gr, switch type(auto_diff_real_2var_order3) :: F s = 1d0 / (1d0 + 1d-2 * pre_z(int(Z))% logz_3_2 + 0.097d0 / pre_z(int(Z))% z2) diff --git a/eos/private/skye_ideal.f90 b/eos/private/skye_ideal.f90 index 7306ef5f0..ed8dc16f1 100644 --- a/eos/private/skye_ideal.f90 +++ b/eos/private/skye_ideal.f90 @@ -73,7 +73,7 @@ subroutine compute_ideal_ele(temp_in, den_in, din_in, logtemp_in, logden_in, zba !..for the interpolations integer iat, jat - real(dp) dth, dt2, dti, dt2i, dt3i, dd, dd2, ddi, dd2i, dd3i, & + real(dp) dth, dt2, dti, dt2i, dt3i, dd, & xt, xd, mxt, mxd, fi(36), & dindd, dinda, dindz, dindda, dinddz, dindaa, & dindaz, dindzz, dinddaa, dinddaz, & diff --git a/eos/public/eos_def.f90 b/eos/public/eos_def.f90 index 130ff2552..dfb4b2f56 100644 --- a/eos/public/eos_def.f90 +++ b/eos/public/eos_def.f90 @@ -536,7 +536,6 @@ subroutine init_eos_handle_data(handle) use math_lib integer, intent(in) :: handle type (EoS_General_Info), pointer :: rq - integer :: iz rq => eos_handles(handle) rq% in_use = .true. rq% handle = handle @@ -574,7 +573,7 @@ end subroutine get_eos_ptr subroutine eos_def_shutdown type (eosPC_Support_Info), pointer :: fq type (FITION_Info), pointer :: fi - integer :: ix, iz + integer :: iz ! DT tables call free_EosDT_XZ_Info( & diff --git a/eos/test/src/eos_support.f90 b/eos/test/src/eos_support.f90 index a00a45721..0b9a4e54a 100644 --- a/eos/test/src/eos_support.f90 +++ b/eos/test/src/eos_support.f90 @@ -104,7 +104,6 @@ subroutine Setup_eos character (len=256) :: my_mesa_dir integer :: info - real(dp) :: logT_all_HELM, logT_all_OPAL logical :: use_cache info = 0 diff --git a/eos/test/src/sample_eos.f90 b/eos/test/src/sample_eos.f90 index 118de2723..1ce5ba4c8 100644 --- a/eos/test/src/sample_eos.f90 +++ b/eos/test/src/sample_eos.f90 @@ -9,7 +9,7 @@ ! by the Free Software Foundation; either version 2 of the License, or ! (at your option) any later version. ! -! MESA is distributed in the hope that it will be useful, +! MESA 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 Library General Public License for more details. @@ -20,158 +20,143 @@ ! ! *********************************************************************** - program sample_eos +program sample_eos use eos_def use eos_lib use chem_def use chem_lib use const_lib use math_lib - + implicit none - -! this program shows how to setup and use the mesa eos in an interactive manner. - - - real(dp) :: X, Z, Y, abar, zbar, z2bar, z53bar, ye + + ! this program shows how to setup and use the mesa eos in an interactive manner. + + real(dp) :: X, Y, abar, zbar, z2bar, z53bar, ye integer, parameter :: species = 7 - integer, parameter :: h1=1, he4=2, c12=3, n14=4, o16=5, ne20=6, mg24=7 + integer, parameter :: h1 = 1, he4 = 2, c12 = 3, n14 = 4, o16 = 5, ne20 = 6, mg24 = 7 integer, pointer, dimension(:) :: net_iso, chem_id real(dp) :: xa(species) - - + call Sample - - contains - + + contains + subroutine Sample - + integer :: handle - real(dp) :: Rho, T, Pgas, log10Rho - real(dp) :: dlnRho_dlnPgas_const_T, dlnRho_dlnT_const_Pgas, d_dlnRho_const_T, d_dlnT_const_Rho - real(dp), dimension(num_eos_basic_results) :: res, d_dlnd, d_dlnT, d_dabar, d_dzbar - real(dp) :: d_dxa(num_eos_d_dxa_results,species) - real(dp) :: xz, frac, dabar_dx(species), dzbar_dx(species), sumx,mass_correction, dmc_dx(species) + real(dp) :: Rho, T + real(dp), dimension(num_eos_basic_results) :: res, d_dlnd, d_dlnT + real(dp) :: d_dxa(num_eos_d_dxa_results, species) + real(dp) :: xz, dabar_dx(species), dzbar_dx(species), sumx, mass_correction, dmc_dx(species) integer :: ierr - character (len=32) :: my_mesa_dir - character (len=80) :: string - - -! explicitly set my_mesa_dir to your $MESA_DIR, or use a blank string, in which case your $MESA_DIR is automagically used - + character(len=32) :: my_mesa_dir + character(len=80) :: string + + ! explicitly set my_mesa_dir to your $MESA_DIR, or use a blank string, in which case your $MESA_DIR is automagically used + my_mesa_dir = '../..' -! my_mesa_dir = '' - - -! initialize + ! my_mesa_dir = '' + + ! initialize ierr = 0 - - call const_init(my_mesa_dir,ierr) - if (ierr /= 0) call mesa_error(__FILE__,__LINE__) - + + call const_init(my_mesa_dir, ierr) + if (ierr /= 0) call mesa_error(__FILE__, __LINE__) + call math_init() - + call chem_init('isotopes.data', ierr) - if (ierr /= 0) call mesa_error(__FILE__,__LINE__) - + if (ierr /= 0) call mesa_error(__FILE__, __LINE__) + call Setup_eos(handle) - allocate(net_iso(num_chem_isos), chem_id(species), stat=ierr) - if (ierr /= 0) call mesa_error(__FILE__,__LINE__) - + allocate (net_iso(num_chem_isos), chem_id(species), stat=ierr) + if (ierr /= 0) call mesa_error(__FILE__, __LINE__) + call Init_Composition - - - -! keep returning to here -100 xa(:) = 0.0d0 - -! get the temperature, density and composition - - write(6,*) - write(6,*) 'give the temperature, density, and mass fractions (h1, he4, c12, n14, o16, ne20, mg24) =>' - write(6,*) 'hit return for T = 1e9 K, Rho = 1e4 g/cc, x(c12) = 1 ; enter -1 to stop' - write(6,*) - read(5,'(a)') string - -! stop - if (string(1:2) .eq. '-1') then - call Shutdown_eos(handle) - deallocate(net_iso, chem_id) - if (ierr /= 0) call mesa_error(__FILE__,__LINE__) - call mesa_error(__FILE__,__LINE__,'normal termination') - -! read the conditions - else - if (string(1:6) .ne. ' ') then - read(string,*) T,Rho, xa(h1), xa(he4), xa(c12), xa(n14), xa(o16), xa(ne20), xa(mg24) - -! or set some defaults - else - T = 1.0d9 ; Rho = 1.0d4 ; xa(c12) = 1.0d0 - end if - end if - - -! get some composition variables - call composition_info( & + + ! keep returning to here + do + xa(:) = 0.0d0 + + ! get the temperature, density and composition + + write (6, *) + write (6, *) 'give the temperature, density, and mass fractions (h1, he4, c12, n14, o16, ne20, mg24) =>' + write (6, *) 'hit return for T = 1e9 K, Rho = 1e4 g/cc, x(c12) = 1 ; enter -1 to stop' + write (6, *) + read (5, '(a)') string + + ! stop + if (string(1:2) .eq. '-1') then + call Shutdown_eos(handle) + deallocate (net_iso, chem_id) + if (ierr /= 0) call mesa_error(__FILE__, __LINE__) + ! exit + call mesa_error(__FILE__, __LINE__, 'normal termination') + + ! read the conditions + else + if (string(1:6) .ne. ' ') then + read (string, *) T, Rho, xa(h1), xa(he4), xa(c12), xa(n14), xa(o16), xa(ne20), xa(mg24) + + ! or set some defaults + else + T = 1.0d9; Rho = 1.0d4; xa(c12) = 1.0d0 + end if + end if + + ! get some composition variables + call composition_info( & species, chem_id, xa, X, Y, xz, abar, zbar, z2bar, z53bar, ye, mass_correction, & sumx, dabar_dx, dzbar_dx, dmc_dx) - - -! call the density-temperature based eos - -! composition derivatives by isotope - - call eosDT_get( & + + ! call the density-temperature based eos + + ! composition derivatives by isotope + + call eosDT_get( & handle, species, chem_id, net_iso, xa, & Rho, log10(Rho), T, log10(T), & res, d_dlnd, d_dlnT, d_dxa, ierr) - - -! report the results - - call PrettyOut(Rho, T, abar, zbar, res, d_dlnd, d_dlnT) - - -! example calling the pressure-temperature based eos -! Pgas = exp(res(i_lnPgas)) -! call eosPT_get( & -! handle, Z, X, abar, zbar, & -! species, chem_id, net_iso, xa, & -! Pgas, log10(Pgas), T, log10(T), & -! Rho, log10Rho, dlnRho_dlnPgas_const_T, dlnRho_dlnT_const_Pgas, & -! res, d_dlnd, d_dlnT, d_dabar, d_dzbar, ierr) - - -! back for another one - goto 100 - + + ! report the results + + call PrettyOut(Rho, T, abar, zbar, res, d_dlnd, d_dlnT) + + ! example calling the pressure-temperature based eos + ! Pgas = exp(res(i_lnPgas)) + ! call eosPT_get( & + ! handle, Z, X, abar, zbar, & + ! species, chem_id, net_iso, xa, & + ! Pgas, log10(Pgas), T, log10(T), & + ! Rho, log10Rho, dlnRho_dlnPgas_const_T, dlnRho_dlnT_const_Pgas, & + ! res, d_dlnd, d_dlnT, d_dabar, d_dzbar, ierr) + + ! back for another one + end do + end subroutine Sample - - - - + subroutine Setup_eos(handle) ! allocate and load the eos tables use eos_def use eos_lib integer, intent(out) :: handle - + integer :: ierr logical, parameter :: use_cache = .true. - + call eos_init(' ', use_cache, ierr) - if (ierr /= 0) call mesa_error(__FILE__,__LINE__) - - write(*,*) 'loading eos tables' - + if (ierr /= 0) call mesa_error(__FILE__, __LINE__) + + write (*, *) 'loading eos tables' + handle = alloc_eos_handle(ierr) - if (ierr /= 0) call mesa_error(__FILE__,__LINE__) - + if (ierr /= 0) call mesa_error(__FILE__, __LINE__) + end subroutine Setup_eos - - - + subroutine Shutdown_eos(handle) use eos_def use eos_lib @@ -179,14 +164,12 @@ subroutine Shutdown_eos(handle) call free_eos_handle(handle) call eos_shutdown end subroutine Shutdown_eos - - - + subroutine Init_Composition use chem_lib - + net_iso(:) = 0 - + chem_id(h1) = ih1; net_iso(ih1) = h1 chem_id(he4) = ihe4; net_iso(ihe4) = he4 chem_id(c12) = ic12; net_iso(ic12) = c12 @@ -194,24 +177,19 @@ subroutine Init_Composition chem_id(o16) = io16; net_iso(io16) = o16 chem_id(ne20) = ine20; net_iso(ine20) = ne20 chem_id(mg24) = img24; net_iso(img24) = mg24 - + end subroutine Init_Composition - - - - - + subroutine PrettyOut(Rho, T, abar, zbar, res, d_dlnd, d_dlnT) use eos_def use eos_lib use chem_lib - -! declare the pass + + ! declare the pass real(dp) :: Rho, T, abar, zbar - real(dp), dimension(num_eos_basic_results) :: res, d_dlnd, d_dlnT, d_dabar, d_dzbar - - -! local variables + real(dp), dimension(num_eos_basic_results) :: res, d_dlnd, d_dlnT + + ! local variables real(dp) :: my_ptot, my_dptotdd, my_dptotdt, my_dptotddd, my_dptotddt, my_dptotdtt, & my_etot, my_detotdd, my_detotdt, my_detotddd, my_detotddt, my_detotdtt, & my_stot, my_dstotdd, my_dstotdt, my_dstotddd, my_dstotddt, my_dstotdtt, & @@ -222,222 +200,212 @@ subroutine PrettyOut(Rho, T, abar, zbar, res, d_dlnd, d_dlnT) my_erad, my_deraddd, my_deraddt, my_deradddd, my_deradddt, my_deraddtt, & my_srad, my_dsraddd, my_dsraddt, my_dsradddd, my_dsradddt, my_dsraddtt, & my_xni, my_dxnidd, my_dxnidt, my_xne, my_dxnedd, my_dxnedt, my_eta, my_detadd, my_detadt, & - my_cv, my_dcvdd, my_dcvdt, my_cp, my_dcpdd, my_dcpdt, & - my_g1, my_dg1dd, my_dg1dt, my_g2, my_dg2dd, my_dg2dt, my_g3, my_dg3dd, my_dg3dt, & + my_cv, my_dcvdd, my_dcvdt, my_cp, my_dcpdd, my_dcpdt, & + my_g1, my_dg1dd, my_dg1dt, my_g2, my_dg2dd, my_dg2dt, my_g3, my_dg3dd, my_dg3dt, & my_grad, my_dgraddd, my_dgraddt, my_chit, my_dchitdd, my_dchitdt, my_chir, my_dchirdd, my_dchirdt, & my_cs, my_dcsdd, my_dcsdt, x, z, xx, yy, ww, dfk, dse, dpe, dsp - -! popular format statements -01 format(1x,t2,a,t16,a,t31,a,t46,a,t59,a,t74,a,t89,a) -02 format(1x,t2,a,1p7e15.6) -03 format(1x,t2,a7,1pe14.6,t24,a7,1pe14.6,t46,a7,1pe14.6,t68,a7,1pe14.6) - - -! indices for the res, d_dlnd, and d_dlnt arrays are defined in $MESA_DIR/eos/public/eos_def.f90 - -! radiation - my_prad = crad * one_third * T * T * T * T - my_dpraddd = 0.0d0 - my_dpraddt = 4.0d0 * my_prad/T + + ! popular format statements + character(len=*), parameter :: fmt1 = "(1x, t2, a, t16, a, t31, a, t46, a, t59, a, t74, a, t89, a)" + character(len=*), parameter :: fmt2 = "(1x, t2, a, 1p7e15.6)" + character(len=*), parameter :: fmt3 = "(1x, t2, a7, 1pe14.6, t24, a7, 1pe14.6, t46, a7, 1pe14.6, t68, a7, 1pe14.6)" + + ! indices for the res, d_dlnd, and d_dlnt arrays are defined in $MESA_DIR/eos/public/eos_def.f90 + + ! radiation + my_prad = crad*one_third*T*T*T*T + my_dpraddd = 0.0d0 + my_dpraddt = 4.0d0*my_prad/T my_dpradddd = 0.0d0 my_dpradddt = 0.0d0 - my_dpraddtt = 4.0d0 * crad * T * T - - my_erad = 3.0d0 * my_prad / Rho - my_deraddd = -my_erad / Rho - my_deraddt = 3.0d0 * my_dpraddt / Rho - my_deradddd = -2.0d0 * my_deraddd / Rho - my_deradddt = -my_deraddt / Rho - my_deraddtt = 3.0d0 * my_dpraddtt / Rho - - my_srad = (my_prad/Rho + my_erad) / T - my_dsraddd = (my_dpraddd/Rho - my_prad/(Rho*Rho) + my_deraddd) / T - my_dsraddt = (my_dpraddt/Rho + my_deraddt - my_srad) / T + my_dpraddtt = 4.0d0*crad*T*T + + my_erad = 3.0d0*my_prad/Rho + my_deraddd = -my_erad/Rho + my_deraddt = 3.0d0*my_dpraddt/Rho + my_deradddd = -2.0d0*my_deraddd/Rho + my_deradddt = -my_deraddt/Rho + my_deraddtt = 3.0d0*my_dpraddtt/Rho + + my_srad = (my_prad/Rho + my_erad)/T + my_dsraddd = (my_dpraddd/Rho - my_prad/(Rho*Rho) + my_deraddd)/T + my_dsraddt = (my_dpraddt/Rho + my_deraddt - my_srad)/T my_dsradddd = ((my_dpradddd & - - (2.0d0*my_dpraddd - 2.0d0*my_prad/Rho)/Rho)/Rho & - + my_deradddd) / T + - (2.0d0*my_dpraddd - 2.0d0*my_prad/Rho)/Rho)/Rho & + + my_deradddd)/T my_dsradddt = ((my_dpradddt - my_dpraddt/Rho)/Rho & - + my_deradddt - my_dsraddd) / T - my_dsraddtt = ((my_dpraddtt/Rho + my_deraddtt - my_dsraddt) - my_dsraddt)/ T - - -! gas and totals -! pressure - my_pgas = exp(res(i_lnPgas)) - my_dpgasdd = my_pgas/Rho * d_dlnd(i_lnPgas) - my_dpgasdt = my_pgas/T * d_dlnt(i_lnPgas) - - my_ptot = my_pgas + my_prad + + my_deradddt - my_dsraddd)/T + my_dsraddtt = ((my_dpraddtt/Rho + my_deraddtt - my_dsraddt) - my_dsraddt)/T + + ! gas and totals + ! pressure + my_pgas = exp(res(i_lnPgas)) + my_dpgasdd = my_pgas/Rho*d_dlnd(i_lnPgas) + my_dpgasdt = my_pgas/T*d_dlnt(i_lnPgas) + + my_ptot = my_pgas + my_prad my_dptotdd = my_dpgasdd + my_dpraddd my_dptotdt = my_dpgasdt + my_dpraddt - -! energy - my_etot = exp(res(i_lnE)) - my_detotdd = my_etot/Rho * d_dlnd(i_lnE) - my_detotdt = my_etot/T * d_dlnt(i_lnE) - - my_egas = my_etot - my_erad + + ! energy + my_etot = exp(res(i_lnE)) + my_detotdd = my_etot/Rho*d_dlnd(i_lnE) + my_detotdt = my_etot/T*d_dlnt(i_lnE) + + my_egas = my_etot - my_erad my_degasdd = my_detotdd - my_deraddd my_degasdt = my_detotdt - my_deraddt - -! entropy - my_stot = exp(res(i_lnS)) - my_dstotdd = my_stot/Rho * d_dlnd(i_lnS) - my_dstotdt = my_stot/T * d_dlnt(i_lnS) - - my_sgas = my_stot - my_srad + + ! entropy + my_stot = exp(res(i_lnS)) + my_dstotdd = my_stot/Rho*d_dlnd(i_lnS) + my_dstotdt = my_stot/T*d_dlnt(i_lnS) + + my_sgas = my_stot - my_srad my_dsgasdd = my_dstotdd - my_dsraddd my_dsgasdt = my_dstotdt - my_dsraddt - - -! number densities and electron degeneracy - my_xni = avo * Rho/abar - my_dxnidd = avo / abar + + ! number densities and electron degeneracy + my_xni = avo*Rho/abar + my_dxnidd = avo/abar my_dxnidt = 0.0d0 - - my_xne = abar * my_xni * exp(res(i_lnfree_e)) - my_dxnedd = abar * my_xni * exp(res(i_lnfree_e))/Rho * d_dlnd(i_lnfree_e) + abar * my_dxnidd * exp(res(i_lnfree_e)) - my_dxnedt = abar * my_xni * exp(res(i_lnfree_e))/T * d_dlnt(i_lnfree_e) + abar * my_dxnidt * exp(res(i_lnfree_e)) - - my_eta = res(i_eta) - my_detadd = d_dlnd(i_eta) / Rho - my_detadt = d_dlnt(i_eta) / T - -! total specific heats - my_cv = res(i_Cv) - my_dcvdd = d_dlnd(i_Cv) / Rho - my_dcvdt = d_dlnt(i_Cv) / T - - my_cp = res(i_Cp) - my_dcpdd = d_dlnd(i_Cp) / Rho - my_dcpdt = d_dlnt(i_Cp) / T - -! total gammas - my_grad = res(i_grad_ad) - my_dgraddd = d_dlnd(i_grad_ad) / Rho - my_dgraddt = d_dlnt(i_grad_ad) / T - - my_g1 = res(i_gamma1) - my_dg1dd = d_dlnd(i_gamma1) / Rho - my_dg1dt = d_dlnt(i_gamma1) / T - - my_g2 = 1.0d0/(1.0d0 - my_grad) - my_dg2dd = my_g2*my_g2 * my_dgraddd - my_dg2dt = my_g2*my_g2 * my_dgraddt - - my_g3 = res(i_gamma3) - my_dg3dd = d_dlnd(i_gamma3) / Rho - my_dg3dt = d_dlnt(i_gamma3) / T - -! total adiabatic exponents - my_chit = res(i_chiT) - my_dchitdd = d_dlnd(i_chiT) / Rho - my_dchitdt = d_dlnt(i_chiT) / T - - my_chir = res(i_chiRho) - my_dchirdd = d_dlnd(i_chiRho) / Rho - my_dchirdt = d_dlnt(i_chiRho) / T - -! total sound speed - x = my_etot + clight*clight - z = 1.0d0 + x*Rho/my_ptot - xx = 1.0d0/z - ww = x*Rho/my_ptot - dfk = my_g1*xx - my_cs = clight*sqrt(dfk) - yy = 0.5d0*my_cs/dfk - my_dcsdd = yy*((my_dg1dd - dfk)*xx * (my_detotdd*Rho - ww*my_dptotdd + x)/my_ptot) - my_dcsdt = yy*((my_dg1dt - dfk)*xx * (my_detotdt*Rho - ww*my_dptotdt)/my_ptot) - - -! maxwell relations; each is at flaoting point if the consistency is perfect + + my_xne = abar*my_xni*exp(res(i_lnfree_e)) + my_dxnedd = abar*my_xni*exp(res(i_lnfree_e))/Rho*d_dlnd(i_lnfree_e) + abar*my_dxnidd*exp(res(i_lnfree_e)) + my_dxnedt = abar*my_xni*exp(res(i_lnfree_e))/T*d_dlnt(i_lnfree_e) + abar*my_dxnidt*exp(res(i_lnfree_e)) + + my_eta = res(i_eta) + my_detadd = d_dlnd(i_eta)/Rho + my_detadt = d_dlnt(i_eta)/T + + ! total specific heats + my_cv = res(i_Cv) + my_dcvdd = d_dlnd(i_Cv)/Rho + my_dcvdt = d_dlnt(i_Cv)/T + + my_cp = res(i_Cp) + my_dcpdd = d_dlnd(i_Cp)/Rho + my_dcpdt = d_dlnt(i_Cp)/T + + ! total gammas + my_grad = res(i_grad_ad) + my_dgraddd = d_dlnd(i_grad_ad)/Rho + my_dgraddt = d_dlnt(i_grad_ad)/T + + my_g1 = res(i_gamma1) + my_dg1dd = d_dlnd(i_gamma1)/Rho + my_dg1dt = d_dlnt(i_gamma1)/T + + my_g2 = 1.0d0/(1.0d0 - my_grad) + my_dg2dd = my_g2*my_g2*my_dgraddd + my_dg2dt = my_g2*my_g2*my_dgraddt + + my_g3 = res(i_gamma3) + my_dg3dd = d_dlnd(i_gamma3)/Rho + my_dg3dt = d_dlnt(i_gamma3)/T + + ! total adiabatic exponents + my_chit = res(i_chiT) + my_dchitdd = d_dlnd(i_chiT)/Rho + my_dchitdt = d_dlnt(i_chiT)/T + + my_chir = res(i_chiRho) + my_dchirdd = d_dlnd(i_chiRho)/Rho + my_dchirdt = d_dlnt(i_chiRho)/T + + ! total sound speed + x = my_etot + clight*clight + z = 1.0d0 + x*Rho/my_ptot + xx = 1.0d0/z + ww = x*Rho/my_ptot + dfk = my_g1*xx + my_cs = clight*sqrt(dfk) + yy = 0.5d0*my_cs/dfk + my_dcsdd = yy*((my_dg1dd - dfk)*xx*(my_detotdd*Rho - ww*my_dptotdd + x)/my_ptot) + my_dcsdt = yy*((my_dg1dt - dfk)*xx*(my_detotdt*Rho - ww*my_dptotdt)/my_ptot) + + ! maxwell relations; each is at flaoting point if the consistency is perfect dse = T*my_dstotdt/my_detotdt - 1.0d0 dpe = (my_detotdd*Rho*Rho + T*my_dptotdt)/my_ptot - 1.0d0 dsp = -my_dstotdd*(Rho*Rho/my_dptotdt) - 1.0d0 - - - -! and finally some second derivatives - -! pressure - my_dpgasddd = my_pgas/Rho * my_dchirdd - my_dpgasddt = my_pgas/Rho * my_dchirdt - my_dpgasdtt = my_pgas/T * my_dchitdt - + + ! and finally some second derivatives + + ! pressure + my_dpgasddd = my_pgas/Rho*my_dchirdd + my_dpgasddt = my_pgas/Rho*my_dchirdt + my_dpgasdtt = my_pgas/T*my_dchitdt + my_dptotddd = my_dpgasddd + my_dpradddd my_dptotddt = my_dpgasddt + my_dpradddt my_dptotdtt = my_dpgasdtt + my_dpraddtt - -! energy + + ! energy my_detotddd = d_dlnd(i_dE_dRho)/Rho my_detotddt = d_dlnT(i_dE_dRho)/T - my_detotdtt = my_dcvdt - + my_detotdtt = my_dcvdt + my_degasddd = my_detotddd - my_deradddd my_degasddt = my_detotddt - my_deradddt my_degasdtt = my_detotdtt - my_deraddtt - -! entropy + + ! entropy my_dstotddd = d_dlnd(i_dS_dRho)/Rho my_dstotddt = d_dlnT(i_dS_dRho)/T my_dstotdtt = d_dlnT(i_dS_dT)/T - + my_dsgasddd = my_dstotddd - my_dsradddd my_dsgasddt = my_dstotddt - my_dsradddt my_dsgasdtt = my_dstotdtt - my_dsraddtt - - - -! write 'em - - write(6,03) 'T =',T, 'Rho =',Rho, 'abar =',abar, 'zbar =',zbar - write(6,03) 'h1 =',xa(h1), 'he4 =',xa(he4), 'c12 =',xa(c12), 'n14 =',xa(n14) - write(6,03) 'o16 =',xa(o16), 'ne20 =',xa(ne20), 'mg24 =',xa(mg24) - - write(6,*) ' ' - write(6,01) 'quantity','value','d/d(Rho)','d/d(T)','d^2/d(Rho)^2','d^2/d(Rho)d(T)','d^2/d(T)^2' - -! pressure, energy, entropy - write(6,02) 'p tot =', my_ptot, my_dptotdd, my_dptotdt, my_dptotddd, my_dptotddt, my_dptotdtt - write(6,02) 'p gas =', my_pgas, my_dpgasdd, my_dpgasdt, my_dpgasddd, my_dpgasddt, my_dpgasdtt - write(6,02) 'p rad =', my_prad, my_dpraddd, my_dpraddt, my_dpradddd, my_dpradddt, my_dpraddtt - - write(6,'(A)') - write(6,02) 'e tot =', my_etot, my_detotdd, my_detotdt, my_detotddd, my_detotddt, my_detotdtt - write(6,02) 'e gas =', my_egas, my_degasdd, my_degasdt, my_degasddd, my_degasddt, my_degasdtt - write(6,02) 'e rad =', my_erad, my_deraddd, my_deraddt, my_deradddd, my_deradddt, my_deraddtt - - write(6,'(A)') - write(6,02) 's tot =', my_stot, my_dstotdd, my_dstotdt, my_dstotddd, my_dstotddt, my_dstotdtt - write(6,02) 's gas =', my_sgas, my_dsgasdd, my_dsgasdt, my_dsgasddd, my_dsgasddt, my_dsgasdtt - write(6,02) 's rad =', my_srad, my_dsraddd, my_dsraddt, my_dsradddd, my_dsradddt, my_dsraddtt - - -! ion and free electron matter number density, electron degeneracy parameter - write(6,'(A)') - write(6,02) 'n_ion =',my_xni, my_dxnidd, my_dxnidt - write(6,02) 'n_ele =',my_xne, my_dxnedd, my_dxnedt - write(6,02) 'eta_e =',my_eta, my_detadd, my_detadt - -! specific heats, 3 gammas, sound speed, chit and chid for the gas and the total - write(6,02) 'cv =',my_cv, my_dcvdd, my_dcvdt - write(6,02) 'cp =',my_cp, my_dcpdd, my_dcpdt - - write(6,02) 'gamma_1 =',my_g1, my_dg1dd, my_dg1dt - write(6,02) 'gamma_2 =',my_g2, my_dg2dd, my_dg2dt - write(6,02) 'gamma_3 =',my_g3, my_dg3dd, my_dg3dt - write(6,02) 'grad_ad =',my_grad, my_dgraddd, my_dgraddt - - write(6,02) 'chi_t =',my_chit, my_dchitdd, my_dchitdt - write(6,02) 'chi_d =',my_chir, my_dchirdd, my_dchirdt - - write(6,02) 'c_sound =',my_cs, my_dcsdd, my_dcsdt - - write(6,'(A)') - write(6,03) 'dsp =',dse,'dpe =',dpe,'dsp =',dsp - + + ! write 'em + + write (6, fmt3) 'T =', T, 'Rho =', Rho, 'abar =', abar, 'zbar =', zbar + write (6, fmt3) 'h1 =', xa(h1), 'he4 =', xa(he4), 'c12 =', xa(c12), 'n14 =', xa(n14) + write (6, fmt3) 'o16 =', xa(o16), 'ne20 =', xa(ne20), 'mg24 =', xa(mg24) + + write (6, *) ' ' + write (6, fmt1) 'quantity', 'value', 'd/d(Rho)', 'd/d(T)', 'd^2/d(Rho)^2', 'd^2/d(Rho)d(T)', 'd^2/d(T)^2' + + ! pressure, energy, entropy + write (6, fmt2) 'p tot =', my_ptot, my_dptotdd, my_dptotdt, my_dptotddd, my_dptotddt, my_dptotdtt + write (6, fmt2) 'p gas =', my_pgas, my_dpgasdd, my_dpgasdt, my_dpgasddd, my_dpgasddt, my_dpgasdtt + write (6, fmt2) 'p rad =', my_prad, my_dpraddd, my_dpraddt, my_dpradddd, my_dpradddt, my_dpraddtt + + write (6, '(A)') + write (6, fmt2) 'e tot =', my_etot, my_detotdd, my_detotdt, my_detotddd, my_detotddt, my_detotdtt + write (6, fmt2) 'e gas =', my_egas, my_degasdd, my_degasdt, my_degasddd, my_degasddt, my_degasdtt + write (6, fmt2) 'e rad =', my_erad, my_deraddd, my_deraddt, my_deradddd, my_deradddt, my_deraddtt + + write (6, '(A)') + write (6, fmt2) 's tot =', my_stot, my_dstotdd, my_dstotdt, my_dstotddd, my_dstotddt, my_dstotdtt + write (6, fmt2) 's gas =', my_sgas, my_dsgasdd, my_dsgasdt, my_dsgasddd, my_dsgasddt, my_dsgasdtt + write (6, fmt2) 's rad =', my_srad, my_dsraddd, my_dsraddt, my_dsradddd, my_dsradddt, my_dsraddtt + + ! ion and free electron matter number density, electron degeneracy parameter + write (6, '(A)') + write (6, fmt2) 'n_ion =', my_xni, my_dxnidd, my_dxnidt + write (6, fmt2) 'n_ele =', my_xne, my_dxnedd, my_dxnedt + write (6, fmt2) 'eta_e =', my_eta, my_detadd, my_detadt + + ! specific heats, 3 gammas, sound speed, chit and chid for the gas and the total + write (6, fmt2) 'cv =', my_cv, my_dcvdd, my_dcvdt + write (6, fmt2) 'cp =', my_cp, my_dcpdd, my_dcpdt + + write (6, fmt2) 'gamma_1 =', my_g1, my_dg1dd, my_dg1dt + write (6, fmt2) 'gamma_2 =', my_g2, my_dg2dd, my_dg2dt + write (6, fmt2) 'gamma_3 =', my_g3, my_dg3dd, my_dg3dt + write (6, fmt2) 'grad_ad =', my_grad, my_dgraddd, my_dgraddt + + write (6, fmt2) 'chi_t =', my_chit, my_dchitdd, my_dchitdt + write (6, fmt2) 'chi_d =', my_chir, my_dchirdd, my_dchirdt + + write (6, fmt2) 'c_sound =', my_cs, my_dcsdd, my_dcsdt + + write (6, '(A)') + write (6, fmt3) 'dsp =', dse, 'dpe =', dpe, 'dsp =', dsp + end subroutine PrettyOut - - - end program sample_eos - + + end program sample_eos + \ No newline at end of file diff --git a/eos/test/src/test_eos_blend.f90 b/eos/test/src/test_eos_blend.f90 index 3fb5264db..9a4fbd6ef 100644 --- a/eos/test/src/test_eos_blend.f90 +++ b/eos/test/src/test_eos_blend.f90 @@ -11,7 +11,6 @@ module test_eos_blend contains subroutine do_test_eos_blend() - integer :: w real(dp) :: coords(4,2) type(auto_diff_real_2var_order1) :: p(2), d diff --git a/eos/test/src/test_eos_support.f90 b/eos/test/src/test_eos_support.f90 index a8855cef9..6ed01006a 100644 --- a/eos/test/src/test_eos_support.f90 +++ b/eos/test/src/test_eos_support.f90 @@ -45,7 +45,6 @@ subroutine test1_eosPT(Z, X, logPgas, logT, do_compare, quietly, logRho, logP) P, Pgas, Prad, T, Rho, dlnRho_dlnPgas_c_T, dlnRho_dlnT_c_Pgas, & res(num_eos_basic_results), d_dlnd(num_eos_basic_results), & d_dlnT(num_eos_basic_results), & - d_dabar(num_eos_basic_results), d_dzbar(num_eos_basic_results), & res2(num_eos_basic_results), d_dlnd2(num_eos_basic_results), & d_dxa2(num_eos_d_dxa_results, species), & d_dlnT2(num_eos_basic_results) @@ -163,14 +162,9 @@ end subroutine test1_eosPT subroutine Do_One(quietly) logical, intent(in) :: quietly - real(dp) :: T, rho, log10_rho, log10_T - real(dp), dimension(num_eos_basic_results) :: res, d_dlnd, d_dlnT - integer :: info, i - real(dp) :: XC, XO, Ah, Zh, Yh, Ahe, Zhe, Yhe, Az, Zz, Yz, ddabar, ddzbar, & - helm_ddXh, helm_ddXz, opal_ddXh, opal_ddXz, XC0, XO0, & - helm_P, helm_PX, helm_PZ, opal_P, opal_PX, opal_PZ, X1, X2, Z1, Z2, & - abar1, zbar1, dXC, dlnP_dabar, dlnP_dzbar, dlnP_dXC, & - dabar_dZ, dzbar_dZ, dlnP_dZ, P, logRhoguess + real(dp) :: T, rho + real(dp), dimension(num_eos_basic_results) :: res + real(dp) :: dXC if (.true.) then ! pure Helium @@ -246,10 +240,9 @@ subroutine doit(str) subroutine test_get_Rho_T ! using most recent values from subroutine Do_One_TRho real(dp) :: tol, othertol, & result, result_log10, log10_T, log10_rho, lnS, Prad, Pgas, logP, & - clipped_log10rho, clipped_log10temp, & logRho_guess, logRho_bnd1, logRho_bnd2, other_at_bnd1, other_at_bnd2, & logT_guess, logT_bnd1, logT_bnd2 - integer :: i, which_other, max_iter, eos_calls, ierr + integer :: max_iter, eos_calls, ierr real(dp), dimension(num_eos_basic_results) :: & d_dlnd, d_dlnT real(dp), dimension(num_eos_d_dxa_results, species) :: & @@ -380,7 +373,7 @@ subroutine test1_eosPT_get_T real(dp) :: & energy, abar, zbar, X, Z, logPgas, logT_tol, other_tol, other, & logT_guess, logT_bnd1, logT_bnd2, other_at_bnd1, other_at_bnd2, & - logT_result, new_energy, & + logT_result, & res(num_eos_basic_results), d_dlnd(num_eos_basic_results), & d_dxa(num_eos_d_dxa_results, species), & d_dlnT(num_eos_basic_results), & @@ -458,7 +451,7 @@ end subroutine test1_eosPT_get_T subroutine test_components real(dp) :: & X_test, Z, XC_test, XO_test, & - logT, logRho, Pgas, Prad, energy, entropy + logT, logRho, Pgas, energy, entropy real(dp), dimension(num_eos_basic_results) :: & res, d_dlnd, d_dlnT integer:: ierr @@ -531,7 +524,7 @@ subroutine test1_eosDT_get_T_given_egas real(dp) :: & X, Z, abar, zbar, logRho, egas_want, egas_tol, logT_tol, logT_guess, & logT_bnd1, logT_bnd2, egas_at_bnd1, egas_at_bnd2, logT_result, erad, egas, energy, & - res(num_eos_basic_results), d_dlnd(num_eos_basic_results), Pgas, logPgas, & + res(num_eos_basic_results), d_dlnd(num_eos_basic_results), & d_dxa(num_eos_d_dxa_results, species), & d_dlnT(num_eos_basic_results) integer:: ierr, eos_calls, max_iter @@ -622,7 +615,7 @@ subroutine Do_One_TRho(quietly,T,Rho,X,Zinit,dXC,dXO,Y,Z,res) real(dp), dimension(num_eos_d_dxa_results, species) :: & d_dxa integer :: info, i - real(dp) :: dlnT, dlnRho, lnRho_2, Prad, Pgas, P + real(dp) :: Prad, Pgas, P 101 format(a30,4x,1pe24.16) 102 format(a30,3x,1pe24.16) @@ -691,7 +684,7 @@ end subroutine Do_One_TRho subroutine test_dirac_integrals - real(dp) :: dk, T, eta, theta, fdph, fdmh, fdeta, fdtheta, theta_e + real(dp) :: T, eta, theta, fdph, fdmh, fdeta, fdtheta, theta_e 1 format(a40,1pe26.16) eta = 1.46722890948893d0 T = 11327678.5183021d0 diff --git a/forum/.gitignore b/forum/.gitignore new file mode 100644 index 000000000..bc36cecbb --- /dev/null +++ b/forum/.gitignore @@ -0,0 +1 @@ +forum diff --git a/forum/build_and_test b/forum/build_and_test new file mode 100755 index 000000000..39902ed56 --- /dev/null +++ b/forum/build_and_test @@ -0,0 +1,7 @@ +#!/bin/bash + +rm -rf forum +tar xf forum-1.0.3.tar.gz +mv forum-1.0.3 forum + +../utils/build_and_test diff --git a/forum/build_and_test_parallel b/forum/build_and_test_parallel new file mode 100755 index 000000000..44a4bd7f5 --- /dev/null +++ b/forum/build_and_test_parallel @@ -0,0 +1,8 @@ +#!/bin/bash + +rm -rf forum +tar xf forum-1.0.3.tar.gz +mv forum-1.0.3 forum + +../utils/build_and_test_parallel + diff --git a/forum/clean b/forum/clean new file mode 100755 index 000000000..356f57db5 --- /dev/null +++ b/forum/clean @@ -0,0 +1 @@ +cd make; make clean diff --git a/hdf5io/export b/forum/export similarity index 100% rename from hdf5io/export rename to forum/export diff --git a/forum/forum-1.0.3.tar.gz b/forum/forum-1.0.3.tar.gz new file mode 100644 index 000000000..bb5dbc557 --- /dev/null +++ b/forum/forum-1.0.3.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fd4fb5b9f889b3733a959e40a4de50f2687b2b6938c8c157df5e15a77e2e6fd +size 32560 diff --git a/hdf5io/i1 b/forum/i1 similarity index 100% rename from hdf5io/i1 rename to forum/i1 diff --git a/hdf5io/i1p b/forum/i1p similarity index 100% rename from hdf5io/i1p rename to forum/i1p diff --git a/forum/install b/forum/install new file mode 100755 index 000000000..9026e932d --- /dev/null +++ b/forum/install @@ -0,0 +1,8 @@ +./build_and_test +if [ $? -ne 0 ] +then + exit 1 +fi +echo "export" +./export +echo "done" \ No newline at end of file diff --git a/hdf5io/make/makefile b/forum/make/makefile similarity index 100% rename from hdf5io/make/makefile rename to forum/make/makefile diff --git a/forum/make/makefile_base b/forum/make/makefile_base new file mode 100644 index 000000000..c83e1ff57 --- /dev/null +++ b/forum/make/makefile_base @@ -0,0 +1,37 @@ +# This is the makefile for the forum library + +MESA_DIR = ../.. + +################################################################# +# +# PREAMBLE + +include $(MESA_DIR)/utils/makefile_header + +################################################################# +# +# Hand off to ForUM build system + +MESA_LIB_DIR = $(MESA_DIR)/lib +MESA_INC_DIR = $(MESA_DIR)/include + +FORUM_DIR = ../forum + +ifeq ($(USE_SHARED), YES) + export SHARED = yes +else + export SHARED = no +endif + +all: + @$(MAKE) --no-print-directory -C $(FORUM_DIR) install + +install: + @$(CP_IF_NEWER) $(FORUM_DIR)/include/forum_m.mod $(MESA_INC_DIR)/ + @$(CP_IF_NEWER) $(FORUM_DIR)/include/forum.inc $(MESA_INC_DIR)/ + @$(CP_IF_NEWER) $(FORUM_DIR)/lib/libforum.a $(MESA_LIB_DIR)/ + +clean: + @$(MAKE) --no-print-directory -C $(FORUM_DIR) $@ + +.PHONY: install clean diff --git a/hdf5io/mk b/forum/mk similarity index 100% rename from hdf5io/mk rename to forum/mk diff --git a/hdf5io/test/ck b/forum/test/ck similarity index 66% rename from hdf5io/test/ck rename to forum/test/ck index 9f0a28cc1..2ef1f96b9 100755 --- a/hdf5io/test/ck +++ b/forum/test/ck @@ -1,2 +1 @@ ./../../utils/test/ck -rm test.h5 diff --git a/forum/test/clean b/forum/test/clean new file mode 100755 index 000000000..e69de29bb diff --git a/hdf5io/test/clean b/forum/test/cleanup similarity index 50% rename from hdf5io/test/clean rename to forum/test/cleanup index fe8d63c0c..22f65cbab 100755 --- a/hdf5io/test/clean +++ b/forum/test/cleanup @@ -1,2 +1,2 @@ -cd make +cd ../make make clean diff --git a/hdf5io/test/export b/forum/test/export similarity index 100% rename from hdf5io/test/export rename to forum/test/export diff --git a/forum/test/mk b/forum/test/mk new file mode 100755 index 000000000..e69de29bb diff --git a/forum/test/rn b/forum/test/rn new file mode 100755 index 000000000..818a9d425 --- /dev/null +++ b/forum/test/rn @@ -0,0 +1,4 @@ +#!/bin/bash + +../forum/bin/test_order + diff --git a/forum/test/test_output b/forum/test/test_output new file mode 100644 index 000000000..041979488 --- /dev/null +++ b/forum/test/test_output @@ -0,0 +1,14 @@ + locate (left) + PASS 1 + PASS 2 + PASS 3 + PASS 4 + PASS 5 + PASS 6 + locate (right) + PASS 1 + PASS 2 + PASS 3 + PASS 4 + PASS 5 + PASS 6 diff --git a/gyre/.gitignore b/gyre/.gitignore index ecfc2bb72..f0c58f329 100644 --- a/gyre/.gitignore +++ b/gyre/.gitignore @@ -1,2 +1,3 @@ gyre/ -public/gyre_lib.f +public/gyre_mesa_m.f90 + diff --git a/gyre/build_and_test b/gyre/build_and_test index 1adc8c2fa..7b88598b4 100755 --- a/gyre/build_and_test +++ b/gyre/build_and_test @@ -1,8 +1,7 @@ #!/bin/bash -if [[ ! -d gyre ]]; then - tar xf gyre-7.1.tar.gz - mv gyre-7.1 gyre -fi +rm -rf gyre +tar xf gyre-7.2.1.tar.gz +mv gyre-7.2.1 gyre ../utils/build_and_test diff --git a/gyre/build_and_test_parallel b/gyre/build_and_test_parallel index c22bff1c6..78586c092 100755 --- a/gyre/build_and_test_parallel +++ b/gyre/build_and_test_parallel @@ -1,8 +1,7 @@ #!/bin/bash -if [[ ! -d gyre ]]; then - tar xf gyre-7.1.tar.gz - mv gyre-7.1 gyre -fi +rm -rf gyre +tar xf gyre-7.2.1.tar.gz +mv gyre-7.2.1 gyre ../utils/build_and_test_parallel diff --git a/gyre/gyre-7.1.tar.gz b/gyre/gyre-7.1.tar.gz deleted file mode 100644 index d8c57e12a..000000000 --- a/gyre/gyre-7.1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0416b8402c39aa9e65be8959cc8839a4734cfb10ce56e8db501e768d62a7f507 -size 4803785 diff --git a/gyre/gyre-7.2.1.tar.gz b/gyre/gyre-7.2.1.tar.gz new file mode 100644 index 000000000..2a9d470ca --- /dev/null +++ b/gyre/gyre-7.2.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d7c1742c662cf47e640edae588857b1835262b87101bc9e6333e38085816573 +size 4791341 diff --git a/gyre/make/makefile_full b/gyre/make/makefile_full index 84df8679f..f6b277863 100644 --- a/gyre/make/makefile_full +++ b/gyre/make/makefile_full @@ -10,97 +10,37 @@ include $(MESA_DIR)/utils/makefile_header ################################################################# # -# SOURCES +# Hand off to GYRE build system -SRCS = gyre_lib.f90 +MESA_LIB_DIR = $(MESA_DIR)/lib +MESA_INC_DIR = $(MESA_DIR)/include +GYRE_DIR = ../gyre +export FRONTENDS = no +export TOOLS = no +export FORUM = no +export IFACES = yes -################################################################# -# -# LIBRARIES +export FORUM_LIB_DIR = ../$(MESA_LIB_DIR) +export FORUM_INC_DIR = ../$(MESA_INC_DIR) ifeq ($(USE_SHARED), YES) - LIBS_OTHER = $(LIBS_MATRIX) - DEPS_OTHER = $(patsubst %,$(MESA_LIB_DIR)/lib%.$(LIB_SUFFIX),$(LIBS_OTHER)) - LOAD_OTHER = -L$(MESA_LIB_DIR) $(LOAD_MATRIX) -endif - -################################################################# -# -# TARGETS - -LIB = libgyre.$(LIB_SUFFIX) - -OBJS = $(patsubst %.f,%.o,$(patsubst %.f90,%.o,$(SRCS))) - -$(LIB) : $(OBJS) $(DEPS_OTHER) -ifneq ($(QUIET),) - @echo LIB_TOOL $(LIB) - @$(LIB_TOOL) $(LIB) *.o $(LOAD_OTHER) + export SHARED = yes else - $(LIB_TOOL) $(LIB) *.o $(LOAD_OTHER) + export SHARED = no endif -clean: - -@rm -f *.o *.f90 *.fpp *.mod .depend *.so *.a ../public/gyre_lib.f +all : + @$(MAKE) --no-print-directory -C $(GYRE_DIR) install install: - @$(CP_IF_NEWER) gyre_lib.f90 ../public/gyre_lib.f - @$(CP_IF_NEWER) gyre_lib.mod $(MESA_DIR)/include - @$(CP_IF_NEWER) $(LIB) $(MESA_DIR)/lib - -################################################################# -# -# COMPILATION RULES + @$(CP_IF_NEWER) $(GYRE_DIR)/build/gyre_mesa_m.f90 ../public/ + @$(CP_IF_NEWER) $(GYRE_DIR)/build/gyre_mesa_m.mod $(MESA_INC_DIR)/ + @$(CP_IF_NEWER) $(GYRE_DIR)/build/libgyre.a $(MESA_LIB_DIR)/ + @$(CP_IF_NEWER) $(GYRE_DIR)/build/libgyre_mesa.a $(MESA_LIB_DIR)/ -GYRE_DIRS = $(subst $(eval) ,:,$(shell test -d ../gyre && find ../gyre/src -type d)) - -COMPILE = $(COMPILE_TO_DEPLOY) $(FCfree) -Wno-uninitialized -L$(MESA_DIR)/lib -lconst $(LOAD_MATRIX) -#COMPILE = $(COMPILE_TO_TEST) $(FCfree) -Wno-uninitialized - -FPX3FLAGS = -DOMP -DHDF5 -DDOUBLE_PRECISION -I.:$(GYRE_DIRS):../gyre/src/mesa - -ifeq ($(USE_OPENMP),YES) -FPX3FLAGS := $(FPX3FLAGS) -DOMP -endif - -.PRECIOUS : %.f90 - -%.o : %.mod - -%.f90 : %.fpp - @fpx3 $(FPX3FLAGS) < $< > $@ - -%.o %.mod : %.f90 - @echo FC $< - @$(COMPILE) -c $< - @if [ -e $(basename $@).mod ]; then touch $(basename $@).mod; fi - -ifeq ($(USE_CRMATH),yes) -gyre_math.fpp: gyre_math_crmath.fpp - @ln -sf $< $@ -else -gyre_math.fpp: gyre_math_intrinsic.fpp - @ln -sf $< $@ -endif - -.INTERMEDIATE: gyre_math.fpp - -.depend: gyre_math.fpp - -################################################################# -# -# DEPENDENCIES - -vpath %.fpp $(GYRE_DIRS) -vpath %.inc $(GYRE_DIRS) -vpath %.f $(GYRE_DIRS) - -ifneq ($(MAKECMDGOALS),clean) --include .depend -endif +clean: + @$(MAKE) --no-print-directory -C $(GYRE_DIR) $@ -.depend : - @echo FPX3_DEPS - @$(shell fpx3_deps $(FPX3FLAGS) gyre_lib > .depend ) +.PHONY: install clean diff --git a/gyre/make/makefile_stub b/gyre/make/makefile_stub index 075c94de7..3b3ff8639 100644 --- a/gyre/make/makefile_stub +++ b/gyre/make/makefile_stub @@ -12,7 +12,7 @@ include $(MESA_DIR)/utils/makefile_header # # SOURCES -SRCS = gyre_lib_stub.f +SRCS = gyre_mesa_m_stub.f90 ################################################################# # @@ -28,7 +28,7 @@ endif # # TARGETS -LIB = libgyre.$(LIB_SUFFIX) +LIB = libgyre_mesa.$(LIB_SUFFIX) OBJS = $(patsubst %.f,%.o,$(patsubst %.f90,%.o,$(SRCS))) @@ -41,10 +41,10 @@ else endif clean: - -@rm -f *.o *.f90 *.fpp *.mod .depend *.so *.a ../public/gyre_lib.f + -@rm -f *.o *.f90 *.fpp *.mod .depend *.so *.a ../public/gyre_mesa_m.f90 install: - @$(CP_IF_NEWER) gyre_lib.mod $(MESA_DIR)/include + @$(CP_IF_NEWER) gyre_mesa_m.mod $(MESA_DIR)/include @$(CP_IF_NEWER) $(LIB) $(MESA_DIR)/lib ################################################################# @@ -54,7 +54,7 @@ install: COMPILE = $(COMPILE_TO_DEPLOY) $(FCfree) #COMPILE = $(COMPILE_TO_TEST) $(FCfree) -%.o : %.f +%.o : %.f90 ifneq ($(QUIET),) @echo COMPILE $< @$(COMPILE) $< @@ -66,6 +66,6 @@ endif # # DEPENDENCIES -SRC_PATH = $(MOD_PUBLIC_DIR):$(MOD_PRIVATE_DIR) +SRC_PATH = $(MOD_PUBLIC_DIR) -vpath %.f $(SRC_PATH) +vpath %.f90 $(SRC_PATH) diff --git a/gyre/private/.empty b/gyre/private/.empty new file mode 100644 index 000000000..e69de29bb diff --git a/gyre/public/gyre_lib_stub.f b/gyre/public/gyre_lib_stub.f deleted file mode 100644 index 0d562b58a..000000000 --- a/gyre/public/gyre_lib_stub.f +++ /dev/null @@ -1,183 +0,0 @@ -! This stub fakes enough of GYRE to make sure that test cases can -! optionally use GYRE without failing to compile on systems built with -! USE_GYRE=NO in utils/makefile_header. - -module gyre_lib ! stub - - implicit none - - integer, parameter :: WP = KIND(0.D0) - - type :: point_t - integer :: s - real(WP) :: x - end type point_t - - type :: grid_t - type(point_t), allocatable :: pt(:) - integer :: n_k - end type grid_t - - type :: wave_t - type(grid_t), allocatable :: gr - integer :: n - contains - procedure, public :: freq - procedure, public :: grid - procedure, public :: xi_r - procedure, public :: xi_h - procedure, public :: dW_dx - end type wave_t - - type, extends (wave_t) :: mode_t - integer :: n_pg - integer :: n_p - integer :: n_g - end type mode_t - - interface gyre_set_constant - module procedure gyre_set_constant_r_ - module procedure gyre_set_constant_c_ - end interface gyre_set_constant - -contains - - function xi_r (this, k) - - class(wave_t), intent(in) :: this - integer, intent(in) :: k - complex(WP) :: xi_r - - xi_r = 0._WP - - end function xi_r - - !**** - - function xi_h (this, k) - - class(wave_t), intent(in) :: this - integer, intent(in) :: k - complex(WP) :: xi_h - - xi_h = 0._WP - - end function xi_h - - !**** - - function dW_dx (this, k) - - class(wave_t), intent(in) :: this - integer, intent(in) :: k - real(WP) :: dW_dx - - dW_dx = 0._WP - - end function dW_dx - - !**** - - function freq (this, freq_units, freq_frame) - - class(wave_t), intent(in) :: this - character(*), intent(in) :: freq_units - character(*), optional, intent(in) :: freq_frame - complex(WP) :: freq - - freq = 0._WP - - end function freq - - !**** - - function grid (this) result (gr) - - class(wave_t), intent(in) :: this - type(grid_t) :: gr - - ! Return the wave's grid - - gr = this%gr - - ! Finish - - return - - end function grid - - !**** - - subroutine gyre_init (file) - - character(*), intent(in) :: file - write(*,*) '' - write(*,*) 'WARNING: You are initializing the stub version of GYRE, which means' - write(*,*) 'that MESA was installed without the embedded interfaces to GYRE.' - write(*,*) 'Calls to GYRE in this run will not produce useful output.' - write(*,*) '' - - end subroutine gyre_init - - !**** - - subroutine gyre_final() - end subroutine gyre_final - - !**** - - subroutine gyre_read_model (file) - - character(LEN=*), intent(in) :: file - - end subroutine gyre_read_model - - !**** - - subroutine gyre_set_model (global_data, point_data, version) - - real(WP), intent(in) :: global_data(:) - real(WP), intent(in) :: point_data(:,:) - integer, intent(in) :: version - - end subroutine gyre_set_model - - !**** - - subroutine gyre_get_modes (l, user_sub, ipar, rpar) - - integer, intent(in) :: l - interface - subroutine user_sub (md, ipar, rpar, retcode) - import mode_t - import WP - type(mode_t), intent(in) :: md - integer, intent(inout) :: ipar(:) - real(WP), intent(inout) :: rpar(:) - integer, intent(out) :: retcode - end subroutine user_sub - end interface - integer, intent(inout) :: ipar(:) - real(WP), intent(inout) :: rpar(:) - - end subroutine gyre_get_modes - - !**** - - subroutine gyre_set_constant_r_ (name, value) - - character(*), intent(in) :: name - real(WP), intent(in) :: value - - end subroutine gyre_set_constant_r_ - - !**** - - subroutine gyre_set_constant_c_ (name, value) - - character(*), intent(in) :: name - character(*), intent(in) :: value - - end subroutine gyre_set_constant_c_ - -end module gyre_lib ! stub diff --git a/gyre/public/gyre_mesa_m_stub.f90 b/gyre/public/gyre_mesa_m_stub.f90 new file mode 100644 index 000000000..d5d9bea4d --- /dev/null +++ b/gyre/public/gyre_mesa_m_stub.f90 @@ -0,0 +1,184 @@ +! This stub fakes enough of GYRE to make sure that test cases can +! optionally use GYRE without failing to compile on systems built with +! USE_GYRE=NO in utils/makefile_header. + +module gyre_mesa_m ! stub + + use forum_m, only: RD + + implicit none + + type :: point_t + integer :: s + real(RD) :: x + end type point_t + + type :: grid_t + type(point_t), allocatable :: pt(:) + integer :: n_k + end type grid_t + + type :: wave_t + type(grid_t), allocatable :: gr + integer :: n + contains + procedure, public :: freq + procedure, public :: grid + procedure, public :: xi_r + procedure, public :: xi_h + procedure, public :: dW_dx + end type wave_t + + type, extends (wave_t) :: mode_t + integer :: n_pg + integer :: n_p + integer :: n_g + end type mode_t + + interface set_constant + module procedure set_constant_r_ + module procedure set_constant_c_ + end interface set_constant + +contains + + function xi_r(this, k) + + class(wave_t), intent(in) :: this + integer, intent(in) :: k + complex(RD) :: xi_r + + xi_r = 0._RD + + end function xi_r + + !**** + + function xi_h(this, k) + + class(wave_t), intent(in) :: this + integer, intent(in) :: k + complex(RD) :: xi_h + + xi_h = 0._RD + + end function xi_h + + !**** + + function dW_dx(this, k) + + class(wave_t), intent(in) :: this + integer, intent(in) :: k + real(RD) :: dW_dx + + dW_dx = 0._RD + + end function dW_dx + + !**** + + function freq(this, freq_units, freq_frame) + + class(wave_t), intent(in) :: this + character(*), intent(in) :: freq_units + character(*), optional, intent(in) :: freq_frame + complex(RD) :: freq + + freq = 0._RD + + end function freq + + !**** + + function grid(this) result (gr) + + class(wave_t), intent(in) :: this + type(grid_t) :: gr + + ! Return the wave's grid + + gr = this%gr + + ! Finish + + return + + end function grid + + !**** + + subroutine init(file) + + character(*), intent(in) :: file + write(*,*) '' + write(*,*) 'WARNING: You are initializing the stub version of GYRE, which means' + write(*,*) 'that MESA was installed without the embedded interfaces to GYRE.' + write(*,*) 'Calls to GYRE in this run will not produce useful output.' + write(*,*) '' + + end subroutine init + + !**** + + subroutine final() + end subroutine final + + !**** + + subroutine read_model (file) + + character(LEN=*), intent(in) :: file + + end subroutine read_model + + !**** + + subroutine set_model (global_data, point_data, version) + + real(RD), intent(in) :: global_data(:) + real(RD), intent(in) :: point_data(:,:) + integer, intent(in) :: version + + end subroutine set_model + + !**** + + subroutine get_modes (l, user_sub, ipar, rpar) + + integer, intent(in) :: l + interface + subroutine user_sub (md, ipar, rpar, retcode) + import mode_t + import RD + type(mode_t), intent(in) :: md + integer, intent(inout) :: ipar(:) + real(RD), intent(inout) :: rpar(:) + integer, intent(out) :: retcode + end subroutine user_sub + end interface + integer, intent(inout) :: ipar(:) + real(RD), intent(inout) :: rpar(:) + + end subroutine get_modes + + !**** + + subroutine set_constant_r_ (name, value) + + character(*), intent(in) :: name + real(RD), intent(in) :: value + + end subroutine set_constant_r_ + + !**** + + subroutine set_constant_c_ (name, value) + + character(*), intent(in) :: name + character(*), intent(in) :: value + + end subroutine set_constant_c_ + +end module gyre_mesa_m ! stub + diff --git a/gyre/test/make/makefile_base b/gyre/test/make/makefile_base index 3905a3f7b..9cdf14ce7 100644 --- a/gyre/test/make/makefile_base +++ b/gyre/test/make/makefile_base @@ -12,23 +12,32 @@ include $(MESA_DIR)/utils/makefile_header # # SOURCES -ifeq ($(USE_GYRE),NO) - SRCS = test_gyre_stub.f -else +ifeq ($(USE_GYRE),YES) SRCS = test_gyre.f +else + SRCS = test_gyre_stub.f endif ################################################################# # # LIBRARIES -LIBS_LOCAL = gyre +ifeq ($(USE_GYRE),YES) + LOCAL_LIB_DIR = ../../gyre/lib + LOCAL_INC_DIR = ../../gyre/include + LIBS_LOCAL = gyre_mesa gyre +else + LOCAL_LIB_DIR = ../../make + LOCAL_INC_DIR = ../../make + LIBS_LOCAL = gyre_mesa +endif + DEPS_LOCAL = $(patsubst %,$(LOCAL_LIB_DIR)/lib%.$(LIB_SUFFIX),$(LIBS_LOCAL)) LOAD_LOCAL = -L$(LOCAL_LIB_DIR) $(addprefix -l,$(LIBS_LOCAL)) -LIBS_OTHER = $(LIBS_MATRIX) +LIBS_OTHER = $(LIBS_MATRIX) $(LIBS_MESA_NUMERICS) DEPS_OTHER = $(patsubst %,$(MESA_LIB_DIR)/lib%.$(LIB_SUFFIX),$(LIBS_OTHER)) -LOAD_OTHER = -L$(MESA_LIB_DIR) $(LOAD_MATRIX) $(LOAD_HDF5) +LOAD_OTHER = -L$(MESA_LIB_DIR) $(LOAD_MATRIX) $(LOAD_MESA_NUMERICS) ################################################################# # @@ -58,9 +67,9 @@ nodeps : $(.DEFAULT_GOAL) %.o: %.f ifneq ($(QUIET),) @echo TEST_COMPILE $< - @$(TEST_COMPILE) $(FCfree) $< + @$(TEST_COMPILE) $(FCfree) -I$(LOCAL_INC_DIR) $< else - $(TEST_COMPILE) $(FCfree) $< + $(TEST_COMPILE) $(FCfree) -I$(LOCAL_INC_DIR) $< endif ################################################################# @@ -71,7 +80,7 @@ SRC_PATH = ../src vpath %.f $(SRC_PATH) -vpath %.mod $(LOCAL_LIB_DIR):$(MESA_DIR)/include +vpath %.mod $(LOCAL_INC_DIR):$(MESA_DIR)/include NODEPS = $(or $(filter nodeps,$(MAKECMDGOALS)),$(filter clean,$(MAKECMDGOALS))) diff --git a/gyre/test/src/test_gyre.f b/gyre/test/src/test_gyre.f index 872c9343b..f9fb6c471 100644 --- a/gyre/test/src/test_gyre.f +++ b/gyre/test/src/test_gyre.f @@ -1,7 +1,7 @@ module test_gyre_mod use const_def, only : dp, mesa_dir - use gyre_lib + use gyre_mesa_m implicit none @@ -15,22 +15,21 @@ subroutine do_test () integer :: ipar(1) real(dp) :: rpar(1) - integer :: retcode ! Initialize - call gyre_init('gyre.in') + call init('gyre.in') - call gyre_set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') + call set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') ! Read a model from file - call gyre_read_model('model.dat') + call read_model('model.dat') ! Find modes - call gyre_get_modes(0, user_sub, ipar, rpar) - call gyre_get_modes(1, user_sub, ipar, rpar) + call get_modes(0, user_sub, ipar, rpar) + call get_modes(1, user_sub, ipar, rpar) write(*,*) 'done file model' @@ -38,12 +37,12 @@ subroutine do_test () call load_model('model.dat', global_data, point_data, version) - call gyre_set_model(global_data, point_data, version) + call set_model(global_data, point_data, version) ! Find modes - call gyre_get_modes(0, user_sub, ipar, rpar) - call gyre_get_modes(1, user_sub, ipar, rpar) + call get_modes(0, user_sub, ipar, rpar) + call get_modes(1, user_sub, ipar, rpar) write(*,*) 'done memory model' @@ -58,10 +57,6 @@ subroutine user_sub (md, ipar, rpar, retcode) real(dp), intent(inout) :: rpar(:) integer, intent(out) :: retcode - integer :: n_p - integer :: n_g - integer :: n_pg - ! Print out mode info write(*,*) md%md_p%l, md%n_p, md%n_g, md%n_pg, REAL(md%freq('UHZ')), md%E_norm() diff --git a/hdf5io/build_and_test b/hdf5io/build_and_test deleted file mode 100755 index e02a156fe..000000000 --- a/hdf5io/build_and_test +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -../utils/build_and_test diff --git a/hdf5io/build_and_test_parallel b/hdf5io/build_and_test_parallel deleted file mode 100755 index 2b3599335..000000000 --- a/hdf5io/build_and_test_parallel +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -../utils/build_and_test_parallel diff --git a/hdf5io/clean b/hdf5io/clean deleted file mode 100755 index 6957bce5c..000000000 --- a/hdf5io/clean +++ /dev/null @@ -1,2 +0,0 @@ -cd make; make clean -cd ../test/make; make clean \ No newline at end of file diff --git a/hdf5io/make/makefile_base b/hdf5io/make/makefile_base deleted file mode 100644 index 4ea19e008..000000000 --- a/hdf5io/make/makefile_base +++ /dev/null @@ -1,114 +0,0 @@ -# This is the makefile for the mesa atm library - -MESA_DIR = ../.. - -################################################################# -# -# PREAMBLE - -include $(MESA_DIR)/utils/makefile_header - -################################################################# -# -# SOURCES - -SRCS = \ - hdf5io_lib.f90 \ - kinds_m.f90 \ - hdf5io_m.f90 \ - cinter_m.f90 - -################################################################# -# -# LIBRARIES - -ifeq ($(USE_SHARED), YES) - LIBS_OTHER = - DEPS_OTHER = - LOAD_OTHER = -endif - -################################################################# -# -# TARGETS - -LIB = libhdf5io.$(LIB_SUFFIX) - -OBJS = $(patsubst %.f,%.o,$(patsubst %.f90,%.o,$(SRCS))) - -$(LIB) : $(OBJS) $(DEPS_OTHER) -ifneq ($(QUIET),) - @echo LIB_TOOL $(LIB) - @$(LIB_TOOL) $(LIB) $(OBJS) $(LOAD_OTHER) -else - $(LIB_TOOL) $(LIB) $(OBJS) $(LOAD_OTHER) -endif - -clean: - -@rm -f *.o *.mod *genmod.f90 *.so *.a .depend *.smod - -install: - @$(CP_IF_NEWER) hdf5io_lib.mod $(MESA_DIR)/include - @$(CP_IF_NEWER) $(LIB) $(MESA_DIR)/lib - -nodeps : $(.DEFAULT_GOAL) - -################################################################# -# -# COMPILATION RULES - -COMPILE = $(COMPILE_TO_DEPLOY) -#COMPILE = $(COMPILE_TO_TEST) - -#COMPILE = $(COMPILE_NO_OPENMP_NO_OPT) - -COMPILE_CMD = $(COMPILE) $(FCfree) - -%.o : %.mod - -%.o : %.f -ifneq ($(QUIET),) - @echo COMPILE_CMD $< - @$(COMPILE_CMD) $< -else - $(COMPILE_CMD) $< -endif - -%.o : %.f90 -ifneq ($(QUIET),) - @echo COMPILE_CMD $< - @$(COMPILE_CMD) $< -else - $(COMPILE_CMD) $< -endif - -%.mod : %.o - @true - -################################################################# -# -# DEPENDENCIES - -SRC_PATH = $(MOD_PUBLIC_DIR):$(MOD_PRIVATE_DIR) - -vpath %.f $(SRC_PATH) -vpath %.f90 $(SRC_PATH) -vpath %.dek $(SRC_PATH) - -vpath %.mod $(MESA_DIR)/include - -NODEPS = $(or $(filter nodeps,$(MAKECMDGOALS)),$(filter clean,$(MAKECMDGOALS))) - -ifeq ($(NODEPS),) - - .depend : - ifneq ($(QUIET),) - @echo MAKEDEPF90 - @$(MAKEDEPF90) -I$(SRC_PATH) $(SRCS) > .depend - else - $(MAKEDEPF90) -I$(SRC_PATH) $(SRCS) > .depend - endif - - -include .depend - -endif diff --git a/hdf5io/private/README b/hdf5io/private/README deleted file mode 100644 index 92534f41d..000000000 --- a/hdf5io/private/README +++ /dev/null @@ -1,16 +0,0 @@ -NOTE: the .fypp and .inc files are copied from the ForUM project -(https://github.com/rhdtownsend/forum). They are designed to be -processed using the fypp preprocessor -(https://github.com/aradi/fypp). This can be done by running the -regen_src script - -Given that not all users will have fypp installed, for now we're -storing both .fypp/.inc *and* .f90 files in the repo. Longer term, we -may want to add fypp to the MESA SDK, allowing us to ship only the -.fypp/.inc files. - -TL;DR: Don't edit the .f90 files, edit the .fypp/.inc files and run -fypp. - -Rich Townsend -February 2021 diff --git a/hdf5io/private/cinter_m.f90 b/hdf5io/private/cinter_m.f90 deleted file mode 100644 index 53dbe6d08..000000000 --- a/hdf5io/private/cinter_m.f90 +++ /dev/null @@ -1,206 +0,0 @@ -! Module : cinter_m -! Purpose : C interoperability support -! -! Copyright 2021 Rich Townsend -! -! This file is part of the ForUM (Fortran Utility Modules) -! package. ForUM is free software: you can redistribute it and/or -! modify it under the terms of the GNU General Public License as -! published by the Free Software Foundation, version 3. -! -! ForUM is distributed in the hope that it will be useful, but WITHOUT -! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -! License for more details. -! -! You should have received a copy of the GNU General Public License -! along with this program. If not, see . - - - - - - - - - - - - - - - - - - - - - - - - -module cinter_m - - ! Uses - - use kinds_m - - use ISO_FORTRAN_ENV - use ISO_C_BINDING - - ! No implicit typing - - implicit none - - ! Interfaces - - interface c_f_len - module procedure c_f_len_arr_ - module procedure c_f_len_ptr_ - end interface c_f_len - - interface c_f_string - module procedure c_f_string_arr_ - module procedure c_f_string_ptr_ - end interface c_f_string - - ! Access specifiers - - private - - public :: c_f_len - public :: c_f_string - - ! Procedures - -contains - - function c_f_len_arr_(c_str) result (f_len) - - character(C_CHAR) :: c_str(*) - integer :: f_len - - integer :: i - - ! Determine the Fortran length of the C string (expressed as an - ! assumed-size array of C_CHARs, terminated by a NULL) - - i = 1 - - len_loop : do - if (c_str(i) == C_NULL_CHAR) exit len_loop - i = i + 1 - end do len_loop - - f_len = i - 1 - - ! Finish - - return - - end function c_f_len_arr_ - - !**** - - function c_f_len_ptr_(c_str) result (f_len) - - type(C_PTR), value :: c_str - integer :: f_len - - character(C_CHAR), pointer :: p(:) - integer :: i - - ! Determine the Fortran length of the C string (expressed as a - ! pointer to a NULL-termninated sequence) - - if (C_ASSOCIATED(c_str)) then - - call c_f_pointer(c_str, p, [HUGE(0)]) - - i = 1 - - len_loop : do - if (p(i) == C_NULL_CHAR) exit len_loop - i = i + 1 - end do len_loop - - f_len = i - 1 - - else - - f_len = 0 - - endif - - ! Finish - - return - - end function c_f_len_ptr_ - - !**** - - function c_f_string_arr_(c_str) result (f_str) - - character(C_CHAR) :: c_str(*) - character(:), allocatable :: f_str - - integer :: n - integer :: i - - ! Convert the C string (expressed as an assumed-size array of - ! C_CHARs, terminated by a NULL) into a Fortran string - - n = c_f_len(c_str) - - allocate(character(LEN=c_f_len(c_str))::f_str) - - copy_loop : do i = 1, n - f_str(i:i) = c_str(i) - end do copy_loop - - ! Finish - - return - - end function c_f_string_arr_ - - !**** - - function c_f_string_ptr_(c_str) result (f_str) - - type(C_PTR), value :: c_str - character(:), allocatable :: f_str - - character(C_CHAR), pointer :: p(:) - integer :: n - integer :: i - - ! Convert the C string (expressed as a pointer to a - ! NULL-terminated sequence) into a Fortran string - - if (C_ASSOCIATED(c_str)) then - - call c_f_pointer(c_str, p, [HUGE(0)]) - - n = c_f_len(p) - - allocate(character(LEN=n)::f_str) - - copy_loop : do i = 1, n - f_str(i:i) = p(i) - end do copy_loop - - else - - allocate(character(LEN=0)::f_str) - - endif - - ! Finish - - return - - end function c_f_string_ptr_ - -end module cinter_m diff --git a/hdf5io/private/cinter_m.fypp b/hdf5io/private/cinter_m.fypp deleted file mode 100644 index a85ea8d46..000000000 --- a/hdf5io/private/cinter_m.fypp +++ /dev/null @@ -1,185 +0,0 @@ -! Module : cinter_m -! Purpose : C interoperability support -! -! Copyright 2021 Rich Townsend -! -! This file is part of the ForUM (Fortran Utility Modules) -! package. ForUM is free software: you can redistribute it and/or -! modify it under the terms of the GNU General Public License as -! published by the Free Software Foundation, version 3. -! -! ForUM is distributed in the hope that it will be useful, but WITHOUT -! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -! License for more details. -! -! You should have received a copy of the GNU General Public License -! along with this program. If not, see . - -#:include 'forum.inc' - -module cinter_m - - ! Uses - - use kinds_m - - use ISO_FORTRAN_ENV - use ISO_C_BINDING - - ! No implicit typing - - implicit none - - ! Interfaces - - interface c_f_len - module procedure c_f_len_arr_ - module procedure c_f_len_ptr_ - end interface c_f_len - - interface c_f_string - module procedure c_f_string_arr_ - module procedure c_f_string_ptr_ - end interface c_f_string - - ! Access specifiers - - private - - public :: c_f_len - public :: c_f_string - - ! Procedures - -contains - - function c_f_len_arr_(c_str) result (f_len) - - character(C_CHAR) :: c_str(*) - integer :: f_len - - integer :: i - - ! Determine the Fortran length of the C string (expressed as an - ! assumed-size array of C_CHARs, terminated by a NULL) - - i = 1 - - len_loop : do - if (c_str(i) == C_NULL_CHAR) exit len_loop - i = i + 1 - end do len_loop - - f_len = i - 1 - - ! Finish - - return - - end function c_f_len_arr_ - - !**** - - function c_f_len_ptr_(c_str) result (f_len) - - type(C_PTR), value :: c_str - integer :: f_len - - character(C_CHAR), pointer :: p(:) - integer :: i - - ! Determine the Fortran length of the C string (expressed as a - ! pointer to a NULL-termninated sequence) - - if (C_ASSOCIATED(c_str)) then - - call c_f_pointer(c_str, p, [HUGE(0)]) - - i = 1 - - len_loop : do - if (p(i) == C_NULL_CHAR) exit len_loop - i = i + 1 - end do len_loop - - f_len = i - 1 - - else - - f_len = 0 - - endif - - ! Finish - - return - - end function c_f_len_ptr_ - - !**** - - function c_f_string_arr_(c_str) result (f_str) - - character(C_CHAR) :: c_str(*) - character(:), allocatable :: f_str - - integer :: n - integer :: i - - ! Convert the C string (expressed as an assumed-size array of - ! C_CHARs, terminated by a NULL) into a Fortran string - - n = c_f_len(c_str) - - allocate(character(LEN=c_f_len(c_str))::f_str) - - copy_loop : do i = 1, n - f_str(i:i) = c_str(i) - end do copy_loop - - ! Finish - - return - - end function c_f_string_arr_ - - !**** - - function c_f_string_ptr_(c_str) result (f_str) - - type(C_PTR), value :: c_str - character(:), allocatable :: f_str - - character(C_CHAR), pointer :: p(:) - integer :: n - integer :: i - - ! Convert the C string (expressed as a pointer to a - ! NULL-terminated sequence) into a Fortran string - - if (C_ASSOCIATED(c_str)) then - - call c_f_pointer(c_str, p, [HUGE(0)]) - - n = c_f_len(p) - - allocate(character(LEN=n)::f_str) - - copy_loop : do i = 1, n - f_str(i:i) = p(i) - end do copy_loop - - else - - allocate(character(LEN=0)::f_str) - - endif - - ! Finish - - return - - end function c_f_string_ptr_ - -end module cinter_m diff --git a/hdf5io/private/forum.inc b/hdf5io/private/forum.inc deleted file mode 100644 index 5207597d6..000000000 --- a/hdf5io/private/forum.inc +++ /dev/null @@ -1,108 +0,0 @@ -#! Include : forum -#! Purpose : common macros used throughout ForUM -#! -#! Copyright 2021 Rich Townsend -#! -#! This file is part of the ForUM (Fortran Utility Modules) -#! package. ForUM is free software: you can redistribute it and/or -#! modify it under the terms of the GNU General Public License as -#! published by the Free Software Foundation, version 3. -#! -#! ForUM is distributed in the hope that it will be useful, but WITHOUT -#! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -#! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -#! License for more details. -#! -#! You should have received a copy of the GNU General Public License -#! along with this program. If not, see . - -#!!! Type and suffix definitions - -#:set INT_KINDS = ['IS', 'ID'] -#:set INT_TYPES = [f'integer({kind})' for kind in INT_KINDS] -#:set INT_SUFFIXES = ['is', 'id'] - -#:set REAL_KINDS = ['RS', 'RD'] -#:set REAL_TYPES = [f'real({kind})' for kind in REAL_KINDS] -#:set REAL_SUFFIXES = ['rs', 'rd'] - -#:set COMPLEX_KINDS = REAL_KINDS -#:set COMPLEX_TYPES = [f'complex({kind})' for kind in REAL_KINDS] -#:set COMPLEX_SUFFIXES = [kind.replace('r', 'c') for kind in REAL_SUFFIXES] - -#:set CHAR_TYPES = ['character(*)'] -#:set CHAR_SUFFIXES = ['s'] - -#:set LOGICAL_TYPES = ['logical'] -#:set LOGICAL_SUFFIXES = ['l'] - -#:set NUM_TYPES = INT_TYPES + REAL_TYPES + COMPLEX_TYPES -#:set NUM_SUFFIXES = INT_SUFFIXES + REAL_SUFFIXES + COMPLEX_SUFFIXES - -#:set MATH_TYPES = NUM_TYPES + LOGICAL_TYPES -#:set MATH_SUFFIXES = NUM_SUFFIXES + LOGICAL_SUFFIXES - -#:set ORDERED_TYPES = INT_TYPES + REAL_TYPES + CHAR_TYPES -#:set ORDERED_SUFFIXES = INT_SUFFIXES + REAL_SUFFIXES + CHAR_SUFFIXES - -#:set ALL_TYPES = MATH_TYPES + CHAR_TYPES -#:set ALL_SUFFIXES = MATH_SUFFIXES + CHAR_SUFFIXES - -#:set RANK_MAX = 7 - -#!!! Macro definitions - -#!! -#! Abort execution -#!! - -#:def ABORT(message=None) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line ${_LINE_}$ of ${_FILE_}$' - #:if message - write(UNIT=ERROR_UNIT, FMT=*) '${message}$' - #:endif - error stop -#:enddef - -#!! -#! Assert that cond is satisfied -#!! - -#:def ASSERT(cond, message=None) - if (.NOT. (${cond}$)) then - #:set cond_str = cond.replace("'", "''") - #:if message - $:ABORT(f'assertion "{cond_str}" failed with message "{message}"') - #:else - $:ABORT(f'assertion "{cond_str}" failed') - #:endif - end if -#:enddef - -#!! -#! Same as ASSERT, but only if DEBUG is set -#!! - -#:def ASSERT_DEBUG(cond, message=None) - #:if defined('DEBUG') - $:ASSERT(cond, message) - #:endif -#:enddef - -#!! -#! Used for bounds checking -#!! - -#:def CHECK_BOUNDS(x, y) - $:ASSERT_DEBUG(x+'=='+y, 'bounds mismatch') -#:enddef - -#!! -#! Create a deferred shape array specification list -#!! - -#:def ARRAY_SPEC(rank, str=':') - #:if rank > 0 - $:'(' + ','.join([str.format(i) for i in range(1, rank+1)]) + ')' - #:endif -#:enddef diff --git a/hdf5io/private/hdf5io.inc b/hdf5io/private/hdf5io.inc deleted file mode 100644 index f9530aa3e..000000000 --- a/hdf5io/private/hdf5io.inc +++ /dev/null @@ -1,31 +0,0 @@ -#! Include : hdf5io -#! Purpose : support macros for hdf5io module -#! -#! Copyright 2021 Rich Townsend -#! -#! This file is part of the ForUM (Fortran Utility Modules) -#! package. ForUM is free software: you can redistribute it and/or -#! modify it under the terms of the GNU General Public License as -#! published by the Free Software Foundation, version 3. -#! -#! ForUM is distributed in the hope that it will be useful, but WITHOUT -#! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -#! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -#! License for more details. -#! -#! You should have received a copy of the GNU General Public License -#! along with this program. If not, see . - -#!! -#! Standard macro to call HDF5 -#!! - -#:def HDF5_CALL(proc, *vars_pos, **vars_kw) - #:set vars = vars_pos + ['hdf_err'] + ['{:s}={:s}'.format(key, value) for key, value in vars_kw.items()] - #:set arg_list = '(' + ','.join(vars) + ')' - call ${proc}$${arg_list}$ - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - @:ABORT(error in call to ${proc}$) - endif -#:enddef diff --git a/hdf5io/private/hdf5io_m.f90 b/hdf5io/private/hdf5io_m.f90 deleted file mode 100644 index e47b401b3..000000000 --- a/hdf5io/private/hdf5io_m.f90 +++ /dev/null @@ -1,23601 +0,0 @@ -! Module : hdf5io -! Purpose : definition of hdf5io_t type, supporting HDF5 input/output -! -! Copyright 2021 Rich Townsend -! -! This file is part of the ForUM (Fortran Utility Modules) -! package. ForUM is free software: you can redistribute it and/or -! modify it under the terms of the GNU General Public License as -! published by the Free Software Foundation, version 3. -! -! ForUM is distributed in the hope that it will be useful, but WITHOUT -! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -! License for more details. -! -! You should have received a copy of the GNU General Public License -! along with this program. If not, see . - - - - - - - - - - - - - - - - - - - - - - - - - - -module hdf5io_m - - ! Uses - - use kinds_m - use cinter_m - - use hdf5 - - use ISO_FORTRAN_ENV - use ISO_C_BINDING - - ! No implicit typing - - implicit none - - ! Parameters - - integer, parameter :: CREATE_FILE = 1 - integer, parameter :: OPEN_FILE_RO = 2 - integer, parameter :: OPEN_FILE_RW = 3 - - integer, parameter :: TYPE_LEN = 31 - - ! Derived-type definitions - - type hdf5io_t - private - integer(HID_T) :: file_id = 0 - integer(HID_T) :: group_id = 0 - integer :: comp_level = 0 - integer, pointer :: ref_count => null() - contains - private - procedure, public :: final => final_ - procedure, public :: group_exists - procedure, public :: attr_exists - procedure, public :: dset_exists - procedure, public :: group_names - procedure, public :: dset_names - procedure, public :: attr_shape - procedure, public :: dset_shape - procedure :: read_attr_is_0_ - procedure :: read_attr_id_0_ - procedure :: read_attr_rs_0_ - procedure :: read_attr_rd_0_ - procedure :: read_attr_cs_0_ - procedure :: read_attr_cd_0_ - procedure :: read_attr_l_0_ - procedure :: read_attr_s_0_ - procedure :: read_attr_is_1_ - procedure :: read_attr_id_1_ - procedure :: read_attr_rs_1_ - procedure :: read_attr_rd_1_ - procedure :: read_attr_cs_1_ - procedure :: read_attr_cd_1_ - procedure :: read_attr_l_1_ - procedure :: read_attr_s_1_ - procedure :: read_attr_is_2_ - procedure :: read_attr_id_2_ - procedure :: read_attr_rs_2_ - procedure :: read_attr_rd_2_ - procedure :: read_attr_cs_2_ - procedure :: read_attr_cd_2_ - procedure :: read_attr_l_2_ - procedure :: read_attr_s_2_ - procedure :: read_attr_is_3_ - procedure :: read_attr_id_3_ - procedure :: read_attr_rs_3_ - procedure :: read_attr_rd_3_ - procedure :: read_attr_cs_3_ - procedure :: read_attr_cd_3_ - procedure :: read_attr_l_3_ - procedure :: read_attr_s_3_ - procedure :: read_attr_is_4_ - procedure :: read_attr_id_4_ - procedure :: read_attr_rs_4_ - procedure :: read_attr_rd_4_ - procedure :: read_attr_cs_4_ - procedure :: read_attr_cd_4_ - procedure :: read_attr_l_4_ - procedure :: read_attr_s_4_ - procedure :: read_attr_is_5_ - procedure :: read_attr_id_5_ - procedure :: read_attr_rs_5_ - procedure :: read_attr_rd_5_ - procedure :: read_attr_cs_5_ - procedure :: read_attr_cd_5_ - procedure :: read_attr_l_5_ - procedure :: read_attr_s_5_ - procedure :: read_attr_is_6_ - procedure :: read_attr_id_6_ - procedure :: read_attr_rs_6_ - procedure :: read_attr_rd_6_ - procedure :: read_attr_cs_6_ - procedure :: read_attr_cd_6_ - procedure :: read_attr_l_6_ - procedure :: read_attr_s_6_ - procedure :: read_attr_is_7_ - procedure :: read_attr_id_7_ - procedure :: read_attr_rs_7_ - procedure :: read_attr_rd_7_ - procedure :: read_attr_cs_7_ - procedure :: read_attr_cd_7_ - procedure :: read_attr_l_7_ - procedure :: read_attr_s_7_ - generic, public :: read_attr => read_attr_is_0_,read_attr_id_0_,read_attr_rs_0_,read_attr_rd_0_,read_attr_cs_0_,read_at& - &tr_cd_0_,read_attr_l_0_,read_attr_s_0_,read_attr_is_1_,read_attr_id_1_,read_attr_rs_1_,read_attr_rd_1_,read_attr_c& - &s_1_,read_attr_cd_1_,read_attr_l_1_,read_attr_s_1_,read_attr_is_2_,read_attr_id_2_,read_attr_rs_2_,read_attr_rd_2_& - &,read_attr_cs_2_,read_attr_cd_2_,read_attr_l_2_,read_attr_s_2_,read_attr_is_3_,read_attr_id_3_,read_attr_rs_3_,rea& - &d_attr_rd_3_,read_attr_cs_3_,read_attr_cd_3_,read_attr_l_3_,read_attr_s_3_,read_attr_is_4_,read_attr_id_4_,read_at& - &tr_rs_4_,read_attr_rd_4_,read_attr_cs_4_,read_attr_cd_4_,read_attr_l_4_,read_attr_s_4_,read_attr_is_5_,read_attr_i& - &d_5_,read_attr_rs_5_,read_attr_rd_5_,read_attr_cs_5_,read_attr_cd_5_,read_attr_l_5_,read_attr_s_5_,read_attr_is_6_& - &,read_attr_id_6_,read_attr_rs_6_,read_attr_rd_6_,read_attr_cs_6_,read_attr_cd_6_,read_attr_l_6_,read_attr_s_6_,rea& - &d_attr_is_7_,read_attr_id_7_,read_attr_rs_7_,read_attr_rd_7_,read_attr_cs_7_,read_attr_cd_7_,read_attr_l_7_,read_a& - &ttr_s_7_ - procedure :: read_dset_is_0_ - procedure :: read_dset_id_0_ - procedure :: read_dset_rs_0_ - procedure :: read_dset_rd_0_ - procedure :: read_dset_cs_0_ - procedure :: read_dset_cd_0_ - procedure :: read_dset_l_0_ - procedure :: read_dset_s_0_ - procedure :: read_dset_is_1_ - procedure :: read_dset_id_1_ - procedure :: read_dset_rs_1_ - procedure :: read_dset_rd_1_ - procedure :: read_dset_cs_1_ - procedure :: read_dset_cd_1_ - procedure :: read_dset_l_1_ - procedure :: read_dset_s_1_ - procedure :: read_dset_is_2_ - procedure :: read_dset_id_2_ - procedure :: read_dset_rs_2_ - procedure :: read_dset_rd_2_ - procedure :: read_dset_cs_2_ - procedure :: read_dset_cd_2_ - procedure :: read_dset_l_2_ - procedure :: read_dset_s_2_ - procedure :: read_dset_is_3_ - procedure :: read_dset_id_3_ - procedure :: read_dset_rs_3_ - procedure :: read_dset_rd_3_ - procedure :: read_dset_cs_3_ - procedure :: read_dset_cd_3_ - procedure :: read_dset_l_3_ - procedure :: read_dset_s_3_ - procedure :: read_dset_is_4_ - procedure :: read_dset_id_4_ - procedure :: read_dset_rs_4_ - procedure :: read_dset_rd_4_ - procedure :: read_dset_cs_4_ - procedure :: read_dset_cd_4_ - procedure :: read_dset_l_4_ - procedure :: read_dset_s_4_ - procedure :: read_dset_is_5_ - procedure :: read_dset_id_5_ - procedure :: read_dset_rs_5_ - procedure :: read_dset_rd_5_ - procedure :: read_dset_cs_5_ - procedure :: read_dset_cd_5_ - procedure :: read_dset_l_5_ - procedure :: read_dset_s_5_ - procedure :: read_dset_is_6_ - procedure :: read_dset_id_6_ - procedure :: read_dset_rs_6_ - procedure :: read_dset_rd_6_ - procedure :: read_dset_cs_6_ - procedure :: read_dset_cd_6_ - procedure :: read_dset_l_6_ - procedure :: read_dset_s_6_ - procedure :: read_dset_is_7_ - procedure :: read_dset_id_7_ - procedure :: read_dset_rs_7_ - procedure :: read_dset_rd_7_ - procedure :: read_dset_cs_7_ - procedure :: read_dset_cd_7_ - procedure :: read_dset_l_7_ - procedure :: read_dset_s_7_ - generic, public :: read_dset => read_dset_is_0_,read_dset_id_0_,read_dset_rs_0_,read_dset_rd_0_,read_dset_cs_0_,read_ds& - &et_cd_0_,read_dset_l_0_,read_dset_s_0_,read_dset_is_1_,read_dset_id_1_,read_dset_rs_1_,read_dset_rd_1_,read_dset_c& - &s_1_,read_dset_cd_1_,read_dset_l_1_,read_dset_s_1_,read_dset_is_2_,read_dset_id_2_,read_dset_rs_2_,read_dset_rd_2_& - &,read_dset_cs_2_,read_dset_cd_2_,read_dset_l_2_,read_dset_s_2_,read_dset_is_3_,read_dset_id_3_,read_dset_rs_3_,rea& - &d_dset_rd_3_,read_dset_cs_3_,read_dset_cd_3_,read_dset_l_3_,read_dset_s_3_,read_dset_is_4_,read_dset_id_4_,read_ds& - &et_rs_4_,read_dset_rd_4_,read_dset_cs_4_,read_dset_cd_4_,read_dset_l_4_,read_dset_s_4_,read_dset_is_5_,read_dset_i& - &d_5_,read_dset_rs_5_,read_dset_rd_5_,read_dset_cs_5_,read_dset_cd_5_,read_dset_l_5_,read_dset_s_5_,read_dset_is_6_& - &,read_dset_id_6_,read_dset_rs_6_,read_dset_rd_6_,read_dset_cs_6_,read_dset_cd_6_,read_dset_l_6_,read_dset_s_6_,rea& - &d_dset_is_7_,read_dset_id_7_,read_dset_rs_7_,read_dset_rd_7_,read_dset_cs_7_,read_dset_cd_7_,read_dset_l_7_,read_d& - &set_s_7_ - procedure :: alloc_read_attr_is_0_ - procedure :: alloc_read_attr_id_0_ - procedure :: alloc_read_attr_rs_0_ - procedure :: alloc_read_attr_rd_0_ - procedure :: alloc_read_attr_cs_0_ - procedure :: alloc_read_attr_cd_0_ - procedure :: alloc_read_attr_l_0_ - procedure :: alloc_read_attr_s_0_ - procedure :: alloc_read_attr_is_1_ - procedure :: alloc_read_attr_id_1_ - procedure :: alloc_read_attr_rs_1_ - procedure :: alloc_read_attr_rd_1_ - procedure :: alloc_read_attr_cs_1_ - procedure :: alloc_read_attr_cd_1_ - procedure :: alloc_read_attr_l_1_ - procedure :: alloc_read_attr_s_1_ - procedure :: alloc_read_attr_is_2_ - procedure :: alloc_read_attr_id_2_ - procedure :: alloc_read_attr_rs_2_ - procedure :: alloc_read_attr_rd_2_ - procedure :: alloc_read_attr_cs_2_ - procedure :: alloc_read_attr_cd_2_ - procedure :: alloc_read_attr_l_2_ - procedure :: alloc_read_attr_s_2_ - procedure :: alloc_read_attr_is_3_ - procedure :: alloc_read_attr_id_3_ - procedure :: alloc_read_attr_rs_3_ - procedure :: alloc_read_attr_rd_3_ - procedure :: alloc_read_attr_cs_3_ - procedure :: alloc_read_attr_cd_3_ - procedure :: alloc_read_attr_l_3_ - procedure :: alloc_read_attr_s_3_ - procedure :: alloc_read_attr_is_4_ - procedure :: alloc_read_attr_id_4_ - procedure :: alloc_read_attr_rs_4_ - procedure :: alloc_read_attr_rd_4_ - procedure :: alloc_read_attr_cs_4_ - procedure :: alloc_read_attr_cd_4_ - procedure :: alloc_read_attr_l_4_ - procedure :: alloc_read_attr_s_4_ - procedure :: alloc_read_attr_is_5_ - procedure :: alloc_read_attr_id_5_ - procedure :: alloc_read_attr_rs_5_ - procedure :: alloc_read_attr_rd_5_ - procedure :: alloc_read_attr_cs_5_ - procedure :: alloc_read_attr_cd_5_ - procedure :: alloc_read_attr_l_5_ - procedure :: alloc_read_attr_s_5_ - procedure :: alloc_read_attr_is_6_ - procedure :: alloc_read_attr_id_6_ - procedure :: alloc_read_attr_rs_6_ - procedure :: alloc_read_attr_rd_6_ - procedure :: alloc_read_attr_cs_6_ - procedure :: alloc_read_attr_cd_6_ - procedure :: alloc_read_attr_l_6_ - procedure :: alloc_read_attr_s_6_ - procedure :: alloc_read_attr_is_7_ - procedure :: alloc_read_attr_id_7_ - procedure :: alloc_read_attr_rs_7_ - procedure :: alloc_read_attr_rd_7_ - procedure :: alloc_read_attr_cs_7_ - procedure :: alloc_read_attr_cd_7_ - procedure :: alloc_read_attr_l_7_ - procedure :: alloc_read_attr_s_7_ - generic, public :: alloc_read_attr => alloc_read_attr_is_0_,alloc_read_attr_id_0_,alloc_read_attr_rs_0_,alloc_read_attr& - &_rd_0_,alloc_read_attr_cs_0_,alloc_read_attr_cd_0_,alloc_read_attr_l_0_,alloc_read_attr_s_0_,alloc_read_attr_is_1_& - &,alloc_read_attr_id_1_,alloc_read_attr_rs_1_,alloc_read_attr_rd_1_,alloc_read_attr_cs_1_,alloc_read_attr_cd_1_,all& - &oc_read_attr_l_1_,alloc_read_attr_s_1_,alloc_read_attr_is_2_,alloc_read_attr_id_2_,alloc_read_attr_rs_2_,alloc_rea& - &d_attr_rd_2_,alloc_read_attr_cs_2_,alloc_read_attr_cd_2_,alloc_read_attr_l_2_,alloc_read_attr_s_2_,alloc_read_attr& - &_is_3_,alloc_read_attr_id_3_,alloc_read_attr_rs_3_,alloc_read_attr_rd_3_,alloc_read_attr_cs_3_,alloc_read_attr_cd_& - &3_,alloc_read_attr_l_3_,alloc_read_attr_s_3_,alloc_read_attr_is_4_,alloc_read_attr_id_4_,alloc_read_attr_rs_4_,all& - &oc_read_attr_rd_4_,alloc_read_attr_cs_4_,alloc_read_attr_cd_4_,alloc_read_attr_l_4_,alloc_read_attr_s_4_,alloc_rea& - &d_attr_is_5_,alloc_read_attr_id_5_,alloc_read_attr_rs_5_,alloc_read_attr_rd_5_,alloc_read_attr_cs_5_,alloc_read_at& - &tr_cd_5_,alloc_read_attr_l_5_,alloc_read_attr_s_5_,alloc_read_attr_is_6_,alloc_read_attr_id_6_,alloc_read_attr_rs_& - &6_,alloc_read_attr_rd_6_,alloc_read_attr_cs_6_,alloc_read_attr_cd_6_,alloc_read_attr_l_6_,alloc_read_attr_s_6_,all& - &oc_read_attr_is_7_,alloc_read_attr_id_7_,alloc_read_attr_rs_7_,alloc_read_attr_rd_7_,alloc_read_attr_cs_7_,alloc_r& - &ead_attr_cd_7_,alloc_read_attr_l_7_,alloc_read_attr_s_7_ - procedure :: alloc_read_dset_is_0_ - procedure :: alloc_read_dset_id_0_ - procedure :: alloc_read_dset_rs_0_ - procedure :: alloc_read_dset_rd_0_ - procedure :: alloc_read_dset_cs_0_ - procedure :: alloc_read_dset_cd_0_ - procedure :: alloc_read_dset_l_0_ - procedure :: alloc_read_dset_s_0_ - procedure :: alloc_read_dset_is_1_ - procedure :: alloc_read_dset_id_1_ - procedure :: alloc_read_dset_rs_1_ - procedure :: alloc_read_dset_rd_1_ - procedure :: alloc_read_dset_cs_1_ - procedure :: alloc_read_dset_cd_1_ - procedure :: alloc_read_dset_l_1_ - procedure :: alloc_read_dset_s_1_ - procedure :: alloc_read_dset_is_2_ - procedure :: alloc_read_dset_id_2_ - procedure :: alloc_read_dset_rs_2_ - procedure :: alloc_read_dset_rd_2_ - procedure :: alloc_read_dset_cs_2_ - procedure :: alloc_read_dset_cd_2_ - procedure :: alloc_read_dset_l_2_ - procedure :: alloc_read_dset_s_2_ - procedure :: alloc_read_dset_is_3_ - procedure :: alloc_read_dset_id_3_ - procedure :: alloc_read_dset_rs_3_ - procedure :: alloc_read_dset_rd_3_ - procedure :: alloc_read_dset_cs_3_ - procedure :: alloc_read_dset_cd_3_ - procedure :: alloc_read_dset_l_3_ - procedure :: alloc_read_dset_s_3_ - procedure :: alloc_read_dset_is_4_ - procedure :: alloc_read_dset_id_4_ - procedure :: alloc_read_dset_rs_4_ - procedure :: alloc_read_dset_rd_4_ - procedure :: alloc_read_dset_cs_4_ - procedure :: alloc_read_dset_cd_4_ - procedure :: alloc_read_dset_l_4_ - procedure :: alloc_read_dset_s_4_ - procedure :: alloc_read_dset_is_5_ - procedure :: alloc_read_dset_id_5_ - procedure :: alloc_read_dset_rs_5_ - procedure :: alloc_read_dset_rd_5_ - procedure :: alloc_read_dset_cs_5_ - procedure :: alloc_read_dset_cd_5_ - procedure :: alloc_read_dset_l_5_ - procedure :: alloc_read_dset_s_5_ - procedure :: alloc_read_dset_is_6_ - procedure :: alloc_read_dset_id_6_ - procedure :: alloc_read_dset_rs_6_ - procedure :: alloc_read_dset_rd_6_ - procedure :: alloc_read_dset_cs_6_ - procedure :: alloc_read_dset_cd_6_ - procedure :: alloc_read_dset_l_6_ - procedure :: alloc_read_dset_s_6_ - procedure :: alloc_read_dset_is_7_ - procedure :: alloc_read_dset_id_7_ - procedure :: alloc_read_dset_rs_7_ - procedure :: alloc_read_dset_rd_7_ - procedure :: alloc_read_dset_cs_7_ - procedure :: alloc_read_dset_cd_7_ - procedure :: alloc_read_dset_l_7_ - procedure :: alloc_read_dset_s_7_ - generic, public :: alloc_read_dset => alloc_read_dset_is_0_,alloc_read_dset_id_0_,alloc_read_dset_rs_0_,alloc_read_dset& - &_rd_0_,alloc_read_dset_cs_0_,alloc_read_dset_cd_0_,alloc_read_dset_l_0_,alloc_read_dset_s_0_,alloc_read_dset_is_1_& - &,alloc_read_dset_id_1_,alloc_read_dset_rs_1_,alloc_read_dset_rd_1_,alloc_read_dset_cs_1_,alloc_read_dset_cd_1_,all& - &oc_read_dset_l_1_,alloc_read_dset_s_1_,alloc_read_dset_is_2_,alloc_read_dset_id_2_,alloc_read_dset_rs_2_,alloc_rea& - &d_dset_rd_2_,alloc_read_dset_cs_2_,alloc_read_dset_cd_2_,alloc_read_dset_l_2_,alloc_read_dset_s_2_,alloc_read_dset& - &_is_3_,alloc_read_dset_id_3_,alloc_read_dset_rs_3_,alloc_read_dset_rd_3_,alloc_read_dset_cs_3_,alloc_read_dset_cd_& - &3_,alloc_read_dset_l_3_,alloc_read_dset_s_3_,alloc_read_dset_is_4_,alloc_read_dset_id_4_,alloc_read_dset_rs_4_,all& - &oc_read_dset_rd_4_,alloc_read_dset_cs_4_,alloc_read_dset_cd_4_,alloc_read_dset_l_4_,alloc_read_dset_s_4_,alloc_rea& - &d_dset_is_5_,alloc_read_dset_id_5_,alloc_read_dset_rs_5_,alloc_read_dset_rd_5_,alloc_read_dset_cs_5_,alloc_read_ds& - &et_cd_5_,alloc_read_dset_l_5_,alloc_read_dset_s_5_,alloc_read_dset_is_6_,alloc_read_dset_id_6_,alloc_read_dset_rs_& - &6_,alloc_read_dset_rd_6_,alloc_read_dset_cs_6_,alloc_read_dset_cd_6_,alloc_read_dset_l_6_,alloc_read_dset_s_6_,all& - &oc_read_dset_is_7_,alloc_read_dset_id_7_,alloc_read_dset_rs_7_,alloc_read_dset_rd_7_,alloc_read_dset_cs_7_,alloc_r& - &ead_dset_cd_7_,alloc_read_dset_l_7_,alloc_read_dset_s_7_ - procedure :: write_attr_is_0_ - procedure :: write_attr_id_0_ - procedure :: write_attr_rs_0_ - procedure :: write_attr_rd_0_ - procedure :: write_attr_cs_0_ - procedure :: write_attr_cd_0_ - procedure :: write_attr_l_0_ - procedure :: write_attr_s_0_ - procedure :: write_attr_is_1_ - procedure :: write_attr_id_1_ - procedure :: write_attr_rs_1_ - procedure :: write_attr_rd_1_ - procedure :: write_attr_cs_1_ - procedure :: write_attr_cd_1_ - procedure :: write_attr_l_1_ - procedure :: write_attr_s_1_ - procedure :: write_attr_is_2_ - procedure :: write_attr_id_2_ - procedure :: write_attr_rs_2_ - procedure :: write_attr_rd_2_ - procedure :: write_attr_cs_2_ - procedure :: write_attr_cd_2_ - procedure :: write_attr_l_2_ - procedure :: write_attr_s_2_ - procedure :: write_attr_is_3_ - procedure :: write_attr_id_3_ - procedure :: write_attr_rs_3_ - procedure :: write_attr_rd_3_ - procedure :: write_attr_cs_3_ - procedure :: write_attr_cd_3_ - procedure :: write_attr_l_3_ - procedure :: write_attr_s_3_ - procedure :: write_attr_is_4_ - procedure :: write_attr_id_4_ - procedure :: write_attr_rs_4_ - procedure :: write_attr_rd_4_ - procedure :: write_attr_cs_4_ - procedure :: write_attr_cd_4_ - procedure :: write_attr_l_4_ - procedure :: write_attr_s_4_ - procedure :: write_attr_is_5_ - procedure :: write_attr_id_5_ - procedure :: write_attr_rs_5_ - procedure :: write_attr_rd_5_ - procedure :: write_attr_cs_5_ - procedure :: write_attr_cd_5_ - procedure :: write_attr_l_5_ - procedure :: write_attr_s_5_ - procedure :: write_attr_is_6_ - procedure :: write_attr_id_6_ - procedure :: write_attr_rs_6_ - procedure :: write_attr_rd_6_ - procedure :: write_attr_cs_6_ - procedure :: write_attr_cd_6_ - procedure :: write_attr_l_6_ - procedure :: write_attr_s_6_ - procedure :: write_attr_is_7_ - procedure :: write_attr_id_7_ - procedure :: write_attr_rs_7_ - procedure :: write_attr_rd_7_ - procedure :: write_attr_cs_7_ - procedure :: write_attr_cd_7_ - procedure :: write_attr_l_7_ - procedure :: write_attr_s_7_ - generic, public :: write_attr => write_attr_is_0_,write_attr_id_0_,write_attr_rs_0_,write_attr_rd_0_,write_attr_cs_0_,w& - &rite_attr_cd_0_,write_attr_l_0_,write_attr_s_0_,write_attr_is_1_,write_attr_id_1_,write_attr_rs_1_,write_attr_rd_1& - &_,write_attr_cs_1_,write_attr_cd_1_,write_attr_l_1_,write_attr_s_1_,write_attr_is_2_,write_attr_id_2_,write_attr_r& - &s_2_,write_attr_rd_2_,write_attr_cs_2_,write_attr_cd_2_,write_attr_l_2_,write_attr_s_2_,write_attr_is_3_,write_att& - &r_id_3_,write_attr_rs_3_,write_attr_rd_3_,write_attr_cs_3_,write_attr_cd_3_,write_attr_l_3_,write_attr_s_3_,write_& - &attr_is_4_,write_attr_id_4_,write_attr_rs_4_,write_attr_rd_4_,write_attr_cs_4_,write_attr_cd_4_,write_attr_l_4_,wr& - &ite_attr_s_4_,write_attr_is_5_,write_attr_id_5_,write_attr_rs_5_,write_attr_rd_5_,write_attr_cs_5_,write_attr_cd_5& - &_,write_attr_l_5_,write_attr_s_5_,write_attr_is_6_,write_attr_id_6_,write_attr_rs_6_,write_attr_rd_6_,write_attr_c& - &s_6_,write_attr_cd_6_,write_attr_l_6_,write_attr_s_6_,write_attr_is_7_,write_attr_id_7_,write_attr_rs_7_,write_att& - &r_rd_7_,write_attr_cs_7_,write_attr_cd_7_,write_attr_l_7_,write_attr_s_7_ - procedure :: write_dset_is_0_ - procedure :: write_dset_id_0_ - procedure :: write_dset_rs_0_ - procedure :: write_dset_rd_0_ - procedure :: write_dset_cs_0_ - procedure :: write_dset_cd_0_ - procedure :: write_dset_l_0_ - procedure :: write_dset_s_0_ - procedure :: write_dset_is_1_ - procedure :: write_dset_id_1_ - procedure :: write_dset_rs_1_ - procedure :: write_dset_rd_1_ - procedure :: write_dset_cs_1_ - procedure :: write_dset_cd_1_ - procedure :: write_dset_l_1_ - procedure :: write_dset_s_1_ - procedure :: write_dset_is_2_ - procedure :: write_dset_id_2_ - procedure :: write_dset_rs_2_ - procedure :: write_dset_rd_2_ - procedure :: write_dset_cs_2_ - procedure :: write_dset_cd_2_ - procedure :: write_dset_l_2_ - procedure :: write_dset_s_2_ - procedure :: write_dset_is_3_ - procedure :: write_dset_id_3_ - procedure :: write_dset_rs_3_ - procedure :: write_dset_rd_3_ - procedure :: write_dset_cs_3_ - procedure :: write_dset_cd_3_ - procedure :: write_dset_l_3_ - procedure :: write_dset_s_3_ - procedure :: write_dset_is_4_ - procedure :: write_dset_id_4_ - procedure :: write_dset_rs_4_ - procedure :: write_dset_rd_4_ - procedure :: write_dset_cs_4_ - procedure :: write_dset_cd_4_ - procedure :: write_dset_l_4_ - procedure :: write_dset_s_4_ - procedure :: write_dset_is_5_ - procedure :: write_dset_id_5_ - procedure :: write_dset_rs_5_ - procedure :: write_dset_rd_5_ - procedure :: write_dset_cs_5_ - procedure :: write_dset_cd_5_ - procedure :: write_dset_l_5_ - procedure :: write_dset_s_5_ - procedure :: write_dset_is_6_ - procedure :: write_dset_id_6_ - procedure :: write_dset_rs_6_ - procedure :: write_dset_rd_6_ - procedure :: write_dset_cs_6_ - procedure :: write_dset_cd_6_ - procedure :: write_dset_l_6_ - procedure :: write_dset_s_6_ - procedure :: write_dset_is_7_ - procedure :: write_dset_id_7_ - procedure :: write_dset_rs_7_ - procedure :: write_dset_rd_7_ - procedure :: write_dset_cs_7_ - procedure :: write_dset_cd_7_ - procedure :: write_dset_l_7_ - procedure :: write_dset_s_7_ - generic, public :: write_dset => write_dset_is_0_,write_dset_id_0_,write_dset_rs_0_,write_dset_rd_0_,write_dset_cs_0_,w& - &rite_dset_cd_0_,write_dset_l_0_,write_dset_s_0_,write_dset_is_1_,write_dset_id_1_,write_dset_rs_1_,write_dset_rd_1& - &_,write_dset_cs_1_,write_dset_cd_1_,write_dset_l_1_,write_dset_s_1_,write_dset_is_2_,write_dset_id_2_,write_dset_r& - &s_2_,write_dset_rd_2_,write_dset_cs_2_,write_dset_cd_2_,write_dset_l_2_,write_dset_s_2_,write_dset_is_3_,write_dse& - &t_id_3_,write_dset_rs_3_,write_dset_rd_3_,write_dset_cs_3_,write_dset_cd_3_,write_dset_l_3_,write_dset_s_3_,write_& - &dset_is_4_,write_dset_id_4_,write_dset_rs_4_,write_dset_rd_4_,write_dset_cs_4_,write_dset_cd_4_,write_dset_l_4_,wr& - &ite_dset_s_4_,write_dset_is_5_,write_dset_id_5_,write_dset_rs_5_,write_dset_rd_5_,write_dset_cs_5_,write_dset_cd_5& - &_,write_dset_l_5_,write_dset_s_5_,write_dset_is_6_,write_dset_id_6_,write_dset_rs_6_,write_dset_rd_6_,write_dset_c& - &s_6_,write_dset_cd_6_,write_dset_l_6_,write_dset_s_6_,write_dset_is_7_,write_dset_id_7_,write_dset_rs_7_,write_dse& - &t_rd_7_,write_dset_cs_7_,write_dset_cd_7_,write_dset_l_7_,write_dset_s_7_ - end type hdf5io_t - - ! Module variables - - integer, save :: ref_count = 0 - - integer(HID_T), save :: mem_type_id_is - integer(HID_T), save :: file_type_id_is - integer(HID_T), save :: mem_type_id_id - integer(HID_T), save :: file_type_id_id - integer(HID_T), save :: mem_type_id_rs - integer(HID_T), save :: file_type_id_rs - integer(HID_T), save :: mem_type_id_rd - integer(HID_T), save :: file_type_id_rd - integer(HID_T), save :: mem_type_id_cs - integer(HID_T), save :: file_type_id_cs - integer(HID_T), save :: mem_type_id_cd - integer(HID_T), save :: file_type_id_cd - - ! Interfaces - - interface hdf5io_t - module procedure hdf5io_t_file_ - module procedure hdf5io_t_group_ - end interface hdf5io_t - - ! Access specifiers - - private - - public :: CREATE_FILE - public :: OPEN_FILE_RO - public :: OPEN_FILE_RW - public :: TYPE_LEN - public :: hdf5io_t - - ! Procedures - -contains - - function hdf5io_t_file_(file_name, access_type, comp_level) result (hi) - - character(*), intent(in) :: file_name - integer, intent(in) :: access_type - integer, intent(in), optional :: comp_level - type(hdf5io_t) :: hi - - integer :: hdf_err - integer(HID_T) :: file_id - integer(HID_T) :: group_id - - ! If necessary, open the HDF5 library - - if (ref_count == 0) then - call open_library_() - endif - - ref_count = ref_count + 1 - - ! Depending on the access_type, open or create the file - - select case(access_type) - case(CREATE_FILE) - call h5fcreate_f(file_name,H5F_ACC_TRUNC_F,file_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 134 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5fcreate_f' - error stop - endif - case(OPEN_FILE_RO) - call h5fopen_f(file_name,H5F_ACC_RDONLY_F,file_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 136 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5fopen_f' - error stop - endif - case(OPEN_FILE_RW) - call h5fopen_f(file_name,H5F_ACC_RDWR_F,file_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 138 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5fopen_f' - error stop - endif - case default - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 140 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'invalid access_type' - error stop - end select - - ! Open the root group - - call h5gopen_f(file_id,'/',group_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 145 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5gopen_f' - error stop - endif - - ! Construct the hdf5io_t - - hi%file_id = file_id - hi%group_id = group_id - if (PRESENT(comp_level)) then - hi%comp_level = comp_level - else - hi%comp_level = 0 - endif - - allocate(hi%ref_count) - hi%ref_count = 1 - - ! Finish - - return - - end function hdf5io_t_file_ - - !**** - - function hdf5io_t_group_(hi_parent, group_name) result (hi) - - type(hdf5io_t), intent(inout) :: hi_parent - character(*), intent(in) :: group_name - type(hdf5io_t) :: hi - - integer :: hdf_err - integer(HID_T) :: group_id - - ! Depending on whether the group already exists, open or create it - - if (hi_parent%group_exists(group_name)) then - call h5gopen_f(hi_parent%group_id,group_name,group_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 180 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5gopen_f' - error stop - endif - else - call h5gcreate_f(hi_parent%group_id,group_name,group_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 182 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5gcreate_f' - error stop - endif - endif - - ! Construct the hdf5io_t - - hi%file_id = hi_parent%file_id - hi%group_id = group_id - hi%comp_level = hi_parent%comp_level - - hi%ref_count => hi_parent%ref_count - hi%ref_count = hi%ref_count + 1 - - ! Finish - - return - - end function hdf5io_t_group_ - - !**** - - subroutine final_(self) - - class(hdf5io_t), intent(inout) :: self - - integer :: hdf_err - - ! Close the group - - call h5gclose_f(self%group_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 210 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5gclose_f' - error stop - endif - - self%ref_count = self%ref_count - 1 - - ! If necessary, close the file also - - if (self%ref_count == 0) then - call h5fclose_f(self%file_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 217 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5fclose_f' - error stop - endif - deallocate(self%ref_count) - ref_count = ref_count - 1 - endif - - ! If necessary, close the HDF5 library - - if (ref_count == 0) then - call close_library_() - endif - - ! Finish - - return - - end subroutine final_ - - !**** - - subroutine open_library_() - - integer :: hdf_err - - ! Open the HDF5 library - - call h5open_f(hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 242 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5open_f' - error stop - endif - - if (.NOT. (hdf_err == 0)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 244 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "hdf_err == 0" failed with message "Failed to open HDF5 library"' - error stop - end if - - ! Set up data types - - mem_type_id_is = h5kind_to_type(is, H5_INTEGER_KIND) - mem_type_id_id = h5kind_to_type(id, H5_INTEGER_KIND) - - mem_type_id_rs = h5kind_to_type(rs, H5_REAL_KIND) - mem_type_id_rd = h5kind_to_type(rd, H5_REAL_KIND) - - call create_complex_type_(mem_type_id_rs, mem_type_id_cs) - call create_complex_type_(mem_type_id_rd, mem_type_id_cd) - - file_type_id_is = H5T_STD_I32LE - file_type_id_id = H5T_STD_I64LE - - file_type_id_rs = H5T_IEEE_F32LE - file_type_id_rd = H5T_IEEE_F64LE - - call create_complex_type_(file_type_id_rs, file_type_id_cs) - call create_complex_type_(file_type_id_rd, file_type_id_cd) - - ! Finish - - return - - contains - - subroutine create_complex_type_(comp_type_id, type_id) - - integer(HID_T), intent(in) :: comp_type_id - integer(HID_T), intent(out) :: type_id - - integer :: hdf_err - integer(SIZE_T) :: comp_size - - ! Create a complex data type - - call h5tget_size_f(comp_type_id,comp_size,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 282 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tget_size_f' - error stop - endif - - call h5tcreate_f(H5T_COMPOUND_F,INT(2*comp_size, SIZE_T),type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 284 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcreate_f' - error stop - endif - call h5tinsert_f(type_id,'re',INT(0, SIZE_T),comp_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 285 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tinsert_f' - error stop - endif - call h5tinsert_f(type_id,'im',INT(comp_size, SIZE_T),comp_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 286 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tinsert_f' - error stop - endif - - ! Finish - - return - - end subroutine create_complex_type_ - - end subroutine open_library_ - - !**** - - subroutine close_library_() - - integer :: hdf_err - - ! Close complex data types - - call h5tclose_f(mem_type_id_cs,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 305 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id_cs,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 306 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(mem_type_id_cd,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 305 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id_cd,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 306 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Close the HDF5 library - - call h5close_f(hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 311 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5close_f' - error stop - endif - - ! Finish - - return - - end subroutine close_library_ - - !**** - - function group_exists(self, group_name) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: group_name - logical :: group_exists - - integer :: hdf_err - integer(HID_T) :: group_id - - ! Determine whether the named group already exists - - call h5eset_auto_f(0, hdf_err) - - call h5gopen_f(self%group_id, group_name, group_id, hdf_err) - - if (hdf_err >= 0) then - group_exists = .TRUE. - call h5gclose_f(group_id, hdf_err) - else - group_exists = .FALSE. - endif - - call h5eset_auto_f(1, hdf_err) - - ! Finish - - return - - end function group_exists - - !**** - - function attr_exists(self, attr_name) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: attr_name - logical :: attr_exists - - integer :: hdf_err - - ! Check if the attribute exists - - call h5aexists_f(self%group_id,attr_name,attr_exists,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 363 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aexists_f' - error stop - endif - - ! Finish - - return - - end function attr_exists - - !**** - - function dset_exists(self, dset_name) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: dset_name - logical :: dset_exists - - integer :: hdf_err - logical :: link_exists - type(h5o_info_t) :: obj_info - - ! Check if the dataset exists - - call h5lexists_f(self%group_id,dset_name,link_exists,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 385 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5lexists_f' - error stop - endif - - if (link_exists) then - - call h5oget_info_by_name_f(self%group_id,dset_name,obj_info,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 389 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5oget_info_by_name_f' - error stop - endif - - dset_exists = obj_info%type == H5O_TYPE_DATASET_F - - else - - dset_exists = .FALSE. - - endif - - ! Finish - - return - - end function dset_exists - - !**** - - - function group_names(self) result(names) - - class(hdf5io_t), intent(inout) :: self - character(:), allocatable :: names(:) - - integer(HSIZE_T) :: i - integer :: n_names - integer :: max_len - type(C_FUNPTR) :: op - integer :: ret_value - integer :: hdf_err - integer :: i_name - - ! Iterate to get number of items and maximum name length - - i = 0 - - n_names = 0 - max_len = 0 - - op = C_FUNLOC(op_len_) - - call h5literate_f(self%group_id,H5_INDEX_NAME_F,H5_ITER_NATIVE_F,i,op,C_NULL_PTR,ret_value,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 431 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5literate_f' - error stop - endif - - ! Allocate space - - allocate(character(LEN=max_len)::names(n_names)) - - ! Iterate again to store the names - - i = 0 - - i_name = 0 - - op = C_FUNLOC(op_name_) - - call h5literate_f(self%group_id,H5_INDEX_NAME_F,H5_ITER_NATIVE_F,i,op,C_NULL_PTR,ret_value,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 445 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5literate_f' - error stop - endif - - ! Finish - - return - - contains - - function op_len_(loc_id, c_name, c_info, c_data) result(ret_value) bind(C) - - integer(HID_T), value :: loc_id - character(C_CHAR) :: c_name(*) - type(C_PTR), value :: c_info - type(C_PTR), value :: c_data - integer(C_INT) :: ret_value - - type(H5O_INFO_T) :: info - integer :: hdf_err - - ! Check that the link points to the appropriate object type - - call h5oget_info_f(loc_id,info,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 466 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5oget_info_f' - error stop - endif - - if (info%type == H5O_TYPE_GROUP_F) then - - ! Update counters - - n_names = n_names + 1 - - max_len = MAX(c_f_len(c_name), max_len) - - endif - - ! Finish - - ret_value = 0 - - end function op_len_ - - !**** - - function op_name_(loc_id, c_name, c_info, c_data) result(ret_value) bind(C) - - integer(HID_T), value :: loc_id - character(C_CHAR) :: c_name(*) - type(C_PTR), value :: c_info - type(C_PTR), value :: c_data - integer(C_INT) :: ret_value - - type(H5O_INFO_T) :: info - integer :: hdf_err - - ! Check that the link points to the appropriate object type - - call h5oget_info_f(loc_id,info,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 499 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5oget_info_f' - error stop - endif - - if (info%type == H5O_TYPE_GROUP_F) then - - ! Store the name - - i_name = i_name + 1 - - names(i_name) = c_f_string(c_name) - - end if - - ! Finish - - ret_value = 0 - - end function op_name_ - - end function group_names - - - function dset_names(self) result(names) - - class(hdf5io_t), intent(inout) :: self - character(:), allocatable :: names(:) - - integer(HSIZE_T) :: i - integer :: n_names - integer :: max_len - type(C_FUNPTR) :: op - integer :: ret_value - integer :: hdf_err - integer :: i_name - - ! Iterate to get number of items and maximum name length - - i = 0 - - n_names = 0 - max_len = 0 - - op = C_FUNLOC(op_len_) - - call h5literate_f(self%group_id,H5_INDEX_NAME_F,H5_ITER_NATIVE_F,i,op,C_NULL_PTR,ret_value,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 431 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5literate_f' - error stop - endif - - ! Allocate space - - allocate(character(LEN=max_len)::names(n_names)) - - ! Iterate again to store the names - - i = 0 - - i_name = 0 - - op = C_FUNLOC(op_name_) - - call h5literate_f(self%group_id,H5_INDEX_NAME_F,H5_ITER_NATIVE_F,i,op,C_NULL_PTR,ret_value,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 445 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5literate_f' - error stop - endif - - ! Finish - - return - - contains - - function op_len_(loc_id, c_name, c_info, c_data) result(ret_value) bind(C) - - integer(HID_T), value :: loc_id - character(C_CHAR) :: c_name(*) - type(C_PTR), value :: c_info - type(C_PTR), value :: c_data - integer(C_INT) :: ret_value - - type(H5O_INFO_T) :: info - integer :: hdf_err - - ! Check that the link points to the appropriate object type - - call h5oget_info_f(loc_id,info,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 466 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5oget_info_f' - error stop - endif - - if (info%type == H5O_TYPE_DATASET_F) then - - ! Update counters - - n_names = n_names + 1 - - max_len = MAX(c_f_len(c_name), max_len) - - endif - - ! Finish - - ret_value = 0 - - end function op_len_ - - !**** - - function op_name_(loc_id, c_name, c_info, c_data) result(ret_value) bind(C) - - integer(HID_T), value :: loc_id - character(C_CHAR) :: c_name(*) - type(C_PTR), value :: c_info - type(C_PTR), value :: c_data - integer(C_INT) :: ret_value - - type(H5O_INFO_T) :: info - integer :: hdf_err - - ! Check that the link points to the appropriate object type - - call h5oget_info_f(loc_id,info,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 499 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5oget_info_f' - error stop - endif - - if (info%type == H5O_TYPE_DATASET_F) then - - ! Store the name - - i_name = i_name + 1 - - names(i_name) = c_f_string(c_name) - - end if - - ! Finish - - ret_value = 0 - - end function op_name_ - - end function dset_names - - - !**** - - - function attr_shape(self, item_name) result(shape) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(HSIZE_T), allocatable :: shape(:) - - integer :: hdf_err - integer(HID_T) :: item_id - integer(HID_T) :: space_id - integer :: rank - integer(HSIZE_T), allocatable :: max_shape(:) - - ! Get the shape of the item - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 539 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - - call h5aget_space_f(item_id,space_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 541 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aget_space_f' - error stop - endif - - call h5sget_simple_extent_ndims_f(space_id,rank,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 543 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sget_simple_extent_ndims_f' - error stop - endif - - allocate(shape(rank)) - allocate(max_shape(rank)) - - call h5sget_simple_extent_dims_f(space_id,shape,max_shape,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 548 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sget_simple_extent_dims_f' - error stop - endif - - call h5sclose_f(space_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 550 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 551 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end function attr_shape - - - function dset_shape(self, item_name) result(shape) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(HSIZE_T), allocatable :: shape(:) - - integer :: hdf_err - integer(HID_T) :: item_id - integer(HID_T) :: space_id - integer :: rank - integer(HSIZE_T), allocatable :: max_shape(:) - - ! Get the shape of the item - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 539 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - - call h5dget_space_f(item_id,space_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 541 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dget_space_f' - error stop - endif - - call h5sget_simple_extent_ndims_f(space_id,rank,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 543 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sget_simple_extent_ndims_f' - error stop - endif - - allocate(shape(rank)) - allocate(max_shape(rank)) - - call h5sget_simple_extent_dims_f(space_id,shape,max_shape,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 548 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sget_simple_extent_dims_f' - error stop - endif - - call h5sclose_f(space_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 550 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 551 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end function dset_shape - - - !**** - - - - subroutine read_attr_is_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(out) :: data - - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Read the item - - mem_type_id = mem_type_id_is - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_is_0_ - - - subroutine read_attr_id_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(out) :: data - - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Read the item - - mem_type_id = mem_type_id_id - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_id_0_ - - - subroutine read_attr_rs_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(out) :: data - - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Read the item - - mem_type_id = mem_type_id_rs - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_rs_0_ - - - subroutine read_attr_rd_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(out) :: data - - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Read the item - - mem_type_id = mem_type_id_rd - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_rd_0_ - - - subroutine read_attr_cs_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(out) :: data - - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Read the item - - mem_type_id = mem_type_id_cs - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_cs_0_ - - - subroutine read_attr_cd_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(out) :: data - - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Read the item - - mem_type_id = mem_type_id_cd - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_cd_0_ - - - - subroutine read_attr_s_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(out) :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - - ! Read the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 644 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 645 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 649 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 650 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 651 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 653 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_s_0_ - - - - subroutine read_attr_l_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(out) :: data - - integer, allocatable :: data_i - - ! Read the logical item - - call self%alloc_read_attr(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_attr_l_0_ - - - - - subroutine read_attr_is_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(out) :: data(:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_is - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_is_1_ - - - subroutine read_attr_id_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(out) :: data(:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_id - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_id_1_ - - - subroutine read_attr_rs_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(out) :: data(:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rs - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_rs_1_ - - - subroutine read_attr_rd_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(out) :: data(:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rd - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_rd_1_ - - - subroutine read_attr_cs_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(out) :: data(:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cs - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_cs_1_ - - - subroutine read_attr_cd_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(out) :: data(:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cd - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_cd_1_ - - - - subroutine read_attr_s_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(out) :: data(:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 637 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 638 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 644 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 645 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 649 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 650 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 651 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 653 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_s_1_ - - - - subroutine read_attr_l_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(out) :: data(:) - contiguous :: data - - integer, allocatable :: data_i(:) - - ! Read the logical item - - call self%alloc_read_attr(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_attr_l_1_ - - - - - subroutine read_attr_is_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(out) :: data(:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_is - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_is_2_ - - - subroutine read_attr_id_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(out) :: data(:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_id - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_id_2_ - - - subroutine read_attr_rs_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(out) :: data(:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rs - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_rs_2_ - - - subroutine read_attr_rd_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(out) :: data(:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rd - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_rd_2_ - - - subroutine read_attr_cs_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(out) :: data(:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cs - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_cs_2_ - - - subroutine read_attr_cd_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(out) :: data(:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cd - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_cd_2_ - - - - subroutine read_attr_s_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(out) :: data(:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 637 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 638 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 644 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 645 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 649 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 650 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 651 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 653 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_s_2_ - - - - subroutine read_attr_l_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(out) :: data(:,:) - contiguous :: data - - integer, allocatable :: data_i(:,:) - - ! Read the logical item - - call self%alloc_read_attr(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_attr_l_2_ - - - - - subroutine read_attr_is_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(out) :: data(:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_is - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_is_3_ - - - subroutine read_attr_id_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(out) :: data(:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_id - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_id_3_ - - - subroutine read_attr_rs_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(out) :: data(:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rs - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_rs_3_ - - - subroutine read_attr_rd_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(out) :: data(:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rd - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_rd_3_ - - - subroutine read_attr_cs_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(out) :: data(:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cs - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_cs_3_ - - - subroutine read_attr_cd_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(out) :: data(:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cd - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_cd_3_ - - - - subroutine read_attr_s_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(out) :: data(:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 637 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 638 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 644 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 645 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 649 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 650 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 651 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 653 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_s_3_ - - - - subroutine read_attr_l_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(out) :: data(:,:,:) - contiguous :: data - - integer, allocatable :: data_i(:,:,:) - - ! Read the logical item - - call self%alloc_read_attr(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_attr_l_3_ - - - - - subroutine read_attr_is_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(out) :: data(:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_is - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_is_4_ - - - subroutine read_attr_id_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(out) :: data(:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_id - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_id_4_ - - - subroutine read_attr_rs_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(out) :: data(:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rs - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_rs_4_ - - - subroutine read_attr_rd_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(out) :: data(:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rd - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_rd_4_ - - - subroutine read_attr_cs_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(out) :: data(:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cs - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_cs_4_ - - - subroutine read_attr_cd_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(out) :: data(:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cd - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_cd_4_ - - - - subroutine read_attr_s_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(out) :: data(:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 637 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 638 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 644 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 645 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 649 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 650 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 651 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 653 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_s_4_ - - - - subroutine read_attr_l_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(out) :: data(:,:,:,:) - contiguous :: data - - integer, allocatable :: data_i(:,:,:,:) - - ! Read the logical item - - call self%alloc_read_attr(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_attr_l_4_ - - - - - subroutine read_attr_is_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(out) :: data(:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_is - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_is_5_ - - - subroutine read_attr_id_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(out) :: data(:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_id - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_id_5_ - - - subroutine read_attr_rs_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(out) :: data(:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rs - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_rs_5_ - - - subroutine read_attr_rd_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(out) :: data(:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rd - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_rd_5_ - - - subroutine read_attr_cs_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(out) :: data(:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cs - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_cs_5_ - - - subroutine read_attr_cd_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(out) :: data(:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cd - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_cd_5_ - - - - subroutine read_attr_s_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(out) :: data(:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 637 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 638 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 644 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 645 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 649 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 650 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 651 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 653 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_s_5_ - - - - subroutine read_attr_l_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(out) :: data(:,:,:,:,:) - contiguous :: data - - integer, allocatable :: data_i(:,:,:,:,:) - - ! Read the logical item - - call self%alloc_read_attr(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_attr_l_5_ - - - - - subroutine read_attr_is_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(out) :: data(:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_is - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_is_6_ - - - subroutine read_attr_id_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(out) :: data(:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_id - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_id_6_ - - - subroutine read_attr_rs_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(out) :: data(:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rs - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_rs_6_ - - - subroutine read_attr_rd_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(out) :: data(:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rd - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_rd_6_ - - - subroutine read_attr_cs_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(out) :: data(:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cs - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_cs_6_ - - - subroutine read_attr_cd_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(out) :: data(:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cd - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_cd_6_ - - - - subroutine read_attr_s_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(out) :: data(:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 637 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 638 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 644 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 645 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 649 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 650 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 651 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 653 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_s_6_ - - - - subroutine read_attr_l_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(out) :: data(:,:,:,:,:,:) - contiguous :: data - - integer, allocatable :: data_i(:,:,:,:,:,:) - - ! Read the logical item - - call self%alloc_read_attr(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_attr_l_6_ - - - - - subroutine read_attr_is_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(out) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_is - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_is_7_ - - - subroutine read_attr_id_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(out) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_id - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_id_7_ - - - subroutine read_attr_rs_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(out) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rs - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_rs_7_ - - - subroutine read_attr_rd_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(out) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rd - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_rd_7_ - - - subroutine read_attr_cs_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(out) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cs - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_cs_7_ - - - subroutine read_attr_cd_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(out) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cd - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_cd_7_ - - - - subroutine read_attr_s_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(out) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - - ! Check rank and shape - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 637 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 638 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 644 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 645 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5aopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 649 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aopen_f' - error stop - endif - call h5aread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 650 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aread_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 651 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 653 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_attr_s_7_ - - - - subroutine read_attr_l_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(out) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer, allocatable :: data_i(:,:,:,:,:,:,:) - - ! Read the logical item - - call self%alloc_read_attr(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_attr_l_7_ - - - - - subroutine read_dset_is_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(out) :: data - - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Read the item - - mem_type_id = mem_type_id_is - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_is_0_ - - - subroutine read_dset_id_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(out) :: data - - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Read the item - - mem_type_id = mem_type_id_id - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_id_0_ - - - subroutine read_dset_rs_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(out) :: data - - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Read the item - - mem_type_id = mem_type_id_rs - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_rs_0_ - - - subroutine read_dset_rd_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(out) :: data - - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Read the item - - mem_type_id = mem_type_id_rd - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_rd_0_ - - - subroutine read_dset_cs_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(out) :: data - - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Read the item - - mem_type_id = mem_type_id_cs - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_cs_0_ - - - subroutine read_dset_cd_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(out) :: data - - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Read the item - - mem_type_id = mem_type_id_cd - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_cd_0_ - - - - subroutine read_dset_s_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(out) :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - - ! Read the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 644 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 645 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 649 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 650 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 651 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 653 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_s_0_ - - - - subroutine read_dset_l_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(out) :: data - - integer, allocatable :: data_i - - ! Read the logical item - - call self%alloc_read_dset(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_dset_l_0_ - - - - - subroutine read_dset_is_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(out) :: data(:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_is - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_is_1_ - - - subroutine read_dset_id_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(out) :: data(:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_id - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_id_1_ - - - subroutine read_dset_rs_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(out) :: data(:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rs - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_rs_1_ - - - subroutine read_dset_rd_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(out) :: data(:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rd - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_rd_1_ - - - subroutine read_dset_cs_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(out) :: data(:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cs - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_cs_1_ - - - subroutine read_dset_cd_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(out) :: data(:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cd - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_cd_1_ - - - - subroutine read_dset_s_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(out) :: data(:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 637 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 638 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 644 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 645 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 649 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 650 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 651 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 653 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_s_1_ - - - - subroutine read_dset_l_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(out) :: data(:) - contiguous :: data - - integer, allocatable :: data_i(:) - - ! Read the logical item - - call self%alloc_read_dset(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_dset_l_1_ - - - - - subroutine read_dset_is_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(out) :: data(:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_is - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_is_2_ - - - subroutine read_dset_id_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(out) :: data(:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_id - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_id_2_ - - - subroutine read_dset_rs_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(out) :: data(:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rs - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_rs_2_ - - - subroutine read_dset_rd_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(out) :: data(:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rd - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_rd_2_ - - - subroutine read_dset_cs_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(out) :: data(:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cs - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_cs_2_ - - - subroutine read_dset_cd_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(out) :: data(:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cd - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_cd_2_ - - - - subroutine read_dset_s_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(out) :: data(:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 637 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 638 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 644 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 645 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 649 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 650 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 651 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 653 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_s_2_ - - - - subroutine read_dset_l_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(out) :: data(:,:) - contiguous :: data - - integer, allocatable :: data_i(:,:) - - ! Read the logical item - - call self%alloc_read_dset(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_dset_l_2_ - - - - - subroutine read_dset_is_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(out) :: data(:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_is - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_is_3_ - - - subroutine read_dset_id_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(out) :: data(:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_id - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_id_3_ - - - subroutine read_dset_rs_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(out) :: data(:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rs - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_rs_3_ - - - subroutine read_dset_rd_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(out) :: data(:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rd - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_rd_3_ - - - subroutine read_dset_cs_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(out) :: data(:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cs - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_cs_3_ - - - subroutine read_dset_cd_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(out) :: data(:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cd - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_cd_3_ - - - - subroutine read_dset_s_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(out) :: data(:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 637 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 638 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 644 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 645 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 649 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 650 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 651 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 653 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_s_3_ - - - - subroutine read_dset_l_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(out) :: data(:,:,:) - contiguous :: data - - integer, allocatable :: data_i(:,:,:) - - ! Read the logical item - - call self%alloc_read_dset(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_dset_l_3_ - - - - - subroutine read_dset_is_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(out) :: data(:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_is - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_is_4_ - - - subroutine read_dset_id_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(out) :: data(:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_id - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_id_4_ - - - subroutine read_dset_rs_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(out) :: data(:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rs - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_rs_4_ - - - subroutine read_dset_rd_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(out) :: data(:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rd - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_rd_4_ - - - subroutine read_dset_cs_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(out) :: data(:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cs - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_cs_4_ - - - subroutine read_dset_cd_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(out) :: data(:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cd - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_cd_4_ - - - - subroutine read_dset_s_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(out) :: data(:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 637 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 638 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 644 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 645 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 649 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 650 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 651 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 653 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_s_4_ - - - - subroutine read_dset_l_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(out) :: data(:,:,:,:) - contiguous :: data - - integer, allocatable :: data_i(:,:,:,:) - - ! Read the logical item - - call self%alloc_read_dset(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_dset_l_4_ - - - - - subroutine read_dset_is_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(out) :: data(:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_is - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_is_5_ - - - subroutine read_dset_id_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(out) :: data(:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_id - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_id_5_ - - - subroutine read_dset_rs_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(out) :: data(:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rs - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_rs_5_ - - - subroutine read_dset_rd_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(out) :: data(:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rd - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_rd_5_ - - - subroutine read_dset_cs_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(out) :: data(:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cs - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_cs_5_ - - - subroutine read_dset_cd_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(out) :: data(:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cd - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_cd_5_ - - - - subroutine read_dset_s_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(out) :: data(:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 637 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 638 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 644 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 645 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 649 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 650 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 651 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 653 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_s_5_ - - - - subroutine read_dset_l_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(out) :: data(:,:,:,:,:) - contiguous :: data - - integer, allocatable :: data_i(:,:,:,:,:) - - ! Read the logical item - - call self%alloc_read_dset(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_dset_l_5_ - - - - - subroutine read_dset_is_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(out) :: data(:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_is - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_is_6_ - - - subroutine read_dset_id_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(out) :: data(:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_id - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_id_6_ - - - subroutine read_dset_rs_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(out) :: data(:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rs - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_rs_6_ - - - subroutine read_dset_rd_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(out) :: data(:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rd - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_rd_6_ - - - subroutine read_dset_cs_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(out) :: data(:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cs - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_cs_6_ - - - subroutine read_dset_cd_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(out) :: data(:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cd - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_cd_6_ - - - - subroutine read_dset_s_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(out) :: data(:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 637 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 638 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 644 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 645 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 649 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 650 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 651 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 653 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_s_6_ - - - - subroutine read_dset_l_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(out) :: data(:,:,:,:,:,:) - contiguous :: data - - integer, allocatable :: data_i(:,:,:,:,:,:) - - ! Read the logical item - - call self%alloc_read_dset(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_dset_l_6_ - - - - - subroutine read_dset_is_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(out) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_is - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_is_7_ - - - subroutine read_dset_id_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(out) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_id - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_id_7_ - - - subroutine read_dset_rs_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(out) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rs - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_rs_7_ - - - subroutine read_dset_rd_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(out) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_rd - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_rd_7_ - - - subroutine read_dset_cs_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(out) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cs - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_cs_7_ - - - subroutine read_dset_cd_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(out) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 590 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 591 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the item - - mem_type_id = mem_type_id_cd - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 601 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 602 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 603 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_cd_7_ - - - - subroutine read_dset_s_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(out) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer(HSIZE_T), allocatable :: item_shape(:) - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - - ! Check rank and shape - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 637 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - if (.NOT. (ALL(item_shape == SHAPE(data)))) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 638 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "ALL(item_shape == SHAPE(data))" failed with message "shape mismatch"' - error stop - end if - - - ! Read the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 644 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 645 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5dopen_f(self%group_id,item_name,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 649 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dopen_f' - error stop - endif - call h5dread_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 650 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dread_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 651 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 653 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine read_dset_s_7_ - - - - subroutine read_dset_l_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(out) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer, allocatable :: data_i(:,:,:,:,:,:,:) - - ! Read the logical item - - call self%alloc_read_dset(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_dset_l_7_ - - - - !**** - - - subroutine alloc_read_attr_is_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), allocatable, intent(out) :: data - - - ! Allocate the item - - - allocate(data) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_is_0_ - - - subroutine alloc_read_attr_id_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), allocatable, intent(out) :: data - - - ! Allocate the item - - - allocate(data) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_id_0_ - - - subroutine alloc_read_attr_rs_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), allocatable, intent(out) :: data - - - ! Allocate the item - - - allocate(data) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_rs_0_ - - - subroutine alloc_read_attr_rd_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), allocatable, intent(out) :: data - - - ! Allocate the item - - - allocate(data) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_rd_0_ - - - subroutine alloc_read_attr_cs_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), allocatable, intent(out) :: data - - - ! Allocate the item - - - allocate(data) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_cs_0_ - - - subroutine alloc_read_attr_cd_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), allocatable, intent(out) :: data - - - ! Allocate the item - - - allocate(data) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_cd_0_ - - - subroutine alloc_read_attr_l_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, allocatable, intent(out) :: data - - - ! Allocate the item - - - allocate(data) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_l_0_ - - - subroutine alloc_read_attr_s_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), allocatable, intent(out) :: data - - - ! Allocate the item - - - allocate(data) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_s_0_ - - - subroutine alloc_read_attr_is_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), allocatable, intent(out) :: data(:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_is_1_ - - - subroutine alloc_read_attr_id_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), allocatable, intent(out) :: data(:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_id_1_ - - - subroutine alloc_read_attr_rs_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), allocatable, intent(out) :: data(:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_rs_1_ - - - subroutine alloc_read_attr_rd_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), allocatable, intent(out) :: data(:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_rd_1_ - - - subroutine alloc_read_attr_cs_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), allocatable, intent(out) :: data(:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_cs_1_ - - - subroutine alloc_read_attr_cd_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), allocatable, intent(out) :: data(:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_cd_1_ - - - subroutine alloc_read_attr_l_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, allocatable, intent(out) :: data(:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_l_1_ - - - subroutine alloc_read_attr_s_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), allocatable, intent(out) :: data(:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_s_1_ - - - subroutine alloc_read_attr_is_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), allocatable, intent(out) :: data(:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_is_2_ - - - subroutine alloc_read_attr_id_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), allocatable, intent(out) :: data(:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_id_2_ - - - subroutine alloc_read_attr_rs_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), allocatable, intent(out) :: data(:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_rs_2_ - - - subroutine alloc_read_attr_rd_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), allocatable, intent(out) :: data(:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_rd_2_ - - - subroutine alloc_read_attr_cs_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), allocatable, intent(out) :: data(:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_cs_2_ - - - subroutine alloc_read_attr_cd_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), allocatable, intent(out) :: data(:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_cd_2_ - - - subroutine alloc_read_attr_l_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, allocatable, intent(out) :: data(:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_l_2_ - - - subroutine alloc_read_attr_s_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), allocatable, intent(out) :: data(:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_s_2_ - - - subroutine alloc_read_attr_is_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), allocatable, intent(out) :: data(:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_is_3_ - - - subroutine alloc_read_attr_id_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), allocatable, intent(out) :: data(:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_id_3_ - - - subroutine alloc_read_attr_rs_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), allocatable, intent(out) :: data(:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_rs_3_ - - - subroutine alloc_read_attr_rd_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), allocatable, intent(out) :: data(:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_rd_3_ - - - subroutine alloc_read_attr_cs_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), allocatable, intent(out) :: data(:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_cs_3_ - - - subroutine alloc_read_attr_cd_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), allocatable, intent(out) :: data(:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_cd_3_ - - - subroutine alloc_read_attr_l_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, allocatable, intent(out) :: data(:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_l_3_ - - - subroutine alloc_read_attr_s_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), allocatable, intent(out) :: data(:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_s_3_ - - - subroutine alloc_read_attr_is_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), allocatable, intent(out) :: data(:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_is_4_ - - - subroutine alloc_read_attr_id_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), allocatable, intent(out) :: data(:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_id_4_ - - - subroutine alloc_read_attr_rs_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), allocatable, intent(out) :: data(:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_rs_4_ - - - subroutine alloc_read_attr_rd_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), allocatable, intent(out) :: data(:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_rd_4_ - - - subroutine alloc_read_attr_cs_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), allocatable, intent(out) :: data(:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_cs_4_ - - - subroutine alloc_read_attr_cd_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), allocatable, intent(out) :: data(:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_cd_4_ - - - subroutine alloc_read_attr_l_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, allocatable, intent(out) :: data(:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_l_4_ - - - subroutine alloc_read_attr_s_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), allocatable, intent(out) :: data(:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_s_4_ - - - subroutine alloc_read_attr_is_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), allocatable, intent(out) :: data(:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_is_5_ - - - subroutine alloc_read_attr_id_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), allocatable, intent(out) :: data(:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_id_5_ - - - subroutine alloc_read_attr_rs_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), allocatable, intent(out) :: data(:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_rs_5_ - - - subroutine alloc_read_attr_rd_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), allocatable, intent(out) :: data(:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_rd_5_ - - - subroutine alloc_read_attr_cs_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), allocatable, intent(out) :: data(:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_cs_5_ - - - subroutine alloc_read_attr_cd_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), allocatable, intent(out) :: data(:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_cd_5_ - - - subroutine alloc_read_attr_l_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, allocatable, intent(out) :: data(:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_l_5_ - - - subroutine alloc_read_attr_s_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), allocatable, intent(out) :: data(:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_s_5_ - - - subroutine alloc_read_attr_is_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), allocatable, intent(out) :: data(:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_is_6_ - - - subroutine alloc_read_attr_id_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), allocatable, intent(out) :: data(:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_id_6_ - - - subroutine alloc_read_attr_rs_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), allocatable, intent(out) :: data(:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_rs_6_ - - - subroutine alloc_read_attr_rd_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), allocatable, intent(out) :: data(:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_rd_6_ - - - subroutine alloc_read_attr_cs_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), allocatable, intent(out) :: data(:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_cs_6_ - - - subroutine alloc_read_attr_cd_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), allocatable, intent(out) :: data(:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_cd_6_ - - - subroutine alloc_read_attr_l_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, allocatable, intent(out) :: data(:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_l_6_ - - - subroutine alloc_read_attr_s_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), allocatable, intent(out) :: data(:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_s_6_ - - - subroutine alloc_read_attr_is_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), allocatable, intent(out) :: data(:,:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6),item_shape(7))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_is_7_ - - - subroutine alloc_read_attr_id_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), allocatable, intent(out) :: data(:,:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6),item_shape(7))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_id_7_ - - - subroutine alloc_read_attr_rs_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), allocatable, intent(out) :: data(:,:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6),item_shape(7))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_rs_7_ - - - subroutine alloc_read_attr_rd_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), allocatable, intent(out) :: data(:,:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6),item_shape(7))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_rd_7_ - - - subroutine alloc_read_attr_cs_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), allocatable, intent(out) :: data(:,:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6),item_shape(7))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_cs_7_ - - - subroutine alloc_read_attr_cd_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), allocatable, intent(out) :: data(:,:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6),item_shape(7))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_cd_7_ - - - subroutine alloc_read_attr_l_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, allocatable, intent(out) :: data(:,:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6),item_shape(7))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_l_7_ - - - subroutine alloc_read_attr_s_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), allocatable, intent(out) :: data(:,:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%attr_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6),item_shape(7))) - - - ! Read the item - - call self%read_attr(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_attr_s_7_ - - - subroutine alloc_read_dset_is_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), allocatable, intent(out) :: data - - - ! Allocate the item - - - allocate(data) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_is_0_ - - - subroutine alloc_read_dset_id_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), allocatable, intent(out) :: data - - - ! Allocate the item - - - allocate(data) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_id_0_ - - - subroutine alloc_read_dset_rs_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), allocatable, intent(out) :: data - - - ! Allocate the item - - - allocate(data) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_rs_0_ - - - subroutine alloc_read_dset_rd_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), allocatable, intent(out) :: data - - - ! Allocate the item - - - allocate(data) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_rd_0_ - - - subroutine alloc_read_dset_cs_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), allocatable, intent(out) :: data - - - ! Allocate the item - - - allocate(data) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_cs_0_ - - - subroutine alloc_read_dset_cd_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), allocatable, intent(out) :: data - - - ! Allocate the item - - - allocate(data) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_cd_0_ - - - subroutine alloc_read_dset_l_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, allocatable, intent(out) :: data - - - ! Allocate the item - - - allocate(data) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_l_0_ - - - subroutine alloc_read_dset_s_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), allocatable, intent(out) :: data - - - ! Allocate the item - - - allocate(data) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_s_0_ - - - subroutine alloc_read_dset_is_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), allocatable, intent(out) :: data(:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_is_1_ - - - subroutine alloc_read_dset_id_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), allocatable, intent(out) :: data(:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_id_1_ - - - subroutine alloc_read_dset_rs_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), allocatable, intent(out) :: data(:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_rs_1_ - - - subroutine alloc_read_dset_rd_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), allocatable, intent(out) :: data(:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_rd_1_ - - - subroutine alloc_read_dset_cs_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), allocatable, intent(out) :: data(:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_cs_1_ - - - subroutine alloc_read_dset_cd_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), allocatable, intent(out) :: data(:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_cd_1_ - - - subroutine alloc_read_dset_l_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, allocatable, intent(out) :: data(:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_l_1_ - - - subroutine alloc_read_dset_s_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), allocatable, intent(out) :: data(:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 1)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 1" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_s_1_ - - - subroutine alloc_read_dset_is_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), allocatable, intent(out) :: data(:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_is_2_ - - - subroutine alloc_read_dset_id_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), allocatable, intent(out) :: data(:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_id_2_ - - - subroutine alloc_read_dset_rs_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), allocatable, intent(out) :: data(:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_rs_2_ - - - subroutine alloc_read_dset_rd_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), allocatable, intent(out) :: data(:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_rd_2_ - - - subroutine alloc_read_dset_cs_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), allocatable, intent(out) :: data(:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_cs_2_ - - - subroutine alloc_read_dset_cd_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), allocatable, intent(out) :: data(:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_cd_2_ - - - subroutine alloc_read_dset_l_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, allocatable, intent(out) :: data(:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_l_2_ - - - subroutine alloc_read_dset_s_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), allocatable, intent(out) :: data(:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 2)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 2" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_s_2_ - - - subroutine alloc_read_dset_is_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), allocatable, intent(out) :: data(:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_is_3_ - - - subroutine alloc_read_dset_id_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), allocatable, intent(out) :: data(:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_id_3_ - - - subroutine alloc_read_dset_rs_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), allocatable, intent(out) :: data(:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_rs_3_ - - - subroutine alloc_read_dset_rd_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), allocatable, intent(out) :: data(:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_rd_3_ - - - subroutine alloc_read_dset_cs_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), allocatable, intent(out) :: data(:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_cs_3_ - - - subroutine alloc_read_dset_cd_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), allocatable, intent(out) :: data(:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_cd_3_ - - - subroutine alloc_read_dset_l_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, allocatable, intent(out) :: data(:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_l_3_ - - - subroutine alloc_read_dset_s_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), allocatable, intent(out) :: data(:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 3)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 3" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_s_3_ - - - subroutine alloc_read_dset_is_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), allocatable, intent(out) :: data(:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_is_4_ - - - subroutine alloc_read_dset_id_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), allocatable, intent(out) :: data(:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_id_4_ - - - subroutine alloc_read_dset_rs_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), allocatable, intent(out) :: data(:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_rs_4_ - - - subroutine alloc_read_dset_rd_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), allocatable, intent(out) :: data(:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_rd_4_ - - - subroutine alloc_read_dset_cs_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), allocatable, intent(out) :: data(:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_cs_4_ - - - subroutine alloc_read_dset_cd_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), allocatable, intent(out) :: data(:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_cd_4_ - - - subroutine alloc_read_dset_l_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, allocatable, intent(out) :: data(:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_l_4_ - - - subroutine alloc_read_dset_s_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), allocatable, intent(out) :: data(:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 4)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 4" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_s_4_ - - - subroutine alloc_read_dset_is_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), allocatable, intent(out) :: data(:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_is_5_ - - - subroutine alloc_read_dset_id_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), allocatable, intent(out) :: data(:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_id_5_ - - - subroutine alloc_read_dset_rs_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), allocatable, intent(out) :: data(:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_rs_5_ - - - subroutine alloc_read_dset_rd_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), allocatable, intent(out) :: data(:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_rd_5_ - - - subroutine alloc_read_dset_cs_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), allocatable, intent(out) :: data(:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_cs_5_ - - - subroutine alloc_read_dset_cd_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), allocatable, intent(out) :: data(:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_cd_5_ - - - subroutine alloc_read_dset_l_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, allocatable, intent(out) :: data(:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_l_5_ - - - subroutine alloc_read_dset_s_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), allocatable, intent(out) :: data(:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 5)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 5" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_s_5_ - - - subroutine alloc_read_dset_is_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), allocatable, intent(out) :: data(:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_is_6_ - - - subroutine alloc_read_dset_id_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), allocatable, intent(out) :: data(:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_id_6_ - - - subroutine alloc_read_dset_rs_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), allocatable, intent(out) :: data(:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_rs_6_ - - - subroutine alloc_read_dset_rd_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), allocatable, intent(out) :: data(:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_rd_6_ - - - subroutine alloc_read_dset_cs_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), allocatable, intent(out) :: data(:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_cs_6_ - - - subroutine alloc_read_dset_cd_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), allocatable, intent(out) :: data(:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_cd_6_ - - - subroutine alloc_read_dset_l_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, allocatable, intent(out) :: data(:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_l_6_ - - - subroutine alloc_read_dset_s_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), allocatable, intent(out) :: data(:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 6)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 6" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_s_6_ - - - subroutine alloc_read_dset_is_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), allocatable, intent(out) :: data(:,:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6),item_shape(7))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_is_7_ - - - subroutine alloc_read_dset_id_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), allocatable, intent(out) :: data(:,:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6),item_shape(7))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_id_7_ - - - subroutine alloc_read_dset_rs_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), allocatable, intent(out) :: data(:,:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6),item_shape(7))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_rs_7_ - - - subroutine alloc_read_dset_rd_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), allocatable, intent(out) :: data(:,:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6),item_shape(7))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_rd_7_ - - - subroutine alloc_read_dset_cs_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), allocatable, intent(out) :: data(:,:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6),item_shape(7))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_cs_7_ - - - subroutine alloc_read_dset_cd_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), allocatable, intent(out) :: data(:,:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6),item_shape(7))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_cd_7_ - - - subroutine alloc_read_dset_l_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, allocatable, intent(out) :: data(:,:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6),item_shape(7))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_l_7_ - - - subroutine alloc_read_dset_s_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), allocatable, intent(out) :: data(:,:,:,:,:,:,:) - - integer(HSIZE_T), allocatable :: item_shape(:) - - ! Allocate the item - - - item_shape = self%dset_shape(item_name) - if (.NOT. (SIZE(item_shape) == 7)) then - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 714 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'assertion "SIZE(item_shape) == 7" failed with message "rank mismatch"' - error stop - end if - - allocate(data(item_shape(1),item_shape(2),item_shape(3),item_shape(4),item_shape(5),item_shape(6),item_shape(7))) - - - ! Read the item - - call self%read_dset(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_dset_s_7_ - - - !**** - - - - subroutine write_attr_is_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(in) :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_f(H5S_SCALAR_F,dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 767 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_is - file_type_id = file_type_id_is - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_is_0_ - - - subroutine write_attr_id_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(in) :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_f(H5S_SCALAR_F,dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 767 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_id - file_type_id = file_type_id_id - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_id_0_ - - - subroutine write_attr_rs_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(in) :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_f(H5S_SCALAR_F,dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 767 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rs - file_type_id = file_type_id_rs - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_rs_0_ - - - subroutine write_attr_rd_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(in) :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_f(H5S_SCALAR_F,dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 767 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rd - file_type_id = file_type_id_rd - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_rd_0_ - - - subroutine write_attr_cs_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(in) :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_f(H5S_SCALAR_F,dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 767 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cs - file_type_id = file_type_id_cs - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_cs_0_ - - - subroutine write_attr_cd_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(in) :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_f(H5S_SCALAR_F,dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 767 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cd - file_type_id = file_type_id_cd - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_cd_0_ - - - - subroutine write_attr_s_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(in) :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 824 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 825 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5tcopy_f(H5T_NATIVE_CHARACTER,file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 827 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(file_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 828 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5screate_f(H5S_SCALAR_F,dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 833 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 838 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 839 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 840 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 842 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 844 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 845 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_s_0_ - - - - subroutine write_attr_l_0_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(in) :: data - - ! Write the logical item - - call self%write_attr(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_attr_l_0_ - - - - - subroutine write_attr_is_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(in) :: data(:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(1,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_is - file_type_id = file_type_id_is - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_is_1_ - - - subroutine write_attr_id_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(in) :: data(:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(1,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_id - file_type_id = file_type_id_id - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_id_1_ - - - subroutine write_attr_rs_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(in) :: data(:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(1,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rs - file_type_id = file_type_id_rs - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_rs_1_ - - - subroutine write_attr_rd_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(in) :: data(:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(1,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rd - file_type_id = file_type_id_rd - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_rd_1_ - - - subroutine write_attr_cs_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(in) :: data(:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(1,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cs - file_type_id = file_type_id_cs - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_cs_1_ - - - subroutine write_attr_cd_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(in) :: data(:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(1,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cd - file_type_id = file_type_id_cd - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_cd_1_ - - - - subroutine write_attr_s_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(in) :: data(:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 824 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 825 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5tcopy_f(H5T_NATIVE_CHARACTER,file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 827 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(file_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 828 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5screate_simple_f(1,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 831 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 838 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 839 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 840 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 842 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 844 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 845 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_s_1_ - - - - subroutine write_attr_l_1_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(in) :: data(:) - contiguous :: data - - ! Write the logical item - - call self%write_attr(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_attr_l_1_ - - - - - subroutine write_attr_is_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(in) :: data(:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(2,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_is - file_type_id = file_type_id_is - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_is_2_ - - - subroutine write_attr_id_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(in) :: data(:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(2,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_id - file_type_id = file_type_id_id - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_id_2_ - - - subroutine write_attr_rs_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(in) :: data(:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(2,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rs - file_type_id = file_type_id_rs - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_rs_2_ - - - subroutine write_attr_rd_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(in) :: data(:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(2,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rd - file_type_id = file_type_id_rd - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_rd_2_ - - - subroutine write_attr_cs_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(in) :: data(:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(2,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cs - file_type_id = file_type_id_cs - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_cs_2_ - - - subroutine write_attr_cd_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(in) :: data(:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(2,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cd - file_type_id = file_type_id_cd - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_cd_2_ - - - - subroutine write_attr_s_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(in) :: data(:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 824 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 825 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5tcopy_f(H5T_NATIVE_CHARACTER,file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 827 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(file_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 828 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5screate_simple_f(2,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 831 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 838 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 839 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 840 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 842 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 844 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 845 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_s_2_ - - - - subroutine write_attr_l_2_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(in) :: data(:,:) - contiguous :: data - - ! Write the logical item - - call self%write_attr(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_attr_l_2_ - - - - - subroutine write_attr_is_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(in) :: data(:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(3,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_is - file_type_id = file_type_id_is - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_is_3_ - - - subroutine write_attr_id_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(in) :: data(:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(3,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_id - file_type_id = file_type_id_id - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_id_3_ - - - subroutine write_attr_rs_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(in) :: data(:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(3,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rs - file_type_id = file_type_id_rs - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_rs_3_ - - - subroutine write_attr_rd_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(in) :: data(:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(3,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rd - file_type_id = file_type_id_rd - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_rd_3_ - - - subroutine write_attr_cs_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(in) :: data(:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(3,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cs - file_type_id = file_type_id_cs - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_cs_3_ - - - subroutine write_attr_cd_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(in) :: data(:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(3,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cd - file_type_id = file_type_id_cd - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_cd_3_ - - - - subroutine write_attr_s_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(in) :: data(:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 824 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 825 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5tcopy_f(H5T_NATIVE_CHARACTER,file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 827 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(file_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 828 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5screate_simple_f(3,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 831 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 838 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 839 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 840 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 842 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 844 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 845 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_s_3_ - - - - subroutine write_attr_l_3_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(in) :: data(:,:,:) - contiguous :: data - - ! Write the logical item - - call self%write_attr(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_attr_l_3_ - - - - - subroutine write_attr_is_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(in) :: data(:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(4,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_is - file_type_id = file_type_id_is - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_is_4_ - - - subroutine write_attr_id_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(in) :: data(:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(4,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_id - file_type_id = file_type_id_id - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_id_4_ - - - subroutine write_attr_rs_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(in) :: data(:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(4,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rs - file_type_id = file_type_id_rs - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_rs_4_ - - - subroutine write_attr_rd_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(in) :: data(:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(4,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rd - file_type_id = file_type_id_rd - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_rd_4_ - - - subroutine write_attr_cs_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(in) :: data(:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(4,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cs - file_type_id = file_type_id_cs - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_cs_4_ - - - subroutine write_attr_cd_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(in) :: data(:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(4,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cd - file_type_id = file_type_id_cd - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_cd_4_ - - - - subroutine write_attr_s_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(in) :: data(:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 824 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 825 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5tcopy_f(H5T_NATIVE_CHARACTER,file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 827 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(file_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 828 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5screate_simple_f(4,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 831 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 838 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 839 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 840 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 842 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 844 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 845 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_s_4_ - - - - subroutine write_attr_l_4_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(in) :: data(:,:,:,:) - contiguous :: data - - ! Write the logical item - - call self%write_attr(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_attr_l_4_ - - - - - subroutine write_attr_is_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(in) :: data(:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(5,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_is - file_type_id = file_type_id_is - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_is_5_ - - - subroutine write_attr_id_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(in) :: data(:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(5,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_id - file_type_id = file_type_id_id - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_id_5_ - - - subroutine write_attr_rs_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(in) :: data(:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(5,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rs - file_type_id = file_type_id_rs - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_rs_5_ - - - subroutine write_attr_rd_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(in) :: data(:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(5,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rd - file_type_id = file_type_id_rd - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_rd_5_ - - - subroutine write_attr_cs_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(in) :: data(:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(5,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cs - file_type_id = file_type_id_cs - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_cs_5_ - - - subroutine write_attr_cd_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(in) :: data(:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(5,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cd - file_type_id = file_type_id_cd - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_cd_5_ - - - - subroutine write_attr_s_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(in) :: data(:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 824 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 825 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5tcopy_f(H5T_NATIVE_CHARACTER,file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 827 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(file_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 828 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5screate_simple_f(5,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 831 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 838 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 839 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 840 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 842 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 844 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 845 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_s_5_ - - - - subroutine write_attr_l_5_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(in) :: data(:,:,:,:,:) - contiguous :: data - - ! Write the logical item - - call self%write_attr(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_attr_l_5_ - - - - - subroutine write_attr_is_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(in) :: data(:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(6,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_is - file_type_id = file_type_id_is - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_is_6_ - - - subroutine write_attr_id_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(in) :: data(:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(6,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_id - file_type_id = file_type_id_id - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_id_6_ - - - subroutine write_attr_rs_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(in) :: data(:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(6,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rs - file_type_id = file_type_id_rs - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_rs_6_ - - - subroutine write_attr_rd_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(in) :: data(:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(6,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rd - file_type_id = file_type_id_rd - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_rd_6_ - - - subroutine write_attr_cs_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(in) :: data(:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(6,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cs - file_type_id = file_type_id_cs - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_cs_6_ - - - subroutine write_attr_cd_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(in) :: data(:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(6,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cd - file_type_id = file_type_id_cd - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_cd_6_ - - - - subroutine write_attr_s_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(in) :: data(:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 824 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 825 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5tcopy_f(H5T_NATIVE_CHARACTER,file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 827 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(file_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 828 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5screate_simple_f(6,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 831 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 838 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 839 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 840 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 842 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 844 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 845 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_s_6_ - - - - subroutine write_attr_l_6_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(in) :: data(:,:,:,:,:,:) - contiguous :: data - - ! Write the logical item - - call self%write_attr(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_attr_l_6_ - - - - - subroutine write_attr_is_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(in) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(7,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_is - file_type_id = file_type_id_is - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_is_7_ - - - subroutine write_attr_id_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(in) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(7,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_id - file_type_id = file_type_id_id - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_id_7_ - - - subroutine write_attr_rs_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(in) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(7,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rs - file_type_id = file_type_id_rs - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_rs_7_ - - - subroutine write_attr_rd_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(in) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(7,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rd - file_type_id = file_type_id_rd - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_rd_7_ - - - subroutine write_attr_cs_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(in) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(7,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cs - file_type_id = file_type_id_cs - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_cs_7_ - - - subroutine write_attr_cd_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(in) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(7,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_ATTRIBUTE_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 771 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cd - file_type_id = file_type_id_cd - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,acpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 786 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_cd_7_ - - - - subroutine write_attr_s_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(in) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 824 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 825 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5tcopy_f(H5T_NATIVE_CHARACTER,file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 827 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(file_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 828 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5screate_simple_f(7,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 831 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5acreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 838 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5acreate_f' - error stop - endif - call h5awrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 839 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5awrite_f' - error stop - endif - call h5aclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 840 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5aclose_f' - error stop - endif - - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 842 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 844 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 845 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_attr_s_7_ - - - - subroutine write_attr_l_7_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(in) :: data(:,:,:,:,:,:,:) - contiguous :: data - - ! Write the logical item - - call self%write_attr(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_attr_l_7_ - - - - - subroutine write_dset_is_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(in) :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_f(H5S_SCALAR_F,dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 767 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_is - file_type_id = file_type_id_is - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_is_0_ - - - subroutine write_dset_id_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(in) :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_f(H5S_SCALAR_F,dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 767 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_id - file_type_id = file_type_id_id - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_id_0_ - - - subroutine write_dset_rs_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(in) :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_f(H5S_SCALAR_F,dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 767 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rs - file_type_id = file_type_id_rs - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_rs_0_ - - - subroutine write_dset_rd_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(in) :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_f(H5S_SCALAR_F,dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 767 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_rd - file_type_id = file_type_id_rd - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_rd_0_ - - - subroutine write_dset_cs_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(in) :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_f(H5S_SCALAR_F,dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 767 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cs - file_type_id = file_type_id_cs - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_cs_0_ - - - subroutine write_dset_cd_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(in) :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_f(H5S_SCALAR_F,dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 767 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - - mem_type_id = mem_type_id_cd - file_type_id = file_type_id_cd - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_cd_0_ - - - - subroutine write_dset_s_0_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(in) :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 824 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 825 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5tcopy_f(H5T_NATIVE_CHARACTER,file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 827 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(file_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 828 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5screate_f(H5S_SCALAR_F,dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 833 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 838 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 839 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 840 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 842 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 844 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 845 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_s_0_ - - - - subroutine write_dset_l_0_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(in) :: data - - ! Write the logical item - - call self%write_dset(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_dset_l_0_ - - - - - subroutine write_dset_is_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(in) :: data(:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(1,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,1,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_is - file_type_id = file_type_id_is - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_is_1_ - - - subroutine write_dset_id_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(in) :: data(:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(1,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,1,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_id - file_type_id = file_type_id_id - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_id_1_ - - - subroutine write_dset_rs_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(in) :: data(:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(1,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,1,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_rs - file_type_id = file_type_id_rs - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_rs_1_ - - - subroutine write_dset_rd_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(in) :: data(:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(1,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,1,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_rd - file_type_id = file_type_id_rd - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_rd_1_ - - - subroutine write_dset_cs_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(in) :: data(:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(1,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,1,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_cs - file_type_id = file_type_id_cs - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_cs_1_ - - - subroutine write_dset_cd_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(in) :: data(:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(1,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,1,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_cd - file_type_id = file_type_id_cd - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_cd_1_ - - - - subroutine write_dset_s_1_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(in) :: data(:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 824 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 825 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5tcopy_f(H5T_NATIVE_CHARACTER,file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 827 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(file_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 828 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5screate_simple_f(1,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 831 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 838 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 839 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 840 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 842 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 844 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 845 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_s_1_ - - - - subroutine write_dset_l_1_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(in) :: data(:) - contiguous :: data - - ! Write the logical item - - call self%write_dset(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_dset_l_1_ - - - - - subroutine write_dset_is_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(in) :: data(:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(2,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,2,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_is - file_type_id = file_type_id_is - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_is_2_ - - - subroutine write_dset_id_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(in) :: data(:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(2,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,2,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_id - file_type_id = file_type_id_id - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_id_2_ - - - subroutine write_dset_rs_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(in) :: data(:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(2,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,2,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_rs - file_type_id = file_type_id_rs - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_rs_2_ - - - subroutine write_dset_rd_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(in) :: data(:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(2,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,2,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_rd - file_type_id = file_type_id_rd - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_rd_2_ - - - subroutine write_dset_cs_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(in) :: data(:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(2,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,2,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_cs - file_type_id = file_type_id_cs - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_cs_2_ - - - subroutine write_dset_cd_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(in) :: data(:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(2,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,2,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_cd - file_type_id = file_type_id_cd - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_cd_2_ - - - - subroutine write_dset_s_2_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(in) :: data(:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 824 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 825 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5tcopy_f(H5T_NATIVE_CHARACTER,file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 827 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(file_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 828 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5screate_simple_f(2,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 831 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 838 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 839 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 840 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 842 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 844 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 845 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_s_2_ - - - - subroutine write_dset_l_2_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(in) :: data(:,:) - contiguous :: data - - ! Write the logical item - - call self%write_dset(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_dset_l_2_ - - - - - subroutine write_dset_is_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(in) :: data(:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(3,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,3,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_is - file_type_id = file_type_id_is - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_is_3_ - - - subroutine write_dset_id_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(in) :: data(:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(3,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,3,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_id - file_type_id = file_type_id_id - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_id_3_ - - - subroutine write_dset_rs_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(in) :: data(:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(3,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,3,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_rs - file_type_id = file_type_id_rs - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_rs_3_ - - - subroutine write_dset_rd_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(in) :: data(:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(3,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,3,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_rd - file_type_id = file_type_id_rd - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_rd_3_ - - - subroutine write_dset_cs_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(in) :: data(:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(3,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,3,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_cs - file_type_id = file_type_id_cs - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_cs_3_ - - - subroutine write_dset_cd_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(in) :: data(:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(3,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,3,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_cd - file_type_id = file_type_id_cd - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_cd_3_ - - - - subroutine write_dset_s_3_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(in) :: data(:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 824 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 825 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5tcopy_f(H5T_NATIVE_CHARACTER,file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 827 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(file_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 828 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5screate_simple_f(3,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 831 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 838 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 839 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 840 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 842 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 844 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 845 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_s_3_ - - - - subroutine write_dset_l_3_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(in) :: data(:,:,:) - contiguous :: data - - ! Write the logical item - - call self%write_dset(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_dset_l_3_ - - - - - subroutine write_dset_is_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(in) :: data(:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(4,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,4,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_is - file_type_id = file_type_id_is - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_is_4_ - - - subroutine write_dset_id_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(in) :: data(:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(4,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,4,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_id - file_type_id = file_type_id_id - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_id_4_ - - - subroutine write_dset_rs_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(in) :: data(:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(4,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,4,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_rs - file_type_id = file_type_id_rs - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_rs_4_ - - - subroutine write_dset_rd_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(in) :: data(:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(4,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,4,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_rd - file_type_id = file_type_id_rd - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_rd_4_ - - - subroutine write_dset_cs_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(in) :: data(:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(4,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,4,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_cs - file_type_id = file_type_id_cs - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_cs_4_ - - - subroutine write_dset_cd_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(in) :: data(:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(4,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,4,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_cd - file_type_id = file_type_id_cd - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_cd_4_ - - - - subroutine write_dset_s_4_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(in) :: data(:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 824 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 825 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5tcopy_f(H5T_NATIVE_CHARACTER,file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 827 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(file_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 828 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5screate_simple_f(4,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 831 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 838 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 839 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 840 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 842 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 844 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 845 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_s_4_ - - - - subroutine write_dset_l_4_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(in) :: data(:,:,:,:) - contiguous :: data - - ! Write the logical item - - call self%write_dset(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_dset_l_4_ - - - - - subroutine write_dset_is_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(in) :: data(:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(5,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,5,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_is - file_type_id = file_type_id_is - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_is_5_ - - - subroutine write_dset_id_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(in) :: data(:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(5,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,5,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_id - file_type_id = file_type_id_id - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_id_5_ - - - subroutine write_dset_rs_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(in) :: data(:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(5,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,5,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_rs - file_type_id = file_type_id_rs - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_rs_5_ - - - subroutine write_dset_rd_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(in) :: data(:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(5,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,5,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_rd - file_type_id = file_type_id_rd - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_rd_5_ - - - subroutine write_dset_cs_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(in) :: data(:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(5,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,5,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_cs - file_type_id = file_type_id_cs - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_cs_5_ - - - subroutine write_dset_cd_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(in) :: data(:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(5,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,5,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_cd - file_type_id = file_type_id_cd - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_cd_5_ - - - - subroutine write_dset_s_5_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(in) :: data(:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 824 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 825 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5tcopy_f(H5T_NATIVE_CHARACTER,file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 827 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(file_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 828 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5screate_simple_f(5,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 831 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 838 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 839 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 840 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 842 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 844 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 845 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_s_5_ - - - - subroutine write_dset_l_5_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(in) :: data(:,:,:,:,:) - contiguous :: data - - ! Write the logical item - - call self%write_dset(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_dset_l_5_ - - - - - subroutine write_dset_is_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(in) :: data(:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(6,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,6,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_is - file_type_id = file_type_id_is - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_is_6_ - - - subroutine write_dset_id_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(in) :: data(:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(6,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,6,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_id - file_type_id = file_type_id_id - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_id_6_ - - - subroutine write_dset_rs_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(in) :: data(:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(6,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,6,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_rs - file_type_id = file_type_id_rs - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_rs_6_ - - - subroutine write_dset_rd_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(in) :: data(:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(6,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,6,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_rd - file_type_id = file_type_id_rd - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_rd_6_ - - - subroutine write_dset_cs_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(in) :: data(:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(6,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,6,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_cs - file_type_id = file_type_id_cs - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_cs_6_ - - - subroutine write_dset_cd_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(in) :: data(:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(6,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,6,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_cd - file_type_id = file_type_id_cd - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_cd_6_ - - - - subroutine write_dset_s_6_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(in) :: data(:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 824 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 825 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5tcopy_f(H5T_NATIVE_CHARACTER,file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 827 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(file_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 828 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5screate_simple_f(6,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 831 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 838 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 839 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 840 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 842 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 844 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 845 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_s_6_ - - - - subroutine write_dset_l_6_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(in) :: data(:,:,:,:,:,:) - contiguous :: data - - ! Write the logical item - - call self%write_dset(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_dset_l_6_ - - - - - subroutine write_dset_is_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(IS), target, intent(in) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(7,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,7,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_is - file_type_id = file_type_id_is - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_is_7_ - - - subroutine write_dset_id_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(ID), target, intent(in) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(7,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,7,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_id - file_type_id = file_type_id_id - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_id_7_ - - - subroutine write_dset_rs_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RS), target, intent(in) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(7,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,7,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_rs - file_type_id = file_type_id_rs - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_rs_7_ - - - subroutine write_dset_rd_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - real(RD), target, intent(in) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(7,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,7,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_rd - file_type_id = file_type_id_rd - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_rd_7_ - - - subroutine write_dset_cs_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RS), target, intent(in) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(7,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,7,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_cs - file_type_id = file_type_id_cs - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_cs_7_ - - - subroutine write_dset_cd_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - complex(RD), target, intent(in) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - call h5screate_simple_f(7,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 765 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - call h5pcreate_f(H5P_DATASET_CREATE_F,plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 773 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pcreate_f' - error stop - endif - call h5pset_chunk_f(plist_id,7,INT(SHAPE(data), HSIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 775 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_chunk_f' - error stop - endif - call h5pset_deflate_f(plist_id,self%comp_level,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 776 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pset_deflate_f' - error stop - endif - - mem_type_id = mem_type_id_cd - file_type_id = file_type_id_cd - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err,dcpl_id=plist_id) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 788 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 791 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5pclose_f(plist_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 792 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5pclose_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 793 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 794 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_cd_7_ - - - - subroutine write_dset_s_7_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - character(*), target, intent(in) :: data(:,:,:,:,:,:,:) - contiguous :: data - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - call h5tcopy_f(H5T_NATIVE_CHARACTER,mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 824 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(mem_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 825 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5tcopy_f(H5T_NATIVE_CHARACTER,file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 827 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tcopy_f' - error stop - endif - call h5tset_size_f(file_type_id,LEN(data, SIZE_T),hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 828 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tset_size_f' - error stop - endif - - call h5screate_simple_f(7,INT(SHAPE(data), HSIZE_T),dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 831 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5screate_simple_f' - error stop - endif - - data_ptr = C_LOC(data) - - call h5dcreate_f(self%group_id,item_name,file_type_id,dspace_id,item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 838 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dcreate_f' - error stop - endif - call h5dwrite_f(item_id,mem_type_id,data_ptr,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 839 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dwrite_f' - error stop - endif - call h5dclose_f(item_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 840 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5dclose_f' - error stop - endif - - call h5sclose_f(dspace_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 842 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5sclose_f' - error stop - endif - - call h5tclose_f(mem_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 844 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - call h5tclose_f(file_type_id,hdf_err) - if (hdf_err == -1) then - call h5eprint_f(hdf_err) - write(UNIT=ERROR_UNIT, FMT=*) 'ABORT at line 845 of hdf5io_m.fypp' - write(UNIT=ERROR_UNIT, FMT=*) 'error in call to h5tclose_f' - error stop - endif - - ! Finish - - return - - end subroutine write_dset_s_7_ - - - - subroutine write_dset_l_7_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - logical, target, intent(in) :: data(:,:,:,:,:,:,:) - contiguous :: data - - ! Write the logical item - - call self%write_dset(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_dset_l_7_ - - - -end module hdf5io_m diff --git a/hdf5io/private/hdf5io_m.fypp b/hdf5io/private/hdf5io_m.fypp deleted file mode 100644 index 3142d3848..000000000 --- a/hdf5io/private/hdf5io_m.fypp +++ /dev/null @@ -1,881 +0,0 @@ -! Module : hdf5io -! Purpose : definition of hdf5io_t type, supporting HDF5 input/output -! -! Copyright 2021 Rich Townsend -! -! This file is part of the ForUM (Fortran Utility Modules) -! package. ForUM is free software: you can redistribute it and/or -! modify it under the terms of the GNU General Public License as -! published by the Free Software Foundation, version 3. -! -! ForUM is distributed in the hope that it will be useful, but WITHOUT -! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -! License for more details. -! -! You should have received a copy of the GNU General Public License -! along with this program. If not, see . - -#:include 'forum.inc' -#:include 'hdf5io.inc' - -module hdf5io_m - - ! Uses - - use kinds_m - use cinter_m - - use hdf5 - - use ISO_FORTRAN_ENV - use ISO_C_BINDING - - ! No implicit typing - - implicit none - - ! Parameters - - integer, parameter :: CREATE_FILE = 1 - integer, parameter :: OPEN_FILE_RO = 2 - integer, parameter :: OPEN_FILE_RW = 3 - - integer, parameter :: TYPE_LEN = 31 - - ! Derived-type definitions - - type hdf5io_t - private - integer(HID_T) :: file_id = 0 - integer(HID_T) :: group_id = 0 - integer :: comp_level = 0 - integer, pointer :: ref_count => null() - contains - private - procedure, public :: final => final_ - #:for obj_type in ('group', 'attr', 'dset') - procedure, public :: ${obj_type}$_exists - #:endfor - #:for obj_type in ('group', 'dset') - procedure, public :: ${obj_type}$_names - #:endfor - #:for obj_type in ('attr', 'dset') - procedure, public :: ${obj_type}$_shape - #:endfor - #:for op in ('read', 'alloc_read', 'write') - #:for obj_type in ('attr', 'dset') - #:set proc_list = [] - #:for rank in range(RANK_MAX+1) - #:for type, suffix in zip(ALL_TYPES, ALL_SUFFIXES) - #:set proc = '{:s}_{:s}_{:s}_{:d}_'.format(op, obj_type, suffix, rank) - #:set proc_list = proc_list + [proc] - procedure :: ${proc}$ - #:endfor - #:endfor - generic, public :: ${op}$_${obj_type}$ => ${','.join(proc_list)}$ - #:endfor - #:endfor - end type hdf5io_t - - ! Module variables - - integer, save :: ref_count = 0 - - #:for suffix in NUM_SUFFIXES - integer(HID_T), save :: mem_type_id_${suffix}$ - integer(HID_T), save :: file_type_id_${suffix}$ - #:endfor - - ! Interfaces - - interface hdf5io_t - module procedure hdf5io_t_file_ - module procedure hdf5io_t_group_ - end interface hdf5io_t - - ! Access specifiers - - private - - public :: CREATE_FILE - public :: OPEN_FILE_RO - public :: OPEN_FILE_RW - public :: TYPE_LEN - public :: hdf5io_t - - ! Procedures - -contains - - function hdf5io_t_file_(file_name, access_type, comp_level) result (hi) - - character(*), intent(in) :: file_name - integer, intent(in) :: access_type - integer, intent(in), optional :: comp_level - type(hdf5io_t) :: hi - - integer :: hdf_err - integer(HID_T) :: file_id - integer(HID_T) :: group_id - - ! If necessary, open the HDF5 library - - if (ref_count == 0) then - call open_library_() - endif - - ref_count = ref_count + 1 - - ! Depending on the access_type, open or create the file - - select case(access_type) - case(CREATE_FILE) - @:HDF5_CALL(h5fcreate_f, file_name, H5F_ACC_TRUNC_F, file_id) - case(OPEN_FILE_RO) - @:HDF5_CALL(h5fopen_f, file_name, H5F_ACC_RDONLY_F, file_id) - case(OPEN_FILE_RW) - @:HDF5_CALL(h5fopen_f, file_name, H5F_ACC_RDWR_F, file_id) - case default - @:ABORT(invalid access_type) - end select - - ! Open the root group - - @:HDF5_CALL(h5gopen_f, file_id, '/', group_id) - - ! Construct the hdf5io_t - - hi%file_id = file_id - hi%group_id = group_id - if (PRESENT(comp_level)) then - hi%comp_level = comp_level - else - hi%comp_level = 0 - endif - - allocate(hi%ref_count) - hi%ref_count = 1 - - ! Finish - - return - - end function hdf5io_t_file_ - - !**** - - function hdf5io_t_group_(hi_parent, group_name) result (hi) - - type(hdf5io_t), intent(inout) :: hi_parent - character(*), intent(in) :: group_name - type(hdf5io_t) :: hi - - integer :: hdf_err - integer(HID_T) :: group_id - - ! Depending on whether the group already exists, open or create it - - if (hi_parent%group_exists(group_name)) then - @:HDF5_CALL(h5gopen_f, hi_parent%group_id, group_name, group_id) - else - @:HDF5_CALL(h5gcreate_f, hi_parent%group_id, group_name, group_id) - endif - - ! Construct the hdf5io_t - - hi%file_id = hi_parent%file_id - hi%group_id = group_id - hi%comp_level = hi_parent%comp_level - - hi%ref_count => hi_parent%ref_count - hi%ref_count = hi%ref_count + 1 - - ! Finish - - return - - end function hdf5io_t_group_ - - !**** - - subroutine final_(self) - - class(hdf5io_t), intent(inout) :: self - - integer :: hdf_err - - ! Close the group - - @:HDF5_CALL(h5gclose_f, self%group_id) - - self%ref_count = self%ref_count - 1 - - ! If necessary, close the file also - - if (self%ref_count == 0) then - @:HDF5_CALL(h5fclose_f, self%file_id) - deallocate(self%ref_count) - ref_count = ref_count - 1 - endif - - ! If necessary, close the HDF5 library - - if (ref_count == 0) then - call close_library_() - endif - - ! Finish - - return - - end subroutine final_ - - !**** - - subroutine open_library_() - - integer :: hdf_err - - ! Open the HDF5 library - - @:HDF5_CALL(h5open_f) - - @:ASSERT(hdf_err == 0,Failed to open HDF5 library) - - ! Set up data types - - mem_type_id_is = h5kind_to_type(is, H5_INTEGER_KIND) - mem_type_id_id = h5kind_to_type(id, H5_INTEGER_KIND) - - mem_type_id_rs = h5kind_to_type(rs, H5_REAL_KIND) - mem_type_id_rd = h5kind_to_type(rd, H5_REAL_KIND) - - call create_complex_type_(mem_type_id_rs, mem_type_id_cs) - call create_complex_type_(mem_type_id_rd, mem_type_id_cd) - - file_type_id_is = H5T_STD_I32LE - file_type_id_id = H5T_STD_I64LE - - file_type_id_rs = H5T_IEEE_F32LE - file_type_id_rd = H5T_IEEE_F64LE - - call create_complex_type_(file_type_id_rs, file_type_id_cs) - call create_complex_type_(file_type_id_rd, file_type_id_cd) - - ! Finish - - return - - contains - - subroutine create_complex_type_(comp_type_id, type_id) - - integer(HID_T), intent(in) :: comp_type_id - integer(HID_T), intent(out) :: type_id - - integer :: hdf_err - integer(SIZE_T) :: comp_size - - ! Create a complex data type - - @:HDF5_CALL(h5tget_size_f, comp_type_id, comp_size) - - @:HDF5_CALL(h5tcreate_f, H5T_COMPOUND_F, INT(2*comp_size, SIZE_T), type_id) - @:HDF5_CALL(h5tinsert_f, type_id, 're', INT(0, SIZE_T), comp_type_id) - @:HDF5_CALL(h5tinsert_f, type_id, 'im', INT(comp_size, SIZE_T), comp_type_id) - - ! Finish - - return - - end subroutine create_complex_type_ - - end subroutine open_library_ - - !**** - - subroutine close_library_() - - integer :: hdf_err - - ! Close complex data types - - #:for suffix in COMPLEX_SUFFIXES - @:HDF5_CALL(h5tclose_f, mem_type_id_${suffix}$) - @:HDF5_CALL(h5tclose_f, file_type_id_${suffix}$) - #:endfor - - ! Close the HDF5 library - - @:HDF5_CALL(h5close_f) - - ! Finish - - return - - end subroutine close_library_ - - !**** - - function group_exists(self, group_name) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: group_name - logical :: group_exists - - integer :: hdf_err - integer(HID_T) :: group_id - - ! Determine whether the named group already exists - - call h5eset_auto_f(0, hdf_err) - - call h5gopen_f(self%group_id, group_name, group_id, hdf_err) - - if (hdf_err >= 0) then - group_exists = .TRUE. - call h5gclose_f(group_id, hdf_err) - else - group_exists = .FALSE. - endif - - call h5eset_auto_f(1, hdf_err) - - ! Finish - - return - - end function group_exists - - !**** - - function attr_exists(self, attr_name) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: attr_name - logical :: attr_exists - - integer :: hdf_err - - ! Check if the attribute exists - - @:HDF5_CALL(h5aexists_f, self%group_id, attr_name, attr_exists) - - ! Finish - - return - - end function attr_exists - - !**** - - function dset_exists(self, dset_name) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: dset_name - logical :: dset_exists - - integer :: hdf_err - logical :: link_exists - type(h5o_info_t) :: obj_info - - ! Check if the dataset exists - - @:HDF5_CALL(h5lexists_f, self%group_id, dset_name, link_exists) - - if (link_exists) then - - @:HDF5_CALL(h5oget_info_by_name_f, self%group_id, dset_name, obj_info) - - dset_exists = obj_info%type == H5O_TYPE_DATASET_F - - else - - dset_exists = .FALSE. - - endif - - ! Finish - - return - - end function dset_exists - - !**** - - #:for obj_type, hdf_type in (('group', 'H5O_TYPE_GROUP_F'), ('dset', 'H5O_TYPE_DATASET_F')) - - function ${obj_type}$_names(self) result(names) - - class(hdf5io_t), intent(inout) :: self - character(:), allocatable :: names(:) - - integer(HSIZE_T) :: i - integer :: n_names - integer :: max_len - type(C_FUNPTR) :: op - integer :: ret_value - integer :: hdf_err - integer :: i_name - - ! Iterate to get number of items and maximum name length - - i = 0 - - n_names = 0 - max_len = 0 - - op = C_FUNLOC(op_len_) - - @:HDF5_CALL(h5literate_f, self%group_id, H5_INDEX_NAME_F, H5_ITER_NATIVE_F, i, op, C_NULL_PTR, ret_value) - - ! Allocate space - - allocate(character(LEN=max_len)::names(n_names)) - - ! Iterate again to store the names - - i = 0 - - i_name = 0 - - op = C_FUNLOC(op_name_) - - @:HDF5_CALL(h5literate_f, self%group_id, H5_INDEX_NAME_F, H5_ITER_NATIVE_F, i, op, C_NULL_PTR, ret_value) - - ! Finish - - return - - contains - - function op_len_(loc_id, c_name, c_info, c_data) result(ret_value) bind(C) - - integer(HID_T), value :: loc_id - character(C_CHAR) :: c_name(*) - type(C_PTR), value :: c_info - type(C_PTR), value :: c_data - integer(C_INT) :: ret_value - - type(H5O_INFO_T) :: info - integer :: hdf_err - - ! Check that the link points to the appropriate object type - - @:HDF5_CALL(h5oget_info_f, loc_id, info) - - if (info%type == ${hdf_type}$) then - - ! Update counters - - n_names = n_names + 1 - - max_len = MAX(c_f_len(c_name), max_len) - - endif - - ! Finish - - ret_value = 0 - - end function op_len_ - - !**** - - function op_name_(loc_id, c_name, c_info, c_data) result(ret_value) bind(C) - - integer(HID_T), value :: loc_id - character(C_CHAR) :: c_name(*) - type(C_PTR), value :: c_info - type(C_PTR), value :: c_data - integer(C_INT) :: ret_value - - type(H5O_INFO_T) :: info - integer :: hdf_err - - ! Check that the link points to the appropriate object type - - @:HDF5_CALL(h5oget_info_f, loc_id, info) - - if (info%type == ${hdf_type}$) then - - ! Store the name - - i_name = i_name + 1 - - names(i_name) = c_f_string(c_name) - - end if - - ! Finish - - ret_value = 0 - - end function op_name_ - - end function ${obj_type}$_names - - #:endfor - - !**** - - #:for obj_type, prefix in (('attr', 'h5a'), ('dset', 'h5d')) - - function ${obj_type}$_shape(self, item_name) result(shape) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - integer(HSIZE_T), allocatable :: shape(:) - - integer :: hdf_err - integer(HID_T) :: item_id - integer(HID_T) :: space_id - integer :: rank - integer(HSIZE_T), allocatable :: max_shape(:) - - ! Get the shape of the item - - @:HDF5_CALL(${prefix}$open_f, self%group_id, item_name, item_id) - - @:HDF5_CALL(${prefix}$get_space_f, item_id, space_id) - - @:HDF5_CALL(h5sget_simple_extent_ndims_f, space_id, rank) - - allocate(shape(rank)) - allocate(max_shape(rank)) - - @:HDF5_CALL(h5sget_simple_extent_dims_f, space_id, shape, max_shape) - - @:HDF5_CALL(h5sclose_f, space_id) - @:HDF5_CALL(${prefix}$close_f, item_id) - - ! Finish - - return - - end function ${obj_type}$_shape - - #:endfor - - !**** - - #:for obj_type, prefix in (('attr', 'h5a'), ('dset', 'h5d')) - #:for rank in range(RANK_MAX+1) - - #:for type, suffix in zip(NUM_TYPES, NUM_SUFFIXES) - - subroutine read_${obj_type}$_${suffix}$_${rank}$_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - ${type}$, target, intent(out) :: data${ARRAY_SPEC(rank)}$ - #:if rank > 0 - contiguous :: data - #:endif - - #:if rank > 0 - integer(HSIZE_T), allocatable :: item_shape(:) - #:endif - integer(HID_T) :: mem_type_id - integer :: hdf_err - integer(HID_T) :: item_id - type(C_PTR) :: data_ptr - - #:if rank > 0 - - ! Check rank and shape - - item_shape = self%${obj_type}$_shape(item_name) - @:ASSERT(SIZE(item_shape) == ${rank}$, rank mismatch) - @:ASSERT(ALL(item_shape == SHAPE(data)), shape mismatch) - - #:endif - - ! Read the item - - mem_type_id = mem_type_id_${suffix}$ - - data_ptr = C_LOC(data) - - @:HDF5_CALL(${prefix}$open_f, self%group_id, item_name, item_id) - @:HDF5_CALL(${prefix}$read_f, item_id, mem_type_id, data_ptr) - @:HDF5_CALL(${prefix}$close_f, item_id) - - ! Finish - - return - - end subroutine read_${obj_type}$_${suffix}$_${rank}$_ - - #:endfor - - #:for type, suffix in zip(CHAR_TYPES, CHAR_SUFFIXES) - - subroutine read_${obj_type}$_${suffix}$_${rank}$_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - ${type}$, target, intent(out) :: data${ARRAY_SPEC(rank)}$ - #:if rank > 0 - contiguous :: data - #:endif - - #:if rank > 0 - integer(HSIZE_T), allocatable :: item_shape(:) - #:endif - integer :: hdf_err - integer(HID_T) :: mem_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - #:if rank > 0 - - ! Check rank and shape - - item_shape = self%${obj_type}$_shape(item_name) - @:ASSERT(SIZE(item_shape) == ${rank}$, rank mismatch) - @:ASSERT(ALL(item_shape == SHAPE(data)), shape mismatch) - - #:endif - - ! Read the character item - - @:HDF5_CALL(h5tcopy_f, H5T_NATIVE_CHARACTER, mem_type_id) - @:HDF5_CALL(h5tset_size_f, mem_type_id, LEN(data, SIZE_T)) - - data_ptr = C_LOC(data) - - @:HDF5_CALL(${prefix}$open_f, self%group_id, item_name, item_id) - @:HDF5_CALL(${prefix}$read_f, item_id, mem_type_id, data_ptr) - @:HDF5_CALL(${prefix}$close_f, item_id) - - @:HDF5_CALL(h5tclose_f, mem_type_id) - - ! Finish - - return - - end subroutine read_${obj_type}$_${suffix}$_${rank}$_ - - #:endfor - - #:for type, suffix in zip(LOGICAL_TYPES, LOGICAL_SUFFIXES) - - subroutine read_${obj_type}$_${suffix}$_${rank}$_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - ${type}$, target, intent(out) :: data${ARRAY_SPEC(rank)}$ - #:if rank > 0 - contiguous :: data - #:endif - - integer, allocatable :: data_i${ARRAY_SPEC(rank)}$ - - ! Read the logical item - - call self%alloc_read_${obj_type}$(item_name, data_i) - - data = data_i /= 0 - - ! Finish - - return - - end subroutine read_${obj_type}$_${suffix}$_${rank}$_ - - #:endfor - - #:endfor - #:endfor - - !**** - - #:for obj_type in ('attr', 'dset') - #:for rank in range(RANK_MAX+1) - #:for type, suffix in zip(ALL_TYPES, ALL_SUFFIXES) - - subroutine alloc_read_${obj_type}$_${suffix}$_${rank}$_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - ${type}$, allocatable, intent(out) :: data${ARRAY_SPEC(rank)}$ - - #:if rank > 0 - integer(HSIZE_T), allocatable :: item_shape(:) - #:endif - - ! Allocate the item - - #:if rank > 0 - - item_shape = self%${obj_type}$_shape(item_name) - @:ASSERT(SIZE(item_shape) == ${rank}$, rank mismatch) - - allocate(data${ARRAY_SPEC(rank, 'item_shape({0:d})')}$) - - #:else - - allocate(data) - - #:endif - - ! Read the item - - call self%read_${obj_type}$(item_name, data) - - ! Finish - - return - - end subroutine alloc_read_${obj_type}$_${suffix}$_${rank}$_ - - #:endfor - #:endfor - #:endfor - - !**** - - #:for obj_type, prefix in (('attr', 'h5a'), ('dset', 'h5d')) - #:for rank in range(RANK_MAX+1) - - #:for type, suffix in zip(NUM_TYPES, NUM_SUFFIXES) - - subroutine write_${obj_type}$_${suffix}$_${rank}$_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - ${type}$, target, intent(in) :: data${ARRAY_SPEC(rank)}$ - #:if rank > 0 - contiguous :: data - #:endif - - integer :: hdf_err - integer(HID_T) :: dspace_id - integer(HID_T) :: plist_id - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the item - - #:if rank > 0 - @:HDF5_CALL(h5screate_simple_f, ${rank}$, INT(SHAPE(data), HSIZE_T), dspace_id) - #:else - @:HDF5_CALL(h5screate_f, H5S_SCALAR_F, dspace_id) - #:endif - - #:if obj_type == 'attr' - @:HDF5_CALL(h5pcreate_f, H5P_ATTRIBUTE_CREATE_F, plist_id) - #:else - @:HDF5_CALL(h5pcreate_f, H5P_DATASET_CREATE_F, plist_id) - #:if rank > 0 - @:HDF5_CALL(h5pset_chunk_f, plist_id, ${rank}$, INT(SHAPE(data), HSIZE_T)) - @:HDF5_CALL(h5pset_deflate_f, plist_id, self%comp_level) - #:endif - #:endif - - mem_type_id = mem_type_id_${suffix}$ - file_type_id = file_type_id_${suffix}$ - - data_ptr = C_LOC(data) - - #:if obj_type == 'attr' - @:HDF5_CALL(${prefix}$create_f, self%group_id, item_name, file_type_id, dspace_id, item_id, acpl_id=plist_id) - #:else - @:HDF5_CALL(${prefix}$create_f, self%group_id, item_name, file_type_id, dspace_id, item_id, dcpl_id=plist_id) - #:endif - - @:HDF5_CALL(${prefix}$write_f, item_id, mem_type_id, data_ptr) - @:HDF5_CALL(h5pclose_f, plist_id) - @:HDF5_CALL(${prefix}$close_f, item_id) - @:HDF5_CALL(h5sclose_f, dspace_id) - - ! Finish - - return - - end subroutine write_${obj_type}$_${suffix}$_${rank}$_ - - #:endfor - - #:for type, suffix in zip(CHAR_TYPES, CHAR_SUFFIXES) - - subroutine write_${obj_type}$_${suffix}$_${rank}$_(self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - ${type}$, target, intent(in) :: data${ARRAY_SPEC(rank)}$ - #:if rank > 0 - contiguous :: data - #:endif - - integer :: hdf_err - integer(HID_T) :: mem_type_id - integer(HID_T) :: file_type_id - integer(HID_T) :: dspace_id - type(C_PTR) :: data_ptr - integer(HID_T) :: item_id - - ! Write the character item - - @:HDF5_CALL(h5tcopy_f, H5T_NATIVE_CHARACTER, mem_type_id) - @:HDF5_CALL(h5tset_size_f, mem_type_id, LEN(data, SIZE_T)) - - @:HDF5_CALL(h5tcopy_f, H5T_NATIVE_CHARACTER, file_type_id) - @:HDF5_CALL(h5tset_size_f, file_type_id, LEN(data, SIZE_T)) - - #:if rank > 0 - @:HDF5_CALL(h5screate_simple_f, ${rank}$, INT(SHAPE(data), HSIZE_T), dspace_id) - #:else - @:HDF5_CALL(h5screate_f, H5S_SCALAR_F, dspace_id) - #:endif - - data_ptr = C_LOC(data) - - @:HDF5_CALL(${prefix}$create_f, self%group_id, item_name, file_type_id, dspace_id, item_id) - @:HDF5_CALL(${prefix}$write_f, item_id, mem_type_id, data_ptr) - @:HDF5_CALL(${prefix}$close_f, item_id) - - @:HDF5_CALL(h5sclose_f, dspace_id) - - @:HDF5_CALL(h5tclose_f, mem_type_id) - @:HDF5_CALL(h5tclose_f, file_type_id) - - ! Finish - - return - - end subroutine write_${obj_type}$_${suffix}$_${rank}$_ - - #:endfor - - #:for type, suffix in zip(LOGICAL_TYPES, LOGICAL_SUFFIXES) - - subroutine write_${obj_type}$_${suffix}$_${rank}$_ (self, item_name, data) - - class(hdf5io_t), intent(inout) :: self - character(*), intent(in) :: item_name - ${type}$, target, intent(in) :: data${ARRAY_SPEC(rank)}$ - #:if rank > 0 - contiguous :: data - #:endif - - ! Write the logical item - - call self%write_${obj_type}$(item_name, MERGE(1, 0, MASK=data)) - - ! Finish - - return - - end subroutine write_${obj_type}$_${suffix}$_${rank}$_ - - #:endfor - - #:endfor - #:endfor - -end module hdf5io_m diff --git a/hdf5io/private/kinds_m.f90 b/hdf5io/private/kinds_m.f90 deleted file mode 100644 index 46fa98015..000000000 --- a/hdf5io/private/kinds_m.f90 +++ /dev/null @@ -1,46 +0,0 @@ -! Module : kinds_m -! Purpose : kind type parameter definitions -! -! Copyright 2021 Rich Townsend -! -! This file is part of the ForUM (Fortran Utility Modules) -! package. ForUM is free software: you can redistribute it and/or -! modify it under the terms of the GNU General Public License as -! published by the Free Software Foundation, version 3. -! -! ForUM is distributed in the hope that it will be useful, but WITHOUT -! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -! License for more details. -! -! You should have received a copy of the GNU General Public License -! along with this program. If not, see . - -module kinds_m - - ! Uses - - use ISO_FORTRAN_ENV - - ! No implicit typing - - implicit none - - ! Parameter definitions - - integer, parameter :: IS = INT32 - integer, parameter :: ID = INT64 - - integer, parameter :: RS = REAL32 - integer, parameter :: RD = REAL64 - - ! Access specifiers - - private - - public :: IS - public :: ID - public :: RS - public :: RD - -end module kinds_m diff --git a/hdf5io/private/kinds_m.fypp b/hdf5io/private/kinds_m.fypp deleted file mode 100644 index 46fa98015..000000000 --- a/hdf5io/private/kinds_m.fypp +++ /dev/null @@ -1,46 +0,0 @@ -! Module : kinds_m -! Purpose : kind type parameter definitions -! -! Copyright 2021 Rich Townsend -! -! This file is part of the ForUM (Fortran Utility Modules) -! package. ForUM is free software: you can redistribute it and/or -! modify it under the terms of the GNU General Public License as -! published by the Free Software Foundation, version 3. -! -! ForUM is distributed in the hope that it will be useful, but WITHOUT -! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -! License for more details. -! -! You should have received a copy of the GNU General Public License -! along with this program. If not, see . - -module kinds_m - - ! Uses - - use ISO_FORTRAN_ENV - - ! No implicit typing - - implicit none - - ! Parameter definitions - - integer, parameter :: IS = INT32 - integer, parameter :: ID = INT64 - - integer, parameter :: RS = REAL32 - integer, parameter :: RD = REAL64 - - ! Access specifiers - - private - - public :: IS - public :: ID - public :: RS - public :: RD - -end module kinds_m diff --git a/hdf5io/private/regen_srcs b/hdf5io/private/regen_srcs deleted file mode 100755 index 78ede9b87..000000000 --- a/hdf5io/private/regen_srcs +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -# -# Regenerate source files from preprocessor files - -for f in *.fypp; do - fypp $f ${f%.fypp}.f90 -done diff --git a/hdf5io/public/hdf5io_lib.f90 b/hdf5io/public/hdf5io_lib.f90 deleted file mode 100644 index 260d988bf..000000000 --- a/hdf5io/public/hdf5io_lib.f90 +++ /dev/null @@ -1,37 +0,0 @@ -! *********************************************************************** -! -! Copyright (C) 2010-2021 Rich Townsend & The MESA Team -! -! MESA is free software; you can use it and/or modify -! it under the combined terms and restrictions of the MESA MANIFESTO -! and the GNU General Library Public License as published -! by the Free Software Foundation; either version 2 of the License, -! or (at your option) any later version. -! -! You should have received a copy of the MESA MANIFESTO along with -! this software; if not, it is available at the mesa website: -! http://mesa.sourceforge.net/ -! -! MESA 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 Library General Public License for more details. -! -! You should have received a copy of the GNU Library General Public License -! along with this software; if not, write to the Free Software -! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -! -! *********************************************************************** - -module hdf5io_lib - - use hdf5io_m - - private - - public :: hdf5io_t - public :: OPEN_FILE_RO - public :: OPEN_FILE_RW - public :: CREATE_FILE - -end module hdf5io_lib diff --git a/hdf5io/test/.gitignore b/hdf5io/test/.gitignore deleted file mode 100644 index 4a8c32ac9..000000000 --- a/hdf5io/test/.gitignore +++ /dev/null @@ -1 +0,0 @@ -test.h5 diff --git a/hdf5io/test/cleanup b/hdf5io/test/cleanup deleted file mode 100755 index e383ea3f7..000000000 --- a/hdf5io/test/cleanup +++ /dev/null @@ -1,4 +0,0 @@ -cd make -make clean -cd ../../make -make clean diff --git a/hdf5io/test/make/makefile b/hdf5io/test/make/makefile deleted file mode 100644 index 2a4718cad..000000000 --- a/hdf5io/test/make/makefile +++ /dev/null @@ -1,8 +0,0 @@ -# QUIET makes the output from the compilation process much less verbose -- basically, -# show which files are being compiled with which generic compilation command. The -# goal of QUIET is to make it easier to spot warnings and/or circular dependency -# errors. - -QUIET = yes - -include makefile_base diff --git a/hdf5io/test/make/makefile_base b/hdf5io/test/make/makefile_base deleted file mode 100644 index 293d3fa01..000000000 --- a/hdf5io/test/make/makefile_base +++ /dev/null @@ -1,92 +0,0 @@ -# This is the makefile for testing the mesa atm library - -MESA_DIR = ../../.. - -################################################################# -# -# PREAMBLE - -include $(MESA_DIR)/utils/makefile_header - -################################################################# -# -# SOURCES - -SRCS = test_hdf5io.f90 - -################################################################# -# -# LIBRARIES - -LIBS_LOCAL = hdf5io -DEPS_LOCAL = $(patsubst %,$(LOCAL_LIB_DIR)/lib%.$(LIB_SUFFIX),$(LIBS_LOCAL)) -LOAD_LOCAL = -L$(LOCAL_LIB_DIR) $(addprefix -l,$(LIBS_LOCAL)) - -LIBS_OTHER = -DEPS_OTHER = -LOAD_OTHER = $(LOAD_HDF5) - -################################################################# -# -# TARGETS - -TEST = $(TEST_DIR)/tester - -TEST_OBJS = $(patsubst %.f,%.o,$(patsubst %.f90,%.o,$(SRCS))) - -all : $(TEST) - -$(TEST) : $(TEST_OBJS) $(DEPS_LOCAL) $(DEPS_OTHER) - -$(TEST) : OBJS = $(TEST_OBJS) - -$(TEST_DIR)/% : -ifneq ($(QUIET),) - @echo LOADER $@ - @$(LOADER) $(FCopenmp) -o $@ $(OBJS) $(LOAD_LOCAL) $(LOAD_OTHER) $(LD_FLAGS) -else - $(LOADER) $(FCopenmp) -o $@ $(OBJS) $(LOAD_LOCAL) $(LOAD_OTHER) $(LD_FLAGS) -endif - -clean: - -@rm -f *.o *.mod *.smod .depend $(TEST) $(TESTQ) - -nodeps : $(.DEFAULT_GOAL) - -################################################################# -# -# COMPILATION RULES - -%.o: %.f90 -ifneq ($(QUIET),) - @echo TEST_COMPILE $< - @$(TEST_COMPILE) -O${OPT_LEVEL} $(FCfree) $< -else - $(TEST_COMPILE) -O${OPT_LEVEL} $(FCfree) $< -endif - -################################################################# -# -# DEPENDENCIES - -SRC_PATH = $(TEST_SRC_DIR) - -vpath %.f90 $(SRC_PATH) - -vpath %.mod $(LOCAL_LIB_DIR):$(MESA_DIR)/include - -NODEPS = $(or $(filter nodeps,$(MAKECMDGOALS)),$(filter clean,$(MAKECMDGOALS))) - -ifeq ($(NODEPS),) - - .depend : - ifneq ($(QUIET),) - @echo MAKEDEPF90 - @$(MAKEDEPF90) -I$(SRC_PATH) $(SRCS) > .depend - else - $(MAKEDEPF90) -I$(SRC_PATH) $(SRCS) > .depend - endif - - -include .depend - -endif diff --git a/hdf5io/test/mk b/hdf5io/test/mk deleted file mode 100755 index 78c91b0e9..000000000 --- a/hdf5io/test/mk +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -function check_okay { - if [ $? -ne 0 ] - then - echo - echo "FAILED" - echo - exit 1 - fi -} - -cd ../make; make; check_okay -cd ../test/make; make diff --git a/hdf5io/test/rn b/hdf5io/test/rn deleted file mode 100755 index e5d7960ab..000000000 --- a/hdf5io/test/rn +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -./tester diff --git a/hdf5io/test/src/test_hdf5io.f90 b/hdf5io/test/src/test_hdf5io.f90 deleted file mode 100644 index 860ab7448..000000000 --- a/hdf5io/test/src/test_hdf5io.f90 +++ /dev/null @@ -1,211 +0,0 @@ -program test_hdf5io - - ! Uses - - use const_lib - use hdf5io_lib - - ! No implicit typing - - implicit none - - integer, parameter :: n = 3 - - character(12) :: s_0 - integer(i4) :: is_0 - integer(i4) :: id_0 - real(sp) :: rs_0 - real(dp) :: rd_0 - real(sp) :: cs_0 - real(dp) :: cd_0 - logical :: l_0 - character(12) :: s_1(n) - integer(i4) :: is_1(n) - integer(i4) :: id_1(n) - real(sp) :: rs_1(n) - real(dp) :: rd_1(n) - real(sp) :: cs_1(n) - real(dp) :: cd_1(n) - logical :: l_1(n) - - ! Run tests - - call write_file() - call read_file() - -contains - - subroutine write_file() - - type(hdf5io_t) :: hi - - ! Set up values - - s_0 = 'hello world!' - s_1 = s_0 - - is_0 = 1_i4 - is_1 = is_0 - - id_0 = 2_i8 - id_1 = id_0 - - rs_0 = 3._sp - rs_1 = rs_0 - - rd_0 = 4._dp - rd_1 = rd_0 - - cs_0 = CMPLX(rs_0, 5*rs_0, sp) - cs_1 = cs_0 - - cd_0 = CMPLX(rd_0, 6*rd_0, dp) - cd_1 = cd_0 - - l_0 = .TRUE. - l_1 = [.FALSE., .TRUE., .FALSE.] - - ! Read the file - - hi = hdf5io_t('test.h5', CREATE_FILE) - - call hi%write_dset('s_0', s_0) - call hi%write_dset('s_1', s_1) - - call hi%write_dset('is_0', is_0) - call hi%write_dset('is_1', is_1) - - call hi%write_dset('id_0', id_0) - call hi%write_dset('id_1', id_1) - - call hi%write_dset('rs_0', rs_0) - call hi%write_dset('rs_1', rs_1) - - call hi%write_dset('rd_0', rd_0) - call hi%write_dset('rd_1', rd_1) - - call hi%write_dset('cs_0', cs_0) - call hi%write_dset('cs_1', cs_1) - - call hi%write_dset('cd_0', cd_0) - call hi%write_dset('cd_1', cd_1) - - call hi%write_dset('l_0', l_0) - call hi%write_dset('l_1', l_1) - - call hi%final() - - ! Finish - - end subroutine write_file - - subroutine read_file() - - type(hdf5io_t) :: hi - - character(12) :: s_0_chk - integer(i4) :: is_0_chk - integer(i4) :: id_0_chk - real(sp) :: rs_0_chk - real(dp) :: rd_0_chk - real(sp) :: cs_0_chk - real(dp) :: cd_0_chk - logical :: l_0_chk - character(12) :: s_1_chk(n) - integer(i4) :: is_1_chk(n) - integer(i4) :: id_1_chk(n) - real(sp) :: rs_1_chk(n) - real(dp) :: rd_1_chk(n) - real(sp) :: cs_1_chk(n) - real(dp) :: cd_1_chk(n) - logical :: l_1_chk(n) - -100 format(A) -110 format(2X,'scalar',1X,1L) -120 format(2X,'array ',1X,1L) - - ! Open the file - - hi = hdf5io_t('test.h5', OPEN_FILE_RO) - - ! Read and check values - - call hi%read_dset('s_0', s_0_chk) - call hi%read_dset('s_1', s_1_chk) - - write (*,100) 'character dataset' - write (*,110) s_0 == s_0_chk - write (*,120) ALL(s_1 == s_1_chk) - - ! - - call hi%read_dset('is_0', is_0_chk) - call hi%read_dset('is_1', is_1_chk) - - write (*,100) 'integer(i4) dataset' - write (*,110) is_0 == is_0_chk - write (*,120) ALL(is_1 == is_1_chk) - - ! - - call hi%read_dset('id_0', id_0_chk) - call hi%read_dset('id_1', id_1_chk) - - write (*,100) 'integer(i8) dataset' - write (*,110) id_0 == id_0_chk - write (*,120) ALL(id_1 == id_1_chk) - - ! - - call hi%read_dset('rs_0', rs_0_chk) - call hi%read_dset('rs_1', rs_1_chk) - - write (*,100) 'real(sp) dataset' - write (*,110) rs_0 == rs_0_chk - write (*,120) ALL(rs_1 == rs_1_chk) - - ! - - call hi%read_dset('rd_0', rd_0_chk) - call hi%read_dset('rd_1', rd_1_chk) - - write (*,100) 'real(dp) dataset' - write (*,110) rd_0 == rd_0_chk - write (*,120) ALL(rd_1 == rd_1_chk) - - ! - - call hi%read_dset('cs_0', cs_0_chk) - call hi%read_dset('cs_1', cs_1_chk) - - write (*,100) 'complex(sp) dataset' - write (*,110) cs_0 == cs_0_chk - write (*,120) ALL(cs_1 == cs_1_chk) - - ! - - call hi%read_dset('cd_0', cd_0_chk) - call hi%read_dset('cd_1', cd_1_chk) - - write (*,100) 'complex(dp) dataset' - write (*,110) cd_0 == cd_0_chk - write (*,120) ALL(cd_1 == cd_1_chk) - - ! - - call hi%read_dset('l_0', l_0_chk) - call hi%read_dset('l_1', l_1_chk) - - write (*,100) 'logical dataset' - write (*,110) l_0 .EQV. l_0_chk - write (*,120) ALL(l_1 .EQV. l_1_chk) - - call hi%final() - - ! Finish - - return - - end subroutine read_file - -end program test_hdf5io diff --git a/hdf5io/test/test_output b/hdf5io/test/test_output deleted file mode 100644 index 202d90b7a..000000000 --- a/hdf5io/test/test_output +++ /dev/null @@ -1,24 +0,0 @@ -character dataset - scalar T - array T -integer(i4) dataset - scalar T - array T -integer(i8) dataset - scalar T - array T -real(sp) dataset - scalar T - array T -real(dp) dataset - scalar T - array T -complex(sp) dataset - scalar T - array T -complex(dp) dataset - scalar T - array T -logical dataset - scalar T - array T diff --git a/install b/install index 2954e1fd5..0ca3fc2b3 100755 --- a/install +++ b/install @@ -278,7 +278,7 @@ do_one utils do_one_parallel math do_one_parallel mtx do_one_parallel auto_diff -do_one_parallel hdf5io +do_one_parallel forum do_one_parallel num do_one_parallel interp_1d @@ -363,23 +363,17 @@ do_one_parallel ionization if [ ! -r data/atm_data ] then do_input_data atm -fi +fi do_one atm do_one sample - do_one_parallel gyre - do_one adipls - do_one_parallel star - do_one_parallel binary - do_one_parallel astero - echo echo echo diff --git a/interp_1d/make/makefile_base b/interp_1d/make/makefile_base index 3f6858f45..cc06ef4ac 100644 --- a/interp_1d/make/makefile_base +++ b/interp_1d/make/makefile_base @@ -15,7 +15,9 @@ include $(MESA_DIR)/utils/makefile_header SRCS = \ interp_1d_misc.f90 \ interp_1d_pm.f90 \ + interp_1d_pm_autodiff.f90 \ interp_1d_mp.f90 \ + interp_1d_mp_autodiff.f90\ interp_1d_misc_sg.f90 \ interp_1d_pm_sg.f90 \ interp_1d_mp_sg.f90 \ @@ -28,9 +30,9 @@ SRCS = \ # LIBRARIES ifeq ($(USE_SHARED), YES) - LIBS_OTHER = $(LIBS_MATRIX) + LIBS_OTHER = auto_diff $(LIBS_MATRIX) DEPS_OTHER = $(patsubst %,$(MESA_LIB_DIR)/lib%.$(LIB_SUFFIX),$(LIBS_OTHER)) - LOAD_OTHER = -L$(MESA_LIB_DIR) $(LOAD_MATRIX) + LOAD_OTHER = -L$(MESA_LIB_DIR) -lauto_diff $(LOAD_MATRIX) endif ################################################################# diff --git a/interp_1d/private/interp_1d_misc.f90 b/interp_1d/private/interp_1d_misc.f90 index 93e949a67..e5c0fb790 100644 --- a/interp_1d/private/interp_1d_misc.f90 +++ b/interp_1d/private/interp_1d_misc.f90 @@ -26,7 +26,8 @@ module interp_1d_misc use const_lib, only: dp - + use auto_diff + implicit none contains @@ -181,7 +182,75 @@ subroutine do_interp_values(init_x, nx, f1, nv, x, vals, ierr) end subroutine do_interp_values + + subroutine do_interp_values_autodiff(init_x, nx, f1, nv, x, vals, ierr) + type(auto_diff_real_2var_order1), intent(in) :: init_x(:) ! (nx) ! junction points, strictly monotonic + integer, intent(in) :: nx ! length of init_x vector + type(auto_diff_real_2var_order1), intent(in), pointer :: f1(:) ! =(4, nx) ! data & interpolation coefficients + integer, intent(in) :: nv ! length of new x vector and vals vector + type(auto_diff_real_2var_order1), intent(in) :: x(:) ! (nv) ! locations where want interpolated values + ! strictly monotonic in same way as init_x + ! values out of range of init_x's are clipped to boundaries of init_x's + type(auto_diff_real_2var_order1), intent(inout) :: vals(:) ! (nv) + integer, intent(out) :: ierr ! 0 means aok + + integer :: k_old, k_new + type(auto_diff_real_2var_order1) :: xk_old, xkp1_old, xk_new, delta + logical :: increasing + type(auto_diff_real_2var_order1), pointer :: f(:,:) ! (4, nx) ! data & interpolation coefficients + + ierr = 0 + + if (nx == 1) then + vals(1:nv) = f1(1) + return + end if + + f(1:4,1:nx) => f1(1:4*nx) + + if(init_x(1) < init_x(nx)) then + increasing = .true. + end if + + k_old = 1; xk_old = init_x(k_old); xkp1_old = init_x(k_old+1) + + do k_new = 1, nv + xk_new = x(k_new) + if (increasing) then + if (xk_new > init_x(nx)) then + xk_new = init_x(nx) + else if (xk_new < init_x(1)) then + xk_new = init_x(1) + end if + else ! decreasing + if (xk_new < init_x(nx)) then + xk_new = init_x(nx) + else if (xk_new > init_x(1)) then + xk_new = init_x(1) + end if + end if + do while ((increasing .and. xk_new > xkp1_old) .or. ((.not. increasing) .and. xk_new < xkp1_old)) + k_old = k_old + 1 + if (k_old >= nx) then + k_old = k_old - 1 + xk_new = xkp1_old + exit + end if + xk_old = xkp1_old + xkp1_old = init_x(k_old+1) + end do + + delta = xk_new - xk_old + + vals(k_new) = & + f(1, k_old) + delta*(f(2, k_old) & + + delta*(f(3, k_old) + delta*f(4, k_old))) + + end do + + + end subroutine do_interp_values_autodiff subroutine do_interp_values_and_slopes(init_x, nx, f1, nv, x, vals, slopes, ierr) real(dp), intent(in) :: init_x(:) ! (nx) ! junction points, strictly monotonic @@ -576,10 +645,10 @@ subroutine minmod4(z, n, f1, f2, f3, f4) call minmod(z, n, z, f3) call minmod(z, n, z, f4) end subroutine minmod4 - - + + subroutine median(z, n, f1, f2, f3) - real(dp), intent(inout) :: z(:) + real(dp), intent(inout) :: z(:) integer, intent(in) :: n ! length of vectors real(dp), intent(in) :: f1(:), f2(:), f3(:) real(dp), target :: tmp1_ary(n), tmp2_ary(n) @@ -593,4 +662,61 @@ subroutine median(z, n, f1, f2, f3) end subroutine median + type(auto_diff_real_2var_order1) function minmod1_autodiff(f1, f2) + use auto_diff + type(auto_diff_real_2var_order1), intent(in) :: f1, f2 + minmod1_autodiff = 0.5d0 * (sign(f1) + sign(f2)) * min(abs(f1), abs(f2)) + end function minmod1_autodiff + + + type(auto_diff_real_2var_order1) function median1_autodiff(f1, f2, f3) + use auto_diff + type(auto_diff_real_2var_order1), intent(in) :: f1, f2, f3 + median1_autodiff = f1 + minmod1_autodiff(f2 - f1, f3 - f1) + end function median1_autodiff + + + subroutine minmod_autodiff(z, n, f1, f2) + use auto_diff + type(auto_diff_real_2var_order1), intent(inout) :: z(:) + integer, intent(in) :: n ! length of vectors + integer :: k + type(auto_diff_real_2var_order1), intent(in) :: f1(:), f2(:) + do k =1, n + z(k) = 0.5d0 * (sign(f1(k)) + sign(f2(k))) * min(abs(f1(k)), abs(f2(k))) + end do + end subroutine minmod_autodiff + + subroutine minmod4_autodiff(z, n, f1, f2, f3, f4) + use auto_diff + type(auto_diff_real_2var_order1), intent(inout) :: z(:) + integer, intent(in) :: n ! length of vectors + type(auto_diff_real_2var_order1), intent(in) :: f1(:), f2(:), f3(:), f4(:) + call minmod_autodiff(z, n, f1, f2) + call minmod_autodiff(z, n, z, f3) + call minmod_autodiff(z, n, z, f4) + end subroutine minmod4_autodiff + + + subroutine median_autodiff(z, n, f1, f2, f3) + use auto_diff + type(auto_diff_real_2var_order1), intent(inout) :: z(:) + integer, intent(in) :: n ! length of vectors + integer :: k + type(auto_diff_real_2var_order1), intent(in) :: f1(:), f2(:), f3(:) + type(auto_diff_real_2var_order1), target :: tmp1_ary(n), tmp2_ary(n) + type(auto_diff_real_2var_order1), pointer :: tmp1(:), tmp2(:) + tmp1 => tmp1_ary + tmp2 => tmp2_ary + do k =1,n + tmp1(k) = f2(k) - f1(k) + tmp2(k) = f3(k) - f1(k) + end do + call minmod_autodiff(z, n, tmp1, tmp2) + do k =1,n + z(k) = z(k) + f1(k) + end do + end subroutine median_autodiff + + end module interp_1d_misc diff --git a/interp_1d/private/interp_1d_mp.f90 b/interp_1d/private/interp_1d_mp.f90 index e73404fb7..d881095f9 100644 --- a/interp_1d/private/interp_1d_mp.f90 +++ b/interp_1d/private/interp_1d_mp.f90 @@ -52,7 +52,6 @@ subroutine m3(x, nx, f1, which, slope_only, nwork, work1, str, ierr) spL, spR, t, tmax, tmp, tmp1, tmp2 real(dp), parameter :: tiny = 1d-20 integer :: i - character (len=256) :: message real(dp), pointer :: f(:,:) ! (4, nx) ! data & interpolation coefficients f(1:4,1:nx) => f1(1:4*nx) diff --git a/interp_1d/private/interp_1d_mp_autodiff.f90 b/interp_1d/private/interp_1d_mp_autodiff.f90 new file mode 100644 index 000000000..6a3847baa --- /dev/null +++ b/interp_1d/private/interp_1d_mp_autodiff.f90 @@ -0,0 +1,397 @@ +! *********************************************************************** +! +! Copyright (C) 2010 The MESA Team +! +! MESA is free software; you can use it and/or modify +! it under the combined terms and restrictions of the MESA MANIFESTO +! and the GNU General Library Public License as published +! by the Free Software Foundation; either version 2 of the License, +! or (at your option) any later version. +! +! You should have received a copy of the MESA MANIFESTO along with +! this software; if not, it is available at the mesa website: +! http://mesa.sourceforge.net/ +! +! MESA 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 Library General Public License for more details. +! +! You should have received a copy of the GNU Library General Public License +! along with this software; if not, write to the Free Software +! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +! +! *********************************************************************** + + module interp_1d_mp_autodiff ! high accuracy monotonicity preserving algorithms + + use const_lib, only: dp + use auto_diff + + implicit none + private + public :: m3_autodiff, m3_on_uniform_grid_autodiff + + contains + + + subroutine m3_autodiff(x, nx, f1, which, slope_only, nwork, work1, str, ierr) + use interp_1d_def + use auto_diff + use interp_1d_misc + use interp_1d_pm_autodiff, only: mk_pmlinear, mk_pmquad + integer, intent(in) :: nx ! length of x vector + type(auto_diff_real_2var_order1), intent(in) :: x(:) ! (nx) ! junction points, strictly monotonic + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4, nx) ! data & interpolation coefficients + integer, intent(in) :: which + logical, intent(in) :: slope_only + integer, intent(in) :: nwork + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(nx, nwork) + character (len=*) :: str + integer, intent(out) :: ierr + + type(auto_diff_real_2var_order1), dimension(:), pointer :: h, s_mid, s, d, d_mid, e_mid, hd_mid, & + spL, spR, t, tmax, tmp, tmp1, tmp2 + real(dp), parameter :: tiny = 1d-20 + integer :: i + type(auto_diff_real_2var_order1), pointer :: f(:,:) ! (4, nx) ! data & interpolation coefficients + f(1:4,1:nx) => f1(1:4*nx) + + ierr = 0 + + if (nx < 2) then + return + end if + + if (nx == 2) then + call mk_pmlinear(x, f1, slope_only, nwork, work1, str, ierr) + return + end if + + if (nx == 3) then + call mk_pmquad(x, f1, slope_only, nwork, work1, str, ierr) + return + end if + + if (nwork < mp_work_size) then + ierr = -1 + return + end if + + i = 0 + h(1:nx) => work1(i+1:i+nx); i = i+nx + s_mid(1:nx) => work1(i+1:i+nx); i = i+nx + s(1:nx) => work1(i+1:i+nx); i = i+nx + d(1:nx) => work1(i+1:i+nx); i = i+nx + d_mid(1:nx) => work1(i+1:i+nx); i = i+nx + e_mid(1:nx) => work1(i+1:i+nx); i = i+nx + hd_mid(1:nx) => work1(i+1:i+nx); i = i+nx + spL(1:nx) => work1(i+1:i+nx); i = i+nx + spR(1:nx) => work1(i+1:i+nx); i = i+nx + t(1:nx) => work1(i+1:i+nx); i = i+nx + tmax(1:nx) => work1(i+1:i+nx); i = i+nx + tmp(1:nx) => work1(i+1:i+nx); i = i+nx + tmp1(1:nx) => work1(i+1:i+nx); i = i+nx + tmp2(1:nx) => work1(i+1:i+nx); i = i+nx + + ! grid spacing + do i=1,nx-1 + h(i) = x(i+1) - x(i) + end do + do i = 1, nx-1 + if (h(i) == 0) then + write(*, '(a,1x,2i5,1x,a)') & + 'same interpolation x values at', i, i+1, 'for ' // trim(str) + ierr = -1 + return + end if + end do + + ! divided differences + do i=1,nx-1 + s_mid(i) = (f(1,i+1) - f(1,i)) / h(i) ! eqn 2.1 + end do + do i=2,nx-1 + d(i) = (s_mid(i) - s_mid(i-1)) / (x(i+1) - x(i-1)) ! eqn 3.1 + end do + ! need to extend d to full range. simplest way is just to copy from neighbor + d(1) = d(2) + d(nx) = d(nx-1) + + ! d_mid eqn(3.4) -- modified according to eqn (2.27) of Suresh & Huynh, 1997 + do i=1,nx-1 + tmp1(i) = 4*d(i+1) - d(i) + tmp2(i) = 4*d(i) - d(i+1) + end do + call minmod4_autodiff(d_mid(1:nx-1), nx-1, d(2:nx), d(1:nx-1), tmp1(1:nx-1), tmp2(1:nx-1)) + + do i=1,nx-1 + hd_mid(i) = h(i)*d_mid(i) + end do + + ! spL(i) = p'(i-1/2)(xi) = smid(i-1) + h(i-1)*d_mid(i-1) from Theorem 1 + do i=1,nx-1 + spL(i+1) = s_mid(i) + hd_mid(i) + end do + + ! spR(i) = p'(i+1/2)(xi) = smid(i) - h(i)*d_mid(i) from Theorem 1 + do i=1,nx-1 + spR(i) = s_mid(i) - hd_mid(i) + end do + + call minmod_autodiff(s(2:nx-1), nx-2, s_mid(1:nx-2), s_mid(2:nx-1)) ! eqn (2.8) + call minmod_autodiff(t(2:nx-1), nx-2, spL(2:nx-1), spR(2:nx-1)) + + if (which == average) then + + do i=2,nx-1 + f(2,i) = sign(t(i))* & + min((abs(spL(i)+spR(i)))/2d0, & + max(3*abs(s(i)), 1.5d0*abs(t(i)))) + end do + + else if (which == quartic) then + + do i=2,nx-2 + e_mid(i) = (d(i+1) - d(i)) / (x(i+2) - x(i-1)) ! eqn 4.1 + end do + ! eqn 3.5b for p'(i); eqn 4.20 for quadratic f'(i) + do i=3,nx-2 + f(2,i) = s_mid(i) - & + h(i) * (d(i) + h(i-1)* & + (e_mid(i-1)*(x(i+2)-x(i)) & + + e_mid(i)*(x(i)-x(i-2)))/(x(i+2)-x(i-2))) + end do + ! finish off ends with average + f(2,2) = sign(t(2))* & + min((abs(spL(2)+spR(2)))/2d0, max(3*abs(s(2)), 1.5d0*abs(t(2)))) + f(2,nx-1) = sign(t(nx-1))* & + min((abs(spL(nx-1)+spR(nx-1)))/2d0, & + max(3*abs(s(nx-1)), 1.5d0*abs(t(nx-1)))) + do i=2,nx-1 + tmp1(i) = f(2,i) + tmp2(i) = tmp1(i) + end do + call median_autodiff(tmp1(2:nx-1), nx-2, tmp2(2:nx-1), spL(2:nx-1), spR(2:nx-1)) + do i=2,nx-1 + f(2,i) = tmp1(i) + end do + do i=2,nx-1 + tmax(i) = sign(t(i))* & + max(3*abs(s(i)), 1.5d0*abs(t(i))) + end do + do i=2,nx-1 + tmp1(i) = f(2,i) + end do + call minmod_autodiff(tmp2(2:nx-1), nx-2, tmp1(2:nx-1), tmax(2:nx-1)) + do i=2,nx-1 + f(2,i) = tmp2(i) + end do + + else !if (which == super_bee) then + + do i=2,nx-1 + f(2,i) = sign(t(i))* & + min(max(abs(spL(i)), abs(spR(i))), & + max(3*abs(s(i)), 1.5d0*abs(t(i)))) + end do + + end if + + ! slope at i=1 + !f(2, 1) = minmod1_autodiff(spR(1), 3*s_mid(1)) ! eqn (5.2) + f(2,1) = minmod1_autodiff(s_mid(1), s_mid(2)) ! stablize the ends + + ! slope at i=nx + !f(2, nx) = minmod1_autodiff(spL(nx), 3*s_mid(nx-1)) ! eqn (5.2) + f(2,nx) = minmod1_autodiff(s_mid(nx-2), s_mid(nx-1)) ! stablize the ends + + if (slope_only) return + + ! 2nd and 3rd derivatives + do i=1,nx-1 + f(3,i) = (3*s_mid(i) - 2*f(2,i) - f(2,i+1)) / h(i) + f(4,i) = (f(2,i) + f(2,i+1) - 2*s_mid(i)) / (h(i)*h(i)) + end do + f(3,nx) = (3*f(1, nx-1) - 3*f(1, nx) + (f(2, nx-1) + 2*f(2, nx)) * h(nx-1)) / (h(nx-1)*h(nx-1)) + f(4,nx) = (-2*f(1, nx-1) + 2*f(1, nx) - (f(2, nx-1) + f(2, nx))*h(nx-1)) / (h(nx-1)*h(nx-1)*h(nx-1)) + + end subroutine m3_autodiff + + + subroutine m3_on_uniform_grid_autodiff(dx, nx, f1, which, slope_only, nwork, work1, str, ierr) + use interp_1d_def + use auto_diff + use interp_1d_misc + use interp_1d_pm_autodiff, only: mk_pmlinear, mk_pmquad + ! make piecewise monotonic cubic interpolant + type(auto_diff_real_2var_order1), intent(in) :: dx ! the grid spacing + integer, intent(in) :: nx ! length of x vector + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4, nx) ! data & interpolation coefficients + integer, intent(in) :: which + logical, intent(in) :: slope_only + integer, intent(in) :: nwork + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(nx, nwork) + character (len=*) :: str + integer, intent(out) :: ierr + + type(auto_diff_real_2var_order1), dimension(:), pointer :: s_mid, s, d, d_mid, e_mid, spL, spR, t, tmax, & + tmp, tmp1, tmp2 + real(dp), parameter :: tiny = 1d-20 + type(auto_diff_real_2var_order1) :: x(3) + integer :: i + type(auto_diff_real_2var_order1), pointer :: f(:,:) ! (4, nx) ! data & interpolation coefficients + f(1:4,1:nx) => f1(1:4*nx) + + ierr = 0 + + if (nx < 2) then + return + end if + + if (nx == 2) then + x(1) = 0 + x(2) = dx + call mk_pmlinear(x, f1, slope_only, nwork, work1, str, ierr) + return + end if + + if (nx == 3) then + x(1) = 0 + x(2) = dx + x(3) = 2*dx + call mk_pmquad(x, f1, slope_only, nwork, work1, str, ierr) + return + end if + + if (dx == 0) then + ierr = -1 + return + end if + + if (nwork < mp_work_size) then + ierr = -1 + return + end if + + i = 0 + s_mid(1:nx) => work1(i+1:i+nx); i = i+nx + s(1:nx) => work1(i+1:i+nx); i = i+nx + d(1:nx) => work1(i+1:i+nx); i = i+nx + d_mid(1:nx) => work1(i+1:i+nx); i = i+nx + e_mid(1:nx) => work1(i+1:i+nx); i = i+nx + spL(1:nx) => work1(i+1:i+nx); i = i+nx + spR(1:nx) => work1(i+1:i+nx); i = i+nx + t(1:nx) => work1(i+1:i+nx); i = i+nx + tmax(1:nx) => work1(i+1:i+nx); i = i+nx + tmp(1:nx) => work1(i+1:i+nx); i = i+nx + tmp1(1:nx) => work1(i+1:i+nx); i = i+nx + tmp2(1:nx) => work1(i+1:i+nx); i = i+nx + + ! divided differences + do i=1,nx-1 + s_mid(i) = (f(1,i+1) - f(1,i)) / dx ! eqn 2.1 + end do + do i=2,nx-1 + d(i) = (s_mid(i) - s_mid(i-1)) / (2*dx) ! eqn 3.1 + end do + ! need to extend d to full range. simplest way is just to copy from neighbor + d(1) = d(2) + d(nx) = d(nx-1) + + ! d_mid eqn(3.4) -- modified according to eqn (2.27) of Suresh & Huynh, 1997 + do i=1,nx-1 + tmp1(i) = 4*d(i+1) - d(i) + tmp2(i) = 4*d(i) - d(i+1) + end do + call minmod4_autodiff(d_mid(1:nx-1), nx-1, d(2:nx), d(1:nx-1), tmp1(1:nx-1), tmp2(1:nx-1)) + + ! spL(i) = p'(i-1/2)(xi) = smid(i-1) + h(i-1)*d_mid(i-1) from Theorem 1 + do i=1,nx-1 + spL(i+1) = s_mid(i) + dx*d_mid(i) + end do + + ! spR(i) = p'(i+1/2)(xi) = smid(i) - h(i)*d_mid(i) from Theorem 1 + do i=1,nx-1 + spR(i) = s_mid(i) - dx*d_mid(i) + end do + + call minmod_autodiff(s(2:nx-1), nx-2, s_mid(1:nx-2), s_mid(2:nx-1)) ! eqn (2.8) + call minmod_autodiff(t(2:nx-1), nx-2, spL(2:nx-1), spR(2:nx-1)) + + if (which == average) then + + do i=2,nx-1 + f(2,i) = sign(t(i))* & + min((abs(spL(i)+spR(i)))/2d0, & + max(3*abs(s(i)), 1.5d0*abs(t(i)))) + end do + + else if (which == quartic) then + + do i=2,nx-2 + e_mid(i) = (d(i+1) - d(i)) / (3*dx) ! eqn 4.1 + end do + ! eqn 3.5b for p'(i); eqn 4.20 for quadratic f'(i) + do i=3,nx-2 + f(2,i) = s_mid(i) - & + dx * (d(i) + dx*(e_mid(i-1)*(2*dx) + e_mid(i)*(2*dx))/(4*dx)) + end do + ! finish off ends with average + f(2,2) = sign(t(2))* & + min((abs(spL(2)+spR(2)))/2d0, max(3*abs(s(2)), 1.5d0*abs(t(2)))) + f(2,nx-1) = sign(t(nx-1))* & + min((abs(spL(nx-1)+spR(nx-1)))/2d0, & + max(3*abs(s(nx-1)), 1.5d0*abs(t(nx-1)))) + do i=2,nx-1 + tmp1(i) = f(2,i) + tmp2(i) = tmp1(i) + end do + call median_autodiff(tmp1(2:nx-1), nx-2, tmp2(2:nx-1), spL(2:nx-1), spR(2:nx-1)) + do i=2,nx-1 + f(2,i) = tmp1(i) + end do + do i=2,nx-1 + tmax(i) = sign(t(i))* & + max(3*abs(s(i)), 1.5d0*abs(t(i))) + end do + do i=2,nx-1 + tmp1(i) = f(2,i) + end do + call minmod_autodiff(tmp2(2:nx-1), nx-2, tmp1(2:nx-1), tmax(2:nx-1)) + do i=2,nx-1 + f(2,i) = tmp2(i) + end do + + else !if (which == super_bee) then + + do i=2,nx-1 + f(2,i) = sign(t(i))* & + min(max(abs(spL(i)), abs(spR(i))), & + max(3*abs(s(i)), 1.5d0*abs(t(i)))) + end do + + end if + + ! slope at i=1 + !f(2, 1) = minmod1_autodiff(spR(1), 3*s_mid(1)) ! eqn (5.2) + f(2,1) = minmod1_autodiff(s_mid(1), s_mid(2)) ! stablize the ends + + ! slope at i=nx + !f(2, nx) = minmod1_autodiff(spL(nx), 3*s_mid(nx-1)) ! eqn (5.2) + f(2, nx) = minmod1_autodiff(s_mid(nx-2), s_mid(nx-1)) ! stablize the ends + + if (slope_only) return + + ! 2nd and 3rd derivatives + do i=1,nx-1 + f(3,i) = (3*s_mid(i) - 2*f(2,i) - f(2,i+1)) / dx + f(4,i) = (f(2,i) + f(2,i+1) - 2*s_mid(i)) / (dx*dx) + end do + f(3, nx) = (3*f(1, nx-1) - 3*f(1, nx) + (f(2, nx-1) + 2*f(2, nx)) * dx) / (dx*dx) + f(4, nx) = (-2*f(1, nx-1) + 2*f(1, nx) - (f(2, nx-1) + f(2, nx))*dx) / (dx*dx*dx) + + end subroutine m3_on_uniform_grid_autodiff + + + end module interp_1d_mp_autodiff diff --git a/interp_1d/private/interp_1d_mp_sg.f90 b/interp_1d/private/interp_1d_mp_sg.f90 index 8f16c32cc..faf3afc99 100644 --- a/interp_1d/private/interp_1d_mp_sg.f90 +++ b/interp_1d/private/interp_1d_mp_sg.f90 @@ -51,7 +51,6 @@ subroutine m3_sg(x,nx, f1, which, slope_only, nwork, work1, str, ierr) spL, spR, t, tmax, tmp, tmp1, tmp2 real, parameter :: tiny = 1e-20 integer :: i - character (len=256) :: message real, pointer :: f(:,:) ! (4,nx) ! data & interpolation coefficients f(1:4,1:nx) => f1(1:4*nx) diff --git a/interp_1d/private/interp_1d_pm.f90 b/interp_1d/private/interp_1d_pm.f90 index 3beaf2a79..7ce6b0966 100644 --- a/interp_1d/private/interp_1d_pm.f90 +++ b/interp_1d/private/interp_1d_pm.f90 @@ -52,7 +52,6 @@ subroutine mk_pmcub(x, nx, f1, slope_only, nwork, work1, str, ierr) real(dp), dimension(:), pointer :: h, s, p integer :: i - character (len=256) :: message logical, parameter :: dbg = .true. real(dp), pointer :: f(:,:) ! (4, nx) ! data & interpolation coefficients f(1:4,1:nx) => f1(1:4*nx) @@ -166,7 +165,6 @@ subroutine mk_pmcub4(x, f1, slope_only, nwork, work1, str, ierr) real(dp), dimension(:), pointer :: h, s, p integer :: i - character (len=256) :: message real(dp), pointer :: f(:,:) ! (4, nx) ! data & interpolation coefficients f(1:4,1:nx) => f1(1:4*nx) @@ -254,7 +252,6 @@ subroutine mk_pmquad(x, f1, slope_only, nwork, work1, str, ierr) real(dp), dimension(:), pointer :: h, s, p integer :: i - character (len=256) :: message real(dp), pointer :: f(:,:) ! (4, nx) ! data & interpolation coefficients f(1:4,1:nx) => f1(1:4*nx) @@ -339,7 +336,6 @@ subroutine mk_pmlinear(x, f1, slope_only, nwork, work1, str, ierr) integer, intent(out) :: ierr real(dp) :: h, s - character (len=256) :: message real(dp), pointer :: f(:,:) ! (4, nx) ! data & interpolation coefficients f(1:4,1:nx) => f1(1:4*nx) diff --git a/interp_1d/private/interp_1d_pm_autodiff.f90 b/interp_1d/private/interp_1d_pm_autodiff.f90 new file mode 100644 index 000000000..6e8255e03 --- /dev/null +++ b/interp_1d/private/interp_1d_pm_autodiff.f90 @@ -0,0 +1,474 @@ +! *********************************************************************** +! +! Copyright (C) 2010 The MESA Team +! +! MESA is free software; you can use it and/or modify +! it under the combined terms and restrictions of the MESA MANIFESTO +! and the GNU General Library Public License as published +! by the Free Software Foundation; either version 2 of the License, +! or (at your option) any later version. +! +! You should have received a copy of the MESA MANIFESTO along with +! this software; if not, it is available at the mesa website: +! http://mesa.sourceforge.net/ +! +! MESA 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 Library General Public License for more details. +! +! You should have received a copy of the GNU Library General Public License +! along with this software; if not, write to the Free Software +! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +! +! *********************************************************************** + + module interp_1d_pm_autodiff ! piecewise monotonic algorithms + + use const_lib, only: dp + use auto_diff + + implicit none + + contains + + ! the following produce piecewise monotonic interpolants + ! rather than monotonicity preserving + ! this stricter limit never introduces interpolated values exceeding the given values, + ! even in places where the given values are not monotonic. + ! the downside is reduced accuracy on smooth data compared to the mp routines. + + + subroutine mk_pmcub_autodiff(x, nx, f1, slope_only, nwork, work1, str, ierr) + ! make piecewise monotonic cubic interpolant + use interp_1d_def + use auto_diff + integer, intent(in) :: nx ! length of x vector (nx >= 2) + type(auto_diff_real_2var_order1), intent(in) :: x(:) ! (nx) ! junction points, strictly monotonic + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4, nx) ! data & interpolation coefficients + logical, intent(in) :: slope_only + integer, intent(in) :: nwork ! nwork must be >= pm_work_size (see interp_1d_def) + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(nx, nwork) + character (len=*) :: str + integer, intent(out) :: ierr + + type(auto_diff_real_2var_order1), dimension(:), pointer :: h, s, p + integer :: i + logical, parameter :: dbg = .true. + type(auto_diff_real_2var_order1), pointer :: f(:,:) ! (4, nx) ! data & interpolation coefficients + f(1:4,1:nx) => f1(1:4*nx) + + include 'formats' + + ierr = 0 + + if (nx < 2) then + return + end if + + if (nx == 2) then + call mk_pmlinear(x, f1, slope_only, nwork, work1, str, ierr) + return + end if + + if (nx == 3) then + call mk_pmquad(x, f1, slope_only, nwork, work1, str, ierr) + return + end if + + if (nx == 4) then + call mk_pmcub4(x, f1, slope_only, nwork, work1, str, ierr) + return + end if + + if (nwork < pm_work_size) then + ierr = -1 + return + end if + + h(1:nx) => work1(1:nx) + s(1:nx) => work1(1+nx:2*nx) + p(1:nx) => work1(1+2*nx:3*nx) + + !if (dbg) then + ! h(:) = 0; s(:) = 0; p(:) = 0 + !end if + + do i=1,nx-1 + h(i) = x(i+1) - x(i) ! width of interval + end do + do i = 1, nx-1 + if (h(i) == 0) then + write(*, '(a,1x,2i5,1x,a)') & + 'same interpolation x values at', i, i+1, 'for ' // trim(str) + ierr = -1 + return + end if + end do + + do i=1,nx-1 + s(i) = (f(1,i+1) - f(1,i)) / h(i) ! slope across interval + end do + + do i=2,nx-1 + p(i) = (s(i-1)*h(i) + s(i)*h(i-1))/(h(i-1)+h(i)) + ! slope at i of parabola through i-1, i, and i+1 + end do + do i=2,nx-1 + f(2,i) = (sign(s(i-1))+sign(s(i)))* & + min(min(abs(s(i-1)), abs(s(i))), 0.5d0*abs(p(i))) + ! "safe" slope at i to ensure monotonic -- see Steffen's paper for explanation. + end do + + p(1) = s(1)*(1 + h(1) / (h(1) + h(2))) - s(2) * h(1) / (h(1) + h(2)) + ! slope at 1 of parabola through 1st 3 points + if (p(1)*s(1) <= 0) then + f(2, 1) = 0d0 + else if (abs(p(1)) > 2*abs(s(1))) then + f(2, 1) = 2*s(1) + else + f(2, 1) = p(1) + end if + + p(nx) = s(nx-1)*(1 + h(nx-1) / (h(nx-1) + h(nx-2))) & + - s(nx-2)*h(nx-1) / (h(nx-1) + h(nx-2)) + ! slope at nx of parabola through last 3 points + if (p(nx)*s(nx-1) <= 0) then + f(2,nx) = 0 + else if (abs(p(nx)) > 2*abs(s(nx-1))) then + f(2,nx) = 2*s(nx-1) + else + f(2,nx) = p(nx) + end if + + if (slope_only) return + + do i=1,nx-1 + f(3,i) = (3*s(i) - 2*f(2,i) - f(2,i+1)) / h(i) + f(4,i) = (f(2,i) + f(2,i+1) - 2*s(i)) / (h(i)*h(i)) + end do + f(3,nx) = 0d0 + f(4,nx) = 0d0 + + end subroutine mk_pmcub_autodiff + + + ! optimize special case for nx = 4 + subroutine mk_pmcub4(x, f1, slope_only, nwork, work1, str, ierr) + use interp_1d_def + use auto_diff + integer, parameter :: nx = 4 ! length of x vector (nx >= 2) + type(auto_diff_real_2var_order1), intent(in) :: x(:) ! (nx) ! junction points, strictly monotonic + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4, nx) ! data & interpolation coefficients + logical, intent(in) :: slope_only + integer, intent(in) :: nwork ! nwork must be >= pm_work_size (see interp_1d_def) + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(nx, nwork) + character (len=*) :: str + integer, intent(out) :: ierr + + type(auto_diff_real_2var_order1), dimension(:), pointer :: h, s, p + integer :: i + type(auto_diff_real_2var_order1), pointer :: f(:,:) ! (4, nx) ! data & interpolation coefficients + f(1:4,1:nx) => f1(1:4*nx) + + ierr = 0 + + if (nwork < pm_work_size) then + ierr = -1 + return + end if + + h(1:nx) => work1(1:nx) + s(1:nx) => work1(1+nx:2*nx) + p(1:nx) => work1(1+2*nx:3*nx) + + do i=1,nx-1 + h(i) = x(i+1) - x(i) ! width of interval + end do + do i = 1, nx-1 + if (h(i) == 0) then + write(*, '(a,1x,2i5,1x,a)') & + 'same interpolation x values at', i, i+1, 'for ' // trim(str) + ierr = -1 + return + end if + end do + + do i=1,nx-1 + s(i) = (f(1,i+1) - f(1,i)) / h(i) ! slope across interval + end do + do i=2,nx-1 + p(i) = (s(i-1)*h(i) + s(i)*h(i-1))/(h(i-1)+h(i)) + ! slope at i of parabola through i-1, i, and i+1 + end do + do i=2,nx-1 + f(2,i) = (sign(s(i-1))+sign(s(i)))* & + min(min(abs(s(i-1)), abs(s(i))), 0.5d0*abs(p(i))) + ! "safe" slope at i to ensure monotonic -- see Steffen's paper for explanation. + end do + + p(1) = s(1)*(1 + h(1) / (h(1) + h(2))) - s(2) * h(1) / (h(1) + h(2)) + ! slope at 1 of parabola through 1st 3 points + if (p(1)*s(1) <= 0) then + f(2, 1) = 0 + else if (abs(p(1)) > 2*abs(s(1))) then + f(2, 1) = 2*s(1) + else + f(2, 1) = p(1) + end if + + p(nx) = s(nx-1)*(1 + h(nx-1) / (h(nx-1) + h(nx-2))) & + - s(nx-2)*h(nx-1) / (h(nx-1) + h(nx-2)) + ! slope at nx of parabola through last 3 points + if (p(nx)*s(nx-1) <= 0) then + f(2, nx) = 0 + else if (abs(p(nx)) > 2*abs(s(nx-1))) then + f(2, nx) = 2*s(nx-1) + else + f(2, nx) = p(nx) + end if + + if (slope_only) return + + do i=1,nx-1 + f(3,i) = (3*s(i) - 2*f(2,i) - f(2,i+1)) / h(i) + f(4,i) = (f(2,i) + f(2,i+1) - 2*s(i)) / (h(i)*h(i)) + end do + f(3,nx) = 0d0 + f(4,nx) = 0d0 + + end subroutine mk_pmcub4 + + + ! optimize special case for nx = 3 + subroutine mk_pmquad(x, f1, slope_only, nwork, work1, str, ierr) + ! make piecewise monotonic quadratic interpolant + use interp_1d_def + use auto_diff + integer, parameter :: nx = 3 + type(auto_diff_real_2var_order1), intent(in) :: x(:) ! (nx) ! junction points, strictly monotonic + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4, nx) ! data & interpolation coefficients + logical, intent(in) :: slope_only + integer, intent(in) :: nwork ! nwork must be >= pm_work_size (see interp_1d_def) + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(nx, nwork) + character (len=*) :: str + integer, intent(out) :: ierr + + type(auto_diff_real_2var_order1), dimension(:), pointer :: h, s, p + integer :: i + type(auto_diff_real_2var_order1), pointer :: f(:,:) ! (4, nx) ! data & interpolation coefficients + f(1:4,1:nx) => f1(1:4*nx) + + if (nwork < pm_work_size) then + ierr = -1 + return + end if + ierr = 0 + + h(1:nx) => work1(1:nx) + s(1:nx) => work1(1+nx:2*nx) + p(1:nx) => work1(1+2*nx:3*nx) + + do i=1,nx-1 + h(i) = x(i+1) - x(i) ! width of interval + end do + do i = 1, nx-1 + if (h(i) == 0) then + write(*, '(a,1x,2i5,1x,a)') & + 'same interpolation x values at', i, i+1, 'for ' // trim(str) + ierr = -1 + return + end if + end do + + do i=1,nx-1 + s(i) = (f(1,i+1) - f(1,i)) / h(i) ! slope across interval + end do + do i=2,nx-1 + p(i) = (s(i-1)*h(i) + s(i)*h(i-1))/(h(i-1)+h(i)) + ! slope at i of parabola through i-1, i, and i+1 + end do + do i=2,nx-1 + f(2,i) = (sign(s(i-1))+sign(s(i)))* & + min(min(abs(s(i-1)), abs(s(i))), 0.5d0*abs(p(i))) + ! "safe" slope at i to ensure monotonic -- see Steffen's paper for explanation. + end do + + p(1) = s(1)*(1 + h(1) / (h(1) + h(2))) - s(2) * h(1) / (h(1) + h(2)) + ! slope at 1 of parabola through 1st 3 points + if (p(1)*s(1) <= 0) then + f(2, 1) = 0 + else if (abs(p(1)) > 2*abs(s(1))) then + f(2, 1) = 2*s(1) + else + f(2, 1) = p(1) + end if + + p(nx) = s(nx-1)*(1 + h(nx-1) / (h(nx-1) + h(nx-2))) & + - s(nx-2)*h(nx-1) / (h(nx-1) + h(nx-2)) + ! slope at nx of parabola through last 3 points + if (p(nx)*s(nx-1) <= 0) then + f(2, nx) = 0 + else if (abs(p(nx)) > 2*abs(s(nx-1))) then + f(2, nx) = 2*s(nx-1) + else + f(2, nx) = p(nx) + end if + + if (slope_only) return + + do i=1,nx-1 + f(3,i) = (3*s(i) - 2*f(2,i) - f(2,i+1)) / h(i) + f(4,i) = (f(2,i) + f(2,i+1) - 2*s(i)) / (h(i)*h(i)) + end do + f(3,nx) = 0 + f(4,nx) = 0 + + end subroutine mk_pmquad + + + ! optimize special case for nx = 2 + subroutine mk_pmlinear(x, f1, slope_only, nwork, work1, str, ierr) + use interp_1d_def + use auto_diff + integer, parameter :: nx = 2 + type(auto_diff_real_2var_order1), intent(in) :: x(:) ! (nx) ! junction points, strictly monotonic + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4, nx) ! data & interpolation coefficients + logical, intent(in) :: slope_only + integer, intent(in) :: nwork ! nwork must be >= pm_work_size (see interp_1d_def) + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(nx, nwork) + character (len=*) :: str ! for debugging + integer, intent(out) :: ierr + + type(auto_diff_real_2var_order1) :: h, s + type(auto_diff_real_2var_order1), pointer :: f(:,:) ! (4, nx) ! data & interpolation coefficients + f(1:4,1:nx) => f1(1:4*nx) + + ierr = 0 + + if (nwork < pm_work_size) then + ierr = -1 + return + end if + + h = x(2) - x(1) ! width of interval + if (h == 0) then + ierr = -1 + write(*, '(a,1x,2i5,1x,a)') & + 'same interpolation x values at', 1, 2, 'for ' // trim(str) + return + end if + + s = (f(1, 2) - f(1, 1)) / h ! slope across interval + f(2, 1) = s + f(2, 2) = 0 + + if (slope_only) return + + f(3,1) = 0d0 + f(3,2) = 0d0 + f(4,1) = 0d0 + f(4,2) = 0d0 + + end subroutine mk_pmlinear + + + subroutine mk_pmcub_uniform(dx, n, f1, slope_only, nwork, work1, str, ierr) + ! make piecewise monotonic cubic interpolant on unit spaced mesh + use interp_1d_def + use auto_diff + integer, intent(in) :: n ! length of vector + type(auto_diff_real_2var_order1), intent(in) :: dx + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4,n) ! data & interpolation coefficients + logical, intent(in) :: slope_only + integer, intent(in) :: nwork ! nwork must be >= pm_work_size (see interp_1d_def) + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(nx, nwork) + character (len=*) :: str ! for debugging + integer, intent(out) :: ierr + + type(auto_diff_real_2var_order1), dimension(:), pointer :: s, p + type(auto_diff_real_2var_order1) :: x(2) + integer :: i + type(auto_diff_real_2var_order1), pointer :: f(:,:) ! (4, n) ! data & interpolation coefficients + f(1:4,1:n) => f1(1:4*n) + + ierr = 0 + + if (n < 2) then + return + end if + + if (n == 2) then + x(1) = 0 + x(2) = dx + call mk_pmlinear(x, f1, slope_only, nwork, work1, str, ierr) + return + end if + + if (dx == 0) then + ierr = -1 + return + end if + + if (nwork < pm_work_size) then + ierr = -1 + return + end if + ierr = 0 + + s(1:n) => work1(1:n) + p(1:n) => work1(1+n:2*n) + + ierr = 0 + + do i=1,n-1 + s(i) = f(1,i+1) - f(1,i) ! slope across interval + end do + do i=2,n-1 + p(i) = 0.5d0*(s(i-1) + s(i)) + ! slope at i of parabola through i-1, i, and i+1 + end do + do i=2,n-1 + f(2,i) = (sign(s(i-1))+sign(s(i)))* & + min(min(abs(s(i-1)), abs(s(i))), 0.5d0*abs(p(i))) + ! "safe" slope at i to ensure monotonic -- see Steffen's paper for explanation. + end do + + p(1) = 1.5d0 * s(1) - 0.5d0 * s(2) + ! slope at 1 of parabola through 1st 3 points + if (p(1)*s(1) <= 0) then + f(2, 1) = 0 + else if (abs(p(1)) > 2*abs(s(1))) then + f(2, 1) = 2*s(1) + else + f(2, 1) = p(1) + end if + + p(n) = 1.5d0 * s(n-1) - 0.5d0 * s(n-2) + ! slope at n of parabola through last 3 points + if (p(n)*s(n-1) <= 0) then + f(2, n) = 0 + else if (abs(p(n)) > 2*abs(s(n-1))) then + f(2, n) = 2*s(n-1) + else + f(2, n) = p(n) + end if + + do i = 1,n + f(2,i) = f(2,i) / dx + end do + + if (slope_only) return + + ! 2nd and 3rd derivatives + do i=1,n-1 + f(3,i) = (3*s(i) - 2*f(2,i) - f(2,i+1)) / dx + f(4,i) = (f(2,i) + f(2,i+1) - 2*s(i)) / (dx*dx) + end do + f(3,n) = (3*f(1, n-1) - 3*f(1, n) + (f(2, n-1) + 2*f(2, n)) * dx) / (dx*dx*dx) + f(4,n) = (-2*f(1, n-1) + 2*f(1, n) - (f(2, n-1) + f(2, n))*dx) / (dx*dx*dx) + + end subroutine mk_pmcub_uniform + + + end module interp_1d_pm_autodiff diff --git a/interp_1d/private/interp_1d_pm_sg.f90 b/interp_1d/private/interp_1d_pm_sg.f90 index 91343398d..f1c89631b 100644 --- a/interp_1d/private/interp_1d_pm_sg.f90 +++ b/interp_1d/private/interp_1d_pm_sg.f90 @@ -50,7 +50,6 @@ subroutine mk_pmcub_sg(x, nx, f1, slope_only, nwork, work1, str, ierr) real, dimension(:), pointer :: h, s, p integer :: i - character (len=256) :: message logical, parameter :: dbg = .true. real, pointer :: f(:,:) ! (4, nx) ! data & interpolation coefficients f(1:4,1:nx) => f1(1:4*nx) @@ -163,7 +162,6 @@ subroutine mk_pmcub4_sg(x, f1, slope_only, nwork, work1, str, ierr) real, dimension(:), pointer :: h, s, p integer :: i - character (len=256) :: message real, pointer :: f(:,:) ! (4, nx) ! data & interpolation coefficients f(1:4,1:nx) => f1(1:4*nx) @@ -251,7 +249,6 @@ subroutine mk_pmquad_sg(x, f1, slope_only, nwork, work1, str, ierr) real, dimension(:), pointer :: h, s, p integer :: i - character (len=256) :: message real, pointer :: f(:,:) ! (4, nx) ! data & interpolation coefficients f(1:4,1:nx) => f1(1:4*nx) @@ -334,7 +331,6 @@ subroutine mk_pmlinear_sg(x, f1, slope_only, nwork, work1, str, ierr) integer, intent(out) :: ierr real :: h, s - character (len=256) :: message real, pointer :: f(:,:) ! (4, nx) ! data & interpolation coefficients f(1:4,1:nx) => f1(1:4*nx) diff --git a/interp_1d/public/interp_1d_lib.f90 b/interp_1d/public/interp_1d_lib.f90 index 969e7260d..9ecb3a8b4 100644 --- a/interp_1d/public/interp_1d_lib.f90 +++ b/interp_1d/public/interp_1d_lib.f90 @@ -25,7 +25,8 @@ module interp_1d_lib use const_lib, only: dp - + use auto_diff + implicit none contains @@ -72,7 +73,50 @@ end subroutine interp_vec call interp_values(x_old, n_old, f1, n_new, x_new, v_new, ierr) deallocate(f1) end subroutine interpolate_vector - + + ! autodiff version of above + subroutine interpolate_vector_autodiff( & + n_old, x_old, n_new, x_new, v_old, v_new, interp_vec_autodiff, nwork, work1, str, ierr) + integer, intent(in) :: n_old, n_new + type(auto_diff_real_2var_order1), intent(in) :: x_old(:) !(n_old) + type(auto_diff_real_2var_order1), intent(in) :: v_old(:) !(n_old) + type(auto_diff_real_2var_order1), intent(in) :: x_new(:) !(n_new) + type(auto_diff_real_2var_order1), intent(inout) :: v_new(:) ! (n_new) + interface + subroutine interp_vec_autodiff(x, nx, f1, nwork, work1, str, ierr) ! make cubic interpolant + ! e.g., interp_pm, interp_m3a, interp_m3b, or interp_m3q + use const_lib, only: dp + use auto_diff + integer, intent(in) :: nx ! length of x vector + type(auto_diff_real_2var_order1), intent(in) :: x(:) ! (nx) ! junction points, strictly monotonic + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4,nx) ! data & interpolation coefficients + integer, intent(in) :: nwork + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(n_old, nwork) + character (len=*) :: str ! for debugging + integer, intent(out) :: ierr + end subroutine interp_vec_autodiff + end interface + integer, intent(in) :: nwork + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(n_old, nwork) + character (len=*) :: str ! for debugging + integer, intent(out) :: ierr + type(auto_diff_real_2var_order1), pointer :: f1(:), f(:,:) + integer :: k + ierr = 0 + allocate(f1(4*n_old), stat=ierr) + if (ierr /= 0) return + f(1:4,1:n_old) => f1(1:4*n_old) + do k=1,n_old + f(1,k) = v_old(k) + end do + call interp_vec_autodiff(x_old, n_old, f1, nwork, work1, str, ierr) ! make interpolant + if (ierr /= 0) then + deallocate(f1) + return + end if + call interp_values_autodiff(x_old, n_old, f1, n_new, x_new, v_new, ierr) + deallocate(f1) + end subroutine interpolate_vector_autodiff ! this routine is a simply wrapper for making an interpolant with interp_pm and then using it. subroutine interpolate_vector_pm( & @@ -216,7 +260,22 @@ subroutine interp_values(init_x, nx, f1, nv, x, vals, ierr) integer, intent(out) :: ierr ! 0 means AOK call do_interp_values(init_x, nx, f1, nv, x, vals, ierr) end subroutine interp_values - + + subroutine interp_values_autodiff(init_x, nx, f1, nv, x, vals, ierr) + use interp_1d_def + use interp_1d_misc + type(auto_diff_real_2var_order1), intent(in) :: init_x(:) ! (nx) ! junction points, strictly monotonic + integer, intent(in) :: nx ! length of init_x vector + type(auto_diff_real_2var_order1), intent(in), pointer :: f1(:) ! =(4,nx) ! data & interpolation coefficients + integer, intent(in) :: nv ! length of new x vector and vals vector + type(auto_diff_real_2var_order1), intent(in) :: x(:) ! (nv) ! locations where want interpolated values + ! strictly monotonic in same way as init_x + ! values out of range of init_x's are clipped to boundaries of init_x's + type(auto_diff_real_2var_order1), intent(inout) :: vals(:) ! (nv) + integer, intent(out) :: ierr ! 0 means AOK + call do_interp_values_autodiff(init_x, nx, f1, nv, x, vals, ierr) + end subroutine interp_values_autodiff + subroutine interp_value(init_x, nx, f1, xval, val, ierr) use interp_1d_def @@ -461,7 +520,19 @@ subroutine interp_pm(x, nx, f1, nwork, work1, str, ierr) ! make piecewise monoto integer, intent(out) :: ierr call mk_pmcub(x, nx, f1, .false., nwork, work1, str, ierr) end subroutine interp_pm - + + subroutine interp_pm_autodiff(x, nx, f1, nwork, work1, str, ierr) ! make piecewise monotonic cubic interpolant + use interp_1d_def + use interp_1d_pm_autodiff + integer, intent(in) :: nx ! length of x vector (>= 2) + type(auto_diff_real_2var_order1), intent(in) :: x(:) ! (nx) ! junction points, strictly monotonic + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4,nx) ! data & interpolation coefficients + integer, intent(in) :: nwork ! nwork must be >= pm_work_size (see interp_1d_def) + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(nx, nwork) + character (len=*) :: str ! for debugging + integer, intent(out) :: ierr + call mk_pmcub_autodiff(x, nx, f1, .false., nwork, work1, str, ierr) + end subroutine interp_pm_autodiff subroutine interp_pm_slopes_only(x, nx, f1, nwork, work1, str, ierr) ! identical to interp_pm, but only calculates slopes and stores them in f(2,:) @@ -650,6 +721,128 @@ subroutine interp_m3q_on_uniform_grid(dx, nx, f1, nwork, work1, str, ierr) call m3_on_uniform_grid(dx, nx, f1, quartic, .false., nwork, work1, str, ierr) end subroutine interp_m3q_on_uniform_grid + + subroutine interp_m3_autodiff(x, nx, f1, which, nwork, work1, str, ierr) + ! make monotonicity preserving cubic interpolant on arbitrarily spaced grid + use interp_1d_def + use interp_1d_mp_autodiff + integer, intent(in) :: nx ! length of x vector (>= 4) + type(auto_diff_real_2var_order1), intent(in) :: x(:) ! (nx) ! junction points, strictly monotonic + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4,nx) ! data & interpolation coefficients + integer, intent(in) :: which ! average, quartic, or super_bee + integer, intent(in) :: nwork ! nwork must be >= mp_work_size (see interp_1d_def) + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(nx, nwork) + character (len=*) :: str ! for debugging + integer, intent(out) :: ierr + call m3_autodiff(x, nx, f1, which, .false., nwork, work1, str, ierr) + end subroutine interp_m3_autodiff + + + subroutine interp_m3a_autodiff(x, nx, f1, nwork, work1, str, ierr) + ! make monotonicity preserving cubic interpolant on arbitrarily spaced grid + use interp_1d_def + use interp_1d_mp_autodiff + integer, intent(in) :: nx ! length of x vector (>= 4) + type(auto_diff_real_2var_order1), intent(in) :: x(:) ! (nx) ! junction points, strictly monotonic + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4,nx) ! data & interpolation coefficients + integer, intent(in) :: nwork ! nwork must be >= mp_work_size (see interp_1d_def) + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(nx, nwork) + character (len=*) :: str ! for debugging + integer, intent(out) :: ierr + call m3_autodiff(x, nx, f1, average, .false., nwork, work1, str, ierr) + end subroutine interp_m3a_autodiff + + + subroutine interp_m3q_autodiff(x, nx, f1, nwork, work1, str, ierr) + ! make monotonicity preserving cubic interpolant on arbitrarily spaced grid + use interp_1d_def + use interp_1d_mp_autodiff + integer, intent(in) :: nx ! length of x vector (>= 4) + type(auto_diff_real_2var_order1), intent(in) :: x(:) ! (nx) ! junction points, strictly monotonic + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4,nx) ! data & interpolation coefficients + integer, intent(in) :: nwork ! nwork must be >= mp_work_size (see interp_1d_def) + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(nx, nwork) + character (len=*) :: str ! for debugging + integer, intent(out) :: ierr + call m3_autodiff(x, nx, f1, quartic, .false., nwork, work1, str, ierr) + end subroutine interp_m3q_autodiff + + + subroutine interp_m3b_autodiff(x, nx, f1, nwork, work1, str, ierr) + ! make monotonicity preserving cubic interpolant on arbitrarily spaced grid + use interp_1d_def + use interp_1d_mp_autodiff + integer, intent(in) :: nx ! length of x vector (>= 4) + type(auto_diff_real_2var_order1), intent(in) :: x(:) ! (nx) ! junction points, strictly monotonic + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4,nx) ! data & interpolation coefficients + integer, intent(in) :: nwork ! nwork must be >= mp_work_size (see interp_1d_def) + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(nx, nwork) + character (len=*) :: str ! for debugging + integer, intent(out) :: ierr + call m3_autodiff(x, nx, f1, super_bee, .false., nwork, work1, str, ierr) + end subroutine interp_m3b_autodiff + + + subroutine interp_m3_on_uniform_grid_autodiff(dx, nx, f1, which, nwork, work1, str, ierr) + ! make monotonicity preserving cubic interpolant on uniformly spaced grid + use interp_1d_def + use interp_1d_mp_autodiff + type(auto_diff_real_2var_order1), intent(in) :: dx ! the grid spacing + integer, intent(in) :: nx ! length of x vector (>= 4) + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4,nx) ! data & interpolation coefficients + integer, intent(in) :: which ! average, quartic, or super_bee + integer, intent(in) :: nwork ! nwork must be >= mp_work_size (see interp_1d_def) + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(nx, nwork) + character (len=*) :: str ! for debugging + integer, intent(out) :: ierr + call m3_on_uniform_grid_autodiff(dx, nx, f1, which, .false., nwork, work1, str, ierr) + end subroutine interp_m3_on_uniform_grid_autodiff + + + subroutine interp_m3a_on_uniform_grid_autodiff(dx, nx, f1, nwork, work1, str, ierr) + ! make monotonicity preserving cubic interpolant on uniformly spaced grid + use interp_1d_def + use interp_1d_mp_autodiff + type(auto_diff_real_2var_order1), intent(in) :: dx ! the grid spacing + integer, intent(in) :: nx ! length of x vector (>= 4) + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4,nx) ! data & interpolation coefficients + integer, intent(in) :: nwork ! nwork must be >= mp_work_size (see interp_1d_def) + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(nx, nwork) + character (len=*) :: str ! for debugging + integer, intent(out) :: ierr + call m3_on_uniform_grid_autodiff(dx, nx, f1, average, .false., nwork, work1, str, ierr) + end subroutine interp_m3a_on_uniform_grid_autodiff + + + subroutine interp_m3b_on_uniform_grid_autodiff(dx, nx, f1, nwork, work1, str, ierr) + ! make monotonicity preserving cubic interpolant on uniformly spaced grid + use interp_1d_def + use interp_1d_mp_autodiff + type(auto_diff_real_2var_order1), intent(in) :: dx ! the grid spacing + integer, intent(in) :: nx ! length of x vector (>= 4) + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4,nx) ! data & interpolation coefficients + integer, intent(in) :: nwork ! nwork must be >= mp_work_size (see interp_1d_def) + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(nx, nwork) + character (len=*) :: str ! for debugging + integer, intent(out) :: ierr + call m3_on_uniform_grid_autodiff(dx, nx, f1, super_bee, .false., nwork, work1, str, ierr) + end subroutine interp_m3b_on_uniform_grid_autodiff + + + subroutine interp_m3q_on_uniform_grid_autodiff(dx, nx, f1, nwork, work1, str, ierr) + ! make monotonicity preserving cubic interpolant on uniformly spaced grid + use interp_1d_def + use interp_1d_mp_autodiff + type(auto_diff_real_2var_order1), intent(in) :: dx ! the grid spacing + integer, intent(in) :: nx ! length of x vector (>= 4) + type(auto_diff_real_2var_order1), intent(inout), pointer :: f1(:) ! =(4,nx) ! data & interpolation coefficients + integer, intent(in) :: nwork ! nwork must be >= mp_work_size (see interp_1d_def) + type(auto_diff_real_2var_order1), intent(inout), pointer :: work1(:) ! =(nx, nwork) + character (len=*) :: str ! for debugging + integer, intent(out) :: ierr + call m3_on_uniform_grid_autodiff(dx, nx, f1, quartic, .false., nwork, work1, str, ierr) + end subroutine interp_m3q_on_uniform_grid_autodiff + ! simple Lagrange polynomial weights diff --git a/interp_1d/test/make/makefile_base b/interp_1d/test/make/makefile_base index 751fc8de2..c1a84cb77 100644 --- a/interp_1d/test/make/makefile_base +++ b/interp_1d/test/make/makefile_base @@ -22,9 +22,9 @@ LIBS_LOCAL = interp_1d DEPS_LOCAL = $(patsubst %,$(LOCAL_LIB_DIR)/lib%.$(LIB_SUFFIX),$(LIBS_LOCAL)) LOAD_LOCAL = -L$(LOCAL_LIB_DIR) $(addprefix -l,$(LIBS_LOCAL)) -LIBS_OTHER = $(LIBS_MATRIX) +LIBS_OTHER = auto_diff $(LIBS_MATRIX) DEPS_OTHER = $(patsubst %,$(MESA_LIB_DIR)/lib%.$(LIB_SUFFIX),$(LIBS_OTHER)) -LOAD_OTHER = -L$(MESA_LIB_DIR) $(LOAD_MATRIX) +LOAD_OTHER = -L$(MESA_LIB_DIR) -lauto_diff $(LOAD_MATRIX) ################################################################# # diff --git a/interp_1d/test/src/interp_1d_support.f b/interp_1d/test/src/interp_1d_support.f index eb4f47c17..046a9b16a 100644 --- a/interp_1d/test/src/interp_1d_support.f +++ b/interp_1d/test/src/interp_1d_support.f @@ -410,7 +410,7 @@ end subroutine test_interp_3_to_2 subroutine test_4pt integer, parameter :: n = 6 real(dp) :: x(n), y(n), a(3), dx, result, exact - integer :: ierr, i + integer :: i integer, parameter :: nwork = max(pm_work_size, mp_work_size) real(dp), target :: work_ary(n*nwork) real(dp), pointer :: work(:) diff --git a/interp_1d/test/src/interp_1d_support_sg.f b/interp_1d/test/src/interp_1d_support_sg.f index 4048f9d48..f6a7bc172 100644 --- a/interp_1d/test/src/interp_1d_support_sg.f +++ b/interp_1d/test/src/interp_1d_support_sg.f @@ -419,8 +419,8 @@ end subroutine test_interp_3_to_2 subroutine test_4pt integer, parameter :: n = 6 - real :: x(n), y(n), a(3), dx, result, exact, f(4, n) - integer :: ierr, i + real :: x(n), y(n), a(3), dx, result, exact + integer :: i integer, parameter :: nwork = max(pm_work_size, mp_work_size) real, target :: work_ary(n*nwork) real, pointer :: work(:) diff --git a/interp_2d/make/makefile_base b/interp_2d/make/makefile_base index 7c5af172c..9438467e6 100644 --- a/interp_2d/make/makefile_base +++ b/interp_2d/make/makefile_base @@ -29,9 +29,9 @@ SRCS = \ # LIBRARIES ifeq ($(USE_SHARED), YES) - LIBS_OTHER = num interp_1d $(LIBS_MATRIX) + LIBS_OTHER = num auto_diff interp_1d $(LIBS_MATRIX) DEPS_OTHER = $(patsubst %,$(MESA_LIB_DIR)/lib%.$(LIB_SUFFIX),$(LIBS_OTHER)) - LOAD_OTHER = -L$(MESA_LIB_DIR) -lnum -linterp_1d $(LOAD_MATRIX) -lauto_diff + LOAD_OTHER = -L$(MESA_LIB_DIR) -lnum -lauto_diff -linterp_1d $(LOAD_MATRIX) endif ################################################################# @@ -64,7 +64,7 @@ nodeps : $(.DEFAULT_GOAL) # # COMPILATION RULES -COMPILE = $(COMPILE_TO_DEPLOY) $(FCfixed) +COMPILE = $(COMPILE_TO_DEPLOY) $(FCfree) COMPILE_CMD = $(COMPILE) @@ -92,10 +92,10 @@ endif %.o : %.f ifneq ($(QUIET),) - @echo COMPILE_CMD $< - @$(COMPILE_CMD) $< + @echo COMPILE_FIXED $< + @$(COMPILE_FIXED) $< else - $(COMPILE_CMD) $< + $(COMPILE_FIXED) $< endif %.o : %.f90 diff --git a/interp_2d/private/bicub_db.f b/interp_2d/private/bicub_db.f index 7cce1c40a..31ff3483f 100644 --- a/interp_2d/private/bicub_db.f +++ b/interp_2d/private/bicub_db.f @@ -2461,9 +2461,8 @@ subroutine herm2fcn_mesa_db(ict,ivec,ivecd, ! bbar(x)=x**3-2*x**2+x bbar'(x)=3*x**2-4*x+1 ! real(dp) :: sum - integer v,z36th,iadr,i,j + integer v,iadr,i,j real(dp) :: xp,yp,xpi,ypi,xp2,yp2,xpi2,ypi2 - real(dp) :: cx,cy,cyd,cxi,cyi,cydi,hx2,hy2,cxd,cxdi real(dp) :: ax,bx,axbar,bxbar,ay,by,aybar,bybar real(dp) :: axp,axbarp,bxp,bxbarp,ayp,aybarp,bybarp,byp real(dp), pointer :: fin(:,:,:) diff --git a/interp_2d/private/bicub_sg.f b/interp_2d/private/bicub_sg.f index ddd46c54f..5fc20702d 100644 --- a/interp_2d/private/bicub_sg.f +++ b/interp_2d/private/bicub_sg.f @@ -954,7 +954,7 @@ subroutine fvbicub(ict,ivec,ivecd, > fval,ii,jj,xparam,yparam,hx,hxi,hy,hyi, > f1,inf2,ny) ! - integer nx, ny + integer ny integer ict(6) ! requested output control integer ivec ! vector length integer ivecd ! vector dimension (1st dim of fval) @@ -1733,9 +1733,8 @@ subroutine herm2fcn(ict,ivec,ivecd, ! bbar(x)=x**3-2*x**2+x bbar'(x)=3*x**2-4*x+1 ! real sum - integer v,z36th,iadr,i,j + integer v,iadr,i,j real xp,yp,xpi,ypi,xp2,yp2,xpi2,ypi2 - real cx,cy,cyd,cxi,cyi,cydi,hx2,hy2,cxd,cxdi real ax,bx,axbar,bxbar,ay,by,aybar,bybar real axp,axbarp,bxp,bxbarp,ayp,aybarp,bybarp,byp ! @@ -2374,8 +2373,8 @@ subroutine splinck(x,inx,ilinx,ztol,ier) integer ier ! output -- =0 if OK ! ! ier=1 is returned if x(1...inx) is NOT STRICTLY ASCENDING... - real dxavg,dyavg,zeps,zdiffx,zdiffy,zdiff - integer ix,iy + real dxavg,zeps,zdiffx,zdiff + integer ix ! !------------------------------- ! diff --git a/interp_2d/private/bipm_db.f b/interp_2d/private/bipm_db.f index 1a3599a4a..a2f1fbede 100644 --- a/interp_2d/private/bipm_db.f +++ b/interp_2d/private/bipm_db.f @@ -68,9 +68,9 @@ subroutine do_evbipm_db(xget,yget,x,nx,y,ny,fin1,nf2,f,ierr) integer, intent(out) :: ierr ! error code =0 ==> no error integer, parameter :: nwork = pm_work_size - real(dp) :: x0,x1,dx,y0,y1,dy,alfa,beta,ddx,f1,f2 + real(dp) :: x0,x1,dx,y0,y1,dy,alfa,beta real(dp) :: ys(4), ynew(1), val(1) - integer :: j, jlo, jhi, i, ix, jy, ii + integer :: j, jlo, i, ix, jy, ii real(dp), target :: work_ary(4*nwork), ff_ary(4*4) real(dp), pointer :: work(:), fin(:,:,:), ff(:,:), ff1(:) work => work_ary diff --git a/interp_2d/private/bipm_sg.f b/interp_2d/private/bipm_sg.f index 59f3e5716..ea0907c38 100644 --- a/interp_2d/private/bipm_sg.f +++ b/interp_2d/private/bipm_sg.f @@ -66,9 +66,9 @@ subroutine do_evbipm_sg(xget,yget,x,nx,y,ny,fin1,nf2,f,ierr) integer, intent(out) :: ierr ! error code =0 ==> no error integer, parameter :: nwork = pm_work_size - real :: x0,x1,dx,y0,y1,dy,alfa,beta,ddx,f1,f2 + real :: x0,x1,dx,y0,y1,dy,alfa,beta real :: ys(4), ynew(1), val(1) - integer :: j, jlo, jhi, i, ix, jy, ii + integer :: j, jlo, i, ix, jy, ii real, target :: work_ary(4*nwork), ff_ary(4*4) real, pointer :: work(:), fin(:,:,:), ff(:,:), ff1(:) work => work_ary diff --git a/interp_2d/public/interp_2d_lib_db.f90 b/interp_2d/public/interp_2d_lib_db.f90 index ef55fdb70..176820303 100644 --- a/interp_2d/public/interp_2d_lib_db.f90 +++ b/interp_2d/public/interp_2d_lib_db.f90 @@ -23,16 +23,15 @@ ! ! *********************************************************************** - module interp_2d_lib_db - ! real(dp) library for 2d interpolation - - use const_def, only: dp +module interp_2d_lib_db + ! real(dp) library for 2d interpolation - implicit none + use const_def, only: dp - contains ! the procedure interface for the library - ! client programs should only call these routines. + implicit none +contains ! the procedure interface for the library + ! client programs should only call these routines. ! contents @@ -41,53 +40,45 @@ module interp_2d_lib_db ! interp_rgsf3p_db -- surface interpolation (akima) ! interp_mkbicub_db -- bicubic splines ! interp_mkbipm_db -- 2d piecewise monotonic - + ! scattered set of data points ! interp_cs2val_db -- point interpolation (renka) ! interp_cs2grd_db -- point interpolation with gradients (renka) - - ! *********************************************************************** ! *********************************************************************** ! *********************************************************************** ! *********************************************************************** +! rectangular-grid bivariate interpolation and surface fitting +! from acm algorithm 760., acm trans. math. software (22) 1996, 357-361. +! hiroshi akima +! u.s. department of commerce, ntia/its +! version of 1995/08 + ! interpolate at given points + subroutine interp_rgbi3p_db(md, nxd, nyd, xd, yd, zd, nip, xi, yi, zi, ierr, wk) + integer, intent(in) :: md, nxd, nyd, nip + real(dp), intent(in) :: xd(nxd), yd(nyd), zd(nxd, nyd), xi(nip), yi(nip) + real(dp), intent(inout) :: zi(nip), wk(3, nxd, nyd) + integer, intent(out) :: ierr + call do_rgbi3p_db(md, nxd, nyd, xd, yd, zd, nip, xi, yi, zi, ierr, wk) + end subroutine interp_rgbi3p_db -* rectangular-grid bivariate interpolation and surface fitting -* from acm algorithm 760., acm trans. math. software (22) 1996, 357-361. -* hiroshi akima -* u.s. department of commerce, ntia/its -* version of 1995/08 - - ! interpolate at given points - subroutine interp_rgbi3p_db(md,nxd,nyd,xd,yd,zd,nip,xi,yi,zi,ier,wk) - integer, intent(in) :: md, nxd, nyd, nip - real(dp), intent(in) :: xd(nxd), yd(nyd), zd(nxd,nyd), xi(nip), yi(nip) - real(dp), intent(inout) :: zi(nip), wk(3,nxd,nyd) - integer, intent(out) :: ier - call do_rgbi3p_db(md,nxd,nyd,xd,yd,zd,nip,xi,yi,zi,ier,wk) - end subroutine interp_rgbi3p_db - - ! interpolate surface for given grid in x and y - subroutine interp_rgsf3p_db(md,nxd,nyd,xd,yd,zd,nxi,xi,nyi,yi,zi,ier,wk) - integer, intent(in) :: md, nxd, nyd, nxi, nyi - real(dp), intent(in) :: xd(nxd), yd(nyd), zd(nxd,nyd), xi(nxi), yi(nyi) - real(dp), intent(inout) :: zi(nxi,nyi), wk(3,nxd,nyd) - integer, intent(out) :: ier - call do_rgsf3p_db(md,nxd,nyd,xd,yd,zd,nxi,xi,nyi,yi,zi,ier,wk) - end subroutine interp_rgsf3p_db - - + ! interpolate surface for given grid in x and y + subroutine interp_rgsf3p_db(md, nxd, nyd, xd, yd, zd, nxi, xi, nyi, yi, zi, ierr, wk) + integer, intent(in) :: md, nxd, nyd, nxi, nyi + real(dp), intent(in) :: xd(nxd), yd(nyd), zd(nxd, nyd), xi(nxi), yi(nyi) + real(dp), intent(inout) :: zi(nxi, nyi), wk(3, nxd, nyd) + integer, intent(out) :: ierr + call do_rgsf3p_db(md, nxd, nyd, xd, yd, zd, nxi, xi, nyi, yi, zi, ierr, wk) + end subroutine interp_rgsf3p_db ! *********************************************************************** ! *********************************************************************** ! *********************************************************************** ! *********************************************************************** - - ! cubic shepard method for bivariate interpolation of scattered data. ! from acm algorithm 790., acm trans. math. software (25) 1999, 70-73. ! robert j. renka @@ -102,117 +93,105 @@ end subroutine interp_rgsf3p_db ! detailed documentation can be found in interp_2d_lib_sg.f ! these routines are exactly the same except they are real(dp). - ! see cshep2_sg for documentation details. - subroutine interp_cshep2_db(n,x,y,f,nc,nw,nr,lcell,lnext,xmin,ymin,dx,dy,rmax,rw,a,ier) - integer, intent(in) :: n, nc, nw, nr - integer, intent(out) :: lcell(nr,nr), lnext(n), ier - real(dp), intent(in) :: x(n), y(n), f(n) - real(dp), intent(inout) :: xmin, ymin, dx, dy, rmax, rw(n), a(9,n) - call do_cshep2_db(n,x,y,f,nc,nw,nr,lcell,lnext,xmin,ymin,dx,dy,rmax,rw,a,ier) - end subroutine interp_cshep2_db - - ! see cs2val_sg for documentation details. - real(dp) function interp_cs2val_db(px,py,n,x,y,f,nr,lcell,lnext,xmin,ymin,dx,dy,rmax,rw,a,ier) - integer, intent(in) :: n, nr, lcell(nr,nr), lnext(n) - real(dp), intent(in) :: px, py, x(n), y(n), f(n), xmin, ymin, dx, dy, rmax, rw(n), a(9,n) - integer, intent(out) :: ier - real(dp) :: do_cs2val_db - interp_cs2val_db = do_cs2val_db(px,py,n,x,y,f,nr,lcell,lnext,xmin,ymin,dx,dy,rmax,rw,a,ier) - end function interp_cs2val_db - - ! see cs2grd_sg for documentation details. - subroutine interp_cs2grd_db(px,py,n,x,y,f,nr,lcell,lnext,xmin,ymin,dx,dy,rmax,rw,a,c,cx,cy,ier) - integer, intent(in) :: n, nr, lcell(nr,nr), lnext(n) - real(dp), intent(in) :: px, py, x(n), y(n), f(n), xmin, ymin, dx, dy, rmax, rw(n), a(9,n) - real(dp), intent(out) :: c, cx, cy - integer, intent(out) :: ier - call do_cs2grd_db(px,py,n,x,y,f,nr,lcell,lnext,xmin,ymin,dx,dy,rmax,rw,a,c,cx,cy,ier) - end subroutine interp_cs2grd_db + ! see cshep2_sg for documentation details. + subroutine interp_cshep2_db(n, x, y, f, nc, nw, nr, lcell, lnext, xmin, ymin, dx, dy, rmax, rw, a, ierr) + integer, intent(in) :: n, nc, nw, nr + integer, intent(out) :: lcell(nr, nr), lnext(n), ierr + real(dp), intent(in) :: x(n), y(n), f(n) + real(dp), intent(inout) :: xmin, ymin, dx, dy, rmax, rw(n), a(9, n) + call do_cshep2_db(n, x, y, f, nc, nw, nr, lcell, lnext, xmin, ymin, dx, dy, rmax, rw, a, ierr) + end subroutine interp_cshep2_db + ! see cs2val_sg for documentation details. + real(dp) function interp_cs2val_db(px, py, n, x, y, f, nr, lcell, lnext, xmin, ymin, dx, dy, rmax, rw, a, ierr) + integer, intent(in) :: n, nr, lcell(nr, nr), lnext(n) + real(dp), intent(in) :: px, py, x(n), y(n), f(n), xmin, ymin, dx, dy, rmax, rw(n), a(9, n) + integer, intent(out) :: ierr + real(dp) :: do_cs2val_db + interp_cs2val_db = do_cs2val_db(px, py, n, x, y, f, nr, lcell, lnext, xmin, ymin, dx, dy, rmax, rw, a, ierr) + end function interp_cs2val_db + ! see cs2grd_sg for documentation details. + subroutine interp_cs2grd_db(px, py, n, x, y, f, nr, lcell, lnext, xmin, ymin, dx, dy, rmax, rw, a, c, cx, cy, ierr) + integer, intent(in) :: n, nr, lcell(nr, nr), lnext(n) + real(dp), intent(in) :: px, py, x(n), y(n), f(n), xmin, ymin, dx, dy, rmax, rw(n), a(9, n) + real(dp), intent(out) :: c, cx, cy + integer, intent(out) :: ierr + call do_cs2grd_db(px, py, n, x, y, f, nr, lcell, lnext, xmin, ymin, dx, dy, rmax, rw, a, c, cx, cy, ierr) + end subroutine interp_cs2grd_db ! *********************************************************************** ! *********************************************************************** - ! bicubic splines ! use interp_mkbicub_db to set up the interpolation information ! use interp_evbicub_db to evaluate it ! detailed documentation can be found in interp_2d_lib_sg.f - - ! see interp_mkbicub_sg for documentation details. - subroutine interp_mkbicub_db(x,nx,y,ny,f1,nf2, - > ibcxmin,bcxmin,ibcxmax,bcxmax, - > ibcymin,bcymin,ibcymax,bcymax, - > ilinx,iliny,ier) - use bicub_db, only: do_mkbicub_db - integer, intent(in) :: nx ! length of x vector - integer, intent(in) :: ny ! length of y vector - real(dp), intent(in) :: x(:) ! (nx) ! x vector, strict ascending - real(dp), intent(in) :: y(:) ! (ny) ! y vector, strict ascending - integer, intent(in) :: nf2 ! 2nd dimension of f, nf2.ge.nx - real(dp), intent(inout), pointer :: f1(:) ! =(4,nf2,ny) ! data & spline coefficients - integer, intent(in) :: ibcxmin ! bc flag for x=xmin - real(dp), intent(in) :: bcxmin(:) ! (ny) ! bc data vs. y at x=xmin - integer, intent(in) :: ibcxmax ! bc flag for x=xmax - real(dp), intent(in) :: bcxmax(:) ! (ny) ! bc data vs. y at x=xmax - integer, intent(in) :: ibcymin ! bc flag for y=ymin - real(dp), intent(in) :: bcymin(:) ! (nx) ! bc data vs. x at y=ymin - integer, intent(in) :: ibcymax ! bc flag for y=ymax - real(dp), intent(in) :: bcymax(:) ! (nx) ! bc data vs. x at y=ymax - integer, intent(out) :: ilinx ! =1: x grid is "nearly" equally spaced - integer, intent(out) :: iliny ! =1: y grid is "nearly" equally spaced - integer, intent(out) :: ier ! =0 on exit if there is no error. - call do_mkbicub_db(x,nx,y,ny,f1,nf2, - > ibcxmin,bcxmin,ibcxmax,bcxmax, - > ibcymin,bcymin,ibcymax,bcymax, - > ilinx,iliny,ier) - end subroutine interp_mkbicub_db - - - ! see interp_evbicub_sg for documentation details. - subroutine interp_evbicub_db(xget,yget,x,nx,y,ny,ilinx,iliny,f1,inf2,ict,fval,ier) - use bicub_db, only: fvbicub_db, herm2xy_db - integer, intent(in) :: nx,ny ! grid sizes - real(dp), intent(in) :: xget,yget ! target of this interpolation - real(dp), intent(in) :: x(:) ! (nx) ! ordered x grid - real(dp), intent(in) :: y(:) ! (ny) ! ordered y grid - integer, intent(in) :: ilinx ! ilinx=1 => assume x evenly spaced - integer, intent(in) :: iliny ! iliny=1 => assume y evenly spaced - integer, intent(in) :: inf2 - real(dp), intent(inout), pointer :: f1(:) ! function data - integer, intent(in) :: ict(6) ! code specifying output desired - real(dp), intent(inout) :: fval(6) ! output data - integer, intent(out) :: ier ! error code =0 ==> no error - integer i,j - integer ii(1), jj(1) - real(dp) xparam(1),yparam(1),hx(1),hxi(1),hy(1),hyi(1) - 1 format(a40,1pe26.16) - call herm2xy_db(xget,yget,x,nx,y,ny,ilinx,iliny,i,j, - > xparam(1),yparam(1),hx(1),hxi(1),hy(1),hyi(1),ier) - if (ier .ne. 0) return - ii(1) = i - jj(1) = j - call fvbicub_db(ict,1,1,fval,ii,jj,xparam,yparam,hx,hxi,hy,hyi,f1,inf2,ny) - end subroutine interp_evbicub_db - - - ! this is used by do_mkbicub_db to get 2nd derivatives d_dx2 and d_dy2 - subroutine interp_mkspline_db(x,nx,fspl,ibcxmin,bcxmin,ibcxmax,bcxmax,ilinx,ier) - use bicub_db, only: mkspline_db - integer, intent(in) :: nx ! no. of data points - real(dp), intent(in) :: x(nx) ! x axis data, strict ascending order - real(dp), intent(inout) :: fspl(2,nx) ! f(1,*): data in; f(2,*): coeffs out - integer, intent(in) :: ibcxmin ! b.c. flag @ x=xmin=x(1) - real(dp), intent(in) :: bcxmin ! b.c. data @xmin - integer, intent(in) :: ibcxmax ! b.c. flag @ x=xmax=x(nx) - real(dp), intent(in) :: bcxmax ! b.c. data @xmax - integer, intent(in) :: ilinx ! ilinx=1 => assume x evenly spaced - integer, intent(out) :: ier ! error code =0 ==> no error - call mkspline_db(x,nx,fspl,ibcxmin,bcxmin,ibcxmax,bcxmax,ilinx,ier) - end subroutine interp_mkspline_db + ! see interp_mkbicub_sg for documentation details. + subroutine interp_mkbicub_db(x, nx, y, ny, f1, nf2, & + ibcxmin, bcxmin, ibcxmax, bcxmax, ibcymin, bcymin, ibcymax, bcymax, ilinx, iliny, ierr) + use bicub_db, only: do_mkbicub_db + integer, intent(in) :: nx ! length of x vector + integer, intent(in) :: ny ! length of y vector + real(dp), intent(in) :: x(:) ! (nx) ! x vector, strict ascending + real(dp), intent(in) :: y(:) ! (ny) ! y vector, strict ascending + integer, intent(in) :: nf2 ! 2nd dimension of f, nf2 >= nx + real(dp), intent(inout), pointer :: f1(:) ! =(4,nf2,ny) ! data & spline coefficients + integer, intent(in) :: ibcxmin ! bc flag for x=xmin + real(dp), intent(in) :: bcxmin(:) ! (ny) ! bc data vs. y at x=xmin + integer, intent(in) :: ibcxmax ! bc flag for x=xmax + real(dp), intent(in) :: bcxmax(:) ! (ny) ! bc data vs. y at x=xmax + integer, intent(in) :: ibcymin ! bc flag for y=ymin + real(dp), intent(in) :: bcymin(:) ! (nx) ! bc data vs. x at y=ymin + integer, intent(in) :: ibcymax ! bc flag for y=ymax + real(dp), intent(in) :: bcymax(:) ! (nx) ! bc data vs. x at y=ymax + integer, intent(out) :: ilinx ! =1: x grid is "nearly" equally spaced + integer, intent(out) :: iliny ! =1: y grid is "nearly" equally spaced + integer, intent(out) :: ierr ! =0 on exit if there is no error. + call do_mkbicub_db(x, nx, y, ny, f1, nf2, & + ibcxmin, bcxmin, ibcxmax, bcxmax, ibcymin, bcymin, ibcymax, bcymax, ilinx, iliny, ierr) + end subroutine interp_mkbicub_db + + ! see interp_evbicub_sg for documentation details. + subroutine interp_evbicub_db(xget, yget, x, nx, y, ny, ilinx, iliny, f1, inf2, ict, fval, ierr) + use bicub_db, only: fvbicub_db, herm2xy_db + integer, intent(in) :: nx, ny ! grid sizes + real(dp), intent(in) :: xget, yget ! target of this interpolation + real(dp), intent(in) :: x(:) ! (nx) ! ordered x grid + real(dp), intent(in) :: y(:) ! (ny) ! ordered y grid + integer, intent(in) :: ilinx ! ilinx=1 => assume x evenly spaced + integer, intent(in) :: iliny ! iliny=1 => assume y evenly spaced + integer, intent(in) :: inf2 + real(dp), intent(inout), pointer :: f1(:) ! function data + integer, intent(in) :: ict(6) ! code specifying output desired + real(dp), intent(inout) :: fval(6) ! output data + integer, intent(out) :: ierr ! error code =0 ==> no error + integer :: i, j + integer :: ii(1), jj(1) + real(dp) xparam(1), yparam(1), hx(1), hxi(1), hy(1), hyi(1) + call herm2xy_db(xget, yget, x, nx, y, ny, ilinx, iliny, i, j, xparam(1), yparam(1), hx(1), hxi(1), hy(1), hyi(1), ierr) + if (ierr /= 0) return + ii(1) = i + jj(1) = j + call fvbicub_db(ict, 1, 1, fval, ii, jj, xparam, yparam, hx, hxi, hy, hyi, f1, inf2, ny) + end subroutine interp_evbicub_db + + ! this is used by do_mkbicub_db to get 2nd derivatives d_dx2 and d_dy2 + subroutine interp_mkspline_db(x, nx, fspl, ibcxmin, bcxmin, ibcxmax, bcxmax, ilinx, ierr) + use bicub_db, only: mkspline_db + integer, intent(in) :: nx ! no. of data points + real(dp), intent(in) :: x(nx) ! x axis data, strict ascending order + real(dp), intent(inout) :: fspl(2, nx) ! f(1,*): data in; f(2,*): coeffs out + integer, intent(in) :: ibcxmin ! b.c. flag @ x=xmin=x(1) + real(dp), intent(in) :: bcxmin ! b.c. data @xmin + integer, intent(in) :: ibcxmax ! b.c. flag @ x=xmax=x(nx) + real(dp), intent(in) :: bcxmax ! b.c. data @xmax + integer, intent(in) :: ilinx ! ilinx=1 => assume x evenly spaced + integer, intent(out) :: ierr ! error code =0 ==> no error + call mkspline_db(x, nx, fspl, ibcxmin, bcxmin, ibcxmax, bcxmax, ilinx, ierr) + end subroutine interp_mkspline_db ! *********************************************************************** ! *********************************************************************** @@ -221,36 +200,33 @@ end subroutine interp_mkspline_db ! does 4 1d interpolations in x followed by 1 1d interpolation in y. ! use interp_mkbipm_db to set up the interpolation information ! use interp_evbipm_db to evaluate it - - subroutine interp_mkbipm_db(x,nx,y,ny,f1,nf2,ier) - use bipm_db, only: do_mkbipm_db - integer, intent(in) :: nx ! length of x vector - integer, intent(in) :: ny ! length of y vector - real(dp), intent(in), pointer :: x(:) ! (nx) ! x vector, strict ascending - real(dp), intent(in), pointer :: y(:) ! (ny) ! y vector, strict ascending - integer, intent(in) :: nf2 ! 2nd dimension of f, nf2.ge.nx - real(dp), intent(inout), pointer :: f1(:) ! =(4,nf2,ny) ! data & interpolant coefficients - integer, intent(out) :: ier ! =0 on exit if there is no error. - call do_mkbipm_db(x,nx,y,ny,f1,nf2,ier) - end subroutine interp_mkbipm_db - - - subroutine interp_evbipm_db(xget,yget,x,nx,y,ny,f1,nf2,z,ier) - use bipm_db, only: do_evbipm_db - integer, intent(in) :: nx,ny - real(dp), intent(in) :: xget,yget ! target of this interpolation - real(dp), intent(in), pointer :: x(:) ! (nx) ! ordered x grid - real(dp), intent(in), pointer :: y(:) ! (ny) ! ordered y grid - integer, intent(in) :: nf2 - real(dp), intent(in), pointer :: f1(:) ! =(4,nf2,ny) ! function data - real(dp), intent(out) :: z - integer, intent(out) :: ier ! error code =0 ==> no error - call do_evbipm_db(xget,yget,x,nx,y,ny,f1,nf2,z,ier) - end subroutine interp_evbipm_db - - -! *********************************************************************** -! *********************************************************************** - - end module interp_2d_lib_db + subroutine interp_mkbipm_db(x, nx, y, ny, f1, nf2, ierr) + use bipm_db, only: do_mkbipm_db + integer, intent(in) :: nx ! length of x vector + integer, intent(in) :: ny ! length of y vector + real(dp), intent(in), pointer :: x(:) ! (nx) ! x vector, strict ascending + real(dp), intent(in), pointer :: y(:) ! (ny) ! y vector, strict ascending + integer, intent(in) :: nf2 ! 2nd dimension of f, nf2 >= nx + real(dp), intent(inout), pointer :: f1(:) ! =(4,nf2,ny) ! data & interpolant coefficients + integer, intent(out) :: ierr ! =0 on exit if there is no error. + call do_mkbipm_db(x, nx, y, ny, f1, nf2, ierr) + end subroutine interp_mkbipm_db + + subroutine interp_evbipm_db(xget, yget, x, nx, y, ny, f1, nf2, z, ierr) + use bipm_db, only: do_evbipm_db + integer, intent(in) :: nx, ny + real(dp), intent(in) :: xget, yget ! target of this interpolation + real(dp), intent(in), pointer :: x(:) ! (nx) ! ordered x grid + real(dp), intent(in), pointer :: y(:) ! (ny) ! ordered y grid + integer, intent(in) :: nf2 + real(dp), intent(in), pointer :: f1(:) ! =(4,nf2,ny) ! function data + real(dp), intent(out) :: z + integer, intent(out) :: ierr ! error code =0 ==> no error + call do_evbipm_db(xget, yget, x, nx, y, ny, f1, nf2, z, ierr) + end subroutine interp_evbipm_db + +! *********************************************************************** +! *********************************************************************** + +end module interp_2d_lib_db diff --git a/interp_2d/public/interp_2d_lib_sg.f90 b/interp_2d/public/interp_2d_lib_sg.f90 index f5f35fc0b..c20e05948 100644 --- a/interp_2d/public/interp_2d_lib_sg.f90 +++ b/interp_2d/public/interp_2d_lib_sg.f90 @@ -23,13 +23,13 @@ ! ! *********************************************************************** - module interp_2d_lib_sg - ! single precision library for 2D interpolation +module interp_2d_lib_sg + ! single precision library for 2D interpolation - implicit none + implicit none - contains ! the procedure interface for the library - ! client programs should only call these routines. +contains ! the procedure interface for the library + ! client programs should only call these routines. ! Contents @@ -37,16 +37,14 @@ module interp_2d_lib_sg ! interp_RGBI3P_sg -- point interpolation (Akima) ! interp_RGSF3P_sg -- surface interpolation (Akima) - + ! interp_mkbicub_sg -- bicubic splines - + ! Scattered set of data points ! interp_CS2VAL_sg -- point interpolation (Renka) ! interp_CS2GRD_sg -- point interpolation with gradients (Renka) - - ! see the documents in refs directory for more info. ! *********************************************************************** @@ -54,181 +52,175 @@ module interp_2d_lib_sg ! *********************************************************************** ! *********************************************************************** - - -* Rectangular-grid bivariate interpolation and surface fitting -* from ACM Algorithm 760., ACM Trans. Math. Software (22) 1996, 357-361. -* Hiroshi Akima -* U.S. Department of Commerce, NTIA/ITS -* Version of 1995/08 - -* NOTE: versions for scattered data follow. - -* see interp_2d_lib_db for double precision version. - - subroutine interp_RGBI3P_sg(MD,NXD,NYD,XD,YD,ZD,NIP,XI,YI,ZI,IER,WK) - integer, intent(in) :: MD, NXD, NYD, NIP - real, intent(in) :: XD(NXD), YD(NYD), ZD(NXD,NYD), XI(NIP), YI(NIP) - real, intent(inout) :: ZI(NIP), WK(3,NXD,NYD) - integer, intent(out) :: IER -* -* This subroutine performs interpolation of a bivariate function, -* z(x,y), on a rectangular grid in the x-y plane. It is based on -* the revised Akima method. -* -* In this subroutine, the interpolating function is a piecewise -* function composed of a set of bicubic (bivariate third-degree) -* polynomials, each applicable to a rectangle of the input grid -* in the x-y plane. Each polynomial is determined locally. -* -* This subroutine has the accuracy of a bicubic polynomial, i.e., -* it interpolates accurately when all data points lie on a -* surface of a bicubic polynomial. -* -* The grid lines can be unevenly spaced. -* -* The input arguments are -* MD = mode of computation -* = 1 for new XD, YD, or ZD data (default) -* = 2 for old XD, YD, and ZD data, -* NXD = number of the input-grid data points in the x -* coordinate (must be 2 or greater), -* NYD = number of the input-grid data points in the y -* coordinate (must be 2 or greater), -* XD = array of dimension NXD containing the x coordinates -* of the input-grid data points (must be in a -* monotonic increasing order), -* YD = array of dimension NYD containing the y coordinates -* of the input-grid data points (must be in a -* monotonic increasing order), -* ZD = two-dimensional array of dimension NXD*NYD -* containing the z(x,y) values at the input-grid data -* points, -* NIP = number of the output points at which interpolation -* of the z value is desired (must be 1 or greater), -* XI = array of dimension NIP containing the x coordinates -* of the output points, -* YI = array of dimension NIP containing the y coordinates -* of the output points. -* -* The output arguments are -* ZI = array of dimension NIP where the interpolated z -* values at the output points are to be stored, -* IER = error flag -* = 0 for no errors -* = 1 for NXD = 1 or less -* = 2 for NYD = 1 or less -* = 3 for identical XD values or -* XD values out of sequence -* = 4 for identical YD values or -* YD values out of sequence -* = 5 for NIP = 0 or less. -* -* The other argument is -* WK = three dimensional array of dimension 3*NXD*NYD used -* internally as a work area. -* -* The very first call to this subroutine and the call with a new -* XD, YD, and ZD array must be made with MD=1. The call with MD=2 -* must be preceded by another call with the same XD, YD, and ZD -* arrays. Between the call with MD=2 and its preceding call, the -* WK array must not be disturbed. -* - call do_RGBI3P_sg(MD,NXD,NYD,XD,YD,ZD,NIP,XI,YI,ZI,IER,WK) - end subroutine interp_RGBI3P_sg - - - subroutine interp_RGSF3P_sg(MD,NXD,NYD,XD,YD,ZD,NXI,XI,NYI,YI,ZI,IER,WK) - integer, intent(in) :: MD, NXD, NYD, NXI, NYI - real, intent(in) :: XD(NXD), YD(NYD), ZD(NXD,NYD), XI(NXI), YI(NYI) - real, intent(inout) :: ZI(NXI,NYI), WK(3,NXD,NYD) - integer, intent(out) :: IER -* -* Rectangular-grid surface fitting -* (a master subroutine of the RGBI3P/RGSF3P_sg subroutine package) -* -* Hiroshi Akima -* U.S. Department of Commerce, NTIA/ITS -* Version of 1995/08 -* -* This subroutine performs surface fitting by interpolating -* values of a bivariate function, z(x,y), on a rectangular grid -* in the x-y plane. It is based on the revised Akima method. -* -* In this subroutine, the interpolating function is a piecewise -* function composed of a set of bicubic (bivariate third-degree) -* polynomials, each applicable to a rectangle of the input grid -* in the x-y plane. Each polynomial is determined locally. -* -* This subroutine has the accuracy of a bicubic polynomial, i.e., -* it fits the surface accurately when all data points lie on a -* surface of a bicubic polynomial. -* -* The grid lines of the input and output data can be unevenly -* spaced. -* -* The input arguments are -* MD = mode of computation -* = 1 for new XD, YD, or ZD data (default) -* = 2 for old XD, YD, and ZD data, -* NXD = number of the input-grid data points in the x -* coordinate (must be 2 or greater), -* NYD = number of the input-grid data points in the y -* coordinate (must be 2 or greater), -* XD = array of dimension NXD containing the x coordinates -* of the input-grid data points (must be in a -* monotonic increasing order), -* YD = array of dimension NYD containing the y coordinates -* of the input-grid data points (must be in a -* monotonic increasing order), -* ZD = two-dimensional array of dimension NXD*NYD -* containing the z(x,y) values at the input-grid data -* points, -* NXI = number of output grid points in the x coordinate -* (must be 1 or greater), -* XI = array of dimension NXI containing the x coordinates -* of the output grid points, -* NYI = number of output grid points in the y coordinate -* (must be 1 or greater), -* YI = array of dimension NYI containing the y coordinates -* of the output grid points. -* -* The output arguments are -* ZI = two-dimensional array of dimension NXI*NYI, where -* the interpolated z values at the output grid -* points are to be stored, -* IER = error flag -* = 0 for no error -* = 1 for NXD = 1 or less -* = 2 for NYD = 1 or less -* = 3 for identical XD values or -* XD values out of sequence -* = 4 for identical YD values or -* YD values out of sequence -* = 5 for NXI = 0 or less -* = 6 for NYI = 0 or less. -* -* The other argument is -* WK = three-dimensional array of dimension 3*NXD*NYD used -* internally as a work area. -* -* The very first call to this subroutine and the call with a new -* XD, YD, or ZD array must be made with MD=1. The call with MD=2 -* must be preceded by another call with the same XD, YD, and ZD -* arrays. Between the call with MD=2 and its preceding call, the -* WK array must not be disturbed. - - call do_RGSF3P_sg(MD,NXD,NYD,XD,YD,ZD,NXI,XI,NYI,YI,ZI,IER,WK) - end subroutine interp_RGSF3P_sg - +! Rectangular-grid bivariate interpolation and surface fitting +! from ACM Algorithm 760., ACM Trans. Math. Software (22) 1996, 357-361. +! Hiroshi Akima +! U.S. Department of Commerce, NTIA/ITS +! Version of 1995/08 + +! NOTE: versions for scattered data follow. + +! see interp_2d_lib_db for double precision version. + + subroutine interp_RGBI3P_sg(MD, NXD, NYD, XD, YD, ZD, NIP, XI, YI, ZI, ierr, WK) + integer, intent(in) :: MD, NXD, NYD, NIP + real, intent(in) :: XD(NXD), YD(NYD), ZD(NXD, NYD), XI(NIP), YI(NIP) + real, intent(inout) :: ZI(NIP), WK(3, NXD, NYD) + integer, intent(out) :: ierr +! +! This subroutine performs interpolation of a bivariate function, +! z(x,y), on a rectangular grid in the x-y plane. It is based on +! the revised Akima method. +! +! In this subroutine, the interpolating function is a piecewise +! function composed of a set of bicubic (bivariate third-degree) +! polynomials, each applicable to a rectangle of the input grid +! in the x-y plane. Each polynomial is determined locally. +! +! This subroutine has the accuracy of a bicubic polynomial, i.e., +! it interpolates accurately when all data points lie on a +! surface of a bicubic polynomial. +! +! The grid lines can be unevenly spaced. +! +! The input arguments are +! MD = mode of computation +! = 1 for new XD, YD, or ZD data (default) +! = 2 for old XD, YD, and ZD data, +! NXD = number of the input-grid data points in the x +! coordinate (must be 2 or greater), +! NYD = number of the input-grid data points in the y +! coordinate (must be 2 or greater), +! XD = array of dimension NXD containing the x coordinates +! of the input-grid data points (must be in a +! monotonic increasing order), +! YD = array of dimension NYD containing the y coordinates +! of the input-grid data points (must be in a +! monotonic increasing order), +! ZD = two-dimensional array of dimension NXD*NYD +! containing the z(x,y) values at the input-grid data +! points, +! NIP = number of the output points at which interpolation +! of the z value is desired (must be 1 or greater), +! XI = array of dimension NIP containing the x coordinates +! of the output points, +! YI = array of dimension NIP containing the y coordinates +! of the output points. +! +! The output arguments are +! ZI = array of dimension NIP where the interpolated z +! values at the output points are to be stored, +! ierr = error flag +! = 0 for no errors +! = 1 for NXD = 1 or less +! = 2 for NYD = 1 or less +! = 3 for identical XD values or +! XD values out of sequence +! = 4 for identical YD values or +! YD values out of sequence +! = 5 for NIP = 0 or less. +! +! The other argument is +! WK = three dimensional array of dimension 3*NXD*NYD used +! internally as a work area. +! +! The very first call to this subroutine and the call with a new +! XD, YD, and ZD array must be made with MD=1. The call with MD=2 +! must be preceded by another call with the same XD, YD, and ZD +! arrays. Between the call with MD=2 and its preceding call, the +! WK array must not be disturbed. +! + call do_RGBI3P_sg(MD, NXD, NYD, XD, YD, ZD, NIP, XI, YI, ZI, ierr, WK) + end subroutine interp_RGBI3P_sg + + subroutine interp_RGSF3P_sg(MD, NXD, NYD, XD, YD, ZD, NXI, XI, NYI, YI, ZI, ierr, WK) + integer, intent(in) :: MD, NXD, NYD, NXI, NYI + real, intent(in) :: XD(NXD), YD(NYD), ZD(NXD, NYD), XI(NXI), YI(NYI) + real, intent(inout) :: ZI(NXI, NYI), WK(3, NXD, NYD) + integer, intent(out) :: ierr +! +! Rectangular-grid surface fitting +! (a master subroutine of the RGBI3P/RGSF3P_sg subroutine package) +! +! Hiroshi Akima +! U.S. Department of Commerce, NTIA/ITS +! Version of 1995/08 +! +! This subroutine performs surface fitting by interpolating +! values of a bivariate function, z(x,y), on a rectangular grid +! in the x-y plane. It is based on the revised Akima method. +! +! In this subroutine, the interpolating function is a piecewise +! function composed of a set of bicubic (bivariate third-degree) +! polynomials, each applicable to a rectangle of the input grid +! in the x-y plane. Each polynomial is determined locally. +! +! This subroutine has the accuracy of a bicubic polynomial, i.e., +! it fits the surface accurately when all data points lie on a +! surface of a bicubic polynomial. +! +! The grid lines of the input and output data can be unevenly +! spaced. +! +! The input arguments are +! MD = mode of computation +! = 1 for new XD, YD, or ZD data (default) +! = 2 for old XD, YD, and ZD data, +! NXD = number of the input-grid data points in the x +! coordinate (must be 2 or greater), +! NYD = number of the input-grid data points in the y +! coordinate (must be 2 or greater), +! XD = array of dimension NXD containing the x coordinates +! of the input-grid data points (must be in a +! monotonic increasing order), +! YD = array of dimension NYD containing the y coordinates +! of the input-grid data points (must be in a +! monotonic increasing order), +! ZD = two-dimensional array of dimension NXD*NYD +! containing the z(x,y) values at the input-grid data +! points, +! NXI = number of output grid points in the x coordinate +! (must be 1 or greater), +! XI = array of dimension NXI containing the x coordinates +! of the output grid points, +! NYI = number of output grid points in the y coordinate +! (must be 1 or greater), +! YI = array of dimension NYI containing the y coordinates +! of the output grid points. +! +! The output arguments are +! ZI = two-dimensional array of dimension NXI*NYI, where +! the interpolated z values at the output grid +! points are to be stored, +! ierr = error flag +! = 0 for no error +! = 1 for NXD = 1 or less +! = 2 for NYD = 1 or less +! = 3 for identical XD values or +! XD values out of sequence +! = 4 for identical YD values or +! YD values out of sequence +! = 5 for NXI = 0 or less +! = 6 for NYI = 0 or less. +! +! The other argument is +! WK = three-dimensional array of dimension 3*NXD*NYD used +! internally as a work area. +! +! The very first call to this subroutine and the call with a new +! XD, YD, or ZD array must be made with MD=1. The call with MD=2 +! must be preceded by another call with the same XD, YD, and ZD +! arrays. Between the call with MD=2 and its preceding call, the +! WK array must not be disturbed. + + call do_RGSF3P_sg(MD, NXD, NYD, XD, YD, ZD, NXI, XI, NYI, YI, ZI, ierr, WK) + end subroutine interp_RGSF3P_sg ! *********************************************************************** ! *********************************************************************** ! *********************************************************************** ! *********************************************************************** - - ! cubic Shepard method for bivariate interpolation of scattered data. ! from ACM Algorithm 790., ACM Trans. Math. Software (25) 1999, 70-73. ! Robert J. Renka @@ -240,12 +232,12 @@ end subroutine interp_RGSF3P_sg ! use CS2VAL_sg to evaluate it. ! use CS2GRD_sg to get value and derivatives. ! see interp_2d_lib_db for double precision versions. - - subroutine interp_CSHEP2_sg(N,X,Y,F,NC,NW,NR,LCELL,LNEXT,XMIN,YMIN,DX,DY,RMAX,RW,A,IER) - integer, intent(in) :: N, NC, NW, NR - integer, intent(out) :: LCELL(NR,NR), LNEXT(N), IER - real, intent(in) :: X(N), Y(N), F(N) - real, intent(inout) :: XMIN, YMIN, DX, DY, RMAX, RW(N), A(9,N) + + subroutine interp_CSHEP2_sg(N, X, Y, F, NC, NW, NR, LCELL, LNEXT, XMIN, YMIN, DX, DY, RMAX, RW, A, ierr) + integer, intent(in) :: N, NC, NW, NR + integer, intent(out) :: LCELL(NR, NR), LNEXT(N), ierr + real, intent(in) :: X(N), Y(N), F(N) + real, intent(inout) :: XMIN, YMIN, DX, DY, RMAX, RW(N), A(9, N) ! ! Here's the [slightly edited] documentation. ! @@ -351,24 +343,23 @@ subroutine interp_CSHEP2_sg(N,X,Y,F,NC,NW,NR,LCELL,LNEXT,XMIN,YMIN,DX,DY,RMAX,RW ! cubic nodal function C(k) in column k. ! ! Note that the output parameters described above are not -! defined unless IER = 0. +! defined unless ierr = 0. ! -! IER = Error indicator: -! IER = 0 if no errors were encountered. -! IER = 1 if N, NC, NW, or NR is outside its +! ierr = Error indicator: +! ierr = 0 if no errors were encountered. +! ierr = 1 if N, NC, NW, or NR is outside its ! valid range. -! IER = 2 if duplicate nodes were encountered. -! IER = 3 if all nodes are collinear. - - call do_CSHEP2_sg(N,X,Y,F,NC,NW,NR,LCELL,LNEXT,XMIN,YMIN,DX,DY,RMAX,RW,A,IER) +! ierr = 2 if duplicate nodes were encountered. +! ierr = 3 if all nodes are collinear. - end subroutine interp_CSHEP2_sg + call do_CSHEP2_sg(N, X, Y, F, NC, NW, NR, LCELL, LNEXT, XMIN, YMIN, DX, DY, RMAX, RW, A, ierr) + end subroutine interp_CSHEP2_sg - real function interp_CS2VAL_sg(PX,PY,N,X,Y,F,NR,LCELL,LNEXT,XMIN,YMIN,DX,DY,RMAX,RW,A,IER) - integer, intent(in) :: N, NR, LCELL(NR,NR), LNEXT(N) - real, intent(in) :: PX, PY, X(N), Y(N), F(N), XMIN, YMIN, DX, DY, RMAX, RW(N), A(9,N) - integer, intent(out) :: IER + real function interp_CS2VAL_sg(PX, PY, N, X, Y, F, NR, LCELL, LNEXT, XMIN, YMIN, DX, DY, RMAX, RW, A, ierr) + integer, intent(in) :: N, NR, LCELL(NR, NR), LNEXT(N) + real, intent(in) :: PX, PY, X(N), Y(N), F(N), XMIN, YMIN, DX, DY, RMAX, RW(N), A(9, N) + integer, intent(out) :: ierr ! ! This function returns the value C(PX,PY), where C is the ! weighted sum of cubic nodal functions defined in Subrou- @@ -419,21 +410,20 @@ real function interp_CS2VAL_sg(PX,PY,N,X,Y,F,NR,LCELL,LNEXT,XMIN,YMIN,DX,DY,RMAX ! On output: ! ! CS2VAL_sg = Function value C(PX,PY) unless N, NR, DX, -! DY, or RMAX is invalid, in which case IER /= 0. +! DY, or RMAX is invalid, in which case ierr /= 0. ! -! IER = Error indicator: -! IER = 0 if no errors were encountered. +! ierr = Error indicator: +! ierr = 0 if no errors were encountered. ! - real :: do_CS2VAL_sg - interp_CS2VAL_sg = do_CS2VAL_sg(PX,PY,N,X,Y,F,NR,LCELL,LNEXT,XMIN,YMIN,DX,DY,RMAX,RW,A,IER) - end function interp_CS2VAL_sg - + real :: do_CS2VAL_sg + interp_CS2VAL_sg = do_CS2VAL_sg(PX, PY, N, X, Y, F, NR, LCELL, LNEXT, XMIN, YMIN, DX, DY, RMAX, RW, A, ierr) + end function interp_CS2VAL_sg - subroutine interp_CS2GRD_sg(PX,PY,N,X,Y,F,NR,LCELL,LNEXT,XMIN,YMIN,DX,DY,RMAX,RW,A,C,CX,CY,IER) - integer, intent(in) :: N, NR, LCELL(NR,NR), LNEXT(N) - real, intent(in) :: PX, PY, X(N), Y(N), F(N), XMIN, YMIN, DX, DY, RMAX, RW(N), A(9,N) - real, intent(out) :: C, CX, CY - integer, intent(out) :: IER + subroutine interp_CS2GRD_sg(PX, PY, N, X, Y, F, NR, LCELL, LNEXT, XMIN, YMIN, DX, DY, RMAX, RW, A, C, CX, CY, ierr) + integer, intent(in) :: N, NR, LCELL(NR, NR), LNEXT(N) + real, intent(in) :: PX, PY, X(N), Y(N), F(N), XMIN, YMIN, DX, DY, RMAX, RW(N), A(9, N) + real, intent(out) :: C, CX, CY + integer, intent(out) :: ierr ! ! This subroutine computes the value and gradient at P = ! (PX,PY) of the interpolatory function C defined in Sub- @@ -482,30 +472,27 @@ subroutine interp_CS2GRD_sg(PX,PY,N,X,Y,F,NR,LCELL,LNEXT,XMIN,YMIN,DX,DY,RMAX,RW ! ! On output: ! -! C = Value of C at (PX,PY) unless IER .EQ. 1, in +! C = Value of C at (PX,PY) unless ierr .EQ. 1, in ! which case no values are returned. ! ! CX,CY = First partial derivatives of C at (PX,PY) -! unless IER .EQ. 1. +! unless ierr .EQ. 1. ! -! IER = Error indicator: -! IER = 0 if no errors were encountered. -! IER = 1 if N, NR, DX, DY or RMAX is invalid. -! IER = 2 if no errors were encountered but +! ierr = Error indicator: +! ierr = 0 if no errors were encountered. +! ierr = 1 if N, NR, DX, DY or RMAX is invalid. +! ierr = 2 if no errors were encountered but ! (PX,PY) is not within the radius R(k) ! for any node k (and thus C=CX=CY=0). - call do_CS2GRD_sg(PX,PY,N,X,Y,F,NR,LCELL,LNEXT,XMIN,YMIN,DX,DY,RMAX,RW,A,C,CX,CY,IER) - end subroutine interp_CS2GRD_sg - - + call do_CS2GRD_sg(PX, PY, N, X, Y, F, NR, LCELL, LNEXT, XMIN, YMIN, DX, DY, RMAX, RW, A, C, CX, CY, ierr) + end subroutine interp_CS2GRD_sg ! *********************************************************************** ! *********************************************************************** ! *********************************************************************** ! *********************************************************************** - ! bicubic splines and hermite ! from PSPLINE by Doug McCune (version as of February, 2004) @@ -513,24 +500,22 @@ end subroutine interp_CS2GRD_sg ! http://w3.pppl.gov/NTCC/PSPLINE ! Doug McCune, Princeton University ! dmccune@pppl.gov - + ! use interp_mkbicub_sg to set up the interpolation information ! use interp_evbicub_sg to evaluate it ! see interp_2d_lib_db for double precision versions. - subroutine interp_mkbicub_sg(x,nx,y,ny,f1,nf2, - > ibcxmin,bcxmin,ibcxmax,bcxmax, - > ibcymin,bcymin,ibcymax,bcymax, - > ilinx,iliny,ier) + subroutine interp_mkbicub_sg(x, nx, y, ny, f1, nf2, & + ibcxmin, bcxmin, ibcxmax, bcxmax, ibcymin, bcymin, ibcymax, bcymax, ilinx, iliny, ierr) - use bicub_sg + use bicub_sg - integer, intent(in) :: nx ! length of x vector - integer, intent(in) :: ny ! length of y vector - real, intent(in) :: x(:) ! (nx) ! x vector, strict ascending - real, intent(in) :: y(:) ! (ny) ! y vector, strict ascending - integer, intent(in) :: nf2 ! 2nd dimension of f, nf2.ge.nx - real, intent(inout), pointer :: f1(:) ! =(4,nf2,ny) ! data & spline coefficients + integer, intent(in) :: nx ! length of x vector + integer, intent(in) :: ny ! length of y vector + real, intent(in) :: x(:) ! (nx) ! x vector, strict ascending + real, intent(in) :: y(:) ! (ny) ! y vector, strict ascending + integer, intent(in) :: nf2 ! 2nd dimension of f, nf2.ge.nx + real, intent(inout), pointer :: f1(:) ! =(4,nf2,ny) ! data & spline coefficients ! ! on input: f(1,i,j) = f(x(i),y(j)) ! on output: f(1,i,j) unchanged @@ -564,13 +549,13 @@ subroutine interp_mkbicub_sg(x,nx,y,ny,f1,nf2, ! ! input bdy condition data: integer, intent(in) :: ibcxmin ! bc flag for x=xmin - real, intent(in) :: bcxmin(:) ! (ny) ! bc data vs. y at x=xmin + real, intent(in) :: bcxmin(:) ! (ny) ! bc data vs. y at x=xmin integer, intent(in) :: ibcxmax ! bc flag for x=xmax - real, intent(in) :: bcxmax(:) ! (ny) ! bc data vs. y at x=xmax + real, intent(in) :: bcxmax(:) ! (ny) ! bc data vs. y at x=xmax integer, intent(in) :: ibcymin ! bc flag for y=ymin - real, intent(in) :: bcymin(:) ! (nx) ! bc data vs. x at y=ymin + real, intent(in) :: bcymin(:) ! (nx) ! bc data vs. x at y=ymin integer, intent(in) :: ibcymax ! bc flag for y=ymax - real, intent(in) :: bcymax(:) ! (nx) ! bc data vs. x at y=ymax + real, intent(in) :: bcymax(:) ! (nx) ! bc data vs. x at y=ymax ! ! with interpretation: ! ibcxmin -- indicator for boundary condition at x(1): @@ -596,16 +581,16 @@ subroutine interp_mkbicub_sg(x,nx,y,ny,f1,nf2, ! and analogous interpretation for ibcymin,bcymin,ibcymax,bcymax ! (df/dy or d2f/dy2 boundary conditions at y=ymin and y=ymax). ! -! output linear grid flags and completion code (ier=0 is normal): +! output linear grid flags and completion code (ierr=0 is normal): ! integer, intent(out) :: ilinx ! =1: x grid is "nearly" equally spaced integer, intent(out) :: iliny ! =1: y grid is "nearly" equally spaced ! ilinx and iliny are set to zero if corresponding grids are not equally ! spaced ! - integer, intent(out) :: ier ! =0 on exit if there is no error. + integer, intent(out) :: ierr ! =0 on exit if there is no error. ! -! if there is an error, ier is set and a message is output on unit 6. +! if there is an error, ierr is set and a message is output on unit 6. ! these are considered programming errors in the calling routine. ! ! possible errors: @@ -617,16 +602,11 @@ subroutine interp_mkbicub_sg(x,nx,y,ny,f1,nf2, ! !----------------------- - call do_mkbicub(x,nx,y,ny,f1,nf2, - > ibcxmin,bcxmin,ibcxmax,bcxmax, - > ibcymin,bcymin,ibcymax,bcymax, - > ilinx,iliny,ier) + call do_mkbicub(x, nx, y, ny, f1, nf2, ibcxmin, bcxmin, ibcxmax, bcxmax, ibcymin, bcymin, ibcymax, bcymax, ilinx, iliny, ierr) - end subroutine interp_mkbicub_sg - - - - subroutine interp_evbicub_sg(xget,yget,x,nx,y,ny,ilinx,iliny,f1,inf2,ict,fval,ier) + end subroutine interp_mkbicub_sg + + subroutine interp_evbicub_sg(xget, yget, x, nx, y, ny, ilinx, iliny, f1, inf2, ict, fval, ierr) use bicub_sg @@ -640,14 +620,14 @@ subroutine interp_evbicub_sg(xget,yget,x,nx,y,ny,ilinx,iliny,f1,inf2,ict,fval,ie ! this subroutine calls two subroutines: ! herm2xy -- find cell containing (xget,yget) ! fvbicub -- evaluate interpolant function and (optionally) derivatives - + ! input arguments: ! ================ ! - integer, intent(in) :: nx,ny ! grid sizes - real, intent(in) :: xget,yget ! target of this interpolation - real, intent(in) :: x(:) ! (nx) ! ordered x grid - real, intent(in) :: y(:) ! (ny) ! ordered y grid + integer, intent(in) :: nx, ny ! grid sizes + real, intent(in) :: xget, yget ! target of this interpolation + real, intent(in) :: x(:) ! (nx) ! ordered x grid + real, intent(in) :: y(:) ! (ny) ! ordered y grid integer, intent(in) :: ilinx ! ilinx=1 => assume x evenly spaced integer, intent(in) :: iliny ! iliny=1 => assume y evenly spaced ! @@ -699,8 +679,8 @@ subroutine interp_evbicub_sg(xget,yget,x,nx,y,ny,ilinx,iliny,f1,inf2,ict,fval,ie ! output arguments: ! ================= ! - real, intent(inout) :: fval(6) ! output data - integer, intent(out) :: ier ! error code =0 ==> no error + real, intent(inout) :: fval(6) ! output data + integer, intent(out) :: ierr ! error code =0 ==> no error ! ! fval(1) receives the first output (depends on ict(...) spec) ! fval(2) receives the second output (depends on ict(...) spec) @@ -722,22 +702,19 @@ subroutine interp_evbicub_sg(xget,yget,x,nx,y,ny,ilinx,iliny,f1,inf2,ict,fval,ie ! on input ict = [0,0,1,0,0,0] ! on output fval= [df/dy] ... elements 2 -- 6 never referenced. ! -! ier -- completion code: 0 means OK +! ierr -- completion code: 0 means OK !------------------- - integer i,j - integer ii(1), jj(1) - real xparam(1),yparam(1),hx(1),hxi(1),hy(1),hyi(1) - call herm2xy(xget,yget,x,nx,y,ny,ilinx,iliny,i,j, - > xparam(1),yparam(1),hx(1),hxi(1),hy(1),hyi(1),ier) - if(ier.ne.0) return + integer :: i, j + integer :: ii(1), jj(1) + real xparam(1), yparam(1), hx(1), hxi(1), hy(1), hyi(1) + call herm2xy(xget, yget, x, nx, y, ny, ilinx, iliny, i, j, xparam(1), yparam(1), hx(1), hxi(1), hy(1), hyi(1), ierr) + if (ierr /= 0) return ii(1) = i jj(1) = j - call fvbicub(ict,1,1,fval,ii,jj,xparam,yparam,hx,hxi,hy,hyi,f1,inf2,ny) - - end subroutine interp_evbicub_sg - + call fvbicub(ict, 1, 1, fval, ii, jj, xparam, yparam, hx, hxi, hy, hyi, f1, inf2, ny) + end subroutine interp_evbicub_sg ! *********************************************************************** ! *********************************************************************** @@ -746,33 +723,30 @@ end subroutine interp_evbicub_sg ! does 4 1d interpolations in x followed by 1 1d interpolation in y. ! use interp_mkbipm_db to set up the interpolation information ! use interp_evbipm_db to evaluate it - - subroutine interp_mkbipm_sg(x,nx,y,ny,f1,nf2,ier) - use bipm_sg, only: do_mkbipm_sg - integer, intent(in) :: nx ! length of x vector - integer, intent(in) :: ny ! length of y vector - real, intent(in), pointer :: x(:) ! (nx) ! x vector, strict ascending - real, intent(in), pointer :: y(:) ! (ny) ! y vector, strict ascending - integer, intent(in) :: nf2 ! 2nd dimension of f, nf2.ge.nx - real, intent(inout), pointer :: f1(:) ! =(4,nf2,ny) ! data & interpolant coefficients - integer, intent(out) :: ier ! =0 on exit if there is no error. - call do_mkbipm_sg(x,nx,y,ny,f1,nf2,ier) - end subroutine interp_mkbipm_sg - - - subroutine interp_evbipm_sg(xget,yget,x,nx,y,ny,f1,nf2,z,ier) - use bipm_sg, only: do_evbipm_sg - integer, intent(in) :: nx,ny - real, intent(in) :: xget,yget ! target of this interpolation - real, intent(in), pointer :: x(:) ! (nx) ! ordered x grid - real, intent(in), pointer :: y(:) ! (ny) ! ordered y grid - integer, intent(in) :: nf2 - real, intent(in), pointer :: f1(:) ! =(4,nf2,ny) ! function data - real, intent(out) :: z - integer, intent(out) :: ier ! error code =0 ==> no error - call do_evbipm_sg(xget,yget,x,nx,y,ny,f1,nf2,z,ier) - end subroutine interp_evbipm_sg - - - - end module interp_2d_lib_sg + + subroutine interp_mkbipm_sg(x, nx, y, ny, f1, nf2, ierr) + use bipm_sg, only: do_mkbipm_sg + integer, intent(in) :: nx ! length of x vector + integer, intent(in) :: ny ! length of y vector + real, intent(in), pointer :: x(:) ! (nx) ! x vector, strict ascending + real, intent(in), pointer :: y(:) ! (ny) ! y vector, strict ascending + integer, intent(in) :: nf2 ! 2nd dimension of f, nf2.ge.nx + real, intent(inout), pointer :: f1(:) ! =(4,nf2,ny) ! data & interpolant coefficients + integer, intent(out) :: ierr ! =0 on exit if there is no error. + call do_mkbipm_sg(x, nx, y, ny, f1, nf2, ierr) + end subroutine interp_mkbipm_sg + + subroutine interp_evbipm_sg(xget, yget, x, nx, y, ny, f1, nf2, z, ierr) + use bipm_sg, only: do_evbipm_sg + integer, intent(in) :: nx, ny + real, intent(in) :: xget, yget ! target of this interpolation + real, intent(in), pointer :: x(:) ! (nx) ! ordered x grid + real, intent(in), pointer :: y(:) ! (ny) ! ordered y grid + integer, intent(in) :: nf2 + real, intent(in), pointer :: f1(:) ! =(4,nf2,ny) ! function data + real, intent(out) :: z + integer, intent(out) :: ierr ! error code =0 ==> no error + call do_evbipm_sg(xget, yget, x, nx, y, ny, f1, nf2, z, ierr) + end subroutine interp_evbipm_sg + +end module interp_2d_lib_sg diff --git a/interp_2d/test/make/makefile_base b/interp_2d/test/make/makefile_base index 98343004d..a13c90dd0 100644 --- a/interp_2d/test/make/makefile_base +++ b/interp_2d/test/make/makefile_base @@ -25,9 +25,9 @@ LIBS_LOCAL = interp_2d DEPS_LOCAL = $(patsubst %,$(LOCAL_LIB_DIR)/lib%.$(LIB_SUFFIX),$(LIBS_LOCAL)) LOAD_LOCAL = -L$(LOCAL_LIB_DIR) $(addprefix -l,$(LIBS_LOCAL)) -LIBS_OTHER = num interp_1d $(LIBS_MATRIX) +LIBS_OTHER = num interp_1d auto_diff $(LIBS_MATRIX) DEPS_OTHER = $(patsubst %,$(MESA_LIB_DIR)/lib%.$(LIB_SUFFIX),$(LIBS_OTHER)) -LOAD_OTHER = -L$(MESA_LIB_DIR) -lnum -linterp_1d $(LOAD_MATRIX) +LOAD_OTHER = -L$(MESA_LIB_DIR) -lnum -linterp_1d -lauto_diff $(LOAD_MATRIX) ################################################################# # diff --git a/interp_2d/test/src/interp_2d_support.f b/interp_2d/test/src/interp_2d_support.f index 33803c7c2..102e6c09f 100644 --- a/interp_2d/test/src/interp_2d_support.f +++ b/interp_2d/test/src/interp_2d_support.f @@ -171,7 +171,7 @@ subroutine eval_2D_interp_db(bicub_flag,x,y,z,dz_dx,dz_dy) integer :: ict(6) ! code specifying output desired real(dp) :: fval(6) ! results - integer :: nf2, ix, jy + integer :: nf2 integer :: ier ! error code =0 ==> no error nf2 = num_xpts @@ -212,7 +212,7 @@ subroutine eval_2D_interp_sg(bicub_flag,x,y,z,dz_dx,dz_dy) integer :: ict(6) ! code specifying output desired real :: fval(6) ! results - integer :: nf2, ix, jy + integer :: nf2 integer :: ier ! error code =0 ==> no error diff --git a/interp_2d/test/src/test_renka790_db.f b/interp_2d/test/src/test_renka790_db.f index d8d40812b..056bb732a 100644 --- a/interp_2d/test/src/test_renka790_db.f +++ b/interp_2d/test/src/test_renka790_db.f @@ -30,7 +30,7 @@ SUBROUTINE TEST_RENKA790_db . RMAX, SSA, SSE, SSM, SUM, XMIN, YMIN C DOUBLE PRECISION CS2VAL_db INTEGER I, IER, J, K, KF, KFF, KFL, KS, LOUT, - . N, NC, NFUN, NP, NR, NSET, NW, NWMAX + . N, NC, NFUN, NP, NR, NSET, NW C C Data: C diff --git a/interp_2d/test/src/test_renka790_sg.f b/interp_2d/test/src/test_renka790_sg.f index d107ede11..d9e95ec69 100644 --- a/interp_2d/test/src/test_renka790_sg.f +++ b/interp_2d/test/src/test_renka790_sg.f @@ -30,7 +30,7 @@ SUBROUTINE TEST_RENKA790_SG . RMAX, SSA, SSE, SSM, SUM, XMIN, YMIN C REAL CS2VAL_sg INTEGER I, IER, J, K, KF, KFF, KFL, KS, LOUT, - . N, NC, NFUN, NP, NR, NSET, NW, NWMAX + . N, NC, NFUN, NP, NR, NSET, NW C C Data: C diff --git a/ionization/test/src/test_ionization_support.f b/ionization/test/src/test_ionization_support.f index b8cbc285f..72ead98e1 100644 --- a/ionization/test/src/test_ionization_support.f +++ b/ionization/test/src/test_ionization_support.f @@ -146,10 +146,9 @@ end subroutine do_test_eval_ionization subroutine Build_Plots use const_lib use utils_lib, only: mkdir - integer :: ierr character(len=256) :: data_dir, dir - real(dp) :: log_ne_min,log_ne_max,logT_min,logT_max,dlog_ne,dlogT,lgRho,log_ne,logT + real(dp) :: log_ne_min,log_ne_max,logT_min,logT_max,dlog_ne,dlogT,log_ne,logT integer log_ne_points, logT_points integer i,j,k,info,io,io_first,io_last,io_log_ne,io_logT,num_vals diff --git a/jenkins/Dockerfile b/jenkins/Dockerfile index 5c38363bc..48d90fd86 100644 --- a/jenkins/Dockerfile +++ b/jenkins/Dockerfile @@ -12,6 +12,7 @@ RUN apt-get update && \ tcsh \ git \ git-lfs \ + python3 \ ruby \ && \ apt-get autoremove --purge -y && \ diff --git a/kap/defaults/kap.defaults b/kap/defaults/kap.defaults index 115bcd82b..168cdc847 100644 --- a/kap/defaults/kap.defaults +++ b/kap/defaults/kap.defaults @@ -12,10 +12,31 @@ ! Zbase ! ~~~~~ - ! The base metallicity for the opacity tables. This provides the + ! The base metallicity for the opacity tables. This provides the ! reference metallicity necessary to calculate element variations. ! Physically, this usually corresponds to the initial metallicity - ! of the star. + ! of the model and remains static during the entirety of a + ! calculation. Variations in metallicity from nuclear burning and + ! mixing should not alter Zbase as its purpose is to serve as a + ! reference metallicity for C and O enhancement during Helium burning. + + ! See ``use_Zbase_for_Type1``. By default, Zbase does not typically affect the + ! outer regions of a stellar model when the surface metallicity remains + ! below the initial metallicity (Z < Zbase). Zbase is typically + ! only used for Type2 opacities which operate deeper in the stellar interior. + + ! Specific scenarios such as high Z accretion onto a metal poor model + ! can produce a situation where (Z > Zbase). During this scenario + ! the surface metallicity can be enhanced beyond the initial metallicity. + ! Users can opt to exclusively adopt Type1 opacities in this scenario with + ! the ``use_Zbase_for_Type1`` flag. + + ! NOTE: For wind schemes that scale with metallicity, we use Zbase rather than Z (as long as Zbase > 0). + ! This is because wind mass loss rate is primarily determined by iron opacity, + ! which is unlikely to change during the evolution. + + ! Zbase must be set if using kapCN, AESOPUS, or Type2 + ! opacities or else MESA well draw an error. ! :: Zbase = -1 @@ -33,11 +54,26 @@ ! These tables use the value of ``Zbase`` for Z, unless ``use_Zbase_for_Type1 = .false.``. ! The Type1 tables cover a wider range of X and have a higher resolution in - ! Z for each X than Type2. The Type1 tables are for (X,Z) pairs from the following sets: + ! Z for each X than Type2. The OPAL/OP Type1 tables are for 126 (X,Z) pairs from the following sets: ! ! + X: 0.0, 0.1, 0.2, 0.35, 0.5, 0.7, 0.8, 0.9, 0.95, 1-Z ! + Z: 0.0, 1e-4, 3e-4, 1e-3, 2e-3, 4e-3, 1e-2, 2e-2, 3e-2, 4e-2, 6e-2, 8e-1, 1e-1 + !The OPLIB Type1 tables offer additional table density, for 1194 (X,Z) pairs from the following sets: + ! + ! + X: 0.0, 0.000001, 0.00001, 0.0001, 0.001, 0.01, 0.05, 0.1, + ! + 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, + ! + 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, + ! + 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, + ! + 0.98, 0.99, 1-Z + + ! + Z: 0.0, 0.000001, 0.00001, 0.00003, 0.00007, 0.0001, + ! + 0.0003, 0.0007, 0.001, 0.002, 0.003, 0.004,0.006, + ! + 0.008, 0.01, 0.012, 0.014, 0.015, 0.016, 0.017, 0.018, + ! + 0.019, 0.02, 0.021, 0.022, 0.023, 0.024, 0.025, 0.026, + ! + 0.028, 0.03, 0.035, 0.04, 0.05, 0.06, 0.07, 0.08, + ! + 0.09, 0.1, 0.15, 0.2 + ! Available options: @@ -46,6 +82,10 @@ ! + ``'a09'`` ! + ``'OP_gs98'`` ! + ``'OP_a09_nans_removed_by_hand'`` + ! + ``'oplib_gs98``' + ! + ``'oplib_agss09``' + ! + ``'oplib_aag21``' + ! + ``'oplib_mb22``' ! ! :: @@ -88,6 +128,8 @@ ! Available options: + ! + ``'lowT_fa05_mb22'`` + ! + ``'lowT_fa05_aag21'`` ! + ``'lowT_Freedman11'`` ! + ``'lowT_fa05_gs98'`` ! + ``'lowT_fa05_gn93'`` diff --git a/kap/kap_data.tar.xz b/kap/kap_data.tar.xz index 3172b9731..5783cad12 100644 --- a/kap/kap_data.tar.xz +++ b/kap/kap_data.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:95ca3578795e6d81ddb7ec8c896c9853fbf36bd5ec0dd7a6d213a35dee02d590 -size 50108664 +oid sha256:05d43caa14cadc43eedd4d26e5182acc416cae7434dd4ba8a0a55e8eedd5129c +size 95406276 diff --git a/kap/plotter/inlist_plotter b/kap/plotter/inlist_plotter index 461a292fb..c02c5f339 100644 --- a/kap/plotter/inlist_plotter +++ b/kap/plotter/inlist_plotter @@ -12,6 +12,9 @@ !### put kap options here ! see kap/defaults/kap.defaults + ! cubic_interpolation_in_X = .true. + ! cubic_interpolation_in_Z = .true. + use_Type2_opacities = .false. Zbase = 0 @@ -42,9 +45,9 @@ !### pick number of points ! values for non-xname,yname variables are ignored - nT = 100 - nRho = 100 - nX = 100 + nT = 301 + nRho = 301 + nX = 500 nZ = 150 !### pick plot limits @@ -52,23 +55,23 @@ ! center/delta takes precedence over min/max ! center is used when var is not xname/yname - X_center = 0.76 - Z_center = 0.00 + X_center = 0.625d0 ! 0.7d0 + Z_center = 5d-4 ! closest grid points are at Z = 3d-4 and 1d-3 - delta_X = 0.1 - delta_Z = 0.1 + delta_X = 0.0 + delta_Z = 0.0 X_min = 0 X_max = 1 - Z_min = 0 - Z_max = 0.1 + ! Z_min = 0 + ! Z_max = 0.1 - logT_center = 4.0 - logRho_center = -8.5 + logT_center = 6d0 + logRho_center = -2d0 - delta_logT = 1.0d0 - delta_logRho = 0.5d0 + delta_logT = 8d0 + delta_logRho = 24d0 ! logT_min = 3.8 ! logT_max = 4.2 diff --git a/kap/plotter/plotter.py b/kap/plotter/plotter.py index 50c15316f..2ef1dafc8 100755 --- a/kap/plotter/plotter.py +++ b/kap/plotter/plotter.py @@ -24,7 +24,7 @@ def parse(fname): kapDT, Yran, Xran = parse('kap_plotter.dat') # set up plot and labels -fig, ax = plt.subplots() +fig, ax = plt.subplots(figsize=(4,3)) ax.set_title(title) ax.set_xlabel(xlabel) ax.set_ylabel(ylabel) @@ -32,14 +32,14 @@ def parse(fname): ax.set_ylim(Yran.min(), Yran.max()) # set up color map -cmap = copy.copy(mpl.cm.get_cmap("viridis")) -cmap.set_over('white') +cmap = copy.copy(mpl.cm.get_cmap("coolwarm")) +cmap.set_over('tab:red') cmap.set_under('black') # set color bar limits # None will auto-set limits -cbar_min = None -cbar_max = None +cbar_min = -14 +cbar_max = 2 pcol = ax.pcolormesh(Xran, Yran, kapDT[...,2], shading='nearest', cmap=cmap, vmin=cbar_min, vmax=cbar_max) pcol.set_edgecolor('face') @@ -47,6 +47,6 @@ def parse(fname): cax.set_label('') # save figure -fig.savefig('kap_plotter.png', dpi=150) +fig.savefig('kap_plotter.png', dpi=300) plt.show() diff --git a/kap/plotter/src/kap_plotter.f90 b/kap/plotter/src/kap_plotter.f90 index 84229b06d..0acad7bcb 100644 --- a/kap/plotter/src/kap_plotter.f90 +++ b/kap/plotter/src/kap_plotter.f90 @@ -8,6 +8,7 @@ program kap_plotter use chem_lib use const_lib use math_lib + use utils_lib use num_lib, only : dfridr implicit none @@ -285,12 +286,32 @@ program kap_plotter eos_handle, species, chem_id, net_iso, xa, & Rho, log10Rho, T, log10T, & res, d_dlnd, d_dlnT, d_dxa, ierr) - if (ierr /= 0) then + ! ierr /= 0 is okay as long as the following inputs to kap are fine + if(is_bad(res(i_lnfree_e)) .or. is_bad(d_dlnd(i_lnfree_e)) .or. is_bad(d_dlnT(i_lnfree_e)) .or. & + is_bad(res(i_eta)) .or. is_bad(d_dlnd(i_eta)) .or. is_bad(d_dlnT(i_eta))) then write(*,*) 'failed in eosDT_get' write(*,1) 'log10Rho', log10Rho write(*,1) 'log10T', log10T + write(*,'(A)') + write(*,1) 'eos_frac_FreeEOS', res(i_frac_FreeEOS) + write(*,1) 'eos_frac_OPAL_SCVH', res(i_frac_OPAL_SCVH) + write(*,1) 'eos_frac_Skye', res(i_frac_Skye) + write(*,1) 'eos_frac_HELM', res(i_frac_HELM) + write(*,1) 'eos_frac_ideal', res(i_frac_ideal) + write(*,'(A)') + write(*,1) 'lnfree_e', res(i_lnfree_e) + write(*,1) 'd_dlnd(lnfree_e)', d_dlnd(i_lnfree_e) + write(*,1) 'd_dlnT(lnfree_e)', d_dlnT(i_lnfree_e) + write(*,1) 'eta', res(i_eta) + write(*,1) 'd_dlnd(eta)', d_dlnd(i_eta) + write(*,1) 'd_dlnT(eta)', d_dlnT(i_eta) call mesa_error(__FILE__,__LINE__) end if + + call set_nan(kap) + call set_nan(dlnkap_dlnRho) + call set_nan(dlnkap_dlnT) + call set_nan(dlnkap_dxa) call kap_get( & kap_handle, species, chem_id, net_iso, xa, log10Rho, log10T, & @@ -322,7 +343,7 @@ program kap_plotter err = 0d0 dvardx = dfridr(dx_0,dfridr_func,err) xdum = (dvardx - dvardx_0)/max(abs(dvardx_0),min_derivative_error) - res1 = safe_log10(abs(xdum)) + res1 = log10(abs(xdum)) end if diff --git a/kap/preprocessor/inlist_lowT_fa05_aag21 b/kap/preprocessor/inlist_lowT_fa05_aag21 new file mode 100644 index 000000000..43a2f4998 --- /dev/null +++ b/kap/preprocessor/inlist_lowT_fa05_aag21 @@ -0,0 +1,15 @@ +&kappa + + data_dir = 'kap_input_data/wichita/aag21' + lowT_flag = .true. + logT_file = 'logT_points_lowT_2.7' + logR_min = -8.00d0 + logR_max = 2.00d0 + logR_points = 51 + type1_table = 'aag21' + output_dir = 'data/kap_data' + table_prefix = 'lowT_fa05_aag21' + header_info = 'low temperature opacities from Ferguson, Alexander, et al (2005) with AAG21 photospheric metals' + table_version= 38 + +/ diff --git a/kap/preprocessor/inlist_lowT_fa05_mb22 b/kap/preprocessor/inlist_lowT_fa05_mb22 new file mode 100644 index 000000000..ba655fe8f --- /dev/null +++ b/kap/preprocessor/inlist_lowT_fa05_mb22 @@ -0,0 +1,15 @@ +&kappa + + data_dir = 'kap_input_data/wichita/mb22' + lowT_flag = .true. + logT_file = 'logT_points_lowT_2.7' + logR_min = -8.00d0 + logR_max = 2.00d0 + logR_points = 51 + type1_table = 'magg21' + output_dir = 'data/kap_data' + table_prefix = 'lowT_fa05_mb22' + header_info = 'low temperature opacities from Ferguson, Alexander, et al (2005) with MB22 photospheric metals' + table_version= 38 + +/ diff --git a/kap/preprocessor/kap_input_data.tar.xz b/kap/preprocessor/kap_input_data.tar.xz index 0bfa06613..642ca3ad9 100644 --- a/kap/preprocessor/kap_input_data.tar.xz +++ b/kap/preprocessor/kap_input_data.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a674bd84bbaf1126f635094666d99c3644875aa5d105b5f7ec86a4d0a723b45c -size 18646724 +oid sha256:148124653fa74bb54fe0d919df7f3ee6beb617d8f6b153401e3e3b86a0efa3a3 +size 47137640 diff --git a/kap/preprocessor/rebuild_all b/kap/preprocessor/rebuild_all index af9e0a70e..790c7f4c6 100755 --- a/kap/preprocessor/rebuild_all +++ b/kap/preprocessor/rebuild_all @@ -36,6 +36,26 @@ function do_one_CO { echo } +function do_one_oplib { + echo "using" $1 + echo + check_okay + cd kap_input_data/oplib/ + check_okay + python spline_OPLIB_tables.py $1 + check_okay + echo $1_spline + check_okay + cp -r $1_spline/* ../../data/kap_data/. + check_okay + rm -rf $1_spline + check_okay + cd ../.. + check_okay + echo 'done' $1 + echo +} + mkdir -p data/kap_data rm -f data/kap_data/*.data @@ -81,6 +101,17 @@ do_one_CO inlist_gs98_aFe_p4_CO do_one inlist_gs98_aFe_p6 do_one inlist_gs98_aFe_p8 +do_one_oplib OPLIB_GS98_LOG_1194_25E +do_one_oplib OPLIB_AGSS09_LOG_1194_25E +do_one_oplib OPLIB_AAG21_LOG_1194_25E +do_one_oplib OPLIB_MB22_LOG_1194_25E + + +do_one inlist_lowT_fa05_mb22 +# temporary, until ferguson files issues are addressed +#do_one inlist_lowT_fa05_aag21 +cp -r kap_input_data/wichita/AAG21_lowT_MESA_tables/* data/kap_data/. + echo "**************" diff --git a/kap/preprocessor/rn_oplib b/kap/preprocessor/rn_oplib new file mode 100755 index 000000000..4f59d1c91 --- /dev/null +++ b/kap/preprocessor/rn_oplib @@ -0,0 +1,35 @@ +#!/bin/bash + + +function do_one_oplib { + echo "using" $1 + echo + check_okay + cd kap_input_data/oplib/ + check_okay + python spline_OPLIB_tables.py $1 + check_okay + echo $1_spline + check_okay + cp -r $1_spline/* ../../data/kap_data/. + check_okay + rm -rf $1_spline + check_okay + cd ../.. + check_okay + echo 'done' $1 + echo +} + + +do_one_oplib kap_input_data/oplib/OPLIB_GS98_LOG_1194_25E +do_one_oplib kap_input_data/oplib/OPLIB_AGSS09_LOG_1194_25E +do_one_oplib kap_input_data/oplib/OPLIB_AAG21_LOG_1194_25E +do_one_oplib kap_input_data/oplib/OPLIB_MB22_LOG_1194_25E + + +echo "**************************" +echo "**************************" +echo "done building oplib tables" +echo "**************************" +echo "**************************" diff --git a/kap/private/kap_aesopus.f90 b/kap/private/kap_aesopus.f90 index fadc6ae16..7afbbc629 100644 --- a/kap/private/kap_aesopus.f90 +++ b/kap/private/kap_aesopus.f90 @@ -25,7 +25,7 @@ module kap_aesopus - use hdf5io_lib + use forum_m, only: hdf5io_t, OPEN_FILE_RO use math_lib use kap_def @@ -41,7 +41,6 @@ module kap_aesopus contains subroutine kap_aesopus_init(rq, ierr) - use const_def, only: mesa_data_dir use kap_def, only: kap_aesopus_is_initialized type (Kap_General_Info), pointer :: rq integer, intent(out) :: ierr @@ -74,7 +73,7 @@ subroutine read_kap_aesopus_tables(rq, ierr) integer, intent(out) :: ierr character(len=256) :: filename - integer :: n, io + integer :: n integer :: iX, iCO, iC, iN type(hdf5io_t) :: hi, hi_ts @@ -336,7 +335,7 @@ subroutine AESOPUS_interp(Zref, X, XC, XN, XO, logR, logT, res, ierr) real(dp), intent(in) :: Zref, X, XC, XN, XO, logR, logT real(dp), intent(out) :: res(3) integer, intent(out) :: ierr - real(dp), pointer :: Z_ary(:), work1(:) + real(dp), pointer :: work1(:) integer, parameter :: nZ = 3 integer :: i,iZ real(dp) :: my_Z, raw_res(3, nZ), x_new(1), v_new(1) @@ -525,8 +524,6 @@ subroutine clipped_linear_weights(val, len, vec, loc, weights, clipped) real(dp), dimension(2), intent(out) :: weights ! for linear interpolation logical, intent(out) :: clipped ! did we clip? if so, only locs(1)/weights(1) matter - integer :: i - weights = 0 ! clip to range, if needed diff --git a/kap/private/kap_ctrls_io.f90 b/kap/private/kap_ctrls_io.f90 index 50629d7a0..22fa0fdd5 100644 --- a/kap/private/kap_ctrls_io.f90 +++ b/kap/private/kap_ctrls_io.f90 @@ -144,7 +144,6 @@ subroutine read_namelist(handle, inlist, ierr) character (len=*), intent(in) :: inlist integer, intent(out) :: ierr ! 0 means AOK. type (Kap_General_Info), pointer :: rq - integer :: iz, j include 'formats' call get_kap_ptr(handle,rq,ierr) if (ierr /= 0) return @@ -161,7 +160,6 @@ recursive subroutine read_controls_file(rq, filename, level, ierr) integer, intent(in) :: level integer, intent(out) :: ierr logical, dimension(max_extra_inlists) :: read_extra - character (len=strlen) :: message character (len=strlen), dimension(max_extra_inlists) :: extra integer :: unit, i diff --git a/kap/private/kap_eval_co.f90 b/kap/private/kap_eval_co.f90 index c317e6d7d..0fec331e7 100644 --- a/kap/private/kap_eval_co.f90 +++ b/kap/private/kap_eval_co.f90 @@ -167,7 +167,8 @@ subroutine Get_Kap_for_CO_Z_cubic(rq, iz, Z, X, dXC, dXO, logRho, logT, & logK, dlnkap_dlnRho, dlnkap_dlnT, ierr) use kap_def use interp_1d_def, only: pm_work_size - use interp_1d_lib, only: interpolate_vector, interp_pm + use interp_1d_lib, only: interpolate_vector_autodiff, interp_pm_autodiff + use auto_diff type (Kap_General_Info), pointer :: rq integer, intent(in) :: iz @@ -178,9 +179,11 @@ subroutine Get_Kap_for_CO_Z_cubic(rq, iz, Z, X, dXC, dXO, logRho, logT, & integer, parameter :: n_old = 4, n_new = 1 real(dp), dimension(n_old) :: logKs, dlogKs_dlogRho, dlogKs_dlogT - real(dp) :: z_old(n_old), z_new(n_new) - real(dp), target :: work_ary(n_old*pm_work_size) - real(dp), pointer :: work(:) + type(auto_diff_real_2var_order1), dimension(n_old) :: logKs_ad + type(auto_diff_real_2var_order1) :: logK_ad + type(auto_diff_real_2var_order1) :: z_old(n_old), z_new(n_new) + type(auto_diff_real_2var_order1), target :: work_ary(n_old*pm_work_size) + type(auto_diff_real_2var_order1), pointer :: work(:) integer :: i, i1, izz, num_Zs, CO_option logical, parameter :: dbg = .false. @@ -210,7 +213,9 @@ subroutine Get_Kap_for_CO_Z_cubic(rq, iz, Z, X, dXC, dXO, logRho, logT, & do i=1,n_old izz = i1-2+i - z_old(i) = kap_co_z_tables(CO_option)% ar(izz)% Zbase + z_old(i) %val= kap_co_z_tables(CO_option)% ar(izz)% Zbase + z_old(i) % d1val1 = 0d0 + z_old(i) % d1val2 = 0d0 if (dbg) then write(*,*) 'izz', izz write(*,*) 'z_old', i, z_old(i) @@ -222,27 +227,26 @@ subroutine Get_Kap_for_CO_Z_cubic(rq, iz, Z, X, dXC, dXO, logRho, logT, & if (ierr /= 0) then return end if + ! now pack into auto_diff form + logKs_ad(i) % val = logKs(i) + logKs_ad(i) % d1val1 = dlogKs_dlogT(i) + logKs_ad(i) % d1val2 = dlogKs_dlogRho(i) end do - z_new(1) = Z - - call interp1(logKs, logK, ierr) + z_new(1) % val = Z + z_new(1) % d1val1 = 0d0 + z_new(1) % d1val2 = 0d0 + + call interp1(logKs_ad, logK_ad, ierr) if (ierr /= 0) then call mesa_error(__FILE__,__LINE__,'failed in interp1 for logK') return end if - - call interp1(dlogKs_dlogRho, dlnkap_dlnRho, ierr) - if (ierr /= 0) then - call mesa_error(__FILE__,__LINE__,'failed in interp1 for dlogK_dlogRho') - return - end if - - call interp1(dlogKs_dlogT, dlnkap_dlnT, ierr) - if (ierr /= 0) then - call mesa_error(__FILE__,__LINE__,'failed in interp1 for dlogK_dlogT') - return - end if - + + ! unpack auto_diff pack into output reals + logK = logK_ad % val + dlnkap_dlnT = logK_ad % d1val1 + dlnkap_dlnRho = logK_ad % d1val2 + if (dbg) then do i=1,n_old @@ -278,13 +282,16 @@ subroutine Get_Kap_for_CO_Z_cubic(rq, iz, Z, X, dXC, dXO, logRho, logT, & contains subroutine interp1(old, new, ierr) - real(dp), intent(in) :: old(n_old) - real(dp), intent(out) :: new + type(auto_diff_real_2var_order1), intent(in) :: old(n_old) + type(auto_diff_real_2var_order1), intent(out) :: new integer, intent(out) :: ierr - real(dp) :: v_old(n_old), v_new(n_new) - v_old(:) = dble(old(:)) - call interpolate_vector( & - n_old, z_old, n_new, z_new, v_old, v_new, interp_pm, pm_work_size, work, & + type(auto_diff_real_2var_order1) :: v_old(n_old), v_new(n_new) + integer :: i + do i = 1, n_old + v_old(i) = old(i) + end do + call interpolate_vector_autodiff( & + n_old, z_old, n_new, z_new, v_old, v_new, interp_pm_autodiff, pm_work_size, work, & 'Get_Kap_for_CO_Z_cubic', ierr) new = v_new(1) end subroutine interp1 @@ -440,7 +447,8 @@ subroutine Get_Kap_for_CO_X_cubic( & logK, dlogK_dlogRho, dlogK_dlogT, ierr) use kap_def use interp_1d_def, only: pm_work_size - use interp_1d_lib, only: interpolate_vector, interp_pm + use interp_1d_lib, only: interpolate_vector_autodiff, interp_pm_autodiff + use auto_diff ! return opacity from Z table number iz for the given X, XC, XO type (Kap_General_Info), pointer :: rq @@ -453,9 +461,11 @@ subroutine Get_Kap_for_CO_X_cubic( & integer, parameter :: n_old = 4, n_new = 1 real(dp), dimension(n_old) :: logKs, dlogKs_dlogRho, dlogKs_dlogT - real(dp) :: x_old(n_old), x_new(n_new) - real(dp), target :: work_ary(n_old*pm_work_size) - real(dp), pointer :: work(:) + type(auto_diff_real_2var_order1), dimension(n_old) :: logKs_ad + type(auto_diff_real_2var_order1) :: logK_ad + type(auto_diff_real_2var_order1) :: x_old(n_old), x_new(n_new) + type(auto_diff_real_2var_order1), target :: work_ary(n_old*pm_work_size) + type(auto_diff_real_2var_order1), pointer :: work(:) integer :: i, i1, ixx, num_Xs logical, parameter :: dbg = .false. @@ -480,8 +490,9 @@ subroutine Get_Kap_for_CO_X_cubic( & do i=1,n_old ixx = i1-2+i if (dbg) write(*,*) 'ixx', ixx - x_old(i) = x_tables(ixx)% X - + x_old(i) % val = x_tables(ixx)% X + x_old(i) % d1val1 = 0d0 + x_old(i) % d1val2 = 0d0 call Get_Kap_for_dXCO( & rq, iz, x_tables, dXC, dXO, ixx, & logRho, logT, logKs(i), dlogKs_dlogRho(i), dlogKs_dlogT(i), ierr) @@ -490,27 +501,26 @@ subroutine Get_Kap_for_CO_X_cubic( & if (dbg) write(*,11) 'logT', logT return end if + ! now pack into auto_diff form + logKs_ad(i) % val = logKs(i) + logKs_ad(i) % d1val1 = dlogKs_dlogT(i) + logKs_ad(i) % d1val2 = dlogKs_dlogRho(i) end do - x_new(1) = X - - call interp1(logKs, logK, ierr) + x_new(1) % val = X + x_new(1) % d1val1 = 0d0 + x_new(1) % d1val2 = 0d0 + + call interp1(logKs_ad, logK_ad, ierr) if (ierr /= 0) then call mesa_error(__FILE__,__LINE__,'failed in interp1 for logK') return end if - - call interp1(dlogKs_dlogRho, dlogK_dlogRho, ierr) - if (ierr /= 0) then - call mesa_error(__FILE__,__LINE__,'failed in interp1 for dlogK_dlogRho') - return - end if - - call interp1(dlogKs_dlogT, dlogK_dlogT, ierr) - if (ierr /= 0) then - call mesa_error(__FILE__,__LINE__,'failed in interp1 for dlogK_dlogT') - return - end if - + + ! unpack auto_diff pack into output reals + logK = logK_ad % val + dlogK_dlogT = logK_ad % d1val1 + dlogK_dlogRho = logK_ad % d1val2 + if (dbg) then do i=1,n_old @@ -542,15 +552,18 @@ subroutine Get_Kap_for_CO_X_cubic( & contains subroutine interp1(old, new, ierr) - real(dp), intent(in) :: old(n_old) - real(dp), intent(out) :: new + type(auto_diff_real_2var_order1), intent(in) :: old(n_old) + type(auto_diff_real_2var_order1), intent(out) :: new integer, intent(out) :: ierr - real(dp) :: v_old(n_old), v_new(n_new) - v_old(:) = dble(old(:)) - call interpolate_vector( & - n_old, x_old, n_new, x_new, v_old, v_new, interp_pm, pm_work_size, work, & + type(auto_diff_real_2var_order1) :: v_old(n_old), v_new(n_new) + integer :: i + do i = 1, n_old + v_old(i) = old(i) + end do + call interpolate_vector_autodiff( & + n_old, x_old, n_new, x_new, v_old, v_new, interp_pm_autodiff, pm_work_size, work, & 'Get_Kap_for_CO_X_cubic', ierr) - new = real(v_new(1),kind=dp) + new = v_new(1) end subroutine interp1 end subroutine Get_Kap_for_CO_X_cubic diff --git a/kap/private/kap_eval_fixed.f90 b/kap/private/kap_eval_fixed.f90 index f11b7352e..ea963eed8 100644 --- a/kap/private/kap_eval_fixed.f90 +++ b/kap/private/kap_eval_fixed.f90 @@ -176,7 +176,8 @@ subroutine Get_Kap_for_Z_cubic( & logK, dlnkap_dlnRho, dlnkap_dlnT, ierr) use kap_def use interp_1d_def, only: pm_work_size - use interp_1d_lib, only: interpolate_vector, interp_pm + use interp_1d_lib, only: interpolate_vector_autodiff, interp_pm_autodiff + use auto_diff type (Kap_Z_Table), dimension(:), pointer :: z_tables type (Kap_General_Info), pointer :: rq @@ -188,11 +189,13 @@ subroutine Get_Kap_for_Z_cubic( & integer, parameter :: n_old = 4, n_new = 1 real(dp), dimension(n_old) :: logKs, dlogKs_dlogRho, dlogKs_dlogT - real(dp) :: z_old(n_old), z_new(n_new) + type(auto_diff_real_2var_order1), dimension(n_old) :: logKs_ad + type(auto_diff_real_2var_order1) :: logK_ad + type(auto_diff_real_2var_order1) :: z_old(n_old), z_new(n_new) + type(auto_diff_real_2var_order1), target :: work_ary(n_old*pm_work_size) + type(auto_diff_real_2var_order1), pointer :: work(:) integer :: i, i1, izz - real(dp), target :: work_ary(n_old*pm_work_size) - real(dp), pointer :: work(:) - + logical, parameter :: dbg = .false. 11 format(a40,e20.10) @@ -213,7 +216,9 @@ subroutine Get_Kap_for_Z_cubic( & do i=1,n_old izz = i1-2+i if (dbg) write(*,*) 'izz', izz - z_old(i) = z_tables(izz)% Z + z_old(i) %val = z_tables(izz)% Z + z_old(i) % d1val1 = 0d0 + z_old(i) % d1val2 = 0d0 call Get_Kap_for_X( & z_tables, rq, izz, X, logRho, logT, & logKs(i), dlogKs_dlogRho(i), dlogKs_dlogT(i), ierr) @@ -222,27 +227,26 @@ subroutine Get_Kap_for_Z_cubic( & if (dbg) write(*,11) 'logT', logT return end if + ! now pack into auto_diff form + logKs_ad(i) % val = logKs(i) + logKs_ad(i) % d1val1 = dlogKs_dlogT(i) + logKs_ad(i) % d1val2 = dlogKs_dlogRho(i) end do - z_new(1) = Z - - call interp1(logKs, logK, ierr) + z_new(1) % val = Z + z_new(1) % d1val1 = 0d0 + z_new(1) % d1val2 = 0d0 + + call interp1(logKs_ad, logK_ad, ierr) if (ierr /= 0) then call mesa_error(__FILE__,__LINE__,'failed in interp1 for logK') return end if - - call interp1(dlogKs_dlogRho, dlnkap_dlnRho, ierr) - if (ierr /= 0) then - call mesa_error(__FILE__,__LINE__,'failed in interp1 for dlogK_dlogRho') - return - end if - - call interp1(dlogKs_dlogT, dlnkap_dlnT, ierr) - if (ierr /= 0) then - call mesa_error(__FILE__,__LINE__,'failed in interp1 for dlogK_dlogT') - return - end if - + + ! unpack auto_diff pack into output reals + logK = logK_ad % val + dlnkap_dlnT = logK_ad % d1val1 + dlnkap_dlnRho = logK_ad % d1val2 + if (dbg) then do i=1,n_old @@ -274,13 +278,16 @@ subroutine Get_Kap_for_Z_cubic( & contains subroutine interp1(old, new, ierr) - real(dp), intent(in) :: old(n_old) - real(dp), intent(out) :: new + type(auto_diff_real_2var_order1), intent(in) :: old(n_old) + type(auto_diff_real_2var_order1), intent(out) :: new integer, intent(out) :: ierr - real(dp) :: v_old(n_old), v_new(n_new) - v_old(:) = dble(old(:)) - call interpolate_vector( & - n_old, z_old, n_new, z_new, v_old, v_new, interp_pm, pm_work_size, work, & + type(auto_diff_real_2var_order1) :: v_old(n_old), v_new(n_new) + integer :: i + do i = 1, n_old + v_old(i) = old(i) + end do + call interpolate_vector_autodiff( & + n_old, z_old, n_new, z_new, v_old, v_new, interp_pm_autodiff, pm_work_size, work, & 'Get_Kap_for_Z_cubic', ierr) new = v_new(1) end subroutine interp1 @@ -465,7 +472,8 @@ subroutine Get_Kap_for_X_cubic( & logK, dlogK_dlogRho, dlogK_dlogT, ierr) use kap_def use interp_1d_def, only: pm_work_size - use interp_1d_lib, only: interpolate_vector, interp_pm + use interp_1d_lib, only: interpolate_vector_autodiff, interp_pm_autodiff + use auto_diff type (Kap_Z_Table), dimension(:), pointer :: z_tables type (Kap_General_Info), pointer :: rq @@ -478,11 +486,13 @@ subroutine Get_Kap_for_X_cubic( & integer, parameter :: n_old = 4, n_new = 1 real(dp), dimension(n_old) :: logKs, dlogKs_dlogRho, dlogKs_dlogT - real(dp) :: x_old(n_old), x_new(n_new) - real(dp), target :: work_ary(n_old*pm_work_size) - real(dp), pointer :: work(:) + type(auto_diff_real_2var_order1), dimension(n_old) :: logKs_ad + type(auto_diff_real_2var_order1) :: logK_ad + type(auto_diff_real_2var_order1) :: x_old(n_old), x_new(n_new) + type(auto_diff_real_2var_order1), target :: work_ary(n_old*pm_work_size) + type(auto_diff_real_2var_order1), pointer :: work(:) integer :: i, i1, ixx - + logical, parameter :: dbg = .false. 11 format(a40,e20.10) @@ -503,7 +513,9 @@ subroutine Get_Kap_for_X_cubic( & do i=1,n_old ixx = i1-2+i if (dbg) write(*,*) 'ixx', ixx - x_old(i) = x_tables(ixx)% X + x_old(i) % val = x_tables(ixx)% X + x_old(i) % d1val1 = 0d0 + x_old(i) % d1val2 = 0d0 call Get_Kap_for_logRho_logT( & z_tables, rq, iz, x_tables, ixx, & logRho, logT, logKs(i), dlogKs_dlogRho(i), dlogKs_dlogT(i), ierr) @@ -512,26 +524,25 @@ subroutine Get_Kap_for_X_cubic( & if (dbg) write(*,11) 'logT', logT return end if + ! now pack into auto_diff form + logKs_ad(i) % val = logKs(i) + logKs_ad(i) % d1val1 = dlogKs_dlogT(i) + logKs_ad(i) % d1val2 = dlogKs_dlogRho(i) end do - x_new(1) = X - - call interp1(logKs, logK, ierr) - if (ierr /= 0) then - call mesa_error(__FILE__,__LINE__,'failed in interp1 for logK') - return - end if - - call interp1(dlogKs_dlogRho, dlogK_dlogRho, ierr) - if (ierr /= 0) then - call mesa_error(__FILE__,__LINE__,'failed in interp1 for dlogK_dlogRho') - return - end if + x_new(1) % val = X + x_new(1) % d1val1 = 0d0 + x_new(1) % d1val2 = 0d0 - call interp1(dlogKs_dlogT, dlogK_dlogT, ierr) + call interp1(logKs_ad, logK_ad, ierr) if (ierr /= 0) then - call mesa_error(__FILE__,__LINE__,'failed in interp1 for dlogK_dlogT') + call mesa_error(__FILE__,__LINE__,'failed in interp1 for logK') return end if + + ! unpack auto_diff pack into output reals + logK = logK_ad % val + dlogK_dlogT = logK_ad % d1val1 + dlogK_dlogRho = logK_ad % d1val2 if (dbg) then @@ -564,17 +575,20 @@ subroutine Get_Kap_for_X_cubic( & contains subroutine interp1(old, new, ierr) - real(dp), intent(in) :: old(n_old) - real(dp), intent(out) :: new + type(auto_diff_real_2var_order1), intent(in) :: old(n_old) + type(auto_diff_real_2var_order1), intent(out) :: new integer, intent(out) :: ierr - real(dp) :: v_old(n_old), v_new(n_new) - v_old(:) = dble(old(:)) - call interpolate_vector( & - n_old, x_old, n_new, x_new, v_old, v_new, interp_pm, pm_work_size, work, & + type(auto_diff_real_2var_order1) :: v_old(n_old), v_new(n_new) + integer :: i + do i = 1, n_old + v_old(i) = old(i) + end do + call interpolate_vector_autodiff( & + n_old, x_old, n_new, x_new, v_old, v_new, interp_pm_autodiff, pm_work_size, work, & 'Get_Kap_for_X_cubic', ierr) - new = real(v_new(1),kind=dp) + new = v_new(1) end subroutine interp1 - + end subroutine Get_Kap_for_X_cubic diff --git a/kap/private/load_kap.f90 b/kap/private/load_kap.f90 index 7a2464ecd..e53e4ae2e 100644 --- a/kap/private/load_kap.f90 +++ b/kap/private/load_kap.f90 @@ -68,7 +68,9 @@ subroutine Setup_Kap_Tables(rq, & call setup_lowT(kap_lowT_z_tables(rq% kap_lowT_option)% ar) call setup(kap_z_tables(rq% kap_option)% ar) - rq% logT_Compton_blend_hi = kap_z_tables(rq% kap_option)% ar(1)% x_tables(1)% logT_max - 0.01d0 + rq% logT_Compton_blend_hi = & ! apply whichever is minimum for Type1 and Type2 options + min(kap_z_tables(rq% kap_option)% ar(1)% x_tables(1)% logT_max - 0.01d0, & + kap_CO_z_tables(rq% kap_CO_option)% ar(1)% x_tables(1)% logT_max - 0.01d0) !rq% kap_z_tables(1)% x_tables(1)% logT_max - 0.01d0 rq% logR_Compton_blend_lo = kap_z_tables(rq% kap_option)% ar(1)% x_tables(1)% logR_min + 0.01d0 !rq% kap_z_tables(1)% x_tables(1)% logR_min + 0.01d0 @@ -396,8 +398,6 @@ subroutine Prepare_Kap_X_Table(rq, & subroutine Setup_Kap_X_Table(ierr) integer, intent(out) :: ierr - integer :: i - xErr = abs(xin - X); zErr = abs(zz - Z) if (xErr > tiny .or. zErr > tiny) then ierr = -1 diff --git a/kap/private/op_eval_mombarg.f90 b/kap/private/op_eval_mombarg.f90 index 1d74e04b3..4de69a88f 100644 --- a/kap/private/op_eval_mombarg.f90 +++ b/kap/private/op_eval_mombarg.f90 @@ -39,7 +39,7 @@ subroutine compute_grad(k, fk, logT_face, logRho_face,l, r,lkap_ross_cell, lgrad ! eumesh: sigma_i*(1 - exp(-u(v))) - a_k,i, where u=h*nu/(kT). OP mono grid is equally spaced in variable v. a_k,i are the correction factors. (nel,1648,nptot) - integer :: n, ke, nz, id, m, ik, i + integer :: ke, id, m, ik, i real(dp):: epa_mix_cell(1648), amu_mix_cell, logRho(1648),logT(1648) ! Number of electrons per atom, mean molecular weight, density and temperature as a function of ite (temp index) and jne (density index) from the OP mono data. real(dp) :: delta(1648) @@ -55,7 +55,7 @@ subroutine compute_grad(k, fk, logT_face, logRho_face,l, r,lkap_ross_cell, lgrad integer :: ite_i, jne_i, dite, djne, i_grid(4,4) real(dp) :: logT_min, logRho_min, logT_grid(4,4), logRho_grid(4,4) integer :: offset1, offset2, tries, missing_point(4,4) - real(dp) :: log_amu_mix_cell, lkap_ross_face, gam + real(dp) :: log_amu_mix_cell, gam integer :: imin, imax logical :: retry diff --git a/kap/private/op_load.f b/kap/private/op_load.f index ea274dfa5..928d73e61 100644 --- a/kap/private/op_load.f +++ b/kap/private/op_load.f @@ -22,33 +22,30 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - -c FORTRAN 90 module for calculation of radiative accelerations, -c based on the Opacity Project (OP) code "OPserver". -c See CHANGES_HU for changes made to the original code. -c -c Haili Hu 2010 -c + +! FORTRAN 90 module for calculation of radiative accelerations, +! based on the Opacity Project (OP) code "OPserver". +! See CHANGES_HU for changes made to the original code. +! +! Haili Hu 2010 + module op_load use math_lib use op_def logical :: have_loaded_op = .false. - + contains -C****************************************************************** +!****************************************************************** subroutine op_dload(path, cache_filename, ierr) implicit none character (len=*), intent(in) :: path, cache_filename integer, intent(out) :: ierr - - - - - integer,parameter :: ipz=28 + + real :: am,amm,delp,dpack integer :: ios,it,ite11,ite22,ite33,itt,itte1,itte2,itte3,izz,jne,ite - integer :: jne1,jne22,jne33,jnn,k,n,ncount2,ncount3,ja,jn,jnw11 + integer :: jne1,jne22,jne33,jnn,k,n,ncount2,ncount3,ja,jn integer :: jne11,jne2,nccc,ne,nfff,ntott,nn real :: orss,um,ux,umaxx,uminn,u real,dimension(nptot):: umesh, semesh @@ -56,7 +53,7 @@ subroutine op_dload(path, cache_filename, ierr) real :: dv,dv1 integer :: cache_version - + common /mesh/ ntotv,dv,dv1,umesh,semesh ! common /atomdata/ ! common/atomdata/ ite1,ite2,ite3,jn1(91),jn2(91),jne3,umin,umax,ntot, @@ -64,59 +61,57 @@ subroutine op_dload(path, cache_filename, ierr) ! + ne2(17,91,25),fion(-1:28,28,91,25),np(17,91,25),kp1(17,91,25), ! + kp2(17,91,25),kp3(17,91,25),npp(17,91,25),mx(33417000), ! + yy1(33417000),yy2(120000000),nx(19305000),yx(19305000) -! - + integer,dimension(ipe) :: ifl,iflp character num(0:9)*1,zlab(ipe)*3,tlab*6,zlabp(ipe)*3 DATA NUM/'0','1','2','3','4','5','6','7','8','9'/ integer :: kz(17) - data kz/1, 2, 6, 7, 8, 10, 11, 12, 13, 14, 16, 18, 20, 24, 25, 26, 28/ + data kz/1, 2, 6, 7, 8, 10, 11, 12, 13, 14, 16, 18, 20, 24, 25, 26, 28/ save /mesh/ !HH: put common block in static memory -c + integer :: nx_temp(nptot) real :: y_temp(nptot) integer :: nx_index, left_n, right_n, n_index real :: left_val, right_val, cross_section, slope - - if(allocated(yy2) .eqv. .false.) then + + if (allocated(yy2) .eqv. .false.) then ! yy2 actually needs 29,563 x 10,000 length ALLOCATE(yy2(30000*10000),nx(19305000),yx(19305000),stat=ierr) - if(ierr/=0) return + if (ierr/=0) return yy2=0.0 nx=0.0 yx=0.0 ! write(*,*) "ierr",ierr end if - - + + ierr=0 if (have_loaded_op) return - + !$omp critical (critial_do_op_dload) - + if (have_loaded_op) goto 1001 - + !path = '../OP4STARS_1.3' !call getenv("oppath", path) !if (len(trim(path)) == 0) then - ! write(6,*) 'Define environmental variable oppath (directory of OP data)' + ! write(6,*) 'Define environmental variable oppath (directory of OP data)' ! stop !endif ios = 0 - open(1,file=trim(cache_filename),action='read', - > status='old',iostat=ios,form='unformatted') + open(1,file=trim(cache_filename),action='read',status='old',iostat=ios,form='unformatted') if (ios == 0) then write(*,*) 'reading OP cache file ' // trim(cache_filename) - read(1,iostat=ios) cache_version, ntotv,dv,dv1,umesh, - > ite1,ite2,ite3,jn1,jn2,jne3,umin,umax,ntotp,nc,nf,int,epatom,oplnck, ne1p, - > ne2p,fionp,np,kp1,kp2,kp3,npp,yy2,nx,yx + read(1,iostat=ios) cache_version,ntotv,dv,dv1,umesh, + > ite1,ite2,ite3,jn1,jn2,jne3,umin,umax,ntotp,nc,nf,int,epatom,oplnck, ne1p, + > ne2p,fionp,np,kp1,kp2,kp3,npp,yy2,nx,yx write(*,*) 'done reading OP cache file' close(1) - if (cache_version .ne. op_cache_version) then + if (cache_version /= op_cache_version) then write(*,*) 'wrong version of OP cache' write(*,*) 'cache file path is set by op_mono_data_cache_filename' write(*,*) 'perhaps cache is shared between different MESA versions' @@ -142,14 +137,14 @@ subroutine op_dload(path, cache_filename, ierr) zlab(n)='m'//num(kz(n)/10)//num(kz(n)-10*(kz(n)/10)) iflp(n)=70+n zlabp(n)='a'//num(kz(n)/10)//num(kz(n)-10*(kz(n)/10)) - enddo + end do write(*,*) 'loading OP mono data...' -C READ INDEX FILES -C FIRST FILE +! READ INDEX FILES +! FIRST FILE NN=1 -c print*,' Opening '//'./'//zlab(1)//'.index' +! print*,' Opening '//'./'//zlab(1)//'.index' OPEN(1,FILE=trim(path)//'/'//ZLAB(1)//'.index',STATUS='OLD', + iostat=ios) if (ios /= 0) then @@ -163,27 +158,27 @@ subroutine op_dload(path, cache_filename, ierr) READ(1,*)NC,NF READ(1,*)DPACK CLOSE(1) - IF(IZZ.NE.KZ(1))then + if (IZZ /= KZ(1)) then write(6,6001)zlab(1),izz,nn,kz(1) ierr=1 goto 1001 endif NTOTP=NF - IF(NTOTP.GT.nptot)then + if (NTOTP > nptot) then write(6,6002)ntotp,nptot - ierr=2 + ierr=2 goto 1001 endif INT(1)=1 - IF(ITTE3.NE.ITE3)then + if (ITTE3 /= ITE3) then write(6,6077)ite3,itte3,nn ierr=3 goto 1001 endif -c ITE1=MAX(ITE1,ITTE1) -c ITE2=MIN(ITE2,ITTE2) -C -c READ MESH FILES +! ITE1=MAX(ITE1,ITTE1) +! ITE2=MIN(ITE2,ITTE2) +! +! READ MESH FILES OPEN(1,FILE=trim(path)//'/'//ZLAB(1)//'.mesh',status='old', + form='unformatted',iostat=ios) if (ios /= 0) then @@ -191,17 +186,17 @@ subroutine op_dload(path, cache_filename, ierr) ierr = -1 goto 1001 end if - READ(1)DV,NTOTV,(UMESH(N),N=1,NTOTV) + READ(1)DV,NTOTV,(UMESH(N),N=1,NTOTV) umin=umesh(1) umax=umesh(ntotv) DV1=DV - CLOSE(1) -C -C GET MESH FOR SCREEN + CLOSE(1) +! +! GET MESH FOR SCREEN CALL IMESH(UMESH,NTOTV) -C -C SUBSEQUENT FILES - DO 40 N=2,ipe +! +! SUBSEQUENT FILES + DO N=2,ipe NN=N OPEN(1,FILE=trim(path)//'/'//ZLAB(N)//'.index', + STATUS='OLD') @@ -211,35 +206,35 @@ subroutine op_dload(path, cache_filename, ierr) READ(1,*)NC,NF READ(1,*)DPACK CLOSE(1) - IF(ITE33.NE.ITE3)then + if (ITE33 /= ITE3) then write(6,6077)ite3,ite33,nn ierr=4 goto 1001 endif -c ITE1=MAX(ITE1,ITE11) -c ITE2=MIN(ITE2,ITE22) - IF(IZZ.NE.KZ(N))then +! ITE1=MAX(ITE1,ITE11) +! ITE2=MIN(ITE2,ITE22) + if (IZZ /= KZ(N)) then write(6,6001)zlab(n),izz,nn,kz(nn) ierr=5 goto 1001 endif NTOTT=NF - IF(NTOTT.GT.NTOTP)then + if (NTOTT > NTOTP) then write(6,6006)nn,ntott,ntotp ierr=6 goto 1001 endif -c!! IF(UMIN.NE.UMINN.OR.UMAX.NE.UMAXX) GOTO 1003 !! +! !! if (UMIN /= UMINN.OR.UMAX /= UMAXX) GOTO 1003 !! INT(N)=NTOTP/NTOTT - IF(INT(N)*NTOTT.NE.NTOTP)then + if (INT(N)*NTOTT /= NTOTP) then WRITE(6,6009)NN,NTOTT,NTOTP ierr=7 goto 1001 endif - IF(INT(N).NE.1)WRITE(6,6007)N,INT(N) -c -c READ MESH FILES -c + if (INT(N) /= 1)WRITE(6,6007)N,INT(N) +! +! READ MESH FILES +! OPEN(1,FILE=trim(path)//'/'//ZLAB(N)//'.mesh', + status='old',form='unformatted',iostat=ios) if (ios /= 0) then @@ -248,26 +243,26 @@ subroutine op_dload(path, cache_filename, ierr) goto 1001 end if READ(1)DV - IF(DV.NE.DV1)THEN + if (DV /= DV1) then ! PRINT*,' OP: N=',N,', DV=',DV,' NOT EQUAL TO DV1=',DV1 ierr=8 goto 1001 ENDIF CLOSE(1) - 40 CONTINUE -C -C START TEMPERATURE LOOP -C + END DO +! +! START TEMPERATURE LOOP +! ncount2=0 ncount3=0 do it=ite1,ite2,ite3 -c -C OPEN FILES -c +! +! OPEN FILES +! TLAB='.'//NUM(IT/100)//NUM(IT/10-10*(IT/100))// + NUM(IT-10*(IT/10)) do n=1,ipe -c IF(SKIP(N))GOTO 70 +! if (SKIP(N))GOTO 70 NN=N OPEN(IFL(N),FILE=trim(path)//'/'//ZLAB(N)//TLAB, + FORM='UNFORMATTED',STATUS='OLD',iostat=ios) @@ -276,7 +271,7 @@ subroutine op_dload(path, cache_filename, ierr) ierr = -1 goto 1001 end if - if(n.gt.2) then + if (n > 2) then OPEN(IFLP(N),FILE=trim(path)//'/'//ZLABP(N)//TLAB, + FORM='UNFORMATTED',STATUS='OLD',iostat=ios) if (ios /= 0) then @@ -285,42 +280,42 @@ subroutine op_dload(path, cache_filename, ierr) goto 1001 end if endif - enddo -C READ HEADINGS + end do +! READ HEADINGS NN=1 READ(IFL(1))IZZ,ITE,AM,UM,UX,NCCC,NFFF,DelP,JNE1,JNE2,JNE3 do n=2,ipe -c IF(SKIP(N))GOTO 80 +! if (SKIP(N))GOTO 80 NN=N READ(IFL(N))IZZ,ITE,AM,UM,UX,NC,NF,DelP,JNE11,JNE22,JNE33 - if(n.gt.2) read(iflp(n)) - IF(JNE33.NE.JNE3)then + if (n > 2) read(iflp(n)) + if (JNE33 /= JNE3) then write(6,6099)jne3,jne33,nn ierr=9 goto 1001 endif JNE1=MAX(JNE1,JNE11) JNE2=MIN(JNE2,JNE22) - enddo + end do itt=(it-ite1)/2+1 jn1(itt)=jne1 jn2(itt)=jne2 -C -c WRITE(98,9802)ITE,JNE1,JNE2,JNE3 -C -C START DENSITY LOOP -C +! +! WRITE(98,9802)ITE,JNE1,JNE2,JNE3 +! +! START DENSITY LOOP +! do n=1,ipe do jn=jne1,jne2,jne3 jnn=(jn-jne1)/2+1 -C -C START LOOP ON ELEMENTS -C +! +! START LOOP ON ELEMENTS +! 95 READ(IFL(N))JNE,EPATOM(n,itt,jnn),OPLNCK(n,itt,jnn),ORSS, + NE1P(n,itt,jnn),NE2P(n,itt,jnn), + (FIONP(NE,n,itt,jnn),NE=NE1P(n,itt,jnn),NE2P(n,itt,jnn)) read(ifl(n))np(n,itt,jnn) - if(np(n,itt,jnn).gt.0)then + if (np(n,itt,jnn) > 0) then read(ifl(n))(nx_temp(k),y_temp(k),k=1,np(n,itt,jnn)) do nx_index = 2, np(n,itt,jnn) left_val = y_temp(nx_index-1) @@ -328,14 +323,14 @@ subroutine op_dload(path, cache_filename, ierr) left_n = nx_temp(nx_index-1) right_n = nx_temp(nx_index) slope = (right_val - left_val)/float(right_n - left_n) - + do n_index = left_n, right_n cross_section = left_val + (n_index-left_n)*slope yy2(ncount2 + n_index) = cross_section - enddo + end do yy2(ncount2 + left_n) = left_val yy2(ncount2 + right_n) = right_val - enddo + end do kp2(n, itt, jnn) = ncount2 ncount2 = ncount2 + ntotp else @@ -343,51 +338,50 @@ subroutine op_dload(path, cache_filename, ierr) kp2(n,itt,jnn)=ncount2 ncount2=ncount2+ntotp endif - if(n.gt.2) then + if (n > 2) then read(iflp(n))ja,npp(n,itt,jnn) - if(npp(n,itt,jnn).gt.0) then + if (npp(n,itt,jnn) > 0) then read(iflp(n))(nx(k+ncount3),yx(k+ncount3),k=1,npp(n,itt,jnn)) kp3(n,itt,jnn)=ncount3 ncount3=ncount3+npp(n,itt,jnn) endif endif - enddo - enddo -c -c write(6,610)it -c write(6,*)'ncount1 = ',ncount1 -c write(6,*)'ncount2 = ',ncount2 -c write(6,*)'ncount3 = ',ncount3 -c -C CLOSE FILES -c - DO 150 N=1,ipe - CLOSE(IFL(N)) + end do + end do + +! write(6,610)it +! write(6,*)'ncount1 = ',ncount1 +! write(6,*)'ncount2 = ',ncount2 +! write(6,*)'ncount3 = ',ncount3 +! +! CLOSE FILES + + do N=1,ipe + close(IFL(N)) close(iflp(n)) - 150 CONTINUE -c - enddo - + end do + + end do + write(*,*) 'done loading OP mono data' have_loaded_op = .true. - + !write(*,*)'ncount1 = ',ncount1 !write(6,*)'ncount2 = ',ncount2 !write(6,*)'ncount3 = ',ncount3 ios = 0 - open(1, file=trim(cache_filename), iostat=ios, - > action='write', form='unformatted') + open(1, file=trim(cache_filename), iostat=ios, action='write', form='unformatted') if (ios == 0) then write(*,*) 'write ' // trim(cache_filename) write(1) op_cache_version, ntotv,dv,dv1,umesh, - > ite1,ite2,ite3,jn1,jn2,jne3,umin,umax,ntotp,nc,nf,int,epatom,oplnck, ne1p, - > ne2p,fionp,np,kp1,kp2,kp3,npp,yy2,nx,yx + > ite1,ite2,ite3,jn1,jn2,jne3,umin,umax,ntotp,nc,nf,int,epatom,oplnck, ne1p, + > ne2p,fionp,np,kp1,kp2,kp3,npp,yy2,nx,yx close(1) end if - + 1001 continue -C pre-calculate semesh +! pre-calculate semesh do n = 1, nptot u = umesh(n) semesh(n) = 1.d0 - exp(dble(-u)) @@ -396,7 +390,6 @@ subroutine op_dload(path, cache_filename, ierr) !$omp end critical (critial_do_op_dload) - return 610 format(10x,'Done IT= ',i3) 1004 WRITE(6,6004)ZLAB(NN),TLAB @@ -413,7 +406,7 @@ subroutine op_dload(path, cache_filename, ierr) 6009 FORMAT(' OP: N=',I5,', NTOTT=',I10,', NTOT=',I10/ + ' NTOT NOT MULTIPLE OF NTOTT') c6012 FORMAT(/10X,'ERROR, SEE WRITE(6,6012)'/ -c + 10X,'IT=',I3,', JN=',I3,', N=',I3,', JNE=',I3/) +! + 10X,'IT=',I3,', JN=',I3,', N=',I3,', JNE=',I3/) 6077 FORMAT(//5X,'OP: DISCREPANCY IN ITE3'/10X,I5,' READ FROM UNIT 5'/ + 10X,I5,' FROM INDEX FILE ELEMENT',I5) 6099 FORMAT(//5X,'OP: DISCREPANCY IN JNE3'/10X,I5,' READ FOR N=1'/ @@ -426,53 +419,53 @@ subroutine op_dload(path, cache_filename, ierr) stop end subroutine op_dload -c*********************************************************************** +!*********************************************************************** SUBROUTINE IMESH(UMESH,NTOT) -C + DIMENSION UMESH(nptot) COMMON/CIMESH/U(100),AA(nptot),BB(nptot),IN(nptot),ITOT,NN save /cimesh/ - + UMIN=UMESH(1) UMAX=UMESH(NTOT) -c + II=100 A=(II*UMIN-UMAX)/REAL(II-1) B=(UMAX-UMIN)/REAL(II-1) DO I=1,II U(I)=A+B*I - ENDDO -c + end do + ib=2 ub=u(ib) ua=u(ib-1) d=ub-ua ibb=0 do n=2,ntot - if(umesh(n).gt.ub)then + if (umesh(n) > ub) then ua=ub ib=ib+1 ub=u(ib) d=ub-ua - if(umesh(n).gt.ub)then + if (umesh(n) > ub) then nn=n-1 ibb=ib-1 goto 1 - endif - endif + endif + endif in(n)=ib aa(n)=(ub-umesh(n))/d bb(n)=(umesh(n)-ua)/d - enddo -c + end do + 1 ib=ibb do n=nn+1,ntot ib=ib+1 in(n)=ib u(ib)=umesh(n) - enddo + end do itot=ib -c + return end SUBROUTINE IMESH @@ -482,11 +475,11 @@ subroutine msh(dv, ntot, umesh, semesh, uf, dscat) integer, intent(out) :: ntot real, intent(out) :: dv, uf(0:100), dscat real, intent(out) :: umesh(:), semesh(:) ! (nptot) - integer :: i, k, ntotv + integer :: i, ntotv real :: dvp, dv1, umin, umax, umeshp(nptot), semeshp(nptot) - common /mesh/ ntotv, dvp, dv1, umeshp, semeshp - save /mesh/ -c + common /mesh/ ntotv, dvp, dv1, umeshp, semeshp + save /mesh/ + ntot = ntotv dv = dvp do i=1,ntot @@ -496,89 +489,88 @@ subroutine msh(dv, ntot, umesh, semesh, uf, dscat) semesh(i) = semeshp(i) end do -c umin = umesh(1) umax = umesh(ntot) dscat = (umax - umin)*0.01 do i = 0, 100 uf(i) = umin + i*dscat - enddo -c + end do + return -c + end subroutine msh - + subroutine solve(u,v,z,uz,ierr) integer, intent(inout) :: ierr dimension u(4) -c -c If P(R) = u(1) u(2) u(3) u(4) -c for R = -3 -1 1 3 -c then a cubic fit is: - P(R)=( + +! If P(R) = u(1) u(2) u(3) u(4) +! for R = -3 -1 1 3 +! then a cubic fit is: + P(R)=( + 27*(u(3)+u(2))-3*(u(1)+u(4)) +R*( + 27*(u(3)-u(2))-(u(4)-u(1)) +R*( + -3*(u(2)+u(3))+3*(u(4)+u(1)) +R*( + -3*(u(3)-u(2))+(u(4)-u(1)) ))))/48. -c First derivative is: - PP(R)=( +! First derivative is: + PP(R)=( + 27*(u(3)-u(2))-(u(4)-u(1))+ 2*R*( + -3*(u(2)+u(3))+3*(u(4)+u(1)) +3*R*( + -3*(u(3)-u(2))+(u(4)-u(1)) )))/48. -c + ! ierr = 0 -c Find value of z giving P(z)=v -c First estimate +! Find value of z giving P(z)=v +! First estimate z=(2.*v-u(3)-u(2))/(u(3)-u(2)) -c Newton-Raphson iterations +! Newton-Raphson iterations do k=1,10 uz=pp(z) d=(v-p(z))/uz z=z+d - if(abs(d).lt.1.e-4)return - enddo -c + if (abs(d) < 1.e-4) return + end do + ! print*,' Not converged after 10 iterations in SOLVE' ! print*,' v=',v ! DO N=1,4 ! PRINT*,' N, U(N)=',N,U(N) -! ENDDO +! end do ierr = 10 return ! stop -c + end subroutine solve -c*********************************************************************** +!*********************************************************************** SUBROUTINE BRCKR(T,FNE,RION,NION,U,NFREQ,SF, ierr) integer, intent(inout) :: ierr -C -C CODE FOR COLLECTIVE EFFECTS ON THOMSON SCATTERING. -C METHOD OF D.B. BOERCKER, AP. J., 316, L98, 1987. -C -C INPUT:- -C T=TEMPERATURTE IN K -C FNE=ELECTRON DENSITY IN CM**(-3) -C ARRAY RION (DIMENSIONED FOR 30 IONS). -C RION(IZ) IS NUMBER OF IONS WITH NET CHARGE IZ. -C NORMALISATION OF RION IS OF NO CONSEQUENCE. -C NION=NUMBER OF IONS INCLUDED. -C ARRAY U (DIMENSIONED FOR 1000). VALUES OF (H*NU/K*T). -C NFREQ=NUMBER OF FREQUENCY POINTS. -C -C OUTPUT:- -C ARRAY SF, GIVING FACTORS BY WHICH THOMSON CROSS SECTION -C SHOULD BE MULTIPLIED TO ALLOW FOR COLLECTIVE EFFECTS. -C -C MODIFFICATIONS:- -C (1) REPLACE (1.-Y) BY EXP(-Y) TO AVOID NEGATIVE FACTORS FOR -C HIGHLY-DEGENERATE CASES. -C (2) INCLUDE RELATIVISTIC CORRECTION. -C +! +! CODE FOR COLLECTIVE EFFECTS ON THOMSON SCATTERING. +! METHOD OF D.B. BOERCKER, AP. J., 316, L98, 1987. +! +! INPUT:- +! T=TEMPERATURTE IN K +! FNE=ELECTRON DENSITY IN CM**(-3) +! ARRAY RION (DIMENSIONED FOR 30 IONS). +! RION(IZ) IS NUMBER OF IONS WITH NET CHARGE IZ. +! NORMALISATION OF RION IS OF NO CONSEQUENCE. +! NION=NUMBER OF IONS INCLUDED. +! ARRAY U (DIMENSIONED FOR 1000). VALUES OF (H*NU/K*T). +! NFREQ=NUMBER OF FREQUENCY POINTS. +! +! OUTPUT:- +! ARRAY SF, GIVING FACTORS BY WHICH THOMSON CROSS SECTION +! SHOULD BE MULTIPLIED TO ALLOW FOR COLLECTIVE EFFECTS. +! +! MODIFFICATIONS:- +! (1) REPLACE (1.-Y) BY EXP(-Y) TO AVOID NEGATIVE FACTORS FOR +! HIGHLY-DEGENERATE CASES. +! (2) INCLUDE RELATIVISTIC CORRECTION. +! PARAMETER (IPZ=28,IPNC=100) DIMENSION RION(IPZ),U(0:IPNC),SF(0:IPNC) -C + AUNE=1.48185E-25*FNE AUT=3.16668E-6*T C1=-1.0650E-4*AUT @@ -590,17 +582,17 @@ SUBROUTINE BRCKR(T,FNE,RION,NION,U,NFREQ,SF, ierr) 11 R=FMH(W)/V A=0. B=0. - DO 20 I=1,NION + DO I=1,NION A=A+I*RION(I) B=B+I**2*RION(I) - 20 CONTINUE + END DO X=R+B/A -C + Y=.353553*W C=1.1799E5*X*AUNE/(AUT*AUT*AUT) - DO 30 N=0,NFREQ + DO N=0,NFREQ D=C/U(N)**2 - IF(D.GT.5.)THEN + if (D > 5.) then D=-2./D F=2.666667*(1.+D*(.7+D*(.55+.341*D))) ELSE @@ -610,20 +602,20 @@ SUBROUTINE BRCKR(T,FNE,RION,NION,U,NFREQ,SF, ierr) DELTA=.375*R*F/X SF(N)=(1.-R*DELTA-Y*FUNS(W))* + (1.+U(N)*(C1+U(N)*(C2+U(N)*C3))) !SAMPSON CORRECTION - 30 CONTINUE -C + END DO + RETURN -C + 600 FORMAT(5X,'NOT CONVERGED IN LOOP 10 OF BRCKR'/ + 5X,'T=',1P,E10.2,', FNE=',E10.2) -C + END SUBROUTINE BRCKR -C*********************************************************************** +!*********************************************************************** FUNCTION FUNS(A) -C - IF(A.LE.0.001)THEN +! + if (A <= 0.001) then FUNS=1. - ELSEIF(A.LE.0.01)THEN + elseif (A <= 0.01) then FUNS=(1.+A*(-1.0886+A*(1.06066+A*1.101193)))/ + (1.+A*(0.35355+A*(0.19245+A+0.125))) ELSE @@ -636,16 +628,16 @@ FUNCTION FUNS(A) ENDIF RETURN END FUNCTION FUNS -C*********************************************************************** +!*********************************************************************** FUNCTION FMH(W) -C -C CALCULATES FD INTERGAL I_(-1/2)(ETA). INCLUDES FACTOR 1/GAMMA(1/2). -C ETA=LOG(W) -C - IF(W.LE.2.718282)THEN +! +! CALCULATES FD INTERGAL I_(-1/2)(ETA). INCLUDES FACTOR 1/GAMMA(1/2). +! ETA=LOG(W) +! + if (W <= 2.718282) then FMH=W*(1+W*(-.7070545+W*(-.3394862-W*6.923481E-4)) + /(1.+W*(1.2958546+W*.35469431))) - ELSEIF(W.LE.54.59815)THEN + elseif (W <= 54.59815) then X=LOG(dble(W)) FMH=(.6652309+X*(.7528360+X*.6494319)) + /(1.+X*(.8975007+X*.1153824)) @@ -655,81 +647,81 @@ FUNCTION FMH(W) FMH=SQRT(X)*(1.1283792+(Y*(-.4597911+Y*(2.286168-Y*183.6074))) + /(1.+Y*(-10.867628+Y*384.61501))) ENDIF -C + RETURN END FUNCTION FMH -C*********************************************************************** +!*********************************************************************** SUBROUTINE FDETA(X,ETA, ierr) -C -C GIVEN X=N_e/P_e, CALCULATES FERMI-DIRAC ETA -C USE CHEBYSHEV FITS OF W.J. CODY AND H.C. THACHER, -C MATHS. OF COMP., 21, 30, 1967. -C +! +! GIVEN X=N_e/P_e, CALCULATES FERMI-DIRAC ETA +! USE CHEBYSHEV FITS OF W.J. CODY AND H.C. THACHER, +! MATHS. OF COMP., 21, 30, 1967. +! integer, intent(inout) :: ierr DIMENSION D(2:12) DATA D/ + 3.5355339E-01, 5.7549910E-02, 5.7639604E-03, 4.0194942E-04, + 2.0981899E-05, 8.6021311E-07, 2.8647149E-08, 7.9528315E-10, + 1.8774422E-11, 3.8247505E-13, 6.8427624E-15/ -C + integer n,k -c -! ierr = 0 + +! ierr = 0 a=x*0.88622693 -c - IF(X.LT.1)THEN + + if (X < 1) then v=x S=V U=V - DO 10 N=2,12 + DO N=2,12 S=S*V SS=S*D(N) U=U+SS - IF(ABS(SS).LT.1.E-6*U)GOTO 11 - 10 CONTINUE + if (ABS(SS) < 1.E-6*U)GOTO 11 + END DO ! PRINT*,' COMPLETED LOOP 10 IN FDETA' ierr = 11 return ! STOP 11 ETA=LOG(dble(U)) -c + ELSE - if(a.lt.2)then + if (a < 2) then E=LOG(dble(X)) else e=pow(1.5d0*a,2d0/3d0) endif - do 20 k=1,10 + do k=1,10 CALL FDF1F2(E,F1,F2) DE=(A-F2)*2./F1 E=E+DE - if(abs(dE).lt.1.e-4*abs(E))goto 21 - 20 continue + if (abs(dE) < 1.e-4*abs(E))goto 21 + end do ! print*,' completed loop 20 IN FDETA' ierr = 12 return ! stop 21 ETA=E -c + ENDIF -C + RETURN END SUBROUTINE FDETA -C*********************************************************************** +!*********************************************************************** SUBROUTINE FDF1F2(ETA,F1,F2) -C -C CALCULATES FD INTEGRALS F1, F2=F(-1/2), F(+1/2) -C USE CHEBYSHEV FITS OF W.J. CODY AND H.C. THACHER, -C MATHS. OF COMP., 21, 30, 1967. -C - IF(ETA.LE.1)THEN +! +! CALCULATES FD INTEGRALS F1, F2=F(-1/2), F(+1/2) +! USE CHEBYSHEV FITS OF W.J. CODY AND H.C. THACHER, +! MATHS. OF COMP., 21, 30, 1967. +! + if (ETA <= 1) then X=exp(dble(ETA)) F1=X*(1.772454+X*(-1.2532215+X*(-0.60172359-X*0.0012271551))/ + (1.+X*(1.2958546+X*0.35469431))) F2=X*(0.88622693+X*(-0.31329180+X*(-0.14275695- + X*0.0010090890))/ + (1.+X*(0.99882853+X*0.19716967))) - ELSEIF(ETA.LE.4)THEN + elseif (ETA <= 4) then X=ETA F1=(1.17909+X*(1.334367+X*1.151088))/ + (1.+X*(0.8975007+X*0.1153824)) @@ -744,7 +736,7 @@ SUBROUTINE FDF1F2(ETA,F1,F2) + Y*290.433403))/ + (1.+Y*(5.69335697+Y*322.149800))) ENDIF -C + RETURN END SUBROUTINE FDF1F2 @@ -760,25 +752,25 @@ subroutine screen2(ft,fne,rion,epa,ntot,umin,umax,umesh,p) data twopi/6.283185/ COMMON/CIMESH/U(100),AA(nptot),BB(nptot),IN(nptot),ITOT,NN save /cimesh/ -c + rydt=ft/157894. aune=1.48185e-25*fne -c -c get alp2=1/(Debye)**2 + +! get alp2=1/(Debye)**2 b=0 do i=1,ipz b=b+rion(i)*i**2 - enddo + end do alp2=(5.8804e-19)*fne*b/(epa*ft) - if(alp2/ft.lt.5e-8)return !!!!!!!!!!! -c + if (alp2/ft < 5e-8) return !!!!!!!!!!! + c=1.7337*aune/sqrt(rydt) -c + do i=1,itot w=u(i)*rydt f(i)=0. - do 1 k=1,ipz - if(rion(k).le.0.01)goto 1 + do k=1,ipz + if (rion(k) <= 0.01) cycle crz=c*rion(k)*k**2 ff=0 do j=1,3 @@ -790,22 +782,22 @@ subroutine screen2(ft,fne,rion,epa,ntot,umin,umax,umesh,p) q=(1./x2-1./x1+LOG(dble(x1/x2)))* + (fkp*(1.-exp(dble(-twopi*k/fkp))))/(fk*(1.-exp(dble(-twopi*k/fk)))) ff=ff+wt(j)*q - enddo + end do f(i)=f(i)+crz*ff - 1 continue - enddo -c + end do + end do + p(1)=f(1) do n=2,nn w=umesh(n)*rydt p(n)=p(n)+(aa(n)*f(in(n)-1)+bb(n)*f(in(n)))/(w*w*w) - enddo + end do do n=nn+1,ntot w=umesh(n)*rydt p(n)=p(n)+f(in(n))/(w*w*w) - enddo -c + end do + return - end subroutine screen2 + end subroutine screen2 end module op_load diff --git a/kap/private/op_load_master.f b/kap/private/op_load_master.f index c41405cb3..6c8565169 100644 --- a/kap/private/op_load_master.f +++ b/kap/private/op_load_master.f @@ -18,7 +18,7 @@ subroutine load_op_master(emesh_data_for_op_mono_path, iz,ite,jne,epatom,amamu,s real(dp), pointer, intent(out) :: sig(:,:,:) real(dp), pointer, intent(out):: epatom(:,:),amamu(:),eumesh(:,:,:) - integer :: n, m, ke, ik + integer :: n, m, ke CHARACTER(LEN=72) :: FMT integer :: nel, nptot, np parameter(nel = 17, nptot = 10000, np=1648) !number of elements and number of u-mesh points. diff --git a/kap/private/op_osc.f b/kap/private/op_osc.f index 295f5325d..fc3772067 100644 --- a/kap/private/op_osc.f +++ b/kap/private/op_osc.f @@ -22,7 +22,7 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - + module op_osc use math_lib use op_def @@ -30,44 +30,44 @@ module op_osc use kap_def, only: kap_test_partials, kap_test_partials_val, kap_test_partials_dval_dx contains -c*********************************************************************** +!*********************************************************************** subroutine abund(nel, izz, fa, flmu, nkz) implicit none integer, intent(in) :: nel, izz(ipe) real, intent(in) :: fa(ipe) real, intent(out) :: flmu integer, intent(out) :: nkz(ipe) -c local variables +! local variables integer :: k, k1, k2, m real :: amamu(ipe), fmu -c -c Get k1,get amamu(k) - do k = 1, nel + +! Get k1,get amamu(k) + do k = 1, nel do m = 1, ipe - if(izz(k).eq.kz(m))then + if (izz(k) == kz(m)) then amamu(k) = amass(m) nkz(k) = m goto 1 endif - enddo + end do print*,' k=',k,', izz(k)=',izz(k) print*,' kz(m) not found' stop - 1 continue - enddo -c -c Mean atomic weight = fmu + 1 continue + end do + +! Mean atomic weight = fmu fmu = 0. do k = 1, nel fmu = fmu + fa(k)*amamu(k) - enddo -c + end do + fmu = fmu*1.660531e-24 ! Convert to cgs flmu = log10(dble(fmu)) -c + return end subroutine abund -c********************************************************************** +!********************************************************************** subroutine xindex(flt, ilab, xi, ih, i3, ierr) implicit none integer, intent(in) :: i3 @@ -77,16 +77,16 @@ subroutine xindex(flt, ilab, xi, ih, i3, ierr) integer, intent(out) :: ierr integer :: i, ih2 real :: x -c + ierr = 0 - if(flt.lt.3.5) then + if (flt < 3.5) then ierr = 102 return - elseif(flt.gt.8.) then + elseif (flt > 8.) then ierr = 102 return endif -c + x = 40.*flt/real(i3) ih2 = x ih2 = max(ih2, 140/i3+2) @@ -94,46 +94,45 @@ subroutine xindex(flt, ilab, xi, ih, i3, ierr) do i = 0, 5 ih(i) = ih2 + i - 2 ilab(i) = i3*ih(i) - enddo + end do xi = 2.*(x-ih2) - 1 -c + return end subroutine xindex -c********************************************************************** - subroutine jrange(ih, jhmin, jhmax, i3) +!********************************************************************** + subroutine jrange(ih, jhmin, jhmax, i3) implicit none integer, intent(in) :: ih(0:5), i3 - integer, intent(out) :: jhmin, jhmax + integer, intent(out) :: jhmin, jhmax integer :: i -c + jhmin = 0 jhmax = 1000 do i = 0, 5 jhmin = max(jhmin, js(ih(i)*i3)/i3) jhmax = min(jhmax, je(ih(i)*i3)/i3) - enddo -c + end do + return end subroutine jrange -c********************************************************************** +!********************************************************************** subroutine findne(ilab, fa, nel, nkz, jhmin, jhmax, ih, + flrho, flt, xi, flne, flmu, flr, epa, uy, i3, ierr) use op_load, only : solve implicit none - integer, intent(in) :: ilab(0:5), nel, nkz(ipe), jhmin, - > ih(0:5), i3 + integer, intent(in) :: ilab(0:5), nel, nkz(ipe), jhmin, ih(0:5), i3 integer, intent(inout) :: jhmax integer, intent(out) :: ierr real, intent(in) :: fa(ipe), flt, xi, flmu real,intent(out) :: flne, uy, epa real, intent(inout) :: flrho -c local variables +! local variables integer :: i, j, n, jh, jm, itt, jne, jnn - real :: flrmin, flrmax, flr(4,4), uyi(4), efa(0:5, 7:118), + real :: flrmin, flrmax, flr(4,4), uyi(4), efa(0:5, 7:118), : flrh(0:5, 7:118), u(4), flnei(4), y, zeta, efa_temp -c declare variables in common block, by default: real (a-h, o-z), integer (i-n) +! declare variables in common block, by default: real (a-h, o-z), integer (i-n) ! integer :: ite1, ite2, ite3, jn1, jn2, jne3, ntot, nc, nf, int, -! : ne1, ne2, np, kp1, kp2, kp3, npp, mx, nx +! : ne1, ne2, np, kp1, kp2, kp3, npp, mx, nx ! real :: umin, umax, epatom, oplnck, fion, yy1, yy2, yx ! common /atomdata/ ite1,ite2,ite3,jn1(91),jn2(91),jne3,umin,umax,ntot, ! + nc,nf,int(17),epatom(17,91,25),oplnck(17,91,25),ne1(17,91,25), @@ -141,204 +140,204 @@ subroutine findne(ilab, fa, nel, nkz, jhmin, jhmax, ih, ! + kp2(17,91,25),kp3(17,91,25),npp(17,91,25),mx(33417000), ! + yy1(33417000),yy2(120000000),nx(19305000),yx(19305000) ! save /atomdata/ -c -c efa(i,jh)=sum_n epa(i,jh,n)*fa(n) -c flrh(i,jh)=log10(rho(i,jh)) -c -c Get efa +! +! efa(i,jh)=sum_n epa(i,jh,n)*fa(n) +! flrh(i,jh)=log10(rho(i,jh)) +! +! Get efa do i = 0, 5 itt = (ilab(i)-ite1)/2 + 1 do jne = jn1(itt), jn2(itt), i3 jnn = (jne-jn1(itt))/2 + 1 jh = jne/i3 efa_temp = 0. - do n = 1, nel + do n = 1, nel efa_temp = efa_temp + epatom(nkz(n), itt, jnn)*fa(n) - enddo !n - efa(i, jh) = efa_temp - enddo !jne - enddo !i -c -c Get range for efa.gt.0 + end do !n + efa(i, jh) = efa_temp + end do !jne + end do !i + +! Get range for efa > 0 do i = 0, 5 do jh = jhmin, jhmax - if(efa(i, jh) .le. 0.)then + if (efa(i, jh) <= 0.) then jm = jh - 1 goto 3 endif - enddo + end do goto 4 3 jhmax = MIN(jhmax, jm) 4 continue - enddo -c -c Get flrh + end do + +! Get flrh do jh = jhmin,jhmax do i = 0,5 flrh(i, jh) = flmu + 0.25*i3*jh - log10(dble(efa(i,jh))) - enddo - enddo -c -c Find flrmin and flrmax + end do + end do + +! Find flrmin and flrmax flrmin = -1000 flrmax = 1000 do i = 0, 5 flrmin = max(flrmin, flrh(i,jhmin)) flrmax = min(flrmax, flrh(i,jhmax)) - enddo -c -c Check range of flrho - if(flrho .lt. flrmin .or. flrho .gt. flrmax)then + end do + +! Check range of flrho + if (flrho < flrmin .or. flrho > flrmax) then ierr = 101 return endif -c -c Interpolations in j for flne + +! Interpolations in j for flne do jh = jhmin, jhmax - if(flrh(2,jh) .gt. flrho)then + if (flrh(2,jh) > flrho) then jm = jh - 1 goto 5 endif - enddo + end do print*,' Interpolations in j for flne' print*,' Not found, i=',i stop 5 jm=max(jm,jhmin+1) jm=min(jm,jhmax-2) -c + do i = 1, 4 do j = 1, 4 u(j) = flrh(i, jm+j-2) flr(i,j) = flrh(i, jm+j-2) - enddo + end do call solve(u, flrho, zeta, uyi(i), ierr) if (ierr /= 0) return y = jm + 0.5*(zeta+1) flnei(i) = .25*i3*y - enddo -c -c Interpolations in i + end do + +! Interpolations in i flne = fint(flnei, xi) uy = fint(uyi, xi) -c Get epa - epa = exp10(dble(flne + flmu - flrho)) -c +! Get epa + epa = exp10(dble(flne + flmu - flrho)) + return -c + 601 format(' For flt=',1p,e11.3,', flrho=',e11.3,' is out of range'/ - + ' Allowed range for flrho is ',e11.3,' to ',e11.3) + + ' Allowed range for flrho is ',e11.3,' to ',e11.3) end subroutine findne -c*********************************************************************** +!*********************************************************************** subroutine yindex(jhmin, jhmax, flne, jh, i3, eta) implicit none integer, intent(in) :: jhmin, jhmax, i3 real, intent(in) :: flne integer, intent(out) :: jh(0:5) real, intent(out) :: eta -c local variables +! local variables integer :: j, k real :: y -c + y = 4.*flne/real(i3) j = y j = max(j,jhmin+2) j = min(j,jhmax-3) do k = 0, 5 jh(k) = j + k - 2 - enddo + end do eta = 2.*(y-j)-1 -c + return end subroutine yindex -c*********************************************************************** +!*********************************************************************** subroutine findux(flr, xi, eta, ux) implicit none real, intent(in) :: flr(4, 4), xi, eta real, intent(out) :: ux -c local variables - integer :: i, j +! local variables + integer :: i, j real :: uxj(4), u(4) -c + do j = 1, 4 do i = 1, 4 u(i) = flr(i, j) - enddo + end do uxj(j) = fintp(u, xi) - enddo + end do ux = fint(uxj, eta) -c + return - end subroutine findux -c********************************************************************** + end subroutine findux +!********************************************************************** subroutine rd(nel, nkz, izz, ilab, jh, n_tot, ff, rr, i3, umesh, fac) implicit none - integer, intent(in) :: nel, nkz(ipe), izz(ipe), ilab(0:5), - > jh(0:5), n_tot, i3 + integer, intent(in) :: nel, nkz(ipe), izz(ipe), ilab(0:5), + > jh(0:5), n_tot, i3 real, intent(in) :: umesh(nptot) real(dp), intent(in) :: fac(nel) real, intent(out) :: ff(:,:,0:,0:) ! (nptot, ipe, 6, 6) real, intent(out) :: rr(28, ipe, 0:5, 0:5) -c local variables +! local variables integer :: i, j, k, l, m, n, itt, jnn, izp, ne1, ne2, ne, ib, ia real :: fion(-1:28), yb, ya, d -c declare variables in common block (instead of by default: real (a-h, o-z), integer (i-n)) +! declare variables in common block (instead of by default: real (a-h, o-z), integer (i-n)) ! integer :: ite1, ite2, ite3, jn1, jn2, jne3, ntot, nc, nf, int, -! : ne1p, ne2p, np, kp1, kp2, kp3, npp, mx, nx -! real :: umin, umax, epatom, oplnck, fionp, yy1, yy2, yx +! : ne1p, ne2p, np, kp1, kp2, kp3, npp, mx, nx +! real :: umin, umax, epatom, oplnck, fionp, yy1, yy2, yx ! common /atomdata/ ite1,ite2,ite3,jn1(91),jn2(91),jne3,umin,umax,ntot, ! + nc,nf,int(17),epatom(17,91,25),oplnck(17,91,25),ne1p(17,91,25), ! + ne2p(17,91,25),fionp(-1:28,28,91,25),np(17,91,25),kp1(17,91,25), ! + kp2(17,91,25),kp3(17,91,25),npp(17,91,25),mx(33417000), -! + yy1(33417000),yy2(120000000),nx(19305000),yx(19305000) +! + yy1(33417000),yy2(120000000),nx(19305000),yx(19305000) ! save /atomdata/ -c -c i=temperature inex -c j=density index -c k=frequency index -c n=element index -c Get: -c mono opacity cross-section ff(k,n,i,j) -c modified cross-section for selected element, ta(k,i,j) -c -c Initialisations +! +! i=temperature inex +! j=density index +! k=frequency index +! n=element index +! Get: +! mono opacity cross-section ff(k,n,i,j) +! modified cross-section for selected element, ta(k,i,j) +! +! Initialisations rr=0. ff=0. -c -c Start loop on i (temperature index) + +! Start loop on i (temperature index) do i = 0, 5 - itt = (ilab(i) - ite1)/2 + 1 + itt = (ilab(i) - ite1)/2 + 1 do j = 0, 5 - jnn = (jh(j)*i3 - jn1(itt))/2 + 1 -c Read mono opacities + jnn = (jh(j)*i3 - jn1(itt))/2 + 1 +! Read mono opacities do n = 1, nel izp = izz(n) ne1 = ne1p(nkz(n), itt, jnn) ne2 = ne2p(nkz(n), itt, jnn) do ne = ne1, ne2 fion(ne) = fionp(ne, nkz(n), itt, jnn) - enddo + end do do ne = ne1, min(ne2, izp-2) rr(izp-1-ne, n, i, j) = fion(ne) - enddo - + end do + do k = 1, n_tot ff(k, n, i, j) = yy2(k+kp2(nkz(n), itt, jnn)) - enddo - + end do + if (fac(n) /= 1d0) then do k = 1, size(ff,dim=1) ff(k,n,i,j) = fac(n)*ff(k,n,i,j) end do end if - enddo !n - enddo !j - enddo !i -c + end do !n + end do !j + end do !i + return -c + end subroutine rd -c*********************************************************************** - subroutine ross(flmu, dv, ntot,rs, rossl) +!*********************************************************************** + subroutine ross(flmu, dv, ntot,rs, rossl) implicit none integer, intent(in) :: ntot real, intent(in) :: flmu, dv, rs(nptot, 0:5, 0:5) @@ -346,347 +345,346 @@ subroutine ross(flmu, dv, ntot,rs, rossl) integer :: i, j, n real(dp) :: drs, dd, oross real :: fmu, tt -c -c oross=cross-section in a.u. -c rossl=log10(ROSS in cgs) + +! oross=cross-section in a.u. +! rossl=log10(ROSS in cgs) do i = 0, 5 do j = 0, 5 drs = 0.d0 do n = 1, ntot dd = 1.d0/rs(n, i, j) drs = drs + dd - enddo + end do oross = 1.d0/(drs*dv) - rossl(i, j) = log10(oross) - 16.55280d0 - flmu !log10(fmu) - enddo !j - enddo !i -c + rossl(i, j) = log10(oross) - 16.55280d0 - flmu !log10(fmu) + end do !j + end do !i + return end subroutine ross -c*********************************************************************** +!*********************************************************************** subroutine mix(ntot, nel, fa, ff, rs, rr, rion) implicit none integer, intent(in) :: ntot, nel real, intent(in) :: ff(nptot, ipe, 0:5, 0:5), fa(ipe), rr(28, 17, 0:5, 0:5) real, intent(out) :: rs(nptot, 0:5, 0:5), rion(28, 0:5, 0:5) -c local variables +! local variables integer :: i, j, k, n, m real :: rs_temp, rion_temp -c + do i = 0, 5 do j = 0, 5 do n = 1, ntot !rs_temp = ff(n,1,i,j)*fa(1) !do k = 2, nel ! rs_temp = rs_temp + ff(n,k,i,j)*fa(k) - !enddo - !rs(n,i,j) = rs_temp + !end do + !rs(n,i,j) = rs_temp rs(n, i, j) = dot_product(ff(n,1:nel,i,j),fa(1:nel)) - enddo + end do do m = 1, 28 !rion_temp = rr(m, 1, i, j)*fa(1) !do k = 2, nel ! rion_temp = rion_temp + rr(m,k,i,j)*fa(k) - !enddo + !end do !rion(m,i,j) = rion_temp rion(m,i,j) = dot_product(rr(m,1:nel,i,j),fa(1:nel)) - enddo - enddo - enddo -c + end do + end do + end do + return end subroutine mix -C*********************************************************************** +!*********************************************************************** subroutine interp(nel, rossl, xi, eta, g, i3, ux, uy, gx, gy) implicit none integer, intent(in) :: nel, i3 real, intent(in) :: ux, uy, xi, eta real, intent(out) :: gx, gy, g -c local variables +! local variables integer :: i, j, l real :: V(4), U(4), vyi(4) real :: x3(3), fx3!, fxxy(0:5, 0:5), fyxy(0:5, 0:5) -c pointers and targets - real, target :: fx(0:5, 0:5), fy(0:5, 0:5), fxy(0:5, 0:5), fyx(0:5, 0:5), +! pointers and targets + real, target :: fx(0:5, 0:5), fy(0:5, 0:5), fxy(0:5, 0:5), fyx(0:5, 0:5), : fxx(0:5, 0:5), fyy(0:5, 0:5), rossl(0:5, 0:5) - real, pointer :: f3(:), fin(:, :), finx(:, :), finy(:, :) -c -c interpolation of g (=rosseland mean opacity) -c Use refined techniques of bi-cubic spline interpolation (Seaton 1993): + real, pointer :: f3(:), fin(:, :), finx(:, :), finy(:, :) +! +! interpolation of g (=rosseland mean opacity) +! Use refined techniques of bi-cubic spline interpolation (Seaton 1993): ! call deriv(rossl, fx, fy, fxy) ! call interp2(rossl, fx, fy, fxy, xi, eta, g, gx, gy) ! gy = 0.5*gy/uy ! gx = (80./real(i3))*(0.5*gx-gy*ux) -c Alternatively, use interpolation techniques by M.-A. Dupret to ensure smooothness required -c for pulsation studies: +! Alternatively, use interpolation techniques by M.-A. Dupret to ensure smooothness required +! for pulsation studies: do i = 0, 3 x3(1) = i x3(2) = i+1 - x3(3) = i+2 + x3(3) = i+2 do j = 1, 4 f3 => rossl(i:i+2, j) call deriv3(f3, x3, fx3) fx(i+1, j) = fx3 - enddo - enddo + end do + end do do i = 0, 3 x3(1) = i x3(2) = i+1 - x3(3) = i+2 - do j = 1, 4 + x3(3) = i+2 + do j = 1, 4 f3 => rossl(j, i:i+2) call deriv3(f3, x3, fx3) fy(j, i+1) = fx3 - enddo - enddo + end do + end do do i = 1, 2 x3(1) = i x3(2) = i+1 - x3(3) = i+2 + x3(3) = i+2 do j = 2, 3 f3 => fx(i:i+2, j) call deriv3(f3, x3, fx3) fxx(i+1, j) = fx3 - enddo - enddo + end do + end do do i = 1, 2 x3(1) = i x3(2) = i+1 - x3(3) = i+2 + x3(3) = i+2 do j = 2, 3 f3 => fx(j, i:i+2) call deriv3(f3, x3, fx3) fxy(j, i+1) = fx3 - enddo - enddo + end do + end do do i = 1, 2 x3(1) = i x3(2) = i+1 - x3(3) = i+2 + x3(3) = i+2 do j = 2, 3 f3 => fy(i:i+2, j) call deriv3(f3, x3, fx3) fyx(i+1, j) = fx3 - enddo - enddo + end do + end do do i = 1, 2 x3(1) = i x3(2) = i+1 - x3(3) = i+2 + x3(3) = i+2 do j = 2, 3 f3 => fy(j, i:i+2) call deriv3(f3, x3, fx3) fyy(j, i+1) = fx3 - enddo - enddo -! call deriv(rossl, fx, fy, fxy) -! call deriv(fx, fxx, fxy, fxxy) -! call deriv(fy, fyx, fyy, fyxy) + end do + end do +! call deriv(rossl, fx, fy, fxy) +! call deriv(fx, fxx, fxy, fxxy) +! call deriv(fy, fyx, fyy, fyxy) fin => rossl(2:3, 2:3) finx => fx(2:3, 2:3) finy => fy(2:3, 2:3) - call interp3(fin, finx, finy, xi, eta, g) + call interp3(fin, finx, finy, xi, eta, g) fin => fx(2:3, 2:3) finx => fxx(2:3, 2:3) - finy => fxy(2:3, 2:3) - call interp3(fin, finx, finy, xi, eta, gx) + finy => fxy(2:3, 2:3) + call interp3(fin, finx, finy, xi, eta, gx) fin => fy(2:3, 2:3) finx => fyx(2:3, 2:3) - finy => fyy(2:3, 2:3) - call interp3(fin, finx, finy, xi, eta, gy) + finy => fyy(2:3, 2:3) + call interp3(fin, finx, finy, xi, eta, gy) gy = 0.5*gy/uy gx = (80./real(i3))*(0.5*gx-gy*ux) -c + RETURN - end subroutine interp -C************************************** + end subroutine interp +!************************************** function fint(u,r) dimension u(4) -c -c If P(R) = u(1) u(2) u(3) u(4) -c for R = -3 -1 1 3 -c then a cubic fit is: - P(R)=( + +! If P(R) = u(1) u(2) u(3) u(4) +! for R = -3 -1 1 3 +! then a cubic fit is: + P(R)=( + 27*(u(3)+u(2))-3*(u(1)+u(4)) +R*( + 27*(u(3)-u(2))-(u(4)-u(1)) +R*( + -3*(u(2)+u(3))+3*(u(4)+u(1)) +R*( + -3*(u(3)-u(2))+(u(4)-u(1)) ))))/48. -c +! fint=p(r) -c +! return end function fint -c*********************************************************************** +!*********************************************************************** function fintp(u,r) dimension u(4) -c -c If P(R) = u(1) u(2) u(3) u(4) -c for R = -3 -1 1 3 -c then a cubic fit to the derivative is: - PP(R)=( + +! If P(R) = u(1) u(2) u(3) u(4) +! for R = -3 -1 1 3 +! then a cubic fit to the derivative is: + PP(R)=( + 27*(u(3)-u(2))-(u(4)-u(1)) +2.*R*( + -3*(u(2)+u(3))+3*(u(4)+u(1)) +3.*R*( + -3*(u(3)-u(2))+(u(4)-u(1)) )))/48. -c + fintp=pp(r) -c + return end function fintp -C -c*********************************************************************** + +!*********************************************************************** SUBROUTINE DERIV(f, fx, fy, fxy) -C + real, intent(in) :: f(0:5, 0:5) - real, intent(out) :: fx(0:5, 0:5), fy(0:5, 0:5), fxy(0:5, 0:5) + real, intent(out) :: fx(0:5, 0:5), fy(0:5, 0:5), fxy(0:5, 0:5) real :: C(6) -C -C GET FX - DO 70 J = 0, 5 + +! GET FX + DO J = 0, 5 L=0 - DO 50 I = 0, 5 + DO I = 0, 5 L=L+1 C(L)=F(I,J) - 50 CONTINUE + END DO CALL GET(C,L) L=0 - DO 60 I = 0, 5 + DO I = 0, 5 L = L + 1 FX(I, J) = C(L) - 60 CONTINUE - 70 CONTINUE -C -C GET FY - DO 100 I = 0, 5 + END DO + END DO + +! GET FY + DO I = 0, 5 L=0 - DO 80 J = 0, 5 + DO J = 0, 5 L = L + 1 C(L) = F(I, J) - 80 CONTINUE + END DO CALL GET(C,L) L=0 - DO 90 J = 0, 5 + DO J = 0, 5 L = L + 1 FY(I,J) = C(L) - 90 CONTINUE - 100 CONTINUE -C -C GET FXY - DO 130 I = 0, 5 + END DO + END DO + +! GET FXY + DO I = 0, 5 L = 0 - DO 110 J = 0, 5 + DO J = 0, 5 L = L + 1 C(L) = FX(I, J) - 110 CONTINUE + END DO CALL GET(C,L) L=0 - DO 120 J = 0, 5 + DO J = 0, 5 L = L + 1 FXY(I,J) = C(L) - 120 CONTINUE - 130 CONTINUE -c + END DO + END DO + RETURN -C + END SUBROUTINE DERIV -CC****************************************************************** -C +!****************************************************************** +! SUBROUTINE GET(F,N) -C -C SIMPLIFIED CODE FOR SPLINE COEFFICIENTS, FOR CASE OF INTERVALS -C OF UNITY. -C RETURNS DERIVATIVES OF ORIGINAL F IN LOCATION F -C -c REVISED 5.5.95 -C +! +! SIMPLIFIED CODE FOR SPLINE COEFFICIENTS, FOR CASE OF INTERVALS +! OF UNITY. +! RETURNS DERIVATIVES OF ORIGINAL F IN LOCATION F +! +! REVISED 5.5.95 +! PARAMETER (IPI=6) DIMENSION F(IPI),D(IPI),T(IPI) -C - IF(N.LE.0)THEN + + if (N <= 0) then WRITE(6,*)' Error in SUBROUTINE GET: N=',N STOP - ELSEIF(N.EQ.1)THEN + elseif (N == 1) then F(1)=0. RETURN - ELSEIF(N.EQ.2)THEN + elseif (N == 2) then F(1)=F(2)-F(1) F(2)=F(1) RETURN - ELSEIF(N.EQ.3)THEN + elseif (N == 3) then FP1=.5*(-3.*F(1)+4.*F(2)-F(3)) FPN=.5*(F(1)-4.*F(2)+3.*F(3)) ELSE FP1=(-11.*F(1)+18.*F(2)-9.*F(3)+2.*F(4))/6. FPN=(11.*F(N)-18.*F(N-1)+9.*F(N-2)-2.*F(N-3))/6. ENDIF -C + D(1)=-.5 T(1)=.5*(-F(1)+F(2)-FP1) -C - DO 10 J=2,N-1 + + DO J=2,N-1 D(J)=-1./(4.+D(J-1)) T(J)=-D(J)*(F(J-1)-2.*F(J)+F(J+1)-T(J-1)) - 10 CONTINUE -C + END DO + D(N)=(FPN+F(N-1)-F(N)-T(N-1))/(2.+D(N-1)) -C - DO 20 J=N-1,1,-1 + + DO J=N-1,1,-1 D(J)=D(J)*D(J+1)+T(J) - 20 CONTINUE -C - DO 30 J=2,N-1 + END DO + + DO J=2,N-1 F(J)=-F(J)+F(J+1)-2.*D(J)-D(J+1) - 30 CONTINUE + END DO F(1)=FP1 F(N)=FPN -C + RETURN END SUBROUTINE GET -C -c*********************************************************************** + +!*********************************************************************** subroutine INTERP2(f, fx, fy, fxy, xi, eta, g, gx, gy) real, intent(in) :: eta, xi, f(0:5, 0:5), fx(0:5, 0:5), fy(0:5, 0:5), fxy(0:5, 0:5) real, intent(out) :: g, gx, gy integer :: i , j real :: x, y, B(16) -C -C FUNCTION DEFINITIONS FOR CUBIC EXPANSION -C +! +! FUNCTION DEFINITIONS FOR CUBIC EXPANSION +! FF(S,T)= B( 1)+T*(B( 2)+T*(B( 3)+T*B( 4))) + +S*( B( 5)+T*(B( 6)+T*(B( 7)+T*B( 8))) + +S*( B( 9)+T*(B(10)+T*(B(11)+T*B(12))) + +S*( B(13)+T*(B(14)+T*(B(15)+T*B(16))) ))) -C + FFX(S,T)= B( 5)+T*(B( 6)+T*(B( 7)+T*B( 8))) + +S*( 2*(B( 9)+T*(B(10)+T*(B(11)+T*B(12)))) + +S*( 3*(B(13)+T*(B(14)+T*(B(15)+T*B(16)))) )) -C + FFY(S,T)= B( 2)+S*(B( 6)+S*(B(10)+S*B(14))) + +T*( 2*(B( 3)+S*(B( 7)+S*(B(11)+S*B(15)))) + +T*( 3*(B( 4)+S*(B( 8)+S*(B(12)+S*B(16)))) )) -C -C + Y = (eta + 5.)/2. - X = (xi + 5.)/2. + X = (xi + 5.)/2. ! i = floor(x) ! j = floor(y) I = X + 1.E-5 - IF(ABS(X-I).LE.1.E-5) X = I + if (ABS(X-I) <= 1.E-5) X = I J = Y + 1.E-5 - IF(ABS(Y-J).LE.1.E-5) Y = J -C -C INTERPOLATE -C -C GIVEN FUNCTIONS AND DERIVATIVES AT GRID POINTS, COMPUTE COEFFICIENTS. + if (ABS(Y-J) <= 1.E-5) Y = J +! +! INTERPOLATE +! +! GIVEN FUNCTIONS AND DERIVATIVES AT GRID POINTS, COMPUTE COEFFICIENTS. B(1)=F(I,J) B(2)=FY(I,J) B(3)=3*(-F(I,J)+F(I,J+1))-2*FY(I,J)-FY(I,J+1) B(4)=2*(F(I,J)-F(I,J+1))+FY(I,J)+FY(I,J+1) -C + B(5)=FX(I,J) B(6)=FXY(I,J) B(7)=3*(-FX(I,J)+FX(I,J+1))-2*FXY(I,J)-FXY(I,J+1) B(8)=2*(FX(I,J)-FX(I,J+1))+FXY(I,J)+FXY(I,J+1) -C + B(9)=3*(-F(I,J)+F(I+1,J))-2*FX(I,J)-FX(I+1,J) B(10)=3*(-FY(I,J)+FY(I+1,J))-2*FXY(I,J)-FXY(I+1,J) B(11)=9*(F(I,J)-F(I+1,J)+F(I+1,J+1)-F(I,J+1)) @@ -700,7 +698,7 @@ subroutine INTERP2(f, fx, fy, fxy, xi, eta, g, gx, gy) + +3*(-FY(I,J)+FY(I+1,J)+FY(I+1,J+1)-FY(I,J+1)) + +2*(-FX(I+1,J)+FX(I+1,J+1)-FXY(I,J)-FXY(I,J+1)) + -FXY(I+1,J)-FXY(I+1,J+1) -C + B(13)=2*(F(I,J)-F(I+1,J))+FX(I,J)+FX(I+1,J) B(14)=2*(FY(I,J)-FY(I+1,J))+FXY(I,J)+FXY(I+1,J) B(15)=6*(-F(I,J)+F(I+1,J)-F(I+1,J+1)+F(I,J+1)) @@ -712,9 +710,9 @@ subroutine INTERP2(f, fx, fy, fxy, xi, eta, g, gx, gy) + +2*(FX(I,J)+FX(I+1,J)-FX(I+1,J+1)-FX(I,J+1) + +FY(I,J)-FY(I+1,J)-FY(I+1,J+1)+FY(I,J+1)) + +FXY(I,J)+FXY(I+1,J)+FXY(I+1,J+1)+FXY(I,J+1) -C -C GET G=LOG10(ROSS), DGDT=d LOG10(ROSS)/d LOG10(T), -C DGDRHO=d LOG10(ROSS)/d LOG10(RHO) +! +! GET G=LOG10(ROSS), DGDT=d LOG10(ROSS)/d LOG10(T), +! DGDRHO=d LOG10(ROSS)/d LOG10(RHO) U = X - I V = Y - J G = FF(U, V) @@ -723,39 +721,39 @@ subroutine INTERP2(f, fx, fy, fxy, xi, eta, g, gx, gy) ! DGDT=(1./CT)*FFX(U,V)-(3./CN)*FFY(U,V) ! DGDRHO=(1./CN)*FFY(U,V) RETURN -C + END SUBROUTINE INTERP2 -c************************************************************* -c This subroutine estimates the partial derivative of a function -c as described in the PhD thesis by M.-A. Dupret. +!************************************************************* +! This subroutine estimates the partial derivative of a function +! as described in the PhD thesis by M.-A. Dupret. subroutine deriv3(f, x, fx) real, intent(in) :: f(3), x(3) real, intent(out) :: fx real :: a, a1, a2, b, x1, x2 -c + x1 = (f(3)- f(2))/(x(3)-x(2)) x2 = (f(2)-f(1))/(x(2)-x(1)) b = abs(x1/x2) a = (2.*x(2) - x(1) - x(3))/((x(2)-x(1))*(x(2)-x(3))) a1 = (x(2)-x(3))/((x(1)-x(3))*(x(1)-x(2))) a2 = (x(2)-x(1))/((x(3)-x(2))*(x(3)-x(1))) - if (b .ge. 0.2 .and. b .le. 5.) then + if (b >= 0.2 .and. b <= 5.) then fx = a*f(2) + a1*f(1) + a2*f(3) else if (abs(x1) f(1:ntot,i,j) -! enddo +! end do ! do m=1,28 rr => rion(1:28,i,j) -! enddo +! end do call screen2(ft,fne,rr,epa,ntot,umin,umax,umesh,p) ! do k=1,ntot ! f(k,i,j)=p(k) -! enddo - enddo - enddo -C +! end do + end do + end do + return end subroutine screen1 -c*********************************************************************** +!*********************************************************************** end module op_osc diff --git a/kap/public/kap_def.f90 b/kap/public/kap_def.f90 index f0244e4af..5ebe3978c 100644 --- a/kap/public/kap_def.f90 +++ b/kap/public/kap_def.f90 @@ -283,12 +283,16 @@ end subroutine other_radiative_opacity_interface kap_a09 = 3, & kap_OP_gs98 = 4, & kap_OP_a09 = 5, & - kap_user = 6, & - kap_test = 7, & - kap_options_max = 7 + kap_oplib_gs98 = 6, & + kap_oplib_agss09 = 7, & + kap_oplib_aag21 = 8, & + kap_oplib_mb22 = 9, & + kap_user = 10, & + kap_test = 11, & + kap_options_max = 11 - integer, parameter :: kap_max_dim = 20 !change this to make even larger grids in X and/or Z + integer, parameter :: kap_max_dim = 50 !change this to make even larger grids in X and/or Z integer, dimension(kap_options_max) :: num_kap_Xs = 0 real(dp), dimension(kap_max_dim, kap_options_max) :: kap_Xs = -1d0 @@ -320,17 +324,19 @@ end subroutine other_radiative_opacity_interface ! kap_lowT_options integer, parameter :: & - kap_lowT_Freedman11 = 1, & - kap_lowT_fa05_gs98 = 2, & - kap_lowT_fa05_gn93 = 3, & - kap_lowT_fa05_a09p = 4, & - kap_lowT_af94_gn93 = 5, & - kap_lowT_rt14_ag89 = 6, & - kap_lowT_kapCN = 7, & - kap_lowT_AESOPUS = 8, & - kap_lowT_user = 9, & - kap_lowT_test = 10, & - kap_lowT_options_max = 10 + kap_lowT_fa05_mb22= 1, & + kap_lowT_fa05_aag21 = 2, & + kap_lowT_Freedman11 = 3, & + kap_lowT_fa05_gs98 = 4, & + kap_lowT_fa05_gn93 = 5, & + kap_lowT_fa05_a09p = 6, & + kap_lowT_af94_gn93 = 7, & + kap_lowT_rt14_ag89 = 8, & + kap_lowT_kapCN = 9, & + kap_lowT_AESOPUS = 10, & + kap_lowT_user = 11, & + kap_lowT_test = 12, & + kap_lowT_options_max = 12 integer, dimension(kap_lowT_options_max) :: num_kap_lowT_Xs = 0 @@ -501,7 +507,7 @@ subroutine kap_def_init(kap_cache_dir_in) use utils_lib, only : mkdir use const_def, only: mesa_data_dir, mesa_caches_dir, mesa_temp_caches_dir, use_mesa_temp_cache character (*), intent(in) :: kap_cache_dir_in - integer :: ierr, i + integer :: i kap_test_partials = .false. @@ -539,6 +545,10 @@ subroutine kap_def_init(kap_cache_dir_in) kap_option_str(kap_a09) = 'a09' kap_option_str(kap_OP_gs98) = 'OP_gs98' kap_option_str(kap_OP_a09) = 'OP_a09_nans_removed_by_hand' + kap_option_str(kap_oplib_gs98) = 'oplib_gs98' + kap_option_str(kap_oplib_agss09) = 'oplib_agss09' + kap_option_str(kap_oplib_aag21) = 'oplib_aag21' + kap_option_str(kap_oplib_mb22) = 'oplib_mb22' kap_option_str(kap_test) = 'test' kap_CO_option_str(kap_CO_gn93) = 'gn93_co' @@ -546,6 +556,8 @@ subroutine kap_def_init(kap_cache_dir_in) kap_CO_option_str(kap_CO_a09) = 'a09_co' kap_CO_option_str(kap_CO_test) = 'test_co' + kap_lowT_option_str(kap_lowT_fa05_mb22) = 'lowT_fa05_mb22' + kap_lowT_option_str(kap_lowT_fa05_aag21) = 'lowT_fa05_aag21' kap_lowT_option_str(kap_lowT_Freedman11) = 'lowT_Freedman11' kap_lowT_option_str(kap_lowT_fa05_gs98) = 'lowT_fa05_gs98' kap_lowT_option_str(kap_lowT_fa05_gn93) = 'lowT_fa05_gn93' @@ -568,6 +580,27 @@ subroutine kap_def_init(kap_cache_dir_in) do i=1, kap_options_max select case (i) + case (6:9) + num_kap_Xs(i) = 30 + kap_Xs(1:num_kap_Xs(i), i) = [0.0d0, 0.000001d0, 0.00001d0, 0.000d0, 0.001d0, 0.01d0, & + 0.05d0, 0.1d0, 0.15d0, 0.2d0, 0.25d0, 0.3d0, 0.35d0, 0.4d0, 0.45d0, 0.5d0, 0.55d0, & + 0.6d0, 0.65d0, 0.7d0, 0.75d0, 0.8d0, 0.85d0, 0.9d0, 0.91d0, 0.92d0, 0.93d0, 0.94d0, & + 0.95d0,1.0d0] + num_kap_Zs(i) = 41 + kap_Zs(1:num_kap_Zs(i), i) = [0.0d0, 0.000001d0, 0.00001d0, 0.00003d0, 0.00007d0, 0.0001d0, & + 0.0003d0 ,0.0007d0, 0.001d0, 0.002d0, 0.003d0, 0.004d0, 0.006d0, 0.008d0, 0.01d0, 0.012d0, & + 0.014d0, 0.015d0, 0.016d0, 0.017d0, 0.018d0, 0.019d0, 0.02d0, 0.021d0, 0.022d0, 0.023d0, & + 0.024d0, 0.025d0, 0.026d0, 0.028d0, 0.03d0, 0.035d0, 0.04d0, 0.05d0, 0.06d0, 0.07d0, 0.08d0, & + 0.09d0, 0.1d0, 0.15d0, 0.2d0] + num_kap_Xs_for_this_Z(1:num_kap_Zs(i), i) = [ num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), & + num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), & + num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), & + num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), & + num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), & + num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), & + num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), num_kap_Xs(i), & + num_kap_Xs(i), num_kap_Xs(i)-1, num_kap_Xs(i)-2, num_kap_Xs(i)-3, num_kap_Xs(i)-4, & + num_kap_Xs(i)-5, num_kap_Xs(i)-6, num_kap_Xs(i)-7, num_kap_Xs(i)-8] case DEFAULT num_kap_Xs(i) = 10 kap_Xs(1:num_kap_Xs(i), i) = [0.00d0, 0.10d0, 0.20d0, & diff --git a/kap/test/src/test_kap_support.f90 b/kap/test/src/test_kap_support.f90 index 946cf21d2..8e6390d05 100644 --- a/kap/test/src/test_kap_support.f90 +++ b/kap/test/src/test_kap_support.f90 @@ -72,10 +72,10 @@ subroutine test1_op_mono(quietly, test_str) logical, intent(in) :: quietly character (len=*), intent(in) :: test_str real(dp) :: & - zbar, Z, xh, XC, XN, XO, XNe, frac, abar, kap1, & - fC, fN, fO, fNe, dXC, dXO, xmass(ionmax), & + zbar, Z, xh, XC, XN, XO, XNe, kap1, & + xmass(ionmax), & frac_Type2, lnfree_e, d_lnfree_e_dlnRho, d_lnfree_e_dlnT, & - logT, logRho, logR, kap, log10kap, dlnkap_dlnRho, dlnkap_dlnT + logT, logRho, kap, log10kap, dlnkap_dlnRho, dlnkap_dlnT logical :: CO_enhanced logical, parameter :: dbg = .false. @@ -182,8 +182,8 @@ subroutine test_op_mono(fe56,ierr) real, pointer :: & umesh(:), semesh(:), ff(:,:,:,:), ta(:,:,:,:), rs(:,:,:) - integer :: kk, nel, nptot, ipe, nrad, i, iz(ionmax), iZ_rad(ionmax) - real(dp), dimension(ionmax) :: fap, fac, gp1, & + integer :: kk, nel, nptot, ipe, nrad, iz(ionmax), iZ_rad(ionmax) + real(dp), dimension(ionmax) :: fap, fac, & lgrad real(dp) :: flux, L, r logical, parameter :: screening = .true. @@ -308,7 +308,7 @@ subroutine test1(quietly, which, test_str, ierr) fC, fN, fO, fNe, dXC, dXO, & lnfree_e, d_lnfree_e_dlnRho, d_lnfree_e_dlnT, & eta, d_eta_dlnRho, d_eta_dlnT, & - logT, logRho, logR, kap, log10kap, dlnkap_dlnRho, dlnkap_dlnT + logT, logRho, kap, log10kap, dlnkap_dlnRho, dlnkap_dlnT real(dp) :: kap_fracs(num_kap_fracs), dlnkap_dxa(species) ! eos results @@ -486,7 +486,6 @@ subroutine setup(quietly) use const_lib logical, intent(in) :: quietly - character (len=256) :: kap_dir, opal_dir, cbeg_ferg integer :: ierr logical, parameter :: use_cache = .true. diff --git a/linters/check_columns.py b/linters/check_columns.py index 32a262576..cd77fb4c7 100755 --- a/linters/check_columns.py +++ b/linters/check_columns.py @@ -9,6 +9,7 @@ ENABLE_TEST_SUITE_HIST_CHECKS = True ENABLE_TEST_SUITE_PROF_CHECKS = True + # inspiration from https://stackoverflow.com/a/27531275 class CaseInsensitiveSet(MutableSet): def __init__(self, iterable): @@ -73,9 +74,9 @@ def print_options(options): def delete_command(options, filename): print("for i in", " ".join(options), end=";") print("do ", end="") - print('sed -i "/^\s*\!$i/d" */' + filename, end=";") - print('sed -i "/^\s*\!\s*$i/d" */' + filename, end=";") - print('sed -i "/^\s*$i/d" */' + filename, end=";") + print(r'sed -i "/^\s*\!$i/d" */' + filename, end=";") + print(r'sed -i "/^\s*\!\s*$i/d" */' + filename, end=";") + print(r'sed -i "/^\s*$i/d" */' + filename, end=";") print("done") @@ -88,7 +89,7 @@ def get_history_columns(filename="star/defaults/history_columns.list"): # that is, they may or may not be commented out # and may or may not have a trailing comment - regexp = "^[ \t]*!?[ ]?(\w+)[ ^t]*(!.*)?$" + regexp = r"^[ \t]*!?[ ]?(\w+)[ ^t]*(!.*)?$" return get_columns(filename, regexp) @@ -99,7 +100,7 @@ def get_star_history_def(filename="star/private/star_history_def.f90"): # these lines look like: # history_column_name(h_star_mass) = 'star_mass' # ^^^^^^^^^ - regexp = "history_column_name\\(h_\w+\\)[ ]*=[&\s]*'(\w+)'" + regexp = r"history_column_name\\(h_\w+\\)[ ]*=[&\s]*'(\w+)'" return get_options(filename, regexp) @@ -110,7 +111,7 @@ def get_star_history(filename="star/private/history.f90"): # these lines look like: # case(h_star_mass) # ^^^^^^^^^ - regexp = "case[ ]*\\(h_(\w+)\\)" + regexp = r"case[ ]*\\(h_(\w+)\\)" return get_options(filename, regexp) @@ -273,7 +274,7 @@ def get_profile_getval(filename="star/private/profile_getval.f90"): # these lines look like: # case(p_zone) # ^^^^ - regexp = "case[ ]*\\(p_(\w+)\\)" + regexp = r"case[ ]*\\(p_(\w+)\\)" return get_options(filename, regexp) @@ -285,7 +286,7 @@ def get_profile_def(filename="star/private/star_profile_def.f90"): # these lines look like: # profile_column_name(p_zone) = 'zone' # ^^^^^ - regexp = "profile_column_name\\(p_\w+\\)[ ]*=[&\s]*'(\w+)'" + regexp = r"profile_column_name\\(p_\w+\\)[ ]*=[&\s]*'(\w+)'" return get_options(filename, regexp) @@ -299,7 +300,7 @@ def get_profile_columns(filename="star/defaults/profile_columns.list"): # that is, they may or may not be commented out # and may or may not have a trailing comment - regexp = "^[ \t]*!?[ ]?(\w+)[ ^t]*(!.*)?$" + regexp = r"^[ \t]*!?[ ]?(\w+)[ ^t]*(!.*)?$" return get_columns(filename, regexp) diff --git a/linters/check_defaults.py b/linters/check_defaults.py index 7f0778702..48d7e0e58 100755 --- a/linters/check_defaults.py +++ b/linters/check_defaults.py @@ -2,7 +2,6 @@ import os import re -import glob from collections.abc import MutableSet import functools import operator @@ -12,8 +11,10 @@ ENABLE_TEST_SUITE_HIST_CHECKS = True ENABLE_TEST_SUITE_PROF_CHECKS = True + # inspiration from https://stackoverflow.com/a/27531275 class CaseInsensitiveSet(MutableSet): + def __init__(self, iterable): self._values = {} self._fold = str.casefold @@ -61,6 +62,7 @@ def get_columns(filename, regexp): matches.append(m.group(1)) return CaseInsensitiveSet(matches) + def print_section(header): """Display output section header""" print(f"\n\n*** {header} ***\n") @@ -82,12 +84,13 @@ def get_defaults(filename): # and may or may not have a( ) # and may or may not have space before a = - regexp = "^[ \t]*[ ]?(\w+)(\(.*\))*[ ^t]*=" + regexp = r"^[ \t]*[ ]?(\w+)(\(.*\))*[ ^t]*=" return get_columns(filename, regexp) + def load_file(filename): - with open(os.path.join(MESA_DIR, filename),"r") as f: + with open(os.path.join(MESA_DIR, filename), "r") as f: lines = f.readlines() return lines @@ -98,33 +101,35 @@ def get_inc(filename): lines = load_file(filename) # Remove line continutaion characters - lines = [i.replace("&","").strip() for i in lines if i] + lines = [i.replace("&", "").strip() for i in lines if i] - # Remove type defintion (i.e real(dp) :: x) leaves just x - # as well as anything that starstwith a comment or has a comment embeded in it - for idl,line in enumerate(lines): + # Remove type definition (i.e real(dp) :: x) leaves just x + # as well as anything that starts with a comment + # or has a comment embedded in it + for idl, line in enumerate(lines): if "::" in line: lines[idl] = line.split("::")[1].strip() - lines = [i.split(",") for i in lines if i] + lines = [i.split(",") for i in lines if i] # Flatten list of lists lines = functools.reduce(operator.iconcat, lines, []) # Remove array sizes from variables - lines = [line.split("(")[0] for line in lines if line] - + lines = [line.split("(")[0] for line in lines if line] + # Remove comments lines = [line.split("!")[0] for line in lines if line] - # Remove = x - lines = [line.split("=")[0] for line in lines if line] + # Remove = x + lines = [line.split("=")[0] for line in lines if line] # Remove remaining empty strings - lines = [line.strip() for line in lines if line] + lines = [line.strip() for line in lines if line] return CaseInsensitiveSet(lines) + def check_io(filename, dt, var): # Checks that we have both dt% variable = variable and variable = dt% variable # Where dt is the derived type (s for star_job, b for binary_job etc) @@ -142,14 +147,14 @@ def check_io(filename, dt, var): match_m1 = False match_m2 = False - r1=[] - r2=[] + r1 = [] + r2 = [] for line in lines: if rc1.match(line): - match_m1=True + match_m1 = True if rc2.match(line): - match_m2=True + match_m2 = True if not match_m1: r1.append(m1) @@ -157,7 +162,8 @@ def check_io(filename, dt, var): if not match_m2: r2.append(m2) - return r1,r2 + return r1, r2 + def run_checks(inc_file, defaults_file, io_file, dt, module): @@ -181,8 +187,6 @@ def run_checks(inc_file, defaults_file, io_file, dt, module): f"{module}_namelist_name", ) - - print_section("Things in include but not defaults") print_options(cinc - cdef - false_positives) @@ -195,8 +199,8 @@ def run_checks(inc_file, defaults_file, io_file, dt, module): m1 = [] m2 = [] - for i in cdef- false_positives: - r1,r2=check_io(io_file, dt,i) + for i in cdef - false_positives: + r1, r2 = check_io(io_file, dt, i) m1.extend(r1) m2.extend(r2) @@ -210,9 +214,34 @@ def run_checks(inc_file, defaults_file, io_file, dt, module): print() + if __name__ == "__main__": - run_checks("star_data/private/star_controls.inc","star/defaults/controls.defaults","star/private/ctrls_io.f90","s","controls") - run_checks("star_data/private/star_controls_dev.inc","star/defaults/controls_dev.defaults","star/private/ctrls_io.f90","s","controls") + run_checks( + "star_data/private/star_controls.inc", + "star/defaults/controls.defaults", + "star/private/ctrls_io.f90", + "s", + "controls", + ) + run_checks( + "star_data/private/star_controls_dev.inc", + "star/defaults/controls_dev.defaults", + "star/private/ctrls_io.f90", + "s", + "controls", + ) - run_checks("star_data/private/star_job_controls.inc","star/defaults/star_job.defaults","star/private/star_job_ctrls_io.f90","s% job","star_job") - run_checks("star_data/private/star_job_controls_dev.inc","star/defaults/star_job_dev.defaults","star/private/star_job_ctrls_io.f90","s% job","star_job") + run_checks( + "star_data/private/star_job_controls.inc", + "star/defaults/star_job.defaults", + "star/private/star_job_ctrls_io.f90", + "s% job", + "star_job", + ) + run_checks( + "star_data/private/star_job_controls_dev.inc", + "star/defaults/star_job_dev.defaults", + "star/private/star_job_ctrls_io.f90", + "s% job", + "star_job", + ) diff --git a/linters/check_empty_writes.py b/linters/check_empty_writes.py index 21e77d050..5878e37df 100644 --- a/linters/check_empty_writes.py +++ b/linters/check_empty_writes.py @@ -7,16 +7,14 @@ MESA_DIR = os.environ["MESA_DIR"] -# Search files for instances on an empty writing usin* as the format i.e write(*,*) -# and replace with calls to write(*,'(A)') +# Search files for instances on an empty writing usin* as the format i.e write(*,*) +# and replace with calls to write(*,'(A)') # This makes writes more portable to ifort # Files or folders to skip -skip_folders = [ -] +skip_folders = [] -skip_files = [ -] +skip_files = [] def check_skip(path): @@ -29,10 +27,12 @@ def check_skip(path): return False -write = re.compile("^ *write\([*a-zA-Z0-9]+\,[*]\)$") +write = re.compile(r"^ *write\([*a-zA-Z0-9]+\,[*]\)$") + def replace(match): - return match.string.split(',')[0] + ",'(A)')" + return match.string.split(",")[0] + ",'(A)')" + if len(sys.argv) > 1: files = sys.argv[1:] diff --git a/linters/check_omp_critical.py b/linters/check_omp_critical.py index a730a108c..cc4201e00 100644 --- a/linters/check_omp_critical.py +++ b/linters/check_omp_critical.py @@ -10,11 +10,9 @@ # Search files for unnamed omp critical blocks # Files or folders to skip -skip_folders = [ -] +skip_folders = [] -skip_files = [ -] +skip_files = [] def check_skip(path): @@ -27,21 +25,24 @@ def check_skip(path): return False -omp_crit_start = re.compile("omp critical *$",re.IGNORECASE) -omp_crit_end = re.compile("omp end critical *$",re.IGNORECASE) +omp_crit_start = re.compile("omp critical *$", re.IGNORECASE) +omp_crit_end = re.compile("omp end critical *$", re.IGNORECASE) if len(sys.argv) > 1: files = sys.argv[1:] else: files = Path("./").rglob("*.f90") -def replace_start(line,file, num): - whitespace = ' '*line.index('!') - return whitespace + '!$omp critical (' + file.stem + '_' + str(num) + ')\n' -def replace_end(line,file, num): - whitespace = ' '*line.index('!') - return whitespace + '!$omp end critical (' + file.stem + '_' + str(num) + ')\n' +def replace_start(line, file, num): + whitespace = " " * line.index("!") + return whitespace + "!$omp critical (" + file.stem + "_" + str(num) + ")\n" + + +def replace_end(line, file, num): + whitespace = " " * line.index("!") + return whitespace + "!$omp end critical (" + file.stem + "_" + str(num) + ")\n" + for file in files: num = 1 @@ -54,16 +55,16 @@ def replace_end(line,file, num): modified = False for ldx, line in enumerate(lines): if omp_crit_start.search(line): - line = replace_start(line,file,num) + line = replace_start(line, file, num) lines[ldx] = line modified = True # Find the end statement - for ldx2,line2 in enumerate(lines[ldx:]): + for ldx2, line2 in enumerate(lines[ldx:]): if omp_crit_end.search(line2): line2 = replace_end(line2, file, num) - lines[ldx+ldx2] = line2 + lines[ldx + ldx2] = line2 break - num = num+1 + num = num + 1 if modified: with open(file, "w") as f: diff --git a/linters/check_photos.py b/linters/check_photos.py index fbaff85b7..870112c0d 100755 --- a/linters/check_photos.py +++ b/linters/check_photos.py @@ -6,6 +6,7 @@ MESA_DIR = "../" + class CaseInsensitiveSet(MutableSet): def __init__(self, iterable): self._values = {} @@ -53,9 +54,9 @@ def discard(self, value): "net_iso", "model_profile_filename", "include_binary_history_in_log_file", - "i_dj_rot_dt", # Shadows s% i_j_rot - "i_equ_w_div_wc", # Shadows s% i_w_div_wc - "have_j_rot", # Set from s% rotation_flag + "i_dj_rot_dt", # Shadows s% i_j_rot + "i_equ_w_div_wc", # Shadows s% i_w_div_wc + "have_j_rot", # Set from s% rotation_flag "nz_old", } diff --git a/linters/check_stop.py b/linters/check_stop.py index a0a0d717c..3e9f0493f 100644 --- a/linters/check_stop.py +++ b/linters/check_stop.py @@ -14,8 +14,8 @@ # Files or folders to skip skip_folders = [ "utils/", - 'eos/eosCMS_builder', - 'eos/eosFreeEOS_builder', + "eos/eosCMS_builder", + "eos/eosFreeEOS_builder", ] skip_files = [ @@ -43,6 +43,7 @@ def mesa_error(message=None): else: return f"call mesa_error(__FILE__,__LINE__,{message})" + if len(sys.argv) > 1: files = sys.argv[1:] else: diff --git a/linters/fix_inlists.py b/linters/fix_inlists.py index 29bea5019..db3e22bc7 100755 --- a/linters/fix_inlists.py +++ b/linters/fix_inlists.py @@ -2,71 +2,80 @@ import os import sys -import re import glob MESA_DIR = "../" - -def set_min_value(line,num='10'): - if line.strip().startswith('!'): +def set_min_value(line, num="10"): + if line.strip().startswith("!"): return line - l = line.split('!')[0] - interval = l.split('=')[1] + lsplit = line.split("!")[0] + interval = lsplit.split("=")[1] if int(interval) < 10: - line = line.replace(interval,f" {num} \n") + line = line.replace(interval, f" {num} \n") return line -def set_flag(line,new_flag='.false.',old_flag='.true.'): - if line.strip().startswith('!'): + +def set_flag(line, new_flag=".false.", old_flag=".true."): + if line.strip().startswith("!"): return line - line = line.replace(old_flag,new_flag) + line = line.replace(old_flag, new_flag) return line + def fix_line(line): # Turn off solver - if 'report_solver_progress' in line: + if "report_solver_progress" in line: line = set_flag(line) # Limit output - if 'terminal_interval' in line: + if "terminal_interval" in line: line = set_min_value(line) - + # Limit output - if 'profile_interval' in line: + if "profile_interval" in line: line = set_min_value(line) + + # Fix indent spaces (if line starts with spaces, replace it with 3 spaces) + if line.startswith(" "): + line = " " + line.lstrip() + + # Remove spaces trailing the line + line = line.rstrip() + "\n" + return line def fix_inlist(file): try: - with open(file,'r') as f: + with open(file, "r") as f: lines = f.readlines() except IsADirectoryError: return lines = [fix_line(line) for line in lines] - with open(file,'w') as f: + with open(file, "w") as f: f.writelines(lines) + def fix_inlists(*files): for file in files: print(file) fix_inlist(file) + if __name__ == "__main__": if len(sys.argv) > 1: fix_inlists(sys.argv[1:]) else: - inlists = glob.glob(os.path.join(MESA_DIR,'star','test_suite','*','inlist*')) + inlists = glob.glob( + os.path.join(MESA_DIR, "star", "test_suite", "*", "inlist*") + ) fix_inlists(*inlists) - - - diff --git a/linters/list_test_owner.py b/linters/list_test_owner.py index b282b358e..18680c3d3 100644 --- a/linters/list_test_owner.py +++ b/linters/list_test_owner.py @@ -1,5 +1,3 @@ -import os -import glob from collections import defaultdict import check_test_suite_owners as cc diff --git a/linters/mesa-linter.py b/linters/mesa-linter.py index c0f838a5a..00f2444c7 100644 --- a/linters/mesa-linter.py +++ b/linters/mesa-linter.py @@ -1,7 +1,6 @@ from __future__ import print_function import sys -import os import re @@ -13,11 +12,11 @@ def search(filename, checks, summary=False): # Skip comment lines continue for c in checks: - if "!" in line and not "!$" in line: - l = line[: line.index("!")] + if "!" in line and "!$" not in line: + lcheck = line[: line.index("!")] else: - l = line - lcheck = l.lower() + lcheck = line + lcheck = lcheck.lower() x = c(lcheck) if x is not None: count += 1 @@ -37,14 +36,14 @@ def check_float(line): def check_pow(line): # Look for 3**5 - if re.search("[a-zA-Z0-9\)]\*\*[a-zA-Z0-9]", line): + if re.search(r"[a-zA-Z0-9\)]\*\*[a-zA-Z0-9]", line): return "Found ** use, use powX() instead" return None def check_real_op(line): # Lots of code has 1.+2. - checks = ["[0-9]\.\*", "[0-9]\.\+", "[0-9]\.\-", "[0-9]\.\/"] + checks = [r"[0-9]\.\*", r"[0-9]\.\+", r"[0-9]\.\-", r"[0-9]\.\/"] found = [] for c in checks: if re.search(c, line): @@ -57,7 +56,7 @@ def check_real_op(line): def check_real_exp(line): # Look for 1e+1, 1e-1, 1e1 if ( - re.search("[0-9][eE][+]?[-]?[0-9]", line) + re.search(r"[0-9][eE][+]?[-]?[0-9]", line) and "write" not in line and "format(" not in line ): @@ -69,10 +68,10 @@ def check_real_d(line): # Look for 1.5 but not 1.5d0 if "write" not in line and "format(" not in line: for i in re.split( - " |\+|\-|\=|\*|\/", line + r" |\+|\-|\=|\*|\/", line ): # Split up string into things approximately like a number if len(i) and re.search( - "\d+[.](?!.*[_Dd]).*", i + r"\d+[.](?!.*[_Dd]).*", i ): # test if missing double precision qualifier return "Missing D on float" return None @@ -84,13 +83,13 @@ def check_real(line): return "Declared real use real(dp) instead" return None + def check_dp(line): if "double precision" in line: return "Found double precision use real(dp) instead" return None - allchecks = [ check_float, check_pow, @@ -100,6 +99,7 @@ def check_dp(line): check_dp, ] + if __name__ == "__main__": files = sys.argv[1:] s = False diff --git a/linters/update_columns.py b/linters/update_columns.py index bcea6c7bd..2fec34fe4 100644 --- a/linters/update_columns.py +++ b/linters/update_columns.py @@ -3,9 +3,7 @@ import os import re import glob -import sys from collections.abc import MutableSet -from pathlib import Path MESA_DIR = os.environ["MESA_DIR"] @@ -44,7 +42,6 @@ def discard(self, value): def get_options(filename, regexp): """Return a set of MESA option names""" - r = regexp with open(os.path.join(MESA_DIR, filename)) as f: matches = regexp.finditer(f.read()) return CaseInsensitiveSet(m.group(1) for m in matches) @@ -72,9 +69,11 @@ def print_options(options): for o in sorted(options): print(f" {o}") -match_comments = re.compile("^[ \t]*!?[ ]?(\w+[ 0-9]*?)[ ^t]*(!.*)?$") -match_no_comment = re.compile("^[ \t]*(\w+[ 0-9]*?)[ ^t]*(!.*)?$") -match_uncomment = re.compile('(^[\s]*?)([!])(.*)') + +match_comments = re.compile(r"^[ \t]*!?[ ]?(\w+[ 0-9]*?)[ ^t]*(!.*)?$") +match_no_comment = re.compile(r"^[ \t]*(\w+[ 0-9]*?)[ ^t]*(!.*)?$") +match_uncomment = re.compile(r"(^[\s]*?)([!])(.*)") + def match_columns(filename, comments=True): # extract column names from history_columns.list @@ -88,12 +87,12 @@ def match_columns(filename, comments=True): if comments: regexp = match_comments else: - regexp = match_no_comment + regexp = match_no_comment return get_columns(filename, regexp) -def update(default, test_suite, special_cases = None, debug=False): +def update(default, test_suite, special_cases=None, debug=False): # Load default file: with open(default) as f: @@ -115,8 +114,8 @@ def update(default, test_suite, special_cases = None, debug=False): groups = match_uncomment.match(line) # We want the first ! before the option but not ! after the option if groups is not None: - if groups[2] == '!': - line = ''.join([groups[1],groups[3],'\n']) + if groups[2] == "!": + line = "".join([groups[1], groups[3], "\n"]) test_case.discard(match.group(1)) @@ -125,20 +124,19 @@ def update(default, test_suite, special_cases = None, debug=False): # Add back in things we may miss like burning_regions 40 if special_cases is not None and test_case: print(file=f) - print(' !## Extras',file=f) + print(" !## Extras", file=f) for case in special_cases: for c in test_case: if c.startswith(case): - print(f' {c}',file=f) + print(f" {c}", file=f) # Debug anything leftover if debug: if test_case: - print(file,test_case) + print(file, test_case) print() - def update_history(): """Run updates on history columns""" @@ -149,9 +147,9 @@ def update_history(): default = os.path.join(MESA_DIR, "star", "defaults", "history_columns.list") # Special case things that are name number - special_cases = set(['burning_regions','mixing_regions','mix_relr_regions', - 'burn_relr_regions']) - + special_cases = set( + ["burning_regions", "mixing_regions", "mix_relr_regions", "burn_relr_regions"] + ) update(default, files, special_cases) diff --git a/linters/update_ctrls.py b/linters/update_ctrls.py index b47ec2536..a86147a5f 100644 --- a/linters/update_ctrls.py +++ b/linters/update_ctrls.py @@ -1,13 +1,13 @@ #!/usr/bin/env python # This file is designed to handle moving controls from s% xx to s% ctrl %xx -# While this replicates alot of check_defaults.py we want this to be standalone +# While this replicates a lot of check_defaults.py we want this to be standalone # and only depend on the python stdlib. This way users can easily use it to port their # run_star_extras.f90 files without needing to worry about python packaging. # Usage: python update_ctrls.up file1.f90 file2.f90 .... -# Note this only works for s% (or s %) it does not work if you renamed the star_type varaible +# Note this only works for s% (or s %) it does not work if you renamed the star_type variable # to something other than s, for instance in the binary module. import os @@ -20,11 +20,13 @@ MESA_DIR = os.environ["MESA_DIR"] -ctrls_files = [ os.path.join("star_data","private","star_controls.inc"), - os.path.join("star_data","private","star_controls_dev.inc") - ] +ctrls_files = [ + os.path.join("star_data", "private", "star_controls.inc"), + os.path.join("star_data", "private", "star_controls_dev.inc"), +] + +CRTL_NAME = "s% ctrl% " -CRTL_NAME = 's% ctrl% ' # inspiration from https://stackoverflow.com/a/27531275 class CaseInsensitiveSet(MutableSet): @@ -51,12 +53,11 @@ def items(self): def add(self, value): if isinstance(value, CaseInsensitiveSet): - for k,v in value.items(): + for k, v in value.items(): self._values[self._fold(k)] = v else: self._values[self._fold(value)] = value - def discard(self, value): v = self._fold(value) if v in self._values: @@ -83,6 +84,7 @@ def get_columns(filename, regexp): matches.append(m.group(1)) return CaseInsensitiveSet(matches) + def get_defaults(filename): # extract column names from defaults file @@ -93,12 +95,13 @@ def get_defaults(filename): # and may or may not have a( ) # and may or may not have space before a = - regexp = "^[ \t]*[ ]?(\w+)(\(.*\))*[ ^t]*=" + regexp = r"^[ \t]*[ ]?(\w+)(\(.*\))*[ ^t]*=" return get_columns(filename, regexp) + def load_file(filename): - with open(os.path.join(MESA_DIR, filename),"r") as f: + with open(os.path.join(MESA_DIR, filename), "r") as f: lines = f.readlines() return lines @@ -109,33 +112,35 @@ def get_inc(filename): lines = load_file(filename) # Remove line continutaion characters - lines = [i.replace("&","").strip() for i in lines if i] + lines = [i.replace("&", "").strip() for i in lines if i] # Remove type defintion (i.e real(dp) :: x) leaves just x - # as well as anything that starstwith a comment or has a comment embeded in it - for idl,line in enumerate(lines): + # as well as anything that starts with a comment + # or has a comment embedded in it + for idl, line in enumerate(lines): if "::" in line: lines[idl] = line.split("::")[1].strip() - lines = [i.split(",") for i in lines if i] + lines = [i.split(",") for i in lines if i] # Flatten list of lists lines = functools.reduce(operator.iconcat, lines, []) # Remove array sizes from variables - lines = [line.split("(")[0] for line in lines if line] - + lines = [line.split("(")[0] for line in lines if line] + # Remove comments lines = [line.split("!")[0] for line in lines if line] - # Remove = x - lines = [line.split("=")[0] for line in lines if line] + # Remove = x + lines = [line.split("=")[0] for line in lines if line] # Remove remaining empty strings - lines = [line.strip() for line in lines if line] + lines = [line.strip() for line in lines if line] return CaseInsensitiveSet(lines) + # Load controls names cinc = get_inc(ctrls_files[0]) @@ -148,31 +153,32 @@ def update(filename): lines = load_file(filename) except (UnicodeDecodeError, IsADirectoryError): return - + " s[0 or more space] % [0 or more space] [1 or more character or number or _]" - # This wont match when s has been renamed - regex_all = "(s[ \t]?[a-zA-Z0-9_]?%[ \t]?[a-zA-Z0-9_]*)" + # This won't match when s has been renamed + regex_all = r"(s[ \t]?[a-zA-Z0-9_]?%[ \t]?[a-zA-Z0-9_]*)" " s [0 or more space] % [0 or more space] " - regex_s = 's[ \ta-zA-Z0-9_]?%[ \t]?' + regex_s = r"s[ \ta-zA-Z0-9_]?%[ \t]?" - r_all = re.compile(regex_all) - r_s = re.compile(regex_s) + # r_all = re.compile(regex_all) + # r_s = re.compile(regex_s) - for idl,line in enumerate(lines): + for idl, line in enumerate(lines): # Split on s% something - line_split = re.split(regex_all,line) - for idm,match in enumerate(line_split): + line_split = re.split(regex_all, line) + for idm, match in enumerate(line_split): # Remove the s% so we can check if the variable is a control - var = match.replace('s%','').strip() + var = match.replace("s%", "").strip() if var in cinc: # If it is a control then replace s% with CRTL_NAME - line_split[idm] = re.sub(regex_s,CRTL_NAME,match) - lines[idl] = ''.join(line_split) + line_split[idm] = re.sub(regex_s, CRTL_NAME, match) + lines[idl] = "".join(line_split) - with open(filename,'w') as f: + with open(filename, "w") as f: f.writelines(lines) + if __name__ == "__main__": for i in sys.argv[1:]: update(i) @@ -182,7 +188,7 @@ def update(filename): # python3 linters/update_ctrls.py star/test/src/* # python3 linters/update_ctrls.py star/work/src/* # python3 linters/update_ctrls.py star/job/* -# python3 linters/update_ctrls.py star/p*/*.f90 +# python3 linters/update_ctrls.py star/p*/*.f90 # python3 linters/update_ctrls.py star/test_suite/*/src/*.f90 # python3 linters/update_ctrls.py star/other/*.f90 # python3 linters/update_ctrls.py */test_suite/*/src/*.inc @@ -191,13 +197,13 @@ def update(filename): # python3 linters/update_ctrls.py binary/test/src/* # python3 linters/update_ctrls.py binary/work/src/* # python3 linters/update_ctrls.py binary/job/* -# python3 linters/update_ctrls.py binary/p*/*.f90 +# python3 linters/update_ctrls.py binary/p*/*.f90 # python3 linters/update_ctrls.py binary/test_suite/*/src/*.f90 # python3 linters/update_ctrls.py binary/other/*.f90 # python3 linters/update_ctrls.py astero/test/src/* # python3 linters/update_ctrls.py astero/work/src/* # python3 linters/update_ctrls.py astero/job/* -# python3 linters/update_ctrls.py astero/p*/*.f90 +# python3 linters/update_ctrls.py astero/p*/*.f90 # python3 linters/update_ctrls.py astero/test_suite/*/src/*.f90 # python3 linters/update_ctrls.py astero/other/*.f90 diff --git a/mtx/mkl_pardiso_src/mod_mkl_pardiso.f b/mtx/mkl_pardiso_src/mod_mkl_pardiso.f deleted file mode 100644 index b19d123ae..000000000 --- a/mtx/mkl_pardiso_src/mod_mkl_pardiso.f +++ /dev/null @@ -1,183 +0,0 @@ -! *********************************************************************** -! -! Copyright (C) 2010 Bill Paxton -! -! This file is part of MESA. -! -! MESA is free software; you can redistribute it and/or modify -! it under the terms of the GNU General Library Public License as published -! by the Free Software Foundation; either version 2 of the License, or -! (at your option) any later version. -! -! MESA 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 Library General Public License for more details. -! -! You should have received a copy of the GNU Library General Public License -! along with this software; if not, write to the Free Software -! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -! -! *********************************************************************** - - - module mod_mkl_pardiso - - implicit none - - integer, parameter :: num_pardiso_ipar_decsol = 64*3 - integer, parameter :: num_pardiso_rpar_decsol = 0 - - contains - - - logical function use_mkl_pardiso() - use_mkl_pardiso = .true. - end function use_mkl_pardiso - - - subroutine do_mkl_pardiso_work_sizes(n,nzmax,lrd,lid) - integer, intent(in) :: n,nzmax - integer, intent(out) :: lrd,lid - lid = num_pardiso_ipar_decsol - lrd = num_pardiso_rpar_decsol - end subroutine do_mkl_pardiso_work_sizes - - - subroutine do_mkl_pardiso(iop,n,nzmax,ia,ja,a,b,lrd,rpar_decsol,lid,ipar_decsol,ierr) - integer, intent(in) :: iop, n, nzmax, lrd, lid - integer, intent(inout) :: ia(n+1), ja(nzmax) - double precision, intent(inout) :: a(nzmax) - double precision, intent(inout) :: b(n) - double precision, intent(inout), target :: rpar_decsol(lrd) - integer, intent(inout), target :: ipar_decsol(lid) - integer, intent(out) :: ierr - call do_mkl_pardiso_nrhs(iop,1,n,nzmax,ia,ja,a,b,lrd,rpar_decsol,lid,ipar_decsol,ierr) - end subroutine do_mkl_pardiso - - - - subroutine do_mkl_pardiso_nrhs(iop,nrhs,n,nzmax,ia,ja,a,b,lrd,rpar_decsol,lid,ipar_decsol,ierr) - integer, intent(in) :: iop, nrhs, n, nzmax, lrd, lid - integer, intent(inout) :: ia(n+1), ja(nzmax) - double precision, intent(inout) :: a(nzmax) - double precision, intent(inout) :: b(n) - double precision, intent(inout), target :: rpar_decsol(lrd) - integer, intent(inout), target :: ipar_decsol(lid) - integer, intent(out) :: ierr - - integer, pointer :: pt(:) ! internal solver memory pointers - integer, pointer :: iparm(:) ! parameters for pardiso - integer :: mtype, phase, error, msglvl - integer :: i, idum - real(dp) :: ddum - real(dp), pointer :: x(:) - integer, parameter :: maxfct = 1, mnum = 1 - - logical, parameter :: dbg = .false. - - if (lid < 64*3) then - ierr = -1 - write(*,*) 'lid too small for mkl_pardiso_decsols', lid - return - end if - iparm => ipar_decsol(1:64) - pt => ipar_decsol(65:64*3) - - ierr = 0 - error = 0 ! initialize error flag - !msglvl = 1 ! print statistical information - msglvl = 0 ! no statistical information - mtype = 11 ! real unsymmetric - - if (iop == 0) then ! factor - ! initilize the internal solver memory pointer - pt(:) = 0 - ! set up pardiso control parameters - iparm(:) = 0 - iparm(1) = 1 ! no solver default - iparm(2) = 2 ! fill-in reordering from metis - iparm(3) = 4 ! use openmp - iparm(4) = 0 ! no iterative-direct algorithm - iparm(5) = 0 ! no user fill-in reducing permutation - iparm(6) = 0 ! =0 solution on the first n compoments of x - iparm(7) = 0 ! not in use - iparm(8) = 9 ! numbers of iterative refinement steps - iparm(9) = 0 ! not in use - iparm(10) = 13 ! perturbe the pivot elements with 1e-13 - iparm(11) = 1 ! use nonsymmetric permutation and scaling mps - iparm(12) = 0 ! not in use - iparm(13) = 1 ! maximum weighted matching algorithm is switched-on (default for non-symmetric) - iparm(14) = 0 ! output: number of perturbed pivots - iparm(15) = 0 ! not in use - iparm(16) = 0 ! not in use - iparm(17) = 0 ! not in use - iparm(18) = -1 ! output: number of nonzeros in the factor lu - iparm(19) = -1 ! output: mflops for lu factorization - iparm(20) = 0 ! output: numbers of cg iterations - ! reordering and symbolic factorization, this step also allocates - ! all memory that is necessary for the factorization - phase = 11 ! only reordering and symbolic factorization - if (dbg) write(*,*) 'call pardiso: phase', phase - call pardiso(pt, maxfct, mnum, mtype, phase, - > n, a, ia, ja, idum, nrhs, iparm, msglvl, ddum, ddum, error) - if (error .ne. 0) then - write(*,*) 'the following error was detected: ', error - call mesa_error(__FILE__,__LINE__) - end if - if (dbg) write(*,*) 'number of nonzeros in factors = ',iparm(18) - if (dbg) write(*,*) 'fill fraction = ',dble(iparm(18))/dble(n) - - ! factorization. - phase = 22 ! only factorization - if (dbg) write(*,*) 'call pardiso: phase', phase - call pardiso(pt, maxfct, mnum, mtype, phase, - > n, a, ia, ja, idum, nrhs, iparm, msglvl, ddum, ddum, error) - if (error .ne. 0) then - write(*,*) 'the following error was detected: ', error - call mesa_error(__FILE__,__LINE__) - endif - - else if (iop == 1) then ! solve - - ! back substitution and iterative refinement - iparm(8) = 2 ! max numbers of iterative refinement steps - phase = 33 ! only solve - allocate(x(n)) - if (dbg) write(*,*) 'call pardiso: phase, n', phase, n, nrhs - call pardiso(pt, maxfct, mnum, mtype, phase, - > n, a, ia, ja, idum, nrhs, iparm, msglvl, b, x, error) - do i=1,n - b(i) = x(i) - end do - deallocate(x) - if (error .ne. 0) then - write(*,*) 'the following error was detected: ', error - call mesa_error(__FILE__,__LINE__) - endif - - else if (iop == 2) then ! deallocate - phase = -1 ! release internal memory - if (dbg) write(*,*) 'call pardiso: phase', phase - call pardiso(pt, maxfct, mnum, mtype, phase, - > n, ddum, idum, idum, idum, nrhs, iparm, msglvl, ddum, ddum, error) - if (error .ne. 0) then - write(*,*) 'the following error was detected: ', error - call mesa_error(__FILE__,__LINE__) - endif - - else - - write(*,*) 'invalid iop for do_mkl_pardiso', iop - call mesa_error(__FILE__,__LINE__) - - end if - - if (dbg) write(*,*) 'finished pardiso' - - end subroutine do_mkl_pardiso_nrhs - - - end module mod_mkl_pardiso - - diff --git a/mtx/mkl_pardiso_src/mod_mkl_pardiso_stub.f b/mtx/mkl_pardiso_src/mod_mkl_pardiso_stub.f deleted file mode 100644 index 4009c3d1a..000000000 --- a/mtx/mkl_pardiso_src/mod_mkl_pardiso_stub.f +++ /dev/null @@ -1,54 +0,0 @@ - - module mod_mkl_pardiso - - implicit none - - integer, parameter :: num_pardiso_ipar_decsol = 0 - integer, parameter :: num_pardiso_rpar_decsol = 0 - - - contains - - - logical function use_mkl_pardiso() - use_mkl_pardiso = .false. - end function use_mkl_pardiso - - - subroutine do_mkl_pardiso_work_sizes(n,nzmax,lrd,lid) - integer, intent(in) :: n,nzmax - integer, intent(out) :: lrd,lid - lid = 0 - lrd = 0 - end subroutine do_mkl_pardiso_work_sizes - - - subroutine do_mkl_pardiso(iop,n,nzmax,ia,ja,sa,b,lrd,rpar_decsol,lid,ipar_decsol,ierr) - integer, intent(in) :: iop, n, nzmax, lrd, lid - integer, intent(inout) :: ia(n+1), ja(nzmax) - double precision, intent(inout) :: sa(nzmax) - double precision, intent(inout) :: b(n) - double precision, intent(inout), target :: rpar_decsol(lrd) - integer, intent(inout), target :: ipar_decsol(lid) - integer, intent(out) :: ierr - ierr = -1 - write(*,*) 'mkl pardiso not loaded' - call mesa_error(__FILE__,__LINE__) - end subroutine do_mkl_pardiso - - - subroutine do_mkl_pardiso_nrhs(iop,nrhs,n,nzmax,ia,ja,sa,b,lrd,rpar_decsol,lid,ipar_decsol,ierr) - integer, intent(in) :: iop, nrhs, n, nzmax, lrd, lid - integer, intent(inout) :: ia(n+1), ja(nzmax) - double precision, intent(inout) :: sa(nzmax) - double precision, intent(inout) :: b(n) - double precision, intent(inout), target :: rpar_decsol(lrd) - integer, intent(inout), target :: ipar_decsol(lid) - integer, intent(out) :: ierr - ierr = -1 - write(*,*) 'mkl pardiso not loaded' - call mesa_error(__FILE__,__LINE__) - end subroutine do_mkl_pardiso_nrhs - - - end module mod_mkl_pardiso diff --git a/mtx/private/DGBSVX_wrapper.f90 b/mtx/private/DGBSVX_wrapper.f90 index 3309590f2..0d51bcb2f 100644 --- a/mtx/private/DGBSVX_wrapper.f90 +++ b/mtx/private/DGBSVX_wrapper.f90 @@ -28,7 +28,7 @@ subroutine DGBSVX_banded_wrapper(matrix_size, n_upper_bands, n_lower_bands, band integer, intent(in) :: matrix_size, n_upper_bands, n_lower_bands ! Intermediates - integer counter, i, j, k, k1, k2 + integer :: i, j character(len=1) :: FACT, TRANS, EQUED integer :: NRHS, LDAB, LDAFB, LDB, LDX integer :: IWORK(matrix_size), IPIV(matrix_size) diff --git a/mtx/private/bcyclic.f90 b/mtx/private/bcyclic.f90 index f789d9473..e53aed033 100644 --- a/mtx/private/bcyclic.f90 +++ b/mtx/private/bcyclic.f90 @@ -59,8 +59,8 @@ subroutine bcyclic_factor ( & integer, pointer, intent(inout) :: ipar_decsol(:) ! (lid) integer, intent(out) :: ierr - integer, pointer :: iptr(:,:), nslevel(:), ipivot(:) - integer :: ncycle, nstemp, maxlevels, nlevel, i, j, k + integer, pointer :: nslevel(:), ipivot(:) + integer :: ncycle, nstemp, maxlevels, nlevel logical :: have_odd_storage real(dp), pointer, dimension(:,:) :: dmat real(dp) :: dlamch, sfmin @@ -183,7 +183,7 @@ subroutine bcyclic_solve ( & integer, pointer, intent(inout) :: ipar_decsol(:) ! (lid) integer, intent(out) :: ierr - integer, pointer :: iptr(:,:), nslevel(:), ipivot(:) + integer, pointer :: nslevel(:), ipivot(:) integer :: ncycle, nstemp, maxlevels, nlevel, nvar2 real(dp), pointer, dimension(:,:) :: dmat, bptr2 @@ -300,8 +300,8 @@ subroutine cycle_onestep( & real(dp), pointer, dimension(:,:) :: dmat, umat, lmat, umat0, lmat0 real(dp), pointer, dimension(:,:) :: lnext, unext, lprev, uprev real(dp), pointer :: mat1(:) - integer :: i, j, shift, min_sz, new_sz, shift1, shift2, nvar2, & - ns, ierr_loc, nmin, kcount, k, ii, jj, kk + integer :: i, shift, min_sz, new_sz, shift1, shift2, nvar2, & + ns, ierr_loc, nmin, kcount, k real(dp) :: dlamch, sfmin include 'formats' @@ -315,7 +315,7 @@ subroutine cycle_onestep( & if (odd_storage(nlevel)% ul_size < min_sz) then if (odd_storage(nlevel)% ul_size > 0) & deallocate(odd_storage(nlevel)% umat1, odd_storage(nlevel)% lmat1) - new_sz = min_sz*1.1 + 100 + new_sz = FLOOR(min_sz*1.1) + 100 odd_storage(nlevel)% ul_size = new_sz allocate (odd_storage(nlevel)% umat1(new_sz), & odd_storage(nlevel)% lmat1(new_sz), stat=ierr) @@ -396,7 +396,7 @@ subroutine cycle_onestep( & nmin = 1 !$omp parallel do schedule(static,3) & !$omp private(i,ns,shift2,dmat,umat,lmat,lnext,unext,lprev,uprev,kcount,shift,umat0,lmat0,k) - do i= 1, 3*(1+(nblk-nmin)/2) + do i = 1, 3*(1+(nblk-nmin)/2) ns = 2*((i-1)/3) + nmin k = ncycle*(ns-1) + 1 @@ -464,7 +464,7 @@ subroutine cycle_rhs( & integer, pointer, intent(in) :: ipivot1(:) integer, intent(out) :: ierr - integer :: k, ns, ierr_loc, nmin, kcount, shift, i, shift1, shift2, nvar2 + integer :: k, ns, ierr_loc, nmin, kcount, shift, shift1, shift2, nvar2 integer, pointer :: ipivot(:) real(dp), pointer, dimension(:,:) :: dmat, umat, lmat, bptr2 real(dp), pointer, dimension(:) :: bprev, bnext, bptr @@ -548,8 +548,7 @@ subroutine cycle_solve( & real(dp), pointer, intent(inout) :: brhs1(:) real(dp), pointer :: umat(:,:), lmat(:,:), bprev(:), bnext(:), bptr(:) - real(dp), pointer, dimension(:) :: bprevr, bnextr - integer :: shift1, shift2, nvar2, ns, ierr, nmin + integer :: shift1, shift2, nvar2, ns, nmin nvar2 = nvar*nvar nmin = 2 diff --git a/mtx/private/mtx_support.f90 b/mtx/private/mtx_support.f90 index 70997dc29..41fdf71a0 100644 --- a/mtx/private/mtx_support.f90 +++ b/mtx/private/mtx_support.f90 @@ -827,7 +827,7 @@ subroutine do_multiply_xa(n, A1, x, b) real(dp), pointer, intent(in) :: A1(:) ! =(n, n) real(dp), pointer, intent(in) :: x(:) ! (n) real(dp), pointer, intent(inout) :: b(:) ! (n) - integer :: i, j + integer :: j real(dp), pointer :: A(:,:) ! (n, n) A(1:n,1:n) => A1(1:n*n) do j = 1, n @@ -842,7 +842,7 @@ subroutine do_quad_multiply_xa(n, A1, x, b) real(qp), pointer, intent(in) :: A1(:) ! =(n, n) real(qp), pointer, intent(in) :: x(:) ! (n) real(qp), pointer, intent(inout) :: b(:) ! (n) - integer :: i, j + integer :: j real(qp), pointer :: A(:,:) ! (n, n) A(1:n,1:n) => A1(1:n*n) do j = 1, n @@ -858,7 +858,7 @@ subroutine do_multiply_xa_plus_c(n, A1, x, c, b) real(dp), pointer, intent(in) :: x(:) ! (n) real(dp), pointer, intent(in) :: c(:) ! (n) real(dp), pointer, intent(inout) :: b(:) ! (n) - integer :: i, j + integer :: j real(dp), pointer :: A(:,:) ! (n,n) A(1:n,1:n) => A1(1:n*n) do j = 1, n @@ -874,7 +874,7 @@ subroutine do_quad_multiply_xa_plus_c(n, A1, x, c, b) real(qp), pointer, intent(in) :: x(:) ! (n) real(qp), pointer, intent(in) :: c(:) ! (n) real(qp), pointer, intent(inout) :: b(:) ! (n) - integer :: i, j + integer :: j real(qp), pointer :: A(:,:) ! (n, n) A(1:n,1:n) => A1(1:n*n) do j = 1, n @@ -1073,7 +1073,7 @@ subroutine read_hbcode1(iounit, nrow, ncol, nnzero, values, rowind, colptr, ierr REAL(dp), pointer :: VALUES (:) integer, intent(out) :: ierr - integer i + integer :: i ierr = 0 READ (iounit, 1000, iostat=ierr ) TITLE , KEY , & TOTCRD, PTRCRD, INDCRD, VALCRD, RHSCRD, & @@ -1119,7 +1119,7 @@ subroutine read_hbcode1_quad(iounit, nrow, ncol, nnzero, values, rowind, colptr, REAL(qp), pointer :: VALUES (:) integer, intent(out) :: ierr - integer i + integer :: i ierr = 0 READ (iounit, 1000, iostat=ierr ) TITLE , KEY , & TOTCRD, PTRCRD, INDCRD, VALCRD, RHSCRD, & @@ -1164,7 +1164,7 @@ subroutine write_hbcode1(iounit, nrow, ncol, nnzero, values, rowind, colptr, ier REAL(dp) VALUES (*) - integer i + integer :: i ierr = 0 diff --git a/mtx/private/my_lapack95.F90 b/mtx/private/my_lapack95.F90 index 4aa509512..f9ece650d 100644 --- a/mtx/private/my_lapack95.F90 +++ b/mtx/private/my_lapack95.F90 @@ -66,7 +66,7 @@ end subroutine my_gemv subroutine my_gemv_mv(m,n,a,x,b,z,y) ! y = y - a*x - b*z - integer lda,m,n + integer m, n real(fltp) :: a(:,:), b(:,:) real(fltp) :: x(:), z(:), y(:) real(fltp) :: tmp_x, tmp_z @@ -118,7 +118,7 @@ end subroutine my_gemv_p1 subroutine my_gemv_p_mv(m,n,a,x,b,z,y) ! y = y + a*x + b*z - integer lda,m,n + integer m, n real(fltp) :: a(:,:), b(:,:) real(fltp) :: x(:), z(:), y(:) real(fltp) :: tmp_x, tmp_z @@ -723,7 +723,7 @@ end subroutine my_laswp subroutine my_laswp_4_by_1( a, lda, ipiv ) ! n == 1, k1 == 1, k2 == 4, incx == 1 - integer :: incx, k1, lda + integer :: lda integer :: ipiv(:) real(fltp) :: a(:,:) ! a( lda, * ) integer :: ip @@ -758,7 +758,7 @@ end subroutine my_laswp_4_by_1 subroutine my_laswp_5_by_1( a, lda, ipiv ) ! n == 1, k1 == 1, k2 == 5, incx == 1 - integer :: incx, k1, lda + integer :: lda integer :: ipiv(:) real(fltp) :: a(:,:) ! a( lda, * ) integer :: ip @@ -972,8 +972,7 @@ subroutine my_getrs( n, nrhs, a, lda, ipiv, b, ldb, info ) integer, pointer :: ipiv(:) real(fltp), pointer :: a(:,:), b(:,:) ! a( lda, * ), b( ldb, * ) real(fltp), parameter :: one=1, zero=0 - real(fltp) :: temp - integer :: i,j,k, n32, ix, ip + integer :: i, j, k info = 0 if (nrhs == 1) then @@ -1025,7 +1024,6 @@ subroutine my_getrs_5_by_5( a, lda, ipiv, b, ldb, info ) real(fltp), pointer :: a(:,:), b(:,:) ! a( lda, * ), b( ldb, * ) real(fltp), parameter :: zero=0 - integer :: j info = 0 !call my_laswp(5, b, ldb, 1, 5, ipiv, 1 ) @@ -1332,8 +1330,7 @@ subroutine my_getrs_dbg( n, nrhs, a, lda, ipiv, b, ldb, info ) integer, pointer :: ipiv(:) real(fltp), pointer :: a(:,:), b(:,:) ! a( lda, * ), b( ldb, * ) real(fltp), parameter :: one=1, zero=0 - real(fltp) :: temp - integer :: i,j,k, n32, ix, ip + integer :: i, j, k info = 0 call my_laswp_dbg(nrhs, b, ldb, 1, n, ipiv, 1 ) !call dtrsm( 'left', 'lower', 'no transpose', 'unit', n, nrhs, one, a, lda, b, ldb ) diff --git a/mtx/public/mtx_dble_decsol.dek b/mtx/public/mtx_dble_decsol.dek index 025cb1f1b..220af9254 100644 --- a/mtx/public/mtx_dble_decsol.dek +++ b/mtx/public/mtx_dble_decsol.dek @@ -16,7 +16,6 @@ real(dp), intent(inout), pointer :: rpar_decsol(:) ! (lrd) integer, intent(inout), pointer :: ipar_decsol(:) ! (lid) integer, intent(out) :: ier - integer :: i, j, iounit include 'formats' ier = 0 if (iop == 0) then ! factor @@ -118,7 +117,6 @@ complex(dp), pointer :: a(:,:) integer :: i, j - character (len=100) :: message i=1 a(1:ndim,1:n) => cpar_decsol(i:i+n*ndim-1) @@ -130,7 +128,7 @@ do j=1,n do i=1,ndim - a(i,j) = cmplx(ar(i,j),ai(i,j)) + a(i,j) = cmplx(ar(i,j),ai(i,j), kind=dp) end do end do call zgetrf(n, n, a, ndim, ip, ier) @@ -159,7 +157,6 @@ complex(dp), pointer :: a(:,:) integer :: i, j - character (len=100) :: message i=1 a(1:ndim,1:n) => cpar_decsol(i:i+n*ndim-1) @@ -171,7 +168,7 @@ do j=1,n do i=1,ndim - a(i,j) = cmplx(ar(i,j),ai(i,j)) + a(i,j) = cmplx(ar(i,j),ai(i,j), kind=dp) end do end do call zgbtrf(n, n, ml, mu, a, ndim, ip, ier) @@ -199,7 +196,6 @@ complex(dp), pointer :: a(:,:), b(:) integer :: i, j - character (len=100) :: message i = 1 a(1:ndim,1:n) => cpar_decsol(i:i+n*ndim-1) @@ -212,9 +208,9 @@ do j=1,n do i=1,ndim - a(i,j) = cmplx(ar(i,j),ai(i,j)) + a(i,j) = cmplx(ar(i,j),ai(i,j), kind=dp) end do - b(j) = cmplx(br(j),bi(j)) + b(j) = cmplx(br(j),bi(j), kind=dp) end do call zgetrs('N', n, 1, a, ndim, ip, b, n, ier) do j=1,n @@ -241,7 +237,6 @@ complex(dp), pointer :: a(:,:), b(:) integer :: i, j - character (len=100) :: message i = 1 a(1:ndim,1:n) => cpar_decsol(i:i+n*ndim-1) @@ -254,9 +249,9 @@ do j=1,n do i=1,ndim - a(i,j) = cmplx(ar(i,j),ai(i,j)) + a(i,j) = cmplx(ar(i,j),ai(i,j), kind=dp) end do - b(j) = cmplx(br(j),bi(j)) + b(j) = cmplx(br(j),bi(j), kind=dp) end do call zgbtrs('N', n, ml, mu, 1, a, ndim, ip, b, n, ier) do j=1,n diff --git a/mtx/public/mtx_solve_routines.inc b/mtx/public/mtx_solve_routines.inc index ef48e64a6..5e574fbb9 100644 --- a/mtx/public/mtx_solve_routines.inc +++ b/mtx/public/mtx_solve_routines.inc @@ -1,11 +1,13 @@ subroutine my_getf2(m, a, lda, ipiv, info) - integer :: info, lda, m - integer :: ipiv(:) - real(dp) :: a(:,:),aj(m) - real(dp), parameter :: one=1, zero=0 - integer :: i, j, jp, ii, jj, n, mm + integer, intent(in) :: m, lda + integer, intent(out) :: info + integer, intent(out) :: ipiv(:) + real(dp), intent(inout) :: a(:,:) + real(dp) :: aj(m) + real(dp), parameter :: one=1.0_dp, zero=0.0_dp + integer :: i, j, jp, jj real(dp) :: tmp, da, ajjj do j = 1, m info = 0 @@ -36,8 +38,8 @@ do jj = j+1, m ajjj = a(j,jj) !$omp simd - do ii = j+1, m - a(ii,jj) = a(ii,jj) - aj(ii)*ajjj + do i = j+1, m + a(i,jj) = a(i,jj) - aj(i)*ajjj end do end do end if @@ -46,12 +48,12 @@ subroutine my_getf2_n4(a, ipiv, info) - integer :: info - integer :: ipiv(:) - real(dp) :: a(:,:) + integer, intent(out) :: info + integer, intent(out) :: ipiv(4) + real(dp), intent(inout) :: a(4,4) real(dp), parameter :: one=1, zero=0 integer, parameter :: m=4, lda=4 - integer :: i, j, jp, ii, jj, n, mm + integer :: i, j, jp, jj real(dp) :: tmp, da do j = 1, m info = 0 @@ -80,8 +82,8 @@ !call dger( m-j, m-j, -one, a( j+1, j ), 1, a( j, j+1 ), lda, a( j+1, j+1 ), lda ) do jj = j+1, m !$omp simd - do ii = j+1, m - a(ii,jj) = a(ii,jj) - a(ii,j)*a(j,jj) + do i = j+1, m + a(i,jj) = a(i,jj) - a(i,j)*a(j,jj) end do end do end if @@ -90,12 +92,12 @@ subroutine my_getf2_n5(a, ipiv, info) - integer :: info - integer :: ipiv(:) - real(dp) :: a(:,:) + integer, intent(out) :: info + integer, intent(out) :: ipiv(5) + real(dp), intent(inout) :: a(5,5) real(dp), parameter :: one=1, zero=0 integer, parameter :: m=5, lda=5 - integer :: i, j, jp, ii, jj, n, mm + integer :: i, j, jp, jj real(dp) :: tmp, da do j = 1, m info = 0 @@ -124,8 +126,8 @@ !call dger( m-j, m-j, -one, a( j+1, j ), 1, a( j, j+1 ), lda, a( j+1, j+1 ), lda ) do jj = j+1, m !$omp simd - do ii = j+1, m - a(ii,jj) = a(ii,jj) - a(ii,j)*a(j,jj) + do i = j+1, m + a(i,jj) = a(i,jj) - a(i,j)*a(j,jj) end do end do end if @@ -138,8 +140,7 @@ integer :: ipiv(:) real(dp) :: a(:,:), b(:,:) ! a( lda, * ), b( ldb, * ) real(dp), parameter :: one=1, zero=0 - real(dp) :: temp - integer :: i,j,k, n32, ix, ip + integer :: i, j, k info = 0 call my_laswp(nrhs, b, ldb, 1, n, ipiv, 1 ) !call dtrsm( 'left', 'lower', 'no transpose', 'unit', n, nrhs, one, a, lda, b, ldb ) @@ -169,11 +170,11 @@ end subroutine my_getrs - subroutine my_laswp( n, a, lda, k1, k2, ipiv, incx ) + subroutine my_laswp( n, a, lda, k1, k2, ipiv, incx ) integer :: incx, k1, k2, lda, n integer :: ipiv(:) real(dp) :: a(:,:) ! a( lda, * ) - integer :: i, i1, i2, inc, ip, ix, ix0, j, k, n32 + integer :: i, i1, i2, inc, ip, ix, ix0, k real(dp) :: temp ! interchange row i with row ipiv(i) for each of rows k1 through k2. if( incx.gt.0 ) then @@ -194,7 +195,7 @@ ip = ipiv( ix ) if( ip.ne.i ) then !$omp simd private(temp) - do k = 1, n + do k = 1,n temp = a( i, k ) a( i, k ) = a( ip, k ) a( ip, k ) = temp @@ -206,15 +207,16 @@ subroutine my_getrs1( n, a, lda, ipiv, b, ldb, info ) - integer :: info, lda, ldb, n - integer :: ipiv(:) - real(dp) :: a(:,:), b(:) + integer, intent(out) :: info + integer, intent(in) :: ipiv(:), lda, ldb, n + real(dp), intent(in) :: a(:,:) + real(dp), intent(inout) :: b(:) real(dp), parameter :: one=1, zero=0 real(dp) :: temp - integer :: i,k + integer :: i, k info = 0 !$omp simd private(temp) - do i = 1, n + do i = 1,n temp = b(i) b(i) = b(ipiv(i)) b(ipiv(i)) = temp @@ -240,15 +242,17 @@ subroutine my_getrs1_n4( a, ipiv, b, info ) - integer :: info - integer :: ipiv(:) - real(dp) :: a(:,:), b(:) + integer, intent(out) :: info + integer, intent(in) :: ipiv(4) + real(dp), intent(in) :: a(4,4) + real(dp), intent(inout) :: b(4) real(dp), parameter :: one=1, zero=0 integer, parameter :: n = 4 real(dp) :: temp - integer :: i,k + integer :: i, k info = 0 - do i = 1, n + !$omp simd private(temp) + do i = 1,n temp = b(i) b(i) = b(ipiv(i)) b(ipiv(i)) = temp @@ -274,15 +278,17 @@ subroutine my_getrs1_n5( a, ipiv, b, info ) - integer :: info - integer :: ipiv(:) - real(dp) :: a(:,:), b(:) + integer, intent(out) :: info + integer, intent(in) :: ipiv(5) + real(dp), intent(in) :: a(5,5) + real(dp), intent(inout) :: b(5) real(dp), parameter :: one=1, zero=0 integer, parameter :: n = 5 real(dp) :: temp - integer :: i,k + integer :: i, k info = 0 - do i = 1, n + !$omp simd private(temp) + do i = 1,n temp = b(i) b(i) = b(ipiv(i)) b(ipiv(i)) = temp @@ -310,7 +316,6 @@ subroutine my_gemm0_p1(m,n,k,a,lda,b,ldb,c,ldc) ! c := -a*b integer, intent(in) :: k,lda,ldb,ldc,m,n real(dp), dimension(:,:) :: a, b, c ! a(lda,*),b(ldb,*),c(ldc,*) - integer :: j, i real(dp), parameter :: zero=0 include 'formats' ! transa = 'n' @@ -407,7 +412,7 @@ subroutine my_gemv_mv(m,n,a,x,b,z,y) ! y = y - a*x - b*z - integer lda,m,n + integer m,n real(dp) :: a(:,:), b(:,:) real(dp) :: x(:), z(:), y(:) real(dp) :: tmp_x, tmp_z @@ -463,7 +468,7 @@ subroutine my_gemv_p_mv(m,n,a,x,b,z,y) ! y = y + a*x + b*z - integer lda,m,n + integer m,n real(dp) :: a(:,:), b(:,:) real(dp) :: x(:), z(:), y(:) real(dp) :: tmp_x, tmp_z @@ -522,8 +527,8 @@ integer :: info, lda, m real(dp) :: a(:,:) real(dp), parameter :: one=1, zero=0 - integer :: i, j, ii, jj, n, mm - real(dp) :: tmp, da + integer :: i, j, jj + real(dp) :: da do j = 1, m info = 0 if( a( j, j ).ne.zero ) then @@ -540,8 +545,8 @@ if( j.lt.m ) then do jj = j+1, m !$omp simd - do ii = j+1, m - a(ii,jj) = a(ii,jj) - a(ii,j)*a(j,jj) + do i = j+1, m + a(i,jj) = a(i,jj) - a(i,j)*a(j,jj) end do end do end if @@ -553,8 +558,7 @@ integer :: info, lda, ldb, n, nrhs real(dp) :: a(:,:), b(:,:) ! a( lda, * ), b( ldb, * ) real(dp), parameter :: one=1, zero=0 - real(dp) :: temp - integer :: i,j,k, n32, ix, ip + integer :: i,j,k info = 0 do j = 1,nrhs do k = 1,n @@ -584,7 +588,6 @@ integer :: info, lda, ldb, n real(dp) :: a(:,:), b(:) real(dp), parameter :: one=1, zero=0 - real(dp) :: temp integer :: i,k info = 0 do k = 1,n diff --git a/mtx/test/SHERMAN5.COO b/mtx/test/SHERMAN5.COO deleted file mode 100644 index 3606ea232..000000000 --- a/mtx/test/SHERMAN5.COO +++ /dev/null @@ -1,20795 +0,0 @@ -% - 3312 3312 20793 - 0 0 1.000000 - 1 1 1.000000 - 2 2 1.000000 - 3 3 1.000000 - 4 4 1.000000 - 5 5 1.000000 - 6 6 1.000000 - 7 7 1.000000 - 8 8 1.000000 - 9 9 1.000000 - 10 10 1.000000 - 11 11 1.000000 - 12 12 1.000000 - 13 13 1.000000 - 14 14 1.000000 - 15 15 1.000000 - 16 16 1.000000 - 17 17 1.000000 - 18 18 1.000000 - 19 19 1.000000 - 20 20 1.000000 - 21 21 1.000000 - 22 22 1.000000 - 23 23 1.000000 - 24 24 1.000000 - 25 25 1.000000 - 26 26 1.000000 - 27 27 1.000000 - 28 28 1.000000 - 29 29 1.000000 - 30 30 1.000000 - 31 31 1.000000 - 32 32 1.000000 - 33 33 1.000000 - 34 34 1.000000 - 35 35 1.000000 - 36 36 1.000000 - 37 37 1.000000 - 38 38 1.000000 - 39 39 1.000000 - 40 40 1.000000 - 41 41 1.000000 - 42 42 1.000000 - 43 43 1.000000 - 44 44 1.000000 - 45 45 1.000000 - 46 46 1.000000 - 47 47 1.000000 - 48 48 1.000000 - 49 49 1.000000 - 50 50 1.000000 - 51 51 1.000000 - 52 52 1.000000 - 53 53 1.000000 - 54 54 1.000000 - 55 55 1.000000 - 56 56 1.000000 - 57 57 1.000000 - 58 58 1.000000 - 59 59 1.000000 - 60 60 1.000000 - 61 61 1.000000 - 62 62 1.000000 - 63 63 1.000000 - 64 64 1.000000 - 65 65 1.000000 - 66 66 1.000000 - 67 67 1.000000 - 68 68 1.000000 - 69 69 1.000000 - 70 70 1.000000 - 71 71 1.000000 - 72 72 1.000000 - 73 73 1.000000 - 74 74 1.000000 - 75 75 1.000000 - 76 76 1.000000 - 77 77 1.000000 - 78 78 1.000000 - 79 79 1.000000 - 80 80 1.000000 - 81 81 1.000000 - 82 82 1.000000 - 83 83 1.000000 - 84 84 1.000000 - 85 85 1.000000 - 86 86 1.000000 - 87 87 1.000000 - 88 88 1.000000 - 89 89 1.000000 - 90 90 1.000000 - 91 91 1.000000 - 92 92 1.000000 - 93 93 1.000000 - 94 94 1.000000 - 95 95 1.000000 - 96 96 1.000000 - 97 97 1.000000 - 98 98 1.000000 - 99 99 1.000000 - 100 100 1.000000 - 101 101 1.000000 - 102 102 1.000000 - 103 103 1.000000 - 104 104 1.000000 - 105 105 1.000000 - 106 106 1.000000 - 107 107 1.000000 - 108 108 1.000000 - 109 109 1.000000 - 110 110 1.000000 - 111 111 582.315010 - 111 112 -356.631800 - 111 113 -602.850390 - 111 114 -1.699825 - 111 115 1.421529 - 111 116 2.402950 - 111 159 -9.503341 - 112 112 -88.662401 - 112 113 75.193603 - 112 116 -0.239244 - 113 111 0.524924 - 113 112 4.332326 - 113 113 7.323361 - 113 114 -0.275505 - 113 115 -1.909477 - 113 116 -3.227777 - 113 159 -0.168072 - 113 160 -2.413004 - 113 161 -4.078942 - 114 111 -2.020336 - 114 114 583.726240 - 114 115 -357.315190 - 114 116 -604.005140 - 114 162 -9.352778 - 115 115 -82.875303 - 115 116 70.151506 - 116 111 -0.275505 - 116 112 -1.909477 - 116 113 -3.227777 - 116 114 0.631241 - 116 115 3.818367 - 116 116 6.454563 - 116 162 -0.274064 - 116 163 -1.899689 - 116 164 -3.211232 - 117 117 1.000000 - 118 118 1.000000 - 119 119 1.000000 - 120 120 1.000000 - 121 121 1.000000 - 122 122 1.000000 - 123 123 538.324420 - 123 124 -330.894890 - 123 125 -559.344730 - 123 126 -1.398013 - 123 127 1.385140 - 123 128 2.341438 - 123 171 -10.275334 - 124 124 -74.442006 - 124 125 63.483385 - 124 128 -0.260478 - 125 123 0.537820 - 125 124 3.790360 - 125 125 6.407222 - 125 126 -0.155175 - 125 127 -2.125118 - 125 128 -3.592297 - 125 171 -0.301098 - 125 172 -1.656978 - 125 173 -2.800956 - 126 123 -0.637335 - 126 126 501.981760 - 126 127 -312.884400 - 126 128 -528.899400 - 126 129 -1.410730 - 126 130 4.368932 - 126 131 7.385242 - 126 174 -5.272018 - 127 127 -75.938657 - 127 128 65.540651 - 127 131 -0.932014 - 128 123 -0.155175 - 128 124 -2.125118 - 128 125 -3.592297 - 128 126 0.476894 - 128 127 6.617771 - 128 128 11.186675 - 128 129 -0.086217 - 128 130 -2.368262 - 128 131 -4.003311 - 128 174 -0.154486 - 128 175 -2.115960 - 128 176 -3.576816 - 129 126 -0.632247 - 129 129 465.862280 - 129 130 -294.078520 - 129 131 -497.110330 - 129 132 -1.401070 - 129 133 8.390147 - 129 134 14.182692 - 129 177 -4.796889 - 130 130 -74.441522 - 130 131 65.294128 - 130 134 -1.869240 - 131 126 -0.086217 - 131 127 -2.368262 - 131 128 -4.003311 - 131 129 0.293833 - 131 130 7.232501 - 131 131 12.225815 - 131 132 -0.042128 - 131 133 -2.525359 - 131 134 -4.268863 - 131 177 -0.084836 - 131 178 -2.330615 - 131 179 -3.939671 - 132 129 -0.380131 - 132 132 420.147670 - 132 133 -273.866150 - 132 134 -462.942920 - 132 135 -1.120559 - 132 136 7.390262 - 132 137 12.492498 - 132 180 -2.343169 - 132 1236 -2.599414 - 132 1237 10.350072 - 132 1238 17.495750 - 133 133 -70.163194 - 133 134 63.568717 - 133 137 -1.677661 - 133 1238 -1.841669 - 134 129 -0.042128 - 134 130 -2.525359 - 134 131 -4.268863 - 134 132 0.286647 - 134 133 8.404594 - 134 134 14.207117 - 134 135 -0.028088 - 134 136 -2.477089 - 134 137 -4.187271 - 134 180 -0.041440 - 134 181 -2.484443 - 134 182 -4.199699 - 134 1236 -0.094695 - 134 1237 -0.909913 - 134 1238 -1.538115 - 135 132 -0.450436 - 135 135 396.056260 - 135 136 -259.653660 - 135 137 -438.918540 - 135 138 -0.810894 - 135 139 5.690333 - 135 140 9.618929 - 135 183 -1.580018 - 135 1239 -2.030441 - 135 1240 11.063571 - 135 1241 18.701860 - 136 136 -67.508510 - 136 137 61.392103 - 136 140 -1.356962 - 136 1241 -2.218537 - 137 132 -0.028088 - 137 133 -2.477089 - 137 134 -4.187271 - 137 135 0.212898 - 137 136 8.612924 - 137 137 14.559283 - 137 138 -0.019132 - 137 139 -2.453026 - 137 140 -4.146592 - 137 183 -0.027944 - 137 184 -2.464650 - 137 185 -4.166244 - 137 1239 -0.057589 - 137 1240 -1.210663 - 137 1241 -2.046506 - 138 135 -0.432568 - 138 138 371.806670 - 138 139 -242.255770 - 138 140 -409.508770 - 138 141 -0.583798 - 138 142 3.444575 - 138 143 5.822710 - 138 186 -1.797449 - 138 1242 -1.579838 - 138 1243 10.271379 - 138 1244 17.362727 - 139 139 -64.514006 - 139 140 58.423373 - 139 143 -0.831536 - 139 1244 -2.245782 - 140 135 -0.019132 - 140 136 -2.453026 - 140 137 -4.146592 - 140 138 0.167902 - 140 139 8.765548 - 140 140 14.817273 - 140 141 -0.012197 - 140 142 -2.425760 - 140 143 -4.100505 - 140 186 -0.018759 - 140 187 -2.405538 - 140 188 -4.066317 - 140 1242 -0.037800 - 140 1243 -1.474060 - 140 1244 -2.491750 - 141 138 -0.275762 - 141 141 347.699300 - 141 142 -225.070850 - 141 143 -380.459760 - 141 189 -1.144882 - 141 1245 -1.244929 - 141 1246 9.960731 - 141 1247 16.837620 - 142 142 -61.460330 - 142 143 55.129317 - 142 1247 -2.290819 - 143 138 -0.012197 - 143 139 -2.425760 - 143 140 -4.100505 - 143 141 0.127852 - 143 142 6.564631 - 143 143 11.096852 - 143 189 -0.011949 - 143 190 -2.376726 - 143 191 -4.017618 - 143 1245 -0.023820 - 143 1246 -1.755319 - 143 1247 -2.967192 - 144 144 1.000000 - 145 145 1.000000 - 146 146 1.000000 - 147 147 1.000000 - 148 148 1.000000 - 149 149 1.000000 - 150 150 1.000000 - 151 151 1.000000 - 152 152 1.000000 - 153 153 1.000000 - 154 154 1.000000 - 155 155 1.000000 - 156 156 1.000000 - 157 157 1.000000 - 158 158 1.000000 - 159 111 -5.625223 - 159 112 26.312807 - 159 113 44.479169 - 159 159 587.156400 - 159 160 -364.039640 - 159 161 -615.372610 - 159 162 -0.383105 - 159 207 -1.071063 - 159 1263 -0.943418 - 159 1264 7.787189 - 159 1265 13.163464 - 160 113 -5.018385 - 160 160 -104.203570 - 160 161 90.595331 - 160 1265 -1.764236 - 161 111 -0.168072 - 161 112 -2.413004 - 161 113 -4.078942 - 161 159 0.207687 - 161 160 11.702675 - 161 161 19.782202 - 161 162 -0.011226 - 161 163 -4.128844 - 161 164 -6.979397 - 161 207 -0.011178 - 161 208 -4.111735 - 161 209 -6.950478 - 161 1263 -0.015589 - 161 1264 -1.037506 - 161 1265 -1.753800 - 162 114 -7.351602 - 162 115 25.567757 - 162 116 43.219704 - 162 159 -0.662631 - 162 160 1.011229 - 162 161 1.709382 - 162 162 588.775170 - 162 163 -362.752100 - 162 164 -613.195720 - 162 165 -0.692613 - 162 210 -2.181488 - 162 1266 -1.367922 - 162 1267 7.241435 - 162 1268 12.240915 - 163 116 -4.303068 - 163 161 -0.248088 - 163 163 -101.865610 - 163 164 88.189741 - 163 1268 -1.474653 - 164 114 -0.274064 - 164 115 -1.899689 - 164 116 -3.211232 - 164 159 -0.011226 - 164 160 -4.128844 - 164 161 -6.979397 - 164 162 0.375837 - 164 163 14.544988 - 164 164 24.586836 - 164 165 -0.028606 - 164 166 -3.844660 - 164 167 -6.499008 - 164 210 -0.022767 - 164 211 -3.823585 - 164 212 -6.463384 - 164 1266 -0.037421 - 164 1267 -0.836888 - 164 1268 -1.414675 - 165 162 -0.976213 - 165 163 0.720350 - 165 164 1.217678 - 165 165 579.642800 - 165 166 -360.805590 - 165 167 -609.905760 - 165 168 -0.749369 - 165 169 1.651997 - 165 170 2.792533 - 165 213 -2.727542 - 165 1269 -1.530755 - 165 1270 7.358764 - 165 1271 12.439255 - 166 164 -0.170634 - 166 166 -92.549851 - 166 167 101.138490 - 166 170 -0.394662 - 166 1271 -1.468541 - 167 162 -0.028606 - 167 163 -3.844660 - 167 164 -6.499008 - 167 165 0.212361 - 167 166 12.072043 - 167 167 20.406572 - 167 168 -0.028598 - 167 169 -3.728159 - 167 170 -6.302076 - 167 213 -0.028466 - 167 214 -3.710244 - 167 215 -6.271797 - 167 1269 -0.046029 - 167 1270 -0.777765 - 167 1271 -1.314734 - 168 165 -0.646595 - 168 168 579.607820 - 168 169 -363.238520 - 168 170 -614.017980 - 168 171 -0.920277 - 168 172 4.980819 - 168 173 8.419576 - 168 216 -2.727779 - 168 1272 -1.517127 - 168 1273 7.278280 - 168 1274 12.303195 - 169 169 -100.896640 - 169 170 87.613858 - 169 173 -1.181672 - 169 1274 -1.452577 - 170 165 -0.028598 - 170 166 -3.728159 - 170 167 -6.302076 - 170 168 0.206123 - 170 169 12.039996 - 170 170 20.352399 - 170 171 -0.022406 - 170 172 -3.811667 - 170 173 -6.443242 - 170 216 -0.028468 - 170 217 -3.711677 - 170 218 -6.274214 - 170 1272 -0.045989 - 170 1273 -0.777278 - 170 1274 -1.313910 - 171 123 -8.979267 - 171 124 26.986678 - 171 125 45.618281 - 171 168 -0.506603 - 171 171 578.414980 - 171 172 -362.918670 - 171 173 -613.477720 - 171 174 -0.883766 - 171 175 6.499227 - 171 176 10.986285 - 171 219 -2.138599 - 171 1275 -1.322505 - 171 1276 7.017312 - 171 1277 11.862064 - 172 125 -4.533438 - 172 172 -99.874183 - 172 173 88.241532 - 172 176 -1.577905 - 172 1277 -1.457503 - 173 123 -0.301098 - 173 124 -1.656978 - 173 125 -2.800956 - 173 168 -0.022406 - 173 169 -3.811667 - 173 170 -6.443242 - 173 171 0.401055 - 173 172 13.885676 - 173 173 23.472342 - 173 174 -0.017768 - 173 175 -3.739562 - 173 176 -6.321352 - 173 219 -0.022319 - 173 220 -3.797303 - 173 221 -6.418961 - 173 1275 -0.035749 - 173 1276 -0.869064 - 173 1277 -1.469066 - 174 126 -5.728719 - 174 127 27.415937 - 174 128 46.343867 - 174 171 -0.606339 - 174 174 538.190490 - 174 175 -345.019640 - 174 176 -583.220820 - 174 177 -0.802106 - 174 178 7.400167 - 174 179 12.509242 - 174 222 -1.677874 - 174 1278 -1.199037 - 174 1279 7.544192 - 174 1280 12.752693 - 175 128 -5.155625 - 175 175 -94.437882 - 175 176 84.628322 - 175 179 -1.798823 - 175 1280 -1.645748 - 176 126 -0.154486 - 176 127 -2.115960 - 176 128 -3.576816 - 176 171 -0.017768 - 176 172 -3.739562 - 176 173 -6.321352 - 176 174 0.228605 - 176 175 14.167430 - 176 176 23.948610 - 176 177 -0.010733 - 176 178 -3.593010 - 176 179 -6.073624 - 176 222 -0.017511 - 176 223 -3.686029 - 176 224 -6.230859 - 176 1278 -0.026535 - 176 1279 -1.022372 - 176 1280 -1.728216 - 177 129 -4.331139 - 177 130 25.448551 - 177 131 43.018230 - 177 174 -0.366293 - 177 177 491.205390 - 177 178 -319.535410 - 177 179 -540.142660 - 177 180 -0.608820 - 177 181 8.039746 - 177 182 13.590380 - 177 225 -1.013116 - 177 1281 -0.944299 - 177 1282 7.000426 - 177 1283 11.833520 - 178 131 -5.428882 - 178 178 -87.270037 - 178 179 79.198658 - 178 182 -2.017901 - 178 1283 -1.596528 - 179 129 -0.084836 - 179 130 -2.330615 - 179 131 -3.939671 - 179 174 -0.010733 - 179 175 -3.593010 - 179 176 -6.073624 - 179 177 0.132486 - 179 178 14.135047 - 179 179 23.893881 - 179 180 -0.007063 - 179 181 -3.416753 - 179 182 -5.775677 - 179 225 -0.010573 - 179 226 -3.539884 - 179 227 -5.983820 - 179 1281 -0.017904 - 179 1282 -1.245084 - 179 1283 -2.104691 - 180 132 -3.013261 - 180 133 27.643276 - 180 134 46.728152 - 180 177 -0.399343 - 180 180 453.087360 - 180 181 -298.422780 - 180 182 -504.453590 - 180 183 -0.380855 - 180 184 7.686549 - 180 185 12.993343 - 180 228 -0.666030 - 180 1284 -0.491136 - 180 1285 4.357175 - 180 1286 7.365364 - 181 134 -6.158643 - 181 181 -81.860502 - 181 182 74.924081 - 181 185 -2.007533 - 181 1286 -1.034987 - 182 132 -0.041440 - 182 133 -2.484443 - 182 134 -4.199699 - 182 177 -0.007063 - 182 178 -3.416753 - 182 179 -5.775677 - 182 180 0.068672 - 182 181 14.079488 - 182 182 23.799955 - 182 183 -0.003175 - 182 184 -3.291580 - 182 185 -5.564087 - 182 228 -0.006951 - 182 229 -3.363208 - 182 230 -5.685164 - 182 1284 -0.008811 - 182 1285 -1.514404 - 182 1286 -2.559947 - 183 135 -2.423607 - 183 136 27.643725 - 183 137 46.728953 - 183 180 -0.179528 - 183 183 417.040120 - 183 184 -275.544570 - 183 185 -465.780540 - 183 186 -0.282214 - 183 187 7.257302 - 183 188 12.267737 - 183 231 -0.299310 - 183 1287 -0.351352 - 183 1288 3.147673 - 183 1289 5.320826 - 184 137 -6.275392 - 184 184 -76.543503 - 184 185 70.327031 - 184 188 -1.859816 - 184 1289 -0.772960 - 185 135 -0.027944 - 185 136 -2.464650 - 185 137 -4.166244 - 185 180 -0.003175 - 185 181 -3.291580 - 185 182 -5.564087 - 185 183 0.042225 - 185 184 13.835576 - 185 185 23.387654 - 185 186 -0.002166 - 185 187 -3.073406 - 185 188 -5.195282 - 185 231 -0.003124 - 185 232 -3.238818 - 185 233 -5.474898 - 185 1287 -0.004734 - 185 1288 -1.758612 - 185 1289 -2.972758 - 186 138 -2.075542 - 186 139 25.159407 - 186 140 42.529422 - 186 183 -0.122471 - 186 186 382.328450 - 186 187 -252.490980 - 186 188 -426.810540 - 186 189 -0.225522 - 186 190 5.081460 - 186 191 8.589700 - 186 234 -0.203938 - 186 1290 -0.282224 - 186 1291 2.700400 - 186 1292 4.564753 - 187 140 -5.999714 - 187 187 -70.502971 - 187 188 64.538446 - 187 191 -1.311001 - 187 1292 -0.681726 - 188 138 -0.018759 - 188 139 -2.405538 - 188 140 -4.066317 - 188 183 -0.002166 - 188 184 -3.073406 - 188 185 -5.195282 - 188 186 0.029595 - 188 187 13.352024 - 188 188 22.570249 - 188 189 -0.001815 - 188 190 -2.872657 - 188 191 -4.855939 - 188 234 -0.002128 - 188 235 -3.020461 - 188 236 -5.105784 - 188 1290 -0.003753 - 188 1291 -1.972124 - 188 1292 -3.333675 - 189 141 -1.502558 - 189 142 23.436855 - 189 143 39.617660 - 189 186 -0.173899 - 189 189 358.278520 - 189 190 -232.379710 - 189 191 -392.814660 - 189 237 -0.173077 - 189 1293 -0.246779 - 189 1294 2.622451 - 189 1295 4.432992 - 190 143 -5.657766 - 190 190 -66.372454 - 190 191 59.555841 - 190 1295 -0.672051 - 191 141 -0.011949 - 191 142 -2.376726 - 191 143 -4.017618 - 191 186 -0.001815 - 191 187 -2.872657 - 191 188 -4.855939 - 191 189 0.019645 - 191 190 10.250425 - 191 191 17.327318 - 191 237 -0.001806 - 191 238 -2.859445 - 191 239 -4.833606 - 191 1293 -0.003169 - 191 1294 -2.134217 - 191 1295 -3.607681 - 192 192 1.000000 - 193 193 1.000000 - 194 194 1.000000 - 195 195 1.000000 - 196 196 1.000000 - 197 197 1.000000 - 198 198 1.000000 - 199 199 1.000000 - 200 200 1.000000 - 201 201 1.000000 - 202 202 1.000000 - 203 203 1.000000 - 204 204 1.000000 - 205 205 1.000000 - 206 206 1.000000 - 207 159 -1.491788 - 207 160 32.774276 - 207 161 55.401636 - 207 207 576.640830 - 207 208 -369.516890 - 207 209 -624.631340 - 207 210 -0.234093 - 207 255 -0.233263 - 207 1311 -0.229676 - 207 1312 3.269776 - 207 1313 5.527229 - 208 161 -8.040622 - 208 208 -107.390810 - 208 209 94.914364 - 208 1313 -0.823536 - 209 159 -0.011178 - 209 160 -4.111735 - 209 161 -6.950478 - 209 207 0.020060 - 209 208 14.473053 - 209 209 24.465248 - 209 210 -0.002443 - 209 211 -4.532473 - 209 212 -7.661692 - 209 255 -0.002434 - 209 256 -4.516995 - 209 257 -7.635529 - 209 1311 -0.002559 - 209 1312 -1.299896 - 209 1313 -2.197344 - 210 162 -2.157987 - 210 163 31.763844 - 210 164 53.693564 - 210 207 -0.246733 - 210 208 1.259814 - 210 209 2.129590 - 210 210 578.106290 - 210 211 -368.961330 - 210 212 -623.691830 - 210 213 -0.257621 - 210 258 -0.256800 - 210 1314 -0.246681 - 210 1315 3.196033 - 210 1316 5.402570 - 211 164 -7.524094 - 211 209 -0.327836 - 211 211 -107.204770 - 211 212 94.574832 - 211 1316 -0.797235 - 212 162 -0.022767 - 212 163 -3.823585 - 212 164 -6.463384 - 212 207 -0.002443 - 212 208 -4.532473 - 212 209 -7.661692 - 212 210 0.034919 - 212 211 18.657388 - 212 212 31.538432 - 212 213 -0.002689 - 212 214 -4.508297 - 212 215 -7.620820 - 212 258 -0.002680 - 212 259 -4.494527 - 212 260 -7.597543 - 212 1314 -0.002884 - 212 1315 -1.286574 - 212 1316 -2.174823 - 213 165 -2.632690 - 213 166 30.535283 - 213 167 51.616842 - 213 210 -0.265122 - 213 211 0.742490 - 213 212 1.255104 - 213 213 578.926990 - 213 214 -368.930260 - 213 215 -623.639720 - 213 216 -0.337672 - 213 217 0.981476 - 213 218 1.659086 - 213 261 -0.303425 - 213 1317 -0.284439 - 213 1318 3.266429 - 213 1319 5.521572 - 214 167 -7.294636 - 214 212 -0.192187 - 214 214 -98.002191 - 214 215 109.111050 - 214 218 -0.250001 - 214 1319 -0.799477 - 215 165 -0.028466 - 215 166 -3.710244 - 215 167 -6.271797 - 215 210 -0.002689 - 215 211 -4.508297 - 215 212 -7.620820 - 215 213 0.042733 - 215 214 18.375718 - 215 215 31.062304 - 215 216 -0.003420 - 215 217 -4.436648 - 215 218 -7.499705 - 215 261 -0.003167 - 215 262 -4.447221 - 215 263 -7.517583 - 215 1317 -0.003515 - 215 1318 -1.261418 - 215 1319 -2.132301 - 216 168 -2.681311 - 216 169 31.315243 - 216 170 52.935250 - 216 213 -0.327694 - 216 216 579.080540 - 216 217 -371.282340 - 216 218 -627.615270 - 216 219 -0.360129 - 216 220 3.210720 - 216 221 5.427401 - 216 264 -0.326674 - 216 1320 -0.264566 - 216 1321 3.087606 - 216 1322 5.219286 - 217 170 -7.481215 - 217 217 -106.649090 - 217 218 94.589072 - 217 221 -0.817855 - 217 1322 -0.776395 - 218 168 -0.028468 - 218 169 -3.711677 - 218 170 -6.274214 - 218 213 -0.003420 - 218 214 -4.436648 - 218 215 -7.499705 - 218 216 0.044058 - 218 217 18.269537 - 218 218 30.882809 - 218 219 -0.003419 - 218 220 -4.436568 - 218 221 -7.499575 - 218 264 -0.003409 - 218 265 -4.423341 - 218 266 -7.477211 - 218 1320 -0.003855 - 218 1321 -1.249434 - 218 1322 -2.112042 - 219 171 -2.254950 - 219 172 34.272320 - 219 173 57.933929 - 219 216 -0.327557 - 219 219 578.472800 - 219 220 -375.136440 - 219 221 -634.130630 - 219 222 -0.317936 - 219 223 4.768057 - 219 224 8.059917 - 219 267 -0.326652 - 219 1323 -0.253489 - 219 1324 2.848195 - 219 1325 4.814589 - 220 173 -8.130919 - 220 220 -106.648860 - 220 221 95.574845 - 220 224 -1.229284 - 220 1325 -0.716338 - 221 171 -0.022319 - 221 172 -3.797303 - 221 173 -6.418961 - 221 216 -0.003419 - 221 217 -4.436568 - 221 218 -7.499575 - 221 219 0.037288 - 221 220 18.317866 - 221 221 30.964516 - 221 222 -0.002811 - 221 223 -4.398270 - 221 224 -7.434830 - 221 267 -0.003409 - 221 268 -4.424803 - 221 269 -7.479687 - 221 1323 -0.003843 - 221 1324 -1.249054 - 221 1325 -2.111401 - 222 174 -2.102805 - 222 175 34.671114 - 222 176 58.608013 - 222 219 -0.269392 - 222 222 554.749030 - 222 223 -363.906820 - 222 224 -615.147650 - 222 225 -0.248259 - 222 226 6.483881 - 222 227 10.960352 - 222 270 -0.268693 - 222 1326 -0.245458 - 222 1327 2.655669 - 222 1328 4.489140 - 223 176 -8.417571 - 223 223 -102.780840 - 223 224 93.163769 - 223 227 -1.701721 - 223 1328 -0.660239 - 224 174 -0.017511 - 224 175 -3.686029 - 224 176 -6.230859 - 224 219 -0.002811 - 224 220 -4.398270 - 224 221 -7.434830 - 224 222 0.029553 - 224 223 18.064403 - 224 224 30.536050 - 224 225 -0.001902 - 224 226 -4.246385 - 224 227 -7.178089 - 224 270 -0.002804 - 224 271 -4.387421 - 224 272 -7.416492 - 224 1326 -0.003119 - 224 1327 -1.334860 - 224 1328 -2.256445 - 225 177 -1.506565 - 225 178 34.709746 - 225 179 58.673355 - 225 222 -0.182276 - 225 225 519.204870 - 225 226 -344.192000 - 225 227 -581.822160 - 225 228 -0.198586 - 225 229 7.888630 - 225 230 13.334930 - 225 273 -0.179974 - 225 1329 -0.169640 - 225 1330 2.296972 - 225 1331 3.882801 - 226 179 -8.437202 - 226 226 -96.916962 - 226 227 88.768635 - 226 230 -2.097495 - 226 1331 -0.592136 - 227 177 -0.010573 - 227 178 -3.539884 - 227 179 -5.983820 - 227 222 -0.001902 - 227 223 -4.246385 - 227 224 -7.178089 - 227 225 0.018823 - 227 226 17.439049 - 227 227 29.478962 - 227 228 -0.001234 - 227 229 -3.973355 - 227 230 -6.716554 - 227 273 -0.001878 - 227 274 -4.193291 - 227 275 -7.088339 - 227 1329 -0.001949 - 227 1330 -1.475347 - 227 1331 -2.493926 - 228 180 -1.250029 - 228 181 32.776872 - 228 182 55.405994 - 228 225 -0.118274 - 228 228 472.529580 - 228 229 -316.510790 - 228 230 -535.029440 - 228 231 -0.116440 - 228 232 8.666418 - 228 233 14.649713 - 228 276 -0.116666 - 228 1332 -0.136430 - 228 1333 1.852238 - 228 1334 3.131021 - 229 182 -8.226689 - 229 229 -88.678619 - 229 230 82.092491 - 229 233 -2.356370 - 229 1334 -0.473197 - 230 180 -0.006951 - 230 181 -3.363208 - 230 182 -5.685164 - 230 225 -0.001234 - 230 226 -3.973355 - 230 227 -6.716554 - 230 228 0.012075 - 230 229 16.662947 - 230 230 28.167030 - 230 231 -0.000294 - 230 232 -3.735226 - 230 233 -6.314026 - 230 276 -0.001218 - 230 277 -3.919831 - 230 278 -6.626076 - 230 1332 -0.001227 - 230 1333 -1.661456 - 230 1334 -2.808524 - 231 183 -0.962820 - 231 184 30.072650 - 231 185 50.834807 - 231 228 -0.028192 - 231 231 437.380550 - 231 232 -294.062540 - 231 233 -497.083310 - 231 234 -0.110235 - 231 235 9.098386 - 231 236 15.379904 - 231 279 -0.027787 - 231 1335 -0.094692 - 231 1336 1.413489 - 231 1337 2.389362 - 232 185 -7.854217 - 232 232 -82.802041 - 232 233 77.003990 - 232 236 -2.491765 - 232 1337 -0.370686 - 233 183 -0.003124 - 233 184 -3.238818 - 233 185 -5.474898 - 233 228 -0.000294 - 233 229 -3.735226 - 233 230 -6.314026 - 233 231 0.005596 - 233 232 15.978837 - 233 233 27.010623 - 233 234 -0.000017 - 233 235 -3.476036 - 233 236 -5.875887 - 233 279 -0.000290 - 233 280 -3.681971 - 233 281 -6.224003 - 233 1335 -0.000838 - 233 1336 -1.837569 - 233 1337 -3.106227 - 234 186 -0.466885 - 234 187 27.264523 - 234 188 46.087927 - 234 231 -0.001622 - 234 234 402.695510 - 234 235 -269.895040 - 234 236 -456.230340 - 234 237 -0.141628 - 234 238 8.707568 - 234 239 14.719273 - 234 282 -0.001597 - 234 1338 -0.059816 - 234 1339 1.184940 - 234 1340 2.003021 - 235 188 -6.987032 - 235 235 -76.449015 - 235 236 70.887220 - 235 239 -2.384761 - 235 1340 -0.315517 - 236 186 -0.002128 - 236 187 -3.020461 - 236 188 -5.105784 - 236 231 -0.000017 - 236 232 -3.476036 - 236 233 -5.875887 - 236 234 0.003717 - 236 235 15.194425 - 236 236 25.684645 - 236 237 -0.000015 - 236 238 -3.240484 - 236 239 -5.477714 - 236 282 -0.000017 - 236 283 -3.422994 - 236 284 -5.786226 - 236 1338 -0.000599 - 236 1339 -2.025941 - 236 1340 -3.424648 - 237 189 -0.340413 - 237 190 22.538935 - 237 191 38.099815 - 237 234 -0.001474 - 237 237 379.567110 - 237 238 -243.324810 - 237 239 -411.316260 - 237 285 -0.001449 - 237 1341 -0.001005 - 237 1342 1.053015 - 237 1343 1.780016 - 238 191 -5.814974 - 238 238 -72.082031 - 238 239 63.780781 - 238 1343 -0.285622 - 239 189 -0.001806 - 239 190 -2.859445 - 239 191 -4.833606 - 239 234 -0.000015 - 239 235 -3.240484 - 239 236 -5.477714 - 239 237 0.002734 - 239 238 11.483163 - 239 239 19.411139 - 239 285 -0.000015 - 239 286 -3.186243 - 239 287 -5.386026 - 239 1341 -0.000010 - 239 1342 -2.188966 - 239 1343 -3.700229 - 240 240 1.000000 - 241 241 1.000000 - 242 242 1.000000 - 243 243 1.000000 - 244 244 1.000000 - 245 245 1.000000 - 246 246 1.000000 - 247 247 1.000000 - 248 248 1.000000 - 249 249 1.000000 - 250 250 1.000000 - 251 251 1.000000 - 252 252 1.000000 - 253 253 1.000000 - 254 254 1.000000 - 255 207 -0.502753 - 255 208 38.055507 - 255 209 64.329029 - 255 255 575.079160 - 255 256 -373.053960 - 255 257 -630.610410 - 255 258 -0.002390 - 255 303 -0.002385 - 255 1359 -0.000730 - 255 1360 1.678820 - 255 1361 2.837878 - 256 209 -9.903012 - 256 256 -100.229230 - 256 257 112.992100 - 256 1361 -0.450112 - 257 207 -0.002434 - 257 208 -4.516995 - 257 209 -7.635529 - 257 255 0.003836 - 257 256 15.487904 - 257 257 26.180753 - 257 258 -0.000025 - 257 259 -4.770568 - 257 260 -8.064167 - 257 303 -0.000025 - 257 304 -4.762029 - 257 305 -8.049733 - 257 1359 -0.000008 - 257 1360 -1.426136 - 257 1361 -2.410741 - 258 210 -0.572549 - 258 211 38.015026 - 258 212 64.260557 - 258 255 -0.061331 - 258 256 1.205691 - 258 257 2.038100 - 258 258 575.127750 - 258 259 -374.036510 - 258 260 -632.270920 - 258 261 -0.002404 - 258 306 -0.002399 - 258 1362 -0.000734 - 258 1363 1.717198 - 258 1364 2.902749 - 259 212 -9.839850 - 259 257 -0.330190 - 259 259 -109.251310 - 259 260 98.012889 - 259 1364 -0.455689 - 260 210 -0.002680 - 260 211 -4.494527 - 260 212 -7.597543 - 260 255 -0.000025 - 260 256 -4.770568 - 260 257 -8.064167 - 260 258 0.004107 - 260 259 20.220255 - 260 260 34.180302 - 260 261 -0.000025 - 260 262 -4.770618 - 260 263 -8.064247 - 260 306 -0.000025 - 260 307 -4.760680 - 260 308 -8.047449 - 260 1362 -0.000008 - 260 1363 -1.411688 - 260 1364 -2.386316 - 261 213 -0.696206 - 261 214 38.721161 - 261 215 65.454250 - 261 258 -0.087124 - 261 259 1.446488 - 261 260 2.445142 - 261 261 575.156410 - 261 262 -374.643450 - 261 263 -633.297290 - 261 264 -0.002432 - 261 309 -0.002425 - 261 1365 -0.083649 - 261 1366 1.765941 - 261 1367 2.985147 - 262 215 -9.916144 - 262 260 -0.396133 - 262 262 -109.245110 - 262 263 98.193118 - 262 1367 -0.461354 - 263 213 -0.003167 - 263 214 -4.447221 - 263 215 -7.517583 - 263 258 -0.000025 - 263 259 -4.770618 - 263 260 -8.064247 - 263 261 0.005277 - 263 262 20.149213 - 263 263 34.060225 - 263 264 -0.000025 - 263 265 -4.770972 - 263 266 -8.064851 - 263 309 -0.000025 - 263 310 -4.758173 - 263 311 -8.043216 - 263 1365 -0.000691 - 263 1366 -1.390058 - 263 1367 -2.349753 - 264 216 -0.734888 - 264 217 40.088522 - 264 218 67.765594 - 264 261 -0.007934 - 264 262 0.390336 - 264 263 0.659823 - 264 264 575.293290 - 264 265 -376.362580 - 264 266 -636.202910 - 264 267 -0.063768 - 264 268 1.595729 - 264 269 2.697421 - 264 312 -0.024186 - 264 1368 -0.090841 - 264 1369 1.726506 - 264 1370 2.918483 - 265 218 -10.211302 - 265 263 -0.106896 - 265 265 -109.072050 - 265 266 98.474973 - 265 269 -0.432764 - 265 1370 -0.448680 - 266 216 -0.003409 - 266 217 -4.423341 - 266 218 -7.477211 - 266 261 -0.000025 - 266 262 -4.770972 - 266 263 -8.064851 - 266 264 0.006302 - 266 265 20.050582 - 266 266 33.893491 - 266 267 -0.000496 - 266 268 -4.724186 - 266 269 -7.985765 - 266 312 -0.000252 - 266 313 -4.737192 - 266 314 -8.007744 - 266 1368 -0.000765 - 266 1369 -1.382738 - 266 1370 -2.337379 - 267 219 -0.751303 - 267 220 41.711503 - 267 221 70.509125 - 267 264 -0.047553 - 267 267 575.383530 - 267 268 -379.657950 - 267 269 -641.773800 - 267 270 -0.063582 - 267 271 3.564133 - 267 272 6.024807 - 267 315 -0.047438 - 267 1371 -0.096814 - 267 1372 1.612247 - 267 1373 2.725342 - 268 221 -10.625014 - 268 268 -108.886460 - 268 269 99.168081 - 268 272 -0.976066 - 268 1373 -0.416776 - 269 219 -0.003409 - 269 220 -4.424803 - 269 221 -7.479687 - 269 264 -0.000496 - 269 265 -4.724186 - 269 266 -7.985765 - 269 267 0.006629 - 269 268 20.020417 - 269 269 33.842508 - 269 270 -0.000025 - 269 271 -4.770303 - 269 272 -8.063716 - 269 315 -0.000495 - 269 316 -4.713297 - 269 317 -7.967358 - 269 1371 -0.000840 - 269 1372 -1.375697 - 269 1373 -2.325478 - 270 222 -0.673352 - 270 223 42.136737 - 270 224 71.227889 - 270 267 -0.002414 - 270 270 575.258730 - 270 271 -382.003880 - 270 272 -645.739000 - 270 273 -0.114481 - 270 274 5.745762 - 270 275 9.712636 - 270 318 -0.002409 - 270 1374 -0.065999 - 270 1375 1.435957 - 270 1376 2.427339 - 271 224 -10.863549 - 271 271 -109.245510 - 271 272 100.208510 - 271 275 -1.573535 - 271 1376 -0.377117 - 272 222 -0.002804 - 272 223 -4.387421 - 272 224 -7.416492 - 272 267 -0.000025 - 272 268 -4.770303 - 272 269 -8.063716 - 272 270 0.004838 - 272 271 19.950620 - 272 272 33.724511 - 272 273 -0.000024 - 272 274 -4.622886 - 272 275 -7.814527 - 272 318 -0.000025 - 272 319 -4.761428 - 272 320 -8.048713 - 272 1374 -0.000616 - 272 1375 -1.396409 - 272 1376 -2.360487 - 273 225 -0.518847 - 273 226 40.524145 - 273 227 68.502014 - 273 270 -0.002303 - 273 273 540.678330 - 273 274 -363.064230 - 273 275 -613.723770 - 273 276 -0.153708 - 273 277 7.859068 - 273 278 13.284960 - 273 321 -0.002299 - 273 1377 -0.000772 - 273 1378 1.281349 - 273 1379 2.165992 - 274 227 -10.635726 - 274 274 -102.693650 - 274 275 95.280061 - 274 278 -2.152302 - 274 1379 -0.341669 - 275 225 -0.001878 - 275 226 -4.193291 - 275 227 -7.088339 - 275 270 -0.000024 - 275 271 -4.622886 - 275 272 -7.814527 - 275 273 0.003220 - 275 274 19.287736 - 275 275 32.603984 - 275 276 -0.000022 - 275 277 -4.336491 - 275 278 -7.330400 - 275 321 -0.000024 - 275 322 -4.614695 - 275 323 -7.800680 - 275 1377 -0.000008 - 275 1378 -1.508930 - 275 1379 -2.550695 - 276 228 -0.367419 - 276 229 37.856342 - 276 230 63.992312 - 276 273 -0.002126 - 276 276 506.167270 - 276 277 -342.279590 - 276 278 -578.589030 - 276 279 -0.148128 - 276 280 9.560603 - 276 281 16.161243 - 276 324 -0.002100 - 276 1380 -0.000812 - 276 1381 1.032550 - 276 1382 1.745421 - 277 230 -10.065562 - 277 277 -96.142388 - 277 278 89.845061 - 277 281 -2.618312 - 277 1382 -0.280897 - 278 228 -0.001218 - 278 229 -3.919831 - 278 230 -6.626076 - 278 273 -0.000022 - 278 274 -4.336491 - 278 275 -7.330400 - 278 276 0.002473 - 278 277 18.194383 - 278 278 30.755768 - 278 279 -0.000020 - 278 280 -3.998508 - 278 281 -6.759078 - 278 324 -0.000022 - 278 325 -4.283847 - 278 326 -7.241411 - 278 1380 -0.000008 - 278 1381 -1.644991 - 278 1382 -2.780692 - 279 231 -0.209472 - 279 232 34.447542 - 279 233 58.230126 - 279 276 -0.001924 - 279 279 460.094230 - 279 280 -315.055630 - 279 281 -532.570030 - 279 282 -0.165332 - 279 283 11.886166 - 279 284 20.092362 - 279 327 -0.001877 - 279 1383 -0.000877 - 279 1384 0.833644 - 279 1385 1.409192 - 280 233 -9.366170 - 280 280 -87.403089 - 280 281 82.741962 - 280 284 -3.255230 - 280 1385 -0.228305 - 281 231 -0.000290 - 281 232 -3.681971 - 281 233 -6.224003 - 281 276 -0.000020 - 281 277 -3.998508 - 281 278 -6.759078 - 281 279 0.001432 - 281 280 17.081396 - 281 281 28.874387 - 281 282 -0.000018 - 281 283 -3.667843 - 281 284 -6.200118 - 281 327 -0.000020 - 281 328 -3.900897 - 281 329 -6.594076 - 281 1383 -0.000009 - 281 1384 -1.822437 - 281 1385 -3.080647 - 282 234 -0.123537 - 282 235 29.659902 - 282 236 50.137073 - 282 279 -0.001735 - 282 282 425.643530 - 282 283 -299.018730 - 282 284 -505.460930 - 282 285 -0.267757 - 282 286 20.669061 - 282 287 34.938980 - 282 330 -0.001688 - 282 1386 -0.000932 - 282 1387 0.721203 - 282 1388 1.219121 - 283 236 -8.122925 - 283 283 -80.847251 - 283 284 78.617985 - 283 287 -5.660657 - 283 1388 -0.197513 - 284 234 -0.000017 - 284 235 -3.422994 - 284 236 -5.786226 - 284 279 -0.000018 - 284 280 -3.667843 - 284 281 -6.200118 - 284 282 0.001073 - 284 283 16.020787 - 284 284 27.081526 - 284 285 -0.000016 - 284 286 -3.380930 - 284 287 -5.715124 - 284 330 -0.000018 - 284 331 -3.569419 - 284 332 -6.033741 - 284 1386 -0.000010 - 284 1387 -1.970592 - 284 1388 -3.331087 - 285 237 -0.001847 - 285 238 16.689927 - 285 239 28.212653 - 285 282 -0.001552 - 285 285 391.011080 - 285 286 -245.169820 - 285 287 -414.435060 - 285 1389 -0.000985 - 285 1390 0.710329 - 285 1391 1.200740 - 286 239 -4.570908 - 286 286 -74.289358 - 286 287 64.143619 - 286 1391 -0.194539 - 287 237 -0.000015 - 287 238 -3.186243 - 287 239 -5.386026 - 287 282 -0.000016 - 287 283 -3.380930 - 287 284 -5.715124 - 287 285 0.000955 - 287 286 8.721027 - 287 287 14.742025 - 287 1389 -0.000010 - 287 1390 -2.145576 - 287 1391 -3.626882 - 288 288 1.000000 - 289 289 1.000000 - 290 290 1.000000 - 291 291 1.000000 - 292 292 1.000000 - 293 293 1.000000 - 294 294 1.000000 - 295 295 1.000000 - 296 296 1.000000 - 297 297 1.000000 - 298 298 1.000000 - 299 299 1.000000 - 300 300 1.000000 - 301 301 1.000000 - 302 302 1.000000 - 303 255 -0.240533 - 303 256 41.710395 - 303 257 70.507252 - 303 303 574.853820 - 303 304 -378.188000 - 303 305 -639.289000 - 303 306 -0.002452 - 303 351 -0.002444 - 303 1407 -0.000749 - 303 1408 1.133197 - 303 1409 1.915557 - 304 257 -11.422778 - 304 304 -100.264510 - 304 305 114.312160 - 304 1409 -0.310332 - 305 255 -0.000025 - 305 256 -4.762029 - 305 257 -8.049733 - 305 303 0.001428 - 305 304 15.762163 - 305 305 26.644360 - 305 306 -0.000026 - 305 307 -4.771610 - 305 308 -8.065930 - 305 351 -0.000026 - 305 352 -4.758091 - 305 353 -8.043076 - 305 1407 -0.000008 - 305 1408 -1.458242 - 305 1409 -2.465013 - 306 258 -0.248114 - 306 259 42.446987 - 306 260 71.752342 - 306 303 -0.069041 - 306 304 1.955428 - 306 305 3.305456 - 306 306 574.864580 - 306 307 -380.943930 - 306 308 -643.947180 - 306 309 -0.002456 - 306 354 -0.002448 - 306 1410 -0.000751 - 306 1411 1.144864 - 306 1412 1.935277 - 307 260 -11.624465 - 307 305 -0.535505 - 307 307 -109.285730 - 307 308 99.820041 - 307 1412 -0.313526 - 308 258 -0.000025 - 308 259 -4.760680 - 308 260 -8.047449 - 308 303 -0.000026 - 308 304 -4.771610 - 308 305 -8.065930 - 308 306 0.001453 - 308 307 20.531953 - 308 308 34.707196 - 308 309 -0.000026 - 308 310 -4.771707 - 308 311 -8.066088 - 308 354 -0.000026 - 308 355 -4.756790 - 308 356 -8.040872 - 308 1410 -0.000008 - 308 1411 -1.458976 - 308 1412 -2.466251 - 309 261 -0.241840 - 309 262 44.102251 - 309 263 74.550445 - 309 306 -0.080982 - 309 307 3.128247 - 309 308 5.287986 - 309 309 574.848610 - 309 310 -383.753620 - 309 311 -648.697130 - 309 312 -0.002463 - 309 357 -0.002455 - 309 1413 -0.000754 - 309 1414 1.160065 - 309 1415 1.960974 - 310 263 -12.077701 - 310 308 -0.856687 - 310 310 -109.282580 - 310 311 100.596740 - 310 1415 -0.317392 - 311 261 -0.000025 - 311 262 -4.758173 - 311 263 -8.043216 - 311 306 -0.000026 - 311 307 -4.771707 - 311 308 -8.066088 - 311 309 0.001454 - 311 310 20.527605 - 311 311 34.699859 - 311 312 -0.000026 - 311 313 -4.771829 - 311 314 -8.066300 - 311 357 -0.000026 - 311 358 -4.755391 - 311 359 -8.038513 - 311 1413 -0.000008 - 311 1414 -1.458317 - 311 1415 -2.465140 - 312 264 -0.306743 - 312 265 46.208999 - 312 266 78.111643 - 312 309 -0.051146 - 312 310 2.489980 - 312 311 4.209062 - 312 312 574.900450 - 312 313 -385.057820 - 312 314 -650.901250 - 312 315 -0.002473 - 312 360 -0.002464 - 312 1416 -0.000756 - 312 1417 1.193951 - 312 1418 2.018254 - 313 266 -12.595337 - 313 311 -0.681893 - 313 313 -109.281340 - 313 314 100.956820 - 313 1418 -0.325025 - 314 264 -0.000252 - 314 265 -4.737192 - 314 266 -8.007744 - 314 309 -0.000026 - 314 310 -4.771829 - 314 311 -8.066300 - 314 312 0.001681 - 314 313 20.498379 - 314 314 34.650441 - 314 315 -0.000026 - 314 316 -4.771781 - 314 317 -8.066213 - 314 360 -0.000026 - 314 361 -4.755227 - 314 362 -8.038230 - 314 1416 -0.000008 - 314 1417 -1.450162 - 314 1418 -2.451353 - 315 267 -0.370517 - 315 268 47.904941 - 315 269 80.978512 - 315 312 -0.026877 - 315 313 0.104478 - 315 314 0.176609 - 315 315 574.918290 - 315 316 -387.272960 - 315 317 -654.646210 - 315 318 -0.058354 - 315 319 3.198995 - 315 320 5.407578 - 315 363 -0.002469 - 315 1419 -0.000757 - 315 1420 1.185961 - 315 1421 2.004748 - 316 269 -12.991897 - 316 314 -0.028612 - 316 316 -100.254000 - 316 317 116.824520 - 316 320 -0.876061 - 316 1421 -0.321222 - 317 267 -0.000495 - 317 268 -4.713297 - 317 269 -7.967358 - 317 312 -0.000026 - 317 313 -4.771781 - 317 314 -8.066213 - 317 315 0.001924 - 317 316 20.466586 - 317 317 34.596706 - 317 318 -0.000026 - 317 319 -4.771299 - 317 320 -8.065399 - 317 363 -0.000026 - 317 364 -4.755185 - 317 365 -8.038164 - 317 1419 -0.000008 - 317 1420 -1.442837 - 317 1421 -2.438972 - 318 270 -0.330881 - 318 271 48.289200 - 318 272 81.628018 - 318 315 -0.002462 - 318 318 574.936420 - 318 319 -390.526490 - 318 320 -660.145610 - 318 321 -0.130907 - 318 322 5.742553 - 318 323 9.707211 - 318 366 -0.002454 - 318 1422 -0.000753 - 318 1423 1.113833 - 318 1424 1.882822 - 319 272 -13.224376 - 319 319 -109.280150 - 319 320 102.457520 - 319 323 -1.572631 - 319 1424 -0.303215 - 320 270 -0.000025 - 320 271 -4.761428 - 320 272 -8.048713 - 320 315 -0.000026 - 320 316 -4.771299 - 320 317 -8.065399 - 320 318 0.001454 - 320 319 20.521060 - 320 320 34.688785 - 320 321 -0.000026 - 320 322 -4.770479 - 320 323 -8.064017 - 320 366 -0.000026 - 320 367 -4.755219 - 320 368 -8.038218 - 320 1422 -0.000008 - 320 1423 -1.450448 - 320 1424 -2.451836 - 321 273 -0.308332 - 321 274 46.980387 - 321 275 79.415645 - 321 318 -0.002448 - 321 321 575.019100 - 321 322 -391.294910 - 321 323 -661.444910 - 321 324 -0.184205 - 321 325 7.981406 - 321 326 13.491762 - 321 369 -0.002442 - 321 1425 -0.000749 - 321 1426 1.010525 - 321 1427 1.708192 - 322 275 -12.866050 - 322 322 -109.284480 - 322 323 102.657800 - 322 326 -2.185763 - 322 1427 -0.276737 - 323 273 -0.000024 - 323 274 -4.614695 - 323 275 -7.800680 - 323 318 -0.000026 - 323 319 -4.770479 - 323 320 -8.064017 - 323 321 0.001451 - 323 322 20.186025 - 323 323 34.122453 - 323 324 -0.000024 - 323 325 -4.571862 - 323 326 -7.728272 - 323 369 -0.000025 - 323 370 -4.758024 - 323 371 -8.042964 - 323 1425 -0.000008 - 323 1426 -1.458776 - 323 1427 -2.465915 - 324 276 -0.265474 - 324 277 43.895681 - 324 278 74.201208 - 324 321 -0.002328 - 324 324 529.093330 - 324 325 -361.834940 - 324 326 -611.645450 - 324 327 -0.160385 - 324 328 8.502203 - 324 329 14.372125 - 324 372 -0.002254 - 324 1428 -0.000807 - 324 1429 0.951356 - 324 1430 1.608170 - 325 278 -12.021368 - 325 325 -100.547760 - 325 326 94.936056 - 325 329 -2.328398 - 325 1430 -0.260535 - 326 276 -0.000022 - 326 277 -4.283847 - 326 278 -7.241411 - 326 321 -0.000024 - 326 322 -4.571862 - 326 323 -7.728272 - 326 324 0.001337 - 326 325 19.068643 - 326 326 32.233618 - 326 327 -0.000022 - 326 328 -4.190238 - 326 329 -7.083178 - 326 372 -0.000024 - 326 373 -4.426915 - 326 374 -7.483253 - 326 1428 -0.000008 - 326 1429 -1.584564 - 326 1430 -2.678545 - 327 279 -0.236963 - 327 280 41.382436 - 327 281 69.952869 - 327 324 -0.002114 - 327 327 483.053590 - 327 328 -330.908030 - 327 329 -559.366940 - 327 330 -0.120180 - 327 331 7.045998 - 327 332 11.910547 - 327 375 -0.002064 - 327 1431 -0.000876 - 327 1432 0.871833 - 327 1433 1.473746 - 328 281 -11.333192 - 328 328 -91.807741 - 328 329 86.820392 - 328 332 -1.929613 - 328 1433 -0.238759 - 329 279 -0.000020 - 329 280 -3.900897 - 329 281 -6.594076 - 329 324 -0.000022 - 329 325 -4.190238 - 329 326 -7.083178 - 329 327 0.001221 - 329 328 17.737475 - 329 329 29.983424 - 329 330 -0.000020 - 329 331 -3.807946 - 329 332 -6.436947 - 329 375 -0.000022 - 329 376 -4.092152 - 329 377 -6.917374 - 329 1431 -0.000009 - 329 1432 -1.736001 - 329 1433 -2.934535 - 330 282 -0.265106 - 330 283 42.827330 - 330 284 72.395271 - 330 327 -0.001905 - 330 330 437.022830 - 330 331 -298.436390 - 330 332 -504.476560 - 330 378 -0.001855 - 330 1434 -0.000960 - 330 1435 0.824705 - 330 1436 1.394080 - 331 284 -11.728997 - 331 331 -83.065671 - 331 332 78.286656 - 331 1436 -0.225853 - 332 282 -0.000018 - 332 283 -3.569419 - 332 284 -6.033741 - 332 327 -0.000020 - 332 328 -3.807946 - 332 329 -6.436947 - 332 330 0.001088 - 332 331 13.013397 - 332 332 21.997831 - 332 378 -0.000019 - 332 379 -3.707993 - 332 380 -6.267987 - 332 1434 -0.000010 - 332 1435 -1.918772 - 332 1436 -3.243489 - 333 333 1.000000 - 334 334 1.000000 - 335 335 1.000000 - 336 336 1.000000 - 337 337 1.000000 - 338 338 1.000000 - 339 339 1.000000 - 340 340 1.000000 - 341 341 1.000000 - 342 342 1.000000 - 343 343 1.000000 - 344 344 1.000000 - 345 345 1.000000 - 346 346 1.000000 - 347 347 1.000000 - 348 348 1.000000 - 349 349 1.000000 - 350 350 1.000000 - 351 303 -0.239149 - 351 304 46.140393 - 351 305 77.995721 - 351 351 574.789460 - 351 352 -382.660890 - 351 353 -646.849970 - 351 354 -0.002557 - 351 399 -0.002436 - 351 1455 -0.000782 - 351 1456 1.051910 - 351 1457 1.778149 - 352 305 -12.635806 - 352 352 -100.305820 - 352 353 115.435320 - 352 1457 -0.288065 - 353 303 -0.000026 - 353 304 -4.758091 - 353 305 -8.043076 - 353 351 0.001430 - 353 352 15.551099 - 353 353 26.287578 - 353 354 -0.000027 - 353 355 -4.772839 - 353 356 -8.068006 - 353 399 -0.000025 - 353 400 -4.547600 - 353 401 -7.687263 - 353 1455 -0.000008 - 353 1456 -1.460362 - 353 1457 -2.468596 - 354 306 -0.232010 - 354 307 47.718748 - 354 308 80.663716 - 354 351 -0.062044 - 354 352 3.551726 - 354 353 6.003837 - 354 354 574.843860 - 354 355 -387.852090 - 354 356 -655.624830 - 354 357 -0.002565 - 354 402 -0.002499 - 354 1458 -0.000785 - 354 1459 1.145018 - 354 1460 1.935538 - 355 308 -13.068034 - 355 353 -0.972638 - 355 355 -109.328350 - 355 356 101.605680 - 355 1460 -0.313563 - 356 306 -0.000026 - 356 307 -4.756790 - 356 308 -8.040872 - 356 351 -0.000027 - 356 352 -4.772839 - 356 353 -8.068006 - 356 354 0.001457 - 356 355 20.425388 - 356 356 34.527060 - 356 357 -0.000027 - 356 358 -4.772648 - 356 359 -8.067680 - 356 402 -0.000026 - 356 403 -4.650736 - 356 404 -7.861600 - 356 1458 -0.000008 - 356 1459 -1.460166 - 356 1460 -2.468263 - 357 309 -0.243872 - 357 310 51.162626 - 357 311 86.485303 - 357 354 -0.093051 - 357 355 6.598658 - 357 356 11.154366 - 357 357 574.933090 - 357 358 -394.520180 - 357 359 -666.896920 - 357 360 -0.002580 - 357 405 -0.002568 - 357 1461 -0.000789 - 357 1462 1.295786 - 357 1463 2.190397 - 358 311 -14.011138 - 358 356 -1.807035 - 358 358 -109.328750 - 358 359 103.430250 - 358 1463 -0.354849 - 359 309 -0.000026 - 359 310 -4.755391 - 359 311 -8.038513 - 359 354 -0.000027 - 359 355 -4.772648 - 359 356 -8.067680 - 359 357 0.001458 - 359 358 20.524561 - 359 359 34.694713 - 359 360 -0.000027 - 359 361 -4.772618 - 359 362 -8.067633 - 359 405 -0.000027 - 359 406 -4.751601 - 359 407 -8.032107 - 359 1461 -0.000008 - 359 1462 -1.460094 - 359 1463 -2.468143 - 360 312 -0.304690 - 360 313 54.850702 - 360 314 92.719559 - 360 357 -0.112290 - 360 358 6.193038 - 360 359 10.468712 - 360 360 574.921320 - 360 361 -397.940350 - 360 362 -672.677880 - 360 363 -0.002595 - 360 408 -0.002584 - 360 1464 -0.000794 - 360 1465 1.452377 - 360 1466 2.455096 - 361 314 -15.021105 - 361 359 -1.695952 - 361 361 -109.326800 - 361 362 104.371310 - 361 1466 -0.397730 - 362 312 -0.000026 - 362 313 -4.755227 - 362 314 -8.038230 - 362 357 -0.000027 - 362 358 -4.772618 - 362 359 -8.067633 - 362 360 0.001459 - 362 361 20.528588 - 362 362 34.701505 - 362 363 -0.000027 - 362 364 -4.772747 - 362 365 -8.067845 - 362 408 -0.000027 - 362 409 -4.754914 - 362 410 -8.037701 - 362 1464 -0.000008 - 362 1465 -1.460875 - 362 1466 -2.469460 - 363 315 -0.328281 - 363 316 57.167553 - 363 317 96.636031 - 363 360 -0.050669 - 363 361 2.429992 - 363 362 4.107656 - 363 363 574.917050 - 363 364 -399.750220 - 363 365 -675.737770 - 363 366 -0.057928 - 363 367 3.143767 - 363 368 5.314221 - 363 411 -0.002590 - 363 1467 -0.000796 - 363 1468 1.526241 - 363 1469 2.579958 - 364 317 -15.655569 - 364 362 -0.665447 - 364 364 -109.325560 - 364 365 104.869620 - 364 368 -0.860912 - 364 1469 -0.417957 - 365 315 -0.000026 - 365 316 -4.755185 - 365 317 -8.038164 - 365 360 -0.000027 - 365 361 -4.772747 - 365 362 -8.067845 - 365 363 0.001459 - 365 364 20.528470 - 365 365 34.701317 - 365 366 -0.000027 - 365 367 -4.772566 - 365 368 -8.067542 - 365 411 -0.000027 - 365 412 -4.754903 - 365 413 -8.037688 - 365 1467 -0.000008 - 365 1468 -1.460863 - 365 1469 -2.469443 - 366 318 -0.328822 - 366 319 57.223219 - 366 320 96.730076 - 366 363 -0.002593 - 366 366 574.959350 - 366 367 -401.671520 - 366 368 -678.985270 - 366 369 -0.126107 - 366 370 7.551997 - 366 371 12.765896 - 366 414 -0.002583 - 366 1470 -0.000794 - 366 1471 1.466363 - 366 1472 2.478738 - 367 320 -15.670861 - 367 367 -109.326520 - 367 368 105.393740 - 367 371 -2.068102 - 367 1472 -0.401560 - 368 318 -0.000026 - 368 319 -4.755219 - 368 320 -8.038218 - 368 363 -0.000027 - 368 364 -4.772566 - 368 365 -8.067542 - 368 366 0.001459 - 368 367 20.529394 - 368 368 34.702875 - 368 369 -0.000027 - 368 370 -4.772133 - 368 371 -8.066813 - 368 414 -0.000027 - 368 415 -4.756286 - 368 416 -8.040022 - 368 1470 -0.000008 - 368 1471 -1.460983 - 368 1472 -2.469644 - 369 321 -0.333924 - 369 322 55.453699 - 369 323 93.738933 - 369 366 -0.002575 - 369 369 575.007240 - 369 370 -401.783220 - 369 371 -679.174360 - 369 372 -0.176068 - 369 373 9.558048 - 369 374 16.156913 - 369 417 -0.002567 - 369 1473 -0.000788 - 369 1474 1.317196 - 369 1475 2.226588 - 370 323 -15.186317 - 370 370 -109.327940 - 370 371 105.421310 - 370 374 -2.617468 - 370 1475 -0.360713 - 371 321 -0.000025 - 371 322 -4.758024 - 371 323 -8.042964 - 371 366 -0.000027 - 371 367 -4.772133 - 371 368 -8.066813 - 371 369 0.001457 - 371 370 20.383029 - 371 371 34.455466 - 371 372 -0.000026 - 371 373 -4.623909 - 371 374 -7.816251 - 371 417 -0.000027 - 371 418 -4.756408 - 371 419 -8.040232 - 371 1473 -0.000008 - 371 1474 -1.460347 - 371 1475 -2.468570 - 372 324 -0.320531 - 372 325 50.170634 - 372 326 84.808394 - 372 369 -0.002473 - 372 372 540.553300 - 372 373 -376.743370 - 372 374 -636.846550 - 372 375 -0.198073 - 372 376 10.116997 - 372 377 17.101772 - 372 420 -0.002441 - 372 1476 -0.000831 - 372 1477 1.183747 - 372 1478 2.001004 - 373 326 -13.739575 - 373 373 -102.771570 - 373 374 98.833318 - 373 377 -2.770551 - 373 1478 -0.324169 - 374 324 -0.000024 - 374 325 -4.426915 - 374 326 -7.483253 - 374 369 -0.000026 - 374 370 -4.623909 - 374 371 -7.816251 - 374 372 0.001371 - 374 373 19.517038 - 374 374 32.991584 - 374 375 -0.000024 - 374 376 -4.337745 - 374 377 -7.332525 - 374 420 -0.000025 - 374 421 -4.564156 - 374 422 -7.715244 - 374 1476 -0.000009 - 374 1477 -1.552835 - 374 1478 -2.624910 - 375 327 -0.266104 - 375 328 45.134249 - 375 329 76.294935 - 375 372 -0.002297 - 375 375 506.055980 - 375 376 -349.110060 - 375 377 -590.135650 - 375 378 -0.130371 - 375 379 7.799108 - 375 380 13.183603 - 375 423 -0.002265 - 375 1479 -0.000878 - 375 1480 1.038250 - 375 1481 1.755057 - 376 329 -12.360385 - 376 376 -96.216272 - 376 377 91.532256 - 376 380 -2.135804 - 376 1481 -0.284326 - 377 327 -0.000022 - 377 328 -4.092152 - 377 329 -6.917374 - 377 372 -0.000024 - 377 373 -4.337745 - 377 374 -7.332525 - 377 375 0.001283 - 377 376 18.374990 - 377 377 31.061078 - 377 378 -0.000022 - 377 379 -4.000002 - 377 380 -6.761598 - 377 423 -0.000024 - 377 424 -4.276954 - 377 425 -7.229763 - 377 1479 -0.000009 - 377 1480 -1.657390 - 377 1481 -2.801652 - 378 330 -0.237342 - 378 331 40.527498 - 378 332 68.507639 - 378 375 -0.002101 - 378 378 459.883580 - 378 379 -309.758740 - 378 380 -523.615800 - 378 426 -0.002022 - 378 1482 -0.000959 - 378 1483 0.959498 - 378 1484 1.621934 - 379 332 -11.098836 - 379 379 -87.470802 - 379 380 81.123098 - 379 1484 -0.262761 - 380 330 -0.000019 - 380 331 -3.707993 - 380 332 -6.267987 - 380 375 -0.000022 - 380 376 -4.000002 - 380 377 -6.761598 - 380 378 0.001147 - 380 379 13.394024 - 380 380 22.641243 - 380 426 -0.000021 - 380 427 -3.849901 - 380 428 -6.507868 - 380 1482 -0.000010 - 380 1483 -1.826358 - 380 1484 -3.087274 - 381 381 1.000000 - 382 382 1.000000 - 383 383 1.000000 - 384 384 1.000000 - 385 385 1.000000 - 386 386 1.000000 - 387 387 1.000000 - 388 388 1.000000 - 389 389 1.000000 - 390 390 1.000000 - 391 391 1.000000 - 392 392 1.000000 - 393 393 1.000000 - 394 394 1.000000 - 395 395 1.000000 - 396 396 505.517050 - 396 397 -310.196010 - 396 398 -524.355000 - 396 399 -0.074876 - 396 400 13.837884 - 396 401 23.391558 - 396 444 -0.189581 - 396 1500 -0.000949 - 396 1501 0.967368 - 396 1502 1.635238 - 397 397 -96.262683 - 397 398 80.758997 - 397 401 -3.789401 - 397 1502 -0.264905 - 398 396 0.001241 - 398 397 9.786258 - 398 398 16.542684 - 398 399 -0.000025 - 398 400 -4.294039 - 398 401 -7.258644 - 398 444 -0.000023 - 398 445 -3.809722 - 398 446 -6.439950 - 398 1500 -0.000010 - 398 1501 -1.671730 - 398 1502 -2.825890 - 399 351 -0.223521 - 399 352 49.071106 - 399 353 82.949797 - 399 396 -0.002406 - 399 399 528.658800 - 399 400 -358.894870 - 399 401 -606.675880 - 399 402 -0.002513 - 399 447 -0.002270 - 399 1503 -0.000894 - 399 1504 1.107872 - 399 1505 1.872748 - 400 353 -13.438094 - 400 400 -100.626270 - 400 401 93.934360 - 400 1505 -0.303383 - 401 351 -0.000025 - 401 352 -4.547600 - 401 353 -7.687263 - 401 396 -0.000025 - 401 397 -4.294039 - 401 398 -7.258644 - 401 399 0.001346 - 401 400 18.984973 - 401 401 32.092198 - 401 402 -0.000026 - 401 403 -4.485373 - 401 404 -7.582075 - 401 447 -0.000024 - 401 448 -4.051385 - 401 449 -6.848461 - 401 1503 -0.000009 - 401 1504 -1.595325 - 401 1505 -2.696737 - 402 354 -0.244770 - 402 355 51.214427 - 402 356 86.572821 - 402 399 -0.073997 - 402 400 4.331028 - 402 401 7.321170 - 402 402 551.772320 - 402 403 -379.066620 - 402 404 -640.773810 - 402 405 -0.002631 - 402 450 -0.002448 - 402 1506 -0.000859 - 402 1507 1.370675 - 402 1508 2.316988 - 403 356 -14.025016 - 403 401 -1.186020 - 403 403 -105.000440 - 403 404 99.271279 - 403 1508 -0.375349 - 404 354 -0.000026 - 404 355 -4.650736 - 404 356 -7.861600 - 404 399 -0.000026 - 404 400 -4.485373 - 404 401 -7.582075 - 404 402 0.001404 - 404 403 19.704360 - 404 404 33.308234 - 404 405 -0.000027 - 404 406 -4.676416 - 404 407 -7.905008 - 404 450 -0.000026 - 404 451 -4.352907 - 404 452 -7.358149 - 404 1506 -0.000009 - 404 1507 -1.527188 - 404 1508 -2.581557 - 405 357 -0.316568 - 405 358 58.288778 - 405 359 98.531351 - 405 402 -0.156686 - 405 403 12.333979 - 405 404 20.849344 - 405 405 574.922960 - 405 406 -407.928120 - 405 407 -689.561680 - 405 408 -0.002714 - 405 453 -0.002612 - 405 1509 -0.000832 - 405 1510 1.778705 - 405 1511 3.006723 - 406 359 -15.962269 - 406 404 -3.377559 - 406 406 -109.377610 - 406 407 106.979650 - 406 1511 -0.487082 - 407 357 -0.000027 - 407 358 -4.751601 - 407 359 -8.032107 - 407 402 -0.000027 - 407 403 -4.676416 - 407 404 -7.905008 - 407 405 0.001462 - 407 406 20.272988 - 407 407 34.269454 - 407 408 -0.000028 - 407 409 -4.773878 - 407 410 -8.069763 - 407 453 -0.000027 - 407 454 -4.595281 - 407 455 -7.767864 - 407 1509 -0.000009 - 407 1510 -1.463582 - 407 1511 -2.474039 - 408 360 -0.366171 - 408 361 65.469467 - 408 362 110.669510 - 408 405 -0.161983 - 408 406 13.362148 - 408 407 22.587375 - 408 408 575.070180 - 408 409 -416.697170 - 408 410 -704.384500 - 408 411 -0.002744 - 408 456 -0.002727 - 408 1512 -0.000839 - 408 1513 2.322363 - 408 1514 3.925721 - 409 362 -17.928632 - 409 407 -3.659093 - 409 409 -109.380610 - 409 410 109.372870 - 409 1514 -0.635955 - 410 360 -0.000027 - 410 361 -4.754914 - 410 362 -8.037701 - 410 405 -0.000028 - 410 406 -4.773878 - 410 407 -8.069763 - 410 408 0.001465 - 410 409 20.519955 - 410 410 34.686913 - 410 411 -0.000029 - 410 412 -4.773891 - 410 413 -8.069780 - 410 456 -0.000028 - 410 457 -4.744732 - 410 458 -8.020490 - 410 1512 -0.000009 - 410 1513 -1.460309 - 410 1514 -2.468505 - 411 363 -0.409294 - 411 364 69.707805 - 411 365 117.834070 - 411 408 -0.094099 - 411 409 6.685379 - 411 410 11.300958 - 411 411 575.065950 - 411 412 -418.959700 - 411 413 -708.209480 - 411 414 -0.070760 - 411 415 4.390156 - 411 416 7.421117 - 411 459 -0.002743 - 411 1515 -0.000844 - 411 1516 2.663612 - 411 1517 4.502570 - 412 365 -19.089266 - 412 410 -1.830714 - 412 412 -109.381040 - 412 413 109.990850 - 412 416 -1.202192 - 412 1517 -0.729400 - 413 363 -0.000027 - 413 364 -4.754903 - 413 365 -8.037688 - 413 408 -0.000029 - 413 409 -4.773891 - 413 410 -8.069780 - 413 411 0.001466 - 413 412 20.522181 - 413 413 34.690686 - 413 414 -0.000029 - 413 415 -4.773896 - 413 416 -8.069790 - 413 459 -0.000029 - 413 460 -4.746953 - 413 461 -8.024250 - 413 1515 -0.000009 - 413 1516 -1.460307 - 413 1517 -2.468503 - 414 366 -0.396773 - 414 367 68.486522 - 414 368 115.769570 - 414 411 -0.002750 - 414 414 575.107380 - 414 415 -418.331300 - 414 416 -707.146920 - 414 417 -0.146766 - 414 418 11.865530 - 414 419 20.057491 - 414 462 -0.002737 - 414 1518 -0.000841 - 414 1519 2.450524 - 414 1520 4.142363 - 415 368 -18.754848 - 415 415 -109.381500 - 415 416 109.818010 - 415 419 -3.249253 - 415 1520 -0.671049 - 416 366 -0.000027 - 416 367 -4.756286 - 416 368 -8.040022 - 416 411 -0.000029 - 416 412 -4.773896 - 416 413 -8.069790 - 416 414 0.001465 - 416 415 20.527906 - 416 416 34.700360 - 416 417 -0.000028 - 416 418 -4.773719 - 416 419 -8.069494 - 416 462 -0.000029 - 416 463 -4.752297 - 416 464 -8.033280 - 416 1518 -0.000009 - 416 1519 -1.459477 - 416 1520 -2.467098 - 417 369 -0.376333 - 417 370 64.191733 - 417 371 108.509700 - 417 414 -0.002722 - 417 417 575.070290 - 417 418 -416.266450 - 417 419 -703.656800 - 417 420 -0.200023 - 417 421 14.573841 - 417 422 24.635603 - 417 465 -0.002712 - 417 1521 -0.000833 - 417 1522 2.005103 - 417 1523 3.389426 - 418 371 -17.578799 - 418 418 -109.379080 - 418 419 109.259190 - 418 422 -3.990925 - 418 1523 -0.549078 - 419 369 -0.000027 - 419 370 -4.756408 - 419 371 -8.040232 - 419 414 -0.000028 - 419 415 -4.773719 - 419 416 -8.069494 - 419 417 0.001464 - 419 418 20.483830 - 419 419 34.625861 - 419 420 -0.000028 - 419 421 -4.725012 - 419 422 -7.987154 - 419 465 -0.000028 - 419 466 -4.756032 - 419 467 -8.039597 - 419 1521 -0.000009 - 419 1522 -1.460429 - 419 1523 -2.468710 - 420 372 -0.341759 - 420 373 56.952369 - 420 374 96.272217 - 420 417 -0.002661 - 420 420 563.528350 - 420 421 -403.020410 - 420 422 -681.265200 - 420 423 -0.236419 - 420 424 15.644070 - 420 425 26.444736 - 420 468 -0.002651 - 420 1524 -0.000840 - 420 1525 1.604189 - 420 1526 2.711719 - 421 374 -15.596386 - 421 421 -107.190430 - 421 422 105.730240 - 421 425 -4.284033 - 421 1526 -0.439295 - 422 372 -0.000025 - 422 373 -4.564156 - 422 374 -7.715244 - 422 417 -0.000028 - 422 418 -4.725012 - 422 419 -7.987154 - 422 420 0.001433 - 422 421 20.027838 - 422 422 33.855038 - 422 423 -0.000026 - 422 424 -4.528858 - 422 425 -7.655582 - 422 468 -0.000028 - 422 469 -4.706510 - 422 470 -7.955879 - 422 1524 -0.000009 - 422 1525 -1.491316 - 422 1526 -2.520918 - 423 375 -0.292316 - 423 376 48.568136 - 423 377 82.099576 - 423 420 -0.002515 - 423 423 528.961250 - 423 424 -372.813210 - 423 425 -630.203450 - 423 426 -0.261328 - 423 427 14.276224 - 423 428 24.132512 - 423 471 -0.002454 - 423 1527 -0.000884 - 423 1528 1.321505 - 423 1529 2.233873 - 424 377 -13.300440 - 424 424 -100.628620 - 424 425 97.740717 - 424 428 -3.909488 - 424 1529 -0.361887 - 425 375 -0.000024 - 425 376 -4.276954 - 425 377 -7.229763 - 425 420 -0.000026 - 425 421 -4.528858 - 425 422 -7.655582 - 425 423 0.001345 - 425 424 18.965360 - 425 425 32.059040 - 425 426 -0.000024 - 425 427 -4.137203 - 425 428 -6.993523 - 425 471 -0.000026 - 425 472 -4.419515 - 425 473 -7.470749 - 425 1527 -0.000009 - 425 1528 -1.591578 - 425 1529 -2.690404 - 426 378 -0.145449 - 426 379 37.938706 - 426 380 64.131542 - 426 423 -0.002265 - 426 426 471.366340 - 426 427 -314.136120 - 426 428 -531.015340 - 426 474 -0.002185 - 426 1530 -0.000976 - 426 1531 1.157591 - 426 1532 1.956790 - 427 380 -10.389604 - 427 427 -89.695520 - 427 428 82.134742 - 427 1532 -0.317002 - 428 378 -0.000021 - 428 379 -3.849901 - 428 380 -6.507868 - 428 423 -0.000024 - 428 424 -4.137203 - 428 425 -6.993523 - 428 426 0.001180 - 428 427 13.771905 - 428 428 23.280012 - 428 474 -0.000023 - 428 475 -3.991607 - 428 476 -6.747407 - 428 1530 -0.000010 - 428 1531 -1.783164 - 428 1532 -3.014258 - 429 429 1.000000 - 430 430 1.000000 - 431 431 1.000000 - 432 432 1.000000 - 433 433 1.000000 - 434 434 1.000000 - 435 435 1.000000 - 436 436 1.000000 - 437 437 1.000000 - 438 438 1.000000 - 439 439 1.000000 - 440 440 1.000000 - 441 441 1.000000 - 442 442 1.000000 - 443 443 1.000000 - 444 396 -0.002207 - 444 397 19.835020 - 444 398 33.529096 - 444 444 425.372960 - 444 445 -269.140690 - 444 446 -454.955080 - 444 447 -0.002126 - 444 492 -0.022188 - 444 1548 -0.001147 - 444 1549 1.028724 - 444 1550 1.738954 - 445 398 -5.431630 - 445 445 -80.988821 - 445 446 70.082321 - 445 1550 -0.281703 - 446 396 -0.000023 - 446 397 -3.809722 - 446 398 -6.439950 - 446 444 0.001072 - 446 445 12.675962 - 446 446 21.427431 - 446 447 -0.000022 - 446 448 -3.670066 - 446 449 -6.203874 - 446 492 -0.000020 - 446 493 -3.206808 - 446 494 -5.420784 - 446 1548 -0.000012 - 446 1549 -1.980295 - 446 1550 -3.347488 - 447 399 -0.008443 - 447 400 37.150315 - 447 401 62.798893 - 447 444 -0.126281 - 447 445 2.718758 - 447 446 4.595786 - 447 447 459.711700 - 447 448 -309.652200 - 447 449 -523.436070 - 447 450 -0.002325 - 447 495 -0.010442 - 447 1551 -0.001067 - 447 1552 1.285298 - 447 1553 2.172668 - 448 401 -10.173335 - 448 446 -0.744497 - 448 448 -87.547250 - 448 449 80.902187 - 448 1553 -0.351962 - 449 399 -0.000024 - 449 400 -4.051385 - 449 401 -6.848461 - 449 444 -0.000022 - 449 445 -3.670066 - 449 446 -6.203874 - 449 447 0.001179 - 449 448 17.112696 - 449 449 28.927296 - 449 450 -0.000024 - 449 451 -4.001457 - 449 452 -6.764063 - 449 495 -0.000022 - 449 496 -3.543110 - 449 497 -5.989273 - 449 1551 -0.000011 - 449 1552 -1.836874 - 449 1553 -3.105053 - 450 402 -0.137826 - 450 403 49.956892 - 450 404 84.447076 - 450 447 -0.184408 - 450 448 13.093529 - 450 449 22.133302 - 450 450 505.916180 - 450 451 -360.192350 - 450 452 -608.868820 - 450 453 -0.002553 - 450 498 -0.002277 - 450 1554 -0.000981 - 450 1555 1.850248 - 450 1556 3.127657 - 451 404 -13.680288 - 451 449 -3.585488 - 451 451 -96.302513 - 451 452 94.350579 - 451 1556 -0.506663 - 452 402 -0.000026 - 452 403 -4.352907 - 452 404 -7.358149 - 452 447 -0.000024 - 452 448 -4.001457 - 452 449 -6.764063 - 452 450 0.001293 - 452 451 18.242362 - 452 452 30.836875 - 452 453 -0.000027 - 452 454 -4.339397 - 452 455 -7.335312 - 452 498 -0.000024 - 452 499 -3.870643 - 452 500 -6.542931 - 452 1554 -0.000010 - 452 1555 -1.667175 - 452 1556 -2.818189 - 453 405 -0.313866 - 453 406 64.594518 - 453 407 109.190570 - 453 450 -0.304404 - 453 451 22.638721 - 453 452 38.268474 - 453 453 540.601510 - 453 454 -405.612280 - 453 455 -685.646990 - 453 456 -0.002777 - 453 501 -0.002562 - 453 1557 -0.000938 - 453 1558 2.896472 - 453 1559 4.896196 - 454 407 -17.688576 - 454 452 -6.199264 - 454 454 -102.870770 - 454 455 106.489070 - 454 1559 -0.793148 - 455 405 -0.000027 - 455 406 -4.595281 - 455 407 -7.767864 - 455 450 -0.000027 - 455 451 -4.339397 - 455 452 -7.335312 - 455 453 0.001383 - 455 454 19.402726 - 455 455 32.798363 - 455 456 -0.000029 - 455 457 -4.626525 - 455 458 -7.820678 - 455 501 -0.000027 - 455 502 -4.267851 - 455 503 -7.214375 - 455 1557 -0.000010 - 455 1558 -1.562151 - 455 1559 -2.640660 - 456 408 -0.538198 - 456 409 80.044732 - 456 410 135.307540 - 456 453 -0.365817 - 456 454 25.964243 - 456 455 43.889957 - 456 456 575.128090 - 456 457 -445.928850 - 456 458 -753.797640 - 456 459 -0.002929 - 456 504 -0.002848 - 456 1560 -0.000901 - 456 1561 4.281811 - 456 1562 7.237969 - 457 410 -21.919324 - 457 455 -7.109820 - 457 457 -109.437850 - 457 458 117.232730 - 457 1562 -1.172486 - 458 408 -0.000028 - 458 409 -4.744732 - 458 410 -8.020490 - 458 453 -0.000029 - 458 454 -4.626525 - 458 455 -7.820678 - 458 456 0.001471 - 458 457 20.272320 - 458 458 34.268312 - 458 459 -0.000031 - 458 460 -4.775163 - 458 461 -8.071929 - 458 504 -0.000030 - 458 505 -4.644802 - 458 506 -7.851568 - 458 1560 -0.000009 - 458 1561 -1.468842 - 458 1562 -2.482929 - 459 411 -0.629079 - 459 412 88.993349 - 459 413 150.434360 - 459 456 -0.185425 - 459 457 15.650290 - 459 458 26.455233 - 459 459 575.203220 - 459 460 -455.297780 - 459 461 -769.635370 - 459 462 -0.099876 - 459 463 9.533252 - 459 464 16.114999 - 459 507 -0.002946 - 459 1563 -0.000911 - 459 1564 5.459841 - 459 1565 9.229315 - 460 413 -24.369717 - 460 458 -4.285481 - 460 460 -109.441740 - 460 461 119.787440 - 460 464 -2.610460 - 460 1565 -1.495057 - 461 411 -0.000029 - 461 412 -4.746953 - 461 413 -8.024250 - 461 456 -0.000031 - 461 457 -4.775163 - 461 458 -8.071929 - 461 459 0.001474 - 461 460 20.525033 - 461 461 34.695505 - 461 462 -0.000031 - 461 463 -4.774974 - 461 464 -8.071610 - 461 507 -0.000031 - 461 508 -4.748494 - 461 509 -8.026854 - 461 1563 -0.000010 - 461 1564 -1.467191 - 461 1565 -2.480140 - 462 414 -0.600986 - 462 415 83.975321 - 462 416 141.951820 - 462 459 -0.002942 - 462 462 575.164940 - 462 463 -445.732740 - 462 464 -753.466160 - 462 465 -0.268356 - 462 466 21.512569 - 462 467 36.364846 - 462 510 -0.002923 - 462 1566 -0.000902 - 462 1567 4.625658 - 462 1568 7.819207 - 463 416 -22.995641 - 463 463 -109.438060 - 463 464 117.178100 - 463 467 -5.890780 - 463 1568 -1.266638 - 464 414 -0.000029 - 464 415 -4.752297 - 464 416 -8.033280 - 464 459 -0.000031 - 464 460 -4.774974 - 464 461 -8.071610 - 464 462 0.001473 - 464 463 20.524459 - 464 464 34.694530 - 464 465 -0.000030 - 464 466 -4.774392 - 464 467 -8.070633 - 464 510 -0.000031 - 464 511 -4.745694 - 464 512 -8.022116 - 464 1566 -0.000009 - 464 1567 -1.464845 - 464 1568 -2.476172 - 465 417 -0.480449 - 465 418 74.431540 - 465 419 125.819070 - 465 462 -0.002892 - 465 465 575.208150 - 465 466 -436.815800 - 465 467 -738.393420 - 465 468 -0.311075 - 465 469 23.423199 - 465 470 39.594554 - 465 513 -0.002875 - 465 1569 -0.000886 - 465 1570 3.338117 - 465 1571 5.642754 - 466 419 -20.382310 - 466 466 -109.434080 - 466 467 114.747480 - 466 470 -6.414040 - 466 1571 -0.914080 - 467 417 -0.000028 - 467 418 -4.756032 - 467 419 -8.039597 - 467 462 -0.000030 - 467 463 -4.774392 - 467 464 -8.070633 - 467 465 0.001471 - 467 466 20.524231 - 467 467 34.694155 - 467 468 -0.000030 - 467 469 -4.773109 - 467 470 -8.068458 - 467 513 -0.000030 - 467 514 -4.746594 - 467 515 -8.023642 - 467 1569 -0.000009 - 467 1570 -1.461849 - 467 1571 -2.471110 - 468 420 -0.367998 - 468 421 65.074723 - 468 422 110.002230 - 468 465 -0.002838 - 468 468 575.142680 - 468 469 -426.832260 - 468 470 -721.516840 - 468 471 -0.366704 - 468 472 23.835402 - 468 473 40.291363 - 468 516 -0.002822 - 468 1572 -0.000870 - 468 1573 2.352503 - 468 1574 3.976670 - 469 422 -17.820172 - 469 469 -109.431520 - 469 470 112.021640 - 469 473 -6.526994 - 469 1574 -0.644195 - 470 420 -0.000028 - 470 421 -4.706510 - 470 422 -7.955879 - 470 465 -0.000030 - 470 466 -4.773109 - 470 467 -8.068458 - 470 468 0.001468 - 470 469 20.326504 - 470 470 34.359905 - 470 471 -0.000028 - 470 472 -4.625558 - 470 473 -7.819042 - 470 516 -0.000029 - 470 517 -4.746523 - 470 518 -8.023518 - 470 1572 -0.000009 - 470 1573 -1.462551 - 470 1574 -2.472294 - 471 423 -0.225901 - 471 424 53.596444 - 471 425 90.599428 - 471 468 -0.002696 - 471 471 540.768090 - 471 472 -406.134360 - 471 473 -686.529530 - 471 474 -0.435125 - 471 475 35.331745 - 471 476 59.724749 - 471 519 -0.002628 - 471 1575 -0.000906 - 471 1576 1.800159 - 471 1577 3.042988 - 472 425 -14.677058 - 472 472 -102.867650 - 472 473 106.642090 - 472 476 -9.675294 - 472 1577 -0.492950 - 473 423 -0.000026 - 473 424 -4.419515 - 473 425 -7.470749 - 473 468 -0.000028 - 473 469 -4.625558 - 473 470 -7.819042 - 473 471 0.001379 - 473 472 19.409339 - 473 473 32.809543 - 473 474 -0.000025 - 473 475 -4.288222 - 473 476 -7.248807 - 473 519 -0.000027 - 473 520 -4.510282 - 473 521 -7.624180 - 473 1575 -0.000009 - 473 1576 -1.554243 - 473 1577 -2.627293 - 474 426 -0.051082 - 474 427 29.290310 - 474 428 49.512306 - 474 471 -0.002419 - 474 474 494.424700 - 474 475 -319.051060 - 474 476 -539.323610 - 474 1578 -0.000959 - 474 1579 1.337859 - 474 1580 2.261516 - 475 428 -8.021037 - 475 475 -94.106391 - 475 476 83.202806 - 475 1580 -0.366362 - 476 426 -0.000023 - 476 427 -3.991607 - 476 428 -6.747407 - 476 471 -0.000025 - 476 472 -4.288222 - 476 473 -7.248807 - 476 474 0.001214 - 476 475 9.990103 - 476 476 16.887259 - 476 1578 -0.000010 - 476 1579 -1.699738 - 476 1580 -2.873235 - 477 477 1.000000 - 478 478 1.000000 - 479 479 1.000000 - 480 480 1.000000 - 481 481 1.000000 - 482 482 1.000000 - 483 483 1.000000 - 484 484 1.000000 - 485 485 1.000000 - 486 486 1.000000 - 487 487 1.000000 - 488 488 1.000000 - 489 489 1.000000 - 490 490 1.000000 - 491 491 1.000000 - 492 444 -0.001907 - 492 445 22.310249 - 492 446 37.713218 - 492 492 356.249580 - 492 493 -231.453830 - 492 494 -391.249300 - 492 495 -0.001868 - 492 540 -0.004887 - 492 1596 -0.001403 - 492 1597 1.059790 - 492 1598 1.791468 - 493 446 -6.109375 - 493 493 -67.884610 - 493 494 60.276811 - 493 1598 -0.290205 - 494 444 -0.000020 - 494 445 -3.206808 - 494 446 -5.420784 - 494 492 0.000905 - 494 493 11.464227 - 494 494 19.379115 - 494 495 -0.000019 - 494 496 -3.140288 - 494 497 -5.308339 - 494 540 -0.000017 - 494 541 -2.750727 - 494 542 -4.649826 - 494 1596 -0.000015 - 494 1597 -2.358791 - 494 1598 -3.987297 - 495 447 -0.002132 - 495 448 32.643080 - 495 449 55.179862 - 495 492 -0.120564 - 495 493 9.409640 - 495 494 15.906044 - 495 495 402.409670 - 495 496 -278.459320 - 495 497 -470.707630 - 495 498 -0.002094 - 495 543 -0.001852 - 495 1599 -0.001258 - 495 1600 1.515665 - 495 1601 2.562080 - 496 449 -8.938871 - 496 494 -2.576667 - 496 496 -76.645502 - 496 497 72.743432 - 496 1601 -0.415036 - 497 447 -0.000022 - 497 448 -3.543110 - 497 449 -5.989273 - 497 492 -0.000019 - 497 493 -3.140288 - 497 494 -5.308339 - 497 495 0.001037 - 497 496 15.340356 - 497 497 25.931334 - 497 498 -0.000022 - 497 499 -3.480093 - 497 500 -5.882749 - 497 543 -0.000019 - 497 544 -3.078045 - 497 545 -5.203128 - 497 1599 -0.000013 - 497 1600 -2.090224 - 497 1601 -3.533314 - 498 450 -0.146500 - 498 451 47.247510 - 498 452 79.867150 - 498 495 -0.298212 - 498 496 21.802822 - 498 497 36.855490 - 498 498 437.055990 - 498 499 -326.928450 - 498 500 -552.639430 - 498 501 -0.002374 - 498 546 -0.002104 - 498 1602 -0.001187 - 498 1603 2.784652 - 498 1604 4.707173 - 499 452 -12.938001 - 499 497 -5.970284 - 499 499 -83.216692 - 499 500 85.709818 - 499 1604 -0.762515 - 500 450 -0.000024 - 500 451 -3.870643 - 500 452 -6.542931 - 500 495 -0.000022 - 500 496 -3.480093 - 500 497 -5.882749 - 500 498 0.001126 - 500 499 16.556385 - 500 500 27.986897 - 500 501 -0.000025 - 500 502 -3.853724 - 500 503 -6.514330 - 500 546 -0.000022 - 500 547 -3.415351 - 500 548 -5.773305 - 500 1602 -0.000012 - 500 1603 -1.927240 - 500 1604 -3.257804 - 501 453 -0.323361 - 501 454 69.551885 - 501 455 117.570510 - 501 498 -0.416408 - 501 499 35.863226 - 501 500 60.623151 - 501 501 494.934260 - 501 502 -399.201730 - 501 503 -674.810610 - 501 504 -0.002761 - 501 549 -0.002446 - 501 1605 -0.001082 - 501 1606 5.196654 - 501 1607 8.784423 - 502 455 -19.045476 - 502 500 -9.820310 - 502 502 -94.176106 - 502 503 104.971530 - 502 1607 -1.422962 - 503 453 -0.000027 - 503 454 -4.267851 - 503 455 -7.214375 - 503 498 -0.000025 - 503 499 -3.853724 - 503 500 -6.514330 - 503 501 0.001273 - 503 502 18.002224 - 503 503 30.430955 - 503 504 -0.000029 - 503 505 -4.333073 - 503 506 -7.324626 - 503 549 -0.000026 - 503 550 -3.838932 - 503 551 -6.489330 - 503 1605 -0.000011 - 503 1606 -1.698078 - 503 1607 -2.870432 - 504 456 -0.585961 - 504 457 100.390860 - 504 458 169.700600 - 504 501 -0.560884 - 504 502 47.350486 - 504 503 80.041261 - 504 504 552.652800 - 504 505 -478.995230 - 504 506 -809.692940 - 504 507 -0.003098 - 504 552 -0.002891 - 504 1608 -0.026456 - 504 1609 9.027047 - 504 1610 15.259307 - 505 458 -27.489782 - 505 503 -12.965548 - 505 505 -105.138580 - 505 506 126.283570 - 505 1610 -2.471763 - 506 456 -0.000030 - 506 457 -4.644802 - 506 458 -7.851568 - 506 501 -0.000029 - 506 502 -4.333073 - 506 503 -7.324626 - 506 504 0.001422 - 506 505 19.561832 - 506 506 33.067302 - 506 507 -0.000032 - 506 508 -4.679025 - 506 509 -7.909418 - 506 552 -0.000030 - 506 553 -4.367382 - 506 554 -7.382617 - 506 1608 -0.000010 - 506 1609 -1.525749 - 506 1610 -2.579124 - 507 459 -0.859684 - 507 460 125.415760 - 507 461 212.002800 - 507 504 -0.438609 - 507 505 37.782580 - 507 506 63.867626 - 507 507 576.103930 - 507 508 -540.566210 - 507 509 -913.773110 - 507 510 -0.248034 - 507 511 28.689754 - 507 512 48.497120 - 507 555 -0.003235 - 507 1611 -0.067715 - 507 1612 13.074018 - 507 1613 22.100320 - 508 461 -34.342032 - 508 506 -10.345390 - 508 508 -109.529350 - 508 509 142.911690 - 508 512 -7.855611 - 508 1613 -3.579853 - 509 459 -0.000031 - 509 460 -4.748494 - 509 461 -8.026854 - 509 504 -0.000032 - 509 505 -4.679025 - 509 506 -7.909418 - 509 507 0.001484 - 509 508 20.434084 - 509 509 34.541762 - 509 510 -0.000033 - 509 511 -4.776600 - 509 512 -8.074358 - 509 555 -0.000034 - 509 556 -4.756352 - 509 557 -8.040138 - 509 1611 -0.000010 - 509 1612 -1.461315 - 509 1613 -2.470208 - 510 462 -0.712202 - 510 463 106.312150 - 510 464 179.709950 - 510 507 -0.003185 - 510 510 575.508870 - 510 511 -494.093410 - 510 512 -835.214800 - 510 513 -0.412417 - 510 514 42.569293 - 510 515 71.959131 - 510 558 -0.003169 - 510 1614 -0.031451 - 510 1615 9.523716 - 510 1616 16.098875 - 511 464 -29.111112 - 511 511 -109.513980 - 511 512 130.227040 - 511 515 -11.656244 - 511 1616 -2.607751 - 512 462 -0.000031 - 512 463 -4.745694 - 512 464 -8.022116 - 512 507 -0.000033 - 512 508 -4.776600 - 512 509 -8.074358 - 512 510 0.001483 - 512 511 20.528275 - 512 512 34.700975 - 512 513 -0.000032 - 512 514 -4.775995 - 512 515 -8.073342 - 512 558 -0.000033 - 512 559 -4.752496 - 512 560 -8.033613 - 512 1614 -0.000010 - 512 1615 -1.465199 - 512 1616 -2.476771 - 513 465 -0.569316 - 513 466 85.410030 - 513 467 144.377110 - 513 510 -0.003088 - 513 513 575.190690 - 513 514 -462.341610 - 513 515 -781.542260 - 513 516 -0.432905 - 513 517 35.396470 - 513 518 59.834150 - 513 561 -0.003071 - 513 1617 -0.000949 - 513 1618 5.839888 - 513 1619 9.871747 - 514 467 -23.387800 - 514 514 -109.495420 - 514 515 121.581330 - 514 518 -9.692364 - 514 1619 -1.599082 - 515 465 -0.000030 - 515 466 -4.746594 - 515 467 -8.023642 - 515 510 -0.000032 - 515 511 -4.775995 - 515 512 -8.073342 - 515 513 0.001480 - 515 514 20.527064 - 515 515 34.698943 - 515 516 -0.000031 - 515 517 -4.774870 - 515 518 -8.071435 - 515 561 -0.000032 - 515 562 -4.749453 - 515 563 -8.028476 - 515 1617 -0.000010 - 515 1618 -1.467869 - 515 1619 -2.481286 - 516 468 -0.448327 - 516 469 73.511831 - 516 470 124.264330 - 516 513 -0.003007 - 516 516 575.031490 - 516 517 -434.504680 - 516 518 -734.486180 - 516 519 -0.320382 - 516 520 21.665194 - 516 521 36.622843 - 516 564 -0.002991 - 516 1620 -0.000925 - 516 1621 3.618782 - 516 1622 6.117184 - 517 470 -20.129948 - 517 517 -109.488270 - 517 518 113.979230 - 517 521 -5.932490 - 517 1622 -0.990911 - 518 468 -0.000029 - 518 469 -4.746523 - 518 470 -8.023518 - 518 513 -0.000031 - 518 514 -4.774870 - 518 515 -8.071435 - 518 516 0.001476 - 518 517 20.429436 - 518 518 34.533900 - 518 519 -0.000030 - 518 520 -4.676981 - 518 521 -7.905968 - 518 564 -0.000031 - 518 565 -4.750618 - 518 566 -8.030439 - 518 1620 -0.000010 - 518 1621 -1.468165 - 518 1622 -2.481784 - 519 471 -0.474622 - 519 472 72.197736 - 519 473 122.043050 - 519 516 -0.002896 - 519 519 551.862820 - 519 520 -397.097000 - 519 521 -671.252780 - 519 567 -0.002853 - 519 1623 -0.000947 - 519 1624 2.694064 - 519 1625 4.554046 - 520 473 -19.770349 - 520 520 -96.452757 - 520 521 118.568970 - 520 1625 -0.737707 - 521 471 -0.000027 - 521 472 -4.510282 - 521 473 -7.624180 - 521 516 -0.000030 - 521 517 -4.676981 - 521 518 -7.905968 - 521 519 0.001387 - 521 520 15.336972 - 521 521 25.925617 - 521 567 -0.000030 - 521 568 -4.608696 - 521 569 -7.790540 - 521 1623 -0.000010 - 521 1624 -1.529225 - 521 1625 -2.585002 - 522 522 1.000000 - 523 523 1.000000 - 524 524 1.000000 - 525 525 1.000000 - 526 526 1.000000 - 527 527 1.000000 - 528 528 1.000000 - 529 529 1.000000 - 530 530 1.000000 - 531 531 1.000000 - 532 532 1.000000 - 533 533 1.000000 - 534 534 1.000000 - 535 535 1.000000 - 536 536 1.000000 - 537 537 1.000000 - 538 538 1.000000 - 539 539 1.000000 - 540 492 -0.001676 - 540 493 17.558430 - 540 494 29.680750 - 540 540 310.311670 - 540 541 -199.818900 - 540 542 -337.773660 - 540 543 -0.001654 - 540 588 -0.001478 - 540 1644 -0.001644 - 540 1645 1.028863 - 540 1646 1.739189 - 541 494 -4.808072 - 541 541 -59.147403 - 541 542 51.959485 - 541 1646 -0.281732 - 542 492 -0.000017 - 542 493 -2.750727 - 542 494 -4.649826 - 542 540 0.000793 - 542 541 10.598055 - 542 542 17.914941 - 542 543 -0.000017 - 542 544 -2.715436 - 542 545 -4.590171 - 542 588 -0.000015 - 542 589 -2.425963 - 542 590 -4.100845 - 542 1644 -0.000017 - 542 1645 -2.699288 - 542 1646 -4.562874 - 543 495 -0.058779 - 543 496 25.787942 - 543 497 43.591937 - 543 540 -0.157654 - 543 541 13.552430 - 543 542 22.909013 - 543 543 344.968990 - 543 544 -242.550890 - 543 545 -410.008020 - 543 546 -0.001889 - 543 591 -0.001683 - 543 1647 -0.001509 - 543 1648 1.811281 - 543 1649 3.061789 - 544 497 -7.061532 - 544 542 -3.711043 - 544 544 -65.723061 - 544 545 63.344299 - 544 1649 -0.495976 - 545 495 -0.000019 - 545 496 -3.078045 - 545 497 -5.203128 - 545 540 -0.000017 - 545 541 -2.715436 - 545 542 -4.590171 - 545 543 0.000896 - 545 544 13.987573 - 545 545 23.644591 - 545 546 -0.000020 - 545 547 -3.043823 - 545 548 -5.145278 - 545 591 -0.000018 - 545 592 -2.711463 - 545 593 -4.583457 - 545 1647 -0.000016 - 545 1648 -2.431426 - 545 1649 -4.110083 - 546 498 -0.153820 - 546 499 40.410594 - 546 500 68.310016 - 546 543 -0.339727 - 546 544 29.580329 - 546 545 50.002588 - 546 546 391.257370 - 546 547 -302.268870 - 546 548 -510.954950 - 546 549 -0.002203 - 546 594 -0.001954 - 546 1650 -0.001382 - 546 1651 4.066569 - 546 1652 6.874122 - 547 500 -11.065501 - 547 545 -8.099846 - 547 547 -74.494601 - 547 548 79.264038 - 547 1652 -1.113509 - 548 498 -0.000022 - 548 499 -3.415351 - 548 500 -5.773305 - 548 543 -0.000020 - 548 544 -3.043823 - 548 545 -5.145278 - 548 546 0.001013 - 548 547 15.085272 - 548 548 25.500128 - 548 549 -0.000023 - 548 550 -3.427032 - 548 551 -5.793050 - 548 594 -0.000020 - 548 595 -3.040504 - 548 596 -5.139664 - 548 1650 -0.000014 - 548 1651 -2.150194 - 548 1652 -3.634685 - 549 501 -0.496300 - 549 502 68.230276 - 549 503 115.336460 - 549 546 -0.658889 - 549 547 52.248365 - 549 548 88.320577 - 549 549 437.480580 - 549 550 -385.403360 - 549 551 -651.485830 - 549 552 -0.002640 - 549 597 -0.002385 - 549 1653 -0.033804 - 549 1654 9.723325 - 549 1655 16.436308 - 550 503 -18.682869 - 550 548 -14.306604 - 550 550 -83.267654 - 550 551 101.589140 - 550 1655 -2.662369 - 551 501 -0.000026 - 551 502 -3.838932 - 551 503 -6.489330 - 551 546 -0.000023 - 551 547 -3.427032 - 551 548 -5.793050 - 551 549 0.001136 - 551 550 16.619424 - 551 551 28.093470 - 551 552 -0.000028 - 551 553 -3.895894 - 551 554 -6.585619 - 551 597 -0.000025 - 551 598 -3.520970 - 551 599 -5.951847 - 551 1653 -0.000013 - 551 1654 -1.927240 - 551 1655 -3.257807 - 552 504 -0.938093 - 552 505 124.629870 - 552 506 210.674180 - 552 549 -0.837358 - 552 550 84.500754 - 552 551 142.840070 - 552 552 507.531190 - 552 553 -525.361380 - 552 554 -888.070320 - 552 555 -0.003250 - 552 600 -0.002941 - 552 1656 -0.147248 - 552 1657 20.895887 - 552 1658 35.322382 - 553 506 -34.125373 - 553 551 -23.137098 - 553 553 -96.452559 - 553 554 139.189230 - 553 1658 -5.721368 - 554 504 -0.000030 - 554 505 -4.367382 - 554 506 -7.382617 - 554 549 -0.000028 - 554 550 -3.895894 - 554 551 -6.585619 - 554 552 0.001317 - 554 553 18.456140 - 554 554 31.198243 - 554 555 -0.000034 - 554 556 -4.472219 - 554 557 -7.559835 - 554 600 -0.000031 - 554 601 -4.047197 - 554 602 -6.841377 - 554 1656 -0.000012 - 554 1657 -1.662597 - 554 1658 -2.810452 - 555 507 -1.865817 - 555 508 210.807250 - 555 509 356.348580 - 555 552 -1.212934 - 555 553 106.698780 - 555 554 180.363510 - 555 555 578.495670 - 555 556 -794.504070 - 555 557 -1343.029600 - 555 558 -1.107990 - 555 559 104.125460 - 555 560 176.013540 - 555 603 -0.003643 - 555 1659 -0.311618 - 555 1660 37.096615 - 555 1661 62.708117 - 556 509 -57.720843 - 556 554 -29.213649 - 556 556 -109.636470 - 556 557 212.154200 - 556 560 -28.508945 - 556 1661 -10.156920 - 557 507 -0.000034 - 557 508 -4.756352 - 557 509 -8.040138 - 557 552 -0.000034 - 557 553 -4.472219 - 557 554 -7.559835 - 557 555 0.001497 - 557 556 20.151920 - 557 557 34.064795 - 557 558 -0.000036 - 557 559 -4.778585 - 557 560 -8.077714 - 557 603 -0.000038 - 557 604 -4.667354 - 557 605 -7.889694 - 557 1659 -0.000011 - 557 1660 -1.465065 - 557 1661 -2.476546 - 558 510 -1.009273 - 558 511 135.622740 - 558 512 229.256500 - 558 555 -0.003495 - 558 558 576.448190 - 558 559 -579.757610 - 558 560 -980.021550 - 558 561 -0.925034 - 558 562 88.420532 - 558 563 149.466060 - 558 606 -0.003484 - 558 1662 -0.138558 - 558 1663 20.050906 - 558 1664 33.894031 - 559 512 -37.135191 - 559 559 -109.600890 - 559 560 153.457880 - 559 563 -24.210075 - 559 1664 -5.489996 - 560 510 -0.000033 - 560 511 -4.752496 - 560 512 -8.033613 - 560 555 -0.000036 - 560 556 -4.778585 - 560 557 -8.077714 - 560 558 0.001495 - 560 559 20.548189 - 560 560 34.734637 - 560 561 -0.000034 - 560 562 -4.777680 - 560 563 -8.076190 - 560 606 -0.000036 - 560 607 -4.764557 - 560 608 -8.054001 - 560 1662 -0.000011 - 560 1663 -1.462541 - 560 1664 -2.472278 - 561 513 -0.499113 - 561 514 89.964943 - 561 515 152.076740 - 561 558 -0.003294 - 561 561 575.588620 - 561 562 -491.699180 - 561 563 -831.168280 - 561 564 -0.644451 - 561 565 56.210454 - 561 566 95.018084 - 561 609 -0.003284 - 561 1665 -0.034525 - 561 1666 9.810796 - 561 1667 16.584170 - 562 515 -24.634033 - 562 562 -109.569110 - 562 563 129.432720 - 562 566 -15.391186 - 562 1667 -2.686297 - 563 513 -0.000032 - 563 514 -4.749453 - 563 515 -8.028476 - 563 558 -0.000034 - 563 559 -4.777680 - 563 560 -8.076190 - 563 561 0.001488 - 563 562 20.541572 - 563 563 34.723467 - 563 564 -0.000033 - 563 565 -4.776347 - 563 566 -8.073932 - 563 609 -0.000034 - 563 610 -4.764002 - 563 611 -8.053068 - 563 1665 -0.000010 - 563 1666 -1.461775 - 563 1667 -2.470984 - 564 516 -0.288863 - 564 517 69.290058 - 564 518 117.127830 - 564 561 -0.003165 - 564 564 575.169750 - 564 565 -440.688990 - 564 566 -744.940170 - 564 567 -0.408672 - 564 568 30.525309 - 564 569 51.599982 - 564 612 -0.003158 - 564 1668 -0.000968 - 564 1669 5.218038 - 564 1670 8.820564 - 565 518 -18.973202 - 565 565 -109.553980 - 565 566 115.507080 - 565 569 -8.358371 - 565 1670 -1.428781 - 566 516 -0.000031 - 566 517 -4.750618 - 566 518 -8.030439 - 566 561 -0.000033 - 566 562 -4.776347 - 566 563 -8.073932 - 566 564 0.001483 - 566 565 20.495125 - 566 566 34.644941 - 566 567 -0.000032 - 566 568 -4.727536 - 566 569 -7.991427 - 566 612 -0.000033 - 566 613 -4.767156 - 566 614 -8.058394 - 566 1668 -0.000010 - 566 1669 -1.461161 - 566 1670 -2.469944 - 567 519 -0.197502 - 567 520 58.806825 - 567 521 99.407057 - 567 564 -0.003063 - 567 567 563.321930 - 567 568 -391.261510 - 567 569 -661.388460 - 567 615 -0.003057 - 567 1671 -0.000966 - 567 1672 3.531435 - 567 1673 5.969537 - 568 521 -16.102830 - 568 568 -107.360000 - 568 569 102.085340 - 568 1673 -0.966975 - 569 519 -0.000030 - 569 520 -4.608696 - 569 521 -7.790540 - 569 564 -0.000032 - 569 565 -4.727536 - 569 566 -7.991427 - 569 567 0.001421 - 569 568 15.556430 - 569 569 26.296589 - 569 615 -0.000032 - 569 616 -4.718009 - 569 617 -7.975322 - 569 1671 -0.000010 - 569 1672 -1.490128 - 569 1673 -2.518913 - 570 570 1.000000 - 571 571 1.000000 - 572 572 1.000000 - 573 573 1.000000 - 574 574 1.000000 - 575 575 1.000000 - 576 576 1.000000 - 577 577 1.000000 - 578 578 1.000000 - 579 579 1.000000 - 580 580 1.000000 - 581 581 1.000000 - 582 582 1.000000 - 583 583 1.000000 - 584 584 1.000000 - 585 585 229.786090 - 585 586 -137.744190 - 585 587 -232.842780 - 585 588 -0.001273 - 585 633 -0.067886 - 585 634 2.887011 - 585 635 4.880203 - 585 1689 -0.002224 - 585 1690 0.538526 - 585 1691 0.910325 - 586 586 -43.816660 - 586 587 35.667017 - 586 635 -0.790548 - 586 1691 -0.147464 - 587 585 0.000586 - 587 586 7.642448 - 587 587 12.918794 - 587 588 -0.000013 - 587 589 -2.084537 - 587 590 -3.523702 - 587 633 -0.000012 - 587 634 -1.910469 - 587 635 -3.229456 - 587 1689 -0.000023 - 587 1690 -3.642522 - 587 1691 -6.157318 - 588 540 -0.009114 - 588 541 8.196763 - 588 542 13.855800 - 588 585 -0.035185 - 588 586 5.845952 - 588 587 9.881998 - 588 588 275.853340 - 588 589 -176.079070 - 588 590 -297.643870 - 588 591 -0.001498 - 588 636 -0.063957 - 588 1692 -0.001874 - 588 1693 0.874103 - 588 1694 1.477584 - 589 542 -2.244508 - 589 587 -1.600787 - 589 589 -52.585057 - 589 590 45.741228 - 589 1694 -0.239353 - 590 540 -0.000015 - 590 541 -2.425963 - 590 542 -4.100845 - 590 585 -0.000013 - 590 586 -2.084537 - 590 587 -3.523702 - 590 588 0.000722 - 590 589 12.065069 - 590 590 20.394783 - 590 591 -0.000016 - 590 592 -2.428302 - 590 593 -4.104799 - 590 636 -0.000013 - 590 637 -2.083366 - 590 638 -3.521720 - 590 1692 -0.000020 - 590 1693 -3.036994 - 590 1694 -5.133732 - 591 543 -0.044240 - 591 544 15.120848 - 591 545 25.560282 - 591 588 -0.171453 - 591 589 17.455773 - 591 590 29.507220 - 591 591 310.471090 - 591 592 -215.746540 - 591 593 -364.697950 - 591 594 -0.001720 - 591 639 -0.066318 - 591 1695 -0.001711 - 591 1696 1.886361 - 591 1697 3.188705 - 592 545 -4.140472 - 592 590 -4.779852 - 592 592 -59.166043 - 592 593 56.273456 - 592 1697 -0.516528 - 593 543 -0.000018 - 593 544 -2.711463 - 593 545 -4.583457 - 593 588 -0.000016 - 593 589 -2.428302 - 593 590 -4.104799 - 593 591 0.000811 - 593 592 12.989807 - 593 593 21.957967 - 593 594 -0.000018 - 593 595 -2.715978 - 593 596 -4.591089 - 593 639 -0.000016 - 593 640 -2.425874 - 593 641 -4.100698 - 593 1695 -0.000018 - 593 1696 -2.701541 - 593 1697 -4.566685 - 594 546 -0.107945 - 594 547 25.803312 - 594 548 43.617890 - 594 591 -0.355167 - 594 592 34.295519 - 594 593 57.973145 - 594 594 345.232090 - 594 595 -266.749480 - 594 596 -450.913030 - 594 597 -0.002070 - 594 642 -0.068363 - 594 1698 -0.001609 - 594 1699 5.216788 - 594 1700 8.818452 - 595 548 -7.065442 - 595 593 -9.390862 - 595 595 -65.753455 - 595 596 69.892338 - 595 1700 -1.428435 - 596 546 -0.000020 - 596 547 -3.040504 - 596 548 -5.139664 - 596 591 -0.000018 - 596 592 -2.715978 - 596 593 -4.591089 - 596 594 0.000902 - 596 595 14.087562 - 596 596 23.813602 - 596 597 -0.000022 - 596 598 -3.127775 - 596 599 -5.287188 - 596 642 -0.000019 - 596 643 -2.764945 - 596 644 -4.673860 - 596 1698 -0.000017 - 596 1699 -2.430966 - 596 1700 -4.109303 - 597 549 -0.250918 - 597 550 50.320737 - 597 551 85.062173 - 597 594 -0.713002 - 597 595 65.837486 - 597 596 111.291620 - 597 597 414.870000 - 597 598 -380.853550 - 597 599 -643.794840 - 597 600 -0.002601 - 597 645 -0.222839 - 597 646 8.474940 - 597 647 14.326038 - 597 1701 -0.082985 - 597 1702 14.531280 - 597 1703 24.563675 - 598 551 -13.778289 - 598 596 -18.027209 - 598 598 -78.927659 - 598 599 100.442290 - 598 647 -2.320455 - 598 1703 -3.978735 - 599 549 -0.000025 - 599 550 -3.520970 - 599 551 -5.951847 - 599 594 -0.000022 - 599 595 -3.127775 - 599 596 -5.287188 - 599 597 0.001080 - 599 598 15.582531 - 599 599 26.340706 - 599 600 -0.000027 - 599 601 -3.664737 - 599 602 -6.194871 - 599 645 -0.000024 - 599 646 -3.233439 - 599 647 -5.465805 - 599 1701 -0.000015 - 599 1702 -2.026727 - 599 1703 -3.425978 - 600 552 -1.063721 - 600 553 128.569370 - 600 554 217.333520 - 600 597 -1.489375 - 600 598 143.520640 - 600 599 242.607280 - 600 600 474.731490 - 600 601 -658.028090 - 600 602 -1112.330000 - 600 603 -0.003377 - 600 648 -0.844516 - 600 649 67.680332 - 600 650 114.406750 - 600 1704 -0.371759 - 600 1705 42.979748 - 600 1706 72.652915 - 601 554 -35.201717 - 601 599 -39.295989 - 601 601 -89.945654 - 601 602 175.644280 - 601 650 -18.529986 - 601 1706 -11.767451 - 602 552 -0.000031 - 602 553 -4.047197 - 602 554 -6.841377 - 602 597 -0.000027 - 602 598 -3.664737 - 602 599 -6.194871 - 602 600 0.001238 - 602 601 17.444635 - 602 602 29.488395 - 602 603 -0.000035 - 602 604 -4.229546 - 602 605 -7.149619 - 602 648 -0.000029 - 602 649 -3.712836 - 602 650 -6.276174 - 602 1704 -0.000014 - 602 1705 -1.780177 - 602 1706 -3.009209 - 603 555 -4.374731 - 603 556 464.899400 - 603 557 785.865920 - 603 600 -3.999187 - 603 601 387.814680 - 603 602 655.561520 - 603 603 569.079730 - 603 604 -2104.427400 - 603 605 -3557.323700 - 603 606 -4.313237 - 603 607 425.140240 - 603 608 718.656680 - 603 651 -4.005310 - 603 652 376.374790 - 603 653 636.223930 - 603 1707 -1.268047 - 603 1708 131.315640 - 603 1709 221.975960 - 604 557 -127.280260 - 604 602 -106.174040 - 604 604 -105.456400 - 604 605 570.353420 - 604 608 -116.392560 - 604 653 -103.040430 - 604 1709 -35.950514 - 605 555 -0.000038 - 605 556 -4.667354 - 605 557 -7.889694 - 605 600 -0.000035 - 605 601 -4.229546 - 605 602 -7.149619 - 605 603 0.001579 - 605 604 31.506343 - 605 605 53.258311 - 605 606 -0.000039 - 605 607 -4.684476 - 605 608 -7.918634 - 605 651 -0.000038 - 605 652 -4.434885 - 605 653 -7.496729 - 605 1707 -0.000013 - 605 1708 -1.520875 - 605 1709 -2.570887 - 606 558 -1.183074 - 606 559 145.975050 - 606 560 246.756050 - 606 603 -0.003752 - 606 606 578.381960 - 606 607 -754.675520 - 606 608 -1275.702800 - 606 609 -1.639264 - 606 610 161.062080 - 606 611 272.259340 - 606 654 -0.971628 - 606 655 74.628540 - 606 656 126.152010 - 606 1710 -0.313619 - 606 1711 37.277203 - 606 1712 63.013350 - 607 560 -39.967119 - 607 607 -109.684780 - 607 608 201.126190 - 607 611 -44.098175 - 607 656 -20.432140 - 607 1712 -10.206158 - 608 558 -0.000036 - 608 559 -4.764557 - 608 560 -8.054001 - 608 603 -0.000039 - 608 604 -4.684476 - 608 605 -7.918634 - 608 606 0.001505 - 608 607 20.472160 - 608 608 34.606123 - 608 609 -0.000036 - 608 610 -4.779495 - 608 611 -8.079258 - 608 654 -0.000038 - 608 655 -4.771501 - 608 656 -8.065741 - 608 1710 -0.000011 - 608 1711 -1.459765 - 608 1712 -2.467585 - 609 561 -0.471061 - 609 562 73.575168 - 609 563 124.371460 - 609 606 -0.003462 - 609 609 575.776600 - 609 610 -498.270230 - 609 611 -842.275980 - 609 612 -0.813377 - 609 613 75.140097 - 609 614 127.016720 - 609 657 -0.159873 - 609 1713 -0.075291 - 609 1714 13.815885 - 609 1715 23.354372 - 610 563 -20.145325 - 610 610 -109.623250 - 610 611 131.093260 - 610 614 -20.573825 - 610 1715 -3.782819 - 611 561 -0.000034 - 611 562 -4.764002 - 611 563 -8.053068 - 611 606 -0.000036 - 611 607 -4.779495 - 611 608 -8.079258 - 611 609 0.001496 - 611 610 20.564645 - 611 611 34.762469 - 611 612 -0.000034 - 611 613 -4.778098 - 611 614 -8.076891 - 611 657 -0.000036 - 611 658 -4.770393 - 611 659 -8.063872 - 611 1713 -0.000011 - 611 1714 -1.460318 - 611 1715 -2.468522 - 612 564 -0.302914 - 612 565 54.752635 - 612 566 92.553790 - 612 609 -0.003291 - 612 612 575.196000 - 612 613 -444.684610 - 612 614 -751.694290 - 612 615 -0.557331 - 612 616 47.641436 - 612 617 80.533082 - 612 660 -0.003286 - 612 1716 -0.001237 - 612 1717 6.523691 - 612 1718 11.027642 - 613 566 -14.992013 - 613 613 -109.598750 - 613 614 116.487500 - 613 617 -13.044827 - 613 1718 -1.786246 - 614 564 -0.000033 - 614 565 -4.767156 - 614 566 -8.058394 - 614 609 -0.000034 - 614 610 -4.778098 - 614 611 -8.076891 - 614 612 0.001489 - 614 613 20.565455 - 614 614 34.763825 - 614 615 -0.000033 - 614 616 -4.777470 - 614 617 -8.075835 - 614 660 -0.000034 - 614 661 -4.771325 - 614 662 -8.065441 - 614 1716 -0.000010 - 614 1717 -1.459079 - 614 1718 -2.466425 - 615 567 -0.157166 - 615 568 37.600113 - 615 569 63.559232 - 615 612 -0.003181 - 615 615 574.753180 - 615 616 -377.321360 - 615 617 -637.824030 - 615 1719 -0.000972 - 615 1720 4.089250 - 615 1721 6.912468 - 616 569 -10.295578 - 616 616 -109.586940 - 616 617 98.074874 - 616 1721 -1.119695 - 617 567 -0.000032 - 617 568 -4.718009 - 617 569 -7.975322 - 617 612 -0.000033 - 617 613 -4.777470 - 617 614 -8.075835 - 617 615 0.001419 - 617 616 10.968069 - 617 617 18.540423 - 617 1719 -0.000010 - 617 1720 -1.460268 - 617 1721 -2.468436 - 618 618 1.000000 - 619 619 1.000000 - 620 620 1.000000 - 621 621 1.000000 - 622 622 1.000000 - 623 623 1.000000 - 624 624 1.000000 - 625 625 1.000000 - 626 626 1.000000 - 627 627 1.000000 - 628 628 1.000000 - 629 629 1.000000 - 630 630 1.000000 - 631 631 1.000000 - 632 632 1.000000 - 633 585 -0.001160 - 633 633 229.858440 - 633 634 -143.349450 - 633 635 -242.317910 - 633 636 -0.001160 - 633 681 -0.115957 - 633 682 8.538711 - 633 683 14.433837 - 633 1737 -0.002212 - 633 1738 0.478337 - 633 1739 0.808582 - 634 634 -43.819004 - 634 635 37.196344 - 634 683 -2.338173 - 634 1739 -0.130983 - 635 585 -0.000012 - 635 586 -1.910469 - 635 587 -3.229456 - 635 633 0.000597 - 635 634 9.380071 - 635 635 15.856072 - 635 636 -0.000012 - 635 637 -1.910369 - 635 638 -3.229288 - 635 681 -0.000012 - 635 682 -1.910672 - 635 683 -3.229801 - 635 1737 -0.000023 - 635 1738 -3.643639 - 635 1739 -6.159207 - 636 588 -0.001286 - 636 589 0.352535 - 636 590 0.595925 - 636 633 -0.041488 - 636 634 8.567365 - 636 635 14.482274 - 636 636 229.957800 - 636 637 -149.446240 - 636 638 -252.623760 - 636 639 -0.001287 - 636 684 -0.103998 - 636 685 5.520810 - 636 686 9.332371 - 636 1740 -0.002249 - 636 1741 0.712025 - 636 1742 1.203607 - 637 590 -0.096533 - 637 635 -2.345995 - 637 637 -43.826616 - 637 638 38.846729 - 637 686 -1.511753 - 637 1742 -0.194971 - 638 588 -0.000013 - 638 589 -2.083366 - 638 590 -3.521720 - 638 633 -0.000012 - 638 634 -1.910369 - 638 635 -3.229288 - 638 636 0.000612 - 638 637 11.637723 - 638 638 19.672395 - 638 639 -0.000013 - 638 640 -2.084829 - 638 641 -3.524192 - 638 684 -0.000012 - 638 685 -1.910476 - 638 686 -3.229466 - 638 1740 -0.000023 - 638 1741 -3.643757 - 638 1742 -6.159404 - 639 591 -0.001544 - 639 592 3.407793 - 639 593 5.760534 - 639 636 -0.154229 - 639 637 17.561895 - 639 638 29.686608 - 639 639 276.052010 - 639 640 -188.741840 - 639 641 -319.049200 - 639 642 -0.001572 - 639 687 -0.109591 - 639 688 5.137241 - 639 689 8.683993 - 639 1743 -0.001932 - 639 1744 1.472318 - 639 1745 2.488807 - 640 593 -0.933128 - 640 638 -4.808908 - 640 640 -52.601941 - 640 641 49.165927 - 640 689 -1.406692 - 640 1745 -0.403152 - 641 591 -0.000016 - 641 592 -2.425874 - 641 593 -4.100698 - 641 636 -0.000013 - 641 637 -2.084829 - 641 638 -3.524192 - 641 639 0.000725 - 641 640 12.107669 - 641 641 20.466800 - 641 642 -0.000016 - 641 643 -2.470191 - 641 644 -4.175611 - 641 687 -0.000014 - 641 688 -2.084177 - 641 689 -3.523093 - 641 1743 -0.000020 - 641 1744 -3.036682 - 641 1745 -5.133207 - 642 594 -0.001837 - 642 595 3.105706 - 642 596 5.249882 - 642 639 -0.329517 - 642 640 30.495022 - 642 641 51.548785 - 642 642 322.147570 - 642 643 -234.004020 - 642 644 -395.560150 - 642 645 -0.001897 - 642 690 -0.180090 - 642 691 8.611515 - 642 692 14.556894 - 642 1746 -0.001731 - 642 1747 3.764654 - 642 1748 6.363767 - 643 596 -0.850385 - 643 641 -8.350176 - 643 643 -61.379794 - 643 644 61.111547 - 643 692 -2.357963 - 643 1748 -1.030815 - 644 594 -0.000019 - 644 595 -2.764945 - 644 596 -4.673860 - 644 639 -0.000016 - 644 640 -2.470191 - 644 641 -4.175611 - 644 642 0.000843 - 644 643 13.221950 - 644 644 22.350372 - 644 645 -0.000020 - 644 646 -2.854706 - 644 647 -4.825592 - 644 690 -0.000017 - 644 691 -2.520604 - 644 692 -4.260825 - 644 1746 -0.000018 - 644 1747 -2.604598 - 644 1748 -4.402811 - 645 597 -0.002276 - 645 642 -0.524652 - 645 643 49.398648 - 645 644 83.503422 - 645 645 368.474700 - 645 646 -296.696620 - 645 647 -501.535950 - 645 648 -0.002309 - 645 693 -0.350030 - 645 694 22.515897 - 645 695 38.060872 - 645 1749 -0.035777 - 645 1750 9.867783 - 645 1751 16.680500 - 646 644 -13.525992 - 646 646 -70.166544 - 646 647 77.805696 - 646 695 -6.165006 - 646 1751 -2.701845 - 647 597 -0.000024 - 647 598 -3.233439 - 647 599 -5.465805 - 647 642 -0.000020 - 647 643 -2.854706 - 647 644 -4.825592 - 647 645 0.000965 - 647 646 14.612125 - 647 647 24.700333 - 647 648 -0.000024 - 647 649 -3.280569 - 647 650 -5.545473 - 647 693 -0.000021 - 647 694 -2.955463 - 647 695 -4.995914 - 647 1749 -0.000017 - 647 1750 -2.280049 - 647 1751 -3.854194 - 648 600 -0.002812 - 648 645 -0.813184 - 648 646 77.270965 - 648 647 130.618840 - 648 648 426.710000 - 648 649 -408.814650 - 648 650 -691.059760 - 648 651 -0.002940 - 648 696 -0.750957 - 648 697 60.063016 - 648 698 101.530450 - 648 1752 -0.169267 - 648 1753 23.028724 - 648 1754 38.927728 - 649 647 -21.156940 - 649 649 -81.159344 - 649 650 107.888680 - 649 698 -16.445125 - 649 1754 -6.305133 - 650 600 -0.000029 - 650 601 -3.712836 - 650 602 -6.276174 - 650 645 -0.000024 - 650 646 -3.280569 - 650 647 -5.545473 - 650 648 0.001120 - 650 649 16.340623 - 650 650 27.622172 - 650 651 -0.000031 - 650 652 -3.882456 - 650 653 -6.562898 - 650 696 -0.000026 - 650 697 -3.483214 - 650 698 -5.888021 - 650 1752 -0.000015 - 650 1753 -1.972400 - 650 1754 -3.334143 - 651 603 -0.003610 - 651 648 -1.047585 - 651 649 97.265790 - 651 650 164.417970 - 651 651 520.639200 - 651 652 -672.918820 - 651 653 -1137.501900 - 651 654 -1.001697 - 651 655 97.489376 - 651 656 164.795950 - 651 699 -1.570580 - 651 700 135.694950 - 651 701 229.378740 - 651 1755 -0.343756 - 651 1756 40.238110 - 651 1757 68.018501 - 652 650 -26.630093 - 652 652 -98.742650 - 652 653 179.224030 - 652 656 -26.691085 - 652 701 -37.152092 - 652 1757 -11.016657 - 653 603 -0.000038 - 653 604 -4.434885 - 653 605 -7.496729 - 653 648 -0.000031 - 653 649 -3.882456 - 653 650 -6.562898 - 653 651 0.001360 - 653 652 18.725128 - 653 653 31.652947 - 653 654 -0.000036 - 653 655 -4.528771 - 653 656 -7.655431 - 653 699 -0.000033 - 653 700 -4.245594 - 653 701 -7.176753 - 653 1755 -0.000013 - 653 1756 -1.622280 - 653 1757 -2.742302 - 654 606 -0.003652 - 654 651 -0.003466 - 654 654 576.049940 - 654 655 -501.668340 - 654 656 -848.019690 - 654 657 -0.826285 - 654 658 78.714003 - 654 659 133.058150 - 654 702 -0.873933 - 654 703 67.319482 - 654 704 113.796800 - 654 1758 -0.136747 - 654 1759 19.861190 - 654 1760 33.573335 - 655 655 -109.675590 - 655 656 131.888100 - 655 659 -21.551510 - 655 704 -18.431643 - 655 1760 -5.437859 - 656 606 -0.000038 - 656 607 -4.771501 - 656 608 -8.065741 - 656 651 -0.000036 - 656 652 -4.528771 - 656 653 -7.655431 - 656 654 0.001502 - 656 655 20.323078 - 656 656 34.354116 - 656 657 -0.000036 - 656 658 -4.779817 - 656 659 -8.079803 - 656 702 -0.000037 - 656 703 -4.771426 - 656 704 -8.065614 - 656 1758 -0.000011 - 656 1759 -1.459200 - 656 1760 -2.466631 - 657 609 -0.003473 - 657 610 7.581968 - 657 611 12.816558 - 657 654 -0.003479 - 657 657 575.094130 - 657 658 -408.305770 - 657 659 -690.200070 - 657 660 -0.438161 - 657 661 42.804789 - 657 662 72.357161 - 657 705 -0.286397 - 657 706 11.770645 - 657 707 19.897097 - 657 1761 -0.040113 - 657 1762 10.345366 - 657 1763 17.487807 - 658 611 -2.075913 - 658 658 -109.647650 - 658 659 106.400890 - 658 662 -11.719986 - 658 707 -3.222764 - 658 1763 -2.832558 - 659 609 -0.000036 - 659 610 -4.770393 - 659 611 -8.063872 - 659 654 -0.000036 - 659 655 -4.779817 - 659 656 -8.079803 - 659 657 0.001499 - 659 658 20.571294 - 659 659 34.773710 - 659 660 -0.000035 - 659 661 -4.779443 - 659 662 -8.079164 - 659 705 -0.000036 - 659 706 -4.770802 - 659 707 -8.064564 - 659 1761 -0.000011 - 659 1762 -1.458490 - 659 1763 -2.465431 - 660 612 -0.221669 - 660 613 39.882149 - 660 614 67.416734 - 660 657 -0.003383 - 660 660 574.564930 - 660 661 -382.063040 - 660 662 -645.838900 - 660 708 -0.092242 - 660 1764 -0.001033 - 660 1765 6.392436 - 660 1766 10.805765 - 661 614 -10.919981 - 661 661 -109.631210 - 661 662 99.258914 - 661 1766 -1.750272 - 662 612 -0.000034 - 662 613 -4.771325 - 662 614 -8.065441 - 662 657 -0.000035 - 662 658 -4.779443 - 662 659 -8.079164 - 662 660 0.001460 - 662 661 15.793919 - 662 662 26.698019 - 662 708 -0.000035 - 662 709 -4.771853 - 662 710 -8.066334 - 662 1764 -0.000011 - 662 1765 -1.458956 - 662 1766 -2.466217 - 663 663 1.000000 - 664 664 1.000000 - 665 665 1.000000 - 666 666 1.000000 - 667 667 1.000000 - 668 668 1.000000 - 669 669 1.000000 - 670 670 1.000000 - 671 671 1.000000 - 672 672 1.000000 - 673 673 1.000000 - 674 674 1.000000 - 675 675 1.000000 - 676 676 1.000000 - 677 677 1.000000 - 678 678 241.281140 - 678 679 -147.772670 - 678 680 -249.794760 - 678 681 -0.001146 - 678 726 -0.050525 - 678 727 6.265440 - 678 728 10.591093 - 678 1782 -0.002034 - 678 1783 0.446232 - 678 1784 0.754311 - 679 679 -46.000009 - 679 680 38.330186 - 679 728 -1.715709 - 679 1784 -0.122194 - 680 678 0.000611 - 680 679 7.570991 - 680 680 12.797995 - 680 681 -0.000012 - 680 682 -1.955535 - 680 683 -3.305634 - 680 726 -0.000013 - 680 727 -2.140058 - 680 728 -3.617552 - 680 1782 -0.000021 - 680 1783 -3.470235 - 680 1784 -5.866081 - 681 633 -0.001140 - 681 678 -0.036745 - 681 679 9.268640 - 681 680 15.667699 - 681 681 229.920780 - 681 682 -152.015400 - 681 683 -256.966840 - 681 684 -0.001140 - 681 729 -0.109742 - 681 730 7.976835 - 681 731 13.484043 - 681 1785 -0.002176 - 681 1786 0.450344 - 681 1787 0.761261 - 682 680 -2.538079 - 682 682 -43.818310 - 682 683 39.571585 - 682 731 -2.184334 - 682 1787 -0.123319 - 683 633 -0.000012 - 683 634 -1.910672 - 683 635 -3.229801 - 683 678 -0.000012 - 683 679 -1.955535 - 683 680 -3.305634 - 683 681 0.000608 - 683 682 11.383840 - 683 683 19.243241 - 683 684 -0.000012 - 683 685 -1.909831 - 683 686 -3.228378 - 683 729 -0.000012 - 683 730 -1.957108 - 683 731 -3.308296 - 683 1785 -0.000023 - 683 1786 -3.645772 - 683 1787 -6.162813 - 684 636 -0.001166 - 684 681 -0.053412 - 684 682 11.580450 - 684 683 19.575592 - 684 684 229.988000 - 684 685 -154.312800 - 684 686 -260.850190 - 684 687 -0.001167 - 684 732 -0.109230 - 684 733 7.876621 - 684 734 13.314632 - 684 1788 -0.002224 - 684 1789 0.538798 - 684 1790 0.910784 - 685 683 -3.171098 - 685 685 -43.828808 - 685 686 40.174310 - 685 734 -2.156862 - 685 1790 -0.147538 - 686 636 -0.000012 - 686 637 -1.910476 - 686 638 -3.229466 - 686 681 -0.000012 - 686 682 -1.909831 - 686 683 -3.228378 - 686 684 0.000609 - 686 685 11.289908 - 686 686 19.084451 - 686 687 -0.000012 - 686 688 -1.911181 - 686 689 -3.230658 - 686 732 -0.000012 - 686 733 -1.910894 - 686 734 -3.230172 - 686 1788 -0.000023 - 686 1789 -3.642601 - 686 1790 -6.157449 - 687 639 -0.001314 - 687 684 -0.144933 - 687 685 16.910541 - 687 686 28.585561 - 687 687 230.077580 - 687 688 -161.204350 - 687 689 -272.499840 - 687 690 -0.001339 - 687 735 -0.130032 - 687 736 9.000899 - 687 737 15.215119 - 687 1791 -0.002298 - 687 1792 0.989684 - 687 1793 1.672961 - 688 686 -4.630583 - 688 688 -43.837882 - 688 689 42.037981 - 688 737 -2.464676 - 688 1793 -0.270998 - 689 639 -0.000014 - 689 640 -2.084177 - 689 641 -3.523093 - 689 684 -0.000012 - 689 685 -1.911181 - 689 686 -3.230658 - 689 687 0.000614 - 689 688 11.678161 - 689 689 19.740762 - 689 690 -0.000014 - 689 691 -2.123962 - 689 692 -3.590345 - 689 735 -0.000012 - 689 736 -1.911101 - 689 737 -3.230525 - 689 1791 -0.000024 - 689 1792 -3.642810 - 689 1793 -6.157807 - 690 642 -0.001656 - 690 687 -0.243281 - 690 688 24.198730 - 690 689 40.905532 - 690 690 287.652480 - 690 691 -207.586150 - 690 692 -350.903370 - 690 693 -0.001712 - 690 738 -0.238141 - 690 739 13.212071 - 690 740 22.333672 - 690 1794 -0.001918 - 690 1795 2.254502 - 690 1796 3.811007 - 691 689 -6.626157 - 691 691 -54.808161 - 691 692 54.184103 - 691 740 -3.617716 - 691 1796 -0.617318 - 692 642 -0.000017 - 692 643 -2.520604 - 692 644 -4.260825 - 692 687 -0.000014 - 692 688 -2.123962 - 692 689 -3.590345 - 692 690 0.000756 - 692 691 12.411776 - 692 692 20.980854 - 692 693 -0.000018 - 692 694 -2.606907 - 692 695 -4.406711 - 692 738 -0.000015 - 692 739 -2.234516 - 692 740 -3.777224 - 692 1794 -0.000020 - 692 1795 -2.919621 - 692 1796 -4.935323 - 693 645 -0.002029 - 693 690 -0.356629 - 693 691 34.155028 - 693 692 57.735619 - 693 693 345.307210 - 693 694 -263.854300 - 693 695 -446.019300 - 693 696 -0.002147 - 693 741 -0.347721 - 693 742 23.081303 - 693 743 39.016635 - 693 1797 -0.001670 - 693 1798 5.136960 - 693 1799 8.683518 - 694 692 -9.352165 - 694 694 -65.783412 - 694 695 69.023803 - 694 743 -6.319942 - 694 1799 -1.406542 - 695 645 -0.000021 - 695 646 -2.955463 - 695 647 -4.995914 - 695 690 -0.000018 - 695 691 -2.606907 - 695 692 -4.406711 - 695 693 0.000904 - 695 694 13.891176 - 695 695 23.481640 - 695 696 -0.000022 - 695 697 -3.128501 - 695 698 -5.288418 - 695 741 -0.000019 - 695 742 -2.760721 - 695 743 -4.666722 - 695 1797 -0.000017 - 695 1798 -2.432178 - 695 1799 -4.111354 - 696 648 -0.002501 - 696 693 -0.471510 - 696 694 43.574756 - 696 695 73.658766 - 696 696 414.536050 - 696 697 -336.478410 - 696 698 -568.782710 - 696 699 -0.002719 - 696 744 -0.554882 - 696 745 41.144406 - 696 746 69.550444 - 696 1800 -0.036361 - 696 1801 9.942274 - 696 1802 16.806408 - 697 695 -11.931066 - 697 697 -78.955712 - 697 698 88.222558 - 697 746 -11.265575 - 697 1802 -2.722204 - 698 648 -0.000026 - 698 649 -3.483214 - 698 650 -5.888021 - 698 693 -0.000022 - 698 694 -3.128501 - 698 695 -5.288418 - 698 696 0.001084 - 698 697 15.770532 - 698 698 26.658491 - 698 699 -0.000028 - 698 700 -3.785753 - 698 701 -6.399432 - 698 744 -0.000024 - 698 745 -3.337165 - 698 746 -5.641138 - 698 1800 -0.000015 - 698 1801 -2.027004 - 698 1802 -3.426445 - 699 651 -0.003148 - 699 696 -0.437077 - 699 697 39.122168 - 699 698 66.132068 - 699 699 506.762300 - 699 700 -425.700790 - 699 701 -719.604610 - 699 702 -0.153784 - 699 703 16.436817 - 699 704 27.784783 - 699 747 -0.805052 - 699 748 60.712756 - 699 749 102.628840 - 699 1803 -0.076292 - 699 1804 13.900146 - 699 1805 23.496806 - 700 698 -10.711566 - 700 700 -96.514271 - 700 701 111.748660 - 700 704 -4.500295 - 700 749 -16.623199 - 700 1805 -3.805813 - 701 651 -0.000033 - 701 652 -4.245594 - 701 653 -7.176753 - 701 696 -0.000028 - 701 697 -3.785753 - 701 698 -6.399432 - 701 699 0.001321 - 701 700 18.276708 - 701 701 30.894940 - 701 702 -0.000034 - 701 703 -4.474950 - 701 704 -7.564452 - 701 747 -0.000030 - 701 748 -4.100435 - 701 749 -6.931376 - 701 1803 -0.000013 - 701 1804 -1.659097 - 701 1805 -2.804538 - 702 654 -0.003499 - 702 699 -0.003282 - 702 702 575.114380 - 702 703 -413.320390 - 702 704 -698.676470 - 702 705 -0.237722 - 702 706 23.067276 - 702 707 38.992923 - 702 750 -0.666918 - 702 751 44.649890 - 702 752 75.476138 - 702 1806 -0.033714 - 702 1807 9.721189 - 702 1808 16.432681 - 703 703 -109.666930 - 703 704 107.725600 - 703 707 -6.315745 - 703 752 -12.225121 - 703 1808 -2.661640 - 704 654 -0.000037 - 704 655 -4.771426 - 704 656 -8.065614 - 704 699 -0.000034 - 704 700 -4.474950 - 704 701 -7.564452 - 704 702 0.001497 - 704 703 20.268791 - 704 704 34.262351 - 704 705 -0.000036 - 704 706 -4.779850 - 704 707 -8.079859 - 704 750 -0.000035 - 704 751 -4.770422 - 704 752 -8.063917 - 704 1806 -0.000011 - 704 1807 -1.459785 - 704 1808 -2.467619 - 705 657 -0.003446 - 705 702 -0.003452 - 705 705 574.617660 - 705 706 -364.415190 - 705 707 -616.007430 - 705 708 -0.243677 - 705 709 21.354776 - 705 710 36.098097 - 705 1809 -0.008868 - 705 1810 7.278620 - 705 1811 12.303779 - 706 706 -109.658170 - 706 707 94.358729 - 706 710 -5.846929 - 706 1811 -1.992885 - 707 657 -0.000036 - 707 658 -4.770802 - 707 659 -8.064564 - 707 702 -0.000036 - 707 703 -4.779850 - 707 704 -8.079859 - 707 705 0.001462 - 707 706 15.803139 - 707 707 26.713622 - 707 708 -0.000036 - 707 709 -4.779661 - 707 710 -8.079536 - 707 1809 -0.000011 - 707 1810 -1.460471 - 707 1811 -2.468781 - 708 660 -0.003398 - 708 661 9.642500 - 708 662 16.299671 - 708 705 -0.003403 - 708 708 574.442700 - 708 709 -350.941020 - 708 710 -593.230410 - 708 1812 -0.001039 - 708 1813 5.519655 - 708 1814 9.330418 - 709 662 -2.640125 - 709 709 -109.652150 - 709 710 90.685708 - 709 1814 -1.511292 - 710 660 -0.000035 - 710 661 -4.771853 - 710 662 -8.066334 - 710 705 -0.000036 - 710 706 -4.779661 - 710 707 -8.079536 - 710 708 0.001426 - 710 709 11.023000 - 710 710 18.633268 - 710 1812 -0.000011 - 710 1813 -1.459135 - 710 1814 -2.466520 - 711 711 1.000000 - 712 712 1.000000 - 713 713 1.000000 - 714 714 1.000000 - 715 715 1.000000 - 716 716 1.000000 - 717 717 1.000000 - 718 718 1.000000 - 719 719 1.000000 - 720 720 1.000000 - 721 721 1.000000 - 722 722 1.000000 - 723 723 1.000000 - 724 724 1.000000 - 725 725 1.000000 - 726 678 -0.001240 - 726 726 275.754510 - 726 727 -172.234060 - 726 728 -291.144300 - 726 729 -0.031715 - 726 774 -0.080360 - 726 775 10.544002 - 726 776 17.823566 - 726 1830 -0.001763 - 726 1831 0.473616 - 726 1832 0.800600 - 727 727 -52.567430 - 727 728 44.733734 - 727 776 -2.887367 - 727 1832 -0.129694 - 728 678 -0.000013 - 728 679 -2.140058 - 728 680 -3.617552 - 728 726 0.000704 - 728 727 9.750895 - 728 728 16.482902 - 728 729 -0.000013 - 728 730 -2.136405 - 728 731 -3.611378 - 728 774 -0.000014 - 728 775 -2.426681 - 728 776 -4.102058 - 728 1830 -0.000018 - 728 1831 -3.041851 - 728 1832 -5.141942 - 729 681 -0.001150 - 729 726 -0.001255 - 729 727 7.672635 - 729 728 12.969815 - 729 729 241.429160 - 729 730 -158.240060 - 729 731 -267.489000 - 729 732 -0.001149 - 729 777 -0.047710 - 729 778 9.078726 - 729 779 15.346678 - 729 1833 -0.002041 - 729 1834 0.461160 - 729 1835 0.779544 - 730 728 -2.101052 - 730 730 -46.008688 - 730 731 41.175183 - 730 779 -2.486095 - 730 1835 -0.126282 - 731 681 -0.000012 - 731 682 -1.957108 - 731 683 -3.308296 - 731 726 -0.000013 - 731 727 -2.136405 - 731 728 -3.611378 - 731 729 0.000636 - 731 730 11.667628 - 731 731 19.722955 - 731 732 -0.000012 - 731 733 -1.956265 - 731 734 -3.306871 - 731 777 -0.000013 - 731 778 -2.139502 - 731 779 -3.616614 - 731 1833 -0.000021 - 731 1834 -3.473180 - 731 1835 -5.871063 - 732 684 -0.001149 - 732 729 -0.052575 - 732 730 11.771221 - 732 731 19.898073 - 732 732 229.973640 - 732 733 -155.537230 - 732 734 -262.919960 - 732 735 -0.001148 - 732 780 -0.064501 - 732 781 8.996239 - 732 782 15.207231 - 732 1836 -0.002190 - 732 1837 0.472142 - 732 1838 0.798108 - 733 731 -3.223369 - 733 733 -43.828367 - 733 734 40.511193 - 733 782 -2.463474 - 733 1838 -0.129287 - 734 684 -0.000012 - 734 685 -1.910894 - 734 686 -3.230172 - 734 729 -0.000012 - 734 730 -1.956265 - 734 731 -3.306871 - 734 732 0.000608 - 734 733 11.336191 - 734 734 19.162684 - 734 735 -0.000012 - 734 736 -1.910188 - 734 737 -3.228979 - 734 780 -0.000012 - 734 781 -1.910669 - 734 782 -3.229792 - 734 1836 -0.000023 - 734 1837 -3.643249 - 734 1838 -6.158543 - 735 687 -0.001185 - 735 732 -0.124082 - 735 733 15.778360 - 735 734 26.671722 - 735 735 230.010510 - 735 736 -161.266520 - 735 737 -272.604930 - 735 738 -0.001241 - 735 783 -0.117258 - 735 784 10.506499 - 735 785 17.760186 - 735 1839 -0.002260 - 735 1840 0.644809 - 735 1841 1.089985 - 736 734 -4.320601 - 736 736 -43.837874 - 736 737 42.055632 - 736 785 -2.876985 - 736 1841 -0.176565 - 737 687 -0.000012 - 737 688 -1.911101 - 737 689 -3.230525 - 737 732 -0.000012 - 737 733 -1.910188 - 737 734 -3.228979 - 737 735 0.000611 - 737 736 11.383674 - 737 737 19.242960 - 737 738 -0.000013 - 737 739 -2.001715 - 737 740 -3.383699 - 737 783 -0.000012 - 737 784 -1.911252 - 737 785 -3.230781 - 737 1839 -0.000024 - 737 1840 -3.644487 - 737 1841 -6.160641 - 738 690 -0.001437 - 738 735 -0.152142 - 738 736 20.397004 - 738 737 34.479096 - 738 738 253.188090 - 738 739 -183.339790 - 738 740 -309.917420 - 738 741 -0.001514 - 738 786 -0.184360 - 738 787 13.942145 - 738 788 23.567784 - 738 1842 -0.002130 - 738 1843 1.277292 - 738 1844 2.159133 - 739 737 -5.585221 - 739 739 -48.235318 - 739 740 47.854592 - 739 788 -3.817684 - 739 1844 -0.349747 - 740 690 -0.000015 - 740 691 -2.234516 - 740 692 -3.777224 - 740 735 -0.000013 - 740 736 -2.001715 - 740 737 -3.383699 - 740 738 0.000671 - 740 739 11.962878 - 740 740 20.222038 - 740 741 -0.000016 - 740 742 -2.355314 - 740 743 -3.981421 - 740 786 -0.000013 - 740 787 -2.053528 - 740 788 -3.471281 - 740 1842 -0.000022 - 740 1843 -3.312375 - 740 1844 -5.599235 - 741 693 -0.001842 - 741 738 -0.276554 - 741 739 25.091868 - 741 740 42.415271 - 741 741 322.217860 - 741 742 -236.896820 - 741 743 -400.450390 - 741 744 -0.001959 - 741 789 -0.382956 - 741 790 21.121733 - 741 791 35.704177 - 741 1845 -0.001744 - 741 1846 2.577387 - 741 1847 4.356815 - 742 740 -6.870631 - 742 742 -61.399215 - 742 743 61.855639 - 742 791 -5.783500 - 742 1847 -0.705722 - 743 693 -0.000019 - 743 694 -2.760721 - 743 695 -4.666722 - 743 738 -0.000016 - 743 739 -2.355314 - 743 740 -3.981421 - 743 741 0.000844 - 743 742 13.243956 - 743 743 22.387581 - 743 744 -0.000020 - 743 745 -2.935694 - 743 746 -4.962497 - 743 789 -0.000017 - 743 790 -2.572364 - 743 791 -4.348324 - 743 1845 -0.000018 - 743 1846 -2.612950 - 743 1847 -4.416930 - 744 696 -0.002303 - 744 741 -0.324054 - 744 742 29.237469 - 744 743 49.423017 - 744 744 391.270080 - 744 745 -293.484850 - 744 746 -496.106360 - 744 747 -0.002479 - 744 792 -0.463020 - 744 793 31.337242 - 744 794 52.972422 - 744 1848 -0.001482 - 744 1849 4.525563 - 744 1850 7.650006 - 745 743 -8.005575 - 745 745 -74.565981 - 745 746 76.678890 - 745 794 -8.580509 - 745 1850 -1.239131 - 746 696 -0.000024 - 746 697 -3.337165 - 746 698 -5.641138 - 746 741 -0.000020 - 746 742 -2.935694 - 746 743 -4.962497 - 746 744 0.001022 - 746 745 15.258691 - 746 746 25.793274 - 746 747 -0.000026 - 746 748 -3.592570 - 746 749 -6.072875 - 746 792 -0.000023 - 746 793 -3.238013 - 746 794 -5.473533 - 746 1848 -0.000015 - 746 1849 -2.146850 - 746 1850 -3.629033 - 747 699 -0.002903 - 747 744 -0.306708 - 747 745 28.224648 - 747 746 47.710903 - 747 747 483.146660 - 747 748 -345.288360 - 747 749 -583.675450 - 747 750 -0.003089 - 747 795 -0.473559 - 747 796 28.960471 - 747 797 48.954780 - 747 1851 -0.001230 - 747 1852 5.945763 - 747 1853 10.050718 - 748 746 -7.728071 - 748 748 -92.121217 - 748 749 89.969790 - 748 797 -7.929536 - 748 1853 -1.627967 - 749 699 -0.000030 - 749 700 -4.100435 - 749 701 -6.931376 - 749 744 -0.000026 - 749 745 -3.592570 - 749 746 -6.072875 - 749 747 0.001259 - 749 748 17.763898 - 749 749 30.028088 - 749 750 -0.000032 - 749 751 -4.364394 - 749 752 -7.377571 - 749 795 -0.000029 - 749 796 -3.958055 - 749 797 -6.690696 - 749 1851 -0.000013 - 749 1852 -1.738063 - 749 1853 -2.938022 - 750 702 -0.003397 - 750 747 -0.103067 - 750 748 7.741826 - 750 749 13.086782 - 750 750 574.765230 - 750 751 -374.212130 - 750 752 -632.567880 - 750 798 -0.472096 - 750 799 25.400288 - 750 800 42.936615 - 750 1854 -0.001040 - 750 1855 5.193192 - 750 1856 8.778565 - 751 749 -2.119718 - 751 751 -109.669190 - 751 752 97.015417 - 751 800 -6.954676 - 751 1856 -1.421906 - 752 702 -0.000035 - 752 703 -4.770422 - 752 704 -8.063917 - 752 747 -0.000032 - 752 748 -4.364394 - 752 749 -7.377571 - 752 750 0.001457 - 752 751 15.329533 - 752 752 25.913031 - 752 798 -0.000034 - 752 799 -4.722417 - 752 800 -7.982768 - 752 1854 -0.000011 - 752 1855 -1.459942 - 752 1856 -2.467883 - 753 753 1.000000 - 754 754 1.000000 - 755 755 1.000000 - 756 756 1.000000 - 757 757 1.000000 - 758 758 1.000000 - 759 759 1.000000 - 760 760 1.000000 - 761 761 1.000000 - 762 762 1.000000 - 763 763 1.000000 - 764 764 1.000000 - 765 765 1.000000 - 766 766 1.000000 - 767 767 1.000000 - 768 768 1.000000 - 769 769 1.000000 - 770 770 1.000000 - 771 771 344.650670 - 771 772 -206.066050 - 771 773 -348.334050 - 771 774 -0.016348 - 771 819 -0.001612 - 771 820 4.004289 - 771 821 6.768850 - 771 1875 -0.001368 - 771 1876 0.552387 - 771 1877 0.933755 - 772 772 -65.688502 - 772 773 53.442501 - 772 821 -1.096545 - 772 1877 -0.151267 - 773 771 0.000853 - 773 772 8.013457 - 773 773 13.545947 - 773 774 -0.000016 - 773 775 -2.711276 - 773 776 -4.583141 - 773 819 -0.000017 - 773 820 -2.864286 - 773 821 -4.841788 - 773 1875 -0.000014 - 773 1876 -2.430530 - 773 1877 -4.108568 - 774 726 -0.001382 - 774 771 -0.001545 - 774 772 8.167058 - 774 773 13.805595 - 774 774 310.270710 - 774 775 -197.588600 - 774 776 -334.003530 - 774 777 -0.009735 - 774 822 -0.001546 - 774 823 7.543646 - 774 824 12.751770 - 774 1878 -0.001540 - 774 1879 0.523123 - 774 1880 0.884287 - 775 773 -2.236481 - 775 775 -59.131265 - 775 776 51.391010 - 775 824 -2.065763 - 775 1880 -0.143252 - 776 726 -0.000014 - 776 727 -2.426681 - 776 728 -4.102058 - 776 771 -0.000016 - 776 772 -2.711276 - 776 773 -4.583141 - 776 774 0.000803 - 776 775 12.985718 - 776 776 21.951045 - 776 777 -0.000015 - 776 778 -2.424028 - 776 779 -4.097574 - 776 822 -0.000016 - 776 823 -2.713573 - 776 824 -4.587021 - 776 1878 -0.000016 - 776 1879 -2.703527 - 776 1880 -4.570038 - 777 729 -0.001237 - 777 774 -0.001401 - 777 775 8.951589 - 777 776 15.131755 - 777 777 275.786220 - 777 778 -178.923550 - 777 779 -302.452360 - 777 780 -0.001203 - 777 825 -0.038542 - 777 826 8.304412 - 777 827 14.037779 - 777 1881 -0.001757 - 777 1882 0.479744 - 777 1883 0.810959 - 778 776 -2.451301 - 778 778 -52.573077 - 778 779 46.551825 - 778 827 -2.274078 - 778 1883 -0.131372 - 779 729 -0.000013 - 779 730 -2.139502 - 779 731 -3.616614 - 779 774 -0.000015 - 779 775 -2.424028 - 779 776 -4.097574 - 779 777 0.000717 - 779 778 12.029808 - 779 779 20.335185 - 779 780 -0.000013 - 779 781 -2.081491 - 779 782 -3.518552 - 779 825 -0.000014 - 779 826 -2.338679 - 779 827 -3.953303 - 779 1881 -0.000018 - 779 1882 -3.040207 - 779 1883 -5.139166 - 780 732 -0.001128 - 780 777 -0.032091 - 780 778 11.556585 - 780 779 19.535251 - 780 780 229.882960 - 780 781 -155.141310 - 780 782 -262.250680 - 780 783 -0.001127 - 780 828 -0.050981 - 780 829 8.790171 - 780 830 14.858896 - 780 1884 -0.002155 - 780 1885 0.459230 - 780 1886 0.776282 - 781 779 -3.164625 - 781 781 -43.822323 - 781 782 40.418167 - 781 830 -2.407072 - 781 1886 -0.125753 - 782 732 -0.000012 - 782 733 -1.910669 - 782 734 -3.229792 - 782 777 -0.000013 - 782 778 -2.081491 - 782 779 -3.518552 - 782 780 0.000608 - 782 781 11.509553 - 782 782 19.455737 - 782 783 -0.000012 - 782 784 -1.907882 - 782 785 -3.225081 - 782 828 -0.000012 - 782 829 -1.956488 - 782 830 -3.307245 - 782 1884 -0.000022 - 782 1885 -3.648100 - 782 1886 -6.166745 - 783 735 -0.001161 - 783 780 -0.071293 - 783 781 14.254211 - 783 782 24.095299 - 783 783 229.943540 - 783 784 -159.771020 - 783 785 -270.076920 - 783 786 -0.001187 - 783 831 -0.081700 - 783 832 10.688462 - 783 833 18.067775 - 783 1887 -0.002217 - 783 1888 0.509420 - 783 1889 0.861123 - 784 782 -3.903285 - 784 784 -43.834704 - 784 785 41.654598 - 784 833 -2.926850 - 784 1889 -0.139494 - 785 735 -0.000012 - 785 736 -1.911252 - 785 737 -3.230781 - 785 780 -0.000012 - 785 781 -1.907882 - 785 782 -3.225081 - 785 783 0.000609 - 785 784 11.338339 - 785 785 19.166326 - 785 786 -0.000012 - 785 787 -1.954691 - 785 788 -3.304209 - 785 831 -0.000012 - 785 832 -1.910324 - 785 833 -3.229212 - 785 1887 -0.000023 - 785 1888 -3.649262 - 785 1889 -6.168712 - 786 738 -0.001289 - 786 783 -0.092997 - 786 784 17.391223 - 786 785 29.398124 - 786 786 241.511390 - 786 787 -172.866650 - 786 788 -292.213570 - 786 789 -0.001392 - 786 834 -0.120154 - 786 835 13.639587 - 786 836 23.056342 - 786 1890 -0.002180 - 786 1891 0.788453 - 786 1892 1.332799 - 787 785 -4.762223 - 787 787 -46.041311 - 787 788 45.098157 - 787 836 -3.734897 - 787 1892 -0.215897 - 788 738 -0.000013 - 788 739 -2.053528 - 788 740 -3.471281 - 788 783 -0.000012 - 788 784 -1.954691 - 788 785 -3.304209 - 788 786 0.000640 - 788 787 11.712269 - 788 788 19.798408 - 788 789 -0.000015 - 788 790 -2.218474 - 788 791 -3.750105 - 788 834 -0.000013 - 788 835 -2.006779 - 788 836 -3.392256 - 788 1890 -0.000023 - 788 1891 -3.473617 - 788 1892 -5.871797 - 789 741 -0.001668 - 789 786 -0.129357 - 789 787 20.478718 - 789 788 34.617200 - 789 789 299.296290 - 789 790 -216.420270 - 789 791 -365.836820 - 789 792 -0.001826 - 789 837 -0.204339 - 789 838 19.964062 - 789 839 33.747250 - 789 1893 -0.001818 - 789 1894 1.426502 - 789 1895 2.411359 - 790 788 -5.607550 - 790 790 -57.020556 - 790 791 56.448122 - 790 839 -5.466612 - 790 1895 -0.390602 - 791 741 -0.000017 - 791 742 -2.572364 - 791 743 -4.348324 - 791 786 -0.000015 - 791 787 -2.218474 - 791 788 -3.750105 - 791 789 0.000785 - 791 790 12.900552 - 791 791 21.807090 - 791 792 -0.000019 - 791 793 -2.816056 - 791 794 -4.760261 - 791 837 -0.000016 - 791 838 -2.483056 - 791 839 -4.197358 - 791 1893 -0.000019 - 791 1894 -2.804180 - 791 1895 -4.740185 - 792 744 -0.002164 - 792 789 -0.327371 - 792 790 23.913941 - 792 791 40.424126 - 792 792 391.279950 - 792 793 -291.762790 - 792 794 -493.195350 - 792 795 -0.002375 - 792 840 -0.616488 - 792 841 37.103314 - 792 842 62.719392 - 792 1896 -0.001440 - 792 1897 2.286026 - 792 1898 3.864296 - 793 791 -6.548056 - 793 793 -74.567079 - 793 794 76.206877 - 793 842 -10.159607 - 793 1898 -0.625943 - 794 744 -0.000023 - 794 745 -3.238013 - 794 746 -5.473533 - 794 789 -0.000019 - 794 790 -2.816056 - 794 791 -4.760261 - 794 792 0.001017 - 794 793 15.008424 - 794 794 25.370222 - 794 795 -0.000025 - 794 796 -3.553927 - 794 797 -6.007552 - 794 840 -0.000022 - 794 841 -3.237423 - 794 842 -5.472535 - 794 1896 -0.000015 - 794 1897 -2.154605 - 794 1898 -3.642142 - 795 747 -0.002735 - 795 792 -0.386357 - 795 793 36.310525 - 795 794 61.379251 - 795 795 471.433830 - 795 796 -315.040320 - 795 797 -532.544150 - 795 798 -0.002950 - 795 1899 -0.001231 - 795 1900 3.358751 - 795 1901 5.677632 - 796 794 -9.942253 - 796 796 -89.932956 - 796 797 81.786007 - 796 1901 -0.919648 - 797 747 -0.000029 - 797 748 -3.958055 - 797 749 -6.690696 - 797 792 -0.000025 - 797 793 -3.553927 - 797 794 -6.007552 - 797 795 0.001199 - 797 796 13.571840 - 797 797 22.941832 - 797 798 -0.000031 - 797 799 -4.268328 - 797 800 -7.215182 - 797 1899 -0.000013 - 797 1900 -1.781394 - 797 1901 -3.011268 - 798 750 -0.003304 - 798 795 -0.184732 - 798 796 15.843805 - 798 797 26.782368 - 798 798 563.093880 - 798 799 -348.358320 - 798 800 -588.864490 - 798 1902 -0.001042 - 798 1903 3.379522 - 798 1904 5.712742 - 799 797 -4.338121 - 799 799 -107.485330 - 799 800 90.023638 - 799 1904 -0.925328 - 800 750 -0.000034 - 800 751 -4.722417 - 800 752 -7.982768 - 800 795 -0.000031 - 800 796 -4.268328 - 800 797 -7.215182 - 800 798 0.001393 - 800 799 10.492712 - 800 800 17.736873 - 800 1902 -0.000011 - 800 1903 -1.489850 - 800 1904 -2.518442 - 801 801 1.000000 - 802 802 1.000000 - 803 803 1.000000 - 804 804 1.000000 - 805 805 1.000000 - 806 806 1.000000 - 807 807 1.000000 - 808 808 1.000000 - 809 809 1.000000 - 810 810 1.000000 - 811 811 1.000000 - 812 812 1.000000 - 813 813 1.000000 - 814 814 1.000000 - 815 815 1.000000 - 816 816 1.000000 - 817 817 1.000000 - 818 818 1.000000 - 819 771 -0.016955 - 819 819 344.668580 - 819 820 -206.577340 - 819 821 -349.198340 - 819 822 -0.024181 - 819 867 -0.001603 - 819 868 4.480920 - 819 869 7.574547 - 819 1923 -0.001360 - 819 1924 0.562159 - 819 1925 0.950273 - 820 820 -60.270803 - 820 821 62.745862 - 820 869 -1.227071 - 820 1925 -0.153943 - 821 771 -0.000017 - 821 772 -2.864286 - 821 773 -4.841788 - 821 819 0.000871 - 821 820 11.026543 - 821 821 18.639267 - 821 822 -0.000017 - 821 823 -2.861301 - 821 824 -4.836742 - 821 867 -0.000017 - 821 868 -2.864372 - 821 869 -4.841934 - 821 1923 -0.000014 - 821 1924 -2.429223 - 821 1925 -4.106358 - 822 774 -0.009494 - 822 819 -0.001612 - 822 820 4.664749 - 822 821 7.885292 - 822 822 344.659580 - 822 823 -213.038160 - 822 824 -360.119500 - 822 825 -0.059415 - 822 870 -0.023810 - 822 871 6.320356 - 822 872 10.683921 - 822 1926 -0.001371 - 822 1927 0.527848 - 822 1928 0.892274 - 823 821 -1.277407 - 823 823 -65.690055 - 823 824 55.347981 - 823 872 -1.730785 - 823 1928 -0.144547 - 824 774 -0.000016 - 824 775 -2.713573 - 824 776 -4.587021 - 824 819 -0.000017 - 824 820 -2.861301 - 824 821 -4.836742 - 824 822 0.000886 - 824 823 13.480709 - 824 824 22.787778 - 824 825 -0.000015 - 824 826 -2.600280 - 824 827 -4.395511 - 824 870 -0.000017 - 824 871 -2.864580 - 824 872 -4.842282 - 824 1926 -0.000014 - 824 1927 -2.433610 - 824 1928 -4.113771 - 825 777 -0.001333 - 825 822 -0.001482 - 825 823 7.597627 - 825 824 12.843021 - 825 825 287.300140 - 825 826 -183.234880 - 825 827 -309.740230 - 825 828 -0.001241 - 825 873 -0.016360 - 825 874 7.221469 - 825 875 12.207171 - 825 1929 -0.001664 - 825 1930 0.498162 - 825 1931 0.842094 - 826 824 -2.080546 - 826 826 -54.755899 - 826 827 47.649979 - 826 875 -1.977539 - 826 1931 -0.136417 - 827 777 -0.000014 - 827 778 -2.338679 - 827 779 -3.953303 - 827 822 -0.000015 - 827 823 -2.600280 - 827 824 -4.395511 - 827 825 0.000746 - 827 826 12.428043 - 827 827 21.008360 - 827 828 -0.000013 - 827 829 -2.176988 - 827 830 -3.679980 - 827 873 -0.000014 - 827 874 -2.386958 - 827 875 -4.034913 - 827 1929 -0.000017 - 827 1930 -2.918994 - 827 1931 -4.934267 - 828 780 -0.001135 - 828 825 -0.012714 - 828 826 10.036045 - 828 827 16.964930 - 828 828 241.330390 - 828 829 -159.726540 - 828 830 -270.001590 - 828 831 -0.001133 - 828 876 -0.025621 - 828 877 8.198949 - 828 878 13.859495 - 828 1932 -0.002018 - 828 1933 0.455151 - 828 1934 0.769387 - 829 827 -2.748267 - 829 829 -46.006226 - 829 830 41.588697 - 829 878 -2.245195 - 829 1934 -0.124637 - 830 780 -0.000012 - 830 781 -1.956488 - 830 782 -3.307245 - 830 825 -0.000013 - 830 826 -2.176988 - 830 827 -3.679980 - 830 828 0.000634 - 830 829 11.574441 - 830 830 19.565427 - 830 831 -0.000012 - 830 832 -1.953385 - 830 833 -3.301999 - 830 876 -0.000012 - 830 877 -2.004995 - 830 878 -3.389242 - 830 1932 -0.000021 - 830 1933 -3.477420 - 830 1934 -5.878228 - 831 783 -0.001136 - 831 828 -0.040353 - 831 829 12.440799 - 831 830 21.029915 - 831 831 229.882320 - 831 832 -157.601960 - 831 833 -266.410360 - 831 834 -0.001162 - 831 879 -0.050339 - 831 880 10.360255 - 831 881 17.512975 - 831 1935 -0.002173 - 831 1936 0.461074 - 831 1937 0.779399 - 832 830 -3.406748 - 832 832 -43.828011 - 832 833 41.077746 - 832 881 -2.837012 - 832 1937 -0.126257 - 833 783 -0.000012 - 833 784 -1.910324 - 833 785 -3.229212 - 833 828 -0.000012 - 833 829 -1.953385 - 833 830 -3.301999 - 833 831 0.000608 - 833 832 11.384557 - 833 833 19.244453 - 833 834 -0.000012 - 833 835 -1.953223 - 833 836 -3.301729 - 833 879 -0.000012 - 833 880 -1.909517 - 833 881 -3.227848 - 833 1935 -0.000023 - 833 1936 -3.653182 - 833 1937 -6.175339 - 834 786 -0.001229 - 834 831 -0.059512 - 834 832 15.030646 - 834 833 25.407804 - 834 834 241.407110 - 834 835 -169.790470 - 834 836 -287.013620 - 834 837 -0.001356 - 834 882 -0.095382 - 834 883 13.129917 - 834 884 22.194797 - 834 1938 -0.002129 - 834 1939 0.585000 - 834 1940 0.988883 - 835 833 -4.115882 - 835 835 -46.034272 - 835 836 44.274019 - 835 884 -3.595391 - 835 1940 -0.160189 - 836 786 -0.000013 - 836 787 -2.006779 - 836 788 -3.392256 - 836 831 -0.000012 - 836 832 -1.953223 - 836 833 -3.301729 - 836 834 0.000638 - 836 835 11.661624 - 836 836 19.712798 - 836 837 -0.000014 - 836 838 -2.215379 - 836 839 -3.744874 - 836 882 -0.000012 - 836 883 -2.003694 - 836 884 -3.387043 - 836 1938 -0.000022 - 836 1939 -3.477370 - 836 1940 -5.878142 - 837 789 -0.001565 - 837 834 -0.079495 - 837 835 17.694926 - 837 836 29.911484 - 837 837 298.827460 - 837 838 -205.621030 - 837 839 -347.581780 - 837 840 -0.001772 - 837 885 -0.018481 - 837 886 12.425388 - 837 887 21.003875 - 837 1941 -0.001773 - 837 1942 0.861804 - 837 1943 1.456794 - 838 836 -4.845361 - 838 838 -57.012907 - 838 839 53.511216 - 838 887 -3.402391 - 838 1943 -0.235982 - 839 789 -0.000016 - 839 790 -2.483056 - 839 791 -4.197358 - 839 834 -0.000014 - 839 835 -2.215379 - 839 836 -3.744874 - 839 837 0.000782 - 839 838 12.812149 - 839 839 21.657654 - 839 840 -0.000018 - 839 841 -2.812326 - 839 842 -4.753955 - 839 885 -0.000016 - 839 886 -2.481705 - 839 887 -4.195074 - 839 1941 -0.000019 - 839 1942 -2.813264 - 839 1943 -4.755541 - 840 792 -0.002077 - 840 837 -0.022783 - 840 838 14.261129 - 840 839 24.107012 - 840 840 391.051560 - 840 841 -261.208570 - 840 842 -441.546650 - 840 888 -0.026512 - 840 889 17.605472 - 840 890 29.760267 - 840 1944 -0.001379 - 840 1945 1.097418 - 840 1946 1.855074 - 841 839 -3.905020 - 841 841 -74.574783 - 841 842 67.824365 - 841 890 -4.820781 - 841 1946 -0.300495 - 842 792 -0.000022 - 842 793 -3.237423 - 842 794 -5.472535 - 842 837 -0.000018 - 842 838 -2.812326 - 842 839 -4.753955 - 842 840 0.000989 - 842 841 11.401721 - 842 842 19.273457 - 842 888 -0.000021 - 842 889 -3.193950 - 842 890 -5.399049 - 842 1944 -0.000014 - 842 1945 -2.149620 - 842 1946 -3.633714 - 843 843 1.000000 - 844 844 1.000000 - 845 845 1.000000 - 846 846 1.000000 - 847 847 1.000000 - 848 848 1.000000 - 849 849 1.000000 - 850 850 1.000000 - 851 851 1.000000 - 852 852 1.000000 - 853 853 1.000000 - 854 854 1.000000 - 855 855 1.000000 - 856 856 1.000000 - 857 857 1.000000 - 858 858 1.000000 - 859 859 1.000000 - 860 860 1.000000 - 861 861 1.000000 - 862 862 1.000000 - 863 863 1.000000 - 864 864 1.000000 - 865 865 1.000000 - 866 866 1.000000 - 867 819 -0.026113 - 867 867 344.663030 - 867 868 -205.228460 - 867 869 -346.918190 - 867 870 -0.070844 - 867 915 -0.001594 - 867 916 3.131511 - 867 917 5.293507 - 867 1971 -0.001352 - 867 1972 0.563222 - 867 1973 0.952070 - 868 868 -60.262267 - 868 869 62.397303 - 868 917 -0.857546 - 868 1973 -0.154235 - 869 819 -0.000017 - 869 820 -2.864372 - 869 821 -4.841934 - 869 867 0.000870 - 869 868 11.027649 - 869 869 18.641137 - 869 870 -0.000017 - 869 871 -2.861569 - 869 872 -4.837196 - 869 915 -0.000017 - 869 916 -2.864796 - 869 917 -4.842651 - 869 1971 -0.000014 - 869 1972 -2.429554 - 869 1973 -4.106918 - 870 822 -0.001600 - 870 867 -0.001598 - 870 868 2.827902 - 870 869 4.780285 - 870 870 344.753360 - 870 871 -209.696840 - 870 872 -354.471290 - 870 873 -0.055632 - 870 918 -0.001572 - 870 919 4.816685 - 870 920 8.142119 - 870 1974 -0.001358 - 870 1975 0.531258 - 870 1976 0.898038 - 871 869 -0.774403 - 871 871 -65.683722 - 871 872 54.448839 - 871 920 -1.319020 - 871 1976 -0.145481 - 872 822 -0.000017 - 872 823 -2.864580 - 872 824 -4.842282 - 872 867 -0.000017 - 872 868 -2.861569 - 872 869 -4.837196 - 872 870 0.000886 - 872 871 13.583208 - 872 872 22.961043 - 872 873 -0.000015 - 872 874 -2.601715 - 872 875 -4.397936 - 872 918 -0.000016 - 872 919 -2.815881 - 872 920 -4.759962 - 872 1974 -0.000014 - 872 1975 -2.432101 - 872 1976 -4.111220 - 873 825 -0.001344 - 873 870 -0.001465 - 873 871 5.470773 - 873 872 9.247789 - 873 873 287.271430 - 873 874 -179.847910 - 873 875 -304.014910 - 873 876 -0.002652 - 873 921 -0.006287 - 873 922 5.975674 - 873 923 10.101279 - 873 1977 -0.001643 - 873 1978 0.497859 - 873 1979 0.841581 - 874 872 -1.498133 - 874 874 -54.747707 - 874 875 46.742926 - 874 923 -1.636398 - 874 1979 -0.136335 - 875 825 -0.000014 - 875 826 -2.386958 - 875 827 -4.034913 - 875 870 -0.000015 - 875 871 -2.601715 - 875 872 -4.397936 - 875 873 0.000745 - 875 874 12.427625 - 875 875 21.007653 - 875 876 -0.000013 - 875 877 -2.177178 - 875 878 -3.680302 - 875 921 -0.000014 - 875 922 -2.338077 - 875 923 -3.952285 - 875 1977 -0.000017 - 875 1978 -2.917556 - 875 1979 -4.931837 - 876 828 -0.001145 - 876 873 -0.001244 - 876 874 7.720605 - 876 875 13.050911 - 876 876 241.289140 - 876 877 -156.530410 - 876 878 -264.598870 - 876 879 -0.001115 - 876 924 -0.028587 - 876 925 7.294179 - 876 926 12.330072 - 876 1980 -0.001985 - 876 1981 0.449715 - 876 1982 0.760198 - 877 875 -2.114223 - 877 877 -45.997623 - 877 878 40.735007 - 877 926 -1.997450 - 877 1982 -0.123150 - 878 828 -0.000012 - 878 829 -2.004995 - 878 830 -3.389242 - 878 873 -0.000013 - 878 874 -2.177178 - 878 875 -3.680302 - 878 876 0.000633 - 878 877 11.571691 - 878 878 19.560777 - 878 879 -0.000012 - 878 880 -1.952097 - 878 881 -3.299824 - 878 924 -0.000011 - 878 925 -1.956197 - 878 926 -3.306753 - 878 1980 -0.000021 - 878 1981 -3.476062 - 878 1982 -5.875930 - 879 831 -0.001112 - 879 876 -0.013811 - 879 877 9.823857 - 879 878 16.606239 - 879 879 229.819580 - 879 880 -155.087840 - 879 881 -262.160480 - 879 882 -0.001138 - 879 927 -0.051645 - 879 928 10.488328 - 879 929 17.729469 - 879 1983 -0.002130 - 879 1984 0.441456 - 879 1985 0.746237 - 880 878 -2.690158 - 880 880 -43.818848 - 880 881 40.412391 - 880 929 -2.872120 - 880 1985 -0.120887 - 881 831 -0.000012 - 881 832 -1.909517 - 881 833 -3.227848 - 881 876 -0.000012 - 881 877 -1.952097 - 881 878 -3.299824 - 881 879 0.000606 - 881 880 11.386064 - 881 881 19.247000 - 881 882 -0.000012 - 881 883 -1.953723 - 881 884 -3.302573 - 881 927 -0.000011 - 881 928 -1.909016 - 881 929 -3.227001 - 881 1983 -0.000022 - 881 1984 -3.656789 - 881 1985 -6.181435 - 882 834 -0.001196 - 882 879 -0.018024 - 882 880 12.831785 - 882 881 21.690848 - 882 882 241.481680 - 882 883 -172.742630 - 882 884 -292.003970 - 882 885 -0.001324 - 882 930 -0.076276 - 882 931 18.367232 - 882 932 31.047948 - 882 1986 -0.002078 - 882 1987 0.512428 - 882 1988 0.866207 - 883 881 -3.513806 - 883 883 -46.025611 - 883 884 45.104546 - 883 932 -5.029638 - 883 1988 -0.140319 - 884 834 -0.000012 - 884 835 -2.003694 - 884 836 -3.387043 - 884 879 -0.000012 - 884 880 -1.953723 - 884 881 -3.302573 - 884 882 0.000637 - 884 883 11.710275 - 884 884 19.795037 - 884 885 -0.000014 - 884 886 -2.217911 - 884 887 -3.749154 - 884 930 -0.000012 - 884 931 -2.049464 - 884 932 -3.464412 - 884 1986 -0.000022 - 884 1987 -3.480307 - 884 1988 -5.883107 - 885 837 -0.001536 - 885 882 -0.168670 - 885 883 21.144376 - 885 884 35.742431 - 885 885 298.655140 - 885 886 -196.509860 - 885 887 -332.180270 - 885 888 -0.001718 - 885 1989 -0.001739 - 885 1990 0.675936 - 885 1991 1.142602 - 886 884 -5.790006 - 886 886 -56.998073 - 886 887 51.053573 - 886 1991 -0.185089 - 887 837 -0.000016 - 887 838 -2.481705 - 887 839 -4.195074 - 887 882 -0.000014 - 887 883 -2.217911 - 887 884 -3.749154 - 887 885 0.000765 - 887 886 10.289227 - 887 887 17.392906 - 887 888 -0.000018 - 887 889 -2.774568 - 887 890 -4.690129 - 887 1989 -0.000018 - 887 1990 -2.808630 - 887 1991 -4.747708 - 888 840 -0.002010 - 888 885 -0.020106 - 888 886 12.667573 - 888 887 21.413265 - 888 888 379.003530 - 888 889 -235.148880 - 888 890 -397.495380 - 888 1992 -0.001395 - 888 1993 0.786443 - 888 1994 1.329401 - 889 887 -3.468708 - 889 889 -72.360764 - 889 890 60.849346 - 889 1994 -0.215346 - 890 840 -0.000021 - 890 841 -3.193950 - 890 842 -5.399049 - 890 885 -0.000018 - 890 886 -2.774568 - 890 887 -4.690129 - 890 888 0.000940 - 890 889 8.193192 - 890 890 13.849764 - 890 1992 -0.000015 - 890 1993 -2.216528 - 890 1994 -3.746815 - 891 891 1.000000 - 892 892 1.000000 - 893 893 1.000000 - 894 894 1.000000 - 895 895 1.000000 - 896 896 1.000000 - 897 897 1.000000 - 898 898 1.000000 - 899 899 1.000000 - 900 900 1.000000 - 901 901 1.000000 - 902 902 1.000000 - 903 903 1.000000 - 904 904 1.000000 - 905 905 1.000000 - 906 906 1.000000 - 907 907 1.000000 - 908 908 1.000000 - 909 909 1.000000 - 910 910 1.000000 - 911 911 1.000000 - 912 912 1.000000 - 913 913 1.000000 - 914 914 1.000000 - 915 867 -0.011800 - 915 915 344.656670 - 915 916 -202.101410 - 915 917 -341.632220 - 915 918 -0.061502 - 915 2019 -0.001345 - 915 2020 0.557291 - 915 2021 0.942044 - 916 916 -65.668414 - 916 917 52.406411 - 916 2021 -0.152611 - 917 867 -0.000017 - 917 868 -2.864796 - 917 869 -4.842651 - 917 915 0.000853 - 917 916 8.113959 - 917 917 13.715837 - 917 918 -0.000016 - 917 919 -2.813742 - 917 920 -4.756349 - 917 2019 -0.000014 - 917 2020 -2.428066 - 917 2021 -4.104402 - 918 870 -0.019761 - 918 915 -0.001560 - 918 916 1.043216 - 918 917 1.763452 - 918 918 333.230070 - 918 919 -199.286750 - 918 920 -336.874120 - 918 921 -0.075083 - 918 966 -0.001451 - 918 967 2.923511 - 918 968 4.941899 - 918 2022 -0.001395 - 918 2023 0.520392 - 918 2024 0.879670 - 919 917 -0.285679 - 919 919 -63.486307 - 919 920 51.716900 - 919 968 -0.800588 - 919 2024 -0.142506 - 920 870 -0.000016 - 920 871 -2.815881 - 920 872 -4.759962 - 920 915 -0.000016 - 920 916 -2.813742 - 920 917 -4.756349 - 920 918 0.000856 - 920 919 13.273757 - 920 920 22.437948 - 920 921 -0.000015 - 920 922 -2.505335 - 920 923 -4.235015 - 920 966 -0.000015 - 920 967 -2.616920 - 920 968 -4.423638 - 920 2022 -0.000015 - 920 2023 -2.514767 - 920 2024 -4.250958 - 921 873 -0.001303 - 921 918 -0.001396 - 921 919 3.150285 - 921 920 5.325238 - 921 921 275.807050 - 921 922 -169.234850 - 921 923 -286.074590 - 921 924 -0.027329 - 921 969 -0.001192 - 921 970 4.394735 - 921 971 7.428860 - 921 2025 -0.001694 - 921 2026 0.481380 - 921 2027 0.813724 - 922 920 -0.862687 - 922 922 -52.550474 - 922 923 43.955116 - 922 971 -1.203474 - 922 2027 -0.131823 - 923 873 -0.000014 - 923 874 -2.338077 - 923 875 -3.952285 - 923 918 -0.000015 - 923 919 -2.505335 - 923 920 -4.235015 - 923 921 0.000716 - 923 922 12.108122 - 923 923 20.467567 - 923 924 -0.000012 - 923 925 -2.081367 - 923 926 -3.518343 - 923 969 -0.000012 - 923 970 -2.138675 - 923 971 -3.615217 - 923 2025 -0.000018 - 923 2026 -3.038776 - 923 2027 -5.136748 - 924 876 -0.001101 - 924 921 -0.001171 - 924 922 4.939394 - 924 923 8.349552 - 924 924 229.826800 - 924 925 -145.449890 - 924 926 -245.868330 - 924 927 -0.012405 - 924 972 -0.012781 - 924 973 5.747739 - 924 974 9.715972 - 924 2028 -0.002053 - 924 2029 0.438850 - 924 2030 0.741831 - 925 923 -1.352620 - 925 925 -43.800301 - 925 926 37.819564 - 925 974 -1.573982 - 925 2030 -0.120175 - 926 876 -0.000011 - 926 877 -1.956197 - 926 878 -3.306753 - 926 921 -0.000012 - 926 922 -2.081367 - 926 923 -3.518343 - 926 924 0.000605 - 926 925 11.508061 - 926 926 19.453216 - 926 927 -0.000011 - 926 928 -1.908146 - 926 929 -3.225528 - 926 972 -0.000011 - 926 973 -1.909476 - 926 974 -3.227776 - 926 2028 -0.000021 - 926 2029 -3.647962 - 926 2030 -6.166510 - 927 879 -0.001088 - 927 924 -0.001088 - 927 925 6.233941 - 927 926 10.537847 - 927 927 229.825240 - 927 928 -148.591700 - 927 929 -251.179420 - 927 930 -0.004189 - 927 975 -0.012881 - 927 976 7.593210 - 927 977 12.835562 - 927 2031 -0.002080 - 927 2032 0.426569 - 927 2033 0.721072 - 928 926 -1.707113 - 928 928 -43.809625 - 928 929 38.656718 - 928 977 -2.079341 - 928 2033 -0.116811 - 929 879 -0.000011 - 929 880 -1.909016 - 929 881 -3.227001 - 929 924 -0.000011 - 929 925 -1.908146 - 929 926 -3.225528 - 929 927 0.000605 - 929 928 11.378192 - 929 929 19.233694 - 929 930 -0.000012 - 929 931 -1.998371 - 929 932 -3.378046 - 929 975 -0.000011 - 929 976 -1.908820 - 929 977 -3.226670 - 929 2031 -0.000022 - 929 2032 -3.648922 - 929 2033 -6.168137 - 930 882 -0.001183 - 930 927 -0.001153 - 930 928 6.194594 - 930 929 10.471342 - 930 930 252.800210 - 930 931 -163.454440 - 930 932 -276.303210 - 930 978 -0.028943 - 930 979 9.057929 - 930 980 15.311518 - 930 2034 -0.001916 - 930 2035 0.446378 - 930 2036 0.754558 - 931 929 -1.696325 - 931 931 -48.199513 - 931 932 42.501223 - 931 980 -2.480426 - 931 2036 -0.122235 - 932 882 -0.000012 - 932 883 -2.049464 - 932 884 -3.464412 - 932 927 -0.000012 - 932 928 -1.998371 - 932 929 -3.378046 - 932 930 0.000648 - 932 931 9.520503 - 932 932 16.093452 - 932 978 -0.000013 - 932 979 -2.146916 - 932 980 -3.629146 - 932 2034 -0.000020 - 932 2035 -3.320339 - 932 2036 -5.612698 - 933 933 1.000000 - 934 934 1.000000 - 935 935 1.000000 - 936 936 1.000000 - 937 937 1.000000 - 938 938 1.000000 - 939 939 1.000000 - 940 940 1.000000 - 941 941 1.000000 - 942 942 1.000000 - 943 943 1.000000 - 944 944 1.000000 - 945 945 1.000000 - 946 946 1.000000 - 947 947 1.000000 - 948 948 1.000000 - 949 949 1.000000 - 950 950 1.000000 - 951 951 1.000000 - 952 952 1.000000 - 953 953 1.000000 - 954 954 1.000000 - 955 955 1.000000 - 956 956 1.000000 - 957 957 1.000000 - 958 958 1.000000 - 959 959 1.000000 - 960 960 1.000000 - 961 961 1.000000 - 962 962 1.000000 - 963 963 1.000000 - 964 964 1.000000 - 965 965 1.000000 - 966 918 -0.005334 - 966 966 298.709230 - 966 967 -175.165790 - 966 968 -296.100050 - 966 969 -0.065873 - 966 2070 -0.001549 - 966 2071 0.498117 - 966 2072 0.842017 - 967 967 -56.914730 - 967 968 45.417038 - 967 2072 -0.136407 - 968 918 -0.000015 - 968 919 -2.616920 - 968 920 -4.423638 - 968 966 0.000743 - 968 967 7.645461 - 968 968 12.923878 - 968 969 -0.000013 - 968 970 -2.216879 - 968 971 -3.747410 - 968 2070 -0.000016 - 968 2071 -2.805286 - 968 2072 -4.742052 - 969 921 -0.004905 - 969 966 -0.001225 - 969 967 0.708615 - 969 968 1.197842 - 969 969 241.339950 - 969 970 -145.704550 - 969 971 -246.298970 - 969 972 -0.041054 - 969 1017 -0.001081 - 969 1018 3.494555 - 969 1019 5.907196 - 969 2073 -0.001919 - 969 2074 0.457785 - 969 2075 0.773840 - 970 968 -0.194050 - 970 970 -42.188136 - 970 971 44.227243 - 970 1019 -0.956969 - 970 2075 -0.125362 - 971 921 -0.000012 - 971 922 -2.138675 - 971 923 -3.615217 - 971 966 -0.000013 - 971 967 -2.216879 - 971 968 -3.747410 - 971 969 0.000632 - 971 970 11.743620 - 971 971 19.851412 - 971 972 -0.000011 - 971 973 -1.955043 - 971 974 -3.304805 - 971 1017 -0.000011 - 971 1018 -1.956197 - 971 1019 -3.306755 - 971 2073 -0.000020 - 971 2074 -3.471673 - 971 2075 -5.868516 - 972 924 -0.001061 - 972 969 -0.001087 - 972 970 2.771988 - 972 971 4.685769 - 972 972 229.832460 - 972 973 -142.065990 - 972 974 -240.148210 - 972 975 -0.012486 - 972 1020 -0.001061 - 972 1021 4.537014 - 972 1022 7.669365 - 972 2076 -0.002026 - 972 2077 0.419476 - 972 2078 0.709082 - 973 971 -0.759094 - 973 973 -43.793757 - 973 974 36.909200 - 973 1022 -1.242439 - 973 2078 -0.114871 - 974 924 -0.000011 - 974 925 -1.909476 - 974 926 -3.227776 - 974 969 -0.000011 - 974 970 -1.955043 - 974 971 -3.304805 - 974 972 0.000603 - 974 973 11.332200 - 974 974 19.155942 - 974 975 -0.000011 - 974 976 -1.908287 - 974 977 -3.225767 - 974 1020 -0.000011 - 974 1021 -1.909338 - 974 1022 -3.227544 - 974 2076 -0.000021 - 974 2077 -3.645145 - 974 2078 -6.161749 - 975 927 -0.001071 - 975 972 -0.001071 - 975 973 4.387382 - 975 974 7.416427 - 975 975 229.796230 - 975 976 -145.348790 - 975 977 -245.697590 - 975 978 -0.017989 - 975 1023 -0.003039 - 975 1024 6.205289 - 975 1025 10.489420 - 975 2079 -0.002047 - 975 2080 0.426701 - 975 2081 0.721296 - 976 974 -1.201457 - 976 976 -43.800643 - 976 977 37.791073 - 976 1025 -1.699282 - 976 2081 -0.116849 - 977 927 -0.000011 - 977 928 -1.908820 - 977 929 -3.226670 - 977 972 -0.000011 - 977 973 -1.908287 - 977 974 -3.225767 - 977 975 0.000605 - 977 976 11.511560 - 977 977 19.459139 - 977 978 -0.000012 - 977 979 -2.040894 - 977 980 -3.449927 - 977 1023 -0.000012 - 977 1024 -1.999851 - 977 1025 -3.380549 - 977 2079 -0.000021 - 977 2080 -3.648793 - 977 2081 -6.167920 - 978 930 -0.001218 - 978 975 -0.001158 - 978 976 5.834263 - 978 977 9.862238 - 978 978 264.260110 - 978 979 -160.753540 - 978 980 -271.737680 - 978 2082 -0.001801 - 978 2083 0.437951 - 978 2084 0.740312 - 979 977 -1.597667 - 979 979 -50.380740 - 979 980 41.683042 - 979 2084 -0.119929 - 980 930 -0.000013 - 980 931 -2.146916 - 980 932 -3.629146 - 980 975 -0.000012 - 980 976 -2.040894 - 980 977 -3.449927 - 980 978 0.000662 - 980 979 7.366534 - 980 980 12.452383 - 980 2082 -0.000019 - 980 2083 -3.173069 - 980 2084 -5.363752 - 981 981 1.000000 - 982 982 1.000000 - 983 983 1.000000 - 984 984 1.000000 - 985 985 1.000000 - 986 986 1.000000 - 987 987 1.000000 - 988 988 1.000000 - 989 989 1.000000 - 990 990 1.000000 - 991 991 1.000000 - 992 992 1.000000 - 993 993 1.000000 - 994 994 1.000000 - 995 995 1.000000 - 996 996 1.000000 - 997 997 1.000000 - 998 998 1.000000 - 999 999 1.000000 - 1000 1000 1.000000 - 1001 1001 1.000000 - 1002 1002 1.000000 - 1003 1003 1.000000 - 1004 1004 1.000000 - 1005 1005 1.000000 - 1006 1006 1.000000 - 1007 1007 1.000000 - 1008 1008 1.000000 - 1009 1009 1.000000 - 1010 1010 1.000000 - 1011 1011 1.000000 - 1012 1012 1.000000 - 1013 1013 1.000000 - 1014 1014 1.000000 - 1015 1015 1.000000 - 1016 1016 1.000000 - 1017 969 -0.002636 - 1017 1017 229.806270 - 1017 1018 -137.022390 - 1017 1019 -231.622650 - 1017 1020 -0.041015 - 1017 1065 -0.001048 - 1017 1066 2.260580 - 1017 1067 3.821284 - 1017 2121 -0.001999 - 1017 2122 0.411318 - 1017 2123 0.695292 - 1018 1018 -43.781862 - 1018 1019 35.557344 - 1018 1067 -0.619052 - 1018 2123 -0.112638 - 1019 969 -0.000011 - 1019 970 -1.956197 - 1019 971 -3.306755 - 1019 1017 0.000592 - 1019 1018 9.423386 - 1019 1019 15.929293 - 1019 1020 -0.000011 - 1019 1021 -1.908941 - 1019 1022 -3.226874 - 1019 1065 -0.000011 - 1019 1066 -1.909520 - 1019 1067 -3.227853 - 1019 2121 -0.000021 - 1019 2122 -3.643823 - 1019 2123 -6.159519 - 1020 972 -0.001642 - 1020 1017 -0.001051 - 1020 1018 1.580587 - 1020 1019 2.671825 - 1020 1020 229.839720 - 1020 1021 -139.621580 - 1020 1022 -236.016200 - 1020 1023 -0.015615 - 1020 1068 -0.001051 - 1020 1069 3.311547 - 1020 1070 5.597835 - 1020 2124 -0.002006 - 1020 2125 0.409908 - 1020 2126 0.692907 - 1021 1019 -0.432837 - 1021 1021 -43.787669 - 1021 1022 36.254915 - 1021 1070 -0.906855 - 1021 2126 -0.112251 - 1022 972 -0.000011 - 1022 973 -1.909338 - 1022 974 -3.227544 - 1022 1017 -0.000011 - 1022 1018 -1.908941 - 1022 1019 -3.226874 - 1022 1020 0.000603 - 1022 1021 11.376364 - 1022 1022 19.230594 - 1022 1023 -0.000012 - 1022 1024 -2.000249 - 1022 1025 -3.381220 - 1022 1068 -0.000011 - 1022 1069 -1.909210 - 1022 1070 -3.227326 - 1022 2124 -0.000021 - 1022 2125 -3.643718 - 1022 2126 -6.159334 - 1023 975 -0.001108 - 1023 1020 -0.001108 - 1023 1021 3.145284 - 1023 1022 5.316785 - 1023 1023 252.766650 - 1023 1024 -151.330490 - 1023 1025 -255.809070 - 1023 2127 -0.001836 - 1023 2128 0.416823 - 1023 2129 0.704598 - 1024 1022 -0.861321 - 1024 1024 -48.172242 - 1024 1025 39.248992 - 1024 2129 -0.114145 - 1025 975 -0.000012 - 1025 976 -1.999851 - 1025 977 -3.380549 - 1025 1020 -0.000012 - 1025 1021 -2.000249 - 1025 1022 -3.381220 - 1025 1023 0.000634 - 1025 1024 7.319286 - 1025 1025 12.372520 - 1025 2127 -0.000019 - 1025 2128 -3.313785 - 1025 2129 -5.601621 - 1026 1026 1.000000 - 1027 1027 1.000000 - 1028 1028 1.000000 - 1029 1029 1.000000 - 1030 1030 1.000000 - 1031 1031 1.000000 - 1032 1032 1.000000 - 1033 1033 1.000000 - 1034 1034 1.000000 - 1035 1035 1.000000 - 1036 1036 1.000000 - 1037 1037 1.000000 - 1038 1038 1.000000 - 1039 1039 1.000000 - 1040 1040 1.000000 - 1041 1041 1.000000 - 1042 1042 1.000000 - 1043 1043 1.000000 - 1044 1044 1.000000 - 1045 1045 1.000000 - 1046 1046 1.000000 - 1047 1047 1.000000 - 1048 1048 1.000000 - 1049 1049 1.000000 - 1050 1050 1.000000 - 1051 1051 1.000000 - 1052 1052 1.000000 - 1053 1053 1.000000 - 1054 1054 1.000000 - 1055 1055 1.000000 - 1056 1056 1.000000 - 1057 1057 1.000000 - 1058 1058 1.000000 - 1059 1059 1.000000 - 1060 1060 1.000000 - 1061 1061 1.000000 - 1062 1062 1.000000 - 1063 1063 1.000000 - 1064 1064 1.000000 - 1065 1017 -0.015430 - 1065 1065 229.795530 - 1065 1066 -134.743170 - 1065 1067 -227.769850 - 1065 1068 -0.042360 - 1065 2169 -0.001989 - 1065 2170 0.398835 - 1065 2171 0.674190 - 1066 1066 -43.777519 - 1066 1067 34.943889 - 1066 2171 -0.109219 - 1067 1017 -0.000011 - 1067 1018 -1.909520 - 1067 1019 -3.227853 - 1067 1065 0.000580 - 1067 1066 7.466155 - 1067 1067 12.620788 - 1067 1068 -0.000011 - 1067 1069 -1.909093 - 1067 1070 -3.227130 - 1067 2169 -0.000021 - 1067 2170 -3.642639 - 1067 2171 -6.157516 - 1068 1020 -0.014084 - 1068 1065 -0.001043 - 1068 1066 0.529376 - 1068 1067 0.894857 - 1068 1068 229.831970 - 1068 1069 -135.258580 - 1068 1070 -228.640960 - 1068 2172 -0.001991 - 1068 2173 0.399040 - 1068 2174 0.674537 - 1069 1067 -0.144968 - 1069 1069 -43.782057 - 1069 1070 35.074011 - 1069 2174 -0.109276 - 1070 1020 -0.000011 - 1070 1021 -1.909210 - 1070 1022 -3.227326 - 1070 1065 -0.000011 - 1070 1066 -1.909093 - 1070 1067 -3.227130 - 1070 1068 0.000580 - 1070 1069 7.466864 - 1070 1070 12.621981 - 1070 2172 -0.000021 - 1070 2173 -3.643656 - 1070 2174 -6.159233 - 1071 1071 1.000000 - 1072 1072 1.000000 - 1073 1073 1.000000 - 1074 1074 1.000000 - 1075 1075 1.000000 - 1076 1076 1.000000 - 1077 1077 1.000000 - 1078 1078 1.000000 - 1079 1079 1.000000 - 1080 1080 1.000000 - 1081 1081 1.000000 - 1082 1082 1.000000 - 1083 1083 1.000000 - 1084 1084 1.000000 - 1085 1085 1.000000 - 1086 1086 1.000000 - 1087 1087 1.000000 - 1088 1088 1.000000 - 1089 1089 1.000000 - 1090 1090 1.000000 - 1091 1091 1.000000 - 1092 1092 1.000000 - 1093 1093 1.000000 - 1094 1094 1.000000 - 1095 1095 1.000000 - 1096 1096 1.000000 - 1097 1097 1.000000 - 1098 1098 1.000000 - 1099 1099 1.000000 - 1100 1100 1.000000 - 1101 1101 1.000000 - 1102 1102 1.000000 - 1103 1103 1.000000 - 1104 1104 1.000000 - 1105 1105 1.000000 - 1106 1106 1.000000 - 1107 1107 1.000000 - 1108 1108 1.000000 - 1109 1109 1.000000 - 1110 1110 1.000000 - 1111 1111 1.000000 - 1112 1112 1.000000 - 1113 1113 1.000000 - 1114 1114 1.000000 - 1115 1115 1.000000 - 1116 1116 1.000000 - 1117 1117 1.000000 - 1118 1118 1.000000 - 1119 1119 1.000000 - 1120 1120 1.000000 - 1121 1121 1.000000 - 1122 1122 1.000000 - 1123 1123 1.000000 - 1124 1124 1.000000 - 1125 1125 1.000000 - 1126 1126 1.000000 - 1127 1127 1.000000 - 1128 1128 1.000000 - 1129 1129 1.000000 - 1130 1130 1.000000 - 1131 1131 1.000000 - 1132 1132 1.000000 - 1133 1133 1.000000 - 1134 1134 1.000000 - 1135 1135 1.000000 - 1136 1136 1.000000 - 1137 1137 1.000000 - 1138 1138 1.000000 - 1139 1139 1.000000 - 1140 1140 1.000000 - 1141 1141 1.000000 - 1142 1142 1.000000 - 1143 1143 1.000000 - 1144 1144 1.000000 - 1145 1145 1.000000 - 1146 1146 1.000000 - 1147 1147 1.000000 - 1148 1148 1.000000 - 1149 1149 1.000000 - 1150 1150 1.000000 - 1151 1151 1.000000 - 1152 1152 1.000000 - 1153 1153 1.000000 - 1154 1154 1.000000 - 1155 1155 1.000000 - 1156 1156 1.000000 - 1157 1157 1.000000 - 1158 1158 1.000000 - 1159 1159 1.000000 - 1160 1160 1.000000 - 1161 1161 1.000000 - 1162 1162 1.000000 - 1163 1163 1.000000 - 1164 1164 1.000000 - 1165 1165 1.000000 - 1166 1166 1.000000 - 1167 1167 1.000000 - 1168 1168 1.000000 - 1169 1169 1.000000 - 1170 1170 1.000000 - 1171 1171 1.000000 - 1172 1172 1.000000 - 1173 1173 1.000000 - 1174 1174 1.000000 - 1175 1175 1.000000 - 1176 1176 1.000000 - 1177 1177 1.000000 - 1178 1178 1.000000 - 1179 1179 1.000000 - 1180 1180 1.000000 - 1181 1181 1.000000 - 1182 1182 1.000000 - 1183 1183 1.000000 - 1184 1184 1.000000 - 1185 1185 1.000000 - 1186 1186 1.000000 - 1187 1187 1.000000 - 1188 1188 1.000000 - 1189 1189 1.000000 - 1190 1190 1.000000 - 1191 1191 1.000000 - 1192 1192 1.000000 - 1193 1193 1.000000 - 1194 1194 1.000000 - 1195 1195 1.000000 - 1196 1196 1.000000 - 1197 1197 1.000000 - 1198 1198 1.000000 - 1199 1199 1.000000 - 1200 1200 1.000000 - 1201 1201 1.000000 - 1202 1202 1.000000 - 1203 1203 1.000000 - 1204 1204 1.000000 - 1205 1205 1.000000 - 1206 1206 1.000000 - 1207 1207 1.000000 - 1208 1208 1.000000 - 1209 1209 1.000000 - 1210 1210 1.000000 - 1211 1211 1.000000 - 1212 1212 1.000000 - 1213 1213 1.000000 - 1214 1214 1.000000 - 1215 1215 1.000000 - 1216 1216 1.000000 - 1217 1217 1.000000 - 1218 1218 1.000000 - 1219 1219 1.000000 - 1220 1220 1.000000 - 1221 1221 1.000000 - 1222 1222 1.000000 - 1223 1223 1.000000 - 1224 1224 1.000000 - 1225 1225 1.000000 - 1226 1226 1.000000 - 1227 1227 1.000000 - 1228 1228 1.000000 - 1229 1229 1.000000 - 1230 1230 1.000000 - 1231 1231 1.000000 - 1232 1232 1.000000 - 1233 1233 1.000000 - 1234 1234 1.000000 - 1235 1235 1.000000 - 1236 132 -1.518568 - 1236 1236 199.839450 - 1236 1237 -133.706900 - 1236 1238 -226.018000 - 1236 1239 -0.502966 - 1236 1240 1.542181 - 1236 1241 2.606903 - 1236 1284 -1.921350 - 1237 1237 -28.933988 - 1237 1238 26.839463 - 1237 1241 -0.309248 - 1238 132 -0.094695 - 1238 133 -0.909913 - 1238 134 -1.538115 - 1238 1236 0.261037 - 1238 1237 2.090714 - 1238 1238 3.534142 - 1238 1239 -0.030283 - 1238 1240 -0.636564 - 1238 1241 -1.076047 - 1238 1284 -0.056301 - 1238 1285 -0.541028 - 1238 1286 -0.914553 - 1239 135 -1.302073 - 1239 1236 -0.183076 - 1239 1239 189.932610 - 1239 1240 -130.587670 - 1239 1241 -220.745390 - 1239 1242 -0.304212 - 1239 1243 0.768041 - 1239 1244 1.298295 - 1239 1287 -1.704141 - 1239 2343 -2.597142 - 1239 2344 6.781374 - 1239 2345 11.463234 - 1240 1240 -29.175140 - 1240 1241 28.144064 - 1240 1244 -0.167928 - 1240 2345 -1.098958 - 1241 135 -0.057589 - 1241 136 -1.210663 - 1241 137 -2.046506 - 1241 1236 -0.030283 - 1241 1237 -0.636564 - 1241 1238 -1.076047 - 1241 1239 0.395131 - 1241 1240 4.075732 - 1241 1241 6.889617 - 1241 1242 -0.017632 - 1241 1243 -0.687517 - 1241 1244 -1.162178 - 1241 1287 -0.030139 - 1241 1288 -0.633645 - 1241 1289 -1.071114 - 1241 2343 -0.179884 - 1241 2344 -0.904106 - 1241 2345 -1.528301 - 1242 138 -0.854651 - 1242 1239 -0.159094 - 1242 1242 177.378880 - 1242 1243 -121.691480 - 1242 1244 -205.707140 - 1242 1245 -0.217251 - 1242 1246 0.390354 - 1242 1247 0.659855 - 1242 1290 -0.977841 - 1242 2346 -1.564624 - 1242 2347 5.734223 - 1242 2348 9.693123 - 1243 1243 -28.598581 - 1243 1244 27.549954 - 1243 1247 -0.089776 - 1243 2348 -1.094218 - 1244 138 -0.037800 - 1244 139 -1.474060 - 1244 140 -2.491750 - 1244 1239 -0.017632 - 1244 1240 -0.687517 - 1244 1241 -1.162178 - 1244 1242 0.257859 - 1244 1243 4.939112 - 1244 1244 8.349069 - 1244 1245 -0.009796 - 1244 1246 -0.721869 - 1244 1247 -1.220248 - 1244 1290 -0.017294 - 1244 1291 -0.674449 - 1244 1292 -1.140088 - 1244 2346 -0.095840 - 1244 2347 -1.378043 - 1244 2348 -2.329442 - 1245 141 -0.812870 - 1245 1242 -0.109920 - 1245 1245 165.300780 - 1245 1246 -113.835670 - 1245 1247 -192.427820 - 1245 1293 -0.542845 - 1245 2349 -0.991099 - 1245 2350 4.960127 - 1245 2351 8.384599 - 1246 1246 -27.734053 - 1246 1247 26.733771 - 1246 2351 -1.081235 - 1247 141 -0.023820 - 1247 142 -1.755319 - 1247 143 -2.967192 - 1247 1242 -0.009796 - 1247 1243 -0.721869 - 1247 1244 -1.220248 - 1247 1245 0.171011 - 1247 1246 5.044328 - 1247 1247 8.526932 - 1247 1293 -0.009601 - 1247 1294 -0.707545 - 1247 1295 -1.196033 - 1247 2349 -0.048389 - 1247 2350 -1.856517 - 1247 2351 -3.138256 - 1248 1248 1.000000 - 1249 1249 1.000000 - 1250 1250 1.000000 - 1251 1251 1.000000 - 1252 1252 1.000000 - 1253 1253 1.000000 - 1254 1254 1.000000 - 1255 1255 1.000000 - 1256 1256 1.000000 - 1257 1257 1.000000 - 1258 1258 1.000000 - 1259 1259 1.000000 - 1260 1260 1.000000 - 1261 1261 1.000000 - 1262 1262 1.000000 - 1263 159 -0.881433 - 1263 1263 273.726380 - 1263 1264 -178.212730 - 1263 1265 -301.250800 - 1263 1266 -0.155701 - 1263 1267 0.006683 - 1263 1268 0.011297 - 1263 1311 -0.971510 - 1263 2367 -1.059846 - 1263 2368 4.320226 - 1263 2369 7.302910 - 1264 1264 -46.024490 - 1264 1265 41.622307 - 1264 1268 -0.001361 - 1264 2369 -0.848535 - 1265 159 -0.015589 - 1265 160 -1.037506 - 1265 161 -1.753800 - 1265 1263 0.186753 - 1265 1264 4.017098 - 1265 1265 6.790501 - 1265 1266 -0.017256 - 1265 1267 -0.924296 - 1265 1268 -1.562430 - 1265 1311 -0.017182 - 1265 1312 -1.143580 - 1265 1313 -1.933108 - 1265 2367 -0.056946 - 1265 2368 -0.906602 - 1265 2369 -1.532520 - 1266 162 -1.277025 - 1266 1263 -0.310634 - 1266 1266 274.296680 - 1266 1267 -176.467570 - 1266 1268 -298.300620 - 1266 1269 -0.425286 - 1266 1270 0.352035 - 1266 1271 0.595080 - 1266 1314 -2.324615 - 1267 1267 -43.113782 - 1267 1268 38.450812 - 1267 1271 -0.070253 - 1268 162 -0.037421 - 1268 163 -0.836888 - 1268 164 -1.414675 - 1268 1263 -0.017256 - 1268 1264 -0.924296 - 1268 1265 -1.562430 - 1268 1266 0.226629 - 1268 1267 3.545411 - 1268 1268 5.993160 - 1268 1269 -0.050896 - 1268 1270 -0.859932 - 1268 1271 -1.453628 - 1268 1314 -0.041112 - 1268 1315 -0.919507 - 1268 1316 -1.554333 - 1269 165 -1.040707 - 1269 1266 -0.459246 - 1269 1269 274.999710 - 1269 1270 -176.699330 - 1269 1271 -298.692550 - 1269 1272 -0.435228 - 1269 1273 0.372769 - 1269 1274 0.630128 - 1269 1317 -2.863732 - 1270 1270 -42.206845 - 1270 1271 37.696049 - 1270 1274 -0.074396 - 1271 165 -0.046029 - 1271 166 -0.777765 - 1271 167 -1.314734 - 1271 1266 -0.050896 - 1271 1267 -0.859932 - 1271 1268 -1.453628 - 1271 1269 0.278453 - 1271 1270 3.358200 - 1271 1271 5.676700 - 1271 1272 -0.050886 - 1271 1273 -0.859976 - 1271 1274 -1.453703 - 1271 1317 -0.050647 - 1271 1318 -0.855840 - 1271 1319 -1.446711 - 1272 168 -1.039792 - 1272 1269 -0.373159 - 1272 1272 274.941060 - 1272 1273 -176.827480 - 1272 1274 -298.908940 - 1272 1275 -0.428469 - 1272 1276 0.531788 - 1272 1277 0.898934 - 1272 1320 -1.728679 - 1273 1273 -42.207454 - 1273 1274 37.723230 - 1273 1277 -0.110453 - 1274 168 -0.045989 - 1274 169 -0.777278 - 1274 170 -1.313910 - 1274 1269 -0.050886 - 1274 1270 -0.859976 - 1274 1271 -1.453703 - 1274 1272 0.265925 - 1274 1273 3.431556 - 1274 1274 5.800699 - 1274 1275 -0.038400 - 1274 1276 -0.933415 - 1274 1277 -1.577845 - 1274 1320 -0.050655 - 1274 1321 -0.856200 - 1274 1322 -1.447319 - 1275 171 -1.219980 - 1275 1272 -0.281592 - 1275 1275 268.945470 - 1275 1276 -174.151710 - 1275 1277 -294.386050 - 1275 1278 -0.486751 - 1275 1279 1.605341 - 1275 1280 2.713666 - 1275 1323 -1.305489 - 1276 1276 -42.499768 - 1276 1277 38.216679 - 1276 1280 -0.350201 - 1277 171 -0.035749 - 1277 172 -0.869064 - 1277 173 -1.469066 - 1277 1272 -0.038400 - 1277 1273 -0.933415 - 1277 1274 -1.577845 - 1277 1275 0.217945 - 1277 1276 3.724749 - 1277 1277 6.296315 - 1277 1278 -0.025633 - 1277 1279 -0.987525 - 1277 1280 -1.669312 - 1277 1323 -0.038255 - 1277 1324 -0.930025 - 1277 1325 -1.572114 - 1278 174 -0.905541 - 1278 1275 -0.231290 - 1278 1278 253.453770 - 1278 1279 -167.083460 - 1278 1280 -282.437660 - 1278 1281 -0.328328 - 1278 1282 0.771007 - 1278 1283 1.303310 - 1278 1326 -1.429034 - 1278 2382 -1.639650 - 1278 2383 5.050454 - 1278 2384 8.537282 - 1279 1279 -41.094302 - 1279 1280 37.822306 - 1279 1283 -0.175837 - 1279 2384 -0.863327 - 1280 174 -0.026535 - 1280 175 -1.022372 - 1280 176 -1.728216 - 1280 1275 -0.025633 - 1280 1276 -0.987525 - 1280 1277 -1.669312 - 1280 1278 0.277835 - 1280 1279 4.769201 - 1280 1280 8.061852 - 1280 1281 -0.014599 - 1280 1282 -1.015154 - 1280 1283 -1.716015 - 1280 1326 -0.025273 - 1280 1327 -0.973818 - 1280 1328 -1.646141 - 1280 2382 -0.106018 - 1280 2383 -0.765767 - 1280 2384 -1.294453 - 1281 177 -1.012375 - 1281 1278 -0.163810 - 1281 1281 230.612260 - 1281 1282 -152.473580 - 1281 1283 -257.741340 - 1281 1284 -0.458826 - 1281 1329 -0.813619 - 1281 2385 -0.930514 - 1281 2386 4.095518 - 1281 2387 6.923064 - 1282 1282 -38.737952 - 1282 1283 35.691370 - 1282 2387 -0.845216 - 1283 177 -0.017904 - 1283 178 -1.245084 - 1283 179 -2.104691 - 1283 1278 -0.014599 - 1283 1279 -1.015154 - 1283 1280 -1.716015 - 1283 1281 0.190554 - 1283 1282 5.396347 - 1283 1283 9.121984 - 1283 1284 -0.013445 - 1283 1285 -0.934927 - 1283 1286 -1.580400 - 1283 1329 -0.014389 - 1283 1330 -1.000716 - 1283 1331 -1.691610 - 1283 2385 -0.050588 - 1283 2386 -1.196163 - 1283 2387 -2.021995 - 1284 180 -0.498179 - 1284 1236 -2.665440 - 1284 1237 11.613324 - 1284 1238 19.631152 - 1284 1281 -0.276841 - 1284 1282 0.033672 - 1284 1283 0.056919 - 1284 1284 215.170230 - 1284 1285 -137.847310 - 1284 1286 -233.016940 - 1284 1287 -0.200946 - 1284 1288 1.563150 - 1284 1289 2.642349 - 1284 1332 -0.579939 - 1284 2388 -0.847189 - 1284 2389 4.291387 - 1284 2390 7.254155 - 1285 1238 -2.066449 - 1285 1283 -0.007679 - 1285 1285 -37.353073 - 1285 1286 33.533235 - 1285 1289 -0.383856 - 1285 2390 -0.956043 - 1286 180 -0.008811 - 1286 181 -1.514404 - 1286 182 -2.559947 - 1286 1236 -0.056301 - 1286 1237 -0.541028 - 1286 1238 -0.914553 - 1286 1281 -0.013445 - 1286 1282 -0.934927 - 1286 1283 -1.580400 - 1286 1284 0.113976 - 1286 1285 6.636171 - 1286 1286 11.217779 - 1286 1287 -0.002823 - 1286 1288 -1.048694 - 1286 1289 -1.772712 - 1286 1332 -0.006053 - 1286 1333 -1.040412 - 1286 1334 -1.758712 - 1286 2388 -0.025903 - 1286 2389 -1.552556 - 1286 2390 -2.624439 - 1287 183 -0.267653 - 1287 1239 -2.025736 - 1287 1240 12.447368 - 1287 1241 21.041031 - 1287 1284 -0.096336 - 1287 1287 197.795590 - 1287 1288 -127.621790 - 1287 1289 -215.731870 - 1287 1290 -0.158970 - 1287 1291 2.008849 - 1287 1292 3.395756 - 1287 1335 -0.266229 - 1287 2391 -0.447128 - 1287 2392 1.730214 - 1287 2393 2.924754 - 1288 1241 -2.496025 - 1288 1288 -35.250430 - 1288 1289 31.772134 - 1288 1292 -0.507141 - 1288 2393 -0.413359 - 1289 183 -0.004734 - 1289 184 -1.758612 - 1289 185 -2.972758 - 1289 1239 -0.030139 - 1289 1240 -0.633645 - 1289 1241 -1.071114 - 1289 1284 -0.002823 - 1289 1285 -1.048694 - 1289 1286 -1.772712 - 1289 1287 0.053736 - 1289 1288 7.425063 - 1289 1289 12.551325 - 1289 1290 -0.001888 - 1289 1291 -0.991846 - 1289 1292 -1.676616 - 1289 1335 -0.002778 - 1289 1336 -1.032339 - 1289 1337 -1.745066 - 1289 2391 -0.010827 - 1289 2392 -1.956009 - 1289 2393 -3.306438 - 1290 186 -0.359639 - 1290 1242 -1.519096 - 1290 1243 11.326966 - 1290 1244 19.147090 - 1290 1287 -0.106741 - 1290 1290 180.412580 - 1290 1291 -116.783760 - 1290 1292 -197.411110 - 1290 1293 -0.118922 - 1290 1294 1.552477 - 1290 1295 2.624306 - 1290 1338 -0.177810 - 1290 2394 -0.293662 - 1290 2395 1.328996 - 1290 2396 2.246533 - 1291 1244 -2.476580 - 1291 1291 -32.598054 - 1291 1292 29.396479 - 1291 1295 -0.397851 - 1291 2396 -0.334552 - 1292 186 -0.003753 - 1292 187 -1.972124 - 1292 188 -3.333675 - 1292 1242 -0.017294 - 1292 1243 -0.674449 - 1292 1244 -1.140088 - 1292 1287 -0.001888 - 1292 1288 -0.991846 - 1292 1289 -1.676616 - 1292 1290 0.033488 - 1292 1291 7.800052 - 1292 1292 13.185199 - 1292 1293 -0.001388 - 1292 1294 -0.934796 - 1292 1295 -1.580180 - 1292 1338 -0.001856 - 1292 1339 -0.975122 - 1292 1340 -1.648345 - 1292 2394 -0.006823 - 1292 2395 -2.248092 - 1292 2396 -3.800172 - 1293 189 -0.303637 - 1293 1245 -1.073606 - 1293 1246 10.369892 - 1293 1247 17.529266 - 1293 1290 -0.078485 - 1293 1293 168.915090 - 1293 1294 -108.429970 - 1293 1295 -183.290030 - 1293 1341 -0.132410 - 1293 2397 -0.384613 - 1293 2398 1.490501 - 1293 2399 2.519544 - 1294 1247 -2.384920 - 1294 1294 -30.770477 - 1294 1295 27.455917 - 1294 2399 -0.368471 - 1295 189 -0.003169 - 1295 190 -2.134217 - 1295 191 -3.607681 - 1295 1245 -0.009601 - 1295 1246 -0.707545 - 1295 1247 -1.196033 - 1295 1290 -0.001388 - 1295 1291 -0.934796 - 1295 1292 -1.580180 - 1295 1293 0.022089 - 1295 1294 7.151812 - 1295 1295 12.089422 - 1295 1341 -0.001382 - 1295 1342 -0.930779 - 1295 1343 -1.573388 - 1295 2397 -0.006101 - 1295 2398 -2.441055 - 1295 2399 -4.126359 - 1296 1296 1.000000 - 1297 1297 1.000000 - 1298 1298 1.000000 - 1299 1299 1.000000 - 1300 1300 1.000000 - 1301 1301 1.000000 - 1302 1302 1.000000 - 1303 1303 1.000000 - 1304 1304 1.000000 - 1305 1305 1.000000 - 1306 1306 1.000000 - 1307 1307 1.000000 - 1308 1308 1.000000 - 1309 1309 1.000000 - 1310 1310 1.000000 - 1311 207 -0.245210 - 1311 1263 -1.595362 - 1311 1264 15.256565 - 1311 1265 25.789698 - 1311 1311 272.230710 - 1311 1312 -173.176940 - 1311 1313 -292.738290 - 1311 1314 -0.159989 - 1311 1359 -0.270155 - 1311 2415 -0.309678 - 1311 2416 1.783478 - 1311 2417 3.014791 - 1312 1265 -3.456469 - 1312 1312 -49.368972 - 1312 1313 43.512859 - 1312 2417 -0.433023 - 1313 207 -0.002559 - 1313 208 -1.299896 - 1313 209 -2.197344 - 1313 1263 -0.017182 - 1313 1264 -1.143580 - 1313 1265 -1.933108 - 1313 1311 0.032932 - 1313 1312 6.751195 - 1313 1313 11.412219 - 1313 1314 -0.002829 - 1313 1315 -1.437131 - 1313 1316 -2.429327 - 1313 1359 -0.002819 - 1313 1360 -1.432232 - 1313 1361 -2.421044 - 1313 2415 -0.006803 - 1313 2416 -1.432864 - 1313 2417 -2.422113 - 1314 210 -0.276363 - 1314 1266 -2.344756 - 1314 1267 14.043798 - 1314 1268 23.739623 - 1314 1311 -0.172107 - 1314 1312 0.491974 - 1314 1313 0.831633 - 1314 1314 273.953100 - 1314 1315 -172.642440 - 1314 1316 -291.834550 - 1314 1317 -0.180431 - 1314 1362 -0.304784 - 1314 2418 -0.479744 - 1314 2419 2.827193 - 1314 2420 4.779083 - 1315 1268 -2.859892 - 1315 1313 -0.123910 - 1315 1315 -49.216982 - 1315 1316 43.218287 - 1315 2420 -0.681263 - 1316 210 -0.002884 - 1316 211 -1.286574 - 1316 212 -2.174823 - 1316 1266 -0.041112 - 1316 1267 -0.919507 - 1316 1268 -1.554333 - 1316 1311 -0.002829 - 1316 1312 -1.437131 - 1316 1313 -2.429327 - 1316 1314 0.063605 - 1316 1315 7.857381 - 1316 1316 13.282108 - 1316 1317 -0.003191 - 1316 1318 -1.423313 - 1316 1319 -2.405967 - 1316 1362 -0.003181 - 1316 1363 -1.418974 - 1316 1364 -2.398632 - 1316 2418 -0.009660 - 1316 2419 -1.366407 - 1316 2420 -2.309773 - 1317 213 -0.336833 - 1317 1269 -2.699987 - 1317 1270 13.811176 - 1317 1271 23.346412 - 1317 1314 -0.184389 - 1317 1315 0.162643 - 1317 1316 0.274931 - 1317 1317 274.810930 - 1317 1318 -172.812880 - 1317 1319 -292.122890 - 1317 1320 -0.154512 - 1317 1321 0.241812 - 1317 1322 0.408759 - 1317 1365 -0.371797 - 1317 2421 -0.534400 - 1317 2422 3.219766 - 1317 2423 5.442692 - 1318 1271 -2.756207 - 1318 1316 -0.040570 - 1318 1318 -48.921717 - 1318 1319 42.950807 - 1318 1322 -0.060805 - 1318 2423 -0.750848 - 1319 213 -0.003515 - 1319 214 -1.261418 - 1319 215 -2.132301 - 1319 1269 -0.050647 - 1319 1270 -0.855840 - 1319 1271 -1.446711 - 1319 1314 -0.003191 - 1319 1315 -1.423313 - 1319 1316 -2.405967 - 1319 1317 0.078662 - 1319 1318 7.643173 - 1319 1319 12.920016 - 1319 1320 -0.004269 - 1319 1321 -1.383385 - 1319 1322 -2.338473 - 1319 1365 -0.003880 - 1319 1366 -1.392436 - 1319 1367 -2.353775 - 1319 2421 -0.012396 - 1319 2422 -1.321339 - 1319 2423 -2.233592 - 1320 216 -0.369426 - 1320 1272 -2.736330 - 1320 1273 13.998636 - 1320 1274 23.663276 - 1320 1317 -0.241388 - 1320 1320 273.495790 - 1320 1321 -172.765440 - 1320 1322 -292.042510 - 1320 1323 -0.177520 - 1320 1324 0.750676 - 1320 1325 1.268943 - 1320 1368 -0.407783 - 1320 2424 -0.582376 - 1320 2425 3.209121 - 1320 2426 5.424694 - 1321 1274 -2.793805 - 1321 1321 -48.774953 - 1321 1322 42.945063 - 1321 1325 -0.188799 - 1321 2426 -0.729756 - 1322 216 -0.003855 - 1322 217 -1.249434 - 1322 218 -2.112042 - 1322 1272 -0.050655 - 1322 1273 -0.856200 - 1322 1274 -1.447319 - 1322 1317 -0.004269 - 1322 1318 -1.383385 - 1322 1319 -2.338473 - 1322 1320 0.082507 - 1322 1321 7.545682 - 1322 1322 12.755213 - 1322 1323 -0.004257 - 1322 1324 -1.383562 - 1322 1325 -2.338773 - 1322 1368 -0.004256 - 1322 1369 -1.379243 - 1322 1370 -2.331471 - 1322 2424 -0.014443 - 1322 2425 -1.288434 - 1322 2426 -2.177967 - 1323 219 -0.368191 - 1323 1275 -2.392778 - 1323 1276 14.529641 - 1323 1277 24.560905 - 1323 1320 -0.145264 - 1323 1323 273.065770 - 1323 1324 -173.404120 - 1323 1325 -293.122330 - 1323 1326 -0.213513 - 1323 1327 1.121132 - 1323 1328 1.895160 - 1323 1371 -0.406750 - 1323 2427 -0.548701 - 1323 2428 2.663259 - 1323 2429 4.501973 - 1324 1277 -3.017821 - 1324 1324 -48.777713 - 1324 1325 43.110071 - 1324 1328 -0.278730 - 1324 2429 -0.605644 - 1325 219 -0.003843 - 1325 220 -1.249054 - 1325 221 -2.111401 - 1325 1275 -0.038255 - 1325 1276 -0.930025 - 1325 1277 -1.572114 - 1325 1320 -0.004257 - 1325 1321 -1.383562 - 1325 1322 -2.338773 - 1325 1323 0.069052 - 1325 1324 7.625224 - 1325 1325 12.889677 - 1325 1326 -0.003247 - 1325 1327 -1.389334 - 1325 1328 -2.348528 - 1325 1371 -0.004245 - 1325 1372 -1.379939 - 1325 1373 -2.332650 - 1325 2427 -0.014434 - 1325 2428 -1.287886 - 1325 2429 -2.177042 - 1326 222 -0.298889 - 1326 1278 -2.043189 - 1326 1279 15.172454 - 1326 1280 25.647495 - 1326 1323 -0.110804 - 1326 1326 262.181260 - 1326 1327 -167.772980 - 1326 1328 -283.603250 - 1326 1329 -0.144529 - 1326 1330 1.629768 - 1326 1331 2.754961 - 1326 1374 -0.310381 - 1326 2430 -0.340951 - 1326 2431 1.299477 - 1326 2432 2.196636 - 1327 1280 -3.309836 - 1327 1327 -47.196986 - 1327 1328 41.945986 - 1327 1331 -0.420138 - 1327 2432 -0.309574 - 1328 222 -0.003119 - 1328 223 -1.334860 - 1328 224 -2.256445 - 1328 1278 -0.025273 - 1328 1279 -0.973818 - 1328 1280 -1.646141 - 1328 1323 -0.003247 - 1328 1324 -1.389334 - 1328 1325 -2.348528 - 1328 1326 0.045701 - 1328 1327 7.918147 - 1328 1328 13.384829 - 1328 1329 -0.001805 - 1328 1330 -1.366247 - 1328 1331 -2.309504 - 1328 1374 -0.003239 - 1328 1375 -1.386267 - 1328 1376 -2.343345 - 1328 2430 -0.008297 - 1328 2431 -1.462372 - 1328 2432 -2.471992 - 1329 225 -0.186759 - 1329 1281 -1.480018 - 1329 1282 14.324093 - 1329 1283 24.213447 - 1329 1326 -0.102066 - 1329 1329 244.862540 - 1329 1330 -157.747930 - 1329 1331 -266.657100 - 1329 1332 -0.113007 - 1329 1333 2.083003 - 1329 1334 3.521106 - 1329 1377 -0.170847 - 1329 2433 -0.295049 - 1329 2434 1.184203 - 1329 2435 2.001777 - 1330 1283 -3.266775 - 1330 1330 -41.064603 - 1330 1331 46.264109 - 1330 1334 -0.532151 - 1330 2435 -0.289675 - 1331 225 -0.001949 - 1331 226 -1.475347 - 1331 227 -2.493926 - 1331 1281 -0.014389 - 1331 1282 -1.000716 - 1331 1283 -1.691610 - 1331 1326 -0.001805 - 1331 1327 -1.366247 - 1331 1328 -2.309504 - 1331 1329 0.026183 - 1331 1330 8.150742 - 1331 1331 13.778014 - 1331 1332 -0.000955 - 1331 1333 -1.293603 - 1331 1334 -2.186705 - 1331 1377 -0.001783 - 1331 1378 -1.349733 - 1331 1379 -2.281588 - 1331 2433 -0.004654 - 1331 2434 -1.660118 - 1331 2435 -2.806263 - 1332 228 -0.117569 - 1332 1284 -0.748431 - 1332 1285 12.460168 - 1332 1286 21.062655 - 1332 1329 -0.054021 - 1332 1332 222.783560 - 1332 1333 -144.551200 - 1332 1334 -244.349210 - 1332 1335 -0.079318 - 1332 1336 2.550029 - 1332 1337 4.310569 - 1332 1380 -0.090344 - 1332 2436 -0.220194 - 1332 2437 1.111985 - 1332 2438 1.879698 - 1333 1286 -2.959741 - 1333 1333 -41.118626 - 1333 1334 36.879671 - 1333 1337 -0.668743 - 1333 2438 -0.281781 - 1334 228 -0.001227 - 1334 229 -1.661456 - 1334 230 -2.808524 - 1334 1284 -0.006053 - 1334 1285 -1.040412 - 1334 1286 -1.758712 - 1334 1329 -0.000955 - 1334 1330 -1.293603 - 1334 1331 -2.186705 - 1334 1332 0.013701 - 1334 1333 8.386635 - 1334 1334 14.176761 - 1334 1335 -0.000557 - 1334 1336 -1.220782 - 1334 1337 -2.063611 - 1334 1380 -0.000943 - 1334 1381 -1.276815 - 1334 1382 -2.158327 - 1334 2436 -0.003396 - 1334 2437 -1.888992 - 1334 2438 -3.193149 - 1335 231 -0.080340 - 1335 1287 -0.450624 - 1335 1288 11.194629 - 1335 1289 18.923400 - 1335 1332 -0.053377 - 1335 1335 205.934010 - 1335 1336 -133.892360 - 1335 1337 -226.331640 - 1335 1338 -0.061814 - 1335 1339 2.885494 - 1335 1340 4.877635 - 1335 1383 -0.052630 - 1335 2439 -0.156347 - 1335 2440 0.798596 - 1335 2441 1.349947 - 1336 1289 -2.749017 - 1336 1336 -38.434575 - 1336 1337 34.516930 - 1336 1340 -0.768328 - 1336 2441 -0.204220 - 1337 231 -0.000838 - 1337 232 -1.837569 - 1337 233 -3.106227 - 1337 1287 -0.002778 - 1337 1288 -1.032339 - 1337 1289 -1.745066 - 1337 1332 -0.000557 - 1337 1333 -1.220782 - 1337 1334 -2.063611 - 1337 1335 0.007119 - 1337 1336 8.568902 - 1337 1337 14.484871 - 1337 1338 -0.000338 - 1337 1339 -1.145250 - 1337 1340 -1.935929 - 1337 1383 -0.000549 - 1337 1384 -1.203840 - 1337 1385 -2.034972 - 1337 2439 -0.001547 - 1337 2440 -2.124845 - 1337 2441 -3.591837 - 1338 234 -0.057366 - 1338 1290 -0.358051 - 1338 1291 9.668961 - 1338 1292 16.344398 - 1338 1335 -0.032430 - 1338 1338 189.493530 - 1338 1339 -122.951360 - 1338 1340 -207.836830 - 1338 1341 -0.039817 - 1338 1342 2.849603 - 1338 1343 4.816969 - 1338 1386 -0.031941 - 1338 2442 -0.127706 - 1338 2443 0.671867 - 1338 2444 1.135723 - 1339 1292 -2.440966 - 1339 1339 -35.577035 - 1339 1340 31.890305 - 1339 1343 -0.772932 - 1339 2444 -0.174866 - 1340 234 -0.000599 - 1340 235 -2.025941 - 1340 236 -3.424648 - 1340 1290 -0.001856 - 1340 1291 -0.975122 - 1340 1292 -1.648345 - 1340 1335 -0.000338 - 1340 1336 -1.145250 - 1340 1337 -1.935929 - 1340 1338 0.004961 - 1340 1339 8.714197 - 1340 1340 14.730469 - 1340 1341 -0.000113 - 1340 1342 -1.087564 - 1340 1343 -1.838419 - 1340 1386 -0.000333 - 1340 1387 -1.128097 - 1340 1388 -1.906933 - 1340 2442 -0.001262 - 1340 2443 -2.348264 - 1340 2444 -3.969503 - 1341 237 -0.035585 - 1341 1293 -0.288754 - 1341 1294 8.056114 - 1341 1295 13.618055 - 1341 1338 -0.010791 - 1341 1341 178.430310 - 1341 1342 -112.102070 - 1341 1343 -189.497330 - 1341 1389 -0.010611 - 1341 2445 -0.085011 - 1341 2446 0.629183 - 1341 2447 1.063571 - 1342 1295 -2.064527 - 1342 1342 -33.750151 - 1342 1343 29.257887 - 1342 2447 -0.167099 - 1343 237 -0.000010 - 1343 238 -2.188966 - 1343 239 -3.700229 - 1343 1293 -0.001382 - 1343 1294 -0.930779 - 1343 1295 -1.573388 - 1343 1338 -0.000113 - 1343 1339 -1.087564 - 1343 1340 -1.838419 - 1343 1341 0.002859 - 1343 1342 7.822530 - 1343 1343 13.223205 - 1343 1389 -0.000111 - 1343 1390 -1.069595 - 1343 1391 -1.808043 - 1343 2445 -0.000821 - 1343 2446 -2.541870 - 1343 2447 -4.296778 - 1344 1344 1.000000 - 1345 1345 1.000000 - 1346 1346 1.000000 - 1347 1347 1.000000 - 1348 1348 1.000000 - 1349 1349 1.000000 - 1350 1350 1.000000 - 1351 1351 1.000000 - 1352 1352 1.000000 - 1353 1353 1.000000 - 1354 1354 1.000000 - 1355 1355 1.000000 - 1356 1356 1.000000 - 1357 1357 1.000000 - 1358 1358 1.000000 - 1359 255 -0.019741 - 1359 1311 -0.532505 - 1359 1312 14.275476 - 1359 1313 24.131264 - 1359 1359 270.466630 - 1359 1360 -171.895190 - 1359 1361 -290.571620 - 1359 1362 -0.033909 - 1359 1407 -0.033845 - 1359 2463 -0.098766 - 1359 2464 0.953137 - 1359 2465 1.611183 - 1360 1313 -3.595468 - 1360 1360 -46.745499 - 1360 1361 51.757860 - 1360 2465 -0.247367 - 1361 255 -0.000008 - 1361 256 -1.426136 - 1361 257 -2.410741 - 1361 1311 -0.002819 - 1361 1312 -1.432232 - 1361 1313 -2.421044 - 1361 1359 0.005115 - 1361 1360 7.663963 - 1361 1361 12.955162 - 1361 1362 -0.000354 - 1361 1363 -1.582759 - 1361 1364 -2.675496 - 1361 1407 -0.000353 - 1361 1408 -1.579929 - 1361 1409 -2.670712 - 1361 2463 -0.000930 - 1361 2464 -1.637231 - 1361 2465 -2.767574 - 1362 258 -0.005120 - 1362 1314 -0.550277 - 1362 1315 14.143033 - 1362 1316 23.907365 - 1362 1359 -0.037652 - 1362 1360 0.366243 - 1362 1361 0.619097 - 1362 1362 270.604960 - 1362 1363 -172.285860 - 1362 1364 -291.231770 - 1362 1365 -0.049716 - 1362 1410 -0.049607 - 1362 2466 -0.117061 - 1362 2467 1.076642 - 1362 2468 1.819955 - 1363 1316 -3.527911 - 1363 1361 -0.098194 - 1363 1363 -50.782874 - 1363 1364 44.566443 - 1363 2468 -0.276454 - 1364 258 -0.000008 - 1364 259 -1.411688 - 1364 260 -2.386316 - 1364 1314 -0.003181 - 1364 1315 -1.418974 - 1364 1316 -2.398632 - 1364 1359 -0.000354 - 1364 1360 -1.582759 - 1364 1361 -2.675496 - 1364 1362 0.006347 - 1364 1363 9.168995 - 1364 1364 15.499259 - 1364 1365 -0.000519 - 1364 1366 -1.566579 - 1364 1367 -2.648142 - 1364 1410 -0.000518 - 1364 1411 -1.563319 - 1364 1412 -2.642632 - 1364 2466 -0.001107 - 1364 2467 -1.620021 - 1364 2468 -2.738482 - 1365 261 -0.066178 - 1365 1317 -0.596990 - 1365 1318 14.403206 - 1365 1319 24.347179 - 1365 1362 -0.054179 - 1365 1363 0.436546 - 1365 1364 0.737937 - 1365 1365 270.888870 - 1365 1366 -172.675780 - 1365 1367 -291.891140 - 1365 1368 -0.073436 - 1365 1413 -0.073231 - 1365 2469 -0.120190 - 1365 2470 1.106324 - 1365 2471 1.870129 - 1366 1319 -3.525265 - 1366 1364 -0.115845 - 1366 1366 -50.522390 - 1366 1367 44.401261 - 1366 2471 -0.288300 - 1367 261 -0.000691 - 1367 262 -1.390058 - 1367 263 -2.349753 - 1367 1317 -0.003880 - 1367 1318 -1.392436 - 1367 1319 -2.353775 - 1367 1362 -0.000519 - 1367 1363 -1.566579 - 1367 1364 -2.648142 - 1367 1365 0.008925 - 1367 1366 9.025045 - 1367 1367 15.255934 - 1367 1368 -0.000766 - 1367 1369 -1.542398 - 1367 1370 -2.607269 - 1367 1413 -0.000764 - 1367 1414 -1.538263 - 1367 1415 -2.600280 - 1367 2469 -0.001629 - 1367 2470 -1.589686 - 1367 2471 -2.687205 - 1368 264 -0.073306 - 1368 1320 -0.765819 - 1368 1321 14.291331 - 1368 1322 24.158050 - 1368 1365 -0.075229 - 1368 1366 0.176036 - 1368 1367 0.297571 - 1368 1368 271.020690 - 1368 1369 -173.093850 - 1368 1370 -292.597670 - 1368 1371 -0.093439 - 1368 1372 0.413684 - 1368 1373 0.699292 - 1368 1416 -0.081142 - 1368 2472 -0.139911 - 1368 2473 1.053118 - 1368 2474 1.780189 - 1369 1322 -3.593630 - 1369 1367 -0.045989 - 1369 1369 -50.435532 - 1369 1370 44.420332 - 1369 1373 -0.106940 - 1369 2474 -0.271979 - 1370 264 -0.000765 - 1370 265 -1.382738 - 1370 266 -2.337379 - 1370 1320 -0.004256 - 1370 1321 -1.379243 - 1370 1322 -2.331471 - 1370 1365 -0.000766 - 1370 1366 -1.542398 - 1370 1367 -2.607269 - 1370 1368 0.010248 - 1370 1369 8.942069 - 1370 1370 15.115667 - 1370 1371 -0.000931 - 1370 1372 -1.526023 - 1370 1373 -2.579590 - 1370 1416 -0.000847 - 1370 1417 -1.530604 - 1370 1418 -2.587332 - 1370 2472 -0.002002 - 1370 2473 -1.575446 - 1370 2474 -2.663132 - 1371 267 -0.080442 - 1371 1323 -0.781122 - 1371 1324 14.659879 - 1371 1325 24.781060 - 1371 1368 -0.089237 - 1371 1371 271.071500 - 1371 1372 -173.851720 - 1371 1373 -293.878950 - 1371 1374 -0.075844 - 1371 1375 1.013710 - 1371 1376 1.713575 - 1371 1419 -0.089023 - 1371 2475 -0.157171 - 1371 2476 0.910049 - 1371 2477 1.538348 - 1372 1325 -3.687047 - 1372 1372 -50.348460 - 1372 1373 44.526891 - 1372 1376 -0.266225 - 1372 2477 -0.232916 - 1373 267 -0.000840 - 1373 268 -1.375697 - 1373 269 -2.325478 - 1373 1323 -0.004245 - 1373 1324 -1.379939 - 1373 1325 -2.332650 - 1373 1368 -0.000931 - 1373 1369 -1.526023 - 1373 1370 -2.579590 - 1373 1371 0.010688 - 1373 1372 8.921560 - 1373 1373 15.081003 - 1373 1374 -0.000684 - 1373 1375 -1.550218 - 1373 1376 -2.620486 - 1373 1419 -0.000929 - 1373 1420 -1.522509 - 1373 1421 -2.573649 - 1373 2475 -0.002374 - 1373 2476 -1.561568 - 1373 2477 -2.639675 - 1374 270 -0.059008 - 1374 1326 -0.577190 - 1374 1327 15.059125 - 1374 1328 25.455928 - 1374 1371 -0.065512 - 1374 1374 270.771480 - 1374 1375 -174.288900 - 1374 1376 -294.617730 - 1374 1377 -0.058312 - 1374 1378 1.697512 - 1374 1379 2.869474 - 1374 1422 -0.065386 - 1374 2478 -0.130413 - 1374 2479 0.744067 - 1374 2480 1.257770 - 1375 1328 -3.743923 - 1375 1375 -50.608681 - 1375 1376 44.916084 - 1375 1379 -0.452639 - 1375 2480 -0.189022 - 1376 270 -0.000616 - 1376 271 -1.396409 - 1376 272 -2.360487 - 1376 1326 -0.003239 - 1376 1327 -1.386267 - 1376 1328 -2.343345 - 1376 1371 -0.000684 - 1376 1372 -1.550218 - 1376 1373 -2.620486 - 1376 1374 0.007602 - 1376 1375 9.013271 - 1376 1376 15.236023 - 1376 1377 -0.000428 - 1376 1378 -1.525225 - 1376 1379 -2.578241 - 1376 1422 -0.000682 - 1376 1423 -1.547405 - 1376 1424 -2.615731 - 1376 2478 -0.001282 - 1376 2479 -1.602111 - 1376 2480 -2.708207 - 1377 273 -0.013840 - 1377 1329 -0.472033 - 1377 1330 14.196280 - 1377 1331 23.997392 - 1377 1374 -0.041027 - 1377 1377 254.255030 - 1377 1378 -164.917760 - 1377 1379 -278.776990 - 1377 1380 -0.034338 - 1377 1381 2.364468 - 1377 1382 3.996894 - 1377 1425 -0.040960 - 1377 2481 -0.108002 - 1377 2482 0.697585 - 1377 2483 1.179198 - 1378 1331 -3.659658 - 1378 1378 -47.810756 - 1378 1379 42.765198 - 1378 1382 -0.643236 - 1378 2483 -0.180385 - 1379 273 -0.000008 - 1379 274 -1.508930 - 1379 275 -2.550695 - 1379 1329 -0.001783 - 1379 1330 -1.349733 - 1379 1331 -2.281588 - 1379 1374 -0.000428 - 1379 1375 -1.525225 - 1379 1376 -2.578241 - 1379 1377 0.004424 - 1379 1378 9.107025 - 1379 1379 15.394514 - 1379 1380 -0.000107 - 1379 1381 -1.459653 - 1379 1382 -2.467395 - 1379 1425 -0.000427 - 1379 1426 -1.522914 - 1379 1427 -2.574334 - 1379 2481 -0.001053 - 1379 2482 -1.735247 - 1379 2483 -2.933261 - 1380 276 -0.045514 - 1380 1332 -0.226810 - 1380 1333 13.404257 - 1380 1334 22.658544 - 1380 1377 -0.010247 - 1380 1380 237.829660 - 1380 1381 -154.804890 - 1380 1382 -261.682040 - 1380 1383 -0.044043 - 1380 1384 3.014811 - 1380 1385 5.096236 - 1380 1428 -0.010124 - 1380 2484 -0.072670 - 1380 2485 0.609343 - 1380 2486 1.030032 - 1381 1334 -3.424427 - 1381 1381 -45.058371 - 1381 1382 40.473282 - 1381 1385 -0.825646 - 1381 2486 -0.161168 - 1382 276 -0.000008 - 1382 277 -1.644991 - 1382 278 -2.780692 - 1382 1332 -0.000943 - 1382 1333 -1.276815 - 1382 1334 -2.158327 - 1382 1377 -0.000107 - 1382 1378 -1.459653 - 1382 1379 -2.467395 - 1382 1380 0.002426 - 1382 1381 9.080460 - 1382 1382 15.349602 - 1382 1383 -0.000007 - 1382 1384 -1.354923 - 1382 1385 -2.290362 - 1382 1428 -0.000106 - 1382 1429 -1.442356 - 1382 1430 -2.438158 - 1382 2484 -0.000694 - 1382 2485 -1.896703 - 1382 2486 -3.206184 - 1383 279 -0.058361 - 1383 1335 -0.163286 - 1383 1336 12.028529 - 1383 1337 20.333025 - 1383 1380 -0.000659 - 1383 1383 216.127470 - 1383 1384 -141.902750 - 1383 1385 -239.872410 - 1383 1386 -0.058248 - 1383 1387 3.914268 - 1383 1388 6.616675 - 1383 1431 -0.000643 - 1383 2487 -0.001051 - 1383 2488 0.499406 - 1383 2489 0.844195 - 1384 1337 -3.154471 - 1384 1384 -41.054366 - 1384 1385 37.214192 - 1384 1388 -1.071987 - 1384 2489 -0.134655 - 1385 279 -0.000009 - 1385 280 -1.822437 - 1385 281 -3.080647 - 1385 1335 -0.000549 - 1385 1336 -1.203840 - 1385 1337 -2.034972 - 1385 1380 -0.000007 - 1385 1381 -1.354923 - 1385 1382 -2.290362 - 1385 1383 0.001094 - 1385 1384 9.078728 - 1385 1385 15.346681 - 1385 1386 -0.000006 - 1385 1387 -1.242885 - 1385 1388 -2.100971 - 1385 1431 -0.000007 - 1385 1432 -1.322312 - 1385 1433 -2.235236 - 1385 2487 -0.000011 - 1385 2488 -2.127758 - 1385 2489 -3.596762 - 1386 282 -0.059577 - 1386 1338 -0.109177 - 1386 1339 10.289212 - 1386 1340 17.392873 - 1386 1383 -0.000591 - 1386 1386 199.967900 - 1386 1387 -133.854250 - 1386 1388 -226.267070 - 1386 1389 -0.093439 - 1386 1390 6.964126 - 1386 1391 11.772159 - 1386 1434 -0.000575 - 1386 2490 -0.001111 - 1386 2491 0.380413 - 1386 2492 0.643049 - 1387 1340 -2.739737 - 1387 1387 -37.975522 - 1387 1388 35.133565 - 1387 1391 -1.907273 - 1387 2492 -0.104182 - 1388 282 -0.000010 - 1388 283 -1.970592 - 1388 284 -3.331087 - 1388 1338 -0.000333 - 1388 1339 -1.128097 - 1388 1340 -1.906933 - 1388 1383 -0.000006 - 1388 1384 -1.242885 - 1388 1385 -2.100971 - 1388 1386 0.000839 - 1388 1387 9.038509 - 1388 1388 15.278686 - 1388 1389 -0.000005 - 1388 1390 -1.145652 - 1388 1391 -1.936611 - 1388 1434 -0.000006 - 1388 1435 -1.209887 - 1388 1436 -2.045192 - 1388 2490 -0.000012 - 1388 2491 -2.337165 - 1388 2492 -3.950741 - 1389 285 -0.059780 - 1389 1341 -0.023449 - 1389 1342 5.814167 - 1389 1343 9.828268 - 1389 1386 -0.000525 - 1389 1389 183.697620 - 1389 1390 -113.148110 - 1389 1391 -191.265560 - 1389 2493 -0.001167 - 1389 2494 0.371386 - 1389 2495 0.627791 - 1390 1343 -1.577045 - 1390 1390 -34.895594 - 1390 1391 29.589117 - 1390 2495 -0.101712 - 1391 285 -0.000010 - 1391 286 -2.145576 - 1391 287 -3.626882 - 1391 1341 -0.000111 - 1391 1342 -1.069595 - 1391 1343 -1.808043 - 1391 1386 -0.000005 - 1391 1387 -1.145652 - 1391 1388 -1.936611 - 1391 1389 0.000568 - 1391 1390 6.909406 - 1391 1391 11.679659 - 1391 2493 -0.000012 - 1391 2494 -2.544696 - 1391 2495 -4.301554 - 1392 1392 1.000000 - 1393 1393 1.000000 - 1394 1394 1.000000 - 1395 1395 1.000000 - 1396 1396 1.000000 - 1397 1397 1.000000 - 1398 1398 1.000000 - 1399 1399 1.000000 - 1400 1400 1.000000 - 1401 1401 1.000000 - 1402 1402 1.000000 - 1403 1403 1.000000 - 1404 1404 1.000000 - 1405 1405 1.000000 - 1406 1406 1.000000 - 1407 303 -0.055206 - 1407 1359 -0.153775 - 1407 1360 14.741648 - 1407 1361 24.919282 - 1407 1407 270.064660 - 1407 1408 -172.594160 - 1407 1409 -291.753170 - 1407 1410 -0.000833 - 1407 1455 -0.000830 - 1407 2511 -0.000891 - 1407 2512 0.612420 - 1407 2513 1.035235 - 1408 1361 -3.952417 - 1408 1408 -47.092408 - 1408 1409 52.338123 - 1408 2513 -0.165668 - 1409 303 -0.000008 - 1409 304 -1.458242 - 1409 305 -2.465013 - 1409 1359 -0.000353 - 1409 1360 -1.579929 - 1409 1361 -2.670712 - 1409 1407 0.001019 - 1409 1408 7.981249 - 1409 1409 13.491503 - 1409 1410 -0.000009 - 1409 1411 -1.617043 - 1409 1412 -2.733450 - 1409 1455 -0.000009 - 1409 1456 -1.611960 - 1409 1457 -2.724858 - 1409 2511 -0.000009 - 1409 2512 -1.708351 - 1409 2513 -2.887796 - 1410 306 -0.055120 - 1410 1362 -0.188162 - 1410 1363 15.021144 - 1410 1364 25.391720 - 1410 1407 -0.023272 - 1410 1408 0.650426 - 1410 1409 1.099480 - 1410 1410 270.064620 - 1410 1411 -173.448240 - 1410 1412 -293.196720 - 1410 1413 -0.000838 - 1410 1458 -0.000835 - 1410 2514 -0.000897 - 1410 2515 0.681539 - 1410 2516 1.152073 - 1411 1364 -3.986130 - 1411 1409 -0.178123 - 1411 1411 -51.330777 - 1411 1412 45.408629 - 1411 2516 -0.182495 - 1412 306 -0.000008 - 1412 307 -1.458976 - 1412 308 -2.466251 - 1412 1362 -0.000518 - 1412 1363 -1.563319 - 1412 1364 -2.642632 - 1412 1407 -0.000009 - 1412 1408 -1.617043 - 1412 1409 -2.733450 - 1412 1410 0.001192 - 1412 1411 9.565780 - 1412 1412 16.169985 - 1412 1413 -0.000009 - 1412 1414 -1.617072 - 1412 1415 -2.733497 - 1412 1458 -0.000009 - 1412 1459 -1.611772 - 1412 1460 -2.724537 - 1412 2514 -0.000009 - 1412 2515 -1.691876 - 1412 2516 -2.859945 - 1413 309 -0.053672 - 1413 1365 -0.232176 - 1413 1366 15.619168 - 1413 1367 26.402642 - 1413 1410 -0.025816 - 1413 1411 1.043971 - 1413 1412 1.764727 - 1413 1413 270.125960 - 1413 1414 -174.246250 - 1413 1415 -294.545860 - 1413 1416 -0.002311 - 1413 1461 -0.002303 - 1413 2517 -0.062840 - 1413 2518 0.740867 - 1413 2519 1.252361 - 1414 1367 -4.080522 - 1414 1412 -0.285896 - 1414 1414 -51.313295 - 1414 1415 45.613128 - 1414 2519 -0.196347 - 1415 309 -0.000008 - 1415 310 -1.458317 - 1415 311 -2.465140 - 1415 1365 -0.000764 - 1415 1366 -1.538263 - 1415 1367 -2.600280 - 1415 1410 -0.000009 - 1415 1411 -1.617072 - 1415 1412 -2.733497 - 1415 1413 0.002039 - 1415 1414 9.520356 - 1415 1415 16.093208 - 1415 1416 -0.000024 - 1415 1417 -1.615606 - 1415 1418 -2.731020 - 1415 1461 -0.000024 - 1415 1462 -1.610040 - 1415 1463 -2.721612 - 1415 2517 -0.000578 - 1415 2518 -1.675338 - 1415 2519 -2.831991 - 1416 312 -0.046163 - 1416 1368 -0.246531 - 1416 1369 16.251500 - 1416 1370 27.471520 - 1416 1413 -0.010518 - 1416 1414 0.805567 - 1416 1415 1.361731 - 1416 1416 270.179490 - 1416 1417 -174.635750 - 1416 1418 -295.204080 - 1416 1419 -0.010217 - 1416 1464 -0.010180 - 1416 2520 -0.071349 - 1416 2521 0.748089 - 1416 2522 1.264569 - 1417 1370 -4.223402 - 1417 1415 -0.220402 - 1417 1417 -51.226801 - 1417 1418 45.626707 - 1417 2522 -0.197234 - 1418 312 -0.000008 - 1418 313 -1.450162 - 1418 314 -2.451353 - 1418 1368 -0.000847 - 1418 1369 -1.530604 - 1418 1370 -2.587332 - 1418 1413 -0.000024 - 1418 1414 -1.615606 - 1418 1415 -2.731020 - 1418 1416 0.002394 - 1418 1417 9.477172 - 1418 1418 16.020203 - 1418 1419 -0.000107 - 1418 1420 -1.607488 - 1418 1421 -2.717295 - 1418 1464 -0.000106 - 1418 1465 -1.601910 - 1418 1466 -2.707867 - 1418 2520 -0.000666 - 1418 2521 -1.665693 - 1418 2522 -2.815685 - 1419 315 -0.039117 - 1419 1371 -0.259061 - 1419 1372 16.708277 - 1419 1373 28.243671 - 1419 1416 -0.010675 - 1419 1417 0.044262 - 1419 1418 0.074820 - 1419 1419 270.227190 - 1419 1420 -175.279660 - 1419 1421 -296.292740 - 1419 1422 -0.020434 - 1419 1423 1.003971 - 1419 1424 1.697111 - 1419 1467 -0.018055 - 1419 2523 -0.079485 - 1419 2524 0.715693 - 1419 2525 1.209808 - 1420 1373 -4.319193 - 1420 1418 -0.012049 - 1420 1420 -51.139888 - 1420 1421 45.709042 - 1420 1424 -0.273308 - 1420 2525 -0.187710 - 1421 315 -0.000008 - 1421 316 -1.442837 - 1421 317 -2.438972 - 1421 1371 -0.000929 - 1421 1372 -1.522509 - 1421 1373 -2.573649 - 1421 1416 -0.000107 - 1421 1417 -1.607488 - 1421 1418 -2.717295 - 1421 1419 0.002734 - 1421 1420 9.436686 - 1421 1421 15.951770 - 1421 1422 -0.000107 - 1421 1423 -1.607328 - 1421 1424 -2.717025 - 1421 1467 -0.000188 - 1421 1468 -1.593823 - 1421 1469 -2.694198 - 1421 2523 -0.000754 - 1421 2524 -1.657002 - 1421 2525 -2.800996 - 1422 318 -0.046988 - 1422 1374 -0.235601 - 1422 1375 16.724953 - 1422 1376 28.271838 - 1422 1419 -0.010211 - 1422 1422 270.179700 - 1422 1423 -176.216070 - 1422 1424 -297.875450 - 1422 1425 -0.033836 - 1422 1426 1.831802 - 1422 1427 3.096478 - 1422 1470 -0.010175 - 1422 2526 -0.070592 - 1422 2527 0.675206 - 1422 2528 1.141367 - 1423 1376 -4.392381 - 1423 1423 -51.226311 - 1423 1424 46.058279 - 1423 1427 -0.501648 - 1423 2528 -0.178020 - 1424 318 -0.000008 - 1424 319 -1.450448 - 1424 320 -2.451836 - 1424 1374 -0.000682 - 1424 1375 -1.547405 - 1424 1376 -2.615731 - 1424 1419 -0.000107 - 1424 1420 -1.607328 - 1424 1421 -2.717025 - 1424 1422 0.002214 - 1424 1423 9.495309 - 1424 1424 16.050862 - 1424 1425 -0.000009 - 1424 1426 -1.616475 - 1424 1427 -2.732490 - 1424 1470 -0.000106 - 1424 1471 -1.601910 - 1424 1472 -2.707867 - 1424 2526 -0.000666 - 1424 2527 -1.666034 - 1424 2528 -2.816262 - 1425 321 -0.056476 - 1425 1377 -0.191271 - 1425 1378 16.134038 - 1425 1379 27.272978 - 1425 1422 -0.000835 - 1425 1425 270.096680 - 1425 1426 -176.388040 - 1425 1427 -298.166340 - 1425 1428 -0.066564 - 1425 1429 2.561431 - 1425 1430 4.329840 - 1425 1473 -0.000833 - 1425 2529 -0.000894 - 1425 2530 0.581693 - 1425 2531 0.983293 - 1426 1379 -4.302112 - 1426 1426 -51.330268 - 1426 1427 46.214953 - 1426 1430 -0.701466 - 1426 2531 -0.155759 - 1427 321 -0.000008 - 1427 322 -1.458776 - 1427 323 -2.465915 - 1427 1377 -0.000427 - 1427 1378 -1.522914 - 1427 1379 -2.574334 - 1427 1422 -0.000009 - 1427 1423 -1.616475 - 1427 1424 -2.732490 - 1427 1425 0.001102 - 1427 1426 9.457362 - 1427 1427 15.986723 - 1427 1428 -0.000008 - 1427 1429 -1.549054 - 1427 1430 -2.618519 - 1427 1473 -0.000009 - 1427 1474 -1.612436 - 1427 1475 -2.725662 - 1427 2529 -0.000009 - 1427 2530 -1.691985 - 1427 2531 -2.860131 - 1428 324 -0.057097 - 1428 1380 -0.111799 - 1428 1381 14.912651 - 1428 1382 25.208332 - 1428 1425 -0.000788 - 1428 1428 248.539260 - 1428 1429 -162.953950 - 1428 1430 -275.457190 - 1428 1431 -0.058069 - 1428 1432 2.741661 - 1428 1433 4.634503 - 1428 1476 -0.000763 - 1428 2532 -0.000956 - 1428 2533 0.464518 - 1428 2534 0.785221 - 1429 1382 -4.056874 - 1429 1429 -47.227537 - 1429 1430 42.694757 - 1429 1433 -0.750827 - 1429 2534 -0.127211 - 1430 324 -0.000008 - 1430 325 -1.584564 - 1430 326 -2.678545 - 1430 1380 -0.000106 - 1430 1381 -1.442356 - 1430 1382 -2.438158 - 1430 1425 -0.000008 - 1430 1426 -1.549054 - 1430 1427 -2.618519 - 1430 1428 0.000729 - 1430 1429 9.381003 - 1430 1430 15.857638 - 1430 1431 -0.000007 - 1430 1432 -1.419835 - 1430 1433 -2.400088 - 1430 1476 -0.000008 - 1430 1477 -1.500528 - 1430 1478 -2.536490 - 1430 2532 -0.000010 - 1430 2533 -1.879401 - 1430 2534 -3.176937 - 1431 327 -0.057996 - 1431 1383 -0.082149 - 1431 1384 13.969117 - 1431 1385 23.613395 - 1431 1428 -0.000715 - 1431 1431 226.911150 - 1431 1432 -149.009340 - 1431 1433 -251.885390 - 1431 1434 -0.044447 - 1431 1435 2.294259 - 1431 1436 3.878212 - 1431 1479 -0.000698 - 1431 2535 -0.001037 - 1431 2536 0.436219 - 1431 2537 0.737384 - 1432 1385 -3.825630 - 1432 1432 -43.123039 - 1432 1433 39.038658 - 1432 1436 -0.628305 - 1432 2537 -0.119462 - 1433 327 -0.000009 - 1433 328 -1.736001 - 1433 329 -2.934535 - 1433 1383 -0.000007 - 1433 1384 -1.322312 - 1433 1385 -2.235236 - 1433 1428 -0.000007 - 1433 1429 -1.419835 - 1433 1430 -2.400088 - 1433 1431 0.000578 - 1433 1432 9.219164 - 1433 1433 15.584074 - 1433 1434 -0.000007 - 1433 1435 -1.290339 - 1433 1436 -2.181188 - 1433 1479 -0.000007 - 1433 1480 -1.387146 - 1433 1481 -2.344831 - 1433 2535 -0.000011 - 1433 2536 -2.058723 - 1433 2537 -3.480066 - 1434 330 -0.058561 - 1434 1386 -0.090194 - 1434 1387 14.440091 - 1434 1388 24.409514 - 1434 1431 -0.000644 - 1434 1434 205.294530 - 1434 1435 -134.596750 - 1434 1436 -227.522180 - 1434 1482 -0.000628 - 1434 2538 -0.001136 - 1434 2539 0.452153 - 1434 2540 0.764319 - 1435 1388 -3.954655 - 1435 1435 -39.017438 - 1435 1436 35.257103 - 1435 2540 -0.123826 - 1436 330 -0.000010 - 1436 331 -1.918772 - 1436 332 -3.243489 - 1436 1386 -0.000006 - 1436 1387 -1.209887 - 1436 1388 -2.045192 - 1436 1431 -0.000007 - 1436 1432 -1.290339 - 1436 1433 -2.181188 - 1436 1434 0.000521 - 1436 1435 7.955726 - 1436 1436 13.448350 - 1436 1482 -0.000007 - 1436 1483 -1.256884 - 1436 1484 -2.124636 - 1436 2538 -0.000012 - 1436 2539 -2.275492 - 1436 2540 -3.846489 - 1437 1437 1.000000 - 1438 1438 1.000000 - 1439 1439 1.000000 - 1440 1440 1.000000 - 1441 1441 1.000000 - 1442 1442 1.000000 - 1443 1443 1.000000 - 1444 1444 1.000000 - 1445 1445 1.000000 - 1446 1446 1.000000 - 1447 1447 1.000000 - 1448 1448 1.000000 - 1449 1449 1.000000 - 1450 1450 1.000000 - 1451 1451 1.000000 - 1452 1452 1.000000 - 1453 1453 1.000000 - 1454 1454 1.000000 - 1455 351 -0.056169 - 1455 1407 -0.081983 - 1455 1408 15.723926 - 1455 1409 26.579724 - 1455 1455 270.018340 - 1455 1456 -173.866800 - 1455 1457 -293.904440 - 1455 1458 -0.000864 - 1455 1503 -0.000822 - 1455 2559 -0.000926 - 1455 2560 0.530999 - 1455 2561 0.897600 - 1456 1409 -4.306080 - 1456 1456 -47.111932 - 1456 1457 52.638811 - 1456 2561 -0.145414 - 1457 351 -0.000008 - 1457 352 -1.460362 - 1457 353 -2.468596 - 1457 1407 -0.000009 - 1457 1408 -1.611960 - 1457 1409 -2.724858 - 1457 1455 0.000675 - 1457 1456 7.967980 - 1457 1457 13.469073 - 1457 1458 -0.000009 - 1457 1459 -1.617465 - 1457 1460 -2.734163 - 1457 1503 -0.000009 - 1457 1504 -1.539562 - 1457 1505 -2.602475 - 1457 2559 -0.000010 - 1457 2560 -1.732900 - 1457 2561 -2.929294 - 1458 354 -0.055215 - 1458 1410 -0.078662 - 1458 1411 16.170540 - 1458 1412 27.334664 - 1458 1455 -0.019975 - 1458 1456 1.100416 - 1458 1457 1.860143 - 1458 1458 270.036740 - 1458 1459 -175.444050 - 1458 1460 -296.570460 - 1458 1461 -0.000867 - 1458 1506 -0.000844 - 1458 2562 -0.000928 - 1458 2563 0.572969 - 1458 2564 0.968546 - 1459 1412 -4.428374 - 1459 1457 -0.301349 - 1459 1459 -51.350908 - 1459 1460 45.905440 - 1459 2564 -0.156907 - 1460 354 -0.000008 - 1460 355 -1.460166 - 1460 356 -2.468263 - 1460 1410 -0.000009 - 1460 1411 -1.611772 - 1460 1412 -2.724537 - 1460 1455 -0.000009 - 1460 1456 -1.617465 - 1460 1457 -2.734163 - 1460 1458 0.000685 - 1460 1459 9.619876 - 1460 1460 16.261429 - 1460 1461 -0.000009 - 1460 1462 -1.617400 - 1460 1463 -2.734051 - 1460 1506 -0.000009 - 1460 1507 -1.575154 - 1460 1508 -2.662638 - 1460 2562 -0.000010 - 1460 2563 -1.732188 - 1460 2564 -2.928089 - 1461 357 -0.053683 - 1461 1413 -0.084097 - 1461 1414 17.189845 - 1461 1415 29.057715 - 1461 1458 -0.029835 - 1461 1459 2.069263 - 1461 1460 3.497881 - 1461 1461 270.067400 - 1461 1462 -177.504510 - 1461 1463 -300.053620 - 1461 1464 -0.000871 - 1461 1509 -0.000867 - 1461 2565 -0.000933 - 1461 2566 0.652848 - 1461 2567 1.103574 - 1462 1415 -4.703119 - 1462 1460 -0.566666 - 1462 1462 -51.350998 - 1462 1463 46.469243 - 1462 2567 -0.178781 - 1463 357 -0.000008 - 1463 358 -1.460094 - 1463 359 -2.468143 - 1463 1413 -0.000024 - 1463 1414 -1.610040 - 1463 1415 -2.721612 - 1463 1458 -0.000009 - 1463 1459 -1.617400 - 1463 1460 -2.734051 - 1463 1461 0.000701 - 1463 1462 9.652102 - 1463 1463 16.315911 - 1463 1464 -0.000009 - 1463 1465 -1.617388 - 1463 1466 -2.734033 - 1463 1509 -0.000009 - 1463 1510 -1.609802 - 1463 1511 -2.721210 - 1463 2565 -0.000010 - 1463 2566 -1.731647 - 1463 2567 -2.927176 - 1464 360 -0.052129 - 1464 1416 -0.119096 - 1464 1417 18.305960 - 1464 1418 30.944375 - 1464 1461 -0.036297 - 1464 1462 1.926275 - 1464 1463 3.256175 - 1464 1464 270.067650 - 1464 1465 -178.484220 - 1464 1466 -301.709460 - 1464 1467 -0.000877 - 1464 1512 -0.000874 - 1464 2568 -0.000940 - 1464 2569 0.757945 - 1464 2570 1.281230 - 1465 1418 -4.983360 - 1465 1463 -0.527508 - 1465 1465 -51.349972 - 1465 1466 46.739878 - 1465 2570 -0.207560 - 1466 360 -0.000008 - 1466 361 -1.460875 - 1466 362 -2.469460 - 1466 1416 -0.000106 - 1466 1417 -1.601910 - 1466 1418 -2.707867 - 1466 1461 -0.000009 - 1466 1462 -1.617388 - 1466 1463 -2.734033 - 1466 1464 0.000783 - 1466 1465 9.647286 - 1466 1466 16.307760 - 1466 1467 -0.000009 - 1466 1468 -1.617430 - 1466 1469 -2.734101 - 1466 1512 -0.000009 - 1466 1513 -1.611383 - 1466 1514 -2.723879 - 1466 2568 -0.000010 - 1466 2569 -1.732570 - 1466 2570 -2.928734 - 1467 363 -0.051377 - 1467 1419 -0.141919 - 1467 1420 19.000849 - 1467 1421 32.119036 - 1467 1464 -0.016337 - 1467 1465 0.741760 - 1467 1466 1.253870 - 1467 1467 270.071900 - 1467 1468 -178.958390 - 1467 1469 -302.511260 - 1467 1470 -0.018954 - 1467 1471 0.999028 - 1467 1472 1.688756 - 1467 1515 -0.000877 - 1467 2571 -0.000943 - 1467 2572 0.808856 - 1467 2573 1.367290 - 1468 1421 -5.146456 - 1468 1466 -0.203129 - 1468 1468 -51.349336 - 1468 1469 46.871070 - 1468 1472 -0.273582 - 1468 2573 -0.221501 - 1469 363 -0.000008 - 1469 364 -1.460863 - 1469 365 -2.469443 - 1469 1419 -0.000188 - 1469 1420 -1.593823 - 1469 1421 -2.694198 - 1469 1464 -0.000009 - 1469 1465 -1.617430 - 1469 1466 -2.734101 - 1469 1467 0.000865 - 1469 1468 9.639143 - 1469 1469 16.294003 - 1469 1470 -0.000009 - 1469 1471 -1.617368 - 1469 1472 -2.733998 - 1469 1515 -0.000009 - 1469 1516 -1.611376 - 1469 1517 -2.723869 - 1469 2571 -0.000010 - 1469 2572 -1.732554 - 1469 2573 -2.928709 - 1470 366 -0.051991 - 1470 1422 -0.126213 - 1470 1423 19.005981 - 1470 1424 32.127690 - 1470 1467 -0.000876 - 1470 1470 270.079450 - 1470 1471 -179.650180 - 1470 1472 -303.680460 - 1470 1473 -0.041060 - 1470 1474 2.394803 - 1470 1475 4.048174 - 1470 1518 -0.000873 - 1470 2574 -0.000939 - 1470 2575 0.765841 - 1470 2576 1.294577 - 1471 1424 -5.173942 - 1471 1471 -51.349843 - 1471 1472 47.059527 - 1471 1475 -0.655814 - 1471 2576 -0.209723 - 1472 366 -0.000008 - 1472 367 -1.460983 - 1472 368 -2.469644 - 1472 1422 -0.000106 - 1472 1423 -1.601910 - 1472 1424 -2.707867 - 1472 1467 -0.000009 - 1472 1468 -1.617368 - 1472 1469 -2.733998 - 1472 1470 0.000783 - 1472 1471 9.647657 - 1472 1472 16.308390 - 1472 1473 -0.000009 - 1472 1474 -1.617121 - 1472 1475 -2.733582 - 1472 1518 -0.000009 - 1472 1519 -1.611847 - 1472 1520 -2.724664 - 1472 2574 -0.000010 - 1472 2575 -1.732697 - 1472 2576 -2.928949 - 1473 369 -0.053475 - 1473 1425 -0.109773 - 1473 1426 18.456170 - 1473 1427 31.198310 - 1473 1470 -0.000870 - 1473 1473 270.088650 - 1473 1474 -179.769780 - 1473 1475 -303.882830 - 1473 1476 -0.061690 - 1473 1477 3.020031 - 1473 1478 5.105058 - 1473 1521 -0.000867 - 1473 2577 -0.000931 - 1473 2578 0.690522 - 1473 2579 1.167258 - 1474 1427 -5.054313 - 1474 1474 -51.350607 - 1474 1475 47.090596 - 1474 1478 -0.827036 - 1474 2579 -0.189098 - 1475 369 -0.000008 - 1475 370 -1.460347 - 1475 371 -2.468570 - 1475 1425 -0.000009 - 1475 1426 -1.612436 - 1475 1427 -2.725662 - 1475 1470 -0.000009 - 1475 1471 -1.617121 - 1475 1472 -2.733582 - 1475 1473 0.000685 - 1475 1474 9.606439 - 1475 1475 16.238723 - 1475 1476 -0.000009 - 1475 1477 -1.566770 - 1475 1478 -2.648466 - 1475 1521 -0.000009 - 1475 1522 -1.611892 - 1475 1523 -2.724742 - 1475 2577 -0.000010 - 1475 2578 -1.732143 - 1475 2579 -2.928014 - 1476 372 -0.054844 - 1476 1428 -0.107558 - 1476 1429 16.763446 - 1476 1430 28.336913 - 1476 1473 -0.000835 - 1476 1476 253.908400 - 1476 1477 -168.780180 - 1476 1478 -285.305840 - 1476 1479 -0.069079 - 1476 1480 3.228557 - 1476 1481 5.457553 - 1476 1524 -0.000825 - 1476 2580 -0.000982 - 1476 2581 0.663696 - 1476 2582 1.121911 - 1477 1430 -4.590788 - 1477 1477 -48.271778 - 1477 1478 44.204439 - 1477 1481 -0.884145 - 1477 2582 -0.181753 - 1478 372 -0.000009 - 1478 373 -1.552835 - 1478 374 -2.624910 - 1478 1428 -0.000008 - 1478 1429 -1.500528 - 1478 1430 -2.536490 - 1478 1473 -0.000009 - 1478 1474 -1.566770 - 1478 1475 -2.648466 - 1478 1476 0.000646 - 1478 1477 9.483929 - 1478 1478 16.031624 - 1478 1479 -0.000008 - 1478 1480 -1.469819 - 1478 1481 -2.484581 - 1478 1524 -0.000009 - 1478 1525 -1.547082 - 1478 1526 -2.615185 - 1478 2580 -0.000010 - 1478 2581 -1.841508 - 1478 2582 -3.112884 - 1479 375 -0.056319 - 1479 1431 -0.090980 - 1479 1432 15.127805 - 1479 1433 25.572042 - 1479 1476 -0.000776 - 1479 1479 237.706160 - 1479 1480 -156.883300 - 1479 1481 -265.195530 - 1479 1482 -0.047692 - 1479 1483 2.505882 - 1479 1484 4.235940 - 1479 1527 -0.000766 - 1479 2583 -0.001038 - 1479 2584 0.585322 - 1479 2585 0.989429 - 1480 1433 -4.142879 - 1480 1480 -45.193359 - 1480 1481 41.068716 - 1480 1484 -0.686243 - 1480 2585 -0.160292 - 1481 375 -0.000009 - 1481 376 -1.657390 - 1481 377 -2.801652 - 1481 1431 -0.000007 - 1481 1432 -1.387146 - 1481 1433 -2.344831 - 1481 1476 -0.000008 - 1481 1477 -1.469819 - 1481 1478 -2.484581 - 1481 1479 0.000606 - 1481 1480 9.290049 - 1481 1481 15.703897 - 1481 1482 -0.000007 - 1481 1483 -1.355413 - 1481 1484 -2.291188 - 1481 1527 -0.000008 - 1481 1528 -1.449741 - 1481 1529 -2.450642 - 1481 2583 -0.000011 - 1481 2584 -1.965496 - 1481 2585 -3.322474 - 1482 378 -0.057319 - 1482 1434 -0.081521 - 1482 1435 13.617892 - 1482 1436 23.019668 - 1482 1479 -0.000710 - 1482 1482 216.043540 - 1482 1483 -140.206910 - 1482 1484 -237.005610 - 1482 1530 -0.000684 - 1482 2586 -0.001135 - 1482 2587 0.546028 - 1482 2588 0.923005 - 1483 1436 -3.729391 - 1483 1483 -41.086240 - 1483 1484 36.671012 - 1483 2588 -0.149531 - 1484 378 -0.000010 - 1484 379 -1.826358 - 1484 380 -3.087274 - 1484 1434 -0.000007 - 1484 1435 -1.256884 - 1484 1436 -2.124636 - 1484 1479 -0.000007 - 1484 1480 -1.355413 - 1484 1481 -2.291188 - 1484 1482 0.000548 - 1484 1483 7.914309 - 1484 1484 13.378339 - 1484 1530 -0.000007 - 1484 1531 -1.305028 - 1484 1532 -2.206018 - 1484 2586 -0.000012 - 1484 2587 -2.166039 - 1484 2588 -3.661470 - 1485 1485 1.000000 - 1486 1486 1.000000 - 1487 1487 1.000000 - 1488 1488 1.000000 - 1489 1489 1.000000 - 1490 1490 1.000000 - 1491 1491 1.000000 - 1492 1492 1.000000 - 1493 1493 1.000000 - 1494 1494 1.000000 - 1495 1495 1.000000 - 1496 1496 1.000000 - 1497 1497 1.000000 - 1498 1498 1.000000 - 1499 1499 1.000000 - 1500 396 -0.057686 - 1500 1500 237.516000 - 1500 1501 -144.174440 - 1500 1502 -243.712300 - 1500 1503 -0.024458 - 1500 1504 4.857994 - 1500 1505 8.211954 - 1500 1548 -0.071538 - 1500 2604 -0.001125 - 1500 2605 0.539926 - 1500 2606 0.912690 - 1501 1501 -45.215223 - 1501 1502 37.533536 - 1501 1505 -1.330327 - 1501 2606 -0.147854 - 1502 396 -0.000010 - 1502 397 -1.671730 - 1502 398 -2.825890 - 1502 1500 0.000593 - 1502 1501 6.407039 - 1502 1502 10.830453 - 1502 1503 -0.000008 - 1502 1504 -1.455139 - 1502 1505 -2.459767 - 1502 1548 -0.000008 - 1502 1549 -1.289214 - 1502 1550 -2.179286 - 1502 2604 -0.000012 - 1502 2605 -1.985902 - 1502 2606 -3.356966 - 1503 399 -0.056046 - 1503 1455 -0.070526 - 1503 1456 16.653300 - 1503 1457 28.150739 - 1503 1500 -0.000813 - 1503 1503 248.364500 - 1503 1504 -162.319430 - 1503 1505 -274.384770 - 1503 1506 -0.000849 - 1503 1551 -0.006209 - 1503 2607 -0.001059 - 1503 2608 0.622625 - 1503 2609 1.052486 - 1504 1457 -4.560504 - 1504 1504 -47.264376 - 1504 1505 42.428957 - 1504 2609 -0.170502 - 1505 399 -0.000009 - 1505 400 -1.595325 - 1505 401 -2.696737 - 1505 1455 -0.000009 - 1505 1456 -1.539562 - 1505 1457 -2.602475 - 1505 1500 -0.000008 - 1505 1501 -1.455139 - 1505 1502 -2.459767 - 1505 1503 0.000635 - 1505 1504 9.380903 - 1505 1505 15.857478 - 1505 1506 -0.000009 - 1505 1507 -1.520008 - 1505 1508 -2.569421 - 1505 1551 -0.000008 - 1505 1552 -1.371211 - 1505 1553 -2.317896 - 1505 2607 -0.000011 - 1505 2608 -1.894376 - 1505 2609 -3.202254 - 1506 402 -0.053266 - 1506 1458 -0.078258 - 1506 1459 17.168040 - 1506 1460 29.020837 - 1506 1503 -0.024688 - 1506 1504 1.159114 - 1506 1505 1.959367 - 1506 1506 259.197590 - 1506 1507 -170.476200 - 1506 1508 -288.172790 - 1506 1509 -0.000889 - 1506 1554 -0.000826 - 1506 2610 -0.001016 - 1506 2611 0.796559 - 1506 2612 1.346502 - 1507 1460 -4.701458 - 1507 1505 -0.317415 - 1507 1507 -49.318400 - 1507 1508 44.577014 - 1507 2612 -0.218132 - 1508 402 -0.000009 - 1508 403 -1.527188 - 1508 404 -2.581557 - 1508 1458 -0.000009 - 1508 1459 -1.575154 - 1508 1460 -2.662638 - 1508 1503 -0.000009 - 1508 1504 -1.520008 - 1508 1505 -2.569421 - 1508 1506 0.000661 - 1508 1507 9.498793 - 1508 1508 16.056750 - 1508 1509 -0.000009 - 1508 1510 -1.584763 - 1508 1511 -2.678882 - 1508 1554 -0.000009 - 1508 1555 -1.473536 - 1508 1556 -2.490863 - 1508 2610 -0.000011 - 1508 2611 -1.812633 - 1508 2612 -3.064073 - 1509 405 -0.048975 - 1509 1461 -0.101910 - 1509 1462 19.220924 - 1509 1463 32.491049 - 1509 1506 -0.050848 - 1509 1507 3.676387 - 1509 1508 6.214560 - 1509 1509 270.040090 - 1509 1510 -181.611810 - 1509 1511 -306.996610 - 1509 1512 -0.000915 - 1509 1557 -0.000880 - 1509 2613 -0.000983 - 1509 2614 1.070897 - 1509 2615 1.810245 - 1510 1463 -5.263623 - 1510 1508 -1.006751 - 1510 1510 -51.373691 - 1510 1511 47.537372 - 1510 2615 -0.293256 - 1511 405 -0.000009 - 1511 406 -1.463582 - 1511 407 -2.474039 - 1511 1461 -0.000009 - 1511 1462 -1.609802 - 1511 1463 -2.721210 - 1511 1506 -0.000009 - 1511 1507 -1.584763 - 1511 1508 -2.678882 - 1511 1509 0.000687 - 1511 1510 9.574459 - 1511 1511 16.184664 - 1511 1512 -0.000010 - 1511 1513 -1.617810 - 1511 1514 -2.734746 - 1511 1557 -0.000009 - 1511 1558 -1.556120 - 1511 1559 -2.630466 - 1511 2613 -0.000010 - 1511 2614 -1.736640 - 1511 2615 -2.935616 - 1512 408 -0.043304 - 1512 1464 -0.114353 - 1512 1465 21.227252 - 1512 1466 35.882516 - 1512 1509 -0.048726 - 1512 1510 3.921812 - 1512 1511 6.629430 - 1512 1512 270.083090 - 1512 1513 -184.230160 - 1512 1514 -311.422500 - 1512 1515 -0.000924 - 1512 1560 -0.000918 - 1512 2616 -0.000989 - 1512 2617 1.433314 - 1512 2618 2.422873 - 1513 1466 -5.813032 - 1513 1511 -1.073953 - 1513 1513 -51.374787 - 1513 1514 48.251452 - 1513 2618 -0.392499 - 1514 408 -0.000009 - 1514 409 -1.460309 - 1514 410 -2.468505 - 1514 1464 -0.000009 - 1514 1465 -1.611383 - 1514 1466 -2.723879 - 1514 1509 -0.000010 - 1514 1510 -1.617810 - 1514 1511 -2.734746 - 1514 1512 0.000688 - 1514 1513 9.652496 - 1514 1514 16.316571 - 1514 1515 -0.000010 - 1514 1516 -1.617811 - 1514 1517 -2.734747 - 1514 1560 -0.000010 - 1514 1561 -1.607538 - 1514 1562 -2.717380 - 1514 2616 -0.000010 - 1514 2617 -1.731904 - 1514 2618 -2.927608 - 1515 411 -0.039838 - 1515 1467 -0.125970 - 1515 1468 22.368532 - 1515 1469 37.811766 - 1515 1512 -0.028042 - 1515 1513 1.887659 - 1515 1514 3.190898 - 1515 1515 270.075210 - 1515 1516 -184.800230 - 1515 1517 -312.386300 - 1515 1518 -0.021591 - 1515 1519 1.253331 - 1515 1520 2.118629 - 1515 1563 -0.000923 - 1515 2619 -0.000994 - 1515 2620 1.653146 - 1515 2621 2.794478 - 1516 1469 -6.125558 - 1516 1514 -0.516916 - 1516 1516 -51.374772 - 1516 1517 48.407342 - 1516 1520 -0.343211 - 1516 2621 -0.452696 - 1517 411 -0.000009 - 1517 412 -1.460307 - 1517 413 -2.468503 - 1517 1467 -0.000009 - 1517 1468 -1.611376 - 1517 1469 -2.723869 - 1517 1512 -0.000010 - 1517 1513 -1.617811 - 1517 1514 -2.734747 - 1517 1515 0.000689 - 1517 1516 9.653615 - 1517 1517 16.318467 - 1517 1518 -0.000010 - 1517 1519 -1.617813 - 1517 1520 -2.734749 - 1517 1563 -0.000010 - 1517 1564 -1.608668 - 1517 1565 -2.719292 - 1517 2619 -0.000010 - 1517 2620 -1.731899 - 1517 2621 -2.927602 - 1518 414 -0.041964 - 1518 1470 -0.123424 - 1518 1471 22.121760 - 1518 1472 37.394598 - 1518 1515 -0.000926 - 1518 1518 270.094100 - 1518 1519 -184.810190 - 1518 1520 -312.402960 - 1518 1521 -0.044702 - 1518 1522 3.526077 - 1518 1523 5.960480 - 1518 1566 -0.000922 - 1518 2622 -0.000991 - 1518 2623 1.520675 - 1518 2624 2.570547 - 1519 1472 -6.057994 - 1519 1519 -51.375126 - 1519 1520 48.409390 - 1519 1523 -0.965583 - 1519 2624 -0.416421 - 1520 414 -0.000009 - 1520 415 -1.459477 - 1520 416 -2.467098 - 1520 1470 -0.000009 - 1520 1471 -1.611847 - 1520 1472 -2.724664 - 1520 1515 -0.000010 - 1520 1516 -1.617813 - 1520 1517 -2.734749 - 1520 1518 0.000688 - 1520 1519 9.654011 - 1520 1520 16.319131 - 1520 1521 -0.000010 - 1520 1522 -1.617733 - 1520 1523 -2.734617 - 1520 1566 -0.000010 - 1520 1567 -1.610483 - 1520 1568 -2.722360 - 1520 2622 -0.000010 - 1520 2623 -1.730916 - 1520 2624 -2.925939 - 1521 417 -0.046530 - 1521 1473 -0.119844 - 1521 1474 20.995709 - 1521 1475 35.491147 - 1521 1518 -0.000918 - 1521 1521 270.089650 - 1521 1522 -184.318440 - 1521 1523 -311.571890 - 1521 1524 -0.064393 - 1521 1525 4.462845 - 1521 1526 7.543988 - 1521 1569 -0.000914 - 1521 2625 -0.000983 - 1521 2626 1.230218 - 1521 2627 2.079560 - 1522 1475 -5.749652 - 1522 1522 -51.374246 - 1522 1523 48.277121 - 1522 1526 -1.222116 - 1522 2627 -0.336884 - 1523 417 -0.000009 - 1523 418 -1.460429 - 1523 419 -2.468710 - 1523 1473 -0.000009 - 1523 1474 -1.611892 - 1523 1475 -2.724742 - 1523 1518 -0.000010 - 1523 1519 -1.617733 - 1523 1520 -2.734617 - 1523 1521 0.000688 - 1523 1522 9.640772 - 1523 1523 16.296759 - 1523 1524 -0.000009 - 1523 1525 -1.601131 - 1523 1526 -2.706549 - 1523 1569 -0.000010 - 1523 1570 -1.611757 - 1523 1571 -2.724514 - 1523 2625 -0.000010 - 1523 2626 -1.732089 - 1523 2627 -2.927923 - 1524 420 -0.050663 - 1524 1476 -0.113740 - 1524 1477 18.820856 - 1524 1478 31.814754 - 1524 1521 -0.000898 - 1524 1524 264.684630 - 1524 1525 -179.202480 - 1524 1526 -302.923650 - 1524 1527 -0.080444 - 1524 1528 4.924130 - 1524 1529 8.323748 - 1524 1572 -0.000895 - 1524 2628 -0.000992 - 1524 2629 0.970469 - 1524 2630 1.640479 - 1525 1478 -5.154093 - 1525 1525 -50.346702 - 1525 1526 46.920720 - 1525 1529 -1.348445 - 1525 2630 -0.265756 - 1526 420 -0.000009 - 1526 421 -1.491316 - 1526 422 -2.520918 - 1526 1476 -0.000009 - 1526 1477 -1.547082 - 1526 1478 -2.615185 - 1526 1521 -0.000009 - 1526 1522 -1.601131 - 1526 1523 -2.706549 - 1526 1524 0.000674 - 1526 1525 9.543328 - 1526 1526 16.132032 - 1526 1527 -0.000009 - 1526 1528 -1.534417 - 1526 1529 -2.593777 - 1526 1572 -0.000009 - 1526 1573 -1.595112 - 1526 1574 -2.696375 - 1526 2628 -0.000010 - 1526 2629 -1.768646 - 1526 2630 -2.989716 - 1527 423 -0.053707 - 1527 1479 -0.098725 - 1527 1480 16.168101 - 1527 1481 27.330557 - 1527 1524 -0.000849 - 1527 1527 248.465840 - 1527 1528 -166.547880 - 1527 1529 -281.532540 - 1527 1530 -0.092298 - 1527 1531 4.582814 - 1527 1532 7.746784 - 1527 1575 -0.000829 - 1527 2631 -0.001045 - 1527 2632 0.785464 - 1527 2633 1.327749 - 1528 1481 -4.427659 - 1528 1528 -47.265374 - 1528 1529 43.584773 - 1528 1532 -1.254987 - 1528 2633 -0.215095 - 1529 423 -0.000009 - 1529 424 -1.591578 - 1529 425 -2.690404 - 1529 1479 -0.000008 - 1529 1480 -1.449741 - 1529 1481 -2.450642 - 1529 1524 -0.000009 - 1529 1525 -1.534417 - 1529 1526 -2.593777 - 1529 1527 0.000634 - 1529 1528 9.368486 - 1529 1529 15.836487 - 1529 1530 -0.000008 - 1529 1531 -1.401581 - 1529 1532 -2.369231 - 1529 1575 -0.000009 - 1529 1576 -1.497985 - 1529 1577 -2.532195 - 1529 2631 -0.000011 - 1529 2632 -1.887902 - 1529 2633 -3.191310 - 1530 426 -0.055373 - 1530 1482 -0.048856 - 1530 1483 12.699265 - 1530 1484 21.466823 - 1530 1527 -0.000765 - 1530 1530 221.434500 - 1530 1531 -142.602980 - 1530 1532 -241.055940 - 1530 1578 -0.000739 - 1530 2634 -0.001155 - 1530 2635 0.680199 - 1530 2636 1.149807 - 1531 1484 -3.477728 - 1531 1531 -42.130994 - 1531 1532 37.240289 - 1531 2636 -0.186270 - 1532 426 -0.000010 - 1532 427 -1.783164 - 1532 428 -3.014258 - 1532 1482 -0.000007 - 1532 1483 -1.305028 - 1532 1484 -2.206018 - 1532 1527 -0.000008 - 1532 1528 -1.401581 - 1532 1529 -2.369231 - 1532 1530 0.000563 - 1532 1531 7.962591 - 1532 1532 13.459956 - 1532 1578 -0.000008 - 1532 1579 -1.353165 - 1532 1580 -2.287390 - 1532 2634 -0.000012 - 1532 2635 -2.114944 - 1532 2636 -3.575099 - 1533 1533 1.000000 - 1534 1534 1.000000 - 1535 1535 1.000000 - 1536 1536 1.000000 - 1537 1537 1.000000 - 1538 1538 1.000000 - 1539 1539 1.000000 - 1540 1540 1.000000 - 1541 1541 1.000000 - 1542 1542 1.000000 - 1543 1543 1.000000 - 1544 1544 1.000000 - 1545 1545 1.000000 - 1546 1546 1.000000 - 1547 1547 1.000000 - 1548 444 -0.057004 - 1548 1500 -0.000745 - 1548 1501 6.788696 - 1548 1502 11.475603 - 1548 1548 199.830260 - 1548 1549 -124.044510 - 1548 1550 -209.684700 - 1548 1551 -0.000719 - 1548 1596 -0.012626 - 1548 2652 -0.001360 - 1548 2653 0.597769 - 1548 2654 1.010468 - 1549 1502 -1.859022 - 1549 1549 -38.042021 - 1549 1550 32.281529 - 1549 2654 -0.163692 - 1550 444 -0.000012 - 1550 445 -1.980295 - 1550 446 -3.347488 - 1550 1500 -0.000008 - 1550 1501 -1.289214 - 1550 1502 -2.179286 - 1550 1548 0.000515 - 1550 1549 7.954609 - 1550 1550 13.446461 - 1550 1551 -0.000008 - 1550 1552 -1.243572 - 1550 1553 -2.102133 - 1550 1596 -0.000007 - 1550 1597 -1.085812 - 1550 1598 -1.835456 - 1550 2652 -0.000014 - 1550 2653 -2.351456 - 1550 2654 -3.974898 - 1551 447 -0.054500 - 1551 1503 -0.000795 - 1551 1504 12.566956 - 1551 1505 21.243182 - 1551 1548 -0.043887 - 1551 1549 0.697149 - 1551 1550 1.178460 - 1551 1551 215.975550 - 1551 1552 -140.180580 - 1551 1553 -236.961250 - 1551 1554 -0.000786 - 1551 1599 -0.009259 - 1551 2655 -0.001264 - 1551 2656 0.769652 - 1551 2657 1.301020 - 1552 1505 -3.441372 - 1552 1550 -0.190905 - 1552 1552 -41.122058 - 1552 1553 36.574131 - 1552 2657 -0.210759 - 1553 447 -0.000011 - 1553 448 -1.836874 - 1553 449 -3.105053 - 1553 1503 -0.000008 - 1553 1504 -1.371211 - 1553 1505 -2.317896 - 1553 1548 -0.000008 - 1553 1549 -1.243572 - 1553 1550 -2.102133 - 1553 1551 0.000561 - 1553 1552 9.192765 - 1553 1553 15.539449 - 1553 1554 -0.000008 - 1553 1555 -1.355902 - 1553 1556 -2.292017 - 1553 1599 -0.000008 - 1553 1600 -1.199531 - 1553 1601 -2.027687 - 1553 2655 -0.000013 - 1553 2656 -2.181072 - 1553 2657 -3.686883 - 1554 450 -0.048561 - 1554 1506 -0.038162 - 1554 1507 16.599150 - 1554 1508 28.059187 - 1554 1551 -0.061746 - 1554 1552 3.880938 - 1554 1553 6.560338 - 1554 1554 237.624070 - 1554 1555 -160.377330 - 1554 1556 -271.101610 - 1554 1557 -0.000862 - 1554 1602 -0.000768 - 1554 2658 -0.001160 - 1554 2659 1.153953 - 1554 2660 1.950640 - 1555 1508 -4.545551 - 1555 1553 -1.062745 - 1555 1555 -45.233550 - 1555 1556 41.924961 - 1555 2660 -0.315993 - 1556 450 -0.000010 - 1556 451 -1.667175 - 1556 452 -2.818189 - 1556 1506 -0.000009 - 1556 1507 -1.473536 - 1556 1508 -2.490863 - 1556 1551 -0.000008 - 1556 1552 -1.355902 - 1556 1553 -2.292017 - 1556 1554 0.000612 - 1556 1555 9.262179 - 1556 1556 15.656777 - 1556 1557 -0.000009 - 1556 1558 -1.470369 - 1556 1559 -2.485510 - 1556 1602 -0.000008 - 1556 1603 -1.310395 - 1556 1604 -2.215090 - 1556 2658 -0.000012 - 1556 2659 -1.979740 - 1556 2660 -3.346550 - 1557 453 -0.037939 - 1557 1509 -0.091980 - 1557 1510 20.880731 - 1557 1511 35.296787 - 1557 1554 -0.096017 - 1557 1555 6.576891 - 1557 1556 11.117568 - 1557 1557 253.870270 - 1557 1558 -177.534100 - 1557 1559 -300.103640 - 1557 1560 -0.000935 - 1557 1605 -0.000861 - 1557 2661 -0.001106 - 1557 2662 1.853671 - 1557 2663 3.133446 - 1558 1511 -5.717999 - 1558 1556 -1.800985 - 1558 1558 -48.317530 - 1558 1559 46.486840 - 1558 2663 -0.507596 - 1559 453 -0.000010 - 1559 454 -1.562151 - 1559 455 -2.640660 - 1559 1509 -0.000009 - 1559 1510 -1.556120 - 1559 1511 -2.630466 - 1559 1554 -0.000009 - 1559 1555 -1.470369 - 1559 1556 -2.485510 - 1559 1557 0.000652 - 1559 1558 9.461390 - 1559 1559 15.993531 - 1559 1560 -0.000010 - 1559 1561 -1.567735 - 1559 1562 -2.650099 - 1559 1605 -0.000009 - 1559 1606 -1.445193 - 1559 1607 -2.442954 - 1559 2661 -0.000012 - 1559 2662 -1.854414 - 1559 2663 -3.134701 - 1560 456 -0.023835 - 1560 1512 -0.160725 - 1560 1513 24.991137 - 1560 1514 42.244995 - 1560 1557 -0.111313 - 1560 1558 7.135452 - 1560 1559 12.061768 - 1560 1560 270.050980 - 1560 1561 -192.553530 - 1560 1562 -325.492300 - 1560 1563 -0.000982 - 1560 1608 -0.000954 - 1560 2664 -0.001057 - 1560 2665 2.734049 - 1560 2666 4.621634 - 1561 1514 -6.843558 - 1561 1559 -1.953918 - 1561 1561 -51.400549 - 1561 1562 50.465801 - 1561 2666 -0.748666 - 1562 456 -0.000009 - 1562 457 -1.468842 - 1562 458 -2.482929 - 1562 1512 -0.000010 - 1562 1513 -1.607538 - 1562 1514 -2.717380 - 1562 1557 -0.000010 - 1562 1558 -1.567735 - 1562 1559 -2.650099 - 1562 1560 0.000691 - 1562 1561 9.583857 - 1562 1562 16.200543 - 1562 1563 -0.000010 - 1562 1564 -1.618224 - 1562 1565 -2.735444 - 1562 1608 -0.000010 - 1562 1609 -1.573049 - 1562 1610 -2.659081 - 1562 2664 -0.000011 - 1562 2665 -1.742717 - 1562 2666 -2.945886 - 1563 459 -0.011792 - 1563 1515 -0.182190 - 1563 1516 27.107692 - 1563 1517 45.822842 - 1563 1560 -0.049570 - 1563 1561 3.999304 - 1563 1562 6.760419 - 1563 1563 270.052420 - 1563 1564 -194.544660 - 1563 1565 -328.858290 - 1563 1566 -0.024568 - 1563 1567 2.318963 - 1563 1568 3.919973 - 1563 1611 -0.000985 - 1563 2667 -0.001065 - 1563 2668 3.419078 - 1563 2669 5.779609 - 1564 1517 -7.423134 - 1564 1562 -1.095127 - 1564 1564 -51.401676 - 1564 1565 51.007865 - 1564 1568 -0.634999 - 1564 2669 -0.936243 - 1565 459 -0.000010 - 1565 460 -1.467191 - 1565 461 -2.480140 - 1565 1515 -0.000010 - 1565 1516 -1.608668 - 1565 1517 -2.719292 - 1565 1560 -0.000010 - 1565 1561 -1.618224 - 1565 1562 -2.735444 - 1565 1563 0.000692 - 1565 1564 9.667185 - 1565 1565 16.341406 - 1565 1566 -0.000010 - 1565 1567 -1.618159 - 1565 1568 -2.735334 - 1565 1611 -0.000010 - 1565 1612 -1.609145 - 1565 1613 -2.720099 - 1565 2667 -0.000011 - 1565 2668 -1.740045 - 1565 2669 -2.941372 - 1566 462 -0.020159 - 1566 1518 -0.179488 - 1566 1519 26.077818 - 1566 1520 44.081918 - 1566 1563 -0.000986 - 1566 1566 270.062750 - 1566 1567 -192.591450 - 1566 1568 -325.556390 - 1566 1569 -0.076562 - 1566 1570 5.876120 - 1566 1571 9.932994 - 1566 1614 -0.000979 - 1566 2670 -0.001058 - 1566 2671 2.952589 - 1566 2672 4.991052 - 1567 1520 -7.141127 - 1567 1567 -51.400420 - 1567 1568 50.476322 - 1567 1571 -1.609065 - 1567 2672 -0.808507 - 1568 462 -0.000009 - 1568 463 -1.464845 - 1568 464 -2.476172 - 1568 1518 -0.000010 - 1568 1519 -1.610483 - 1568 1520 -2.722360 - 1568 1563 -0.000010 - 1568 1564 -1.618159 - 1568 1565 -2.735334 - 1568 1566 0.000692 - 1568 1567 9.662694 - 1568 1568 16.333809 - 1568 1569 -0.000010 - 1568 1570 -1.617970 - 1568 1571 -2.735016 - 1568 1614 -0.000010 - 1568 1615 -1.608216 - 1568 1616 -2.718527 - 1568 2670 -0.000011 - 1568 2671 -1.737268 - 1568 2672 -2.936676 - 1569 465 -0.033098 - 1569 1521 -0.147929 - 1569 1522 23.757471 - 1569 1523 40.159629 - 1569 1566 -0.000972 - 1569 1569 270.102780 - 1569 1570 -190.428260 - 1569 1571 -321.899920 - 1569 1572 -0.094315 - 1569 1573 6.845753 - 1569 1574 11.572054 - 1569 1617 -0.000966 - 1569 2673 -0.001041 - 1569 2674 2.140252 - 1569 2675 3.617882 - 1570 1523 -6.505759 - 1570 1570 -51.399319 - 1570 1571 49.887176 - 1570 1574 -1.874598 - 1570 2675 -0.586069 - 1571 465 -0.000009 - 1571 466 -1.461849 - 1571 467 -2.471110 - 1571 1521 -0.000010 - 1571 1522 -1.611757 - 1571 1523 -2.724514 - 1571 1566 -0.000010 - 1571 1567 -1.617970 - 1571 1568 -2.735016 - 1571 1569 0.000691 - 1571 1570 9.656976 - 1571 1571 16.324150 - 1571 1572 -0.000010 - 1571 1573 -1.617381 - 1571 1574 -2.734019 - 1571 1617 -0.000010 - 1571 1618 -1.608543 - 1571 1619 -2.719082 - 1571 2673 -0.000011 - 1571 2674 -1.733724 - 1571 2675 -2.930687 - 1572 468 -0.043136 - 1572 1524 -0.117552 - 1572 1525 21.205997 - 1572 1526 35.846591 - 1572 1569 -0.000956 - 1572 1572 270.100580 - 1572 1573 -187.730390 - 1572 1574 -317.339280 - 1572 1575 -0.121339 - 1572 1576 7.370835 - 1572 1577 12.459659 - 1572 1620 -0.000951 - 1572 2676 -0.001026 - 1572 2677 1.487911 - 1572 2678 2.515162 - 1573 1526 -5.807100 - 1573 1573 -51.398707 - 1573 1574 49.150588 - 1573 1577 -2.018406 - 1573 2678 -0.407441 - 1574 468 -0.000009 - 1574 469 -1.462551 - 1574 470 -2.472294 - 1574 1524 -0.000009 - 1574 1525 -1.595112 - 1574 1526 -2.696375 - 1574 1569 -0.000010 - 1574 1570 -1.617381 - 1574 1571 -2.734019 - 1574 1572 0.000690 - 1574 1573 9.591453 - 1574 1574 16.213383 - 1574 1575 -0.000009 - 1574 1576 -1.567258 - 1574 1577 -2.649292 - 1574 1620 -0.000010 - 1574 1621 -1.608533 - 1574 1622 -2.719063 - 1574 2676 -0.000011 - 1574 2677 -1.734867 - 1574 2678 -2.932617 - 1575 471 -0.048718 - 1575 1527 -0.072953 - 1575 1528 17.675979 - 1575 1529 29.879475 - 1575 1572 -0.000909 - 1575 1575 253.954880 - 1575 1576 -178.415320 - 1575 1577 -301.593260 - 1575 1578 -0.147228 - 1575 1579 11.432940 - 1575 1580 19.326230 - 1575 1623 -0.000887 - 1575 2679 -0.001070 - 1575 2680 1.116155 - 1575 2681 1.886748 - 1576 1529 -4.840468 - 1576 1576 -48.316631 - 1576 1577 46.731329 - 1576 1580 -3.130818 - 1576 2681 -0.305645 - 1577 471 -0.000009 - 1577 472 -1.554243 - 1577 473 -2.627293 - 1577 1527 -0.000009 - 1577 1528 -1.497985 - 1577 1529 -2.532195 - 1577 1572 -0.000009 - 1577 1573 -1.567258 - 1577 1574 -2.649292 - 1577 1575 0.000650 - 1577 1576 9.450041 - 1577 1577 15.974347 - 1577 1578 -0.000009 - 1577 1579 -1.452992 - 1577 1580 -2.456137 - 1577 1623 -0.000009 - 1577 1624 -1.528770 - 1577 1625 -2.584233 - 1577 2679 -0.000011 - 1577 2680 -1.843384 - 1577 2681 -3.116056 - 1578 474 -0.053506 - 1578 1530 -0.017879 - 1578 1531 9.743246 - 1578 1532 16.469973 - 1578 1575 -0.000817 - 1578 1578 232.246780 - 1578 1579 -146.068830 - 1578 1580 -246.914590 - 1578 2682 -0.001133 - 1578 2683 0.802498 - 1578 2684 1.356542 - 1579 1532 -2.668153 - 1579 1579 -44.202421 - 1579 1580 38.060785 - 1579 2684 -0.219758 - 1580 474 -0.000010 - 1580 475 -1.699738 - 1580 476 -2.873235 - 1580 1530 -0.000008 - 1580 1531 -1.353165 - 1580 1532 -2.287390 - 1580 1575 -0.000009 - 1580 1576 -1.452992 - 1580 1577 -2.456137 - 1580 1578 0.000581 - 1580 1579 6.526519 - 1580 1580 11.032421 - 1580 2682 -0.000012 - 1580 2683 -2.015677 - 1580 2684 -3.407298 - 1581 1581 1.000000 - 1582 1582 1.000000 - 1583 1583 1.000000 - 1584 1584 1.000000 - 1585 1585 1.000000 - 1586 1586 1.000000 - 1587 1587 1.000000 - 1588 1588 1.000000 - 1589 1589 1.000000 - 1590 1590 1.000000 - 1591 1591 1.000000 - 1592 1592 1.000000 - 1593 1593 1.000000 - 1594 1594 1.000000 - 1595 1595 1.000000 - 1596 492 -0.056812 - 1596 1548 -0.000645 - 1596 1549 7.630599 - 1596 1550 12.898756 - 1596 1596 167.375650 - 1596 1597 -106.036730 - 1596 1598 -179.244370 - 1596 1599 -0.000632 - 1596 1644 -0.004377 - 1596 2700 -0.001663 - 1596 2701 0.638554 - 1596 2702 1.079411 - 1597 1550 -2.089544 - 1597 1597 -31.887467 - 1597 1598 27.588098 - 1597 2702 -0.174857 - 1598 492 -0.000015 - 1598 493 -2.358791 - 1598 494 -3.987297 - 1598 1548 -0.000007 - 1598 1549 -1.085812 - 1598 1550 -1.835456 - 1598 1596 0.000443 - 1598 1597 8.243541 - 1598 1598 13.934873 - 1598 1599 -0.000007 - 1598 1600 -1.064124 - 1598 1601 -1.798794 - 1598 1644 -0.000006 - 1598 1645 -0.931823 - 1598 1646 -1.575153 - 1598 2700 -0.000017 - 1598 2701 -2.799416 - 1598 2702 -4.732131 - 1599 495 -0.052066 - 1599 1551 -0.000720 - 1599 1552 11.021295 - 1599 1553 18.630397 - 1599 1596 -0.041727 - 1599 1597 2.895174 - 1599 1598 4.893999 - 1599 1599 189.021050 - 1599 1600 -125.235250 - 1599 1601 -211.697660 - 1599 1602 -0.000708 - 1599 1647 -0.000626 - 1599 2703 -0.001489 - 1599 2704 0.949573 - 1599 2705 1.605158 - 1600 1553 -3.018039 - 1600 1598 -0.792794 - 1600 1600 -36.002030 - 1600 1601 32.657959 - 1600 2705 -0.260023 - 1601 495 -0.000013 - 1601 496 -2.090224 - 1601 497 -3.533314 - 1601 1551 -0.000008 - 1601 1552 -1.199531 - 1601 1553 -2.027687 - 1601 1596 -0.000007 - 1601 1597 -1.064124 - 1601 1598 -1.798794 - 1601 1599 0.000499 - 1601 1600 9.060904 - 1601 1601 15.316551 - 1601 1602 -0.000007 - 1601 1603 -1.179203 - 1601 1604 -1.993324 - 1601 1647 -0.000007 - 1601 1648 -1.042570 - 1601 1649 -1.762361 - 1601 2703 -0.000016 - 1601 2704 -2.481216 - 1601 2705 -4.194248 - 1602 498 -0.039166 - 1602 1554 -0.038034 - 1602 1555 15.556959 - 1602 1556 26.297461 - 1602 1599 -0.095629 - 1602 1600 6.539285 - 1602 1601 11.054008 - 1602 1602 205.248860 - 1602 1603 -143.760790 - 1602 1604 -243.013080 - 1602 1605 -0.000800 - 1602 1650 -0.000709 - 1602 2706 -0.001402 - 1602 2707 1.812566 - 1602 2708 3.063961 - 1603 1556 -4.260044 - 1603 1601 -1.790660 - 1603 1603 -39.087761 - 1603 1604 37.590468 - 1603 2708 -0.496332 - 1604 498 -0.000012 - 1604 499 -1.927240 - 1604 500 -3.257804 - 1604 1554 -0.000008 - 1604 1555 -1.310395 - 1604 1556 -2.215090 - 1604 1599 -0.000007 - 1604 1600 -1.179203 - 1604 1601 -1.993324 - 1604 1602 0.000538 - 1604 1603 9.171260 - 1604 1604 15.503089 - 1604 1605 -0.000008 - 1604 1606 -1.305745 - 1604 1607 -2.207230 - 1604 1650 -0.000007 - 1604 1651 -1.156712 - 1604 1652 -1.955305 - 1604 2706 -0.000015 - 1604 2707 -2.287583 - 1604 2708 -3.866929 - 1605 501 -0.014348 - 1605 1557 -0.086572 - 1605 1558 21.809515 - 1605 1559 36.866804 - 1605 1602 -0.125571 - 1605 1603 10.042669 - 1605 1604 16.976116 - 1605 1605 232.330740 - 1605 1606 -170.832760 - 1605 1607 -288.775700 - 1605 1608 -0.000925 - 1605 1653 -0.000819 - 1605 2709 -0.001270 - 1605 2710 3.379837 - 1605 2711 5.713277 - 1606 1559 -5.972151 - 1606 1604 -2.749961 - 1606 1606 -44.233502 - 1606 1607 44.762455 - 1606 2711 -0.925480 - 1607 501 -0.000011 - 1607 502 -1.698078 - 1607 503 -2.870432 - 1607 1557 -0.000009 - 1607 1558 -1.445193 - 1607 1559 -2.442954 - 1607 1602 -0.000008 - 1607 1603 -1.305745 - 1607 1604 -2.207230 - 1607 1605 0.000603 - 1607 1606 9.237942 - 1607 1607 15.615816 - 1607 1608 -0.000010 - 1607 1609 -1.468191 - 1607 1610 -2.481830 - 1607 1653 -0.000009 - 1607 1654 -1.300302 - 1607 1655 -2.198030 - 1607 2709 -0.000013 - 1607 2710 -2.015473 - 1607 2711 -3.406955 - 1608 504 -0.000990 - 1608 1560 -0.147647 - 1608 1561 29.278995 - 1608 1562 49.493185 - 1608 1605 -0.154085 - 1608 1606 11.851465 - 1608 1607 20.033716 - 1608 1608 259.338620 - 1608 1609 -198.141940 - 1608 1610 -334.938880 - 1608 1611 -0.001029 - 1608 1656 -0.000959 - 1608 2712 -0.005064 - 1608 2713 5.612831 - 1608 2714 9.487922 - 1609 1562 -8.017450 - 1609 1607 -3.245201 - 1609 1609 -49.379196 - 1609 1610 51.999266 - 1609 2714 -1.536903 - 1610 504 -0.000010 - 1610 505 -1.525749 - 1610 506 -2.579124 - 1610 1560 -0.000010 - 1610 1561 -1.573049 - 1610 1562 -2.659081 - 1610 1605 -0.000010 - 1610 1606 -1.468191 - 1610 1607 -2.481830 - 1610 1608 0.000669 - 1610 1609 9.447918 - 1610 1610 15.970750 - 1610 1611 -0.000011 - 1610 1612 -1.585554 - 1610 1613 -2.680218 - 1610 1656 -0.000010 - 1610 1657 -1.479075 - 1610 1658 -2.500226 - 1610 2712 -0.000012 - 1610 2713 -1.810762 - 1610 2714 -3.060910 - 1611 507 -0.000965 - 1611 1563 -0.205907 - 1611 1564 34.093072 - 1611 1565 57.630928 - 1611 1608 -0.102668 - 1611 1609 7.999219 - 1611 1610 13.521870 - 1611 1611 270.219550 - 1611 1612 -213.050040 - 1611 1613 -360.139790 - 1611 1614 -0.043789 - 1611 1615 5.761893 - 1611 1616 9.739896 - 1611 1659 -0.001064 - 1611 2715 -0.024425 - 1611 2716 7.504940 - 1611 2717 12.686351 - 1612 1565 -9.335633 - 1612 1610 -2.190326 - 1612 1612 -51.438365 - 1612 1613 55.982322 - 1612 1616 -1.577702 - 1612 2717 -2.054981 - 1613 507 -0.000010 - 1613 508 -1.461315 - 1613 509 -2.470208 - 1613 1563 -0.000010 - 1613 1564 -1.609145 - 1613 1565 -2.720099 - 1613 1608 -0.000011 - 1613 1609 -1.585554 - 1613 1610 -2.680218 - 1613 1611 0.000696 - 1613 1612 9.624833 - 1613 1613 16.269814 - 1613 1614 -0.000011 - 1613 1615 -1.618660 - 1613 1616 -2.736180 - 1613 1659 -0.000011 - 1613 1660 -1.611363 - 1613 1661 -2.723848 - 1613 2715 -0.000012 - 1613 2716 -1.733026 - 1613 2717 -2.929508 - 1614 510 -0.000956 - 1614 1566 -0.186758 - 1614 1567 30.653316 - 1614 1568 51.816332 - 1614 1611 -0.001056 - 1614 1614 270.091410 - 1614 1615 -204.581470 - 1614 1616 -345.824250 - 1614 1617 -0.098287 - 1614 1618 10.345519 - 1614 1619 17.488065 - 1614 1662 -0.001050 - 1614 2718 -0.007591 - 1614 2719 5.863270 - 1614 2720 9.911268 - 1615 1568 -8.393759 - 1615 1615 -51.433248 - 1615 1616 53.676628 - 1615 1619 -2.832817 - 1615 2720 -1.605473 - 1616 510 -0.000010 - 1616 511 -1.465199 - 1616 512 -2.476771 - 1616 1566 -0.000010 - 1616 1567 -1.608216 - 1616 1568 -2.718527 - 1616 1611 -0.000011 - 1616 1612 -1.618660 - 1616 1613 -2.736180 - 1616 1614 0.000696 - 1616 1615 9.664438 - 1616 1616 16.336756 - 1616 1617 -0.000011 - 1616 1618 -1.618482 - 1616 1619 -2.735883 - 1616 1662 -0.000011 - 1616 1663 -1.610457 - 1616 1664 -2.722314 - 1616 2718 -0.000012 - 1616 2719 -1.737656 - 1616 2720 -2.937332 - 1617 513 -0.008014 - 1617 1569 -0.165253 - 1617 1570 26.218808 - 1617 1571 44.320273 - 1617 1614 -0.001032 - 1617 1617 270.038210 - 1617 1618 -197.231580 - 1617 1619 -333.400250 - 1617 1620 -0.121812 - 1617 1621 9.546213 - 1617 1622 16.136907 - 1617 1665 -0.001026 - 1617 2721 -0.001110 - 1617 2722 3.745776 - 1617 2723 6.331860 - 1618 1571 -7.179526 - 1618 1618 -51.426699 - 1618 1619 51.680985 - 1618 1622 -2.613987 - 1618 2723 -1.025676 - 1619 513 -0.000010 - 1619 514 -1.467869 - 1619 515 -2.481286 - 1619 1569 -0.000010 - 1619 1570 -1.608543 - 1619 1571 -2.719082 - 1619 1614 -0.000011 - 1619 1615 -1.618482 - 1619 1616 -2.735883 - 1619 1617 0.000695 - 1619 1618 9.669033 - 1619 1619 16.344532 - 1619 1620 -0.000011 - 1619 1621 -1.618040 - 1619 1622 -2.735132 - 1619 1665 -0.000011 - 1619 1666 -1.609487 - 1619 1667 -2.720677 - 1619 2721 -0.000012 - 1619 2722 -1.740848 - 1619 2723 -2.942729 - 1620 516 -0.030580 - 1620 1572 -0.137963 - 1620 1573 23.535825 - 1620 1574 39.784937 - 1620 1617 -0.001010 - 1620 1620 270.033690 - 1620 1621 -189.826290 - 1620 1622 -320.882120 - 1620 1623 -0.100110 - 1620 1624 6.227434 - 1620 1625 10.526854 - 1620 1668 -0.001005 - 1620 2724 -0.001087 - 1620 2725 2.339398 - 1620 2726 3.954516 - 1621 1574 -6.444904 - 1621 1621 -51.424648 - 1621 1622 49.659240 - 1621 1625 -1.705239 - 1621 2726 -0.640586 - 1622 516 -0.000010 - 1622 517 -1.468165 - 1622 518 -2.481784 - 1622 1572 -0.000010 - 1622 1573 -1.608533 - 1622 1574 -2.719063 - 1622 1617 -0.000011 - 1622 1618 -1.618040 - 1622 1619 -2.735132 - 1622 1620 0.000693 - 1622 1621 9.636586 - 1622 1622 16.289676 - 1622 1623 -0.000010 - 1622 1624 -1.584801 - 1622 1625 -2.678947 - 1622 1668 -0.000010 - 1622 1669 -1.609911 - 1622 1670 -2.721391 - 1622 2724 -0.000011 - 1622 2725 -1.741374 - 1622 2726 -2.943616 - 1623 519 -0.039998 - 1623 1575 -0.152912 - 1623 1576 23.550095 - 1623 1577 39.809080 - 1623 1620 -0.000975 - 1623 1623 259.203030 - 1623 1624 -176.664890 - 1623 1625 -298.634340 - 1623 1671 -0.000961 - 1623 2727 -0.001116 - 1623 2728 1.729024 - 1623 2729 2.922742 - 1624 1577 -6.448884 - 1624 1624 -49.368903 - 1624 1625 46.145579 - 1624 2729 -0.473454 - 1625 519 -0.000010 - 1625 520 -1.529225 - 1625 521 -2.585002 - 1625 1575 -0.000009 - 1625 1576 -1.528770 - 1625 1577 -2.584233 - 1625 1620 -0.000010 - 1625 1621 -1.584801 - 1625 1622 -2.678947 - 1625 1623 0.000657 - 1625 1624 8.023902 - 1625 1625 13.563604 - 1625 1671 -0.000010 - 1625 1672 -1.562102 - 1625 1673 -2.640576 - 1625 2727 -0.000012 - 1625 2728 -1.813471 - 1625 2729 -3.065492 - 1626 1626 1.000000 - 1627 1627 1.000000 - 1628 1628 1.000000 - 1629 1629 1.000000 - 1630 1630 1.000000 - 1631 1631 1.000000 - 1632 1632 1.000000 - 1633 1633 1.000000 - 1634 1634 1.000000 - 1635 1635 1.000000 - 1636 1636 1.000000 - 1637 1637 1.000000 - 1638 1638 1.000000 - 1639 1639 1.000000 - 1640 1640 1.000000 - 1641 1641 1.000000 - 1642 1642 1.000000 - 1643 1643 1.000000 - 1644 540 -0.057152 - 1644 1596 -0.000567 - 1644 1597 6.011660 - 1644 1598 10.162103 - 1644 1644 145.784670 - 1644 1645 -91.799685 - 1644 1646 -155.178110 - 1644 1647 -0.000560 - 1644 1692 -0.000500 - 1644 2748 -0.001949 - 1644 2749 0.631870 - 1644 2750 1.068112 - 1645 1598 -1.646190 - 1645 1645 -27.783778 - 1645 1646 23.849486 - 1645 2750 -0.173024 - 1646 540 -0.000017 - 1646 541 -2.699288 - 1646 542 -4.562874 - 1646 1596 -0.000006 - 1646 1597 -0.931823 - 1646 1598 -1.575153 - 1646 1644 0.000395 - 1646 1645 8.578646 - 1646 1646 14.501334 - 1646 1647 -0.000006 - 1646 1648 -0.920194 - 1646 1649 -1.555496 - 1646 1692 -0.000005 - 1646 1693 -0.821943 - 1646 1694 -1.389411 - 1646 2748 -0.000020 - 1646 2749 -3.202279 - 1646 2750 -5.413128 - 1647 543 -0.049122 - 1647 1599 -0.014988 - 1647 1600 8.714260 - 1647 1601 14.730585 - 1647 1644 -0.052525 - 1647 1645 4.257979 - 1647 1646 7.197684 - 1647 1647 162.026220 - 1647 1648 -108.770240 - 1647 1649 -183.865220 - 1647 1650 -0.000638 - 1647 1695 -0.000569 - 1647 2751 -0.001786 - 1647 2752 1.169802 - 1647 2753 1.977433 - 1648 1601 -2.386236 - 1648 1646 -1.165957 - 1648 1648 -30.872090 - 1648 1649 28.349994 - 1648 2753 -0.320322 - 1649 543 -0.000016 - 1649 544 -2.431426 - 1649 545 -4.110083 - 1649 1599 -0.000007 - 1649 1600 -1.042570 - 1649 1601 -1.762361 - 1649 1644 -0.000006 - 1649 1645 -0.920194 - 1649 1646 -1.555496 - 1649 1647 0.000438 - 1649 1648 9.232453 - 1649 1649 15.606538 - 1649 1650 -0.000007 - 1649 1651 -1.031303 - 1649 1652 -1.743314 - 1649 1695 -0.000006 - 1649 1696 -0.918639 - 1649 1697 -1.552867 - 1649 2751 -0.000019 - 1649 2752 -2.884855 - 1649 2753 -4.876560 - 1650 546 -0.026226 - 1650 1602 -0.042673 - 1650 1603 13.170317 - 1650 1604 22.263089 - 1650 1647 -0.106835 - 1650 1648 8.840541 - 1650 1649 14.944051 - 1650 1650 183.689700 - 1650 1651 -131.930410 - 1650 1652 -223.015010 - 1650 1653 -0.000741 - 1650 1698 -0.000658 - 1650 2754 -0.001630 - 1650 2755 2.687538 - 1650 2756 4.543011 - 1651 1604 -3.606397 - 1651 1649 -2.420769 - 1651 1651 -34.991172 - 1651 1652 34.492949 - 1651 2756 -0.735904 - 1652 546 -0.000014 - 1652 547 -2.150194 - 1652 548 -3.634685 - 1652 1602 -0.000007 - 1652 1603 -1.156712 - 1652 1604 -1.955305 - 1652 1647 -0.000007 - 1652 1648 -1.031303 - 1652 1649 -1.743314 - 1652 1650 0.000489 - 1652 1651 9.085569 - 1652 1652 15.358235 - 1652 1653 -0.000008 - 1652 1654 -1.161215 - 1652 1655 -1.962916 - 1652 1698 -0.000007 - 1652 1699 -1.030072 - 1652 1700 -1.741232 - 1652 2754 -0.000017 - 1652 2755 -2.552144 - 1652 2756 -4.314142 - 1653 549 -0.001284 - 1653 1605 -0.136014 - 1653 1606 20.530332 - 1653 1607 34.704472 - 1653 1650 -0.190266 - 1653 1651 14.042325 - 1653 1652 23.737128 - 1653 1653 205.302170 - 1653 1654 -160.669370 - 1653 1655 -271.595500 - 1653 1656 -0.000879 - 1653 1701 -0.000795 - 1653 2757 -0.011397 - 1653 2758 6.201041 - 1653 2759 10.482240 - 1654 1607 -5.621672 - 1654 1652 -3.845074 - 1654 1654 -39.109356 - 1654 1655 42.164769 - 1654 2759 -1.697934 - 1655 549 -0.000013 - 1655 550 -1.927240 - 1655 551 -3.257807 - 1655 1605 -0.000009 - 1655 1606 -1.300302 - 1655 1607 -2.198030 - 1655 1650 -0.000008 - 1655 1651 -1.161215 - 1655 1652 -1.962916 - 1655 1653 0.000543 - 1655 1654 9.192178 - 1655 1655 15.538456 - 1655 1656 -0.000009 - 1655 1657 -1.320021 - 1655 1658 -2.231364 - 1655 1701 -0.000008 - 1655 1702 -1.192726 - 1655 1703 -2.016184 - 1655 2757 -0.000016 - 1655 2758 -2.286282 - 1655 2759 -3.864731 - 1656 552 -0.001161 - 1656 1608 -0.212424 - 1656 1609 32.370162 - 1656 1610 54.718480 - 1656 1653 -0.190020 - 1656 1654 18.701559 - 1656 1655 31.613115 - 1656 1656 237.946100 - 1656 1657 -201.708990 - 1656 1658 -340.968640 - 1656 1659 -0.001058 - 1656 1704 -0.000957 - 1656 2760 -0.068802 - 1656 2761 11.863207 - 1656 2762 20.053552 - 1657 1610 -8.863517 - 1657 1655 -5.120722 - 1657 1657 -45.295405 - 1657 1658 53.084456 - 1657 2762 -3.248234 - 1658 552 -0.000012 - 1658 553 -1.662597 - 1658 554 -2.810452 - 1658 1608 -0.000010 - 1658 1609 -1.479075 - 1658 1610 -2.500226 - 1658 1653 -0.000009 - 1658 1654 -1.320021 - 1658 1655 -2.231364 - 1658 1656 0.000622 - 1658 1657 9.325863 - 1658 1658 15.764430 - 1658 1659 -0.000011 - 1658 1660 -1.515041 - 1658 1661 -2.561024 - 1658 1704 -0.000010 - 1658 1705 -1.370786 - 1658 1706 -2.317174 - 1658 2760 -0.000014 - 1658 2761 -1.973253 - 1658 2762 -3.335585 - 1659 555 -0.001060 - 1659 1611 -0.364152 - 1659 1612 45.035434 - 1659 1613 76.127896 - 1659 1656 -0.222899 - 1659 1657 16.827796 - 1659 1658 28.445687 - 1659 1659 270.559670 - 1659 1660 -252.969390 - 1659 1661 -427.619450 - 1659 1662 -0.184469 - 1659 1663 16.483139 - 1659 1664 27.863080 - 1659 1707 -0.001144 - 1659 2763 -0.119432 - 1659 2764 16.863026 - 1659 2765 28.505260 - 1660 1613 -12.331347 - 1660 1658 -4.607510 - 1660 1660 -51.474670 - 1660 1661 66.818708 - 1660 1664 -4.513131 - 1660 2765 -4.617140 - 1661 555 -0.000011 - 1661 556 -1.465065 - 1661 557 -2.476546 - 1661 1611 -0.000011 - 1661 1612 -1.611363 - 1661 1613 -2.723848 - 1661 1656 -0.000011 - 1661 1657 -1.515041 - 1661 1658 -2.561024 - 1661 1659 0.000701 - 1661 1660 9.534801 - 1661 1661 16.117624 - 1661 1662 -0.000012 - 1661 1663 -1.619186 - 1661 1664 -2.737070 - 1661 1707 -0.000012 - 1661 1708 -1.580477 - 1661 1709 -2.671639 - 1661 2763 -0.000013 - 1661 2764 -1.737883 - 1661 2765 -2.937718 - 1662 558 -0.001025 - 1662 1614 -0.224082 - 1662 1615 34.348042 - 1662 1616 58.061886 - 1662 1659 -0.001134 - 1662 1662 270.284620 - 1662 1663 -221.801810 - 1662 1664 -374.933540 - 1662 1665 -0.198380 - 1662 1666 18.634428 - 1662 1667 31.499637 - 1662 1710 -0.001131 - 1662 2766 -0.060944 - 1662 2767 11.099187 - 1662 2768 18.762053 - 1663 1616 -9.405063 - 1663 1663 -51.467914 - 1663 1664 58.303482 - 1663 1667 -5.102299 - 1663 2768 -3.039035 - 1664 558 -0.000011 - 1664 559 -1.462541 - 1664 560 -2.472278 - 1664 1614 -0.000011 - 1664 1615 -1.610457 - 1664 1616 -2.722314 - 1664 1659 -0.000012 - 1664 1660 -1.619186 - 1664 1661 -2.737070 - 1664 1662 0.000700 - 1664 1663 9.665824 - 1664 1664 16.339100 - 1664 1665 -0.000011 - 1664 1666 -1.618991 - 1664 1667 -2.736742 - 1664 1710 -0.000012 - 1664 1711 -1.614432 - 1664 1712 -2.729034 - 1664 2766 -0.000012 - 1664 2767 -1.734435 - 1664 2768 -2.931888 - 1665 561 -0.000986 - 1665 1617 -0.124469 - 1665 1618 26.089067 - 1665 1619 44.100959 - 1665 1662 -0.001092 - 1665 1665 270.112030 - 1665 1666 -203.851590 - 1665 1667 -344.590730 - 1665 1668 -0.166756 - 1665 1669 13.966226 - 1665 1670 23.608493 - 1665 1713 -0.001089 - 1665 2769 -0.009736 - 1665 2770 6.060412 - 1665 2771 10.244521 - 1666 1619 -7.143726 - 1666 1666 -51.459003 - 1666 1667 53.412258 - 1666 1670 -3.824174 - 1666 2771 -1.659417 - 1667 561 -0.000010 - 1667 562 -1.461775 - 1667 563 -2.470984 - 1667 1617 -0.000011 - 1667 1618 -1.609487 - 1667 1619 -2.720677 - 1667 1662 -0.000011 - 1667 1663 -1.618991 - 1667 1664 -2.736742 - 1667 1665 0.000698 - 1667 1666 9.662573 - 1667 1667 16.333612 - 1667 1668 -0.000011 - 1667 1669 -1.618561 - 1667 1670 -2.736014 - 1667 1713 -0.000011 - 1667 1714 -1.614388 - 1667 1715 -2.728961 - 1667 2769 -0.000012 - 1667 2770 -1.733594 - 1667 2771 -2.930466 - 1668 564 -0.014068 - 1668 1620 -0.079817 - 1668 1621 21.701004 - 1668 1622 36.683350 - 1668 1665 -0.001060 - 1668 1668 270.043890 - 1668 1669 -191.204140 - 1668 1670 -323.211260 - 1668 1671 -0.120389 - 1668 1672 8.420229 - 1668 1673 14.233556 - 1668 1716 -0.001057 - 1668 2772 -0.001135 - 1668 2773 3.368183 - 1668 2774 5.693572 - 1669 1622 -5.942265 - 1669 1669 -51.454603 - 1669 1670 49.961416 - 1669 1673 -2.305621 - 1669 2774 -0.922266 - 1670 564 -0.000010 - 1670 565 -1.461161 - 1670 566 -2.469944 - 1670 1620 -0.000010 - 1670 1621 -1.609911 - 1670 1622 -2.721391 - 1670 1665 -0.000011 - 1670 1666 -1.618561 - 1670 1667 -2.736014 - 1670 1668 0.000697 - 1670 1669 9.645895 - 1670 1670 16.305411 - 1670 1671 -0.000011 - 1670 1672 -1.602008 - 1670 1673 -2.708035 - 1670 1716 -0.000011 - 1670 1717 -1.615505 - 1670 1718 -2.730848 - 1670 2772 -0.000012 - 1670 2773 -1.732973 - 1670 2774 -2.929415 - 1671 567 -0.031166 - 1671 1623 -0.058725 - 1671 1624 18.983067 - 1671 1625 32.088976 - 1671 1668 -0.001030 - 1671 1671 264.572260 - 1671 1672 -175.828060 - 1671 1673 -297.219750 - 1671 1719 -0.001028 - 1671 2775 -0.001136 - 1671 2776 2.294627 - 1671 2777 3.878837 - 1672 1625 -5.198076 - 1672 1672 -50.425341 - 1672 1673 45.800144 - 1672 2777 -0.628315 - 1673 567 -0.000010 - 1673 568 -1.490128 - 1673 569 -2.518913 - 1673 1623 -0.000010 - 1673 1624 -1.562102 - 1673 1625 -2.640576 - 1673 1668 -0.000011 - 1673 1669 -1.602008 - 1673 1670 -2.708035 - 1673 1671 0.000672 - 1673 1672 8.026125 - 1673 1673 13.567363 - 1673 1719 -0.000011 - 1673 1720 -1.599065 - 1673 1721 -2.703060 - 1673 2775 -0.000012 - 1673 2776 -1.767162 - 1673 2777 -2.987210 - 1674 1674 1.000000 - 1675 1675 1.000000 - 1676 1676 1.000000 - 1677 1677 1.000000 - 1678 1678 1.000000 - 1679 1679 1.000000 - 1680 1680 1.000000 - 1681 1681 1.000000 - 1682 1682 1.000000 - 1683 1683 1.000000 - 1684 1684 1.000000 - 1685 1685 1.000000 - 1686 1686 1.000000 - 1687 1687 1.000000 - 1688 1688 1.000000 - 1689 585 -0.062688 - 1689 1689 107.974130 - 1689 1690 -64.387337 - 1689 1691 -108.840360 - 1689 1692 -0.000431 - 1689 1737 -0.022899 - 1689 1738 0.967739 - 1689 1739 1.635867 - 1689 2793 -0.002637 - 1689 2794 0.308946 - 1689 2795 0.522243 - 1690 1690 -18.888764 - 1690 1691 19.535090 - 1690 1739 -0.264995 - 1690 2795 -0.084598 - 1691 585 -0.000023 - 1691 586 -3.642522 - 1691 587 -6.157318 - 1691 1689 0.000312 - 1691 1690 9.318648 - 1691 1691 15.752243 - 1691 1692 -0.000005 - 1691 1693 -0.706526 - 1691 1694 -1.194311 - 1691 1737 -0.000004 - 1691 1738 -0.647479 - 1691 1739 -1.094499 - 1691 2793 -0.000028 - 1691 2794 -4.319810 - 1691 2795 -7.302207 - 1692 588 -0.058962 - 1692 1644 -0.001637 - 1692 1645 2.853943 - 1692 1646 4.824304 - 1692 1689 -0.013480 - 1692 1690 1.882557 - 1692 1691 3.182274 - 1692 1692 129.594510 - 1692 1693 -80.993831 - 1692 1694 -136.911910 - 1692 1695 -0.000507 - 1692 1740 -0.023565 - 1692 2796 -0.002221 - 1692 2797 0.534171 - 1692 2798 0.902962 - 1693 1646 -0.781492 - 1693 1691 -0.515497 - 1693 1693 -24.701508 - 1693 1694 21.021639 - 1693 2798 -0.146270 - 1694 588 -0.000020 - 1694 589 -3.036994 - 1694 590 -5.133732 - 1694 1644 -0.000005 - 1694 1645 -0.821943 - 1694 1646 -1.389411 - 1694 1689 -0.000005 - 1694 1690 -0.706526 - 1694 1691 -1.194311 - 1694 1692 0.000365 - 1694 1693 9.700159 - 1694 1694 16.397142 - 1694 1695 -0.000005 - 1694 1696 -0.822973 - 1694 1697 -1.391152 - 1694 1740 -0.000005 - 1694 1741 -0.705969 - 1694 1742 -1.193369 - 1694 2796 -0.000023 - 1694 2797 -3.602981 - 1694 2798 -6.090476 - 1695 591 -0.048563 - 1695 1647 -0.012933 - 1695 1648 5.165937 - 1695 1649 8.732500 - 1695 1692 -0.056914 - 1695 1693 5.578304 - 1695 1694 9.429561 - 1695 1695 145.821820 - 1695 1696 -97.152630 - 1695 1697 -164.226810 - 1695 1698 -0.000581 - 1695 1743 -0.022917 - 1695 2799 -0.002025 - 1695 2800 1.229508 - 1695 2801 2.078360 - 1696 1649 -1.414567 - 1696 1694 -1.527488 - 1696 1696 -27.792393 - 1696 1697 25.293396 - 1696 2801 -0.336667 - 1697 591 -0.000018 - 1697 592 -2.701541 - 1697 593 -4.566685 - 1697 1647 -0.000006 - 1697 1648 -0.918639 - 1697 1649 -1.552867 - 1697 1692 -0.000005 - 1697 1693 -0.822973 - 1697 1694 -1.391152 - 1697 1695 0.000403 - 1697 1696 9.393580 - 1697 1697 15.878907 - 1697 1698 -0.000006 - 1697 1699 -0.920354 - 1697 1700 -1.555767 - 1697 1743 -0.000005 - 1697 1744 -0.821905 - 1697 1745 -1.389347 - 1697 2799 -0.000021 - 1697 2800 -3.205047 - 1697 2801 -5.417811 - 1698 594 -0.014615 - 1698 1650 -0.030180 - 1698 1651 8.479527 - 1698 1652 14.333783 - 1698 1695 -0.109325 - 1698 1696 10.289578 - 1698 1697 17.393503 - 1698 1698 162.062760 - 1698 1699 -116.843410 - 1698 1700 -197.511970 - 1698 1701 -0.000696 - 1698 1746 -0.018187 - 1698 2802 -0.001895 - 1698 2803 3.429965 - 1698 2804 5.798008 - 1699 1652 -2.321867 - 1699 1697 -2.817515 - 1699 1699 -30.885659 - 1699 1700 30.525937 - 1699 2804 -0.939179 - 1700 594 -0.000017 - 1700 595 -2.430966 - 1700 596 -4.109303 - 1700 1650 -0.000007 - 1700 1651 -1.030072 - 1700 1652 -1.741232 - 1700 1695 -0.000006 - 1700 1696 -0.920354 - 1700 1697 -1.555767 - 1700 1698 0.000442 - 1700 1699 9.265686 - 1700 1700 15.662705 - 1700 1701 -0.000007 - 1700 1702 -1.059805 - 1700 1703 -1.791493 - 1700 1746 -0.000006 - 1700 1747 -0.936829 - 1700 1748 -1.583616 - 1700 2802 -0.000020 - 1700 2803 -2.884187 - 1700 2804 -4.875426 - 1701 597 -0.001406 - 1701 1653 -0.057101 - 1701 1654 14.512037 - 1701 1655 24.531147 - 1701 1698 -0.193282 - 1701 1699 16.984846 - 1701 1700 28.711166 - 1701 1701 194.590370 - 1701 1702 -153.834730 - 1701 1703 -260.042220 - 1701 1704 -0.000861 - 1701 1749 -0.047830 - 1701 2805 -0.037830 - 1701 2806 8.772413 - 1701 2807 14.828886 - 1702 1655 -3.973579 - 1702 1700 -4.650707 - 1702 1702 -37.069915 - 1702 1703 40.341763 - 1702 2807 -2.401949 - 1703 597 -0.000015 - 1703 598 -2.026727 - 1703 599 -3.425978 - 1703 1653 -0.000008 - 1703 1654 -1.192726 - 1703 1655 -2.016184 - 1703 1698 -0.000007 - 1703 1699 -1.059805 - 1703 1700 -1.791493 - 1703 1701 0.000519 - 1703 1702 9.025244 - 1703 1703 15.256271 - 1703 1704 -0.000009 - 1703 1705 -1.241608 - 1703 1706 -2.098814 - 1703 1749 -0.000008 - 1703 1750 -1.095437 - 1703 1751 -1.851726 - 1703 2805 -0.000017 - 1703 2806 -2.404773 - 1703 2807 -4.065028 - 1704 600 -0.001324 - 1704 1656 -0.195441 - 1704 1657 27.679249 - 1704 1658 46.788972 - 1704 1701 -0.296250 - 1704 1702 27.552567 - 1704 1703 46.574860 - 1704 1704 222.000700 - 1704 1705 -212.213850 - 1704 1706 -358.726050 - 1704 1707 -0.001066 - 1704 1752 -0.131401 - 1704 1753 7.247402 - 1704 1754 12.251000 - 1704 2808 -0.155675 - 1704 2809 20.388768 - 1704 2810 34.465149 - 1705 1658 -7.578676 - 1705 1703 -7.544026 - 1705 1705 -42.232058 - 1705 1706 56.042433 - 1705 1754 -1.984297 - 1705 2810 -5.582379 - 1706 600 -0.000014 - 1706 601 -1.780177 - 1706 602 -3.009209 - 1706 1656 -0.000010 - 1706 1657 -1.370786 - 1706 1658 -2.317174 - 1706 1701 -0.000009 - 1706 1702 -1.241608 - 1706 1703 -2.098814 - 1706 1704 0.000587 - 1706 1705 9.199973 - 1706 1706 15.551625 - 1706 1707 -0.000011 - 1706 1708 -1.432539 - 1706 1709 -2.421562 - 1706 1752 -0.000010 - 1706 1753 -1.257786 - 1706 1754 -2.126160 - 1706 2808 -0.000016 - 1706 2809 -2.112323 - 1706 2810 -3.570668 - 1707 603 -0.001233 - 1707 1659 -0.499826 - 1707 1660 60.983824 - 1707 1661 103.087060 - 1707 1704 -0.459480 - 1707 1705 42.257388 - 1707 1706 71.431844 - 1707 1707 261.107860 - 1707 1708 -371.655010 - 1707 1709 -628.245610 - 1707 1710 -0.479119 - 1707 1711 47.530409 - 1707 1712 80.345359 - 1707 1755 -0.422697 - 1707 1756 35.046687 - 1707 1757 59.242920 - 1707 2811 -0.299141 - 1707 2812 34.530089 - 1707 2813 58.369661 - 1708 1661 -16.697151 - 1708 1706 -11.569677 - 1708 1708 -49.462685 - 1708 1709 99.286469 - 1708 1712 -13.013393 - 1708 1757 -9.595315 - 1708 2813 -9.453785 - 1709 603 -0.000013 - 1709 604 -1.520875 - 1709 605 -2.570887 - 1709 1659 -0.000012 - 1709 1660 -1.580477 - 1709 1661 -2.671639 - 1709 1704 -0.000011 - 1709 1705 -1.432539 - 1709 1706 -2.421562 - 1709 1707 0.000684 - 1709 1708 9.820564 - 1709 1709 16.600677 - 1709 1710 -0.000012 - 1709 1711 -1.586819 - 1709 1712 -2.682358 - 1709 1755 -0.000012 - 1709 1756 -1.501972 - 1709 1757 -2.538933 - 1709 2811 -0.000014 - 1709 2812 -1.803479 - 1709 2813 -3.048600 - 1710 606 -0.001085 - 1710 1662 -0.206989 - 1710 1663 30.368874 - 1710 1664 51.335512 - 1710 1707 -0.001179 - 1710 1710 270.516630 - 1710 1711 -239.664530 - 1710 1712 -405.128690 - 1710 1713 -0.291117 - 1710 1714 28.543428 - 1710 1715 48.249810 - 1710 1758 -0.133422 - 1710 1759 6.008596 - 1710 1760 10.156924 - 1710 2814 -0.120910 - 1710 2815 16.989522 - 1710 2816 28.719068 - 1711 1664 -8.315086 - 1711 1711 -51.497262 - 1711 1712 63.118938 - 1711 1715 -7.815253 - 1711 1760 -1.645113 - 1711 2816 -4.651683 - 1712 606 -0.000011 - 1712 607 -1.459765 - 1712 608 -2.467585 - 1712 1662 -0.000012 - 1712 1663 -1.614432 - 1712 1664 -2.729034 - 1712 1707 -0.000012 - 1712 1708 -1.586819 - 1712 1709 -2.682358 - 1712 1710 0.000704 - 1712 1711 9.634145 - 1712 1712 16.285550 - 1712 1713 -0.000012 - 1712 1714 -1.619510 - 1712 1715 -2.737619 - 1712 1758 -0.000012 - 1712 1759 -1.616786 - 1712 1760 -2.733014 - 1712 2814 -0.000013 - 1712 2815 -1.731037 - 1712 2816 -2.926143 - 1713 609 -0.001027 - 1713 1665 -0.114556 - 1713 1666 20.494516 - 1713 1667 34.643930 - 1713 1710 -0.001139 - 1713 1713 270.107170 - 1713 1714 -203.634730 - 1713 1715 -344.224150 - 1713 1716 -0.193586 - 1713 1717 17.385177 - 1713 1718 29.387887 - 1713 1761 -0.015265 - 1713 2817 -0.029539 - 1713 2818 8.001403 - 1713 2819 13.525571 - 1714 1667 -5.611610 - 1714 1714 -51.482107 - 1714 1715 53.294295 - 1714 1718 -4.760219 - 1714 2819 -2.190825 - 1715 609 -0.000011 - 1715 610 -1.460318 - 1715 611 -2.468522 - 1715 1665 -0.000011 - 1715 1666 -1.614388 - 1715 1667 -2.728961 - 1715 1710 -0.000012 - 1715 1711 -1.619510 - 1715 1712 -2.737619 - 1715 1713 0.000701 - 1715 1714 9.667581 - 1715 1715 16.342077 - 1715 1716 -0.000011 - 1715 1717 -1.619173 - 1715 1718 -2.737049 - 1715 1761 -0.000012 - 1715 1762 -1.616562 - 1715 1763 -2.732636 - 1715 2817 -0.000013 - 1715 2818 -1.731841 - 1715 2819 -2.927504 - 1716 612 -0.000990 - 1716 1668 -0.087899 - 1716 1669 17.101421 - 1716 1670 28.908223 - 1716 1713 -0.001099 - 1716 1716 270.029730 - 1716 1717 -192.459250 - 1716 1718 -325.332920 - 1716 1719 -0.161407 - 1716 1720 13.440870 - 1716 1721 22.720447 - 1716 1764 -0.001097 - 1716 2820 -0.001175 - 1716 2821 4.156914 - 1716 2822 7.026842 - 1717 1670 -4.682640 - 1717 1717 -51.474884 - 1717 1718 50.253828 - 1717 1721 -3.680304 - 1717 2822 -1.138207 - 1718 612 -0.000010 - 1718 613 -1.459079 - 1718 614 -2.466425 - 1718 1668 -0.000011 - 1718 1669 -1.615505 - 1718 1670 -2.730848 - 1718 1713 -0.000011 - 1718 1714 -1.619173 - 1718 1715 -2.737049 - 1718 1716 0.000699 - 1718 1717 9.665880 - 1718 1718 16.339196 - 1718 1719 -0.000011 - 1718 1720 -1.619003 - 1718 1721 -2.736763 - 1718 1764 -0.000011 - 1718 1765 -1.616916 - 1718 1766 -2.733233 - 1718 2820 -0.000012 - 1718 2821 -1.730419 - 1718 2822 -2.925098 - 1719 615 -0.025510 - 1719 1671 -0.047733 - 1719 1672 12.055848 - 1719 1673 20.379205 - 1719 1716 -0.001068 - 1719 1719 269.939570 - 1719 1720 -172.426060 - 1719 1721 -291.469000 - 1719 2823 -0.001142 - 1719 2824 2.660689 - 1719 2825 4.497629 - 1720 1673 -3.301123 - 1720 1720 -51.470763 - 1720 1721 44.779759 - 1720 2825 -0.728538 - 1721 615 -0.000010 - 1721 616 -1.460268 - 1721 617 -2.468436 - 1721 1671 -0.000011 - 1721 1672 -1.599065 - 1721 1673 -2.703060 - 1721 1716 -0.000011 - 1721 1717 -1.619003 - 1721 1718 -2.736763 - 1721 1719 0.000675 - 1721 1720 6.415786 - 1721 1721 10.845244 - 1721 2823 -0.000012 - 1721 2824 -1.731666 - 1721 2825 -2.927208 - 1722 1722 1.000000 - 1723 1723 1.000000 - 1724 1724 1.000000 - 1725 1725 1.000000 - 1726 1726 1.000000 - 1727 1727 1.000000 - 1728 1728 1.000000 - 1729 1729 1.000000 - 1730 1730 1.000000 - 1731 1731 1.000000 - 1732 1732 1.000000 - 1733 1733 1.000000 - 1734 1734 1.000000 - 1735 1735 1.000000 - 1736 1736 1.000000 - 1737 633 -0.063308 - 1737 1689 -0.000393 - 1737 1737 107.996450 - 1737 1738 -66.273133 - 1737 1739 -112.028100 - 1737 1740 -0.000393 - 1737 1785 -0.039251 - 1737 1786 2.888962 - 1737 1787 4.883501 - 1737 2841 -0.002623 - 1737 2842 0.267289 - 1737 2843 0.451825 - 1738 1738 -20.584062 - 1738 1739 17.184991 - 1738 1787 -0.791091 - 1738 2843 -0.073192 - 1739 633 -0.000023 - 1739 634 -3.643639 - 1739 635 -6.159207 - 1739 1689 -0.000004 - 1739 1690 -0.647479 - 1739 1691 -1.094499 - 1739 1737 0.000315 - 1739 1738 9.910028 - 1739 1739 16.751912 - 1739 1740 -0.000004 - 1739 1741 -0.647486 - 1739 1742 -1.094510 - 1739 1785 -0.000004 - 1739 1786 -0.647560 - 1739 1787 -1.094636 - 1739 2841 -0.000027 - 1739 2842 -4.321552 - 1739 2843 -7.305152 - 1740 636 -0.060974 - 1740 1692 -0.000436 - 1740 1693 0.184695 - 1740 1694 0.312209 - 1740 1737 -0.013641 - 1740 1738 2.862296 - 1740 1739 4.838425 - 1740 1740 108.031190 - 1740 1741 -68.419519 - 1740 1742 -115.656280 - 1740 1743 -0.000436 - 1740 1788 -0.034935 - 1740 1789 1.840359 - 1740 1790 3.110940 - 1740 2844 -0.002666 - 1740 2845 0.430566 - 1740 2846 0.727828 - 1741 1694 -0.050574 - 1741 1739 -0.783780 - 1741 1741 -20.587619 - 1741 1742 17.763824 - 1741 1790 -0.503942 - 1741 2846 -0.117900 - 1742 636 -0.000023 - 1742 637 -3.643757 - 1742 638 -6.159404 - 1742 1692 -0.000005 - 1742 1693 -0.705969 - 1742 1694 -1.193369 - 1742 1737 -0.000004 - 1742 1738 -0.647486 - 1742 1739 -1.094510 - 1742 1740 0.000321 - 1742 1741 10.674876 - 1742 1742 18.044799 - 1742 1743 -0.000005 - 1742 1744 -0.706592 - 1742 1745 -1.194423 - 1742 1788 -0.000004 - 1742 1789 -0.647482 - 1742 1790 -1.094502 - 1742 2844 -0.000028 - 1742 2845 -4.321276 - 1742 2846 -7.304679 - 1743 639 -0.052938 - 1743 1695 -0.000522 - 1743 1696 1.329998 - 1743 1697 2.248228 - 1743 1740 -0.052756 - 1743 1741 5.747727 - 1743 1742 9.715952 - 1743 1743 129.653910 - 1743 1744 -85.348337 - 1743 1745 -144.272830 - 1743 1746 -0.000532 - 1743 1791 -0.038165 - 1743 1792 1.590345 - 1743 1793 2.688319 - 1743 2847 -0.002289 - 1743 2848 0.954940 - 1743 2849 1.614230 - 1744 1697 -0.364183 - 1744 1742 -1.573880 - 1744 1744 -24.709362 - 1744 1745 22.194201 - 1744 1793 -0.435472 - 1744 2849 -0.261483 - 1745 639 -0.000020 - 1745 640 -3.036682 - 1745 641 -5.133207 - 1745 1695 -0.000005 - 1745 1696 -0.821905 - 1745 1697 -1.389347 - 1745 1740 -0.000005 - 1745 1741 -0.706592 - 1745 1742 -1.194423 - 1745 1743 0.000367 - 1745 1744 9.714083 - 1745 1745 16.420685 - 1745 1746 -0.000006 - 1745 1747 -0.837098 - 1745 1748 -1.415030 - 1745 1791 -0.000005 - 1745 1792 -0.706259 - 1745 1793 -1.193860 - 1745 2847 -0.000024 - 1745 2848 -3.602770 - 1745 2849 -6.090122 - 1746 642 -0.029495 - 1746 1698 -0.000620 - 1746 1699 1.708587 - 1746 1700 2.888193 - 1746 1743 -0.106537 - 1746 1744 9.530395 - 1746 1745 16.110179 - 1746 1746 151.254130 - 1746 1747 -104.446810 - 1746 1748 -176.556780 - 1746 1749 -0.000640 - 1746 1794 -0.057494 - 1746 1795 2.342793 - 1746 1796 3.960255 - 1746 2850 -0.002044 - 1746 2851 2.517673 - 1746 2852 4.255873 - 1747 1700 -0.467837 - 1747 1745 -2.609624 - 1747 1747 -28.831816 - 1747 1748 27.216494 - 1747 1796 -0.641494 - 1747 2852 -0.689375 - 1748 642 -0.000018 - 1748 643 -2.604598 - 1748 644 -4.402811 - 1748 1698 -0.000006 - 1748 1699 -0.936829 - 1748 1700 -1.583616 - 1748 1743 -0.000006 - 1748 1744 -0.837098 - 1748 1745 -1.415030 - 1748 1746 0.000417 - 1748 1747 9.293203 - 1748 1748 15.709222 - 1748 1749 -0.000007 - 1748 1750 -0.967368 - 1748 1751 -1.635238 - 1748 1794 -0.000006 - 1748 1795 -0.853975 - 1748 1796 -1.443558 - 1748 2850 -0.000021 - 1748 2851 -3.090092 - 1748 2852 -5.223489 - 1749 645 -0.001582 - 1749 1701 -0.000760 - 1749 1702 0.241644 - 1749 1703 0.408475 - 1749 1746 -0.152981 - 1749 1747 13.951809 - 1749 1748 23.584125 - 1749 1749 172.906570 - 1749 1750 -126.993460 - 1749 1751 -214.669750 - 1749 1752 -0.000771 - 1749 1797 -0.097879 - 1749 1798 5.410514 - 1749 1799 9.145932 - 1749 2853 -0.014069 - 1749 2854 6.412504 - 1749 2855 10.839696 - 1750 1703 -0.066163 - 1750 1748 -3.820199 - 1750 1750 -32.957137 - 1750 1751 33.175169 - 1750 1799 -1.481443 - 1750 2855 -1.755783 - 1751 645 -0.000017 - 1751 646 -2.280049 - 1751 647 -3.854194 - 1751 1701 -0.000008 - 1751 1702 -1.095437 - 1751 1703 -1.851726 - 1751 1746 -0.000007 - 1751 1747 -0.967368 - 1751 1748 -1.635238 - 1751 1749 0.000470 - 1751 1750 9.164349 - 1751 1751 15.491414 - 1751 1752 -0.000008 - 1751 1753 -1.111507 - 1751 1754 -1.878892 - 1751 1797 -0.000007 - 1751 1798 -1.001389 - 1751 1799 -1.692748 - 1751 2853 -0.000019 - 1751 2854 -2.704891 - 1751 2855 -4.572347 - 1752 648 -0.001442 - 1752 1704 -0.000919 - 1752 1749 -0.197633 - 1752 1750 18.014880 - 1752 1751 30.452353 - 1752 1752 200.077920 - 1752 1753 -160.547650 - 1752 1754 -271.389570 - 1752 1755 -0.000961 - 1752 1800 -0.174381 - 1752 1801 12.361556 - 1752 1802 20.895960 - 1752 2856 -0.085147 - 1752 2857 13.430198 - 1752 2858 22.702394 - 1753 1751 -4.932559 - 1753 1753 -38.115097 - 1753 1754 42.090424 - 1753 1802 -3.384606 - 1753 2858 -3.677161 - 1754 648 -0.000015 - 1754 649 -1.972400 - 1754 650 -3.334143 - 1754 1704 -0.000010 - 1754 1705 -1.257786 - 1754 1706 -2.126160 - 1754 1749 -0.000008 - 1754 1750 -1.111507 - 1754 1751 -1.878892 - 1754 1752 0.000536 - 1754 1753 9.181600 - 1754 1754 15.520567 - 1754 1755 -0.000010 - 1754 1756 -1.315371 - 1754 1757 -2.223502 - 1754 1800 -0.000009 - 1754 1801 -1.180207 - 1754 1802 -1.995020 - 1754 2856 -0.000018 - 1754 2857 -2.340037 - 1754 2858 -3.955596 - 1755 651 -0.001230 - 1755 1707 -0.001139 - 1755 1752 -0.189127 - 1755 1753 15.687094 - 1755 1754 26.517446 - 1755 1755 243.503420 - 1755 1756 -214.636380 - 1755 1757 -362.821330 - 1755 1758 -0.158087 - 1755 1759 15.859809 - 1755 1760 26.809404 - 1755 1803 -0.293568 - 1755 1804 22.350159 - 1755 1805 37.780708 - 1755 2859 -0.138715 - 1755 2860 18.730508 - 1755 2861 31.662050 - 1756 1754 -4.295037 - 1756 1756 -46.361346 - 1756 1757 56.481337 - 1756 1760 -4.342308 - 1756 1805 -6.119398 - 1756 2861 -5.128279 - 1757 651 -0.000013 - 1757 652 -1.622280 - 1757 653 -2.742302 - 1757 1707 -0.000012 - 1757 1708 -1.501972 - 1757 1709 -2.538933 - 1757 1752 -0.000010 - 1757 1753 -1.315371 - 1757 1754 -2.223502 - 1757 1755 0.000640 - 1757 1756 9.341745 - 1757 1757 15.791282 - 1757 1758 -0.000012 - 1757 1759 -1.534571 - 1757 1760 -2.594038 - 1757 1803 -0.000011 - 1757 1804 -1.438376 - 1757 1805 -2.431431 - 1757 2859 -0.000015 - 1757 2860 -1.923952 - 1757 2861 -3.252249 - 1758 654 -0.001072 - 1758 1710 -0.001188 - 1758 1755 -0.001127 - 1758 1758 270.144950 - 1758 1759 -196.578550 - 1758 1760 -332.296180 - 1758 1761 -0.172805 - 1758 1762 16.117870 - 1758 1763 27.245647 - 1758 1806 -0.182016 - 1758 1807 11.574085 - 1758 1808 19.564815 - 1758 2862 -0.061196 - 1758 2863 11.111017 - 1758 2864 18.782047 - 1759 1759 -51.503173 - 1759 1760 51.308508 - 1759 1763 -4.413067 - 1759 1808 -3.168960 - 1759 2864 -3.042167 - 1760 654 -0.000011 - 1760 655 -1.459200 - 1760 656 -2.466631 - 1760 1710 -0.000012 - 1760 1711 -1.616786 - 1760 1712 -2.733014 - 1760 1755 -0.000012 - 1760 1756 -1.534571 - 1760 1757 -2.594038 - 1760 1758 0.000704 - 1760 1759 9.583425 - 1760 1760 16.199811 - 1760 1761 -0.000012 - 1760 1762 -1.619717 - 1760 1763 -2.737969 - 1760 1806 -0.000012 - 1760 1807 -1.616875 - 1760 1808 -2.733163 - 1760 2862 -0.000013 - 1760 2863 -1.730476 - 1760 2864 -2.925195 - 1761 657 -0.001038 - 1761 1713 -0.001151 - 1761 1714 6.396303 - 1761 1715 10.812310 - 1761 1758 -0.001153 - 1761 1761 269.953340 - 1761 1762 -181.323280 - 1761 1763 -306.508870 - 1761 1764 -0.103881 - 1761 1765 10.114327 - 1761 1766 17.097245 - 1761 1809 -0.062403 - 1761 1810 0.578917 - 1761 1811 0.978601 - 1761 2865 -0.013870 - 1761 2866 6.452095 - 1761 2867 10.906622 - 1762 1715 -1.751322 - 1762 1762 -51.495627 - 1762 1763 47.151643 - 1762 1766 -2.769339 - 1762 1811 -0.158507 - 1762 2867 -1.766597 - 1763 657 -0.000011 - 1763 658 -1.458490 - 1763 659 -2.465431 - 1763 1713 -0.000012 - 1763 1714 -1.616562 - 1763 1715 -2.732636 - 1763 1758 -0.000012 - 1763 1759 -1.619717 - 1763 1760 -2.737969 - 1763 1761 0.000703 - 1763 1762 9.666624 - 1763 1763 16.340459 - 1763 1764 -0.000012 - 1763 1765 -1.619648 - 1763 1766 -2.737850 - 1763 1809 -0.000012 - 1763 1810 -1.616718 - 1763 1811 -2.732899 - 1763 2865 -0.000013 - 1763 2866 -1.729695 - 1763 2867 -2.923877 - 1764 660 -0.002126 - 1764 1716 -0.076600 - 1764 1717 13.660612 - 1764 1718 23.091886 - 1764 1761 -0.001130 - 1764 1764 269.846290 - 1764 1765 -175.610320 - 1764 1766 -296.851470 - 1764 1812 -0.021406 - 1764 2868 -0.001208 - 1764 2869 4.174611 - 1764 2870 7.056759 - 1765 1718 -3.740399 - 1765 1765 -51.490230 - 1765 1766 45.601587 - 1765 2870 -1.143030 - 1766 660 -0.000011 - 1766 661 -1.458956 - 1766 662 -2.466217 - 1766 1716 -0.000011 - 1766 1717 -1.616916 - 1766 1718 -2.733233 - 1766 1761 -0.000012 - 1766 1762 -1.619648 - 1766 1763 -2.737850 - 1766 1764 0.000690 - 1766 1765 8.048687 - 1766 1766 13.605490 - 1766 1812 -0.000012 - 1766 1813 -1.617100 - 1766 1814 -2.733544 - 1766 2868 -0.000013 - 1766 2869 -1.730274 - 1766 2870 -2.924854 - 1767 1767 1.000000 - 1768 1768 1.000000 - 1769 1769 1.000000 - 1770 1770 1.000000 - 1771 1771 1.000000 - 1772 1772 1.000000 - 1773 1773 1.000000 - 1774 1774 1.000000 - 1775 1775 1.000000 - 1776 1776 1.000000 - 1777 1777 1.000000 - 1778 1778 1.000000 - 1779 1779 1.000000 - 1780 1780 1.000000 - 1781 1781 1.000000 - 1782 678 -0.063457 - 1782 1782 113.372150 - 1782 1783 -68.660562 - 1782 1784 -116.063750 - 1782 1785 -0.000388 - 1782 1830 -0.015354 - 1782 1831 2.142985 - 1782 1832 3.622500 - 1782 2886 -0.002412 - 1782 2887 0.239673 - 1782 2888 0.405144 - 1783 1783 -21.608517 - 1783 1784 17.802766 - 1783 1832 -0.586829 - 1783 2888 -0.065631 - 1784 678 -0.000021 - 1784 679 -3.470235 - 1784 680 -5.866081 - 1784 1782 0.000320 - 1784 1783 8.976971 - 1784 1784 15.174662 - 1784 1785 -0.000004 - 1784 1786 -0.662728 - 1784 1787 -1.120274 - 1784 1830 -0.000004 - 1784 1831 -0.725236 - 1784 1832 -1.225939 - 1784 2886 -0.000025 - 1784 2887 -4.116348 - 1784 2888 -6.958270 - 1785 681 -0.063594 - 1785 1737 -0.000386 - 1785 1782 -0.011889 - 1785 1783 3.144552 - 1785 1784 5.315547 - 1785 1785 108.018080 - 1785 1786 -69.213653 - 1785 1787 -116.998760 - 1785 1788 -0.000386 - 1785 1833 -0.036654 - 1785 1834 2.709470 - 1785 1835 4.580089 - 1785 2889 -0.002580 - 1785 2890 0.246444 - 1785 2891 0.416589 - 1786 1784 -0.861089 - 1786 1786 -20.583738 - 1786 1787 17.991234 - 1786 1835 -0.741947 - 1786 2891 -0.067484 - 1787 681 -0.000023 - 1787 682 -3.645772 - 1787 683 -6.162813 - 1787 1737 -0.000004 - 1787 1738 -0.647560 - 1787 1739 -1.094636 - 1787 1782 -0.000004 - 1787 1783 -0.662728 - 1787 1784 -1.120274 - 1787 1785 0.000318 - 1787 1786 10.592832 - 1787 1787 17.906123 - 1787 1788 -0.000004 - 1787 1789 -0.647263 - 1787 1790 -1.094134 - 1787 1833 -0.000004 - 1787 1834 -0.663245 - 1787 1835 -1.121149 - 1787 2889 -0.000027 - 1787 2890 -4.323953 - 1787 2891 -7.309211 - 1788 684 -0.062687 - 1788 1740 -0.000395 - 1788 1785 -0.017944 - 1788 1786 3.909041 - 1788 1787 6.607844 - 1788 1788 108.038200 - 1788 1789 -69.988742 - 1788 1790 -118.308890 - 1788 1791 -0.000395 - 1788 1836 -0.036900 - 1788 1837 2.657672 - 1788 1838 4.492524 - 1788 2892 -0.002637 - 1788 2893 0.309799 - 1788 2894 0.523684 - 1789 1787 -1.070421 - 1789 1789 -20.588667 - 1789 1790 18.191121 - 1789 1838 -0.727753 - 1789 2894 -0.084832 - 1790 684 -0.000023 - 1790 685 -3.642601 - 1790 686 -6.157449 - 1790 1740 -0.000004 - 1790 1741 -0.647482 - 1790 1742 -1.094502 - 1790 1785 -0.000004 - 1790 1786 -0.647263 - 1790 1787 -1.094134 - 1790 1788 0.000320 - 1790 1789 10.555334 - 1790 1790 17.842726 - 1790 1791 -0.000004 - 1790 1792 -0.647728 - 1790 1793 -1.094919 - 1790 1836 -0.000004 - 1790 1837 -0.647624 - 1790 1838 -1.094742 - 1790 2892 -0.000028 - 1790 2893 -4.320322 - 1790 2894 -7.303069 - 1791 687 -0.058185 - 1791 1743 -0.000445 - 1791 1788 -0.048309 - 1791 1789 5.651199 - 1791 1790 9.552780 - 1791 1791 108.067510 - 1791 1792 -72.373388 - 1791 1793 -122.339970 - 1791 1794 -0.000454 - 1791 1839 -0.043448 - 1791 1840 2.989205 - 1791 1841 5.052952 - 1791 2895 -0.002723 - 1791 2896 0.626735 - 1791 2897 1.059432 - 1792 1790 -1.547458 - 1792 1792 -20.592885 - 1792 1793 18.833227 - 1792 1841 -0.818521 - 1792 2897 -0.171614 - 1793 687 -0.000024 - 1793 688 -3.642810 - 1793 689 -6.157807 - 1793 1743 -0.000005 - 1793 1744 -0.706259 - 1793 1745 -1.193860 - 1793 1788 -0.000004 - 1793 1789 -0.647728 - 1793 1790 -1.094919 - 1793 1791 0.000323 - 1793 1792 10.687176 - 1793 1793 18.065601 - 1793 1794 -0.000005 - 1793 1795 -0.719826 - 1793 1796 -1.216794 - 1793 1839 -0.000004 - 1793 1840 -0.647693 - 1793 1841 -1.094861 - 1793 2895 -0.000028 - 1793 2896 -4.320544 - 1793 2897 -7.303447 - 1794 690 -0.045082 - 1794 1746 -0.000559 - 1794 1791 -0.082053 - 1794 1792 7.841056 - 1794 1793 13.254521 - 1794 1794 135.076980 - 1794 1795 -92.422249 - 1794 1796 -156.230460 - 1794 1797 -0.000579 - 1794 1842 -0.079778 - 1794 1843 4.184264 - 1794 1844 7.073075 - 1794 2898 -0.002269 - 1794 2899 1.499179 - 1794 2900 2.534211 - 1795 1793 -2.147059 - 1795 1795 -25.745523 - 1795 1796 24.065408 - 1795 1844 -1.145732 - 1795 2900 -0.410499 - 1796 690 -0.000020 - 1796 691 -2.919621 - 1796 692 -4.935323 - 1796 1746 -0.000006 - 1796 1747 -0.853975 - 1796 1748 -1.443558 - 1796 1791 -0.000005 - 1796 1792 -0.719826 - 1796 1793 -1.216794 - 1796 1794 0.000381 - 1796 1795 9.600882 - 1796 1796 16.229320 - 1796 1797 -0.000006 - 1796 1798 -0.883417 - 1796 1799 -1.493328 - 1796 1842 -0.000005 - 1796 1843 -0.757150 - 1796 1844 -1.279886 - 1796 2898 -0.000024 - 1796 2899 -3.463996 - 1796 2900 -5.855535 - 1797 693 -0.015535 - 1797 1749 -0.000683 - 1797 1794 -0.112837 - 1797 1795 10.391003 - 1797 1796 17.564939 - 1797 1797 162.087010 - 1797 1798 -115.265500 - 1797 1799 -194.844800 - 1797 1800 -0.000723 - 1797 1845 -0.108816 - 1797 1846 6.767584 - 1797 1847 11.439923 - 1797 2901 -0.001967 - 1797 2902 3.437816 - 1797 2903 5.811284 - 1798 1796 -2.845220 - 1798 1798 -30.899754 - 1798 1799 30.058278 - 1798 1847 -1.853051 - 1798 2903 -0.941305 - 1799 693 -0.000017 - 1799 694 -2.432178 - 1799 695 -4.111354 - 1799 1749 -0.000007 - 1799 1750 -1.001389 - 1799 1751 -1.692748 - 1799 1794 -0.000006 - 1799 1795 -0.883417 - 1799 1796 -1.493328 - 1799 1797 0.000444 - 1799 1798 9.201385 - 1799 1799 15.554020 - 1799 1800 -0.000008 - 1799 1801 -1.060058 - 1799 1802 -1.791923 - 1799 1845 -0.000006 - 1799 1846 -0.935361 - 1799 1847 -1.581134 - 1799 2901 -0.000021 - 1799 2902 -2.885504 - 1799 2903 -4.877655 - 1800 696 -0.001433 - 1800 1752 -0.000834 - 1800 1797 -0.135467 - 1800 1798 11.804877 - 1800 1799 19.954964 - 1800 1800 194.517550 - 1800 1801 -142.593830 - 1800 1802 -241.040460 - 1800 1803 -0.000907 - 1800 1848 -0.157965 - 1800 1849 10.780072 - 1800 1850 18.222623 - 1800 2904 -0.013656 - 1800 2905 6.391327 - 1800 2906 10.803892 - 1801 1799 -3.232272 - 1801 1801 -37.084526 - 1801 1802 37.227496 - 1801 1850 -2.951661 - 1801 2906 -1.749963 - 1802 696 -0.000015 - 1802 697 -2.027004 - 1802 698 -3.426445 - 1802 1752 -0.000009 - 1802 1753 -1.180207 - 1802 1754 -1.995020 - 1802 1797 -0.000008 - 1802 1798 -1.060058 - 1802 1799 -1.791923 - 1802 1800 0.000521 - 1802 1801 9.089951 - 1802 1802 15.365644 - 1802 1803 -0.000009 - 1802 1804 -1.282751 - 1802 1805 -2.168360 - 1802 1848 -0.000008 - 1802 1849 -1.130829 - 1802 1850 -1.911551 - 1802 2904 -0.000018 - 1802 2905 -2.404928 - 1802 2906 -4.065287 - 1803 699 -0.001199 - 1803 1755 -0.001040 - 1803 1800 -0.112146 - 1803 1801 8.801389 - 1803 1802 14.877859 - 1803 1803 237.716890 - 1803 1804 -172.510840 - 1803 1805 -291.612330 - 1803 1806 -0.017391 - 1803 1807 2.963568 - 1803 1808 5.009611 - 1803 1851 -0.205367 - 1803 1852 13.685122 - 1803 1853 23.133330 - 1803 2907 -0.031731 - 1803 2908 8.199983 - 1803 2909 13.861251 - 1804 1802 -2.409829 - 1804 1804 -45.327617 - 1804 1805 45.009350 - 1804 1808 -0.811419 - 1804 1853 -3.747027 - 1804 2909 -2.245149 - 1805 699 -0.000013 - 1805 700 -1.659097 - 1805 701 -2.804538 - 1805 1755 -0.000011 - 1805 1756 -1.438376 - 1805 1757 -2.431431 - 1805 1800 -0.000009 - 1805 1801 -1.282751 - 1805 1802 -2.168360 - 1805 1803 0.000625 - 1805 1804 9.259195 - 1805 1805 15.651739 - 1805 1806 -0.000011 - 1805 1807 -1.516409 - 1805 1808 -2.563335 - 1805 1851 -0.000010 - 1805 1852 -1.389323 - 1805 1853 -2.348513 - 1805 2907 -0.000015 - 1805 2908 -1.968134 - 1805 2909 -3.326934 - 1806 702 -0.001049 - 1806 1758 -0.001162 - 1806 1803 -0.001089 - 1806 1806 269.947980 - 1806 1807 -179.105480 - 1806 1808 -302.759630 - 1806 1809 -0.052989 - 1806 1810 5.103267 - 1806 1811 8.626563 - 1806 1854 -0.175079 - 1806 1855 10.116538 - 1806 1856 17.100984 - 1806 2910 -0.009941 - 1806 2911 6.069439 - 1806 2912 10.259773 - 1807 1807 -51.505101 - 1807 1808 46.520833 - 1807 1811 -1.397274 - 1807 1856 -2.769927 - 1807 2912 -1.661813 - 1808 702 -0.000011 - 1808 703 -1.459785 - 1808 704 -2.467619 - 1808 1758 -0.000012 - 1808 1759 -1.616875 - 1808 1760 -2.733163 - 1808 1803 -0.000011 - 1808 1804 -1.516409 - 1808 1805 -2.563335 - 1808 1806 0.000703 - 1808 1807 9.566398 - 1808 1808 16.171028 - 1808 1809 -0.000012 - 1808 1810 -1.619787 - 1808 1811 -2.738089 - 1808 1854 -0.000012 - 1808 1855 -1.616506 - 1808 1856 -2.732539 - 1808 2910 -0.000013 - 1808 2911 -1.731237 - 1808 2912 -2.926480 - 1809 705 -0.001038 - 1809 1761 -0.001150 - 1809 1806 -0.001152 - 1809 1809 269.845900 - 1809 1810 -167.811400 - 1809 1811 -283.668390 - 1809 1812 -0.062820 - 1809 1813 5.291959 - 1809 1814 8.945522 - 1809 2913 -0.001232 - 1809 2914 4.741739 - 1809 2915 8.015435 - 1810 1810 -51.502392 - 1810 1811 43.435542 - 1810 1814 -1.448949 - 1810 2915 -1.298296 - 1811 705 -0.000011 - 1811 706 -1.460471 - 1811 707 -2.468781 - 1811 1761 -0.000012 - 1811 1762 -1.616718 - 1811 1763 -2.732899 - 1811 1806 -0.000012 - 1811 1807 -1.619787 - 1811 1808 -2.738089 - 1811 1809 0.000691 - 1811 1810 8.054580 - 1811 1811 13.615461 - 1811 1812 -0.000012 - 1811 1813 -1.619740 - 1811 1814 -2.738007 - 1811 2913 -0.000013 - 1811 2914 -1.732066 - 1811 2915 -2.927885 - 1812 708 -0.011013 - 1812 1764 -0.001138 - 1812 1765 4.235712 - 1812 1766 7.160042 - 1812 1809 -0.001140 - 1812 1812 269.818770 - 1812 1813 -165.664960 - 1812 1814 -280.039860 - 1812 2916 -0.001218 - 1812 2917 3.653898 - 1812 2918 6.176546 - 1813 1766 -1.159753 - 1813 1813 -51.500595 - 1813 1814 42.852774 - 1813 2918 -1.000449 - 1814 708 -0.000011 - 1814 709 -1.459135 - 1814 710 -2.466520 - 1814 1764 -0.000012 - 1814 1765 -1.617100 - 1814 1766 -2.733544 - 1814 1809 -0.000012 - 1814 1810 -1.619740 - 1814 1811 -2.738007 - 1814 1812 0.000679 - 1814 1813 6.432265 - 1814 1814 10.873094 - 1814 2916 -0.000013 - 1814 2917 -1.730493 - 1814 2918 -2.925224 - 1815 1815 1.000000 - 1816 1816 1.000000 - 1817 1817 1.000000 - 1818 1818 1.000000 - 1819 1819 1.000000 - 1820 1820 1.000000 - 1821 1821 1.000000 - 1822 1822 1.000000 - 1823 1823 1.000000 - 1824 1824 1.000000 - 1825 1825 1.000000 - 1826 1826 1.000000 - 1827 1827 1.000000 - 1828 1828 1.000000 - 1829 1829 1.000000 - 1830 726 -0.063023 - 1830 1782 -0.000420 - 1830 1830 129.564290 - 1830 1831 -79.601512 - 1830 1832 -134.558320 - 1830 1833 -0.012541 - 1830 1878 -0.025316 - 1830 1879 3.604050 - 1830 1880 6.092282 - 1830 2934 -0.002091 - 1830 2935 0.249867 - 1830 2936 0.422374 - 1831 1831 -24.693282 - 1831 1832 20.661564 - 1831 1880 -0.986933 - 1831 2936 -0.068423 - 1832 726 -0.000018 - 1832 727 -3.041851 - 1832 728 -5.141942 - 1832 1782 -0.000004 - 1832 1783 -0.725236 - 1832 1784 -1.225939 - 1832 1830 0.000357 - 1832 1831 8.925299 - 1832 1832 15.087315 - 1832 1833 -0.000004 - 1832 1834 -0.723883 - 1832 1835 -1.223651 - 1832 1878 -0.000005 - 1832 1879 -0.822290 - 1832 1880 -1.389997 - 1832 2934 -0.000022 - 1832 2935 -3.609268 - 1832 2936 -6.101103 - 1833 729 -0.063368 - 1833 1785 -0.000390 - 1833 1830 -0.000425 - 1833 1831 2.616386 - 1833 1832 4.422737 - 1833 1833 113.422340 - 1833 1834 -72.226180 - 1833 1835 -122.091130 - 1833 1836 -0.000389 - 1833 1881 -0.014385 - 1833 1882 3.094740 - 1833 1883 5.231349 - 1833 2937 -0.002420 - 1833 2938 0.249406 - 1833 2939 0.421596 - 1834 1832 -0.716464 - 1834 1834 -21.612590 - 1834 1835 18.769138 - 1834 1883 -0.847456 - 1834 2939 -0.068296 - 1835 729 -0.000021 - 1835 730 -3.473180 - 1835 731 -5.871063 - 1835 1785 -0.000004 - 1835 1786 -0.663245 - 1835 1787 -1.121149 - 1835 1830 -0.000004 - 1835 1831 -0.723883 - 1835 1832 -1.223651 - 1835 1833 0.000329 - 1835 1834 10.370998 - 1835 1835 17.531134 - 1835 1836 -0.000004 - 1835 1837 -0.662971 - 1835 1838 -1.120686 - 1835 1881 -0.000004 - 1835 1882 -0.725017 - 1835 1883 -1.225569 - 1835 2937 -0.000025 - 1835 2938 -4.120276 - 1835 2939 -6.964914 - 1836 732 -0.063342 - 1836 1788 -0.000389 - 1836 1833 -0.017241 - 1836 1834 3.991420 - 1836 1835 6.747097 - 1836 1836 108.034300 - 1836 1837 -70.405894 - 1836 1838 -119.014020 - 1836 1839 -0.000389 - 1836 1884 -0.021837 - 1836 1885 3.046511 - 1836 1886 5.149820 - 1836 2940 -0.002597 - 1836 2941 0.261947 - 1836 2942 0.442796 - 1837 1835 -1.092990 - 1837 1837 -20.588468 - 1837 1838 18.306083 - 1837 1886 -0.834238 - 1837 2942 -0.071729 - 1838 732 -0.000023 - 1838 733 -3.643249 - 1838 734 -6.158543 - 1838 1788 -0.000004 - 1838 1789 -0.647624 - 1838 1790 -1.094742 - 1838 1833 -0.000004 - 1838 1834 -0.662971 - 1838 1835 -1.120686 - 1838 1836 0.000319 - 1838 1837 10.572209 - 1838 1838 17.871250 - 1838 1839 -0.000004 - 1838 1840 -0.647431 - 1838 1841 -1.094416 - 1838 1884 -0.000004 - 1838 1885 -0.647531 - 1838 1886 -1.094585 - 1838 2940 -0.000027 - 1838 2941 -4.321090 - 1838 2942 -7.304366 - 1839 735 -0.061681 - 1839 1791 -0.000401 - 1839 1836 -0.041748 - 1839 1837 5.317321 - 1839 1838 8.988392 - 1839 1839 108.044530 - 1839 1840 -72.357808 - 1839 1841 -122.313640 - 1839 1842 -0.000420 - 1839 1887 -0.039497 - 1839 1888 3.536670 - 1839 1889 5.978387 - 1839 2943 -0.002678 - 1839 2944 0.384067 - 1839 2945 0.649226 - 1840 1838 -1.456047 - 1840 1840 -20.592914 - 1840 1841 18.829160 - 1840 1889 -0.968443 - 1840 2945 -0.105167 - 1841 735 -0.000024 - 1841 736 -3.644487 - 1841 737 -6.160641 - 1841 1791 -0.000004 - 1841 1792 -0.647693 - 1841 1793 -1.094861 - 1841 1836 -0.000004 - 1841 1837 -0.647431 - 1841 1838 -1.094416 - 1841 1839 0.000321 - 1841 1840 10.590126 - 1841 1841 17.901548 - 1841 1842 -0.000004 - 1841 1843 -0.678411 - 1841 1844 -1.146785 - 1841 1887 -0.000004 - 1841 1888 -0.647745 - 1841 1889 -1.094948 - 1841 2943 -0.000028 - 1841 2944 -4.322044 - 1841 2945 -7.305982 - 1842 738 -0.055113 - 1842 1794 -0.000486 - 1842 1839 -0.051357 - 1842 1840 6.771428 - 1842 1841 11.446421 - 1842 1842 118.900760 - 1842 1843 -81.623769 - 1842 1844 -137.976730 - 1842 1845 -0.000513 - 1842 1890 -0.061991 - 1842 1891 4.614738 - 1842 1892 7.800747 - 1842 2946 -0.002523 - 1842 2947 0.822619 - 1842 2948 1.390553 - 1843 1841 -1.854191 - 1843 1843 -22.658386 - 1843 1844 21.252222 - 1843 1892 -1.263624 - 1843 2948 -0.225249 - 1844 738 -0.000022 - 1844 739 -3.312375 - 1844 740 -5.599235 - 1844 1794 -0.000005 - 1844 1795 -0.757150 - 1844 1796 -1.279886 - 1844 1839 -0.000004 - 1844 1840 -0.678411 - 1844 1841 -1.146785 - 1844 1842 0.000346 - 1844 1843 10.173885 - 1844 1844 17.197926 - 1844 1845 -0.000005 - 1844 1846 -0.798127 - 1844 1847 -1.349153 - 1844 1890 -0.000005 - 1844 1891 -0.695944 - 1844 1892 -1.176423 - 1844 2946 -0.000026 - 1844 2947 -3.929329 - 1844 2948 -6.642133 - 1845 741 -0.041786 - 1845 1797 -0.000622 - 1845 1842 -0.093185 - 1845 1843 8.023441 - 1845 1844 13.562817 - 1845 1845 151.294080 - 1845 1846 -104.854220 - 1845 1847 -177.245580 - 1845 1848 -0.000662 - 1845 1893 -0.127120 - 1845 1894 6.741027 - 1845 1895 11.395032 - 1845 2949 -0.002062 - 1845 2950 1.710576 - 1845 2951 2.891558 - 1846 1844 -2.196973 - 1846 1846 -28.841163 - 1846 1847 27.304935 - 1846 1895 -1.845813 - 1846 2951 -0.468378 - 1847 741 -0.000018 - 1847 742 -2.612950 - 1847 743 -4.416930 - 1847 1797 -0.000006 - 1847 1798 -0.935361 - 1847 1799 -1.581134 - 1847 1842 -0.000005 - 1847 1843 -0.798127 - 1847 1844 -1.349153 - 1847 1845 0.000418 - 1847 1846 9.316449 - 1847 1847 15.748525 - 1847 1848 -0.000007 - 1847 1849 -0.994792 - 1847 1850 -1.681596 - 1847 1893 -0.000006 - 1847 1894 -0.871649 - 1847 1895 -1.473435 - 1847 2949 -0.000022 - 1847 2950 -3.100324 - 1847 2951 -5.240788 - 1848 744 -0.021587 - 1848 1800 -0.000775 - 1848 1845 -0.103888 - 1848 1846 8.792035 - 1848 1847 14.862056 - 1848 1848 183.684570 - 1848 1849 -128.566590 - 1848 1850 -217.328840 - 1848 1851 -0.000834 - 1848 1896 -0.145258 - 1848 1897 9.471709 - 1848 1898 16.010965 - 1848 2952 -0.001745 - 1848 2953 2.995374 - 1848 2954 5.063378 - 1849 1847 -2.407372 - 1849 1849 -35.024614 - 1849 1850 33.487759 - 1849 1898 -2.593473 - 1849 2954 -0.820157 - 1850 744 -0.000015 - 1850 745 -2.146850 - 1850 746 -3.629033 - 1850 1800 -0.000008 - 1850 1801 -1.130829 - 1850 1802 -1.911551 - 1850 1845 -0.000007 - 1850 1846 -0.994792 - 1850 1847 -1.681596 - 1850 1848 0.000494 - 1850 1849 9.137652 - 1850 1850 15.446279 - 1850 1851 -0.000009 - 1850 1852 -1.217376 - 1850 1853 -2.057852 - 1850 1896 -0.000008 - 1850 1897 -1.097359 - 1850 1898 -1.854974 - 1850 2952 -0.000018 - 1850 2953 -2.546503 - 1850 2954 -4.304606 - 1851 747 -0.006920 - 1851 1803 -0.000973 - 1851 1848 -0.096521 - 1851 1849 7.966307 - 1851 1850 13.466238 - 1851 1851 226.821060 - 1851 1852 -152.118950 - 1851 1853 -257.141880 - 1851 1854 -0.001036 - 1851 1899 -0.140776 - 1851 1900 7.754570 - 1851 1901 13.108325 - 1851 2955 -0.001444 - 1851 2956 3.827795 - 1851 2957 6.470505 - 1852 1850 -2.181232 - 1852 1852 -43.268319 - 1852 1853 39.525830 - 1852 1901 -2.123253 - 1852 2957 -1.048066 - 1853 747 -0.000013 - 1853 748 -1.738063 - 1853 749 -2.938022 - 1853 1803 -0.000010 - 1853 1804 -1.389323 - 1853 1805 -2.348513 - 1853 1848 -0.000009 - 1853 1849 -1.217376 - 1853 1850 -2.057852 - 1853 1851 0.000598 - 1853 1852 9.231555 - 1853 1853 15.605019 - 1853 1854 -0.000011 - 1853 1855 -1.478956 - 1853 1856 -2.500026 - 1853 1899 -0.000010 - 1853 1900 -1.341189 - 1853 1901 -2.267146 - 1853 2955 -0.000015 - 1853 2956 -2.061775 - 1853 2957 -3.485225 - 1854 750 -0.014371 - 1854 1806 -0.001138 - 1854 1851 -0.043584 - 1854 1852 2.422197 - 1854 1853 4.094481 - 1854 1854 269.905960 - 1854 1855 -170.151550 - 1854 1856 -287.623970 - 1854 1902 -0.140481 - 1854 1903 6.545261 - 1854 1904 11.064105 - 1854 2958 -0.001219 - 1854 2959 3.365699 - 1854 2960 5.689374 - 1855 1853 -0.663205 - 1855 1855 -51.508807 - 1855 1856 44.061014 - 1855 1904 -1.792122 - 1855 2960 -0.921539 - 1856 750 -0.000011 - 1856 751 -1.459942 - 1856 752 -2.467883 - 1856 1806 -0.000012 - 1856 1807 -1.616506 - 1856 1808 -2.732539 - 1856 1851 -0.000011 - 1856 1852 -1.478956 - 1856 1853 -2.500026 - 1856 1854 0.000689 - 1856 1855 7.893000 - 1856 1856 13.342320 - 1856 1902 -0.000012 - 1856 1903 -1.600177 - 1856 1904 -2.704938 - 1856 2958 -0.000013 - 1856 2959 -1.731620 - 1856 2960 -2.927129 - 1857 1857 1.000000 - 1858 1858 1.000000 - 1859 1859 1.000000 - 1860 1860 1.000000 - 1861 1861 1.000000 - 1862 1862 1.000000 - 1863 1863 1.000000 - 1864 1864 1.000000 - 1865 1865 1.000000 - 1866 1866 1.000000 - 1867 1867 1.000000 - 1868 1868 1.000000 - 1869 1869 1.000000 - 1870 1870 1.000000 - 1871 1871 1.000000 - 1872 1872 1.000000 - 1873 1873 1.000000 - 1874 1874 1.000000 - 1875 771 -0.061747 - 1875 1875 161.937720 - 1875 1876 -96.325749 - 1875 1877 -162.829050 - 1875 1878 -0.007715 - 1875 1923 -0.000546 - 1875 1924 1.361134 - 1875 1925 2.300861 - 1875 2979 -0.001622 - 1875 2980 0.285764 - 1875 2981 0.483056 - 1876 1876 -30.856113 - 1876 1877 24.983323 - 1876 1925 -0.372737 - 1876 2981 -0.078254 - 1877 771 -0.000014 - 1877 772 -2.430530 - 1877 773 -4.108568 - 1877 1875 0.000421 - 1877 1876 7.206681 - 1877 1877 12.182174 - 1877 1878 -0.000005 - 1877 1879 -0.918595 - 1877 1880 -1.552793 - 1877 1923 -0.000006 - 1877 1924 -0.970719 - 1877 1925 -1.640904 - 1877 2979 -0.000017 - 1877 2980 -2.883379 - 1877 2981 -4.874064 - 1878 774 -0.062289 - 1878 1830 -0.000468 - 1878 1875 -0.000523 - 1878 1876 2.798144 - 1878 1877 4.729983 - 1878 1878 145.776990 - 1878 1879 -90.858930 - 1878 1880 -153.587820 - 1878 1881 -0.005227 - 1878 1926 -0.000524 - 1878 1927 2.577854 - 1878 1928 4.357601 - 1878 2982 -0.001826 - 1878 2983 0.273519 - 1878 2984 0.462356 - 1879 1877 -0.766249 - 1879 1879 -27.776287 - 1879 1880 23.611475 - 1879 1928 -0.705924 - 1879 2984 -0.074900 - 1880 774 -0.000016 - 1880 775 -2.703527 - 1880 776 -4.570038 - 1880 1830 -0.000005 - 1880 1831 -0.822290 - 1880 1832 -1.389997 - 1880 1875 -0.000005 - 1880 1876 -0.918595 - 1880 1877 -1.552793 - 1880 1878 0.000397 - 1880 1879 9.396292 - 1880 1880 15.883482 - 1880 1881 -0.000005 - 1880 1882 -0.821216 - 1880 1883 -1.388182 - 1880 1926 -0.000005 - 1880 1927 -0.919530 - 1880 1928 -1.554372 - 1880 2982 -0.000019 - 1880 2983 -3.208021 - 1880 2984 -5.422834 - 1881 777 -0.062920 - 1881 1833 -0.000419 - 1881 1878 -0.000474 - 1881 1879 3.062025 - 1881 1880 5.176044 - 1881 1881 129.573790 - 1881 1882 -81.877839 - 1881 1883 -138.406300 - 1881 1884 -0.000407 - 1881 1929 -0.012450 - 1881 1930 2.824628 - 1881 1931 4.774750 - 1881 2985 -0.002084 - 1881 2986 0.253960 - 1881 2987 0.429293 - 1882 1880 -0.838505 - 1882 1882 -24.695931 - 1882 1883 21.278445 - 1882 1931 -0.773495 - 1882 2987 -0.069544 - 1883 777 -0.000018 - 1883 778 -3.040207 - 1883 779 -5.139166 - 1883 1833 -0.000004 - 1883 1834 -0.725017 - 1883 1835 -1.225569 - 1883 1878 -0.000005 - 1883 1879 -0.821216 - 1883 1880 -1.388182 - 1883 1881 0.000361 - 1883 1882 9.694401 - 1883 1883 16.387415 - 1883 1884 -0.000004 - 1883 1885 -0.705302 - 1883 1886 -1.192243 - 1883 1929 -0.000005 - 1883 1930 -0.792577 - 1883 1931 -1.339772 - 1883 2985 -0.000022 - 1883 2986 -3.607311 - 1883 2987 -6.097798 - 1884 780 -0.063524 - 1884 1836 -0.000382 - 1884 1881 -0.008552 - 1884 1882 3.938488 - 1884 1883 6.657621 - 1884 1884 108.004790 - 1884 1885 -70.290947 - 1884 1886 -118.819740 - 1884 1887 -0.000382 - 1884 1932 -0.016713 - 1884 1933 2.982391 - 1884 1934 5.041431 - 1884 2988 -0.002555 - 1884 2989 0.251268 - 1884 2990 0.424744 - 1885 1883 -1.078506 - 1885 1885 -20.585626 - 1885 1886 18.281811 - 1885 1934 -0.816688 - 1885 2990 -0.068806 - 1886 780 -0.000022 - 1886 781 -3.648100 - 1886 782 -6.166745 - 1886 1836 -0.000004 - 1886 1837 -0.647531 - 1886 1838 -1.094585 - 1886 1881 -0.000004 - 1886 1882 -0.705302 - 1886 1883 -1.192243 - 1886 1884 0.000318 - 1886 1885 10.639977 - 1886 1886 17.985806 - 1886 1887 -0.000004 - 1886 1888 -0.646639 - 1886 1889 -1.093077 - 1886 1932 -0.000004 - 1886 1933 -0.663057 - 1886 1934 -1.120832 - 1886 2988 -0.000027 - 1886 2989 -4.327036 - 1886 2990 -7.314416 - 1887 783 -0.063099 - 1887 1839 -0.000393 - 1887 1884 -0.024076 - 1887 1885 4.822416 - 1887 1886 8.151808 - 1887 1887 108.023360 - 1887 1888 -71.838586 - 1887 1889 -121.435950 - 1887 1890 -0.000402 - 1887 1935 -0.027603 - 1887 1936 3.613855 - 1887 1937 6.108861 - 1887 2991 -0.002628 - 1887 2992 0.288037 - 1887 2993 0.486898 - 1888 1886 -1.320541 - 1888 1888 -20.591437 - 1888 1889 18.690919 - 1888 1937 -0.989592 - 1888 2993 -0.078873 - 1889 783 -0.000023 - 1889 784 -3.649262 - 1889 785 -6.168712 - 1889 1839 -0.000004 - 1889 1840 -0.647745 - 1889 1841 -1.094948 - 1889 1884 -0.000004 - 1889 1885 -0.646639 - 1889 1886 -1.093077 - 1889 1887 0.000319 - 1889 1888 10.583862 - 1889 1889 17.890960 - 1889 1890 -0.000004 - 1889 1891 -0.662652 - 1889 1892 -1.120147 - 1889 1935 -0.000004 - 1889 1936 -0.647431 - 1889 1937 -1.094416 - 1889 2991 -0.000027 - 1889 2992 -4.327819 - 1889 2993 -7.315746 - 1890 786 -0.060195 - 1890 1842 -0.000436 - 1890 1887 -0.031542 - 1890 1888 5.837954 - 1890 1889 9.868478 - 1890 1890 113.444730 - 1890 1891 -77.174379 - 1890 1892 -130.455480 - 1890 1893 -0.000472 - 1890 1938 -0.040319 - 1890 1939 4.582750 - 1890 1940 7.746674 - 1890 2994 -0.002583 - 1890 2995 0.480051 - 1890 2996 0.811478 - 1891 1889 -1.598602 - 1891 1891 -21.627893 - 1891 1892 20.085606 - 1891 1940 -1.254884 - 1891 2996 -0.131449 - 1892 786 -0.000023 - 1892 787 -3.473617 - 1892 788 -5.871797 - 1892 1842 -0.000005 - 1892 1843 -0.695944 - 1892 1844 -1.176423 - 1892 1887 -0.000004 - 1892 1888 -0.662652 - 1892 1889 -1.120147 - 1892 1890 0.000333 - 1892 1891 10.384961 - 1892 1892 17.554727 - 1892 1893 -0.000005 - 1892 1894 -0.751850 - 1892 1895 -1.270926 - 1892 1938 -0.000004 - 1892 1939 -0.680119 - 1892 1940 -1.149671 - 1892 2994 -0.000027 - 1892 2995 -4.118346 - 1892 2996 -6.961649 - 1893 789 -0.053321 - 1893 1845 -0.000564 - 1893 1890 -0.045096 - 1893 1891 6.728683 - 1893 1892 11.374157 - 1893 1893 140.536610 - 1893 1894 -96.260607 - 1893 1895 -162.718930 - 1893 1896 -0.000618 - 1893 1941 -0.067528 - 1893 1942 6.595857 - 1893 1943 11.149637 - 1893 2997 -0.002154 - 1893 2998 0.910645 - 1893 2999 1.539354 - 1894 1892 -1.842471 - 1894 1894 -26.784777 - 1894 1895 25.043815 - 1894 1943 -1.806096 - 1894 2999 -0.249351 - 1895 789 -0.000019 - 1895 790 -2.804180 - 1895 791 -4.740185 - 1895 1845 -0.000006 - 1895 1846 -0.871649 - 1895 1847 -1.473435 - 1895 1890 -0.000005 - 1895 1891 -0.751850 - 1895 1892 -1.270926 - 1895 1893 0.000393 - 1895 1894 9.553912 - 1895 1895 16.149932 - 1895 1896 -0.000006 - 1895 1897 -0.954015 - 1895 1898 -1.612666 - 1895 1941 -0.000006 - 1895 1942 -0.841525 - 1895 1943 -1.422513 - 1895 2997 -0.000022 - 1895 2998 -3.327678 - 1895 2999 -5.625107 - 1896 792 -0.044529 - 1896 1848 -0.000731 - 1896 1893 -0.112470 - 1896 1894 7.574903 - 1896 1895 12.804616 - 1896 1896 183.718260 - 1896 1897 -128.363210 - 1896 1898 -216.985030 - 1896 1899 -0.000802 - 1896 1944 -0.202821 - 1896 1945 11.971675 - 1896 1946 20.236903 - 1896 3000 -0.001701 - 1896 3001 1.482458 - 1896 3002 2.505946 - 1897 1895 -2.074143 - 1897 1897 -35.025750 - 1897 1898 33.430196 - 1897 1946 -3.278081 - 1897 3002 -0.405916 - 1898 792 -0.000015 - 1898 793 -2.154605 - 1898 794 -3.642142 - 1898 1848 -0.000008 - 1898 1849 -1.097359 - 1898 1850 -1.854974 - 1898 1893 -0.000006 - 1898 1894 -0.954015 - 1898 1895 -1.612666 - 1898 1896 0.000492 - 1898 1897 9.067110 - 1898 1898 15.327034 - 1898 1899 -0.000008 - 1898 1900 -1.204310 - 1898 1901 -2.035764 - 1898 1944 -0.000007 - 1898 1945 -1.097232 - 1898 1946 -1.854760 - 1898 3000 -0.000018 - 1898 3001 -2.555645 - 1898 3002 -4.320061 - 1899 795 -0.033230 - 1899 1851 -0.000921 - 1899 1896 -0.128483 - 1899 1897 11.312072 - 1899 1898 19.121914 - 1899 1899 221.398250 - 1899 1900 -142.892820 - 1899 1901 -241.546020 - 1899 1902 -0.000994 - 1899 3003 -0.001452 - 1899 3004 2.189857 - 1899 3005 3.701734 - 1900 1898 -3.097388 - 1900 1900 -42.241754 - 1900 1901 37.042029 - 1900 3005 -0.599599 - 1901 795 -0.000013 - 1901 796 -1.781394 - 1901 797 -3.011268 - 1901 1851 -0.000010 - 1901 1852 -1.341189 - 1901 1853 -2.267146 - 1901 1896 -0.000008 - 1901 1897 -1.204310 - 1901 1898 -2.035764 - 1901 1899 0.000574 - 1901 1900 7.891224 - 1901 1901 13.339323 - 1901 1902 -0.000010 - 1901 1903 -1.446352 - 1901 1904 -2.444914 - 1901 3003 -0.000015 - 1901 3004 -2.113221 - 1901 3005 -3.572189 - 1902 798 -0.032800 - 1902 1854 -0.001112 - 1902 1899 -0.067449 - 1902 1900 4.815265 - 1902 1901 8.139723 - 1902 1902 264.482010 - 1902 1903 -161.661860 - 1902 1904 -273.273110 - 1902 3006 -0.001228 - 1902 3007 2.192554 - 1902 3008 3.706292 - 1903 1901 -1.318452 - 1903 1903 -50.484398 - 1903 1904 41.773412 - 1903 3008 -0.600333 - 1904 798 -0.000011 - 1904 799 -1.489850 - 1904 800 -2.518442 - 1904 1854 -0.000012 - 1904 1855 -1.600177 - 1904 1856 -2.704938 - 1904 1899 -0.000010 - 1904 1900 -1.446352 - 1904 1901 -2.444914 - 1904 1902 0.000664 - 1904 1903 6.309392 - 1904 1904 10.665392 - 1904 3006 -0.000013 - 1904 3007 -1.767325 - 1904 3008 -2.987485 - 1905 1905 1.000000 - 1906 1906 1.000000 - 1907 1907 1.000000 - 1908 1908 1.000000 - 1909 1909 1.000000 - 1910 1910 1.000000 - 1911 1911 1.000000 - 1912 1912 1.000000 - 1913 1913 1.000000 - 1914 1914 1.000000 - 1915 1915 1.000000 - 1916 1916 1.000000 - 1917 1917 1.000000 - 1918 1918 1.000000 - 1919 1919 1.000000 - 1920 1920 1.000000 - 1921 1921 1.000000 - 1922 1922 1.000000 - 1923 819 -0.061603 - 1923 1875 -0.005704 - 1923 1923 161.944700 - 1923 1924 -96.497379 - 1923 1925 -163.119170 - 1923 1926 -0.008047 - 1923 1971 -0.000543 - 1923 1972 1.519041 - 1923 1973 2.567787 - 1923 3027 -0.001612 - 1923 3028 0.291487 - 1923 3029 0.492729 - 1924 1924 -30.852941 - 1924 1925 25.038158 - 1924 1973 -0.415980 - 1924 3029 -0.079821 - 1925 819 -0.000014 - 1925 820 -2.429223 - 1925 821 -4.106358 - 1925 1875 -0.000006 - 1925 1876 -0.970719 - 1925 1877 -1.640904 - 1925 1923 0.000427 - 1925 1924 8.224674 - 1925 1925 13.902989 - 1925 1926 -0.000006 - 1925 1927 -0.969386 - 1925 1928 -1.638650 - 1925 1971 -0.000006 - 1925 1972 -0.970748 - 1925 1973 -1.640953 - 1925 3027 -0.000017 - 1925 3028 -2.881140 - 1925 3029 -4.870280 - 1926 822 -0.062083 - 1926 1878 -0.005493 - 1926 1923 -0.000546 - 1926 1924 1.594496 - 1926 1925 2.695336 - 1926 1926 161.940530 - 1926 1927 -98.694245 - 1926 1928 -166.832640 - 1926 1929 -0.023695 - 1926 1974 -0.008086 - 1926 1975 2.143620 - 1926 1976 3.623573 - 1926 3030 -0.001626 - 1926 3031 0.270891 - 1926 3032 0.457914 - 1927 1925 -0.436641 - 1927 1927 -30.856855 - 1927 1928 25.630146 - 1927 1976 -0.587015 - 1927 3032 -0.074181 - 1928 822 -0.000014 - 1928 823 -2.433610 - 1928 824 -4.113771 - 1928 1878 -0.000005 - 1928 1879 -0.919530 - 1928 1880 -1.554372 - 1928 1923 -0.000006 - 1928 1924 -0.969386 - 1928 1925 -1.638650 - 1928 1926 0.000432 - 1928 1927 9.065615 - 1928 1928 15.324507 - 1928 1929 -0.000005 - 1928 1930 -0.880782 - 1928 1931 -1.488873 - 1928 1974 -0.000006 - 1928 1975 -0.970848 - 1928 1976 -1.641121 - 1928 3030 -0.000017 - 1928 3031 -2.888000 - 1928 3032 -4.881872 - 1929 825 -0.062648 - 1929 1881 -0.000451 - 1929 1926 -0.000502 - 1929 1927 2.614306 - 1929 1928 4.419220 - 1929 1929 134.982910 - 1929 1930 -84.221274 - 1929 1931 -142.367640 - 1929 1932 -0.000420 - 1929 1977 -0.005546 - 1929 1978 2.447535 - 1929 1979 4.137312 - 1929 3033 -0.001973 - 1929 3034 0.262622 - 1929 3035 0.443935 - 1930 1928 -0.715906 - 1930 1930 -25.721199 - 1930 1931 21.881898 - 1930 1979 -0.670237 - 1930 3035 -0.071916 - 1931 825 -0.000017 - 1931 826 -2.918994 - 1931 827 -4.934267 - 1931 1881 -0.000005 - 1931 1882 -0.792577 - 1931 1883 -1.339772 - 1931 1926 -0.000005 - 1931 1927 -0.880782 - 1931 1928 -1.488873 - 1931 1929 0.000373 - 1931 1930 9.605163 - 1931 1931 16.236566 - 1931 1932 -0.000004 - 1931 1933 -0.737613 - 1931 1934 -1.246861 - 1931 1977 -0.000005 - 1931 1978 -0.808984 - 1931 1979 -1.367506 - 1931 3033 -0.000021 - 1931 3034 -3.463328 - 1931 3035 -5.854410 - 1932 828 -0.063486 - 1932 1884 -0.000385 - 1932 1929 -0.001938 - 1932 1930 3.429859 - 1932 1931 5.797834 - 1932 1932 113.387440 - 1932 1933 -72.722891 - 1932 1934 -122.930710 - 1932 1935 -0.000384 - 1932 1980 -0.008675 - 1932 1981 2.777829 - 1932 1982 4.695639 - 1932 3036 -0.002393 - 1932 3037 0.245664 - 1932 3038 0.415270 - 1933 1931 -0.939232 - 1933 1933 -21.611440 - 1933 1934 18.908185 - 1933 1982 -0.760679 - 1933 3038 -0.067272 - 1934 828 -0.000021 - 1934 829 -3.477420 - 1934 830 -5.878228 - 1934 1884 -0.000004 - 1934 1885 -0.663057 - 1934 1886 -1.120832 - 1934 1929 -0.000004 - 1934 1930 -0.737613 - 1934 1931 -1.246861 - 1934 1932 0.000328 - 1934 1933 10.346880 - 1934 1934 17.490356 - 1934 1935 -0.000004 - 1934 1936 -0.662028 - 1934 1937 -1.119092 - 1934 1980 -0.000004 - 1934 1981 -0.679535 - 1934 1982 -1.148685 - 1934 3036 -0.000025 - 1934 3037 -4.124800 - 1934 3038 -6.972558 - 1935 831 -0.063616 - 1935 1887 -0.000385 - 1935 1932 -0.013111 - 1935 1933 4.219542 - 1935 1934 7.132710 - 1935 1935 108.004160 - 1935 1936 -71.102064 - 1935 1937 -120.190930 - 1935 1938 -0.000394 - 1935 1983 -0.017027 - 1935 1984 3.507731 - 1935 1985 5.929468 - 1935 3039 -0.002576 - 1935 3040 0.253442 - 1935 3041 0.428418 - 1936 1934 -1.155466 - 1936 1936 -20.588297 - 1936 1937 18.497248 - 1936 1985 -0.960544 - 1936 3041 -0.069401 - 1937 831 -0.000023 - 1937 832 -3.653182 - 1937 833 -6.175339 - 1937 1887 -0.000004 - 1937 1888 -0.647431 - 1937 1889 -1.094416 - 1937 1932 -0.000004 - 1937 1933 -0.662028 - 1937 1934 -1.119092 - 1937 1935 0.000318 - 1937 1936 10.606735 - 1937 1937 17.929624 - 1937 1938 -0.000004 - 1937 1939 -0.662199 - 1937 1940 -1.119382 - 1937 1983 -0.000004 - 1937 1984 -0.647157 - 1937 1985 -1.093954 - 1937 3039 -0.000027 - 1937 3040 -4.332423 - 1937 3041 -7.323529 - 1938 834 -0.062280 - 1938 1890 -0.000416 - 1938 1935 -0.020496 - 1938 1936 5.068111 - 1938 1937 8.567135 - 1938 1938 113.412290 - 1938 1939 -76.112701 - 1938 1940 -128.660810 - 1938 1941 -0.000460 - 1938 1986 -0.032182 - 1938 1987 4.435406 - 1938 1988 7.497605 - 1938 3042 -0.002523 - 1938 3043 0.335842 - 1938 3044 0.567707 - 1939 1937 -1.387815 - 1939 1939 -21.624608 - 1939 1940 19.803364 - 1939 1988 -1.214556 - 1939 3044 -0.091963 - 1940 834 -0.000022 - 1940 835 -3.477370 - 1940 836 -5.878142 - 1940 1890 -0.000004 - 1940 1891 -0.680119 - 1940 1892 -1.149671 - 1940 1935 -0.000004 - 1940 1936 -0.662199 - 1940 1937 -1.119382 - 1940 1938 0.000331 - 1940 1939 10.374867 - 1940 1940 17.537663 - 1940 1941 -0.000005 - 1940 1942 -0.751356 - 1940 1943 -1.270091 - 1940 1986 -0.000004 - 1940 1987 -0.679026 - 1940 1988 -1.147825 - 1940 3042 -0.000026 - 1940 3043 -4.122364 - 1940 3044 -6.968440 - 1941 837 -0.059223 - 1941 1893 -0.000530 - 1941 1938 -0.029312 - 1941 1939 5.897699 - 1941 1940 9.969463 - 1941 1941 140.385140 - 1941 1942 -92.621167 - 1941 1943 -156.566820 - 1941 1944 -0.000600 - 1941 1989 -0.005705 - 1941 1990 4.155929 - 1941 1991 7.025182 - 1941 3045 -0.002099 - 1941 3046 0.511721 - 1941 3047 0.865014 - 1942 1940 -1.614953 - 1942 1942 -26.781272 - 1942 1943 24.056464 - 1942 1991 -1.138001 - 1942 3047 -0.140121 - 1943 837 -0.000019 - 1943 838 -2.813264 - 1943 839 -4.755541 - 1943 1893 -0.000006 - 1943 1894 -0.841525 - 1943 1895 -1.422513 - 1943 1938 -0.000005 - 1943 1939 -0.751356 - 1943 1940 -1.270091 - 1943 1941 0.000391 - 1943 1942 9.537883 - 1943 1943 16.122836 - 1943 1944 -0.000006 - 1943 1945 -0.953417 - 1943 1946 -1.611656 - 1943 1989 -0.000005 - 1943 1990 -0.841068 - 1943 1991 -1.421741 - 1943 3045 -0.000022 - 1943 3046 -3.334240 - 1943 3047 -5.636199 - 1944 840 -0.056386 - 1944 1896 -0.000703 - 1944 1941 -0.012654 - 1944 1942 4.640189 - 1944 1943 7.843776 - 1944 1944 183.651590 - 1944 1945 -118.357430 - 1944 1946 -200.071250 - 1944 1992 -0.008260 - 1944 1993 5.798895 - 1944 1994 9.802444 - 1944 3048 -0.001633 - 1944 3049 0.657020 - 1944 3050 1.110625 - 1945 1943 -1.270590 - 1945 1945 -35.029675 - 1945 1946 30.681916 - 1945 1994 -1.587871 - 1945 3050 -0.179905 - 1946 840 -0.000014 - 1946 841 -2.149620 - 1946 842 -3.633714 - 1946 1896 -0.000007 - 1946 1897 -1.097232 - 1946 1898 -1.854760 - 1946 1941 -0.000006 - 1946 1942 -0.953417 - 1946 1943 -1.611656 - 1946 1944 0.000481 - 1946 1945 7.837005 - 1946 1946 13.247663 - 1946 1992 -0.000007 - 1946 1993 -1.082569 - 1946 1994 -1.829974 - 1946 3048 -0.000017 - 1946 3049 -2.550221 - 1946 3050 -4.310890 - 1947 1947 1.000000 - 1948 1948 1.000000 - 1949 1949 1.000000 - 1950 1950 1.000000 - 1951 1951 1.000000 - 1952 1952 1.000000 - 1953 1953 1.000000 - 1954 1954 1.000000 - 1955 1955 1.000000 - 1956 1956 1.000000 - 1957 1957 1.000000 - 1958 1958 1.000000 - 1959 1959 1.000000 - 1960 1960 1.000000 - 1961 1961 1.000000 - 1962 1962 1.000000 - 1963 1963 1.000000 - 1964 1964 1.000000 - 1965 1965 1.000000 - 1966 1966 1.000000 - 1967 1967 1.000000 - 1968 1968 1.000000 - 1969 1969 1.000000 - 1970 1970 1.000000 - 1971 867 -0.061593 - 1971 1923 -0.008844 - 1971 1971 161.943980 - 1971 1972 -96.038303 - 1971 1973 -162.343150 - 1971 1974 -0.023870 - 1971 2019 -0.000540 - 1971 2020 1.059080 - 1971 2021 1.790269 - 1971 3075 -0.001602 - 1971 3076 0.292351 - 1971 3077 0.494191 - 1972 1972 -30.849071 - 1972 1973 24.921984 - 1972 2021 -0.290023 - 1972 3077 -0.080059 - 1973 867 -0.000014 - 1973 868 -2.429554 - 1973 869 -4.106918 - 1973 1923 -0.000006 - 1973 1924 -0.970748 - 1973 1925 -1.640953 - 1973 1971 0.000427 - 1973 1972 8.225719 - 1973 1973 13.904756 - 1973 1974 -0.000006 - 1973 1975 -0.969537 - 1973 1976 -1.638906 - 1973 2019 -0.000006 - 1973 2020 -0.970892 - 1973 2021 -1.641196 - 1973 3075 -0.000017 - 1973 3076 -2.881532 - 1973 3077 -4.870942 - 1974 870 -0.061994 - 1974 1926 -0.000542 - 1974 1971 -0.000541 - 1974 1972 0.971131 - 1974 1973 1.641600 - 1974 1974 161.972440 - 1974 1975 -97.548639 - 1974 1976 -164.896130 - 1974 1977 -0.022404 - 1974 2022 -0.000533 - 1974 2023 1.621599 - 1974 2024 2.741148 - 1974 3078 -0.001610 - 1974 3079 0.272826 - 1974 3080 0.461184 - 1975 1973 -0.265938 - 1975 1975 -30.853874 - 1975 1976 25.323854 - 1975 2024 -0.444065 - 1975 3080 -0.074711 - 1976 870 -0.000014 - 1976 871 -2.432101 - 1976 872 -4.111220 - 1976 1926 -0.000006 - 1976 1927 -0.970848 - 1976 1928 -1.641121 - 1976 1971 -0.000006 - 1976 1972 -0.969537 - 1976 1973 -1.638906 - 1976 1974 0.000432 - 1976 1975 9.097437 - 1976 1976 15.378299 - 1976 1977 -0.000005 - 1976 1978 -0.881342 - 1976 1979 -1.489819 - 1976 2022 -0.000006 - 1976 2023 -0.954392 - 1976 2024 -1.613303 - 1976 3078 -0.000017 - 1976 3079 -2.885760 - 1976 3080 -4.878084 - 1977 873 -0.062597 - 1977 1929 -0.000455 - 1977 1974 -0.000496 - 1977 1975 1.895418 - 1977 1976 3.204013 - 1977 1977 134.977250 - 1977 1978 -83.065857 - 1977 1979 -140.414520 - 1977 1980 -0.003258 - 1977 2025 -0.002751 - 1977 2026 2.015803 - 1977 2027 3.407513 - 1977 3081 -0.001948 - 1977 3082 0.262586 - 1977 3083 0.443875 - 1978 1976 -0.519047 - 1978 1978 -25.717348 - 1978 1979 21.575094 - 1978 2027 -0.552014 - 1978 3083 -0.071907 - 1979 873 -0.000017 - 1979 874 -2.917556 - 1979 875 -4.931837 - 1979 1929 -0.000005 - 1979 1930 -0.808984 - 1979 1931 -1.367506 - 1979 1974 -0.000005 - 1979 1975 -0.881342 - 1979 1976 -1.489819 - 1979 1977 0.000372 - 1979 1978 9.602247 - 1979 1979 16.231637 - 1979 1980 -0.000004 - 1979 1981 -0.737694 - 1979 1982 -1.246998 - 1979 2025 -0.000005 - 1979 2026 -0.792487 - 1979 2027 -1.339620 - 1979 3081 -0.000020 - 1979 3082 -3.461300 - 1979 3083 -5.850982 - 1980 876 -0.063482 - 1980 1932 -0.000388 - 1980 1977 -0.000421 - 1980 1978 2.646479 - 1980 1979 4.473608 - 1980 1980 113.377560 - 1980 1981 -71.634305 - 1980 1982 -121.090540 - 1980 1983 -0.000378 - 1980 2028 -0.010229 - 1980 2029 2.466187 - 1980 2030 4.168840 - 1980 3084 -0.002354 - 1980 3085 0.242048 - 1980 3086 0.409158 - 1981 1979 -0.724716 - 1981 1981 -21.607397 - 1981 1982 18.620214 - 1981 2030 -0.675345 - 1981 3086 -0.066282 - 1982 876 -0.000021 - 1982 877 -3.476062 - 1982 878 -5.875930 - 1982 1932 -0.000004 - 1982 1933 -0.679535 - 1982 1934 -1.148685 - 1982 1977 -0.000004 - 1982 1978 -0.737694 - 1982 1979 -1.246998 - 1982 1980 0.000327 - 1982 1981 10.343291 - 1982 1982 17.484288 - 1982 1983 -0.000004 - 1982 1984 -0.661601 - 1982 1985 -1.118369 - 1982 2028 -0.000004 - 1982 2029 -0.662996 - 1982 2030 -1.120728 - 1982 3084 -0.000025 - 1982 3085 -4.122979 - 1982 3086 -6.969480 - 1983 879 -0.063837 - 1983 1935 -0.000377 - 1983 1980 -0.004142 - 1983 1981 3.335276 - 1983 1982 5.637947 - 1983 1983 107.984370 - 1983 1984 -70.246557 - 1983 1985 -118.744780 - 1983 1986 -0.000386 - 1983 2031 -0.017480 - 1983 2032 3.552218 - 1983 2033 6.004669 - 1983 3087 -0.002525 - 1983 3088 0.239723 - 1983 3089 0.405227 - 1984 1982 -0.913330 - 1984 1984 -20.583992 - 1984 1985 18.273817 - 1984 2033 -0.972738 - 1984 3089 -0.065645 - 1985 879 -0.000022 - 1985 880 -3.656789 - 1985 881 -6.181435 - 1985 1935 -0.000004 - 1985 1936 -0.647157 - 1985 1937 -1.093954 - 1985 1980 -0.000004 - 1985 1981 -0.661601 - 1985 1982 -1.118369 - 1985 1983 0.000317 - 1985 1984 10.613731 - 1985 1985 17.941450 - 1985 1986 -0.000004 - 1985 1987 -0.662277 - 1985 1988 -1.119512 - 1985 2031 -0.000004 - 1985 2032 -0.646987 - 1985 2033 -1.093667 - 1985 3087 -0.000026 - 1985 3088 -4.336609 - 1985 3089 -7.330604 - 1986 882 -0.063020 - 1986 1938 -0.000405 - 1986 1983 -0.006533 - 1986 1984 4.332274 - 1986 1985 7.323277 - 1986 1986 113.439620 - 1986 1987 -77.100192 - 1986 1988 -130.330070 - 1986 1989 -0.000449 - 1986 2034 -0.025133 - 1986 2035 6.215425 - 1986 2036 10.506548 - 1986 3090 -0.002464 - 1986 3091 0.284331 - 1986 3092 0.480633 - 1987 1985 -1.186333 - 1987 1987 -21.620543 - 1987 1988 20.084135 - 1987 2036 -1.702018 - 1987 3092 -0.077859 - 1988 882 -0.000022 - 1988 883 -3.480307 - 1988 884 -5.883107 - 1988 1938 -0.000004 - 1988 1939 -0.679026 - 1988 1940 -1.147825 - 1988 1983 -0.000004 - 1988 1984 -0.662277 - 1988 1985 -1.119512 - 1988 1986 0.000330 - 1988 1987 10.397991 - 1988 1988 17.576753 - 1988 1989 -0.000005 - 1988 1990 -0.752022 - 1988 1991 -1.271217 - 1988 2034 -0.000004 - 1988 2035 -0.694510 - 1988 2036 -1.173998 - 1988 3090 -0.000026 - 1988 3091 -4.127419 - 1988 3092 -6.976984 - 1989 885 -0.060966 - 1989 1941 -0.000520 - 1989 1986 -0.059886 - 1989 1987 7.099303 - 1989 1988 12.000653 - 1989 1989 140.330510 - 1989 1990 -89.553894 - 1989 1991 -151.381900 - 1989 1992 -0.000582 - 1989 3093 -0.002060 - 1989 3094 0.380663 - 1989 3095 0.643473 - 1990 1988 -1.944016 - 1990 1990 -26.774330 - 1990 1991 23.233965 - 1990 3095 -0.104236 - 1991 885 -0.000018 - 1991 886 -2.808630 - 1991 887 -4.747708 - 1991 1941 -0.000005 - 1991 1942 -0.841068 - 1991 1943 -1.421741 - 1991 1986 -0.000005 - 1991 1987 -0.752022 - 1991 1988 -1.271217 - 1991 1989 0.000384 - 1991 1990 8.674964 - 1991 1991 14.664157 - 1991 1992 -0.000006 - 1991 1993 -0.940982 - 1991 1994 -1.590636 - 1991 3093 -0.000021 - 1991 3094 -3.329250 - 1991 3095 -5.627765 - 1992 888 -0.059611 - 1992 1944 -0.000680 - 1992 1989 -0.011693 - 1992 1990 4.188870 - 1992 1991 7.080866 - 1992 1992 178.074790 - 1992 1993 -108.790480 - 1992 1994 -183.899280 - 1992 3096 -0.001651 - 1992 3097 0.439028 - 1992 3098 0.742132 - 1993 1991 -1.147021 - 1993 1993 -33.989894 - 1993 1994 28.136886 - 1993 3098 -0.120216 - 1994 888 -0.000015 - 1994 889 -2.216528 - 1994 890 -3.746815 - 1994 1944 -0.000007 - 1994 1945 -1.082569 - 1994 1946 -1.829974 - 1994 1989 -0.000006 - 1994 1990 -0.940982 - 1994 1991 -1.590636 - 1994 1992 0.000462 - 1994 1993 6.870994 - 1994 1994 11.614721 - 1994 3096 -0.000017 - 1994 3097 -2.627090 - 1994 3098 -4.440830 - 1995 1995 1.000000 - 1996 1996 1.000000 - 1997 1997 1.000000 - 1998 1998 1.000000 - 1999 1999 1.000000 - 2000 2000 1.000000 - 2001 2001 1.000000 - 2002 2002 1.000000 - 2003 2003 1.000000 - 2004 2004 1.000000 - 2005 2005 1.000000 - 2006 2006 1.000000 - 2007 2007 1.000000 - 2008 2008 1.000000 - 2009 2009 1.000000 - 2010 2010 1.000000 - 2011 2011 1.000000 - 2012 2012 1.000000 - 2013 2013 1.000000 - 2014 2014 1.000000 - 2015 2015 1.000000 - 2016 2016 1.000000 - 2017 2017 1.000000 - 2018 2018 1.000000 - 2019 915 -0.061606 - 2019 1971 -0.004020 - 2019 2019 161.942500 - 2019 2020 -94.979557 - 2019 2021 -160.553440 - 2019 2022 -0.021480 - 2019 3123 -0.001594 - 2019 3124 0.288919 - 2019 3125 0.488389 - 2020 2020 -30.846670 - 2020 2021 24.637981 - 2020 3125 -0.079119 - 2021 915 -0.000014 - 2021 916 -2.428066 - 2021 917 -4.104402 - 2021 1971 -0.000006 - 2021 1972 -0.970892 - 2021 1973 -1.641196 - 2021 2019 0.000421 - 2021 2020 7.235636 - 2021 2021 12.231119 - 2021 2022 -0.000006 - 2021 2023 -0.953300 - 2021 2024 -1.611457 - 2021 3123 -0.000017 - 2021 3124 -2.879925 - 2021 3125 -4.868225 - 2022 918 -0.062109 - 2022 1974 -0.005943 - 2022 2019 -0.000528 - 2022 2020 0.374978 - 2022 2021 0.633863 - 2022 2022 156.564940 - 2022 2023 -93.134441 - 2022 2024 -157.434340 - 2022 2025 -0.028856 - 2022 2070 -0.001318 - 2022 2071 0.964984 - 2022 2072 1.631208 - 2022 3126 -0.001653 - 2022 3127 0.268406 - 2022 3128 0.453714 - 2023 2021 -0.102686 - 2023 2023 -29.821783 - 2023 2024 24.170331 - 2023 2072 -0.264256 - 2023 3128 -0.073501 - 2024 918 -0.000015 - 2024 919 -2.514767 - 2024 920 -4.250958 - 2024 1974 -0.000006 - 2024 1975 -0.954392 - 2024 1976 -1.613303 - 2024 2019 -0.000006 - 2024 2020 -0.953300 - 2024 2021 -1.611457 - 2024 2022 0.000419 - 2024 2023 9.145346 - 2024 2024 15.459282 - 2024 2025 -0.000005 - 2024 2026 -0.848694 - 2024 2027 -1.434632 - 2024 2070 -0.000005 - 2024 2071 -0.887083 - 2024 2072 -1.499525 - 2024 3126 -0.000017 - 2024 3127 -2.983769 - 2024 3128 -5.043760 - 2025 921 -0.062807 - 2025 1977 -0.000441 - 2025 2022 -0.000473 - 2025 2023 1.108379 - 2025 2024 1.873602 - 2025 2025 129.588830 - 2025 2026 -78.577491 - 2025 2027 -132.827390 - 2025 2028 -0.011540 - 2025 2073 -0.000916 - 2025 2074 1.470365 - 2025 2075 2.485505 - 2025 3129 -0.002008 - 2025 3130 0.254955 - 2025 3131 0.430975 - 2026 2024 -0.303523 - 2026 2026 -24.685307 - 2026 2027 20.401186 - 2026 2075 -0.402652 - 2026 3131 -0.069818 - 2027 921 -0.000018 - 2027 922 -3.038776 - 2027 923 -5.136748 - 2027 1977 -0.000005 - 2027 1978 -0.792487 - 2027 1979 -1.339620 - 2027 2022 -0.000005 - 2027 2023 -0.848694 - 2027 2024 -1.434632 - 2027 2025 0.000360 - 2027 2026 9.717688 - 2027 2027 16.426779 - 2027 2028 -0.000004 - 2027 2029 -0.705276 - 2027 2030 -1.192198 - 2027 2073 -0.000004 - 2027 2074 -0.724895 - 2027 2075 -1.225362 - 2027 3129 -0.000021 - 2027 3130 -3.604792 - 2027 3131 -6.093541 - 2028 924 -0.063624 - 2028 1980 -0.000373 - 2028 2025 -0.000397 - 2028 2026 1.700641 - 2028 2027 2.874763 - 2028 2028 107.991650 - 2028 2029 -66.997482 - 2028 2030 -113.252470 - 2028 2031 -0.004181 - 2028 2076 -0.004298 - 2028 2077 1.944635 - 2028 2078 3.287208 - 2028 3132 -0.002434 - 2028 3133 0.237593 - 2028 3134 0.401627 - 2029 2027 -0.465709 - 2029 2029 -20.575274 - 2029 2030 17.405884 - 2029 2078 -0.532526 - 2029 3134 -0.065063 - 2030 924 -0.000021 - 2030 925 -3.647962 - 2030 926 -6.166510 - 2030 1980 -0.000004 - 2030 1981 -0.662996 - 2030 1982 -1.120728 - 2030 2025 -0.000004 - 2030 2026 -0.705276 - 2030 2027 -1.192198 - 2030 2028 0.000315 - 2030 2029 10.639110 - 2030 2030 17.984341 - 2030 2031 -0.000004 - 2030 2032 -0.646747 - 2030 2033 -1.093260 - 2030 2076 -0.000004 - 2030 2077 -0.647143 - 2030 2078 -1.093929 - 2030 3132 -0.000025 - 2030 3133 -4.326679 - 2030 3134 -7.313814 - 2031 927 -0.063795 - 2031 1983 -0.000369 - 2031 2028 -0.000369 - 2031 2029 2.115171 - 2031 2030 3.575483 - 2031 2031 107.987120 - 2031 2032 -68.038213 - 2031 2033 -115.011800 - 2031 2034 -0.000386 - 2031 2079 -0.004367 - 2031 2080 2.573304 - 2031 2081 4.349913 - 2031 3135 -0.002466 - 2031 3136 0.229615 - 2031 3137 0.388141 - 2032 2030 -0.579222 - 2032 2032 -20.579659 - 2032 2033 17.679983 - 2032 2081 -0.704679 - 2032 3137 -0.062878 - 2033 927 -0.000022 - 2033 928 -3.648922 - 2033 929 -6.168137 - 2033 1983 -0.000004 - 2033 1984 -0.646987 - 2033 1985 -1.093667 - 2033 2028 -0.000004 - 2033 2029 -0.646747 - 2033 2030 -1.093260 - 2033 2031 0.000315 - 2033 2032 10.596529 - 2033 2033 17.912372 - 2033 2034 -0.000004 - 2033 2035 -0.677482 - 2033 2036 -1.145215 - 2033 2079 -0.000004 - 2033 2080 -0.646870 - 2033 2081 -1.093470 - 2033 3135 -0.000026 - 2033 3136 -4.327212 - 2033 3137 -7.314718 - 2034 930 -0.063493 - 2034 1986 -0.000401 - 2034 2031 -0.000464 - 2034 2032 2.088239 - 2034 2033 3.529959 - 2034 2034 118.776760 - 2034 2035 -74.824506 - 2034 2036 -126.483280 - 2034 2082 -0.009178 - 2034 2083 3.072266 - 2034 2084 5.193354 - 2034 3138 -0.002271 - 2034 3139 0.237356 - 2034 3140 0.401227 - 2035 2033 -0.571843 - 2035 2035 -22.641647 - 2035 2036 19.433192 - 2035 2084 -0.841311 - 2035 3140 -0.064997 - 2036 930 -0.000020 - 2036 931 -3.320339 - 2036 932 -5.612698 - 2036 1986 -0.000004 - 2036 1987 -0.694510 - 2036 1988 -1.173998 - 2036 2031 -0.000004 - 2036 2032 -0.677482 - 2036 2033 -1.145215 - 2036 2034 0.000334 - 2036 2035 9.359233 - 2036 2036 15.820839 - 2036 2082 -0.000004 - 2036 2083 -0.727555 - 2036 2084 -1.229859 - 2036 3138 -0.000024 - 2036 3139 -3.936805 - 2036 3140 -6.654771 - 2037 2037 1.000000 - 2038 2038 1.000000 - 2039 2039 1.000000 - 2040 2040 1.000000 - 2041 2041 1.000000 - 2042 2042 1.000000 - 2043 2043 1.000000 - 2044 2044 1.000000 - 2045 2045 1.000000 - 2046 2046 1.000000 - 2047 2047 1.000000 - 2048 2048 1.000000 - 2049 2049 1.000000 - 2050 2050 1.000000 - 2051 2051 1.000000 - 2052 2052 1.000000 - 2053 2053 1.000000 - 2054 2054 1.000000 - 2055 2055 1.000000 - 2056 2056 1.000000 - 2057 2057 1.000000 - 2058 2058 1.000000 - 2059 2059 1.000000 - 2060 2060 1.000000 - 2061 2061 1.000000 - 2062 2062 1.000000 - 2063 2063 1.000000 - 2064 2064 1.000000 - 2065 2065 1.000000 - 2066 2066 1.000000 - 2067 2067 1.000000 - 2068 2068 1.000000 - 2069 2069 1.000000 - 2070 966 -0.062498 - 2070 2022 -0.000489 - 2070 2070 140.357330 - 2070 2071 -82.325452 - 2070 2072 -139.162850 - 2070 2073 -0.025370 - 2070 3174 -0.001836 - 2070 3175 0.261047 - 2070 3176 0.441274 - 2071 2071 -26.735187 - 2071 2072 21.352282 - 2071 3176 -0.071486 - 2072 966 -0.000016 - 2072 967 -2.805286 - 2072 968 -4.742052 - 2072 2022 -0.000005 - 2072 2023 -0.887083 - 2072 2024 -1.499525 - 2072 2070 0.000373 - 2072 2071 7.774021 - 2072 2072 13.141196 - 2072 2073 -0.000004 - 2072 2074 -0.751144 - 2072 2075 -1.269733 - 2072 3174 -0.000019 - 2072 3175 -3.327513 - 2072 3176 -5.624825 - 2073 969 -0.063249 - 2073 2025 -0.000400 - 2073 2070 -0.000415 - 2073 2071 0.274430 - 2073 2072 0.463896 - 2073 2073 113.398910 - 2073 2074 -67.964341 - 2073 2075 -114.886920 - 2073 2076 -0.014399 - 2073 2121 -0.000366 - 2073 2122 1.171810 - 2073 2123 1.980828 - 2073 3177 -0.002275 - 2073 3178 0.247127 - 2073 3179 0.417743 - 2074 2072 -0.075151 - 2074 2074 -21.597166 - 2074 2075 17.640585 - 2074 2123 -0.320895 - 2074 3179 -0.067674 - 2075 969 -0.000020 - 2075 970 -3.471673 - 2075 971 -5.868516 - 2075 2025 -0.000004 - 2075 2026 -0.724895 - 2075 2027 -1.225362 - 2075 2070 -0.000004 - 2075 2071 -0.751144 - 2075 2072 -1.269733 - 2075 2073 0.000325 - 2075 2074 10.393410 - 2075 2075 17.569019 - 2075 2076 -0.000004 - 2075 2077 -0.662557 - 2075 2078 -1.119986 - 2075 2121 -0.000004 - 2075 2122 -0.662992 - 2075 2123 -1.120722 - 2075 3177 -0.000024 - 2075 3178 -4.117729 - 2075 3179 -6.960609 - 2076 972 -0.063744 - 2076 2028 -0.000360 - 2076 2073 -0.000368 - 2076 2074 0.950555 - 2076 2075 1.606818 - 2076 2076 107.992110 - 2076 2077 -65.831628 - 2076 2078 -111.281710 - 2076 2079 -0.004244 - 2076 2124 -0.000360 - 2076 2125 1.536007 - 2076 2126 2.596464 - 2076 3180 -0.002402 - 2076 3181 0.225549 - 2076 3182 0.381267 - 2077 2075 -0.260304 - 2077 2077 -20.572200 - 2077 2078 17.094281 - 2077 2126 -0.420628 - 2077 3182 -0.061765 - 2078 972 -0.000021 - 2078 973 -3.645145 - 2078 974 -6.161749 - 2078 2028 -0.000004 - 2078 2029 -0.647143 - 2078 2030 -1.093929 - 2078 2073 -0.000004 - 2078 2074 -0.662557 - 2078 2075 -1.119986 - 2078 2076 0.000314 - 2078 2077 10.574418 - 2078 2078 17.874985 - 2078 2079 -0.000004 - 2078 2080 -0.646832 - 2078 2081 -1.093405 - 2078 2124 -0.000004 - 2078 2125 -0.647096 - 2078 2126 -1.093851 - 2078 3180 -0.000025 - 2078 3181 -4.323339 - 2078 3182 -7.308167 - 2079 975 -0.063758 - 2079 2031 -0.000363 - 2079 2076 -0.000363 - 2079 2077 1.485970 - 2079 2078 2.511882 - 2079 2079 107.979000 - 2079 2080 -66.940390 - 2079 2081 -113.156040 - 2079 2082 -0.004367 - 2079 2127 -0.000380 - 2079 2128 2.108747 - 2079 2129 3.564626 - 2079 3183 -0.002427 - 2079 3184 0.229192 - 2079 3185 0.387426 - 2080 2078 -0.406923 - 2080 2080 -20.575438 - 2080 2081 17.389873 - 2080 2129 -0.577468 - 2080 3185 -0.062762 - 2081 975 -0.000021 - 2081 976 -3.648793 - 2081 977 -6.167920 - 2081 2031 -0.000004 - 2081 2032 -0.646870 - 2081 2033 -1.093470 - 2081 2076 -0.000004 - 2081 2077 -0.646832 - 2081 2078 -1.093405 - 2081 2079 0.000315 - 2081 2080 10.641571 - 2081 2081 17.988511 - 2081 2082 -0.000004 - 2081 2083 -0.691878 - 2081 2084 -1.169550 - 2081 2127 -0.000004 - 2081 2128 -0.677665 - 2081 2129 -1.145525 - 2081 3183 -0.000025 - 2081 3184 -4.327224 - 2081 3185 -7.314740 - 2082 978 -0.063402 - 2082 2034 -0.000413 - 2082 2079 -0.000392 - 2082 2080 1.963315 - 2082 2081 3.318788 - 2082 2082 124.164440 - 2082 2083 -74.777714 - 2082 2084 -126.404160 - 2082 3186 -0.002134 - 2082 3187 0.229163 - 2082 3188 0.387377 - 2083 2081 -0.537639 - 2083 2083 -23.666192 - 2083 2084 19.383922 - 2083 3188 -0.062754 - 2084 978 -0.000019 - 2084 979 -3.173069 - 2084 980 -5.363752 - 2084 2034 -0.000004 - 2084 2035 -0.727555 - 2084 2036 -1.229859 - 2084 2079 -0.000004 - 2084 2080 -0.691878 - 2084 2081 -1.169550 - 2084 2082 0.000340 - 2084 2083 8.357926 - 2084 2084 14.128229 - 2084 3186 -0.000022 - 2084 3187 -3.762768 - 2084 3188 -6.360580 - 2085 2085 1.000000 - 2086 2086 1.000000 - 2087 2087 1.000000 - 2088 2088 1.000000 - 2089 2089 1.000000 - 2090 2090 1.000000 - 2091 2091 1.000000 - 2092 2092 1.000000 - 2093 2093 1.000000 - 2094 2094 1.000000 - 2095 2095 1.000000 - 2096 2096 1.000000 - 2097 2097 1.000000 - 2098 2098 1.000000 - 2099 2099 1.000000 - 2100 2100 1.000000 - 2101 2101 1.000000 - 2102 2102 1.000000 - 2103 2103 1.000000 - 2104 2104 1.000000 - 2105 2105 1.000000 - 2106 2106 1.000000 - 2107 2107 1.000000 - 2108 2108 1.000000 - 2109 2109 1.000000 - 2110 2110 1.000000 - 2111 2111 1.000000 - 2112 2112 1.000000 - 2113 2113 1.000000 - 2114 2114 1.000000 - 2115 2115 1.000000 - 2116 2116 1.000000 - 2117 2117 1.000000 - 2118 2118 1.000000 - 2119 2119 1.000000 - 2120 2120 1.000000 - 2121 1017 -0.063775 - 2121 2073 -0.000421 - 2121 2121 107.984440 - 2121 2122 -64.108336 - 2121 2123 -108.368730 - 2121 2124 -0.013898 - 2121 2169 -0.000355 - 2121 2170 0.763957 - 2121 2171 1.291392 - 2121 3225 -0.002371 - 2121 3226 0.220269 - 2121 3227 0.372344 - 2122 2122 -20.566613 - 2122 2123 16.636125 - 2122 2171 -0.209207 - 2122 3227 -0.060320 - 2123 1017 -0.000021 - 2123 1018 -3.643823 - 2123 1019 -6.159519 - 2123 2073 -0.000004 - 2123 2074 -0.662992 - 2123 2075 -1.120722 - 2123 2121 0.000309 - 2123 2122 9.925047 - 2123 2123 16.777299 - 2123 2124 -0.000004 - 2123 2125 -0.647000 - 2123 2126 -1.093689 - 2123 2169 -0.000004 - 2123 2170 -0.647158 - 2123 2171 -1.093956 - 2123 3225 -0.000025 - 2123 3226 -4.321770 - 2123 3227 -7.305520 - 2124 1020 -0.063794 - 2124 2076 -0.000572 - 2124 2121 -0.000356 - 2124 2122 0.535967 - 2124 2123 0.905999 - 2124 2124 107.995000 - 2124 2125 -64.988562 - 2124 2126 -109.856560 - 2124 2127 -0.004156 - 2124 2172 -0.000356 - 2124 2173 1.120414 - 2124 2174 1.893947 - 2124 3228 -0.002378 - 2124 3229 0.218914 - 2124 3230 0.370051 - 2125 2123 -0.146772 - 2125 2125 -20.569350 - 2125 2126 16.870519 - 2125 2174 -0.306821 - 2125 3230 -0.059948 - 2126 1020 -0.000021 - 2126 1021 -3.643718 - 2126 1022 -6.159334 - 2126 2076 -0.000004 - 2126 2077 -0.647096 - 2126 2078 -1.093851 - 2126 2121 -0.000004 - 2126 2122 -0.647000 - 2126 2123 -1.093689 - 2126 2124 0.000313 - 2126 2125 10.586380 - 2126 2126 17.895203 - 2126 2127 -0.000004 - 2126 2128 -0.677986 - 2126 2129 -1.146067 - 2126 2172 -0.000004 - 2126 2173 -0.647053 - 2126 2174 -1.093777 - 2126 3228 -0.000025 - 2126 3229 -4.321222 - 2126 3230 -7.304589 - 2127 1023 -0.063581 - 2127 2079 -0.000890 - 2127 2124 -0.000376 - 2127 2125 1.057110 - 2127 2126 1.786937 - 2127 2127 118.769100 - 2127 2128 -70.706098 - 2127 2129 -119.521590 - 2127 3231 -0.002177 - 2127 3232 0.218447 - 2127 3233 0.369263 - 2128 2126 -0.289484 - 2128 2128 -22.628834 - 2128 2129 18.337250 - 2128 3233 -0.059820 - 2129 1023 -0.000019 - 2129 1024 -3.313785 - 2129 1025 -5.601621 - 2129 2079 -0.000004 - 2129 2080 -0.677665 - 2129 2081 -1.145525 - 2129 2124 -0.000004 - 2129 2125 -0.677986 - 2129 2126 -1.146067 - 2129 2127 0.000328 - 2129 2128 8.602428 - 2129 2129 14.541544 - 2129 3231 -0.000023 - 2129 3232 -3.930456 - 2129 3233 -6.644043 - 2130 2130 1.000000 - 2131 2131 1.000000 - 2132 2132 1.000000 - 2133 2133 1.000000 - 2134 2134 1.000000 - 2135 2135 1.000000 - 2136 2136 1.000000 - 2137 2137 1.000000 - 2138 2138 1.000000 - 2139 2139 1.000000 - 2140 2140 1.000000 - 2141 2141 1.000000 - 2142 2142 1.000000 - 2143 2143 1.000000 - 2144 2144 1.000000 - 2145 2145 1.000000 - 2146 2146 1.000000 - 2147 2147 1.000000 - 2148 2148 1.000000 - 2149 2149 1.000000 - 2150 2150 1.000000 - 2151 2151 1.000000 - 2152 2152 1.000000 - 2153 2153 1.000000 - 2154 2154 1.000000 - 2155 2155 1.000000 - 2156 2156 1.000000 - 2157 2157 1.000000 - 2158 2158 1.000000 - 2159 2159 1.000000 - 2160 2160 1.000000 - 2161 2161 1.000000 - 2162 2162 1.000000 - 2163 2163 1.000000 - 2164 2164 1.000000 - 2165 2165 1.000000 - 2166 2166 1.000000 - 2167 2167 1.000000 - 2168 2168 1.000000 - 2169 1065 -0.063871 - 2169 2121 -0.005251 - 2169 2169 107.981400 - 2169 2170 -63.334227 - 2169 2171 -107.060180 - 2169 2172 -0.014356 - 2169 3273 -0.002358 - 2169 3274 0.212070 - 2169 3275 0.358484 - 2170 2170 -20.564573 - 2170 2171 16.429162 - 2170 3275 -0.058075 - 2171 1065 -0.000021 - 2171 1066 -3.642639 - 2171 1067 -6.157516 - 2171 2121 -0.000004 - 2171 2122 -0.647158 - 2171 2123 -1.093956 - 2171 2169 0.000305 - 2171 2170 9.259477 - 2171 2171 15.652221 - 2171 2172 -0.000004 - 2171 2173 -0.647013 - 2171 2174 -1.093711 - 2171 3273 -0.000025 - 2171 3274 -4.320365 - 2171 3275 -7.303145 - 2172 1068 -0.063889 - 2172 2124 -0.004792 - 2172 2169 -0.000354 - 2172 2170 0.179397 - 2172 2171 0.303252 - 2172 2172 107.993130 - 2172 2173 -63.508591 - 2172 2174 -107.354860 - 2172 3276 -0.002361 - 2172 3277 0.212058 - 2172 3278 0.358463 - 2173 2171 -0.049127 - 2173 2173 -20.566709 - 2173 2174 16.471721 - 2173 3278 -0.058071 - 2174 1068 -0.000021 - 2174 1069 -3.643656 - 2174 1070 -6.159233 - 2174 2124 -0.000004 - 2174 2125 -0.647053 - 2174 2126 -1.093777 - 2174 2169 -0.000004 - 2174 2170 -0.647013 - 2174 2171 -1.093711 - 2174 2172 0.000305 - 2174 2173 9.261599 - 2174 2174 15.655799 - 2174 3276 -0.000025 - 2174 3277 -4.321573 - 2174 3278 -7.305183 - 2175 2175 1.000000 - 2176 2176 1.000000 - 2177 2177 1.000000 - 2178 2178 1.000000 - 2179 2179 1.000000 - 2180 2180 1.000000 - 2181 2181 1.000000 - 2182 2182 1.000000 - 2183 2183 1.000000 - 2184 2184 1.000000 - 2185 2185 1.000000 - 2186 2186 1.000000 - 2187 2187 1.000000 - 2188 2188 1.000000 - 2189 2189 1.000000 - 2190 2190 1.000000 - 2191 2191 1.000000 - 2192 2192 1.000000 - 2193 2193 1.000000 - 2194 2194 1.000000 - 2195 2195 1.000000 - 2196 2196 1.000000 - 2197 2197 1.000000 - 2198 2198 1.000000 - 2199 2199 1.000000 - 2200 2200 1.000000 - 2201 2201 1.000000 - 2202 2202 1.000000 - 2203 2203 1.000000 - 2204 2204 1.000000 - 2205 2205 1.000000 - 2206 2206 1.000000 - 2207 2207 1.000000 - 2208 2208 1.000000 - 2209 2209 1.000000 - 2210 2210 1.000000 - 2211 2211 1.000000 - 2212 2212 1.000000 - 2213 2213 1.000000 - 2214 2214 1.000000 - 2215 2215 1.000000 - 2216 2216 1.000000 - 2217 2217 1.000000 - 2218 2218 1.000000 - 2219 2219 1.000000 - 2220 2220 1.000000 - 2221 2221 1.000000 - 2222 2222 1.000000 - 2223 2223 1.000000 - 2224 2224 1.000000 - 2225 2225 1.000000 - 2226 2226 1.000000 - 2227 2227 1.000000 - 2228 2228 1.000000 - 2229 2229 1.000000 - 2230 2230 1.000000 - 2231 2231 1.000000 - 2232 2232 1.000000 - 2233 2233 1.000000 - 2234 2234 1.000000 - 2235 2235 1.000000 - 2236 2236 1.000000 - 2237 2237 1.000000 - 2238 2238 1.000000 - 2239 2239 1.000000 - 2240 2240 1.000000 - 2241 2241 1.000000 - 2242 2242 1.000000 - 2243 2243 1.000000 - 2244 2244 1.000000 - 2245 2245 1.000000 - 2246 2246 1.000000 - 2247 2247 1.000000 - 2248 2248 1.000000 - 2249 2249 1.000000 - 2250 2250 1.000000 - 2251 2251 1.000000 - 2252 2252 1.000000 - 2253 2253 1.000000 - 2254 2254 1.000000 - 2255 2255 1.000000 - 2256 2256 1.000000 - 2257 2257 1.000000 - 2258 2258 1.000000 - 2259 2259 1.000000 - 2260 2260 1.000000 - 2261 2261 1.000000 - 2262 2262 1.000000 - 2263 2263 1.000000 - 2264 2264 1.000000 - 2265 2265 1.000000 - 2266 2266 1.000000 - 2267 2267 1.000000 - 2268 2268 1.000000 - 2269 2269 1.000000 - 2270 2270 1.000000 - 2271 2271 1.000000 - 2272 2272 1.000000 - 2273 2273 1.000000 - 2274 2274 1.000000 - 2275 2275 1.000000 - 2276 2276 1.000000 - 2277 2277 1.000000 - 2278 2278 1.000000 - 2279 2279 1.000000 - 2280 2280 1.000000 - 2281 2281 1.000000 - 2282 2282 1.000000 - 2283 2283 1.000000 - 2284 2284 1.000000 - 2285 2285 1.000000 - 2286 2286 1.000000 - 2287 2287 1.000000 - 2288 2288 1.000000 - 2289 2289 1.000000 - 2290 2290 1.000000 - 2291 2291 1.000000 - 2292 2292 1.000000 - 2293 2293 1.000000 - 2294 2294 1.000000 - 2295 2295 1.000000 - 2296 2296 1.000000 - 2297 2297 1.000000 - 2298 2298 1.000000 - 2299 2299 1.000000 - 2300 2300 1.000000 - 2301 2301 1.000000 - 2302 2302 1.000000 - 2303 2303 1.000000 - 2304 2304 1.000000 - 2305 2305 1.000000 - 2306 2306 1.000000 - 2307 2307 1.000000 - 2308 2308 1.000000 - 2309 2309 1.000000 - 2310 2310 1.000000 - 2311 2311 1.000000 - 2312 2312 1.000000 - 2313 2313 1.000000 - 2314 2314 1.000000 - 2315 2315 1.000000 - 2316 2316 1.000000 - 2317 2317 1.000000 - 2318 2318 1.000000 - 2319 2319 1.000000 - 2320 2320 1.000000 - 2321 2321 1.000000 - 2322 2322 1.000000 - 2323 2323 1.000000 - 2324 2324 1.000000 - 2325 2325 1.000000 - 2326 2326 1.000000 - 2327 2327 1.000000 - 2328 2328 1.000000 - 2329 2329 1.000000 - 2330 2330 1.000000 - 2331 2331 1.000000 - 2332 2332 1.000000 - 2333 2333 1.000000 - 2334 2334 1.000000 - 2335 2335 1.000000 - 2336 2336 1.000000 - 2337 2337 1.000000 - 2338 2338 1.000000 - 2339 2339 1.000000 - 2340 2340 1.000000 - 2341 2341 1.000000 - 2342 2342 1.000000 - 2343 1239 -1.623128 - 2343 2343 206.087320 - 2343 2344 -134.756290 - 2343 2345 -227.792040 - 2343 2346 -0.597370 - 2343 2391 -2.935558 - 2344 2344 -27.720556 - 2344 2345 25.292823 - 2345 1239 -0.179884 - 2345 1240 -0.904106 - 2345 1241 -1.528301 - 2345 2343 0.427251 - 2345 2344 1.748997 - 2345 2345 2.956504 - 2345 2346 -0.081461 - 2345 2347 -0.409416 - 2345 2348 -0.692077 - 2345 2391 -0.086021 - 2345 2392 -0.432400 - 2345 2393 -0.730930 - 2346 1242 -1.075363 - 2346 2343 -0.437446 - 2346 2344 0.447709 - 2346 2345 0.756808 - 2346 2346 192.135300 - 2346 2347 -126.627090 - 2346 2348 -214.050270 - 2346 2349 -0.430306 - 2346 2394 -1.366976 - 2347 2345 -0.072554 - 2347 2347 -28.872728 - 2347 2348 26.519672 - 2348 1242 -0.095840 - 2348 1243 -1.378043 - 2348 1244 -2.329442 - 2348 2343 -0.081461 - 2348 2344 -0.409416 - 2348 2345 -0.692077 - 2348 2346 0.335376 - 2348 2347 2.918107 - 2348 2348 4.932764 - 2348 2349 -0.038350 - 2348 2350 -0.551416 - 2348 2351 -0.932112 - 2348 2394 -0.040056 - 2348 2395 -0.576030 - 2348 2396 -0.973720 - 2349 1245 -0.775988 - 2349 2346 -0.290225 - 2349 2347 0.252147 - 2349 2348 0.426230 - 2349 2349 178.503430 - 2349 2350 -117.763870 - 2349 2351 -199.068040 - 2349 2397 -1.007434 - 2350 2348 -0.048115 - 2350 2350 -29.017221 - 2350 2351 26.676978 - 2351 1245 -0.048389 - 2351 1246 -1.856517 - 2351 1247 -3.138256 - 2351 2346 -0.038350 - 2351 2347 -0.551416 - 2351 2348 -0.932112 - 2351 2349 0.184065 - 2351 2350 3.094806 - 2351 2351 5.231460 - 2351 2397 -0.017817 - 2351 2398 -0.683654 - 2351 2399 -1.155649 - 2352 2352 1.000000 - 2353 2353 1.000000 - 2354 2354 1.000000 - 2355 2355 1.000000 - 2356 2356 1.000000 - 2357 2357 1.000000 - 2358 2358 1.000000 - 2359 2359 1.000000 - 2360 2360 1.000000 - 2361 2361 1.000000 - 2362 2362 1.000000 - 2363 2363 1.000000 - 2364 2364 1.000000 - 2365 2365 1.000000 - 2366 2366 1.000000 - 2367 1263 -0.913209 - 2367 2367 296.811240 - 2367 2368 -189.425000 - 2367 2369 -320.204020 - 2367 2415 -1.956371 - 2368 2368 -45.507683 - 2368 2369 40.208884 - 2369 1263 -0.056946 - 2369 1264 -0.906602 - 2369 1265 -1.532520 - 2369 2367 0.194376 - 2369 2368 1.824409 - 2369 2369 3.083981 - 2369 2415 -0.057328 - 2369 2416 -0.912754 - 2369 2417 -1.542919 - 2370 2370 1.000000 - 2371 2371 1.000000 - 2372 2372 1.000000 - 2373 2373 1.000000 - 2374 2374 1.000000 - 2375 2375 1.000000 - 2376 2376 1.000000 - 2377 2377 1.000000 - 2378 2378 1.000000 - 2379 2379 1.000000 - 2380 2380 1.000000 - 2381 2381 1.000000 - 2382 1278 -1.189563 - 2382 2382 275.742470 - 2382 2383 -177.448060 - 2382 2384 -299.958030 - 2382 2385 -0.780969 - 2382 2430 -3.148418 - 2383 2383 -38.965438 - 2383 2384 34.751750 - 2384 1278 -0.106018 - 2384 1279 -0.765767 - 2384 1280 -1.294453 - 2384 2382 0.364993 - 2384 2383 2.061685 - 2384 2384 3.485070 - 2384 2385 -0.086551 - 2384 2386 -0.625142 - 2384 2387 -1.056740 - 2384 2430 -0.092258 - 2384 2431 -0.666450 - 2384 2432 -1.126566 - 2385 1281 -0.811244 - 2385 2382 -0.615078 - 2385 2383 0.905369 - 2385 2384 1.530435 - 2385 2385 250.317890 - 2385 2386 -161.868230 - 2385 2387 -273.622060 - 2385 2388 -0.556554 - 2385 2433 -2.100783 - 2386 2384 -0.154764 - 2386 2386 -39.385424 - 2386 2387 35.440174 - 2387 1281 -0.050588 - 2387 1282 -1.196163 - 2387 1283 -2.021995 - 2387 2382 -0.086551 - 2387 2383 -0.625142 - 2387 2384 -1.056740 - 2387 2385 0.288836 - 2387 2386 3.524898 - 2387 2387 5.958487 - 2387 2388 -0.034706 - 2387 2389 -0.820614 - 2387 2390 -1.387166 - 2387 2433 -0.037154 - 2387 2434 -0.878605 - 2387 2435 -1.485194 - 2388 1284 -0.883968 - 2388 2385 -0.325797 - 2388 2386 0.393734 - 2388 2387 0.665567 - 2388 2388 231.336530 - 2388 2389 -150.058770 - 2388 2390 -253.659180 - 2388 2391 -0.521479 - 2388 2436 -0.919275 - 2389 2387 -0.081257 - 2389 2389 -38.687284 - 2389 2390 34.830996 - 2390 1284 -0.025903 - 2390 1285 -1.552556 - 2390 1286 -2.624439 - 2390 2385 -0.034706 - 2390 2386 -0.820614 - 2390 2387 -1.387166 - 2390 2388 0.171797 - 2390 2389 4.267915 - 2390 2390 7.214480 - 2390 2391 -0.015281 - 2390 2392 -0.915891 - 2390 2393 -1.548222 - 2390 2436 -0.016258 - 2390 2437 -0.974557 - 2390 2438 -1.647390 - 2391 1287 -0.612172 - 2391 2343 -4.155703 - 2391 2344 13.190091 - 2391 2345 22.296530 - 2391 2388 -0.299916 - 2391 2389 0.157910 - 2391 2390 0.266930 - 2391 2391 215.313260 - 2391 2392 -134.961580 - 2391 2393 -228.139060 - 2391 2394 -0.186619 - 2391 2395 1.841597 - 2391 2396 3.113033 - 2391 2439 -0.556354 - 2392 2345 -2.137526 - 2392 2390 -0.035179 - 2392 2392 -37.418826 - 2392 2393 32.922321 - 2392 2396 -0.463591 - 2393 1287 -0.010827 - 2393 1288 -1.956009 - 2393 1289 -3.306438 - 2393 2343 -0.086021 - 2393 2344 -0.432400 - 2393 2345 -0.730930 - 2393 2388 -0.015281 - 2393 2389 -0.915891 - 2393 2390 -1.548222 - 2393 2391 0.121706 - 2393 2392 5.390503 - 2393 2393 9.112105 - 2393 2394 -0.003135 - 2393 2395 -1.032926 - 2393 2396 -1.746056 - 2393 2439 -0.005806 - 2393 2440 -1.049120 - 2393 2441 -1.773432 - 2394 1290 -0.385795 - 2394 2346 -2.488500 - 2394 2347 13.032447 - 2394 2348 22.030033 - 2394 2391 -0.106988 - 2394 2394 195.511800 - 2394 2395 -124.514620 - 2394 2396 -210.479390 - 2394 2397 -0.181521 - 2394 2398 1.690200 - 2394 2399 2.857115 - 2394 2442 -0.295344 - 2395 2348 -2.486881 - 2395 2395 -34.875408 - 2395 2396 30.994421 - 2395 2399 -0.417839 - 2396 1290 -0.006823 - 2396 1291 -2.248092 - 2396 1292 -3.800172 - 2396 2346 -0.040056 - 2396 2347 -0.576030 - 2396 2348 -0.973720 - 2396 2391 -0.003135 - 2396 2392 -1.032926 - 2396 2393 -1.746056 - 2396 2394 0.056090 - 2396 2395 5.853460 - 2396 2396 9.894684 - 2396 2397 -0.002441 - 2396 2398 -0.976845 - 2396 2399 -1.651260 - 2396 2442 -0.003082 - 2396 2443 -1.015693 - 2396 2444 -1.716926 - 2397 1293 -0.344959 - 2397 2349 -1.589981 - 2397 2350 11.924609 - 2397 2351 20.157360 - 2397 2394 -0.083317 - 2397 2397 183.272000 - 2397 2398 -116.463740 - 2397 2399 -196.870310 - 2397 2445 -0.232932 - 2398 2351 -2.599390 - 2398 2398 -32.951383 - 2398 2399 29.082529 - 2399 1293 -0.006101 - 2399 1294 -2.441055 - 2399 1295 -4.126359 - 2399 2349 -0.017817 - 2399 2350 -0.683654 - 2399 2351 -1.155649 - 2399 2394 -0.002441 - 2399 2395 -0.976845 - 2399 2396 -1.651260 - 2399 2397 0.029298 - 2399 2398 5.078005 - 2399 2399 8.583860 - 2399 2445 -0.002431 - 2399 2446 -0.972790 - 2399 2447 -1.644404 - 2400 2400 1.000000 - 2401 2401 1.000000 - 2402 2402 1.000000 - 2403 2403 1.000000 - 2404 2404 1.000000 - 2405 2405 1.000000 - 2406 2406 1.000000 - 2407 2407 1.000000 - 2408 2408 1.000000 - 2409 2409 1.000000 - 2410 2410 1.000000 - 2411 2411 1.000000 - 2412 2412 1.000000 - 2413 2413 1.000000 - 2414 2414 1.000000 - 2415 1311 -0.384679 - 2415 2367 -3.279794 - 2415 2368 16.991600 - 2415 2369 28.722601 - 2415 2415 295.962690 - 2415 2416 -185.669440 - 2415 2417 -313.855620 - 2415 2418 -0.348094 - 2415 2419 0.631146 - 2415 2420 1.066888 - 2415 2463 -0.655968 - 2416 2369 -3.337316 - 2416 2416 -52.249143 - 2416 2417 45.541410 - 2416 2420 -0.152086 - 2417 1311 -0.006803 - 2417 1312 -1.432864 - 2417 1313 -2.422113 - 2417 2367 -0.057328 - 2417 2368 -0.912754 - 2417 2369 -1.542919 - 2417 2415 0.081608 - 2417 2416 5.174138 - 2417 2417 8.746362 - 2417 2418 -0.009761 - 2417 2419 -1.380717 - 2417 2420 -2.333962 - 2417 2463 -0.006846 - 2417 2464 -1.441995 - 2417 2465 -2.437548 - 2418 1314 -0.546198 - 2418 2415 -0.333118 - 2418 2418 294.817100 - 2418 2419 -187.614800 - 2418 2420 -317.143830 - 2418 2421 -0.220702 - 2418 2422 0.235822 - 2418 2423 0.398633 - 2418 2466 -0.932334 - 2419 2419 -51.494702 - 2419 2420 45.386677 - 2419 2423 -0.054994 - 2420 1314 -0.009660 - 2420 1315 -1.366407 - 2420 1316 -2.309773 - 2420 2415 -0.009761 - 2420 2416 -1.380717 - 2420 2417 -2.333962 - 2420 2418 0.118679 - 2420 2419 5.465519 - 2420 2420 9.238908 - 2420 2421 -0.009761 - 2420 2422 -1.336179 - 2420 2423 -2.258677 - 2420 2466 -0.009730 - 2420 2467 -1.376491 - 2420 2468 -2.326819 - 2421 1317 -0.700884 - 2421 2418 -0.237236 - 2421 2421 294.911180 - 2421 2422 -188.213360 - 2421 2423 -318.155860 - 2421 2424 -0.345123 - 2421 2425 0.241201 - 2421 2426 0.407726 - 2421 2469 -0.706610 - 2422 2422 -50.966088 - 2422 2423 44.963881 - 2422 2426 -0.054849 - 2423 1317 -0.012396 - 2423 1318 -1.321339 - 2423 1319 -2.233592 - 2423 2418 -0.009761 - 2423 2419 -1.336179 - 2423 2420 -2.258677 - 2423 2421 0.129056 - 2423 2422 5.298425 - 2423 2423 8.956455 - 2423 2424 -0.014607 - 2423 2425 -1.302995 - 2423 2426 -2.202580 - 2423 2469 -0.012497 - 2423 2470 -1.332246 - 2423 2471 -2.252029 - 2424 1320 -0.492875 - 2424 2421 -0.330249 - 2424 2424 295.159830 - 2424 2425 -188.670340 - 2424 2426 -318.928050 - 2424 2427 -0.344523 - 2424 2428 0.231088 - 2424 2429 0.390632 - 2424 2472 -0.823328 - 2425 2425 -50.571975 - 2425 2426 44.643506 - 2425 2429 -0.052551 - 2426 1320 -0.014443 - 2426 1321 -1.288434 - 2426 1322 -2.177967 - 2426 2421 -0.014607 - 2426 2422 -1.302995 - 2426 2423 -2.202580 - 2426 2424 0.138031 - 2426 2425 5.199069 - 2426 2426 8.788499 - 2426 2427 -0.014603 - 2426 2428 -1.302916 - 2426 2429 -2.202449 - 2426 2472 -0.014561 - 2426 2473 -1.299103 - 2426 2474 -2.196001 - 2427 1323 -0.492578 - 2427 2424 -0.330172 - 2427 2427 295.190420 - 2427 2428 -188.409100 - 2427 2429 -318.486750 - 2427 2430 -0.488073 - 2427 2475 -0.823460 - 2428 2428 -50.572276 - 2428 2429 44.584784 - 2429 1323 -0.014434 - 2429 1324 -1.287886 - 2429 1325 -2.177042 - 2429 2424 -0.014603 - 2429 2425 -1.302916 - 2429 2426 -2.202449 - 2429 2427 0.137721 - 2429 2428 5.172030 - 2429 2429 8.742800 - 2429 2430 -0.014302 - 2429 2431 -1.276073 - 2429 2432 -2.157074 - 2429 2475 -0.014563 - 2429 2476 -1.299535 - 2429 2477 -2.196733 - 2430 1326 -0.469139 - 2430 2382 -4.408557 - 2430 2383 16.821468 - 2430 2384 28.434994 - 2430 2427 -0.396557 - 2430 2428 0.325126 - 2430 2429 0.549592 - 2430 2430 285.836750 - 2430 2431 -178.932720 - 2430 2432 -302.467730 - 2430 2433 -0.263041 - 2430 2434 1.551843 - 2430 2435 2.623236 - 2430 2478 -0.754214 - 2431 2384 -2.875469 - 2431 2429 -0.073936 - 2431 2431 -49.860319 - 2431 2432 43.576472 - 2431 2435 -0.379606 - 2432 1326 -0.008297 - 2432 1327 -1.462372 - 2432 1328 -2.471992 - 2432 2382 -0.092258 - 2432 2383 -0.666450 - 2432 2384 -1.126566 - 2432 2427 -0.014302 - 2432 2428 -1.276073 - 2432 2429 -2.157074 - 2432 2430 0.127517 - 2432 2431 6.202164 - 2432 2432 10.484134 - 2432 2433 -0.003937 - 2432 2434 -1.404263 - 2432 2435 -2.373766 - 2432 2478 -0.007871 - 2432 2479 -1.387462 - 2432 2480 -2.345365 - 2433 1329 -0.263160 - 2433 2385 -2.604048 - 2433 2386 16.163394 - 2433 2387 27.322602 - 2433 2430 -0.134357 - 2433 2433 266.626370 - 2433 2434 -169.785360 - 2433 2435 -287.005170 - 2433 2436 -0.189533 - 2433 2437 2.046968 - 2433 2438 3.460192 - 2433 2481 -0.372709 - 2434 2387 -3.335735 - 2434 2434 -47.687417 - 2434 2435 42.190864 - 2434 2438 -0.518710 - 2435 1329 -0.004654 - 2435 1330 -1.660118 - 2435 1331 -2.806263 - 2435 2385 -0.037154 - 2435 2386 -0.878605 - 2435 2387 -1.485194 - 2435 2430 -0.003937 - 2435 2431 -1.404263 - 2435 2432 -2.373766 - 2435 2433 0.052795 - 2435 2434 6.679445 - 2435 2435 11.290933 - 2435 2436 -0.002415 - 2435 2437 -1.343578 - 2435 2438 -2.271183 - 2435 2481 -0.003890 - 2435 2482 -1.387579 - 2435 2483 -2.345563 - 2436 1332 -0.325360 - 2436 2388 -1.508888 - 2436 2389 14.485912 - 2436 2390 24.486970 - 2436 2433 -0.136569 - 2436 2436 241.692610 - 2436 2437 -155.354030 - 2436 2438 -262.610280 - 2436 2439 -0.115570 - 2436 2440 2.494726 - 2436 2441 4.217085 - 2436 2484 -0.228451 - 2437 2390 -3.227197 - 2437 2437 -43.939068 - 2437 2438 39.136646 - 2437 2441 -0.637960 - 2438 1332 -0.003396 - 2438 1333 -1.888992 - 2438 1334 -3.193149 - 2438 2388 -0.016258 - 2438 2389 -0.974557 - 2438 2390 -1.647390 - 2438 2433 -0.002415 - 2438 2434 -1.343578 - 2438 2435 -2.271183 - 2438 2436 0.026043 - 2438 2437 6.827924 - 2438 2438 11.541916 - 2438 2439 -0.000939 - 2438 2440 -1.289442 - 2438 2441 -2.179673 - 2438 2484 -0.002384 - 2438 2485 -1.326469 - 2438 2486 -2.242262 - 2439 1335 -0.148188 - 2439 2391 -0.730654 - 2439 2392 12.199921 - 2439 2393 20.622746 - 2439 2436 -0.053069 - 2439 2439 223.363930 - 2439 2440 -144.219590 - 2439 2441 -243.788790 - 2439 2442 -0.093204 - 2439 2443 3.024884 - 2439 2444 5.113261 - 2439 2487 -0.088688 - 2440 2393 -2.914640 - 2440 2440 -41.297090 - 2440 2441 36.812861 - 2440 2444 -0.787282 - 2441 1335 -0.001547 - 2441 1336 -2.124845 - 2441 1337 -3.591837 - 2441 2391 -0.005806 - 2441 2392 -1.049120 - 2441 2393 -1.773432 - 2441 2436 -0.000939 - 2441 2437 -1.289442 - 2441 2438 -2.179673 - 2441 2439 0.010441 - 2441 2440 6.952380 - 2441 2441 11.752301 - 2441 2442 -0.000652 - 2441 2443 -1.212590 - 2441 2444 -2.049761 - 2441 2487 -0.000926 - 2441 2488 -1.271790 - 2441 2489 -2.149833 - 2442 1338 -0.120893 - 2442 2394 -0.558837 - 2442 2395 10.400277 - 2442 2396 17.580618 - 2442 2439 -0.062429 - 2442 2442 205.430030 - 2442 2443 -132.627050 - 2442 2444 -224.192610 - 2442 2445 -0.066744 - 2442 2446 3.048959 - 2442 2447 5.153961 - 2442 2490 -0.061495 - 2443 2396 -2.618094 - 2443 2443 -38.253343 - 2443 2444 34.089825 - 2443 2447 -0.809744 - 2444 1338 -0.001262 - 2444 1339 -2.348264 - 2444 1340 -3.969503 - 2444 2394 -0.003082 - 2444 2395 -1.015693 - 2444 2396 -1.716926 - 2444 2439 -0.000652 - 2444 2440 -1.212590 - 2444 2441 -2.049761 - 2444 2442 0.006525 - 2444 2443 6.928897 - 2444 2444 11.712602 - 2444 2445 -0.000372 - 2444 2446 -1.153498 - 2444 2447 -1.949873 - 2444 2490 -0.000642 - 2444 2491 -1.194597 - 2444 2492 -2.019346 - 2445 1341 -0.078631 - 2445 2397 -0.374706 - 2445 2398 9.063607 - 2445 2399 15.321121 - 2445 2442 -0.035684 - 2445 2445 193.463720 - 2445 2446 -121.008720 - 2445 2447 -204.553130 - 2445 2493 -0.035095 - 2446 2399 -2.240641 - 2446 2446 -36.306218 - 2446 2447 31.328710 - 2447 1341 -0.000821 - 2447 1342 -2.541870 - 2447 1343 -4.296778 - 2447 2397 -0.002431 - 2447 2398 -0.972790 - 2447 2399 -1.644404 - 2447 2442 -0.000372 - 2447 2443 -1.153498 - 2447 2444 -1.949873 - 2447 2445 0.004462 - 2447 2446 5.806760 - 2447 2447 9.815746 - 2447 2493 -0.000366 - 2447 2494 -1.134562 - 2447 2495 -1.917864 - 2448 2448 1.000000 - 2449 2449 1.000000 - 2450 2450 1.000000 - 2451 2451 1.000000 - 2452 2452 1.000000 - 2453 2453 1.000000 - 2454 2454 1.000000 - 2455 2455 1.000000 - 2456 2456 1.000000 - 2457 2457 1.000000 - 2458 2458 1.000000 - 2459 2459 1.000000 - 2460 2460 1.000000 - 2461 2461 1.000000 - 2462 2462 1.000000 - 2463 1359 -0.089063 - 2463 2415 -0.919829 - 2463 2416 15.807417 - 2463 2417 26.720858 - 2463 2463 293.520010 - 2463 2464 -185.583810 - 2463 2465 -313.710870 - 2463 2466 -0.090287 - 2463 2511 -0.090116 - 2464 2417 -3.837993 - 2464 2464 -50.099419 - 2464 2465 55.228420 - 2465 1359 -0.000930 - 2465 1360 -1.637231 - 2465 1361 -2.767574 - 2465 2415 -0.006846 - 2465 2416 -1.441995 - 2465 2417 -2.437548 - 2465 2463 0.010397 - 2465 2464 6.401628 - 2465 2465 10.821312 - 2465 2466 -0.000942 - 2465 2467 -1.659643 - 2465 2468 -2.805461 - 2465 2511 -0.000940 - 2465 2512 -1.656679 - 2465 2513 -2.800450 - 2466 1362 -0.106034 - 2466 2418 -1.306802 - 2466 2419 16.075890 - 2466 2420 27.174665 - 2466 2463 -0.093001 - 2466 2464 0.271675 - 2466 2465 0.459239 - 2466 2466 293.946980 - 2466 2467 -186.200800 - 2466 2468 -314.753650 - 2466 2469 -0.063426 - 2466 2514 -0.107246 - 2467 2420 -3.873777 - 2467 2465 -0.070508 - 2467 2467 -54.424641 - 2467 2468 47.565742 - 2468 1362 -0.001107 - 2468 1363 -1.620021 - 2468 1364 -2.738482 - 2468 2418 -0.009730 - 2468 2419 -1.376491 - 2468 2420 -2.326819 - 2468 2463 -0.000942 - 2468 2464 -1.659643 - 2468 2465 -2.805461 - 2468 2466 0.014769 - 2468 2467 7.942892 - 2468 2468 13.426657 - 2468 2469 -0.001122 - 2468 2470 -1.642046 - 2468 2471 -2.775713 - 2468 2514 -0.001119 - 2468 2515 -1.638632 - 2468 2516 -2.769941 - 2469 1365 -0.156132 - 2469 2421 -1.378051 - 2469 2422 16.674148 - 2469 2423 28.185979 - 2469 2466 -0.112062 - 2469 2467 0.404449 - 2469 2468 0.683680 - 2469 2469 293.942260 - 2469 2470 -186.147850 - 2469 2471 -314.664330 - 2469 2472 -0.093381 - 2469 2517 -0.157803 - 2470 2423 -3.888405 - 2470 2468 -0.103852 - 2470 2470 -54.087451 - 2470 2471 47.365100 - 2471 1365 -0.001629 - 2471 1366 -1.589686 - 2471 1367 -2.687205 - 2471 2421 -0.012497 - 2471 2422 -1.332246 - 2471 2423 -2.252029 - 2471 2466 -0.001122 - 2471 2467 -1.642046 - 2471 2468 -2.775713 - 2471 2469 0.019314 - 2471 2470 7.787909 - 2471 2471 13.164680 - 2471 2472 -0.001652 - 2471 2473 -1.611114 - 2471 2474 -2.723427 - 2471 2517 -0.001647 - 2471 2518 -1.606797 - 2471 2519 -2.716130 - 2472 1368 -0.191837 - 2472 2424 -1.453178 - 2472 2425 17.134703 - 2472 2426 28.964476 - 2472 2469 -0.099581 - 2472 2470 0.238269 - 2472 2471 0.402771 - 2472 2472 294.183070 - 2472 2473 -186.458720 - 2472 2474 -315.189560 - 2472 2475 -0.143507 - 2472 2476 0.288059 - 2472 2477 0.486935 - 2472 2520 -0.193946 - 2473 2426 -3.896443 - 2473 2471 -0.062091 - 2473 2473 -53.928425 - 2473 2474 47.280929 - 2473 2477 -0.073725 - 2474 1368 -0.002002 - 2474 1369 -1.575446 - 2474 1370 -2.663132 - 2474 2424 -0.014561 - 2474 2425 -1.299103 - 2474 2426 -2.196001 - 2474 2469 -0.001652 - 2474 2470 -1.611114 - 2474 2471 -2.723427 - 2474 2472 0.023420 - 2474 2473 7.666691 - 2474 2474 12.959767 - 2474 2475 -0.002405 - 2474 2476 -1.582161 - 2474 2477 -2.674485 - 2474 2520 -0.002024 - 2474 2521 -1.592864 - 2474 2522 -2.692575 - 2475 1371 -0.227454 - 2475 2427 -1.451385 - 2475 2428 17.104165 - 2475 2429 28.912880 - 2475 2472 -0.135997 - 2475 2475 294.220330 - 2475 2476 -186.970540 - 2475 2477 -316.055000 - 2475 2478 -0.134074 - 2475 2479 0.898813 - 2475 2480 1.519352 - 2475 2523 -0.229907 - 2476 2429 -3.889605 - 2476 2476 -53.769714 - 2476 2477 47.247887 - 2476 2480 -0.228334 - 2477 1371 -0.002374 - 2477 1372 -1.561568 - 2477 1373 -2.639675 - 2477 2427 -0.014563 - 2477 2428 -1.299535 - 2477 2429 -2.196733 - 2477 2472 -0.002405 - 2477 2473 -1.582161 - 2477 2474 -2.674485 - 2477 2475 0.023827 - 2477 2476 7.652109 - 2477 2477 12.935123 - 2477 2478 -0.001300 - 2477 2479 -1.624342 - 2477 2480 -2.745786 - 2477 2523 -0.002399 - 2477 2524 -1.578519 - 2477 2525 -2.668329 - 2478 1374 -0.122822 - 2478 2430 -0.977141 - 2478 2431 16.275427 - 2478 2432 27.511970 - 2478 2475 -0.073488 - 2478 2478 293.842260 - 2478 2479 -187.882110 - 2478 2480 -317.595700 - 2478 2481 -0.110990 - 2478 2482 1.751877 - 2478 2483 2.961372 - 2478 2526 -0.124297 - 2479 2432 -3.877283 - 2479 2479 -54.236743 - 2479 2480 47.803050 - 2479 2483 -0.453008 - 2480 1374 -0.001282 - 2480 1375 -1.602111 - 2480 1376 -2.708207 - 2480 2430 -0.007871 - 2480 2431 -1.387462 - 2480 2432 -2.345365 - 2480 2475 -0.001300 - 2480 2476 -1.624342 - 2480 2477 -2.745786 - 2480 2478 0.013482 - 2480 2479 7.843541 - 2480 2480 13.258715 - 2480 2481 -0.000973 - 2480 2482 -1.602149 - 2480 2483 -2.708272 - 2480 2526 -0.001297 - 2480 2527 -1.621439 - 2480 2528 -2.740879 - 2481 1377 -0.100928 - 2481 2433 -0.633412 - 2481 2434 15.780879 - 2481 2435 26.675998 - 2481 2478 -0.093191 - 2481 2481 275.790340 - 2481 2482 -177.965950 - 2481 2483 -300.833640 - 2481 2484 -0.078870 - 2481 2485 2.450933 - 2481 2486 4.143055 - 2481 2529 -0.093052 - 2482 2435 -3.860260 - 2482 2482 -51.274641 - 2482 2483 45.592825 - 2482 2486 -0.648258 - 2483 1377 -0.001053 - 2483 1378 -1.735247 - 2483 1379 -2.933261 - 2483 2433 -0.003890 - 2483 2434 -1.387579 - 2483 2435 -2.345563 - 2483 2478 -0.000973 - 2483 2479 -1.602149 - 2483 2480 -2.708272 - 2483 2481 0.008147 - 2483 2482 7.867811 - 2483 2483 13.299746 - 2483 2484 -0.000563 - 2483 2485 -1.537203 - 2483 2486 -2.598486 - 2483 2529 -0.000971 - 2483 2530 -1.599926 - 2483 2531 -2.704515 - 2484 1380 -0.066503 - 2484 2436 -0.510771 - 2484 2437 14.375670 - 2484 2438 24.300617 - 2484 2481 -0.053901 - 2484 2484 257.936380 - 2484 2485 -167.192940 - 2484 2486 -282.622760 - 2484 2487 -0.054919 - 2484 2488 3.149518 - 2484 2489 5.323946 - 2484 2532 -0.053264 - 2485 2438 -3.642851 - 2485 2485 -48.357234 - 2485 2486 43.219585 - 2485 2489 -0.849205 - 2486 1380 -0.000694 - 2486 1381 -1.896703 - 2486 1382 -3.206184 - 2486 2436 -0.002384 - 2486 2437 -1.326469 - 2486 2438 -2.242262 - 2486 2481 -0.000563 - 2486 2482 -1.537203 - 2486 2483 -2.598486 - 2486 2484 0.005068 - 2486 2485 7.729943 - 2486 2486 13.066689 - 2486 2487 -0.000238 - 2486 2488 -1.444966 - 2486 2489 -2.442570 - 2486 2532 -0.000556 - 2486 2533 -1.519219 - 2486 2534 -2.568086 - 2487 1383 -0.016242 - 2487 2439 -0.223040 - 2487 2440 13.195320 - 2487 2441 22.305368 - 2487 2484 -0.022848 - 2487 2487 234.209590 - 2487 2488 -153.242610 - 2487 2489 -259.041310 - 2487 2490 -0.044341 - 2487 2491 4.148118 - 2487 2492 7.011973 - 2487 2535 -0.022299 - 2488 2441 -3.374355 - 2488 2488 -44.241303 - 2488 2489 39.933058 - 2488 2492 -1.136025 - 2489 1383 -0.000011 - 2489 1384 -2.127758 - 2489 1385 -3.596762 - 2489 2439 -0.000926 - 2489 2440 -1.271790 - 2489 2441 -2.149833 - 2489 2484 -0.000238 - 2489 2485 -1.444966 - 2489 2486 -2.442570 - 2489 2487 0.001974 - 2489 2488 7.606176 - 2489 2489 12.857479 - 2489 2490 -0.000007 - 2489 2491 -1.346297 - 2489 2492 -2.275779 - 2489 2535 -0.000233 - 2489 2536 -1.410440 - 2489 2537 -2.384208 - 2490 1386 -0.050112 - 2490 2442 -0.175000 - 2490 2443 11.284571 - 2490 2444 19.075426 - 2490 2487 -0.000646 - 2490 2490 216.590330 - 2490 2491 -144.474550 - 2490 2492 -244.219590 - 2490 2493 -0.103282 - 2490 2494 7.522888 - 2490 2495 12.716689 - 2490 2538 -0.000629 - 2491 2444 -2.937019 - 2491 2491 -41.136159 - 2491 2492 37.924460 - 2491 2495 -2.060299 - 2492 1386 -0.000012 - 2492 1387 -2.337165 - 2492 1388 -3.950741 - 2492 2442 -0.000642 - 2492 2443 -1.194597 - 2492 2444 -2.019346 - 2492 2487 -0.000007 - 2492 2488 -1.346297 - 2492 2489 -2.275779 - 2492 2490 0.001179 - 2492 2491 7.434362 - 2492 2492 12.567038 - 2492 2493 -0.000006 - 2492 2494 -1.240973 - 2492 2495 -2.097741 - 2492 2538 -0.000007 - 2492 2539 -1.310749 - 2492 2540 -2.215688 - 2493 1389 -0.050293 - 2493 2445 -0.074440 - 2493 2446 6.409008 - 2493 2447 10.833787 - 2493 2490 -0.000571 - 2493 2493 198.980500 - 2493 2494 -122.161760 - 2493 2495 -206.502240 - 2494 2447 -1.702107 - 2494 2494 -37.800226 - 2494 2495 31.949098 - 2495 1389 -0.000012 - 2495 1390 -2.544696 - 2495 1391 -4.301554 - 2495 2445 -0.000366 - 2495 2446 -1.134562 - 2495 2447 -1.917864 - 2495 2490 -0.000006 - 2495 2491 -1.240973 - 2495 2492 -2.097741 - 2495 2493 0.000849 - 2495 2494 4.924440 - 2495 2495 8.324274 - 2496 2496 1.000000 - 2497 2497 1.000000 - 2498 2498 1.000000 - 2499 2499 1.000000 - 2500 2500 1.000000 - 2501 2501 1.000000 - 2502 2502 1.000000 - 2503 2503 1.000000 - 2504 2504 1.000000 - 2505 2505 1.000000 - 2506 2506 1.000000 - 2507 2507 1.000000 - 2508 2508 1.000000 - 2509 2509 1.000000 - 2510 2510 1.000000 - 2511 1407 -0.026951 - 2511 2463 -0.256205 - 2511 2464 16.314945 - 2511 2465 27.578783 - 2511 2511 292.647490 - 2511 2512 -186.381730 - 2511 2513 -315.059670 - 2511 2514 -0.021757 - 2511 2559 -0.021683 - 2512 2465 -4.234204 - 2512 2512 -50.801262 - 2512 2513 56.283224 - 2513 1407 -0.000009 - 2513 1408 -1.708351 - 2513 1409 -2.887796 - 2513 2463 -0.000940 - 2513 2464 -1.656679 - 2513 2465 -2.800450 - 2513 2511 0.002100 - 2513 2512 6.826079 - 2513 2513 11.538803 - 2513 2514 -0.000227 - 2513 2515 -1.730294 - 2513 2516 -2.924890 - 2513 2559 -0.000226 - 2513 2560 -1.724583 - 2513 2561 -2.915236 - 2514 1410 -0.009360 - 2514 2466 -0.277051 - 2514 2467 16.672940 - 2514 2468 28.183922 - 2514 2511 -0.028239 - 2514 2512 0.634952 - 2514 2513 1.073322 - 2514 2514 292.740630 - 2514 2515 -187.401710 - 2514 2516 -316.783640 - 2514 2517 -0.038882 - 2514 2562 -0.038747 - 2515 2468 -4.281179 - 2515 2513 -0.171763 - 2515 2515 -55.188260 - 2515 2516 48.630497 - 2516 1410 -0.000009 - 2516 1411 -1.691876 - 2516 1412 -2.859945 - 2516 2466 -0.001119 - 2516 2467 -1.638632 - 2516 2468 -2.769941 - 2516 2511 -0.000227 - 2516 2512 -1.730294 - 2516 2513 -2.924890 - 2516 2514 0.002873 - 2516 2515 8.486762 - 2516 2516 14.346016 - 2516 2517 -0.000406 - 2516 2518 -1.712777 - 2516 2519 -2.895276 - 2516 2562 -0.000404 - 2516 2563 -1.707034 - 2516 2564 -2.885569 - 2517 1413 -0.055354 - 2517 2469 -0.530944 - 2517 2470 16.752403 - 2517 2471 28.318262 - 2517 2514 -0.049799 - 2517 2515 1.071238 - 2517 2516 1.810820 - 2517 2517 292.923680 - 2517 2518 -188.341130 - 2517 2519 -318.371840 - 2517 2520 -0.056015 - 2517 2565 -0.055815 - 2518 2471 -4.365549 - 2518 2516 -0.286844 - 2518 2518 -55.000471 - 2518 2519 48.683506 - 2519 1413 -0.000578 - 2519 1414 -1.675338 - 2519 1415 -2.831991 - 2519 2469 -0.001647 - 2519 2470 -1.606797 - 2519 2471 -2.716130 - 2519 2514 -0.000406 - 2519 2515 -1.712777 - 2519 2516 -2.895276 - 2519 2517 0.004515 - 2519 2518 8.385723 - 2519 2519 14.175224 - 2519 2520 -0.000585 - 2519 2521 -1.695261 - 2519 2522 -2.865670 - 2519 2565 -0.000583 - 2519 2566 -1.689422 - 2519 2567 -2.855799 - 2520 1416 -0.063786 - 2520 2472 -0.568066 - 2520 2473 17.353461 - 2520 2474 29.334266 - 2520 2517 -0.064823 - 2520 2518 0.864923 - 2520 2519 1.462065 - 2520 2520 293.023510 - 2520 2521 -188.676260 - 2520 2522 -318.938140 - 2520 2523 -0.064584 - 2520 2568 -0.064351 - 2521 2474 -4.481716 - 2521 2519 -0.229225 - 2521 2521 -54.906725 - 2521 2522 48.672218 - 2522 1416 -0.000666 - 2522 1417 -1.665693 - 2522 1418 -2.815685 - 2522 2472 -0.002024 - 2522 2473 -1.592864 - 2522 2474 -2.692575 - 2522 2517 -0.000585 - 2522 2518 -1.695261 - 2522 2519 -2.865670 - 2522 2520 0.005343 - 2522 2521 8.327012 - 2522 2522 14.075973 - 2522 2523 -0.000674 - 2522 2524 -1.686464 - 2522 2525 -2.850797 - 2522 2568 -0.000672 - 2522 2569 -1.680612 - 2522 2570 -2.840905 - 2523 1419 -0.072246 - 2523 2475 -0.598829 - 2523 2476 17.718613 - 2523 2477 29.951544 - 2523 2520 -0.065410 - 2523 2521 0.080747 - 2523 2522 0.136495 - 2523 2523 293.100450 - 2523 2524 -189.233310 - 2523 2525 -319.879980 - 2523 2526 -0.075201 - 2523 2527 1.046473 - 2523 2528 1.768957 - 2523 2571 -0.072887 - 2524 2477 -4.534861 - 2524 2522 -0.021289 - 2524 2524 -54.812579 - 2524 2525 48.719147 - 2524 2528 -0.275906 - 2525 1419 -0.000754 - 2525 1420 -1.657002 - 2525 1421 -2.800996 - 2525 2475 -0.002399 - 2525 2476 -1.578519 - 2525 2477 -2.668329 - 2525 2520 -0.000674 - 2525 2521 -1.686464 - 2525 2522 -2.850797 - 2525 2523 0.005990 - 2525 2524 8.286247 - 2525 2525 14.007069 - 2525 2526 -0.000674 - 2525 2527 -1.686308 - 2525 2528 -2.850534 - 2525 2571 -0.000761 - 2525 2572 -1.671847 - 2525 2573 -2.826091 - 2526 1422 -0.063781 - 2526 2478 -0.309500 - 2526 2479 18.189066 - 2526 2480 30.746777 - 2526 2523 -0.064560 - 2526 2526 292.953220 - 2526 2527 -190.246610 - 2526 2528 -321.592690 - 2526 2529 -0.058123 - 2526 2530 1.889668 - 2526 2531 3.194295 - 2526 2574 -0.064335 - 2527 2480 -4.620734 - 2527 2527 -54.906377 - 2527 2528 49.087749 - 2527 2531 -0.505995 - 2528 1422 -0.000666 - 2528 1423 -1.666034 - 2528 1424 -2.816262 - 2528 2478 -0.001297 - 2528 2479 -1.621439 - 2528 2480 -2.740879 - 2528 2523 -0.000674 - 2528 2524 -1.686308 - 2528 2525 -2.850534 - 2528 2526 0.004436 - 2528 2527 8.372563 - 2528 2528 14.152973 - 2528 2529 -0.000406 - 2528 2530 -1.712040 - 2528 2531 -2.894032 - 2528 2574 -0.000671 - 2528 2575 -1.680624 - 2528 2576 -2.840925 - 2529 1425 -0.010377 - 2529 2481 -0.271710 - 2529 2482 17.552672 - 2529 2483 29.671036 - 2529 2526 -0.038861 - 2529 2529 292.745990 - 2529 2530 -190.378960 - 2529 2531 -321.816600 - 2529 2532 -0.038333 - 2529 2533 2.625185 - 2529 2534 4.437608 - 2529 2577 -0.038761 - 2530 2483 -4.538847 - 2530 2530 -55.187799 - 2530 2531 49.428946 - 2530 2534 -0.718922 - 2531 1425 -0.000009 - 2531 1426 -1.691985 - 2531 1427 -2.860131 - 2531 2481 -0.000971 - 2531 2482 -1.599926 - 2531 2483 -2.704515 - 2531 2526 -0.000406 - 2531 2527 -1.712040 - 2531 2528 -2.894032 - 2531 2529 0.002507 - 2531 2530 8.395800 - 2531 2531 14.192258 - 2531 2532 -0.000009 - 2531 2533 -1.677831 - 2531 2534 -2.836203 - 2531 2577 -0.000405 - 2531 2578 -1.707869 - 2531 2579 -2.886982 - 2532 1428 -0.049090 - 2532 2484 -0.208653 - 2532 2485 16.255375 - 2532 2486 27.478068 - 2532 2529 -0.000862 - 2532 2532 269.211870 - 2532 2533 -175.642640 - 2532 2534 -296.906070 - 2532 2535 -0.066110 - 2532 2536 2.915540 - 2532 2537 4.928429 - 2532 2580 -0.000835 - 2533 2486 -4.299454 - 2533 2533 -51.156974 - 2533 2534 46.023370 - 2533 2537 -0.798444 - 2534 1428 -0.000010 - 2534 1429 -1.879401 - 2534 1430 -3.176937 - 2534 2484 -0.000556 - 2534 2485 -1.519219 - 2534 2486 -2.568086 - 2534 2529 -0.000009 - 2534 2530 -1.677831 - 2534 2531 -2.836203 - 2534 2532 0.001221 - 2534 2533 8.245674 - 2534 2534 13.938478 - 2534 2535 -0.000008 - 2534 2536 -1.537921 - 2534 2537 -2.599702 - 2534 2580 -0.000009 - 2534 2581 -1.625600 - 2534 2582 -2.747912 - 2535 1431 -0.049472 - 2535 2487 -0.134248 - 2535 2488 15.161974 - 2535 2489 25.629800 - 2535 2532 -0.000777 - 2535 2535 245.797600 - 2535 2536 -160.742890 - 2535 2537 -271.719790 - 2535 2538 -0.051375 - 2535 2539 2.466770 - 2535 2540 4.169826 - 2535 2583 -0.000759 - 2536 2489 -4.088125 - 2536 2536 -46.711518 - 2536 2537 42.116819 - 2536 2540 -0.675549 - 2537 1431 -0.000011 - 2537 1432 -2.058723 - 2537 1433 -3.480066 - 2537 2487 -0.000233 - 2537 2488 -1.410440 - 2537 2489 -2.384208 - 2537 2532 -0.000008 - 2537 2533 -1.537921 - 2537 2534 -2.599702 - 2537 2535 0.000841 - 2537 2536 7.912791 - 2537 2537 13.375780 - 2537 2538 -0.000007 - 2537 2539 -1.397682 - 2537 2540 -2.362640 - 2537 2583 -0.000008 - 2537 2584 -1.502818 - 2537 2585 -2.540363 - 2538 1434 -0.049415 - 2538 2490 -0.098060 - 2538 2491 15.597252 - 2538 2492 26.365575 - 2538 2535 -0.000697 - 2538 2538 222.357500 - 2538 2539 -145.286990 - 2538 2540 -245.592950 - 2538 2586 -0.000679 - 2539 2492 -4.271543 - 2539 2539 -42.264729 - 2539 2540 38.061162 - 2540 1434 -0.000012 - 2540 1435 -2.275492 - 2540 1436 -3.846489 - 2540 2490 -0.000007 - 2540 2491 -1.310749 - 2540 2492 -2.215688 - 2540 2535 -0.000007 - 2540 2536 -1.397682 - 2540 2537 -2.362640 - 2540 2538 0.000553 - 2540 2539 6.350315 - 2540 2540 10.734565 - 2540 2586 -0.000007 - 2540 2587 -1.361680 - 2540 2588 -2.301782 - 2541 2541 1.000000 - 2542 2542 1.000000 - 2543 2543 1.000000 - 2544 2544 1.000000 - 2545 2545 1.000000 - 2546 2546 1.000000 - 2547 2547 1.000000 - 2548 2548 1.000000 - 2549 2549 1.000000 - 2550 2550 1.000000 - 2551 2551 1.000000 - 2552 2552 1.000000 - 2553 2553 1.000000 - 2554 2554 1.000000 - 2555 2555 1.000000 - 2556 2556 1.000000 - 2557 2557 1.000000 - 2558 2558 1.000000 - 2559 1455 -0.048509 - 2559 2511 -0.131228 - 2559 2512 17.114212 - 2559 2513 28.929865 - 2559 2559 292.490890 - 2559 2560 -187.666960 - 2559 2561 -317.232240 - 2559 2562 -0.000937 - 2559 2607 -0.000892 - 2560 2513 -4.629615 - 2560 2560 -51.030416 - 2560 2561 56.854685 - 2561 1455 -0.000010 - 2561 1456 -1.732900 - 2561 1457 -2.929294 - 2561 2511 -0.000226 - 2561 2512 -1.724583 - 2561 2513 -2.915236 - 2561 2559 0.000939 - 2561 2560 6.882697 - 2561 2561 11.634511 - 2561 2562 -0.000010 - 2561 2563 -1.752131 - 2561 2564 -2.961802 - 2561 2607 -0.000009 - 2561 2608 -1.666878 - 2561 2609 -2.817690 - 2562 1458 -0.048061 - 2562 2514 -0.162026 - 2562 2515 17.626293 - 2562 2516 29.795467 - 2562 2559 -0.021204 - 2562 2560 1.149406 - 2562 2561 1.942956 - 2562 2562 292.528510 - 2562 2563 -189.134010 - 2562 2564 -319.711920 - 2562 2565 -0.000943 - 2562 2610 -0.000918 - 2563 2516 -4.719768 - 2563 2561 -0.314764 - 2563 2563 -55.622843 - 2563 2564 49.493657 - 2564 1458 -0.000010 - 2564 1459 -1.732188 - 2564 1460 -2.928089 - 2564 2514 -0.000404 - 2564 2515 -1.707034 - 2564 2516 -2.885569 - 2564 2559 -0.000010 - 2564 2560 -1.752131 - 2564 2561 -2.961802 - 2564 2562 0.001127 - 2564 2563 8.655407 - 2564 2564 14.631092 - 2564 2565 -0.000010 - 2564 2566 -1.752057 - 2564 2567 -2.961675 - 2564 2610 -0.000010 - 2564 2611 -1.705791 - 2564 2612 -2.883468 - 2565 1461 -0.047233 - 2565 2517 -0.198658 - 2565 2518 18.710595 - 2565 2519 31.628390 - 2565 2562 -0.031498 - 2565 2563 2.160631 - 2565 2564 3.652328 - 2565 2565 292.577630 - 2565 2566 -191.027790 - 2565 2567 -322.913380 - 2565 2568 -0.000951 - 2565 2613 -0.000946 - 2566 2519 -4.958742 - 2566 2564 -0.591686 - 2566 2566 -55.622856 - 2566 2567 50.011819 - 2567 1461 -0.000010 - 2567 1462 -1.731647 - 2567 1463 -2.927176 - 2567 2517 -0.000583 - 2567 2518 -1.689422 - 2567 2519 -2.855799 - 2567 2562 -0.000010 - 2567 2563 -1.752057 - 2567 2564 -2.961675 - 2567 2565 0.001306 - 2567 2566 8.674944 - 2567 2567 14.664123 - 2567 2568 -0.000010 - 2567 2569 -1.752040 - 2567 2570 -2.961648 - 2567 2613 -0.000010 - 2567 2614 -1.743573 - 2567 2615 -2.947335 - 2568 1464 -0.046196 - 2568 2520 -0.235581 - 2568 2521 19.821857 - 2568 2522 33.506847 - 2568 2565 -0.038249 - 2568 2566 1.980808 - 2568 2567 3.348357 - 2568 2568 292.576990 - 2568 2569 -191.818840 - 2568 2570 -324.250360 - 2568 2571 -0.000959 - 2568 2616 -0.000955 - 2569 2522 -5.226034 - 2569 2567 -0.542439 - 2569 2569 -55.621662 - 2569 2570 50.231084 - 2570 1464 -0.000010 - 2570 1465 -1.732570 - 2570 1466 -2.928734 - 2570 2520 -0.000672 - 2570 2521 -1.680612 - 2570 2522 -2.840905 - 2570 2565 -0.000010 - 2570 2566 -1.752040 - 2570 2567 -2.961648 - 2570 2568 0.001395 - 2570 2569 8.669038 - 2570 2570 14.654135 - 2570 2571 -0.000010 - 2570 2572 -1.752082 - 2570 2573 -2.961718 - 2570 2616 -0.000010 - 2570 2617 -1.745529 - 2570 2618 -2.950641 - 2571 1467 -0.045679 - 2571 2523 -0.259459 - 2571 2524 20.490641 - 2571 2525 34.637380 - 2571 2568 -0.017181 - 2571 2569 0.752061 - 2571 2570 1.271282 - 2571 2571 292.581000 - 2571 2572 -192.184640 - 2571 2573 -324.868920 - 2571 2574 -0.020099 - 2571 2575 1.038688 - 2571 2576 1.755797 - 2571 2619 -0.000960 - 2572 2525 -5.374228 - 2572 2570 -0.205949 - 2572 2572 -55.620927 - 2572 2573 50.332785 - 2572 2576 -0.284441 - 2573 1467 -0.000010 - 2573 1468 -1.732554 - 2573 1469 -2.928709 - 2573 2523 -0.000761 - 2573 2524 -1.671847 - 2573 2525 -2.826091 - 2573 2568 -0.000010 - 2573 2569 -1.752082 - 2573 2570 -2.961718 - 2573 2571 0.001485 - 2573 2572 8.660221 - 2573 2573 14.639234 - 2573 2574 -0.000010 - 2573 2575 -1.752015 - 2573 2576 -2.961604 - 2573 2619 -0.000010 - 2573 2620 -1.745518 - 2573 2621 -2.950624 - 2574 1470 -0.046118 - 2574 2526 -0.242437 - 2574 2527 20.498619 - 2574 2528 34.650845 - 2574 2571 -0.000959 - 2574 2574 292.589090 - 2574 2575 -193.001350 - 2574 2576 -326.249260 - 2574 2577 -0.043708 - 2574 2578 2.518277 - 2574 2579 4.256896 - 2574 2622 -0.000956 - 2575 2528 -5.404518 - 2575 2575 -55.621503 - 2575 2576 50.555316 - 2575 2579 -0.689626 - 2576 1470 -0.000010 - 2576 1471 -1.732697 - 2576 1472 -2.928949 - 2576 2526 -0.000671 - 2576 2527 -1.680624 - 2576 2528 -2.840925 - 2576 2571 -0.000010 - 2576 2572 -1.752015 - 2576 2573 -2.961604 - 2576 2574 0.001395 - 2576 2575 8.669263 - 2576 2576 14.654513 - 2576 2577 -0.000010 - 2576 2578 -1.751691 - 2576 2579 -2.961058 - 2576 2622 -0.000010 - 2576 2623 -1.746031 - 2576 2624 -2.951488 - 2577 1473 -0.046865 - 2577 2529 -0.193536 - 2577 2530 19.884307 - 2577 2531 33.612433 - 2577 2574 -0.000947 - 2577 2577 292.584640 - 2577 2578 -193.402880 - 2577 2579 -326.928220 - 2577 2580 -0.069271 - 2577 2581 3.206450 - 2577 2582 5.420180 - 2577 2625 -0.000944 - 2578 2531 -5.324409 - 2578 2578 -55.622434 - 2578 2579 50.663406 - 2578 2582 -0.878087 - 2579 1473 -0.000010 - 2579 1474 -1.732143 - 2579 1475 -2.928014 - 2579 2529 -0.000405 - 2579 2530 -1.707869 - 2579 2531 -2.886982 - 2579 2574 -0.000010 - 2579 2575 -1.751691 - 2579 2576 -2.961058 - 2579 2577 0.001127 - 2579 2578 8.641078 - 2579 2579 14.606876 - 2579 2580 -0.000009 - 2579 2581 -1.697084 - 2579 2582 -2.868749 - 2579 2625 -0.000010 - 2579 2626 -1.746086 - 2579 2627 -2.951584 - 2580 1476 -0.047160 - 2580 2532 -0.115680 - 2580 2533 17.977306 - 2580 2534 30.388813 - 2580 2577 -0.000904 - 2580 2580 275.024510 - 2580 2581 -181.855580 - 2580 2582 -307.408470 - 2580 2583 -0.076734 - 2580 2584 3.397539 - 2580 2585 5.743200 - 2580 2628 -0.000892 - 2581 2534 -4.923187 - 2581 2581 -52.287970 - 2581 2582 47.632801 - 2581 2585 -0.930422 - 2582 1476 -0.000010 - 2582 1477 -1.841508 - 2582 1478 -3.112884 - 2582 2532 -0.000009 - 2582 2533 -1.625600 - 2582 2534 -2.747912 - 2582 2577 -0.000009 - 2582 2578 -1.697084 - 2582 2579 -2.868749 - 2582 2580 0.000689 - 2582 2581 8.438159 - 2582 2582 14.263855 - 2582 2583 -0.000009 - 2582 2584 -1.592071 - 2582 2585 -2.691237 - 2582 2628 -0.000009 - 2582 2629 -1.676061 - 2582 2630 -2.833212 - 2583 1479 -0.047971 - 2583 2535 -0.099113 - 2583 2536 16.260700 - 2583 2537 27.487088 - 2583 2580 -0.000840 - 2583 2583 257.471000 - 2583 2584 -169.140370 - 2583 2585 -285.914880 - 2583 2586 -0.054570 - 2583 2587 2.647312 - 2583 2588 4.475014 - 2583 2631 -0.000829 - 2584 2537 -4.453124 - 2584 2584 -48.953851 - 2584 2585 44.281127 - 2584 2588 -0.724974 - 2585 1479 -0.000011 - 2585 1480 -1.965496 - 2585 1481 -3.322474 - 2585 2535 -0.000008 - 2585 2536 -1.502818 - 2585 2537 -2.540363 - 2585 2580 -0.000009 - 2585 2581 -1.592071 - 2585 2582 -2.691237 - 2585 2583 0.000646 - 2585 2584 8.104624 - 2585 2585 13.700055 - 2585 2586 -0.000008 - 2585 2587 -1.468164 - 2585 2588 -2.481783 - 2585 2631 -0.000009 - 2585 2632 -1.570612 - 2585 2633 -2.654962 - 2586 1482 -0.048565 - 2586 2538 -0.089255 - 2586 2539 14.681026 - 2586 2540 24.816788 - 2586 2583 -0.000769 - 2586 2586 234.002320 - 2586 2587 -151.239020 - 2586 2588 -255.654270 - 2586 2634 -0.000740 - 2587 2540 -4.020542 - 2587 2587 -44.505464 - 2587 2588 39.559654 - 2588 1482 -0.000012 - 2588 1483 -2.166039 - 2588 1484 -3.661470 - 2588 2538 -0.000007 - 2588 2539 -1.361680 - 2588 2540 -2.301782 - 2588 2583 -0.000008 - 2588 2584 -1.468164 - 2588 2585 -2.481783 - 2588 2586 0.000582 - 2588 2587 6.414709 - 2588 2588 10.843417 - 2588 2634 -0.000008 - 2588 2635 -1.413859 - 2588 2636 -2.389985 - 2589 2589 1.000000 - 2590 2590 1.000000 - 2591 2591 1.000000 - 2592 2592 1.000000 - 2593 2593 1.000000 - 2594 2594 1.000000 - 2595 2595 1.000000 - 2596 2596 1.000000 - 2597 2597 1.000000 - 2598 2598 1.000000 - 2599 2599 1.000000 - 2600 2600 1.000000 - 2601 2601 1.000000 - 2602 2602 1.000000 - 2603 2603 1.000000 - 2604 1500 -0.049071 - 2604 2604 257.261830 - 2604 2605 -155.707360 - 2604 2606 -263.207500 - 2604 2607 -0.025480 - 2604 2608 5.352012 - 2604 2609 9.047040 - 2604 2652 -0.083154 - 2605 2605 -48.977572 - 2605 2606 40.543038 - 2605 2609 -1.465612 - 2606 1500 -0.000012 - 2606 1501 -1.985902 - 2606 1502 -3.356966 - 2606 2604 0.000631 - 2606 2605 4.963156 - 2606 2606 8.389713 - 2606 2607 -0.000009 - 2606 2608 -1.576253 - 2606 2609 -2.664498 - 2606 2652 -0.000008 - 2606 2653 -1.395527 - 2606 2654 -2.358996 - 2607 1503 -0.048017 - 2607 2559 -0.071925 - 2607 2560 17.993985 - 2607 2561 30.417032 - 2607 2604 -0.000880 - 2607 2607 269.015240 - 2607 2608 -175.138160 - 2607 2609 -296.053550 - 2607 2610 -0.000919 - 2607 2655 -0.012520 - 2608 2561 -4.927647 - 2608 2608 -51.196925 - 2608 2609 45.785790 - 2609 1503 -0.000011 - 2609 1504 -1.894376 - 2609 1505 -3.202254 - 2609 2559 -0.000009 - 2609 2560 -1.666878 - 2609 2561 -2.817690 - 2609 2604 -0.000009 - 2609 2605 -1.576253 - 2609 2606 -2.664498 - 2609 2607 0.000677 - 2609 2608 8.274180 - 2609 2609 13.986673 - 2609 2610 -0.000010 - 2609 2611 -1.646536 - 2609 2612 -2.783304 - 2609 2655 -0.000009 - 2609 2656 -1.484417 - 2609 2657 -2.509259 - 2610 1506 -0.046124 - 2610 2562 -0.080804 - 2610 2563 18.407184 - 2610 2564 31.115484 - 2610 2607 -0.026902 - 2610 2608 1.073246 - 2610 2609 1.814215 - 2610 2610 280.747370 - 2610 2611 -183.459410 - 2610 2612 -310.119550 - 2610 2613 -0.000961 - 2610 2658 -0.000893 - 2611 2564 -5.040786 - 2611 2609 -0.293901 - 2611 2611 -53.421482 - 2611 2612 47.973334 - 2612 1506 -0.000011 - 2612 1507 -1.812633 - 2612 1508 -3.064073 - 2612 2562 -0.000010 - 2612 2563 -1.705791 - 2612 2564 -2.883468 - 2612 2607 -0.000010 - 2612 2608 -1.646536 - 2612 2609 -2.783304 - 2612 2610 0.000706 - 2612 2611 8.482956 - 2612 2612 14.339579 - 2612 2613 -0.000010 - 2612 2614 -1.716692 - 2612 2615 -2.901894 - 2612 2658 -0.000009 - 2612 2659 -1.595336 - 2612 2660 -2.696754 - 2613 1509 -0.043192 - 2613 2565 -0.106166 - 2613 2566 20.401092 - 2613 2567 34.486006 - 2613 2610 -0.054089 - 2613 2611 3.678386 - 2613 2612 6.217939 - 2613 2613 292.491220 - 2613 2614 -194.875700 - 2613 2615 -329.417880 - 2613 2616 -0.000989 - 2613 2661 -0.000951 - 2614 2567 -5.586787 - 2614 2612 -1.007299 - 2614 2614 -55.647323 - 2614 2615 51.004900 - 2615 1509 -0.000010 - 2615 1510 -1.736640 - 2615 1511 -2.935616 - 2615 2565 -0.000010 - 2615 2566 -1.743573 - 2615 2567 -2.947335 - 2615 2610 -0.000010 - 2615 2611 -1.716692 - 2615 2612 -2.901894 - 2615 2613 0.000734 - 2615 2614 8.640671 - 2615 2615 14.606187 - 2615 2616 -0.000010 - 2615 2617 -1.752502 - 2615 2618 -2.962429 - 2615 2661 -0.000010 - 2615 2662 -1.685048 - 2615 2663 -2.848406 - 2616 1512 -0.039367 - 2616 2568 -0.116990 - 2616 2569 22.314308 - 2616 2570 37.720082 - 2616 2613 -0.049024 - 2616 2614 3.878796 - 2616 2615 6.556717 - 2616 2616 292.540140 - 2616 2617 -196.992950 - 2616 2618 -332.996700 - 2616 2619 -0.000998 - 2616 2664 -0.000992 - 2617 2570 -6.110688 - 2617 2615 -1.062175 - 2617 2617 -55.648296 - 2617 2618 51.582022 - 2618 1512 -0.000010 - 2618 1513 -1.731904 - 2618 1514 -2.927608 - 2618 2568 -0.000010 - 2618 2569 -1.745529 - 2618 2570 -2.950641 - 2618 2613 -0.000010 - 2618 2614 -1.752502 - 2618 2615 -2.962429 - 2618 2616 0.000735 - 2618 2617 8.729817 - 2618 2618 14.756875 - 2618 2619 -0.000010 - 2618 2620 -1.752501 - 2618 2621 -2.962426 - 2618 2664 -0.000010 - 2618 2665 -1.741164 - 2618 2666 -2.943262 - 2619 1515 -0.037136 - 2619 2571 -0.127846 - 2619 2572 23.380365 - 2619 2573 39.522169 - 2619 2616 -0.028113 - 2619 2617 1.822445 - 2619 2618 3.080660 - 2619 2619 292.531730 - 2619 2620 -197.216270 - 2619 2621 -333.374380 - 2619 2622 -0.022032 - 2619 2623 1.224559 - 2619 2624 2.069993 - 2619 2667 -0.000996 - 2620 2573 -6.402606 - 2620 2618 -0.499058 - 2620 2620 -55.648176 - 2620 2621 51.643267 - 2620 2624 -0.335333 - 2621 1515 -0.000010 - 2621 1516 -1.731899 - 2621 1517 -2.927602 - 2621 2571 -0.000010 - 2621 2572 -1.745518 - 2621 2573 -2.950624 - 2621 2616 -0.000010 - 2621 2617 -1.752501 - 2621 2618 -2.962426 - 2621 2619 0.000736 - 2621 2620 8.731226 - 2621 2621 14.759261 - 2621 2622 -0.000010 - 2621 2623 -1.752503 - 2621 2624 -2.962429 - 2621 2667 -0.000010 - 2621 2668 -1.742588 - 2621 2669 -2.945671 - 2622 1518 -0.038450 - 2622 2574 -0.125992 - 2622 2575 23.202076 - 2622 2576 39.220762 - 2622 2619 -0.000999 - 2622 2622 292.552610 - 2622 2623 -197.520590 - 2622 2624 -333.888620 - 2622 2625 -0.045425 - 2622 2626 3.524849 - 2622 2627 5.958405 - 2622 2670 -0.000995 - 2623 2576 -6.353800 - 2623 2623 -55.648621 - 2623 2624 51.725673 - 2623 2627 -0.965248 - 2624 1518 -0.000010 - 2624 1519 -1.730916 - 2624 1520 -2.925939 - 2624 2574 -0.000010 - 2624 2575 -1.746031 - 2624 2576 -2.951488 - 2624 2619 -0.000010 - 2624 2620 -1.752503 - 2624 2621 -2.962429 - 2624 2622 0.000735 - 2624 2623 8.732630 - 2624 2624 14.761630 - 2624 2625 -0.000010 - 2624 2626 -1.752406 - 2624 2627 -2.962267 - 2624 2670 -0.000010 - 2624 2671 -1.744558 - 2624 2672 -2.948999 - 2625 1521 -0.041432 - 2625 2577 -0.124322 - 2625 2578 22.200415 - 2625 2579 37.527582 - 2625 2622 -0.000991 - 2625 2625 292.548060 - 2625 2626 -197.535140 - 2625 2627 -333.913400 - 2625 2628 -0.067965 - 2625 2629 4.554214 - 2625 2630 7.698438 - 2625 2673 -0.000988 - 2626 2579 -6.079542 - 2626 2626 -55.647836 - 2626 2627 51.731839 - 2626 2630 -1.247138 - 2627 1521 -0.000010 - 2627 1522 -1.732089 - 2627 1523 -2.927923 - 2627 2577 -0.000010 - 2627 2578 -1.746086 - 2627 2579 -2.951584 - 2627 2622 -0.000010 - 2627 2623 -1.752406 - 2627 2624 -2.962267 - 2627 2625 0.000735 - 2627 2626 8.717101 - 2627 2627 14.735386 - 2627 2628 -0.000010 - 2627 2629 -1.734362 - 2627 2630 -2.931764 - 2627 2673 -0.000010 - 2627 2674 -1.745942 - 2627 2675 -2.951340 - 2628 1524 -0.044120 - 2628 2580 -0.122082 - 2628 2581 20.074998 - 2628 2582 33.934755 - 2628 2625 -0.000971 - 2628 2628 286.695420 - 2628 2629 -192.563890 - 2628 2630 -325.509750 - 2628 2631 -0.087941 - 2628 2632 5.113127 - 2628 2633 8.643229 - 2628 2676 -0.000967 - 2629 2582 -5.497546 - 2629 2629 -54.535101 - 2629 2630 50.417700 - 2629 2633 -1.400202 - 2630 1524 -0.000010 - 2630 1525 -1.768646 - 2630 1526 -2.989716 - 2630 2580 -0.000009 - 2630 2581 -1.676061 - 2630 2582 -2.833212 - 2630 2625 -0.000010 - 2630 2626 -1.734362 - 2630 2627 -2.931764 - 2630 2628 0.000720 - 2630 2629 8.575091 - 2630 2630 14.495325 - 2630 2631 -0.000010 - 2630 2632 -1.661949 - 2630 2633 -2.809358 - 2630 2676 -0.000010 - 2630 2677 -1.727981 - 2630 2678 -2.920977 - 2631 1527 -0.046165 - 2631 2583 -0.107003 - 2631 2584 17.330914 - 2631 2585 29.296178 - 2631 2628 -0.000919 - 2631 2631 269.126650 - 2631 2632 -179.261130 - 2631 2633 -303.023010 - 2631 2634 -0.103151 - 2631 2635 4.820267 - 2631 2636 8.148174 - 2631 2679 -0.000897 - 2632 2585 -4.746101 - 2632 2632 -51.197932 - 2632 2633 46.912740 - 2632 2636 -1.320014 - 2633 1527 -0.000011 - 2633 1528 -1.887902 - 2633 1529 -3.191310 - 2633 2583 -0.000009 - 2633 2584 -1.570612 - 2633 2585 -2.654962 - 2633 2628 -0.000010 - 2633 2629 -1.661949 - 2633 2630 -2.809358 - 2633 2631 0.000676 - 2633 2632 8.267012 - 2633 2633 13.974555 - 2633 2634 -0.000009 - 2633 2635 -1.517990 - 2633 2636 -2.566009 - 2633 2679 -0.000009 - 2633 2680 -1.622840 - 2633 2681 -2.743248 - 2634 1530 -0.047266 - 2634 2586 -0.052806 - 2634 2587 13.660367 - 2634 2588 23.091469 - 2634 2631 -0.000828 - 2634 2634 239.845290 - 2634 2635 -153.663950 - 2634 2636 -259.753370 - 2634 2682 -0.000799 - 2635 2588 -3.740930 - 2635 2635 -45.637013 - 2635 2636 40.130338 - 2636 1530 -0.000012 - 2636 1531 -2.114944 - 2636 1532 -3.575099 - 2636 2586 -0.000008 - 2636 2587 -1.413859 - 2636 2588 -2.389985 - 2636 2631 -0.000009 - 2636 2632 -1.517990 - 2636 2633 -2.566009 - 2636 2634 0.000598 - 2636 2635 6.517954 - 2636 2636 11.017941 - 2636 2682 -0.000008 - 2636 2683 -1.466061 - 2636 2684 -2.478228 - 2637 2637 1.000000 - 2638 2638 1.000000 - 2639 2639 1.000000 - 2640 2640 1.000000 - 2641 2641 1.000000 - 2642 2642 1.000000 - 2643 2643 1.000000 - 2644 2644 1.000000 - 2645 2645 1.000000 - 2646 2646 1.000000 - 2647 2647 1.000000 - 2648 2648 1.000000 - 2649 2649 1.000000 - 2650 2650 1.000000 - 2651 2651 1.000000 - 2652 1548 -0.048489 - 2652 2604 -0.000806 - 2652 2605 7.373340 - 2652 2606 12.463884 - 2652 2652 216.441350 - 2652 2653 -133.763990 - 2652 2654 -226.114460 - 2652 2655 -0.000778 - 2652 2700 -0.017667 - 2653 2606 -2.019122 - 2653 2653 -41.208238 - 2653 2654 34.812190 - 2654 1548 -0.000014 - 2654 1549 -2.351456 - 2654 1550 -3.974898 - 2654 2604 -0.000008 - 2654 2605 -1.395527 - 2654 2606 -2.358996 - 2654 2652 0.000544 - 2654 2653 6.274304 - 2654 2654 10.606074 - 2654 2655 -0.000008 - 2654 2656 -1.347007 - 2654 2657 -2.276979 - 2654 2700 -0.000007 - 2654 2701 -1.175701 - 2654 2702 -1.987403 - 2655 1551 -0.046791 - 2655 2607 -0.000859 - 2655 2608 13.568905 - 2655 2609 22.936876 - 2655 2652 -0.048658 - 2655 2653 0.622266 - 2655 2654 1.051877 - 2655 2655 233.933840 - 2655 2656 -150.862420 - 2655 2657 -255.017830 - 2655 2658 -0.000850 - 2655 2703 -0.014380 - 2656 2609 -3.715751 - 2656 2654 -0.170400 - 2656 2656 -44.544210 - 2656 2657 39.359599 - 2657 1551 -0.000013 - 2657 1552 -2.181072 - 2657 1553 -3.686883 - 2657 2607 -0.000009 - 2657 2608 -1.484417 - 2657 2609 -2.509259 - 2657 2652 -0.000008 - 2657 2653 -1.347007 - 2657 2654 -2.276979 - 2657 2655 0.000594 - 2657 2656 7.784931 - 2657 2657 13.159646 - 2657 2658 -0.000009 - 2657 2659 -1.468698 - 2657 2660 -2.482687 - 2657 2703 -0.000008 - 2657 2704 -1.298753 - 2657 2705 -2.195412 - 2658 1554 -0.042697 - 2658 2610 -0.035101 - 2658 2611 17.742896 - 2658 2612 29.992569 - 2658 2655 -0.067043 - 2658 2656 3.866122 - 2658 2657 6.535292 - 2658 2658 257.374050 - 2658 2659 -171.928550 - 2658 2660 -290.627820 - 2658 2661 -0.000931 - 2658 2706 -0.000830 - 2659 2612 -4.858763 - 2659 2657 -1.058688 - 2659 2659 -48.997177 - 2659 2660 44.936312 - 2660 1554 -0.000012 - 2660 1555 -1.979740 - 2660 1556 -3.346550 - 2660 2610 -0.000009 - 2660 2611 -1.595336 - 2660 2612 -2.696754 - 2660 2655 -0.000009 - 2660 2656 -1.468698 - 2660 2657 -2.482687 - 2660 2658 0.000651 - 2660 2659 8.060697 - 2660 2660 13.625795 - 2660 2661 -0.000010 - 2660 2662 -1.592668 - 2660 2663 -2.692244 - 2660 2706 -0.000009 - 2660 2707 -1.418773 - 2660 2708 -2.398292 - 2661 1557 -0.035557 - 2661 2613 -0.089967 - 2661 2614 21.966129 - 2661 2615 37.131544 - 2661 2658 -0.100182 - 2661 2659 6.460499 - 2661 2660 10.920820 - 2661 2661 274.973760 - 2661 2662 -189.016190 - 2661 2663 -319.512960 - 2661 2664 -0.001009 - 2661 2709 -0.000929 - 2662 2615 -6.015234 - 2662 2660 -1.769114 - 2662 2662 -52.337002 - 2662 2663 49.470820 - 2663 1557 -0.000012 - 2663 1558 -1.854414 - 2663 1559 -3.134701 - 2663 2613 -0.000010 - 2663 2614 -1.685048 - 2663 2615 -2.848406 - 2663 2658 -0.000010 - 2663 2659 -1.592668 - 2663 2660 -2.692244 - 2663 2661 0.000694 - 2663 2662 8.401055 - 2663 2663 14.201141 - 2663 2664 -0.000011 - 2663 2665 -1.698177 - 2663 2666 -2.870598 - 2663 2709 -0.000010 - 2663 2710 -1.564892 - 2663 2711 -2.645294 - 2664 1560 -0.026543 - 2664 2616 -0.160986 - 2664 2617 25.778745 - 2664 2618 43.576367 - 2664 2661 -0.113865 - 2664 2662 6.762803 - 2664 2663 11.431841 - 2664 2664 292.499690 - 2664 2665 -203.392450 - 2664 2666 -343.814330 - 2664 2667 -0.001057 - 2664 2712 -0.001027 - 2665 2618 -7.059249 - 2665 2663 -1.851879 - 2665 2665 -55.675534 - 2665 2666 53.266037 - 2666 1560 -0.000011 - 2666 1561 -1.742717 - 2666 1562 -2.945886 - 2666 2616 -0.000010 - 2666 2617 -1.741164 - 2666 2618 -2.943262 - 2666 2661 -0.000011 - 2666 2662 -1.698177 - 2666 2663 -2.870598 - 2666 2664 0.000738 - 2666 2665 8.644688 - 2666 2666 14.612973 - 2666 2667 -0.000011 - 2666 2668 -1.752938 - 2666 2669 -2.963164 - 2666 2712 -0.000011 - 2666 2713 -1.703465 - 2666 2714 -2.879535 - 2667 1563 -0.019503 - 2667 2619 -0.179478 - 2667 2620 27.604579 - 2667 2621 46.662780 - 2667 2664 -0.046635 - 2667 2665 3.638075 - 2667 2666 6.149797 - 2667 2667 292.503160 - 2667 2668 -204.147000 - 2667 2669 -345.090080 - 2667 2670 -0.021879 - 2667 2671 2.046923 - 2667 2672 3.460115 - 2667 2715 -0.001059 - 2668 2621 -7.559218 - 2668 2666 -0.996216 - 2668 2668 -55.676391 - 2668 2669 53.470185 - 2668 2672 -0.560508 - 2669 1563 -0.000011 - 2669 1564 -1.740045 - 2669 1565 -2.941372 - 2669 2619 -0.000010 - 2669 2620 -1.742588 - 2669 2621 -2.945671 - 2669 2664 -0.000011 - 2669 2665 -1.752938 - 2669 2666 -2.963164 - 2669 2667 0.000739 - 2669 2668 8.737749 - 2669 2669 14.770287 - 2669 2670 -0.000011 - 2669 2671 -1.752867 - 2669 2672 -2.963044 - 2669 2715 -0.000011 - 2669 2716 -1.743083 - 2669 2717 -2.946507 - 2670 1566 -0.024154 - 2670 2622 -0.179890 - 2670 2623 26.817401 - 2670 2624 45.332109 - 2670 2667 -0.001061 - 2670 2670 292.516610 - 2670 2671 -203.209120 - 2670 2672 -343.504450 - 2670 2673 -0.074649 - 2670 2674 5.550434 - 2670 2675 9.382454 - 2670 2718 -0.001054 - 2671 2624 -7.343669 - 2671 2671 -55.675291 - 2671 2672 53.216309 - 2671 2675 -1.519886 - 2672 1566 -0.000011 - 2672 1567 -1.737268 - 2672 1568 -2.936676 - 2672 2622 -0.000010 - 2672 2623 -1.744558 - 2672 2624 -2.948999 - 2672 2667 -0.000011 - 2672 2668 -1.752867 - 2672 2669 -2.963044 - 2672 2670 0.000738 - 2672 2671 8.735672 - 2672 2672 14.766772 - 2672 2673 -0.000011 - 2672 2674 -1.752665 - 2672 2675 -2.962706 - 2672 2718 -0.000011 - 2672 2719 -1.742086 - 2672 2720 -2.944819 - 2673 1569 -0.032290 - 2673 2625 -0.150961 - 2673 2626 24.820915 - 2673 2627 41.957275 - 2673 2670 -0.001048 - 2673 2673 292.560490 - 2673 2674 -202.417260 - 2673 2675 -342.166130 - 2673 2676 -0.095453 - 2673 2677 6.755399 - 2673 2678 11.419317 - 2673 2721 -0.001042 - 2674 2627 -6.796984 - 2674 2674 -55.674523 - 2674 2675 53.001769 - 2674 2678 -1.849860 - 2675 1569 -0.000011 - 2675 1570 -1.733724 - 2675 1571 -2.930687 - 2675 2625 -0.000010 - 2675 2626 -1.745942 - 2675 2627 -2.951340 - 2675 2670 -0.000011 - 2675 2671 -1.752665 - 2675 2672 -2.962706 - 2675 2673 0.000738 - 2675 2674 8.732950 - 2675 2675 14.762177 - 2675 2676 -0.000011 - 2675 2677 -1.751940 - 2675 2678 -2.961477 - 2675 2721 -0.000011 - 2675 2722 -1.742451 - 2675 2723 -2.945440 - 2676 1572 -0.038943 - 2676 2628 -0.122994 - 2676 2629 22.439305 - 2676 2630 37.931372 - 2676 2673 -0.001032 - 2676 2676 292.559700 - 2676 2677 -200.816080 - 2676 2678 -339.459220 - 2676 2679 -0.130196 - 2676 2680 7.555952 - 2676 2681 12.772581 - 2676 2724 -0.001027 - 2677 2630 -6.144839 - 2677 2677 -55.674209 - 2677 2678 52.564782 - 2677 2681 -2.069101 - 2678 1572 -0.000011 - 2678 1573 -1.734867 - 2678 1574 -2.932617 - 2678 2628 -0.000010 - 2678 2629 -1.727981 - 2678 2630 -2.920977 - 2678 2673 -0.000011 - 2678 2674 -1.751940 - 2678 2675 -2.961477 - 2678 2676 0.000737 - 2678 2677 8.661032 - 2678 2678 14.640600 - 2678 2679 -0.000010 - 2678 2680 -1.697568 - 2678 2681 -2.869568 - 2678 2724 -0.000011 - 2678 2725 -1.742449 - 2678 2726 -2.945433 - 2679 1575 -0.042704 - 2679 2631 -0.076916 - 2679 2632 18.842384 - 2679 2633 31.851165 - 2679 2676 -0.000983 - 2679 2679 275.072580 - 2679 2680 -191.454180 - 2679 2681 -323.634150 - 2679 2682 -0.160014 - 2679 2683 12.057719 - 2679 2684 20.382357 - 2679 2727 -0.000959 - 2680 2633 -5.159886 - 2680 2680 -52.336375 - 2680 2681 50.140954 - 2680 2684 -3.301911 - 2681 1575 -0.000011 - 2681 1576 -1.843384 - 2681 1577 -3.116056 - 2681 2631 -0.000009 - 2681 2632 -1.622840 - 2681 2633 -2.743248 - 2681 2676 -0.000010 - 2681 2677 -1.697568 - 2681 2678 -2.869568 - 2681 2679 0.000693 - 2681 2680 8.399661 - 2681 2681 14.198786 - 2681 2682 -0.000009 - 2681 2683 -1.573816 - 2681 2684 -2.660376 - 2681 2727 -0.000010 - 2681 2728 -1.656200 - 2681 2729 -2.799640 - 2682 1578 -0.045977 - 2682 2634 -0.020031 - 2682 2635 10.444244 - 2682 2636 17.654939 - 2682 2679 -0.000884 - 2682 2682 251.557290 - 2682 2683 -157.273780 - 2682 2684 -265.855450 - 2683 2636 -2.860122 - 2683 2683 -47.880521 - 2683 2684 40.980820 - 2684 1578 -0.000012 - 2684 1579 -2.015677 - 2684 1580 -3.407298 - 2684 2634 -0.000008 - 2684 2635 -1.466061 - 2684 2636 -2.478228 - 2684 2679 -0.000009 - 2684 2680 -1.573816 - 2684 2681 -2.660376 - 2684 2682 0.000618 - 2684 2683 5.060910 - 2684 2684 8.554956 - 2685 2685 1.000000 - 2686 2686 1.000000 - 2687 2687 1.000000 - 2688 2688 1.000000 - 2689 2689 1.000000 - 2690 2690 1.000000 - 2691 2691 1.000000 - 2692 2692 1.000000 - 2693 2693 1.000000 - 2694 2694 1.000000 - 2695 2695 1.000000 - 2696 2696 1.000000 - 2697 2697 1.000000 - 2698 2698 1.000000 - 2699 2699 1.000000 - 2700 1596 -0.048244 - 2700 2652 -0.000698 - 2700 2653 8.293174 - 2700 2654 14.018770 - 2700 2700 181.279450 - 2700 2701 -114.218350 - 2700 2702 -193.074610 - 2700 2703 -0.000684 - 2700 2748 -0.006890 - 2701 2654 -2.270983 - 2701 2701 -34.541974 - 2701 2702 29.714594 - 2702 1596 -0.000017 - 2702 1597 -2.799416 - 2702 1598 -4.732131 - 2702 2652 -0.000007 - 2702 2653 -1.175701 - 2702 2654 -1.987403 - 2702 2700 0.000462 - 2702 2701 6.140865 - 2702 2702 10.380512 - 2702 2703 -0.000007 - 2702 2704 -1.152668 - 2702 2705 -1.948468 - 2702 2748 -0.000006 - 2702 2749 -1.009209 - 2702 2750 -1.705965 - 2703 1599 -0.044945 - 2703 2655 -0.000779 - 2703 2656 11.894484 - 2703 2657 20.106436 - 2703 2700 -0.046208 - 2703 2701 2.957952 - 2703 2702 5.000119 - 2703 2703 204.725750 - 2703 2704 -134.431330 - 2703 2705 -227.242720 - 2703 2706 -0.000766 - 2703 2751 -0.000677 - 2704 2657 -3.257153 - 2704 2702 -0.809985 - 2704 2704 -38.998572 - 2704 2705 35.048730 - 2705 1599 -0.000016 - 2705 1600 -2.481216 - 2705 1601 -4.194248 - 2705 2655 -0.000008 - 2705 2656 -1.298753 - 2705 2657 -2.195412 - 2705 2700 -0.000007 - 2705 2701 -1.152668 - 2705 2702 -1.948468 - 2705 2703 0.000525 - 2705 2704 7.343362 - 2705 2705 12.413219 - 2705 2706 -0.000008 - 2705 2707 -1.277278 - 2705 2708 -2.159111 - 2705 2751 -0.000007 - 2705 2752 -1.129076 - 2705 2753 -1.908590 - 2706 1602 -0.036136 - 2706 2658 -0.032965 - 2706 2659 16.546834 - 2706 2660 27.970749 - 2706 2703 -0.100611 - 2706 2704 6.560144 - 2706 2705 11.089268 - 2706 2706 222.303950 - 2706 2707 -152.958530 - 2706 2708 -258.560970 - 2706 2709 -0.000864 - 2706 2754 -0.000765 - 2707 2660 -4.531112 - 2707 2705 -1.796374 - 2707 2707 -42.340527 - 2707 2708 39.972265 - 2708 1602 -0.000015 - 2708 1603 -2.287583 - 2708 1604 -3.866929 - 2708 2658 -0.000009 - 2708 2659 -1.418773 - 2708 2660 -2.398292 - 2708 2703 -0.000008 - 2708 2704 -1.277278 - 2708 2705 -2.159111 - 2708 2706 0.000568 - 2708 2707 7.655307 - 2708 2708 12.940525 - 2708 2709 -0.000009 - 2708 2710 -1.414297 - 2708 2711 -2.390727 - 2708 2754 -0.000008 - 2708 2755 -1.252630 - 2708 2756 -2.117444 - 2709 1605 -0.019913 - 2709 2661 -0.079157 - 2709 2662 22.556493 - 2709 2663 38.129496 - 2709 2706 -0.127625 - 2709 2707 9.626845 - 2709 2708 16.273212 - 2709 2709 251.639730 - 2709 2710 -179.098860 - 2709 2711 -302.748710 - 2709 2712 -0.000996 - 2709 2757 -0.000882 - 2710 2663 -6.176712 - 2710 2708 -2.636101 - 2710 2710 -47.913181 - 2710 2711 46.873893 - 2711 1605 -0.000013 - 2711 1606 -2.015473 - 2711 1607 -3.406955 - 2711 2661 -0.000010 - 2711 2662 -1.564892 - 2711 2663 -2.645294 - 2711 2706 -0.000009 - 2711 2707 -1.414297 - 2711 2708 -2.390727 - 2711 2709 0.000640 - 2711 2710 7.998507 - 2711 2711 13.520675 - 2711 2712 -0.000010 - 2711 2713 -1.590278 - 2711 2714 -2.688206 - 2711 2757 -0.000009 - 2711 2758 -1.408195 - 2711 2759 -2.380413 - 2712 1608 -0.001162 - 2712 2664 -0.131318 - 2712 2665 29.099360 - 2712 2666 49.189521 - 2712 2709 -0.148770 - 2712 2710 10.574914 - 2712 2711 17.875834 - 2712 2712 280.864350 - 2712 2713 -203.707380 - 2712 2714 -344.346720 - 2712 2715 -0.001102 - 2712 2760 -0.001028 - 2713 2666 -7.968291 - 2713 2711 -2.895663 - 2713 2713 -53.485001 - 2713 2714 53.357989 - 2714 1608 -0.000012 - 2714 1609 -1.810762 - 2714 1610 -3.060910 - 2714 2664 -0.000011 - 2714 2665 -1.703465 - 2714 2666 -2.879535 - 2714 2709 -0.000010 - 2714 2710 -1.590278 - 2714 2711 -2.688206 - 2714 2712 0.000712 - 2714 2713 8.429687 - 2714 2714 14.249535 - 2714 2715 -0.000012 - 2714 2716 -1.717499 - 2714 2717 -2.903258 - 2714 2760 -0.000011 - 2714 2761 -1.601688 - 2714 2762 -2.707491 - 2715 1611 -0.001127 - 2715 2667 -0.181157 - 2715 2668 32.808237 - 2715 2669 55.459044 - 2715 2712 -0.091822 - 2715 2713 6.551315 - 2715 2714 11.074335 - 2715 2715 292.604130 - 2715 2716 -214.774880 - 2715 2717 -363.055460 - 2715 2718 -0.030381 - 2715 2719 4.564827 - 2715 2720 7.716380 - 2715 2763 -0.001135 - 2716 2669 -8.983851 - 2716 2714 -1.793878 - 2716 2716 -55.713949 - 2716 2717 56.285871 - 2716 2720 -1.249935 - 2717 1611 -0.000012 - 2717 1612 -1.733026 - 2717 1613 -2.929508 - 2717 2667 -0.000011 - 2717 2668 -1.743083 - 2717 2669 -2.946507 - 2717 2712 -0.000012 - 2717 2713 -1.717499 - 2717 2714 -2.903258 - 2717 2715 0.000742 - 2717 2716 8.698509 - 2717 2717 14.703956 - 2717 2718 -0.000012 - 2717 2719 -1.753384 - 2717 2720 -2.963920 - 2717 2763 -0.000012 - 2717 2764 -1.745271 - 2717 2765 -2.950206 - 2718 1614 -0.001120 - 2718 2670 -0.172672 - 2718 2671 30.288338 - 2718 2672 51.199370 - 2718 2715 -0.001130 - 2718 2718 292.511430 - 2718 2719 -210.232150 - 2718 2720 -355.376290 - 2718 2721 -0.084683 - 2718 2722 9.063667 - 2718 2723 15.321223 - 2718 2766 -0.001124 - 2719 2672 -8.293851 - 2719 2719 -55.709291 - 2719 2720 55.053787 - 2719 2723 -2.481832 - 2720 1614 -0.000012 - 2720 1615 -1.737656 - 2720 1616 -2.937332 - 2720 2670 -0.000011 - 2720 2671 -1.742086 - 2720 2672 -2.944819 - 2720 2715 -0.000012 - 2720 2716 -1.753384 - 2720 2717 -2.963920 - 2720 2718 0.000742 - 2720 2719 8.737056 - 2720 2720 14.769114 - 2720 2721 -0.000012 - 2720 2722 -1.753205 - 2720 2723 -2.963617 - 2720 2766 -0.000012 - 2720 2767 -1.744482 - 2720 2768 -2.948872 - 2721 1617 -0.016261 - 2721 2673 -0.162787 - 2721 2674 26.804110 - 2721 2675 45.309667 - 2721 2718 -0.001110 - 2721 2721 292.487780 - 2721 2722 -206.609670 - 2721 2723 -349.252980 - 2721 2724 -0.117554 - 2721 2725 8.924396 - 2721 2726 15.085791 - 2721 2769 -0.001103 - 2722 2675 -7.339821 - 2722 2722 -55.703345 - 2722 2723 54.077195 - 2722 2726 -2.443725 - 2723 1617 -0.000012 - 2723 1618 -1.740848 - 2723 1619 -2.942729 - 2723 2673 -0.000011 - 2723 2674 -1.742451 - 2723 2675 -2.945440 - 2723 2718 -0.000012 - 2723 2719 -1.753205 - 2723 2720 -2.963617 - 2723 2721 0.000741 - 2723 2722 8.738894 - 2723 2723 14.772224 - 2723 2724 -0.000011 - 2723 2725 -1.752690 - 2723 2726 -2.962745 - 2723 2769 -0.000012 - 2723 2770 -1.743460 - 2723 2771 -2.947144 - 2724 1620 -0.030551 - 2724 2676 -0.140867 - 2724 2677 24.649625 - 2724 2678 41.667691 - 2724 2721 -0.001089 - 2724 2724 292.487150 - 2724 2725 -201.610140 - 2724 2726 -340.801610 - 2724 2727 -0.103736 - 2724 2728 6.076339 - 2724 2729 10.271443 - 2724 2772 -0.001083 - 2725 2678 -6.749914 - 2725 2725 -55.701882 - 2725 2726 52.712667 - 2725 2729 -1.663869 - 2726 1620 -0.000011 - 2726 1621 -1.741374 - 2726 1622 -2.943616 - 2726 2676 -0.000011 - 2726 2677 -1.742449 - 2726 2678 -2.945433 - 2726 2721 -0.000011 - 2726 2722 -1.752690 - 2726 2723 -2.962745 - 2726 2724 0.000740 - 2726 2725 8.703334 - 2726 2726 14.712108 - 2726 2727 -0.000011 - 2726 2728 -1.716647 - 2726 2729 -2.901821 - 2726 2772 -0.000011 - 2726 2773 -1.743935 - 2726 2774 -2.947945 - 2727 1623 -0.036772 - 2727 2679 -0.160837 - 2727 2680 24.937640 - 2727 2681 42.154587 - 2727 2724 -0.001053 - 2727 2727 280.761620 - 2727 2728 -188.954090 - 2727 2729 -319.408000 - 2727 2775 -0.001037 - 2728 2681 -6.828855 - 2728 2728 -53.475766 - 2728 2729 49.342559 - 2729 1623 -0.000012 - 2729 1624 -1.813471 - 2729 1625 -3.065492 - 2729 2679 -0.000010 - 2729 2680 -1.656200 - 2729 2681 -2.799640 - 2729 2724 -0.000011 - 2729 2725 -1.716647 - 2729 2726 -2.901821 - 2729 2727 0.000700 - 2729 2728 6.884603 - 2729 2729 11.637733 - 2729 2775 -0.000011 - 2729 2776 -1.692294 - 2729 2777 -2.860654 - 2730 2730 1.000000 - 2731 2731 1.000000 - 2732 2732 1.000000 - 2733 2733 1.000000 - 2734 2734 1.000000 - 2735 2735 1.000000 - 2736 2736 1.000000 - 2737 2737 1.000000 - 2738 2738 1.000000 - 2739 2739 1.000000 - 2740 2740 1.000000 - 2741 2741 1.000000 - 2742 2742 1.000000 - 2743 2743 1.000000 - 2744 2744 1.000000 - 2745 2745 1.000000 - 2746 2746 1.000000 - 2747 2747 1.000000 - 2748 1644 -0.048403 - 2748 2700 -0.000614 - 2748 2701 6.542096 - 2748 2702 11.058753 - 2748 2748 157.884050 - 2748 2749 -98.805163 - 2748 2750 -167.020130 - 2748 2751 -0.000606 - 2748 2796 -0.000541 - 2749 2702 -1.791442 - 2749 2749 -30.096993 - 2749 2750 25.665630 - 2750 1644 -0.000020 - 2750 1645 -3.202279 - 2750 1646 -5.413128 - 2750 2700 -0.000006 - 2750 2701 -1.009209 - 2750 2702 -1.705965 - 2750 2748 0.000408 - 2750 2749 6.101921 - 2750 2750 10.314680 - 2750 2751 -0.000006 - 2750 2752 -0.996783 - 2750 2753 -1.684961 - 2750 2796 -0.000006 - 2750 2797 -0.890273 - 2750 2798 -1.504917 - 2751 1647 -0.042824 - 2751 2703 -0.012524 - 2751 2704 9.411765 - 2751 2705 15.909648 - 2751 2748 -0.056619 - 2751 2749 4.404968 - 2751 2750 7.446152 - 2751 2751 175.478800 - 2751 2752 -116.341660 - 2751 2753 -196.663940 - 2751 2754 -0.000691 - 2751 2799 -0.000615 - 2752 2705 -2.577237 - 2752 2750 -1.206208 - 2752 2752 -33.442061 - 2752 2753 30.310371 - 2753 1647 -0.000019 - 2753 1648 -2.884855 - 2753 1649 -4.876560 - 2753 2703 -0.000007 - 2753 2704 -1.129076 - 2753 2705 -1.908590 - 2753 2748 -0.000006 - 2753 2749 -0.996783 - 2753 2750 -1.684961 - 2753 2751 0.000456 - 2753 2752 7.126502 - 2753 2753 12.046637 - 2753 2754 -0.000007 - 2753 2755 -1.117042 - 2753 2756 -1.888247 - 2753 2799 -0.000006 - 2753 2800 -0.994993 - 2753 2801 -1.681936 - 2754 1650 -0.027384 - 2754 2706 -0.039837 - 2754 2707 13.936147 - 2754 2708 23.557652 - 2754 2751 -0.111104 - 2754 2752 8.852419 - 2754 2753 14.964129 - 2754 2754 198.949310 - 2754 2755 -138.969300 - 2754 2756 -234.913530 - 2754 2757 -0.000800 - 2754 2802 -0.000710 - 2755 2708 -3.816109 - 2755 2753 -2.424024 - 2755 2755 -37.903255 - 2755 2756 36.293837 - 2756 1650 -0.000017 - 2756 1651 -2.552144 - 2756 1652 -4.314142 - 2756 2706 -0.000008 - 2756 2707 -1.252630 - 2756 2708 -2.117444 - 2756 2751 -0.000007 - 2756 2752 -1.117042 - 2756 2753 -1.888247 - 2756 2754 0.000513 - 2756 2755 7.299508 - 2756 2756 12.339081 - 2756 2757 -0.000008 - 2756 2758 -1.257777 - 2756 2759 -2.126144 - 2756 2802 -0.000007 - 2756 2803 -1.115661 - 2756 2804 -1.885912 - 2757 1653 -0.001509 - 2757 2709 -0.128191 - 2757 2710 20.776367 - 2757 2711 35.120371 - 2757 2754 -0.187967 - 2757 2755 13.123630 - 2757 2756 22.184168 - 2757 2757 222.333580 - 2757 2758 -163.800150 - 2757 2759 -276.887780 - 2757 2760 -0.000944 - 2757 2805 -0.000853 - 2758 2711 -5.689064 - 2758 2756 -3.593527 - 2758 2758 -42.362572 - 2758 2759 42.884400 - 2759 1653 -0.000016 - 2759 1654 -2.286282 - 2759 1655 -3.864731 - 2759 2709 -0.000009 - 2759 2710 -1.408195 - 2759 2711 -2.380413 - 2759 2754 -0.000008 - 2759 2755 -1.257777 - 2759 2756 -2.126144 - 2759 2757 0.000572 - 2759 2758 7.678512 - 2759 2759 12.979755 - 2759 2760 -0.000010 - 2759 2761 -1.429739 - 2759 2762 -2.416830 - 2759 2805 -0.000009 - 2759 2806 -1.291764 - 2759 2807 -2.183598 - 2760 1656 -0.001351 - 2760 2712 -0.178737 - 2760 2713 30.389582 - 2760 2714 51.370514 - 2760 2757 -0.163133 - 2760 2758 15.538893 - 2760 2759 26.266945 - 2760 2760 257.580600 - 2760 2761 -196.284140 - 2760 2762 -331.798480 - 2760 2763 -0.001123 - 2760 2808 -0.001016 - 2761 2714 -8.321260 - 2761 2759 -4.254772 - 2761 2761 -49.059757 - 2761 2762 51.446462 - 2762 1656 -0.000014 - 2762 1657 -1.973253 - 2762 1658 -3.335585 - 2762 2712 -0.000011 - 2762 2713 -1.601688 - 2762 2714 -2.707491 - 2762 2757 -0.000010 - 2762 2758 -1.429739 - 2762 2759 -2.416830 - 2762 2760 0.000659 - 2762 2761 8.135586 - 2762 2762 13.752387 - 2762 2763 -0.000012 - 2762 2764 -1.640883 - 2762 2765 -2.773746 - 2762 2808 -0.000011 - 2762 2809 -1.484513 - 2762 2810 -2.509420 - 2763 1659 -0.001220 - 2763 2715 -0.299170 - 2763 2716 39.402394 - 2763 2717 66.605807 - 2763 2760 -0.185897 - 2763 2761 12.169841 - 2763 2762 20.571884 - 2763 2763 292.737760 - 2763 2764 -234.562610 - 2763 2765 -396.504630 - 2763 2766 -0.140935 - 2763 2767 12.060554 - 2763 2768 20.387148 - 2763 2811 -0.001201 - 2764 2717 -10.789049 - 2764 2762 -3.332192 - 2764 2764 -55.748297 - 2764 2765 61.616126 - 2764 2768 -3.302265 - 2765 1659 -0.000013 - 2765 1660 -1.737883 - 2765 1661 -2.937718 - 2765 2715 -0.000012 - 2765 2716 -1.745271 - 2765 2717 -2.950206 - 2765 2760 -0.000012 - 2765 2761 -1.640883 - 2765 2762 -2.773746 - 2765 2763 0.000745 - 2765 2764 8.595787 - 2765 2765 14.530315 - 2765 2766 -0.000013 - 2765 2767 -1.753899 - 2765 2768 -2.964790 - 2765 2811 -0.000013 - 2765 2812 -1.711591 - 2765 2813 -2.893273 - 2766 1662 -0.001190 - 2766 2718 -0.189128 - 2766 2719 31.930030 - 2766 2720 53.974502 - 2766 2763 -0.001203 - 2766 2766 292.612180 - 2766 2767 -217.908060 - 2766 2768 -368.351550 - 2766 2769 -0.163158 - 2766 2770 15.094148 - 2766 2771 25.515148 - 2766 2814 -0.001199 - 2767 2720 -8.743041 - 2767 2767 -55.744062 - 2767 2768 57.067662 - 2767 2771 -4.132967 - 2768 1662 -0.000012 - 2768 1663 -1.734435 - 2768 1664 -2.931888 - 2768 2718 -0.000012 - 2768 2719 -1.744482 - 2768 2720 -2.948872 - 2768 2763 -0.000013 - 2768 2764 -1.753899 - 2768 2765 -2.964790 - 2768 2766 0.000745 - 2768 2767 8.741552 - 2768 2768 14.776712 - 2768 2769 -0.000012 - 2768 2770 -1.753726 - 2768 2771 -2.964499 - 2768 2814 -0.000013 - 2768 2815 -1.748750 - 2768 2816 -2.956085 - 2769 1665 -0.001155 - 2769 2721 -0.111032 - 2769 2722 25.917748 - 2769 2723 43.811362 - 2769 2766 -0.001169 - 2769 2769 292.531630 - 2769 2770 -209.224400 - 2769 2771 -353.672930 - 2769 2772 -0.152986 - 2769 2773 12.407653 - 2769 2774 20.973881 - 2769 2817 -0.001165 - 2770 2723 -7.096851 - 2770 2770 -55.737111 - 2770 2771 54.708381 - 2770 2774 -3.397428 - 2771 1665 -0.000012 - 2771 1666 -1.733594 - 2771 1667 -2.930466 - 2771 2721 -0.000012 - 2771 2722 -1.743460 - 2771 2723 -2.947144 - 2771 2766 -0.000012 - 2771 2767 -1.753726 - 2771 2768 -2.964499 - 2771 2769 0.000744 - 2771 2770 8.739058 - 2771 2771 14.772502 - 2771 2772 -0.000012 - 2771 2773 -1.753268 - 2771 2774 -2.963722 - 2771 2817 -0.000012 - 2771 2818 -1.748755 - 2771 2819 -2.956095 - 2772 1668 -0.019894 - 2772 2724 -0.075843 - 2772 2725 22.461520 - 2772 2726 37.968935 - 2772 2769 -0.001140 - 2772 2772 292.499520 - 2772 2773 -201.339030 - 2772 2774 -340.343250 - 2772 2775 -0.120098 - 2772 2776 8.001904 - 2772 2777 13.526419 - 2772 2820 -0.001138 - 2773 2726 -6.150532 - 2773 2773 -55.733785 - 2773 2774 52.558623 - 2773 2777 -2.191082 - 2774 1668 -0.000012 - 2774 1669 -1.732973 - 2774 1670 -2.929415 - 2774 2724 -0.000011 - 2774 2725 -1.743935 - 2774 2726 -2.947945 - 2774 2769 -0.000012 - 2774 2770 -1.753268 - 2774 2771 -2.963722 - 2774 2772 0.000742 - 2774 2773 8.721750 - 2774 2774 14.743237 - 2774 2775 -0.000012 - 2774 2776 -1.735331 - 2774 2777 -2.933403 - 2774 2820 -0.000012 - 2774 2821 -1.749989 - 2774 2822 -2.958180 - 2775 1671 -0.030771 - 2775 2727 -0.058737 - 2775 2728 19.981820 - 2775 2729 33.777269 - 2775 2772 -0.001110 - 2775 2775 286.581580 - 2775 2776 -187.427920 - 2775 2777 -316.828150 - 2775 2823 -0.001108 - 2776 2729 -5.471574 - 2776 2776 -54.619660 - 2776 2777 48.800221 - 2777 1671 -0.000012 - 2777 1672 -1.767162 - 2777 1673 -2.987210 - 2777 2727 -0.000011 - 2777 2728 -1.692294 - 2777 2729 -2.860654 - 2777 2772 -0.000012 - 2777 2773 -1.735331 - 2777 2774 -2.933403 - 2777 2775 0.000716 - 2777 2776 6.933208 - 2777 2777 11.719894 - 2777 2823 -0.000012 - 2777 2824 -1.732292 - 2777 2825 -2.928266 - 2778 2778 1.000000 - 2779 2779 1.000000 - 2780 2780 1.000000 - 2781 2781 1.000000 - 2782 2782 1.000000 - 2783 2783 1.000000 - 2784 2784 1.000000 - 2785 2785 1.000000 - 2786 2786 1.000000 - 2787 2787 1.000000 - 2788 2788 1.000000 - 2789 2789 1.000000 - 2790 2790 1.000000 - 2791 2791 1.000000 - 2792 2792 1.000000 - 2793 1689 -0.052333 - 2793 2793 116.917980 - 2793 2794 -69.421330 - 2793 2795 -117.349820 - 2793 2796 -0.000467 - 2793 2841 -0.024738 - 2793 2842 1.041592 - 2793 2843 1.760707 - 2794 2794 -22.297074 - 2794 2795 17.972447 - 2794 2843 -0.285218 - 2795 1689 -0.000028 - 2795 1690 -4.319810 - 2795 1691 -7.302207 - 2795 2793 0.000310 - 2795 2794 5.789129 - 2795 2795 9.785944 - 2795 2796 -0.000005 - 2795 2797 -0.765398 - 2795 2798 -1.293829 - 2795 2841 -0.000004 - 2795 2842 -0.701417 - 2795 2843 -1.185676 - 2796 1692 -0.049676 - 2796 2748 -0.000585 - 2796 2749 3.134930 - 2796 2750 5.299283 - 2796 2793 -0.015879 - 2796 2794 1.980721 - 2796 2795 3.348210 - 2796 2796 140.341690 - 2796 2797 -87.160026 - 2796 2798 -147.335220 - 2796 2799 -0.000549 - 2796 2844 -0.027019 - 2797 2750 -0.858435 - 2797 2795 -0.542377 - 2797 2797 -26.758321 - 2797 2798 22.617766 - 2798 1692 -0.000023 - 2798 1693 -3.602981 - 2798 1694 -6.090476 - 2798 2748 -0.000006 - 2798 2749 -0.890273 - 2798 2750 -1.504917 - 2798 2793 -0.000005 - 2798 2794 -0.765398 - 2798 2795 -1.293829 - 2798 2796 0.000373 - 2798 2797 6.917890 - 2798 2798 11.693996 - 2798 2799 -0.000006 - 2798 2800 -0.891516 - 2798 2801 -1.507018 - 2798 2844 -0.000005 - 2798 2845 -0.764717 - 2798 2846 -1.292677 - 2799 1695 -0.042453 - 2799 2751 -0.012406 - 2799 2752 5.617180 - 2799 2753 9.495282 - 2799 2796 -0.061160 - 2799 2797 5.833197 - 2799 2798 9.860430 - 2799 2799 157.923820 - 2799 2800 -103.738760 - 2799 2801 -175.360000 - 2799 2802 -0.000629 - 2799 2847 -0.025382 - 2800 2753 -1.538131 - 2800 2798 -1.597285 - 2800 2800 -30.106230 - 2800 2801 26.993128 - 2801 1695 -0.000021 - 2801 1696 -3.205047 - 2801 1697 -5.417811 - 2801 2751 -0.000006 - 2801 2752 -0.994993 - 2801 2753 -1.681936 - 2801 2796 -0.000006 - 2801 2797 -0.891516 - 2801 2798 -1.507018 - 2801 2799 0.000415 - 2801 2800 6.982097 - 2801 2801 11.802536 - 2801 2802 -0.000007 - 2801 2803 -0.996933 - 2801 2804 -1.685215 - 2801 2847 -0.000006 - 2801 2848 -0.890227 - 2801 2849 -1.504840 - 2802 1698 -0.019960 - 2802 2754 -0.028418 - 2802 2755 9.032298 - 2802 2756 15.268185 - 2802 2799 -0.112097 - 2802 2800 10.342836 - 2802 2801 17.483529 - 2802 2802 175.525420 - 2802 2803 -121.917900 - 2802 2804 -206.089890 - 2802 2805 -0.000751 - 2802 2850 -0.017076 - 2803 2756 -2.473234 - 2803 2801 -2.832101 - 2803 2803 -33.456331 - 2803 2804 31.800895 - 2804 1698 -0.000020 - 2804 1699 -2.884187 - 2804 1700 -4.875426 - 2804 2754 -0.000007 - 2804 2755 -1.115661 - 2804 2756 -1.885912 - 2804 2799 -0.000007 - 2804 2800 -0.996933 - 2804 2801 -1.685215 - 2804 2802 0.000459 - 2804 2803 7.163197 - 2804 2804 12.108662 - 2804 2805 -0.000008 - 2804 2806 -1.147923 - 2804 2807 -1.940448 - 2804 2850 -0.000007 - 2804 2851 -1.014734 - 2804 2852 -1.715305 - 2805 1701 -0.001648 - 2805 2757 -0.047987 - 2805 2758 14.508479 - 2805 2759 24.525133 - 2805 2802 -0.184903 - 2805 2803 15.575259 - 2805 2804 26.328400 - 2805 2805 210.680910 - 2805 2806 -153.128020 - 2805 2807 -258.847600 - 2805 2808 -0.000922 - 2805 2853 -0.039306 - 2806 2759 -3.972629 - 2806 2804 -4.264752 - 2806 2806 -40.153071 - 2806 2807 40.015170 - 2807 1701 -0.000017 - 2807 1702 -2.404773 - 2807 1703 -4.065028 - 2807 2757 -0.000009 - 2807 2758 -1.291764 - 2807 2759 -2.183598 - 2807 2802 -0.000008 - 2807 2803 -1.147923 - 2807 2804 -1.940448 - 2807 2805 0.000545 - 2807 2806 7.380206 - 2807 2807 12.475499 - 2807 2808 -0.000010 - 2807 2809 -1.344772 - 2807 2810 -2.273203 - 2807 2853 -0.000009 - 2807 2854 -1.186460 - 2807 2855 -2.005591 - 2808 1704 -0.001526 - 2808 2760 -0.154046 - 2808 2761 24.571690 - 2808 2762 41.535956 - 2808 2805 -0.242978 - 2808 2806 21.768511 - 2808 2807 36.797491 - 2808 2808 240.122120 - 2808 2809 -189.003000 - 2808 2810 -319.490440 - 2808 2811 -0.001121 - 2808 2856 -0.091497 - 2808 2857 2.519614 - 2808 2858 4.259152 - 2809 2762 -6.727911 - 2809 2807 -5.960374 - 2809 2809 -45.739429 - 2809 2810 49.546697 - 2809 2858 -0.689865 - 2810 1704 -0.000016 - 2810 1705 -2.112323 - 2810 1706 -3.570668 - 2810 2760 -0.000011 - 2810 2761 -1.484513 - 2810 2762 -2.509420 - 2810 2805 -0.000010 - 2810 2806 -1.344772 - 2810 2807 -2.273203 - 2810 2808 0.000619 - 2810 2809 7.860536 - 2810 2810 13.287442 - 2810 2811 -0.000012 - 2810 2812 -1.551506 - 2810 2813 -2.622664 - 2810 2856 -0.000010 - 2810 2857 -1.362276 - 2810 2858 -2.302789 - 2811 1707 -0.001384 - 2811 2763 -0.375093 - 2811 2764 49.880579 - 2811 2765 84.318130 - 2811 2808 -0.354729 - 2811 2809 31.038869 - 2811 2810 52.468065 - 2811 2811 281.898260 - 2811 2812 -302.958660 - 2811 2813 -512.121300 - 2811 2814 -0.354007 - 2811 2815 35.445146 - 2811 2816 59.916433 - 2811 2859 -0.305345 - 2811 2860 22.650621 - 2811 2861 38.288610 - 2812 2765 -13.657432 - 2812 2810 -8.498342 - 2812 2812 -53.561180 - 2812 2813 80.335994 - 2812 2816 -9.704780 - 2812 2861 -6.201579 - 2813 1707 -0.000014 - 2813 1708 -1.803479 - 2813 1709 -3.048600 - 2813 2763 -0.000013 - 2813 2764 -1.711591 - 2813 2765 -2.893273 - 2813 2808 -0.000012 - 2813 2809 -1.551506 - 2813 2810 -2.622664 - 2813 2811 0.000724 - 2813 2812 8.839132 - 2813 2813 14.941665 - 2813 2814 -0.000013 - 2813 2815 -1.718750 - 2813 2816 -2.905372 - 2813 2859 -0.000012 - 2813 2860 -1.626687 - 2813 2861 -2.749751 - 2814 1710 -0.001248 - 2814 2766 -0.163547 - 2814 2767 26.923069 - 2814 2768 45.510728 - 2814 2811 -0.001239 - 2814 2814 292.691800 - 2814 2815 -220.219250 - 2814 2816 -372.258370 - 2814 2817 -0.222788 - 2814 2818 21.807030 - 2814 2819 36.862603 - 2814 2862 -0.084129 - 2814 2863 0.565647 - 2814 2864 0.956170 - 2815 2768 -7.371726 - 2815 2815 -55.772693 - 2815 2816 57.627715 - 2815 2819 -5.970877 - 2815 2864 -0.154873 - 2816 1710 -0.000013 - 2816 1711 -1.731037 - 2816 1712 -2.926143 - 2816 2766 -0.000013 - 2816 2767 -1.748750 - 2816 2768 -2.956085 - 2816 2811 -0.000013 - 2816 2812 -1.718750 - 2816 2813 -2.905372 - 2816 2814 0.000748 - 2816 2815 8.710367 - 2816 2816 14.723995 - 2816 2817 -0.000013 - 2816 2818 -1.754257 - 2816 2819 -2.965397 - 2816 2862 -0.000013 - 2816 2863 -1.751301 - 2816 2864 -2.960397 - 2817 1713 -0.001200 - 2817 2769 -0.104125 - 2817 2770 20.234483 - 2817 2771 34.204370 - 2817 2814 -0.001215 - 2817 2817 292.482780 - 2817 2818 -206.096930 - 2817 2819 -348.386250 - 2817 2820 -0.170188 - 2817 2821 14.942885 - 2817 2822 25.259436 - 2817 2865 -0.001213 - 2818 2771 -5.540455 - 2818 2818 -55.761113 - 2818 2819 53.791450 - 2818 2822 -4.091520 - 2819 1713 -0.000013 - 2819 1714 -1.731841 - 2819 1715 -2.927504 - 2819 2769 -0.000012 - 2819 2770 -1.748755 - 2819 2771 -2.956095 - 2819 2814 -0.000013 - 2819 2815 -1.754257 - 2819 2816 -2.965397 - 2819 2817 0.000746 - 2819 2818 8.746176 - 2819 2819 14.784534 - 2819 2820 -0.000012 - 2819 2821 -1.753944 - 2819 2822 -2.964864 - 2819 2865 -0.000013 - 2819 2866 -1.751113 - 2819 2867 -2.960082 - 2820 1716 -0.011850 - 2820 2772 -0.087073 - 2820 2773 17.722819 - 2820 2774 29.958631 - 2820 2817 -0.001181 - 2820 2820 292.489260 - 2820 2821 -201.689720 - 2820 2822 -340.936080 - 2820 2823 -0.159428 - 2820 2824 13.042016 - 2820 2825 22.046224 - 2820 2868 -0.001179 - 2821 2774 -4.852811 - 2821 2821 -55.755356 - 2821 2822 52.600284 - 2821 2825 -3.571104 - 2822 1716 -0.000012 - 2822 1717 -1.730419 - 2822 1718 -2.925098 - 2822 2772 -0.000012 - 2822 2773 -1.749989 - 2822 2774 -2.958180 - 2822 2817 -0.000012 - 2822 2818 -1.753944 - 2822 2819 -2.964864 - 2822 2820 0.000745 - 2822 2821 8.745912 - 2822 2822 14.784082 - 2822 2823 -0.000012 - 2822 2824 -1.753781 - 2822 2825 -2.964591 - 2822 2868 -0.000012 - 2822 2869 -1.751516 - 2822 2870 -2.960761 - 2823 1719 -0.027058 - 2823 2775 -0.048589 - 2823 2776 12.648323 - 2823 2777 21.380725 - 2823 2820 -0.001151 - 2823 2823 292.398770 - 2823 2824 -183.518220 - 2823 2825 -310.219190 - 2824 2777 -3.463364 - 2824 2824 -55.751694 - 2824 2825 47.634733 - 2825 1719 -0.000012 - 2825 1720 -1.731666 - 2825 1721 -2.927208 - 2825 2775 -0.000012 - 2825 2776 -1.732292 - 2825 2777 -2.928266 - 2825 2820 -0.000012 - 2825 2821 -1.753781 - 2825 2822 -2.964591 - 2825 2823 0.000719 - 2825 2824 5.224001 - 2825 2825 8.830651 - 2826 2826 1.000000 - 2827 2827 1.000000 - 2828 2828 1.000000 - 2829 2829 1.000000 - 2830 2830 1.000000 - 2831 2831 1.000000 - 2832 2832 1.000000 - 2833 2833 1.000000 - 2834 2834 1.000000 - 2835 2835 1.000000 - 2836 2836 1.000000 - 2837 2837 1.000000 - 2838 2838 1.000000 - 2839 2839 1.000000 - 2840 2840 1.000000 - 2841 1737 -0.052764 - 2841 2793 -0.000426 - 2841 2841 116.940080 - 2841 2842 -71.513262 - 2841 2843 -120.886020 - 2841 2844 -0.000426 - 2841 2889 -0.042488 - 2841 2890 3.126292 - 2841 2891 5.284685 - 2842 2842 -22.298278 - 2842 2843 18.542426 - 2842 2891 -0.856079 - 2843 1737 -0.000027 - 2843 1738 -4.321552 - 2843 1739 -7.305152 - 2843 2793 -0.000004 - 2843 2794 -0.701417 - 2843 2795 -1.185676 - 2843 2841 0.000314 - 2843 2842 6.428423 - 2843 2843 10.866607 - 2843 2844 -0.000004 - 2843 2845 -0.701439 - 2843 2846 -1.185713 - 2843 2889 -0.000004 - 2843 2890 -0.701511 - 2843 2891 -1.185833 - 2844 1740 -0.051145 - 2844 2796 -0.000472 - 2844 2797 0.237245 - 2844 2798 0.401038 - 2844 2841 -0.014510 - 2844 2842 3.074341 - 2844 2843 5.196866 - 2844 2844 116.981860 - 2844 2845 -73.655198 - 2844 2846 -124.506660 - 2844 2847 -0.000472 - 2844 2892 -0.037647 - 2844 2893 1.974108 - 2844 2894 3.337031 - 2845 2798 -0.064964 - 2845 2843 -0.841845 - 2845 2845 -22.302114 - 2845 2846 19.119340 - 2845 2894 -0.540567 - 2846 1740 -0.000028 - 2846 1741 -4.321276 - 2846 1742 -7.304679 - 2846 2796 -0.000005 - 2846 2797 -0.764717 - 2846 2798 -1.292677 - 2846 2841 -0.000004 - 2846 2842 -0.701439 - 2846 2843 -1.185713 - 2846 2844 0.000320 - 2846 2845 7.256808 - 2846 2846 12.266901 - 2846 2847 -0.000005 - 2846 2848 -0.765451 - 2846 2849 -1.293918 - 2846 2892 -0.000004 - 2846 2893 -0.701420 - 2846 2894 -1.185679 - 2847 1743 -0.045466 - 2847 2799 -0.000565 - 2847 2800 1.546114 - 2847 2801 2.613551 - 2847 2844 -0.057739 - 2847 2845 6.099991 - 2847 2846 10.311418 - 2847 2847 140.408860 - 2847 2848 -91.323808 - 2847 2849 -154.373760 - 2847 2850 -0.000576 - 2847 2895 -0.042281 - 2847 2896 1.630936 - 2847 2897 2.756933 - 2848 2801 -0.423361 - 2848 2846 -1.670339 - 2848 2848 -26.766776 - 2848 2849 23.736591 - 2848 2897 -0.446587 - 2849 1743 -0.000024 - 2849 1744 -3.602770 - 2849 1745 -6.090122 - 2849 2799 -0.000006 - 2849 2800 -0.890227 - 2849 2801 -1.504840 - 2849 2844 -0.000005 - 2849 2845 -0.765451 - 2849 2846 -1.293918 - 2849 2847 0.000374 - 2849 2848 6.933268 - 2849 2849 11.719995 - 2849 2850 -0.000006 - 2849 2851 -0.906773 - 2849 2852 -1.532808 - 2849 2895 -0.000005 - 2849 2896 -0.765039 - 2849 2897 -1.293222 - 2850 1746 -0.029380 - 2850 2802 -0.000669 - 2850 2803 2.230659 - 2850 2804 3.770703 - 2850 2847 -0.112564 - 2850 2848 9.825410 - 2850 2849 16.608873 - 2850 2850 163.813100 - 2850 2851 -109.961840 - 2850 2852 -185.879390 - 2850 2853 -0.000691 - 2850 2898 -0.060381 - 2850 2899 2.184291 - 2850 2900 3.692323 - 2851 2804 -0.610790 - 2851 2849 -2.690407 - 2851 2851 -31.231894 - 2851 2852 28.617763 - 2851 2900 -0.598094 - 2852 1746 -0.000021 - 2852 1747 -3.090092 - 2852 1748 -5.223489 - 2852 2802 -0.000007 - 2852 2803 -1.014734 - 2852 2804 -1.715305 - 2852 2847 -0.000006 - 2852 2848 -0.906773 - 2852 2849 -1.532808 - 2852 2850 0.000431 - 2852 2851 6.987925 - 2852 2852 11.812382 - 2852 2853 -0.000007 - 2852 2854 -1.047860 - 2852 2855 -1.771302 - 2852 2898 -0.000006 - 2852 2899 -0.924954 - 2852 2900 -1.563541 - 2853 1749 -0.001863 - 2853 2805 -0.000817 - 2853 2806 1.776910 - 2853 2807 3.003689 - 2853 2850 -0.151719 - 2853 2851 13.482684 - 2853 2852 22.791115 - 2853 2853 187.243250 - 2853 2854 -129.245670 - 2853 2855 -218.476890 - 2853 2856 -0.000829 - 2853 2901 -0.094354 - 2853 2902 4.581557 - 2853 2903 7.744664 - 2854 2807 -0.486531 - 2854 2852 -3.691753 - 2854 2854 -35.699346 - 2854 2855 33.669408 - 2854 2903 -1.254471 - 2855 1749 -0.000019 - 2855 1750 -2.704891 - 2855 1751 -4.572347 - 2855 2805 -0.000009 - 2855 2806 -1.186460 - 2855 2807 -2.005591 - 2855 2850 -0.000007 - 2855 2851 -1.047860 - 2855 2852 -1.771302 - 2855 2853 0.000489 - 2855 2854 7.231765 - 2855 2855 12.224575 - 2855 2856 -0.000009 - 2855 2857 -1.203871 - 2855 2858 -2.035024 - 2855 2901 -0.000008 - 2855 2902 -1.084668 - 2855 2903 -1.833523 - 2856 1752 -0.001680 - 2856 2808 -0.000978 - 2856 2853 -0.176557 - 2856 2854 15.457157 - 2856 2855 26.128778 - 2856 2856 216.557680 - 2856 2857 -151.392050 - 2856 2858 -255.912970 - 2856 2859 -0.001023 - 2856 2904 -0.149658 - 2856 2905 9.450693 - 2856 2906 15.975441 - 2857 2855 -4.232265 - 2857 2857 -41.283654 - 2857 2858 39.447704 - 2857 2906 -2.587626 - 2858 1752 -0.000018 - 2858 1753 -2.340037 - 2858 1754 -3.955596 - 2858 2808 -0.000010 - 2858 2809 -1.362276 - 2858 2810 -2.302789 - 2858 2853 -0.000009 - 2858 2854 -1.203871 - 2858 2855 -2.035024 - 2858 2856 0.000563 - 2858 2857 7.613836 - 2858 2858 12.870422 - 2858 2859 -0.000011 - 2858 2860 -1.424649 - 2858 2861 -2.408225 - 2858 2904 -0.000009 - 2858 2905 -1.278358 - 2858 2906 -2.160934 - 2859 1755 -0.001416 - 2859 2811 -0.001197 - 2859 2856 -0.153991 - 2859 2857 11.298069 - 2859 2858 19.098244 - 2859 2859 263.422520 - 2859 2860 -192.365090 - 2859 2861 -325.173940 - 2859 2862 -0.110191 - 2859 2863 11.669962 - 2859 2864 19.726888 - 2859 2907 -0.230820 - 2859 2908 15.533079 - 2859 2909 26.257116 - 2860 2858 -3.093388 - 2860 2860 -50.211097 - 2860 2861 50.228609 - 2860 2864 -3.195205 - 2860 2909 -4.252946 - 2861 1755 -0.000015 - 2861 1756 -1.923952 - 2861 1757 -3.252249 - 2861 2811 -0.000012 - 2861 2812 -1.626687 - 2861 2813 -2.749751 - 2861 2856 -0.000011 - 2861 2857 -1.424649 - 2861 2858 -2.408225 - 2861 2859 0.000678 - 2861 2860 8.201110 - 2861 2861 13.863152 - 2861 2862 -0.000012 - 2861 2863 -1.662238 - 2861 2864 -2.809845 - 2861 2907 -0.000012 - 2861 2908 -1.557933 - 2861 2909 -2.633530 - 2862 1758 -0.001246 - 2862 2814 -0.001261 - 2862 2859 -0.001197 - 2862 2862 292.461160 - 2862 2863 -191.117990 - 2862 2864 -323.065590 - 2862 2865 -0.139241 - 2862 2866 12.739216 - 2862 2867 21.534371 - 2862 2910 -0.145309 - 2862 2911 7.432785 - 2862 2912 12.564371 - 2863 2863 -55.782280 - 2863 2864 49.636495 - 2863 2867 -3.488023 - 2863 2912 -2.035097 - 2864 1758 -0.000013 - 2864 1759 -1.730476 - 2864 1760 -2.925195 - 2864 2814 -0.000013 - 2864 2815 -1.751301 - 2864 2816 -2.960397 - 2864 2859 -0.000012 - 2864 2860 -1.662238 - 2864 2861 -2.809845 - 2864 2862 0.000749 - 2864 2863 8.656239 - 2864 2864 14.632498 - 2864 2865 -0.000013 - 2864 2866 -1.754513 - 2864 2867 -2.965828 - 2864 2910 -0.000013 - 2864 2911 -1.751435 - 2864 2912 -2.960625 - 2865 1761 -0.001217 - 2865 2817 -0.001766 - 2865 2818 8.486992 - 2865 2819 14.346412 - 2865 2862 -0.001234 - 2865 2865 292.366410 - 2865 2866 -188.081950 - 2865 2867 -317.933730 - 2865 2868 -0.089048 - 2865 2869 8.645098 - 2865 2870 14.613665 - 2865 2913 -0.049930 - 2866 2819 -2.323782 - 2866 2866 -55.776604 - 2866 2867 48.820171 - 2866 2870 -2.367073 - 2867 1761 -0.000013 - 2867 1762 -1.729695 - 2867 1763 -2.923877 - 2867 2817 -0.000013 - 2867 2818 -1.751113 - 2867 2819 -2.960082 - 2867 2862 -0.000013 - 2867 2863 -1.754513 - 2867 2864 -2.965828 - 2867 2865 0.000748 - 2867 2866 8.747352 - 2867 2867 14.786522 - 2867 2868 -0.000013 - 2867 2869 -1.754465 - 2867 2870 -2.965746 - 2867 2913 -0.000013 - 2867 2914 -1.751292 - 2867 2915 -2.960384 - 2868 1764 -0.011707 - 2868 2820 -0.082800 - 2868 2821 14.779875 - 2868 2822 24.983885 - 2868 2865 -0.001215 - 2868 2868 292.307290 - 2868 2869 -185.722040 - 2868 2870 -313.944340 - 2868 2916 -0.017816 - 2869 2822 -4.046886 - 2869 2869 -55.771995 - 2869 2870 48.186100 - 2870 1764 -0.000013 - 2870 1765 -1.730274 - 2870 1766 -2.924854 - 2870 2820 -0.000012 - 2870 2821 -1.751516 - 2870 2822 -2.960761 - 2870 2865 -0.000013 - 2870 2866 -1.754465 - 2870 2867 -2.965746 - 2870 2868 0.000734 - 2870 2869 6.994246 - 2870 2870 11.823066 - 2870 2916 -0.000013 - 2870 2917 -1.751719 - 2870 2918 -2.961104 - 2871 2871 1.000000 - 2872 2872 1.000000 - 2873 2873 1.000000 - 2874 2874 1.000000 - 2875 2875 1.000000 - 2876 2876 1.000000 - 2877 2877 1.000000 - 2878 2878 1.000000 - 2879 2879 1.000000 - 2880 2880 1.000000 - 2881 2881 1.000000 - 2882 2882 1.000000 - 2883 2883 1.000000 - 2884 2884 1.000000 - 2885 2885 1.000000 - 2886 1782 -0.052840 - 2886 2886 122.763670 - 2886 2887 -74.141000 - 2886 2888 -125.327870 - 2886 2889 -0.000421 - 2886 2934 -0.015280 - 2886 2935 2.330081 - 2886 2936 3.938766 - 2887 2887 -23.407988 - 2887 2888 19.223281 - 2887 2936 -0.638063 - 2888 1782 -0.000025 - 2888 1783 -4.116348 - 2888 1784 -6.958270 - 2888 2886 0.000322 - 2888 2887 5.622511 - 2888 2888 9.504287 - 2888 2889 -0.000004 - 2888 2890 -0.717922 - 2888 2891 -1.213575 - 2888 2934 -0.000005 - 2888 2935 -0.785615 - 2888 2936 -1.328003 - 2889 1785 -0.052962 - 2889 2841 -0.000419 - 2889 2886 -0.012451 - 2889 2887 3.407376 - 2889 2888 5.759824 - 2889 2889 116.963480 - 2889 2890 -74.727793 - 2889 2891 -126.319860 - 2889 2892 -0.000418 - 2889 2937 -0.039294 - 2889 2938 2.937664 - 2889 2939 4.965826 - 2890 2888 -0.933059 - 2890 2890 -22.297929 - 2890 2891 19.423783 - 2890 2939 -0.804434 - 2891 1785 -0.000027 - 2891 1786 -4.323953 - 2891 1787 -7.309211 - 2891 2841 -0.000004 - 2891 2842 -0.701511 - 2891 2843 -1.185833 - 2891 2886 -0.000004 - 2891 2887 -0.717922 - 2891 2888 -1.213575 - 2891 2889 0.000318 - 2891 2890 7.165543 - 2891 2891 12.112634 - 2891 2892 -0.000004 - 2891 2893 -0.701183 - 2891 2894 -1.185280 - 2891 2937 -0.000004 - 2891 2938 -0.718470 - 2891 2939 -1.214502 - 2892 1788 -0.052331 - 2892 2844 -0.000428 - 2892 2889 -0.019336 - 2892 2890 4.224428 - 2892 2891 7.140973 - 2892 2892 116.985380 - 2892 2893 -75.477566 - 2892 2894 -127.587220 - 2892 2895 -0.000428 - 2892 2940 -0.039897 - 2892 2941 2.871332 - 2892 2942 4.853698 - 2893 2891 -1.156784 - 2893 2893 -22.303262 - 2893 2894 19.615711 - 2893 2942 -0.786260 - 2894 1788 -0.000028 - 2894 1789 -4.320322 - 2894 1790 -7.303069 - 2894 2844 -0.000004 - 2894 2845 -0.701420 - 2894 2846 -1.185679 - 2894 2889 -0.000004 - 2894 2890 -0.701183 - 2894 2891 -1.185280 - 2894 2892 0.000319 - 2894 2893 7.128685 - 2894 2894 12.050324 - 2894 2895 -0.000004 - 2894 2896 -0.701681 - 2894 2897 -1.186120 - 2894 2940 -0.000004 - 2894 2941 -0.701573 - 2894 2942 -1.185939 - 2895 1791 -0.049201 - 2895 2847 -0.000482 - 2895 2892 -0.051813 - 2895 2893 6.070538 - 2895 2894 10.261632 - 2895 2895 117.022330 - 2895 2896 -77.644013 - 2895 2897 -131.249440 - 2895 2898 -0.000491 - 2895 2943 -0.046668 - 2895 2944 3.198839 - 2895 2945 5.407317 - 2896 2894 -1.662285 - 2896 2896 -22.307808 - 2896 2897 20.197250 - 2896 2945 -0.875924 - 2897 1791 -0.000028 - 2897 1792 -4.320544 - 2897 1793 -7.303447 - 2897 2847 -0.000005 - 2897 2848 -0.765039 - 2897 2849 -1.293222 - 2897 2892 -0.000004 - 2897 2893 -0.701681 - 2897 2894 -1.186120 - 2897 2895 0.000321 - 2897 2896 7.271184 - 2897 2897 12.291208 - 2897 2898 -0.000005 - 2897 2899 -0.779764 - 2897 2900 -1.318112 - 2897 2943 -0.000005 - 2897 2944 -0.701649 - 2897 2945 -1.186068 - 2898 1794 -0.040000 - 2898 2850 -0.000605 - 2898 2895 -0.088995 - 2898 2896 8.269744 - 2898 2897 13.979175 - 2898 2898 146.285930 - 2898 2899 -98.102872 - 2898 2900 -165.832990 - 2898 2901 -0.000626 - 2898 2946 -0.086061 - 2898 2947 4.349211 - 2898 2948 7.351902 - 2899 2897 -2.264444 - 2899 2899 -27.889063 - 2899 2900 25.522133 - 2899 2948 -1.190898 - 2900 1794 -0.000024 - 2900 1795 -3.463996 - 2900 1796 -5.855535 - 2900 2850 -0.000006 - 2900 2851 -0.924954 - 2900 2852 -1.563541 - 2900 2895 -0.000005 - 2900 2896 -0.779764 - 2900 2897 -1.318112 - 2900 2898 0.000389 - 2900 2899 6.948916 - 2900 2900 11.746441 - 2900 2901 -0.000007 - 2900 2902 -0.956926 - 2900 2903 -1.617587 - 2900 2946 -0.000005 - 2900 2947 -0.820139 - 2900 2948 -1.386363 - 2901 1797 -0.019987 - 2901 2853 -0.000737 - 2901 2898 -0.117784 - 2901 2899 10.529944 - 2901 2900 17.799806 - 2901 2901 175.551540 - 2901 2902 -119.782820 - 2901 2903 -202.480880 - 2901 2904 -0.000780 - 2901 2949 -0.112524 - 2901 2950 6.682387 - 2901 2951 11.295907 - 2902 2900 -2.883266 - 2902 2902 -33.471603 - 2902 2903 31.177756 - 2902 2951 -1.829725 - 2903 1797 -0.000021 - 2903 1798 -2.885504 - 2903 1799 -4.877655 - 2903 2853 -0.000008 - 2903 2854 -1.084668 - 2903 2855 -1.833523 - 2903 2898 -0.000007 - 2903 2899 -0.956926 - 2903 2900 -1.617587 - 2903 2901 0.000460 - 2903 2902 7.092170 - 2903 2903 11.988602 - 2903 2904 -0.000008 - 2903 2905 -1.148179 - 2903 2906 -1.940881 - 2903 2949 -0.000007 - 2903 2950 -1.013127 - 2903 2951 -1.712590 - 2904 1800 -0.001686 - 2904 2856 -0.000896 - 2904 2901 -0.133850 - 2904 2902 11.103122 - 2904 2903 18.768717 - 2904 2904 210.651740 - 2904 2905 -144.066010 - 2904 2906 -243.529010 - 2904 2907 -0.000974 - 2904 2952 -0.154186 - 2904 2953 9.863041 - 2904 2954 16.672475 - 2905 2903 -3.040134 - 2905 2905 -40.169576 - 2905 2906 37.492727 - 2905 2954 -2.700578 - 2906 1800 -0.000018 - 2906 1801 -2.404928 - 2906 1802 -4.065287 - 2906 2856 -0.000009 - 2906 2857 -1.278358 - 2906 2858 -2.160934 - 2906 2901 -0.000008 - 2906 2902 -1.148179 - 2906 2903 -1.940881 - 2906 2904 0.000546 - 2906 2905 7.450284 - 2906 2906 12.593953 - 2906 2907 -0.000010 - 2906 2908 -1.389370 - 2906 2909 -2.348590 - 2906 2952 -0.000009 - 2906 2953 -1.224929 - 2906 2954 -2.070619 - 2907 1803 -0.001404 - 2907 2859 -0.001111 - 2907 2904 -0.106975 - 2907 2905 7.437077 - 2907 2906 12.571626 - 2907 2907 257.396410 - 2907 2908 -171.361080 - 2907 2909 -289.668760 - 2907 2910 -0.001779 - 2907 2911 2.125165 - 2907 2912 3.592377 - 2907 2955 -0.188991 - 2907 2956 11.347922 - 2907 2957 19.182526 - 2908 2906 -2.036292 - 2908 2908 -49.096209 - 2908 2909 44.531218 - 2908 2912 -0.581870 - 2908 2957 -3.107108 - 2909 1803 -0.000015 - 2909 1804 -1.968134 - 2909 1805 -3.326934 - 2909 2859 -0.000012 - 2909 2860 -1.557933 - 2909 2861 -2.633530 - 2909 2904 -0.000010 - 2909 2905 -1.389370 - 2909 2906 -2.348590 - 2909 2907 0.000661 - 2909 2908 8.068391 - 2909 2909 13.638805 - 2909 2910 -0.000012 - 2909 2911 -1.642573 - 2909 2912 -2.776604 - 2909 2955 -0.000011 - 2909 2956 -1.504854 - 2909 2957 -2.543806 - 2910 1806 -0.001230 - 2910 2862 -0.001245 - 2910 2907 -0.001167 - 2910 2910 292.357580 - 2910 2911 -183.392210 - 2910 2912 -310.005990 - 2910 2913 -0.043703 - 2910 2914 4.180308 - 2910 2915 7.066393 - 2910 2958 -0.161869 - 2910 2959 8.223601 - 2910 2960 13.901166 - 2911 2911 -55.787051 - 2911 2912 47.510016 - 2911 2915 -1.144575 - 2911 2960 -2.251647 - 2912 1806 -0.000013 - 2912 1807 -1.731237 - 2912 1808 -2.926480 - 2912 2862 -0.000013 - 2912 2863 -1.751435 - 2912 2864 -2.960625 - 2912 2907 -0.000012 - 2912 2908 -1.642573 - 2912 2909 -2.776604 - 2912 2910 0.000748 - 2912 2911 8.637157 - 2912 2912 14.600243 - 2912 2913 -0.000013 - 2912 2914 -1.754617 - 2912 2915 -2.966005 - 2912 2958 -0.000013 - 2912 2959 -1.751017 - 2912 2960 -2.959917 - 2913 1809 -0.006031 - 2913 2865 -0.001235 - 2913 2866 1.110960 - 2913 2867 1.877967 - 2913 2910 -0.001237 - 2913 2913 292.296900 - 2913 2914 -176.690160 - 2913 2915 -298.677050 - 2913 2916 -0.056888 - 2913 2917 4.634097 - 2913 2918 7.833474 - 2914 2867 -0.304183 - 2914 2914 -55.784865 - 2914 2915 45.680730 - 2914 2918 -1.268831 - 2915 1809 -0.000013 - 2915 1810 -1.732066 - 2915 1811 -2.927885 - 2915 2865 -0.000013 - 2915 2866 -1.751292 - 2915 2867 -2.960384 - 2915 2910 -0.000013 - 2915 2911 -1.754617 - 2915 2912 -2.966005 - 2915 2913 0.000735 - 2915 2914 6.998827 - 2915 2915 11.830815 - 2915 2916 -0.000013 - 2915 2917 -1.754575 - 2915 2918 -2.965931 - 2916 1812 -0.017019 - 2916 2868 -0.001224 - 2916 2869 5.115950 - 2916 2870 8.647996 - 2916 2913 -0.001226 - 2916 2916 292.278220 - 2916 2917 -176.058170 - 2916 2918 -297.608570 - 2917 2870 -1.400774 - 2917 2917 -55.783494 - 2917 2918 45.511484 - 2918 1812 -0.000013 - 2918 1813 -1.730493 - 2918 1814 -2.925224 - 2918 2868 -0.000013 - 2918 2869 -1.751719 - 2918 2870 -2.961104 - 2918 2913 -0.000013 - 2918 2914 -1.754575 - 2918 2915 -2.965931 - 2918 2916 0.000722 - 2918 2917 5.243063 - 2918 2918 8.862868 - 2919 2919 1.000000 - 2920 2920 1.000000 - 2921 2921 1.000000 - 2922 2922 1.000000 - 2923 2923 1.000000 - 2924 2924 1.000000 - 2925 2925 1.000000 - 2926 2926 1.000000 - 2927 2927 1.000000 - 2928 2928 1.000000 - 2929 2929 1.000000 - 2930 2930 1.000000 - 2931 2931 1.000000 - 2932 2932 1.000000 - 2933 2933 1.000000 - 2934 1830 -0.052524 - 2934 2886 -0.000455 - 2934 2934 140.304940 - 2934 2935 -85.988916 - 2934 2936 -145.355580 - 2934 2937 -0.014952 - 2934 2982 -0.025936 - 2934 2983 3.918270 - 2934 2984 6.623438 - 2935 2935 -26.749432 - 2935 2936 22.319922 - 2935 2984 -1.072978 - 2936 1830 -0.000022 - 2936 1831 -3.609268 - 2936 1832 -6.101103 - 2936 2886 -0.000005 - 2936 2887 -0.785615 - 2936 2888 -1.328003 - 2936 2934 0.000365 - 2936 2935 6.072683 - 2936 2936 10.265257 - 2936 2937 -0.000005 - 2936 2938 -0.784093 - 2936 2939 -1.325430 - 2936 2982 -0.000005 - 2936 2983 -0.890706 - 2936 2984 -1.505649 - 2937 1833 -0.052799 - 2937 2889 -0.000422 - 2937 2934 -0.000461 - 2937 2935 2.840873 - 2937 2936 4.802209 - 2937 2937 122.819040 - 2937 2938 -77.998744 - 2937 2939 -131.849080 - 2937 2940 -0.000422 - 2937 2985 -0.014222 - 2937 2986 3.360142 - 2937 2987 5.679985 - 2938 2936 -0.777936 - 2938 2938 -23.412403 - 2938 2939 20.268814 - 2938 2987 -0.920133 - 2939 1833 -0.000025 - 2939 1834 -4.120276 - 2939 1835 -6.964914 - 2939 2889 -0.000004 - 2939 2890 -0.718470 - 2939 2891 -1.214502 - 2939 2934 -0.000005 - 2939 2935 -0.784093 - 2939 2936 -1.325430 - 2939 2937 0.000331 - 2939 2938 7.129016 - 2939 2939 12.050888 - 2939 2940 -0.000004 - 2939 2941 -0.718184 - 2939 2942 -1.214018 - 2939 2985 -0.000005 - 2939 2986 -0.785365 - 2939 2987 -1.327581 - 2940 1836 -0.052786 - 2940 2892 -0.000422 - 2940 2937 -0.018239 - 2940 2938 4.323829 - 2940 2939 7.309001 - 2940 2940 116.981090 - 2940 2941 -75.997533 - 2940 2942 -128.466150 - 2940 2943 -0.000422 - 2940 2988 -0.023639 - 2940 2989 3.298516 - 2940 2990 5.575808 - 2941 2939 -1.184015 - 2941 2941 -22.303045 - 2941 2942 19.758867 - 2941 2990 -0.903246 - 2942 1836 -0.000027 - 2942 1837 -4.321090 - 2942 1838 -7.304366 - 2942 2892 -0.000004 - 2942 2893 -0.701573 - 2942 2894 -1.185939 - 2942 2937 -0.000004 - 2942 2938 -0.718184 - 2942 2939 -1.214018 - 2942 2940 0.000318 - 2942 2941 7.146204 - 2942 2942 12.079937 - 2942 2943 -0.000004 - 2942 2944 -0.701387 - 2942 2945 -1.185624 - 2942 2988 -0.000004 - 2942 2989 -0.701464 - 2942 2990 -1.185754 - 2943 1839 -0.051639 - 2943 2895 -0.000435 - 2943 2940 -0.045028 - 2943 2941 5.740741 - 2943 2942 9.704143 - 2943 2943 116.993330 - 2943 2944 -77.946499 - 2943 2945 -131.760760 - 2943 2946 -0.000455 - 2943 2991 -0.042629 - 2943 2992 3.815696 - 2943 2993 6.450052 - 2944 2942 -1.571992 - 2944 2944 -22.307860 - 2944 2945 20.280237 - 2944 2993 -1.044849 - 2945 1839 -0.000028 - 2945 1840 -4.322044 - 2945 1841 -7.305982 - 2945 2895 -0.000005 - 2945 2896 -0.701649 - 2945 2897 -1.186068 - 2945 2940 -0.000004 - 2945 2941 -0.701387 - 2945 2942 -1.185624 - 2945 2943 0.000320 - 2945 2944 7.164206 - 2945 2945 12.110372 - 2945 2946 -0.000005 - 2945 2947 -0.734913 - 2945 2948 -1.242296 - 2945 2991 -0.000004 - 2945 2992 -0.701705 - 2945 2993 -1.186162 - 2946 1842 -0.047034 - 2946 2898 -0.000526 - 2946 2943 -0.055637 - 2946 2944 7.246957 - 2946 2945 12.250255 - 2946 2946 128.759700 - 2946 2947 -87.385812 - 2946 2948 -147.716890 - 2946 2949 -0.000555 - 2946 2994 -0.066907 - 2946 2995 4.929220 - 2946 2996 8.332348 - 2947 2945 -1.984403 - 2947 2947 -24.545170 - 2947 2948 22.741959 - 2947 2996 -1.349736 - 2948 1842 -0.000026 - 2948 1843 -3.929329 - 2948 1844 -6.642133 - 2948 2898 -0.000005 - 2948 2899 -0.820139 - 2948 2900 -1.386363 - 2948 2943 -0.000005 - 2948 2944 -0.734913 - 2948 2945 -1.242296 - 2948 2946 0.000348 - 2948 2947 7.105568 - 2948 2948 12.011246 - 2948 2949 -0.000006 - 2948 2950 -0.864518 - 2948 2951 -1.461380 - 2948 2994 -0.000005 - 2948 2995 -0.753908 - 2948 2996 -1.274405 - 2949 1845 -0.037777 - 2949 2901 -0.000673 - 2949 2946 -0.101106 - 2949 2947 8.395032 - 2949 2948 14.190954 - 2949 2949 163.855520 - 2949 2950 -111.190550 - 2949 2951 -187.956510 - 2949 2952 -0.000716 - 2949 2997 -0.136190 - 2949 2998 7.039553 - 2949 2999 11.899659 - 2950 2948 -2.298722 - 2950 2950 -31.242159 - 2950 2951 28.928800 - 2950 2999 -1.927556 - 2951 1845 -0.000022 - 2951 1846 -3.100324 - 2951 1847 -5.240788 - 2951 2901 -0.000007 - 2951 2902 -1.013127 - 2951 2903 -1.712590 - 2951 2946 -0.000006 - 2951 2947 -0.864518 - 2951 2948 -1.461380 - 2951 2949 0.000431 - 2951 2950 7.003183 - 2951 2951 11.838180 - 2951 2952 -0.000007 - 2951 2953 -1.077522 - 2951 2954 -1.821443 - 2951 2997 -0.000006 - 2951 2998 -0.944176 - 2951 2999 -1.596036 - 2952 1848 -0.024271 - 2952 2904 -0.000836 - 2952 2949 -0.109652 - 2952 2950 8.850513 - 2952 2951 14.960908 - 2952 2952 198.950030 - 2952 2953 -134.665010 - 2952 2954 -227.637610 - 2952 2955 -0.000900 - 2952 3000 -0.150164 - 2952 3001 9.552097 - 2952 3002 16.146856 - 2953 2951 -2.423387 - 2953 2953 -37.939422 - 2953 2954 35.024388 - 2953 3002 -2.615488 - 2954 1848 -0.000018 - 2954 1849 -2.546503 - 2954 1850 -4.304606 - 2954 2904 -0.000009 - 2954 2905 -1.224929 - 2954 2906 -2.070619 - 2954 2949 -0.000007 - 2954 2950 -1.077522 - 2954 2951 -1.821443 - 2954 2952 0.000517 - 2954 2953 7.360557 - 2954 2954 12.442280 - 2954 2955 -0.000009 - 2954 2956 -1.318588 - 2954 2957 -2.228939 - 2954 3000 -0.000008 - 2954 3001 -1.188745 - 2954 3002 -2.009454 - 2955 1851 -0.015525 - 2955 2907 -0.001048 - 2955 2952 -0.101891 - 2955 2953 7.731886 - 2955 2954 13.069973 - 2955 2955 245.685780 - 2955 2956 -158.573580 - 2955 2957 -268.052780 - 2955 2958 -0.001115 - 2955 3003 -0.141279 - 2955 3004 7.208432 - 2955 3005 12.185133 - 2956 2954 -2.117051 - 2956 2956 -46.867737 - 2956 2957 41.131714 - 2956 3005 -1.973721 - 2957 1851 -0.000015 - 2957 1852 -2.061775 - 2957 1853 -3.485225 - 2957 2907 -0.000011 - 2957 2908 -1.504854 - 2957 2909 -2.543806 - 2957 2952 -0.000009 - 2957 2953 -1.318588 - 2957 2954 -2.228939 - 2957 2955 0.000632 - 2957 2956 7.945251 - 2957 2957 13.430650 - 2957 2958 -0.000012 - 2957 2959 -1.601982 - 2957 2960 -2.707990 - 2957 3003 -0.000010 - 2957 3004 -1.452776 - 2957 3005 -2.455772 - 2958 1854 -0.019986 - 2958 2910 -0.001225 - 2958 2955 -0.053627 - 2958 2956 2.484269 - 2958 2957 4.199408 - 2958 2958 292.357990 - 2958 2959 -179.346790 - 2958 2960 -303.167610 - 2958 3006 -0.140855 - 2958 3007 5.871554 - 2958 3008 9.925269 - 2959 2957 -0.680203 - 2959 2959 -55.792557 - 2959 2960 46.389658 - 2959 3008 -1.607663 - 2960 1854 -0.000013 - 2960 1855 -1.731620 - 2960 1856 -2.927129 - 2960 2910 -0.000013 - 2960 2911 -1.751017 - 2960 2912 -2.959917 - 2960 2955 -0.000012 - 2960 2956 -1.601982 - 2960 2957 -2.707990 - 2960 2958 0.000734 - 2960 2959 6.824196 - 2960 2960 11.535616 - 2960 3006 -0.000013 - 2960 3007 -1.733297 - 2960 3008 -2.929964 - 2961 2961 1.000000 - 2962 2962 1.000000 - 2963 2963 1.000000 - 2964 2964 1.000000 - 2965 2965 1.000000 - 2966 2966 1.000000 - 2967 2967 1.000000 - 2968 2968 1.000000 - 2969 2969 1.000000 - 2970 2970 1.000000 - 2971 2971 1.000000 - 2972 2972 1.000000 - 2973 2973 1.000000 - 2974 2974 1.000000 - 2975 2975 1.000000 - 2976 2976 1.000000 - 2977 2977 1.000000 - 2978 2978 1.000000 - 2979 1875 -0.051616 - 2979 2979 175.379410 - 2979 2980 -104.056960 - 2979 2981 -175.897890 - 2979 2982 -0.010040 - 2979 3027 -0.000591 - 2979 3028 1.476702 - 2979 3029 2.496218 - 2980 2980 -33.424919 - 2980 2981 26.990414 - 2980 3029 -0.404384 - 2981 1875 -0.000017 - 2981 1876 -2.883379 - 2981 1877 -4.874064 - 2981 2979 0.000439 - 2981 2980 4.933650 - 2981 2981 8.339842 - 2981 2982 -0.000006 - 2981 2983 -0.994955 - 2981 2984 -1.681872 - 2981 3027 -0.000006 - 2981 3028 -1.051570 - 2981 3029 -1.777574 - 2982 1878 -0.052015 - 2982 2934 -0.000507 - 2982 2979 -0.000566 - 2982 2980 3.044582 - 2982 2981 5.146561 - 2982 2982 157.872980 - 2982 2983 -98.166516 - 2982 2984 -165.940560 - 2982 2985 -0.007157 - 2982 3030 -0.000567 - 2982 3031 2.800946 - 2982 3032 4.734716 - 2983 2981 -0.833734 - 2983 2983 -30.088923 - 2983 2984 25.511811 - 2983 3032 -0.767016 - 2984 1878 -0.000019 - 2984 1879 -3.208021 - 2984 1880 -5.422834 - 2984 2934 -0.000005 - 2984 2935 -0.890706 - 2984 2936 -1.505649 - 2984 2979 -0.000006 - 2984 2980 -0.994955 - 2984 2981 -1.681872 - 2984 2982 0.000411 - 2984 2983 6.982558 - 2984 2984 11.803310 - 2984 2985 -0.000005 - 2984 2986 -0.889449 - 2984 2987 -1.503523 - 2984 3030 -0.000006 - 2984 3031 -0.996054 - 2984 3032 -1.683728 - 2985 1881 -0.052447 - 2985 2937 -0.000454 - 2985 2982 -0.000514 - 2985 2983 3.329718 - 2985 2984 5.628552 - 2985 2985 140.315040 - 2985 2986 -88.453895 - 2985 2987 -149.522460 - 2985 2988 -0.000441 - 2985 3033 -0.013011 - 2985 3034 3.064588 - 2985 3035 5.180379 - 2986 2984 -0.911810 - 2986 2986 -26.752309 - 2986 2987 22.987933 - 2986 3035 -0.839206 - 2987 1881 -0.000022 - 2987 1882 -3.607311 - 2987 1883 -6.097798 - 2987 2937 -0.000005 - 2987 2938 -0.785365 - 2987 2939 -1.327581 - 2987 2982 -0.000005 - 2987 2983 -0.889449 - 2987 2984 -1.503523 - 2987 2985 0.000370 - 2987 2986 6.907690 - 2987 2987 11.676758 - 2987 2988 -0.000005 - 2987 2989 -0.763978 - 2987 2990 -1.291428 - 2987 3033 -0.000005 - 2987 3034 -0.858586 - 2987 3035 -1.451353 - 2988 1884 -0.052925 - 2988 2940 -0.000414 - 2988 2985 -0.007492 - 2988 2986 4.275631 - 2988 2987 7.227526 - 2988 2988 116.949170 - 2988 2989 -75.896088 - 2988 2990 -128.294650 - 2988 2991 -0.000414 - 2988 3036 -0.017678 - 2988 3037 3.231911 - 2988 3038 5.463220 - 2989 2987 -1.170828 - 2989 2989 -22.299969 - 2989 2990 19.738918 - 2989 3038 -0.885016 - 2990 1884 -0.000027 - 2990 1885 -4.327036 - 2990 1886 -7.314416 - 2990 2940 -0.000004 - 2990 2941 -0.701464 - 2990 2942 -1.185754 - 2990 2985 -0.000005 - 2990 2986 -0.763978 - 2990 2987 -1.291428 - 2990 2988 0.000318 - 2990 2989 7.213790 - 2990 2990 12.194183 - 2990 2991 -0.000004 - 2990 2992 -0.700525 - 2990 2993 -1.184166 - 2990 3036 -0.000004 - 2990 3037 -0.718283 - 2990 3038 -1.214186 - 2991 1887 -0.052635 - 2991 2943 -0.000426 - 2991 2988 -0.026024 - 2991 2989 5.218415 - 2991 2990 8.821202 - 2991 2991 116.969630 - 2991 2992 -77.511946 - 2991 2993 -131.026190 - 2991 2994 -0.000436 - 2991 3039 -0.029847 - 2991 3040 3.909314 - 2991 3041 6.608305 - 2992 2990 -1.428979 - 2992 2992 -22.306268 - 2992 2993 20.165486 - 2992 3041 -1.070498 - 2993 1887 -0.000027 - 2993 1888 -4.327819 - 2993 1889 -7.315746 - 2993 2943 -0.000004 - 2993 2944 -0.701705 - 2993 2945 -1.186162 - 2993 2988 -0.000004 - 2993 2989 -0.700525 - 2993 2990 -1.184166 - 2993 2991 0.000319 - 2993 2992 7.151861 - 2993 2993 12.089506 - 2993 2994 -0.000005 - 2993 2995 -0.717940 - 2993 2996 -1.213607 - 2993 3039 -0.000004 - 2993 3040 -0.701364 - 2993 3041 -1.185587 - 2994 1890 -0.050597 - 2994 2946 -0.000473 - 2994 2991 -0.034251 - 2994 2992 6.289234 - 2994 2993 10.631321 - 2994 2994 122.846130 - 2994 2995 -83.034678 - 2994 2996 -140.361740 - 2994 2997 -0.000511 - 2994 3042 -0.043417 - 2994 3043 4.938726 - 2994 3044 8.348418 - 2995 2993 -1.722176 - 2995 2995 -23.428959 - 2995 2996 21.606154 - 2995 3044 -1.352361 - 2996 1890 -0.000027 - 2996 1891 -4.118346 - 2996 1892 -6.961649 - 2996 2946 -0.000005 - 2996 2947 -0.753908 - 2996 2948 -1.274405 - 2996 2991 -0.000005 - 2996 2992 -0.717940 - 2996 2993 -1.213607 - 2996 2994 0.000334 - 2996 2995 7.144039 - 2996 2996 12.076278 - 2996 2997 -0.000005 - 2996 2998 -0.814435 - 2996 2999 -1.376720 - 2996 3042 -0.000005 - 2996 3043 -0.736774 - 2996 3044 -1.245443 - 2997 1893 -0.045817 - 2997 2949 -0.000611 - 2997 2994 -0.050044 - 2997 2995 7.160969 - 2997 2996 12.104894 - 2997 2997 152.200950 - 2997 2998 -103.068430 - 2997 2999 -174.226880 - 2997 3000 -0.000668 - 2997 3045 -0.072043 - 2997 3046 7.035841 - 2997 3047 11.893386 - 2998 2996 -1.960842 - 2998 2998 -29.014860 - 2998 2999 26.803302 - 2998 3047 -1.926574 - 2999 1893 -0.000022 - 2999 1894 -3.327678 - 2999 1895 -5.625107 - 2999 2949 -0.000006 - 2999 2950 -0.944176 - 2999 2951 -1.596036 - 2999 2994 -0.000005 - 2999 2995 -0.814435 - 2999 2996 -1.376720 - 2999 2997 0.000403 - 2999 2998 7.034397 - 2999 2999 11.890944 - 2999 3000 -0.000007 - 2999 3001 -1.033222 - 2999 3002 -1.746558 - 2999 3045 -0.000006 - 2999 3046 -0.911620 - 2999 3047 -1.541002 - 3000 1896 -0.039785 - 3000 2952 -0.000790 - 3000 2997 -0.123653 - 3000 2998 7.887425 - 3000 2999 13.332903 - 3000 3000 198.981280 - 3000 3001 -136.765470 - 3000 3002 -231.188230 - 3000 3003 -0.000867 - 3000 3048 -0.215836 - 3000 3049 12.586195 - 3000 3050 21.275686 - 3001 2999 -2.159719 - 3001 3001 -37.941031 - 3001 3002 35.596443 - 3001 3050 -3.446350 - 3002 1896 -0.000018 - 3002 1897 -2.555645 - 3002 1898 -4.320061 - 3002 2952 -0.000008 - 3002 2953 -1.188745 - 3002 2954 -2.009454 - 3002 2997 -0.000007 - 3002 2998 -1.033222 - 3002 2999 -1.746558 - 3002 3000 0.000515 - 3002 3001 7.274993 - 3002 3002 12.297642 - 3002 3003 -0.000009 - 3002 3004 -1.304463 - 3002 3005 -2.205063 - 3002 3048 -0.000008 - 3002 3049 -1.188647 - 3002 3050 -2.009287 - 3003 1899 -0.032199 - 3003 2955 -0.000995 - 3003 3000 -0.138717 - 3003 3001 11.658090 - 3003 3002 19.706825 - 3003 3003 239.812300 - 3003 3004 -151.846150 - 3003 3005 -256.680730 - 3003 3006 -0.001073 - 3004 3002 -3.192137 - 3004 3004 -45.756514 - 3004 3005 39.333292 - 3005 1899 -0.000015 - 3005 1900 -2.113221 - 3005 1901 -3.572189 - 3005 2955 -0.000010 - 3005 2956 -1.452776 - 3005 2957 -2.455772 - 3005 3000 -0.000009 - 3005 3001 -1.304463 - 3005 3002 -2.205063 - 3005 3003 0.000607 - 3005 3004 6.442203 - 3005 3005 10.889900 - 3005 3006 -0.000011 - 3005 3007 -1.566592 - 3005 3008 -2.648166 - 3006 1902 -0.031922 - 3006 2958 -0.001199 - 3006 3003 -0.077473 - 3006 3004 4.895659 - 3006 3005 8.275621 - 3006 3006 286.484620 - 3006 3007 -172.456830 - 3006 3008 -291.520850 - 3007 3005 -1.340467 - 3007 3007 -54.683742 - 3007 3008 44.540689 - 3008 1902 -0.000013 - 3008 1903 -1.767325 - 3008 1904 -2.987485 - 3008 2958 -0.000013 - 3008 2959 -1.733297 - 3008 2960 -2.929964 - 3008 3003 -0.000011 - 3008 3004 -1.566592 - 3008 3005 -2.648166 - 3008 3006 0.000707 - 3008 3007 5.073372 - 3008 3008 8.576024 - 3009 3009 1.000000 - 3010 3010 1.000000 - 3011 3011 1.000000 - 3012 3012 1.000000 - 3013 3013 1.000000 - 3014 3014 1.000000 - 3015 3015 1.000000 - 3016 3016 1.000000 - 3017 3017 1.000000 - 3018 3018 1.000000 - 3019 3019 1.000000 - 3020 3020 1.000000 - 3021 3021 1.000000 - 3022 3022 1.000000 - 3023 3023 1.000000 - 3024 3024 1.000000 - 3025 3025 1.000000 - 3026 3026 1.000000 - 3027 1923 -0.051506 - 3027 2979 -0.006156 - 3027 3027 175.387120 - 3027 3028 -104.234320 - 3027 3029 -176.197690 - 3027 3030 -0.008636 - 3027 3075 -0.000588 - 3027 3076 1.645896 - 3027 3077 2.782222 - 3028 3028 -33.421480 - 3028 3029 27.047472 - 3028 3077 -0.450718 - 3029 1923 -0.000017 - 3029 1924 -2.881140 - 3029 1925 -4.870280 - 3029 2979 -0.000006 - 3029 2980 -1.051570 - 3029 2981 -1.777574 - 3029 3027 0.000446 - 3029 3028 6.038001 - 3029 3029 10.206637 - 3029 3030 -0.000006 - 3029 3031 -1.049945 - 3029 3032 -1.774827 - 3029 3075 -0.000006 - 3029 3076 -1.051602 - 3029 3077 -1.777628 - 3030 1926 -0.051856 - 3030 2982 -0.007689 - 3030 3027 -0.000591 - 3030 3028 1.734777 - 3030 3029 2.932467 - 3030 3030 175.382140 - 3030 3031 -106.645850 - 3030 3032 -180.274020 - 3030 3033 -0.028402 - 3030 3078 -0.008770 - 3030 3079 2.323025 - 3030 3080 3.926838 - 3031 3029 -0.475056 - 3031 3031 -33.425726 - 3031 3032 27.697435 - 3031 3080 -0.636144 - 3032 1926 -0.000017 - 3032 1927 -2.888000 - 3032 1928 -4.881872 - 3032 2982 -0.000006 - 3032 2983 -0.996054 - 3032 2984 -1.683728 - 3032 3027 -0.000006 - 3032 3028 -1.049945 - 3032 3029 -1.774827 - 3032 3030 0.000451 - 3032 3031 6.943351 - 3032 3032 11.737033 - 3032 3033 -0.000006 - 3032 3034 -0.953881 - 3032 3035 -1.612439 - 3032 3078 -0.000006 - 3032 3079 -1.051725 - 3032 3080 -1.777834 - 3033 1929 -0.052252 - 3033 2985 -0.000489 - 3033 3030 -0.000543 - 3033 3031 2.848468 - 3033 3032 4.815047 - 3033 3033 146.177530 - 3033 3034 -90.982103 - 3033 3035 -153.796150 - 3033 3036 -0.000640 - 3033 3081 -0.006010 - 3033 3082 2.651522 - 3033 3083 4.482132 - 3034 3032 -0.780029 - 3034 3034 -27.862876 - 3034 3035 23.639133 - 3034 3083 -0.726097 - 3035 1929 -0.000021 - 3035 1930 -3.463328 - 3035 1931 -5.854410 - 3035 2985 -0.000005 - 3035 2986 -0.858586 - 3035 2987 -1.451353 - 3035 3030 -0.000006 - 3035 3031 -0.953881 - 3035 3032 -1.612439 - 3035 3033 0.000383 - 3035 3034 6.954253 - 3035 3035 11.755468 - 3035 3036 -0.000005 - 3035 3037 -0.798951 - 3035 3038 -1.350547 - 3035 3081 -0.000005 - 3035 3082 -0.876382 - 3035 3083 -1.481436 - 3036 1932 -0.052868 - 3036 2988 -0.000417 - 3036 3033 -0.000463 - 3036 3034 3.728140 - 3036 3035 6.302048 - 3036 3036 122.779940 - 3036 3037 -78.539113 - 3036 3038 -132.762450 - 3036 3039 -0.000416 - 3036 3084 -0.009392 - 3036 3085 3.008693 - 3036 3086 5.085891 - 3037 3035 -1.020913 - 3037 3037 -23.411151 - 3037 3038 20.420065 - 3037 3086 -0.823899 - 3038 1932 -0.000025 - 3038 1933 -4.124800 - 3038 1934 -6.972558 - 3038 2988 -0.000004 - 3038 2989 -0.718283 - 3038 2990 -1.214186 - 3038 3033 -0.000005 - 3038 3034 -0.798951 - 3038 3035 -1.350547 - 3038 3036 0.000330 - 3038 3037 7.097995 - 3038 3038 11.998445 - 3038 3039 -0.000004 - 3038 3040 -0.717180 - 3038 3041 -1.212320 - 3038 3084 -0.000004 - 3038 3085 -0.736153 - 3038 3086 -1.244392 - 3039 1935 -0.052990 - 3039 2991 -0.000417 - 3039 3036 -0.013775 - 3039 3037 4.571886 - 3039 3038 7.728312 - 3039 3039 116.948740 - 3039 3040 -76.761331 - 3039 3041 -129.757350 - 3039 3042 -0.000427 - 3039 3087 -0.018424 - 3039 3088 3.797739 - 3039 3089 6.419699 - 3040 3038 -1.251951 - 3040 3040 -22.302868 - 3040 3041 19.968614 - 3040 3089 -1.039959 - 3041 1935 -0.000027 - 3041 1936 -4.332423 - 3041 1937 -7.323529 - 3041 2991 -0.000004 - 3041 2992 -0.701364 - 3041 2993 -1.185587 - 3041 3036 -0.000004 - 3041 3037 -0.717180 - 3041 3038 -1.212320 - 3041 3039 0.000318 - 3041 3040 7.172015 - 3041 3041 12.123573 - 3041 3042 -0.000004 - 3041 3043 -0.717473 - 3041 3044 -1.212817 - 3041 3087 -0.000004 - 3041 3088 -0.701068 - 3041 3089 -1.185086 - 3042 1938 -0.052052 - 3042 2994 -0.000451 - 3042 3039 -0.022481 - 3042 3040 5.474747 - 3042 3041 9.254513 - 3042 3042 122.810080 - 3042 3043 -82.076518 - 3042 3044 -138.742050 - 3042 3045 -0.000498 - 3042 3090 -0.034770 - 3042 3091 4.795548 - 3042 3092 8.106390 - 3043 3041 -1.499165 - 3043 3043 -23.425410 - 3043 3044 21.352934 - 3043 3092 -1.313175 - 3044 1938 -0.000026 - 3044 1939 -4.122364 - 3044 1940 -6.968440 - 3044 2994 -0.000005 - 3044 2995 -0.736774 - 3044 2996 -1.245443 - 3044 3039 -0.000004 - 3044 3040 -0.717473 - 3044 3041 -1.212817 - 3044 3042 0.000333 - 3044 3043 7.129001 - 3044 3044 12.050855 - 3044 3045 -0.000005 - 3044 3046 -0.814188 - 3044 3047 -1.376303 - 3044 3090 -0.000005 - 3044 3091 -0.735566 - 3044 3092 -1.243400 - 3045 1941 -0.049918 - 3045 2997 -0.000574 - 3045 3042 -0.033660 - 3045 3043 6.332380 - 3045 3044 10.704248 - 3045 3045 152.034910 - 3045 3046 -99.703530 - 3045 3047 -168.538850 - 3045 3048 -0.000650 - 3045 3093 -0.005821 - 3045 3094 4.466525 - 3045 3095 7.550213 - 3046 3044 -1.733981 - 3046 3046 -29.011120 - 3046 3047 25.891734 - 3046 3095 -1.223051 - 3047 1941 -0.000022 - 3047 1942 -3.334240 - 3047 1943 -5.636199 - 3047 2997 -0.000006 - 3047 2998 -0.911620 - 3047 2999 -1.541002 - 3047 3042 -0.000005 - 3047 3043 -0.814188 - 3047 3044 -1.376303 - 3047 3045 0.000401 - 3047 3046 7.007365 - 3047 3047 11.845249 - 3047 3048 -0.000007 - 3047 3049 -1.032927 - 3047 3050 -1.746060 - 3047 3093 -0.000006 - 3047 3094 -0.911125 - 3047 3095 -1.540166 - 3048 1944 -0.047987 - 3048 3000 -0.000761 - 3048 3045 -0.017674 - 3048 3046 4.919676 - 3048 3047 8.316221 - 3048 3048 198.903700 - 3048 3049 -127.310250 - 3048 3050 -215.205070 - 3048 3096 -0.008591 - 3048 3097 6.176205 - 3048 3098 10.440251 - 3049 3047 -1.347120 - 3049 3049 -37.945497 - 3049 3050 32.997687 - 3049 3098 -1.691188 - 3050 1944 -0.000017 - 3050 1945 -2.550221 - 3050 1946 -4.310890 - 3050 3000 -0.000008 - 3050 3001 -1.188647 - 3050 3002 -2.009287 - 3050 3045 -0.000007 - 3050 3046 -1.032927 - 3050 3047 -1.746060 - 3050 3048 0.000505 - 3050 3049 5.948867 - 3050 3050 10.055958 - 3050 3096 -0.000008 - 3050 3097 -1.172799 - 3050 3098 -1.982498 - 3051 3051 1.000000 - 3052 3052 1.000000 - 3053 3053 1.000000 - 3054 3054 1.000000 - 3055 3055 1.000000 - 3056 3056 1.000000 - 3057 3057 1.000000 - 3058 3058 1.000000 - 3059 3059 1.000000 - 3060 3060 1.000000 - 3061 3061 1.000000 - 3062 3062 1.000000 - 3063 3063 1.000000 - 3064 3064 1.000000 - 3065 3065 1.000000 - 3066 3066 1.000000 - 3067 3067 1.000000 - 3068 3068 1.000000 - 3069 3069 1.000000 - 3070 3070 1.000000 - 3071 3071 1.000000 - 3072 3072 1.000000 - 3073 3073 1.000000 - 3074 3074 1.000000 - 3075 1971 -0.051494 - 3075 3027 -0.009576 - 3075 3075 175.386370 - 3075 3076 -103.734500 - 3075 3077 -175.352800 - 3075 3078 -0.025780 - 3075 3123 -0.000584 - 3075 3124 1.146120 - 3075 3125 1.937401 - 3076 3076 -33.417286 - 3076 3077 26.920936 - 3076 3125 -0.313859 - 3077 1971 -0.000017 - 3077 1972 -2.881532 - 3077 1973 -4.870942 - 3077 3027 -0.000006 - 3077 3028 -1.051602 - 3077 3029 -1.777628 - 3077 3075 0.000445 - 3077 3076 6.038774 - 3077 3077 10.207943 - 3077 3078 -0.000006 - 3077 3079 -1.050140 - 3077 3080 -1.775157 - 3077 3123 -0.000006 - 3077 3124 -1.051757 - 3077 3125 -1.777891 - 3078 1974 -0.051778 - 3078 3030 -0.000587 - 3078 3075 -0.000586 - 3078 3076 1.059146 - 3078 3077 1.790380 - 3078 3078 175.416220 - 3078 3079 -105.396550 - 3078 3080 -178.162180 - 3078 3081 -0.027000 - 3078 3126 -0.000577 - 3078 3127 1.752014 - 3078 3128 2.961602 - 3079 3077 -0.290040 - 3079 3079 -33.422495 - 3079 3080 27.363394 - 3079 3128 -0.479779 - 3080 1974 -0.000017 - 3080 1975 -2.885760 - 3080 1976 -4.878084 - 3080 3030 -0.000006 - 3080 3031 -1.051725 - 3080 3032 -1.777834 - 3080 3075 -0.000006 - 3080 3076 -1.050140 - 3080 3077 -1.775157 - 3080 3078 0.000451 - 3080 3079 6.979811 - 3080 3080 11.798665 - 3080 3081 -0.000006 - 3080 3082 -0.954525 - 3080 3083 -1.613527 - 3080 3126 -0.000006 - 3080 3127 -1.033917 - 3080 3128 -1.747733 - 3081 1977 -0.052196 - 3081 3033 -0.000493 - 3081 3078 -0.000537 - 3081 3079 2.070671 - 3081 3080 3.500259 - 3081 3081 146.173570 - 3081 3082 -89.727004 - 3081 3083 -151.674530 - 3081 3084 -0.005342 - 3081 3129 -0.003462 - 3081 3130 2.179455 - 3081 3131 3.684150 - 3082 3080 -0.567039 - 3082 3082 -27.858703 - 3082 3083 23.305832 - 3082 3131 -0.596829 - 3083 1977 -0.000020 - 3083 1978 -3.461300 - 3083 1979 -5.850982 - 3083 3033 -0.000005 - 3083 3034 -0.876382 - 3083 3035 -1.481436 - 3083 3078 -0.000006 - 3083 3079 -0.954525 - 3083 3080 -1.613527 - 3083 3081 0.000383 - 3083 3082 6.952922 - 3083 3083 11.753218 - 3083 3084 -0.000005 - 3083 3085 -0.799048 - 3083 3086 -1.350711 - 3083 3129 -0.000005 - 3083 3130 -0.858544 - 3083 3131 -1.451282 - 3084 1980 -0.052843 - 3084 3036 -0.000420 - 3084 3081 -0.000456 - 3084 3082 2.880340 - 3084 3083 4.868927 - 3084 3084 122.771330 - 3084 3085 -77.362189 - 3084 3086 -130.772960 - 3084 3087 -0.000409 - 3084 3132 -0.011494 - 3084 3133 2.668981 - 3084 3134 4.511643 - 3085 3083 -0.788757 - 3085 3085 -23.406774 - 3085 3086 20.108738 - 3085 3134 -0.730878 - 3086 1980 -0.000025 - 3086 1981 -4.122979 - 3086 1982 -6.969480 - 3086 3036 -0.000004 - 3086 3037 -0.736153 - 3086 3038 -1.244392 - 3086 3081 -0.000005 - 3086 3082 -0.799048 - 3086 3083 -1.350711 - 3086 3084 0.000329 - 3086 3085 7.095763 - 3086 3086 11.994671 - 3086 3087 -0.000004 - 3086 3088 -0.716721 - 3086 3089 -1.211544 - 3086 3132 -0.000004 - 3086 3133 -0.718236 - 3086 3134 -1.214106 - 3087 1983 -0.053129 - 3087 3039 -0.000408 - 3087 3084 -0.004076 - 3087 3085 3.615660 - 3087 3086 6.111908 - 3087 3087 116.927240 - 3087 3088 -75.851741 - 3087 3089 -128.219780 - 3087 3090 -0.000418 - 3087 3135 -0.018922 - 3087 3136 3.846637 - 3087 3137 6.502356 - 3088 3086 -0.990110 - 3088 3088 -22.298205 - 3088 3089 19.731273 - 3088 3137 -1.053362 - 3089 1983 -0.000026 - 3089 1984 -4.336609 - 3089 1985 -7.330604 - 3089 3039 -0.000004 - 3089 3040 -0.701068 - 3089 3041 -1.185086 - 3089 3084 -0.000004 - 3089 3085 -0.716721 - 3089 3086 -1.211544 - 3089 3087 0.000317 - 3089 3088 7.175295 - 3089 3089 12.129118 - 3089 3090 -0.000004 - 3089 3091 -0.717509 - 3089 3092 -1.212877 - 3089 3135 -0.000004 - 3089 3136 -0.700884 - 3089 3137 -1.184775 - 3090 1986 -0.052581 - 3090 3042 -0.000439 - 3090 3087 -0.007420 - 3090 3088 4.683879 - 3090 3089 7.917630 - 3090 3090 122.839510 - 3090 3091 -83.210913 - 3090 3092 -140.659650 - 3090 3093 -0.000486 - 3090 3138 -0.026702 - 3090 3139 6.726466 - 3090 3140 11.370411 - 3091 3089 -1.282616 - 3091 3091 -23.421014 - 3091 3092 21.674765 - 3091 3140 -1.841960 - 3092 1986 -0.000026 - 3092 1987 -4.127419 - 3092 1988 -6.976984 - 3092 3042 -0.000005 - 3092 3043 -0.735566 - 3092 3044 -1.243400 - 3092 3087 -0.000004 - 3092 3088 -0.717509 - 3092 3089 -1.212877 - 3092 3090 0.000332 - 3092 3091 7.150266 - 3092 3092 12.086803 - 3092 3093 -0.000005 - 3092 3094 -0.814816 - 3092 3095 -1.377364 - 3092 3138 -0.000005 - 3092 3139 -0.752324 - 3092 3140 -1.271728 - 3093 1989 -0.051129 - 3093 3045 -0.000563 - 3093 3090 -0.067005 - 3093 3091 7.655198 - 3093 3092 12.940339 - 3093 3093 151.975000 - 3093 3094 -96.579452 - 3093 3095 -163.257900 - 3093 3096 -0.000631 - 3094 3092 -2.096239 - 3094 3094 -29.003616 - 3094 3095 25.055078 - 3095 1989 -0.000021 - 3095 1990 -3.329250 - 3095 1991 -5.627765 - 3095 3045 -0.000006 - 3095 3046 -0.911125 - 3095 3047 -1.540166 - 3095 3090 -0.000005 - 3095 3091 -0.814816 - 3095 3092 -1.377364 - 3095 3093 0.000395 - 3095 3094 6.078102 - 3095 3095 10.274423 - 3095 3096 -0.000007 - 3095 3097 -1.019649 - 3095 3098 -1.723615 - 3096 1992 -0.050210 - 3096 3048 -0.000737 - 3096 3093 -0.016492 - 3096 3094 4.485347 - 3096 3095 7.582031 - 3096 3096 192.863050 - 3096 3097 -117.341770 - 3096 3098 -198.354410 - 3097 3095 -1.228204 - 3097 3097 -36.819304 - 3097 3098 30.348281 - 3098 1992 -0.000017 - 3098 1993 -2.627090 - 3098 1994 -4.440830 - 3098 3048 -0.000008 - 3098 3049 -1.172799 - 3098 3050 -1.982498 - 3098 3093 -0.000007 - 3098 3094 -1.019649 - 3098 3095 -1.723615 - 3098 3096 0.000483 - 3098 3097 4.823681 - 3098 3098 8.153946 - 3099 3099 1.000000 - 3100 3100 1.000000 - 3101 3101 1.000000 - 3102 3102 1.000000 - 3103 3103 1.000000 - 3104 3104 1.000000 - 3105 3105 1.000000 - 3106 3106 1.000000 - 3107 3107 1.000000 - 3108 3108 1.000000 - 3109 3109 1.000000 - 3110 3110 1.000000 - 3111 3111 1.000000 - 3112 3112 1.000000 - 3113 3113 1.000000 - 3114 3114 1.000000 - 3115 3115 1.000000 - 3116 3116 1.000000 - 3117 3117 1.000000 - 3118 3118 1.000000 - 3119 3119 1.000000 - 3120 3120 1.000000 - 3121 3121 1.000000 - 3122 3122 1.000000 - 3123 2019 -0.051492 - 3123 3075 -0.004367 - 3123 3123 175.384750 - 3123 3124 -102.592570 - 3123 3125 -173.422480 - 3123 3126 -0.023788 - 3124 3124 -33.414684 - 3124 3125 26.614646 - 3125 2019 -0.000017 - 3125 2020 -2.879925 - 3125 2021 -4.868225 - 3125 3075 -0.000006 - 3125 3076 -1.051757 - 3125 3077 -1.777891 - 3125 3123 0.000439 - 3125 3124 4.967957 - 3125 3125 8.397835 - 3125 3126 -0.000006 - 3125 3127 -1.032534 - 3125 3128 -1.745396 - 3126 2022 -0.051840 - 3126 3078 -0.005853 - 3126 3123 -0.000572 - 3126 3124 0.416853 - 3126 3125 0.704649 - 3126 3126 169.559040 - 3126 3127 -100.616180 - 3126 3128 -170.081480 - 3126 3129 -0.033882 - 3126 3174 -0.003079 - 3126 3175 1.034420 - 3126 3176 1.748582 - 3127 3125 -0.114153 - 3127 3127 -32.304568 - 3127 3128 26.113754 - 3127 3176 -0.283270 - 3128 2022 -0.000017 - 3128 2023 -2.983769 - 3128 2024 -5.043760 - 3128 3078 -0.000006 - 3128 3079 -1.033917 - 3128 3080 -1.747733 - 3128 3123 -0.000006 - 3128 3124 -1.032534 - 3128 3125 -1.745396 - 3128 3126 0.000437 - 3128 3127 6.934065 - 3128 3128 11.721336 - 3128 3129 -0.000005 - 3128 3130 -0.919168 - 3128 3131 -1.553760 - 3128 3174 -0.000006 - 3128 3175 -0.961059 - 3128 3176 -1.624572 - 3129 2025 -0.052323 - 3129 3081 -0.000478 - 3129 3126 -0.000512 - 3129 3127 1.218111 - 3129 3128 2.059094 - 3129 3129 140.336210 - 3129 3130 -84.868844 - 3129 3131 -143.462290 - 3129 3132 -0.014245 - 3129 3177 -0.002348 - 3129 3178 1.584534 - 3129 3179 2.678497 - 3130 3128 -0.333573 - 3130 3130 -26.740796 - 3130 3131 22.034918 - 3130 3179 -0.433916 - 3131 2025 -0.000021 - 3131 2026 -3.604792 - 3131 2027 -6.093541 - 3131 3081 -0.000005 - 3131 3082 -0.858544 - 3131 3083 -1.451282 - 3131 3126 -0.000005 - 3131 3127 -0.919168 - 3131 3128 -1.553760 - 3131 3129 0.000369 - 3131 3130 6.934774 - 3131 3131 11.722541 - 3131 3132 -0.000004 - 3131 3133 -0.763958 - 3131 3134 -1.291395 - 3131 3177 -0.000005 - 3131 3178 -0.785315 - 3131 3179 -1.327497 - 3132 2028 -0.052937 - 3132 3084 -0.000404 - 3132 3129 -0.000430 - 3132 3130 1.854249 - 3132 3131 3.134422 - 3132 3132 116.937180 - 3132 3133 -72.342964 - 3132 3134 -122.288470 - 3132 3135 -0.004515 - 3132 3180 -0.004638 - 3132 3181 2.104738 - 3132 3182 3.557846 - 3133 3131 -0.507774 - 3133 3133 -22.288761 - 3133 3134 18.794041 - 3133 3182 -0.576369 - 3134 2028 -0.000025 - 3134 2029 -4.326679 - 3134 2030 -7.313814 - 3134 3084 -0.000004 - 3134 3085 -0.718236 - 3134 3086 -1.214106 - 3134 3129 -0.000004 - 3134 3130 -0.763958 - 3134 3131 -1.291395 - 3134 3132 0.000316 - 3134 3133 7.213076 - 3134 3134 12.192977 - 3134 3135 -0.000004 - 3134 3136 -0.700651 - 3134 3137 -1.184379 - 3134 3180 -0.000004 - 3134 3181 -0.701053 - 3134 3182 -1.185059 - 3135 2031 -0.053057 - 3135 3087 -0.000399 - 3135 3132 -0.000399 - 3135 3133 2.292791 - 3135 3134 3.875731 - 3135 3135 116.930790 - 3135 3136 -73.470486 - 3135 3137 -124.194510 - 3135 3138 -0.000418 - 3135 3183 -0.004731 - 3135 3184 2.787532 - 3135 3185 4.712045 - 3136 3134 -0.627862 - 3136 3136 -22.293510 - 3136 3137 19.090994 - 3136 3185 -0.763344 - 3137 2031 -0.000026 - 3137 2032 -4.327212 - 3137 2033 -7.314718 - 3137 3087 -0.000004 - 3137 3088 -0.700884 - 3137 3089 -1.184775 - 3137 3132 -0.000004 - 3137 3133 -0.700651 - 3137 3134 -1.184379 - 3137 3135 0.000316 - 3137 3136 7.165999 - 3137 3137 12.113403 - 3137 3138 -0.000004 - 3137 3139 -0.734021 - 3137 3140 -1.240789 - 3137 3183 -0.000004 - 3137 3184 -0.700730 - 3137 3185 -1.184514 - 3138 2034 -0.052824 - 3138 3090 -0.000434 - 3138 3135 -0.001348 - 3138 3136 2.257240 - 3138 3137 3.815638 - 3138 3138 128.618690 - 3138 3139 -80.808617 - 3138 3140 -136.598800 - 3138 3186 -0.009467 - 3138 3187 3.328598 - 3138 3188 5.626658 - 3139 3137 -0.618122 - 3139 3139 -24.527093 - 3139 3140 20.987143 - 3139 3188 -0.911505 - 3140 2034 -0.000024 - 3140 2035 -3.936805 - 3140 2036 -6.654771 - 3140 3090 -0.000005 - 3140 3091 -0.752324 - 3140 3092 -1.271728 - 3140 3135 -0.000004 - 3140 3136 -0.734021 - 3140 3137 -1.240789 - 3140 3138 0.000338 - 3140 3139 6.214035 - 3140 3140 10.504199 - 3140 3186 -0.000005 - 3140 3187 -0.788131 - 3140 3188 -1.332257 - 3141 3141 1.000000 - 3142 3142 1.000000 - 3143 3143 1.000000 - 3144 3144 1.000000 - 3145 3145 1.000000 - 3146 3146 1.000000 - 3147 3147 1.000000 - 3148 3148 1.000000 - 3149 3149 1.000000 - 3150 3150 1.000000 - 3151 3151 1.000000 - 3152 3152 1.000000 - 3153 3153 1.000000 - 3154 3154 1.000000 - 3155 3155 1.000000 - 3156 3156 1.000000 - 3157 3157 1.000000 - 3158 3158 1.000000 - 3159 3159 1.000000 - 3160 3160 1.000000 - 3161 3161 1.000000 - 3162 3162 1.000000 - 3163 3163 1.000000 - 3164 3164 1.000000 - 3165 3165 1.000000 - 3166 3166 1.000000 - 3167 3167 1.000000 - 3168 3168 1.000000 - 3169 3169 1.000000 - 3170 3170 1.000000 - 3171 3171 1.000000 - 3172 3172 1.000000 - 3173 3173 1.000000 - 3174 2070 -0.052088 - 3174 3126 -0.000530 - 3174 3174 152.001170 - 3174 3175 -88.913889 - 3174 3176 -150.299940 - 3174 3177 -0.029814 - 3175 3175 -28.961215 - 3175 3176 23.061769 - 3176 2070 -0.000019 - 3176 2071 -3.327513 - 3176 2072 -5.624825 - 3176 3126 -0.000006 - 3176 3127 -0.961059 - 3176 3128 -1.624572 - 3176 3174 0.000385 - 3176 3175 5.105427 - 3176 3176 8.630208 - 3176 3177 -0.000005 - 3176 3178 -0.813612 - 3176 3179 -1.375329 - 3177 2073 -0.052643 - 3177 3129 -0.000434 - 3177 3174 -0.000449 - 3177 3175 0.312256 - 3177 3176 0.527837 - 3177 3177 122.796920 - 3177 3178 -73.378153 - 3177 3179 -124.038430 - 3177 3180 -0.015979 - 3177 3225 -0.000709 - 3177 3226 1.262960 - 3177 3227 2.134908 - 3178 3176 -0.085510 - 3178 3178 -23.395689 - 3178 3179 19.045226 - 3178 3227 -0.345856 - 3179 2073 -0.000024 - 3179 2074 -4.117729 - 3179 2075 -6.960609 - 3179 3129 -0.000005 - 3179 3130 -0.785315 - 3179 3131 -1.327497 - 3179 3174 -0.000005 - 3179 3175 -0.813612 - 3179 3176 -1.375329 - 3179 3177 0.000328 - 3179 3178 7.155242 - 3179 3179 12.095220 - 3179 3180 -0.000004 - 3179 3181 -0.717735 - 3179 3182 -1.213259 - 3179 3225 -0.000004 - 3179 3226 -0.718229 - 3179 3227 -1.214095 - 3180 2076 -0.052986 - 3180 3132 -0.000390 - 3180 3177 -0.000399 - 3180 3178 1.035362 - 3180 3179 1.750175 - 3180 3180 116.935840 - 3180 3181 -71.087844 - 3180 3182 -120.166810 - 3180 3183 -0.004602 - 3180 3228 -0.000390 - 3180 3229 1.662928 - 3180 3230 2.811012 - 3181 3179 -0.283528 - 3181 3181 -22.285431 - 3181 3182 18.458632 - 3181 3230 -0.455385 - 3182 2076 -0.000025 - 3182 2077 -4.323339 - 3182 2078 -7.308167 - 3182 3132 -0.000004 - 3182 3133 -0.701053 - 3182 3134 -1.185059 - 3182 3177 -0.000004 - 3182 3178 -0.717735 - 3182 3179 -1.213259 - 3182 3180 0.000315 - 3182 3181 7.146388 - 3182 3182 12.080246 - 3182 3183 -0.000004 - 3182 3184 -0.700761 - 3182 3185 -1.184566 - 3182 3228 -0.000004 - 3182 3229 -0.701002 - 3182 3230 -1.184974 - 3183 2079 -0.053022 - 3183 3135 -0.000393 - 3183 3180 -0.000393 - 3183 3181 1.609325 - 3183 3182 2.720402 - 3183 3183 116.922090 - 3183 3184 -72.281303 - 3183 3185 -122.184320 - 3183 3186 -0.003415 - 3183 3231 -0.000412 - 3183 3232 2.286183 - 3183 3233 3.864564 - 3184 3182 -0.440704 - 3184 3184 -22.288936 - 3184 3185 18.776741 - 3184 3233 -0.626058 - 3185 2079 -0.000025 - 3185 2080 -4.327224 - 3185 2081 -7.314740 - 3185 3135 -0.000004 - 3185 3136 -0.700730 - 3185 3137 -1.184514 - 3185 3180 -0.000004 - 3185 3181 -0.700761 - 3185 3182 -1.184566 - 3185 3183 0.000316 - 3185 3184 7.214881 - 3185 3185 12.196034 - 3185 3186 -0.000004 - 3185 3187 -0.749608 - 3185 3188 -1.267137 - 3185 3231 -0.000004 - 3185 3232 -0.734058 - 3185 3233 -1.240852 - 3186 2082 -0.052729 - 3186 3138 -0.000447 - 3186 3183 -0.000425 - 3186 3184 2.121216 - 3186 3185 3.585703 - 3186 3186 134.454320 - 3186 3187 -80.766249 - 3186 3188 -136.527180 - 3187 3185 -0.580879 - 3187 3187 -25.636890 - 3187 3188 20.936337 - 3188 2082 -0.000022 - 3188 2083 -3.762768 - 3188 2084 -6.360580 - 3188 3138 -0.000005 - 3188 3139 -0.788131 - 3188 3140 -1.332257 - 3188 3183 -0.000004 - 3188 3184 -0.749608 - 3188 3185 -1.267137 - 3188 3186 0.000346 - 3188 3187 5.303384 - 3188 3188 8.964836 - 3189 3189 1.000000 - 3190 3190 1.000000 - 3191 3191 1.000000 - 3192 3192 1.000000 - 3193 3193 1.000000 - 3194 3194 1.000000 - 3195 3195 1.000000 - 3196 3196 1.000000 - 3197 3197 1.000000 - 3198 3198 1.000000 - 3199 3199 1.000000 - 3200 3200 1.000000 - 3201 3201 1.000000 - 3202 3202 1.000000 - 3203 3203 1.000000 - 3204 3204 1.000000 - 3205 3205 1.000000 - 3206 3206 1.000000 - 3207 3207 1.000000 - 3208 3208 1.000000 - 3209 3209 1.000000 - 3210 3210 1.000000 - 3211 3211 1.000000 - 3212 3212 1.000000 - 3213 3213 1.000000 - 3214 3214 1.000000 - 3215 3215 1.000000 - 3216 3216 1.000000 - 3217 3217 1.000000 - 3218 3218 1.000000 - 3219 3219 1.000000 - 3220 3220 1.000000 - 3221 3221 1.000000 - 3222 3222 1.000000 - 3223 3223 1.000000 - 3224 3224 1.000000 - 3225 2121 -0.052989 - 3225 3177 -0.000394 - 3225 3225 116.927460 - 3225 3226 -69.220622 - 3225 3227 -117.010540 - 3225 3228 -0.015054 - 3225 3273 -0.000385 - 3225 3274 0.826290 - 3225 3275 1.396761 - 3226 3226 -22.279374 - 3226 3227 17.962197 - 3226 3275 -0.226277 - 3227 2121 -0.000025 - 3227 2122 -4.321770 - 3227 2123 -7.305520 - 3227 3177 -0.000004 - 3227 3178 -0.718229 - 3227 3179 -1.214095 - 3227 3225 0.000310 - 3227 3226 6.444480 - 3227 3227 10.893749 - 3227 3228 -0.000004 - 3227 3229 -0.700916 - 3227 3230 -1.184829 - 3227 3273 -0.000004 - 3227 3274 -0.701069 - 3227 3275 -1.185087 - 3228 2124 -0.053004 - 3228 3180 -0.000630 - 3228 3225 -0.000386 - 3228 3226 0.580854 - 3228 3227 0.981876 - 3228 3228 116.938550 - 3228 3229 -70.175975 - 3228 3230 -118.625400 - 3228 3231 -0.003640 - 3228 3276 -0.000386 - 3228 3277 1.212652 - 3228 3278 2.049865 - 3229 3227 -0.159064 - 3229 3229 -22.282337 - 3229 3230 18.216588 - 3229 3278 -0.332080 - 3230 2124 -0.000025 - 3230 2125 -4.321222 - 3230 2126 -7.304589 - 3230 3180 -0.000004 - 3230 3181 -0.701002 - 3230 3182 -1.184974 - 3230 3225 -0.000004 - 3230 3226 -0.700916 - 3230 3227 -1.184829 - 3230 3228 0.000315 - 3230 3229 7.161095 - 3230 3230 12.105109 - 3230 3231 -0.000004 - 3230 3232 -0.734503 - 3230 3233 -1.241603 - 3230 3276 -0.000004 - 3230 3277 -0.700955 - 3230 3278 -1.184894 - 3231 2127 -0.052835 - 3231 3183 -0.001842 - 3231 3228 -0.000407 - 3231 3229 1.141636 - 3231 3230 1.929820 - 3231 3231 128.610050 - 3231 3232 -76.368722 - 3231 3233 -129.093690 - 3232 3230 -0.312632 - 3232 3232 -24.513213 - 3232 3233 19.805802 - 3233 2127 -0.000023 - 3233 2128 -3.930456 - 3233 2129 -6.644043 - 3233 3183 -0.000004 - 3233 3184 -0.734058 - 3233 3185 -1.240852 - 3233 3228 -0.000004 - 3233 3229 -0.734503 - 3233 3230 -1.241603 - 3233 3231 0.000332 - 3233 3232 5.401765 - 3233 3233 9.131143 - 3234 3234 1.000000 - 3235 3235 1.000000 - 3236 3236 1.000000 - 3237 3237 1.000000 - 3238 3238 1.000000 - 3239 3239 1.000000 - 3240 3240 1.000000 - 3241 3241 1.000000 - 3242 3242 1.000000 - 3243 3243 1.000000 - 3244 3244 1.000000 - 3245 3245 1.000000 - 3246 3246 1.000000 - 3247 3247 1.000000 - 3248 3248 1.000000 - 3249 3249 1.000000 - 3250 3250 1.000000 - 3251 3251 1.000000 - 3252 3252 1.000000 - 3253 3253 1.000000 - 3254 3254 1.000000 - 3255 3255 1.000000 - 3256 3256 1.000000 - 3257 3257 1.000000 - 3258 3258 1.000000 - 3259 3259 1.000000 - 3260 3260 1.000000 - 3261 3261 1.000000 - 3262 3262 1.000000 - 3263 3263 1.000000 - 3264 3264 1.000000 - 3265 3265 1.000000 - 3266 3266 1.000000 - 3267 3267 1.000000 - 3268 3268 1.000000 - 3269 3269 1.000000 - 3270 3270 1.000000 - 3271 3271 1.000000 - 3272 3272 1.000000 - 3273 2169 -0.053043 - 3273 3225 -0.005702 - 3273 3273 116.923770 - 3273 3274 -68.392282 - 3273 3275 -115.610310 - 3273 3276 -0.015552 - 3274 3274 -22.277164 - 3274 3275 17.740800 - 3275 2169 -0.000025 - 3275 2170 -4.320365 - 3275 2171 -7.303145 - 3275 3225 -0.000004 - 3275 3226 -0.701069 - 3275 3227 -1.185087 - 3275 3273 0.000306 - 3275 3274 5.724840 - 3275 3275 9.677270 - 3275 3276 -0.000004 - 3275 3277 -0.700912 - 3275 3278 -1.184822 - 3276 2172 -0.053061 - 3276 3228 -0.005202 - 3276 3273 -0.000383 - 3276 3274 0.194354 - 3276 3275 0.328536 - 3276 3276 116.936470 - 3276 3277 -68.581138 - 3276 3278 -115.929490 - 3277 3275 -0.053223 - 3277 3277 -22.279477 - 3277 3278 17.786906 - 3278 2172 -0.000025 - 3278 2173 -4.321573 - 3278 2174 -7.305183 - 3278 3228 -0.000004 - 3278 3229 -0.700955 - 3278 3230 -1.184894 - 3278 3273 -0.000004 - 3278 3274 -0.700912 - 3278 3275 -1.184822 - 3278 3276 0.000306 - 3278 3277 5.725936 - 3278 3278 9.679117 - 3279 3279 1.000000 - 3280 3280 1.000000 - 3281 3281 1.000000 - 3282 3282 1.000000 - 3283 3283 1.000000 - 3284 3284 1.000000 - 3285 3285 1.000000 - 3286 3286 1.000000 - 3287 3287 1.000000 - 3288 3288 1.000000 - 3289 3289 1.000000 - 3290 3290 1.000000 - 3291 3291 1.000000 - 3292 3292 1.000000 - 3293 3293 1.000000 - 3294 3294 1.000000 - 3295 3295 1.000000 - 3296 3296 1.000000 - 3297 3297 1.000000 - 3298 3298 1.000000 - 3299 3299 1.000000 - 3300 3300 1.000000 - 3301 3301 1.000000 - 3302 3302 1.000000 - 3303 3303 1.000000 - 3304 3304 1.000000 - 3305 3305 1.000000 - 3306 3306 1.000000 - 3307 3307 1.000000 - 3308 3308 1.000000 - 3309 3309 1.000000 - 3310 3310 1.000000 - 3311 3311 1.000000 diff --git a/mtx/test/jac.data b/mtx/test/jac.data deleted file mode 100644 index 240419d7a..000000000 --- a/mtx/test/jac.data +++ /dev/null @@ -1,10741 +0,0 @@ - 15 716 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.3646840382055612E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.7875154851126848E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0022733166720472E+05 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.7127914871813438E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.0337722523519114E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.4347266508924396E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.8822468793640743E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.1645500863695561E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.5602095735894196E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.8885976690593590E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.2237684886089890E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.7701504665303626E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.0755381663259970E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.2915221748411190E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.6807346546076908E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2556684911534954E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.9570922637178028E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7257518773802261E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.5306544017162340E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3486183296721181E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1799329345534443E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0206457988354590E+04 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.7768795786180635E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.4048316733716874E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.1568823322640601E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.1268082407553402E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.3210752781100664E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.7343978499769682E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.2808679944895334E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.8922791439985240E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.5487767575499274E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2550772143009854E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0029173006865469E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7842879444952871E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.5933146255228589E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.4227529991133147E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2669767666763557E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1238761229509521E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.9797686126955011E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.9009545093282588E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.9782235397237594E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.1867910979617398E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.5214963352342875E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.9900767896450918E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.6066754624217947E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.3817717878464703E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.3118889353335283E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.3897196428474524E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.5976245024845912E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.9167789866391308E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.3248902945461555E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.7931032388534015E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.2934918421485395E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.8012850711595149E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.3050591469445385E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.7845403079048413E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.2322557812977186E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.6497920370669203E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0122139506310650E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0806940151705990E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0851342143099473E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.1494272718149168E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.1522099595364939E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2124012845107691E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2117316029072467E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2678817863792087E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1267714985965567E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1515186869968381E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1734226241939461E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1927149962705207E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2106255113380691E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2205186705438741E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2559139419025496E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2518201798536820E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2785056674414259E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2766540042637212E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2963622584564148E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2997118381161581E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3120919841371353E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3160854973541336E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3236111704459140E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3311548874452074E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3379933846262059E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3439885364945228E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3500819215447352E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3553269335613916E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3597674924435937E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3641964450989221E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3695296488212255E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3731384442342471E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3766521587100087E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3802514806404633E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3820133627837381E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3846649983120626E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3873537099370049E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3899754779007167E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3917488029185276E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3916671156666350E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3924930831802244E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3933695646755816E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3933184459100241E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3932792603804260E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3932372860420371E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3923021852358074E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3904102745829362E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3894505848285103E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3885379910207935E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3867138864252779E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3848997103230092E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3830904895353528E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3812864974970694E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3794867007266557E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3776886748531997E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3758951805396848E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3732454867524468E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3714198149044892E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3696893383838387E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3661576091362945E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3635020829369207E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3617505264817587E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3591530183097939E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3556745756791624E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3530558624245245E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3496574587093191E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3461810014861710E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3436416381500983E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3394167787717643E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3351747033034419E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3318211854059793E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3284773369669238E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3243418109435372E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3193857025666432E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3144714998452746E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3103790656435349E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3055716733309423E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2999303671900595E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2951556375963903E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2896454429831385E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2833804297307056E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2771778614273446E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2710356553717834E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2649453637984500E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2581876175809271E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2514501020082027E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2441174073363507E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2360779909708815E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2288795808443890E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2210702625677764E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2119647976897122E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2036121761136958E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1947980226325940E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1853367230768808E+03 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.6667824334197815E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.5628204351582610E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.4518278018209958E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.3350084575103938E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.2072318736833529E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.0714263145379567E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.9262889008018976E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.7712197207923225E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.6053829428405049E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.4287470345861885E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.2398098229266742E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.0389824333843882E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.8246667471475723E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.5969290386617769E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.3549241688927594E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.0982047531725402E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.8261725866624818E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.5389625398535634E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2363056547663220E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.9189338275374706E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.5879987799806412E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2459610727729138E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3131419071150910E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.2256588291332903E+01 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2419603992359227E+02 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.1459839959930910E+01 - -1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.4551930540735201E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 5.1611209214567090E+01 - -2.5002167017866389E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.7430737323361448E+01 - 6.8090180432907849E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.2352662213576430E+01 - 7.4520234263676946E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.9366172336139627E+01 - 7.6681901933227603E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.8373133179458129E+01 - 8.0103188554912108E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.7806235498053802E+01 - 8.3226185778337444E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.7136217501374034E+01 - 8.5198255783851776E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.7098352155098532E+01 - 8.8485325991167665E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.7082698347630902E+01 - 9.1628612940675661E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.7318093597379693E+01 - 9.6336880560843552E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.7805194856419405E+01 - 1.0403195223813595E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.7208025404979743E+01 - 1.1073113808118538E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.7393244596862566E+01 - 1.1719470652318427E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.9775986016605330E+01 - 1.1927257353208165E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.3473644977443975E+01 - 1.1352554936339081E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.7070974386535518E+01 - 1.0683363432532959E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.9666468179576981E+01 - 1.0507930927328347E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.1253681603659281E+01 - 1.0722071765282905E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.2152840973992689E+01 - 1.1153925934147166E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.2868285513959073E+01 - 1.1800187046115872E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.3500105304152861E+01 - 1.2562915358630602E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.4282846993225562E+01 - 1.3256662728491175E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.5024420307318991E+01 - 1.3978563387995196E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.6028049532574478E+01 - 1.5127108208385645E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.7370057018900972E+01 - 1.6020463362969969E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.9079499834107416E+01 - 1.5621595899038135E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.1228674662197669E+01 - 1.4414070367794099E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.2973378008360505E+01 - 1.3338783574344024E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.3976438675913229E+01 - 1.2911237591574798E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.4590263597289024E+01 - 1.2975660836460506E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.5114674229879697E+01 - 1.3085397632930243E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.5494508504667820E+01 - 1.2979036403429581E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.5778825926518351E+01 - 1.2774949149843876E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.5994669663590685E+01 - 1.2637693663627719E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.6004743731483984E+01 - 1.2753291218120505E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.5823050814593032E+01 - 1.3026686002437265E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.5569162251407732E+01 - 1.3412773560153887E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.5244647006827734E+01 - 1.3970925509824278E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.4786968601403601E+01 - 1.4222255514586993E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.4199128407530637E+01 - 1.4173973327170639E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.3413760339748556E+01 - 1.4215102034742108E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.2380873007873653E+01 - 1.4341209798262181E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.1049697702890846E+01 - 1.4377190695578829E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.9360814126511663E+01 - 1.4143469000022194E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.7336908036675965E+01 - 1.3311147308601898E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.4915929367687696E+01 - 1.2118801022162096E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.2003161615137508E+01 - 1.0870671148323828E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.8591765723663045E+01 - 9.6781059056951127E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.4790156174575245E+01 - 8.6958462410774873E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.0812518484515564E+01 - 7.8373177606459593E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.6902878245907715E+01 - 7.0496157405781593E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.3256764276345166E+01 - 6.3389652314971262E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.9995373108130906E+01 - 5.7207964061131378E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.7165105805585927E+01 - 5.1995830506336792E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.4741860221878728E+01 - 4.7663234672676406E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2685048025628266E+01 - 4.4082406201920762E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0949055401667707E+01 - 4.1102553342635011E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.9474032967181166E+01 - 3.8567319904410292E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3609002529844771E+01 - 2.7132794880206510E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.8191102809423771E+00 - 1.7672407246192273E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.5562970633578406E+00 - 1.7221350869516743E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.3088082157304797E+00 - 1.6797367836849552E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.0780175197987880E+00 - 1.6404443058055711E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.8597952379637483E+00 - 1.6034395557579167E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.6582259091145932E+00 - 1.5695957202204899E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.4667591802540256E+00 - 1.5376523991739392E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0961261987200061E+01 - 2.2706219336003468E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3891891025817367E+01 - 2.9064372019968095E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3273726429872747E+01 - 2.8064902512763067E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2713616295648199E+01 - 2.7178976337795997E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2196905272450396E+01 - 2.6378108065239495E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1741674128420385E+01 - 2.5693247805963524E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1220123177125938E+01 - 2.4933330638548176E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0787244438200467E+01 - 2.4298054271712149E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0398289460310663E+01 - 2.3745576516402991E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0015169139361944E+01 - 2.3209178522945812E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.6653966326367833E+00 - 2.2739324659535938E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.3078141539704031E+00 - 2.2237734039845039E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.9837506975163244E+00 - 2.1788626439598394E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.6667300471142461E+00 - 2.1339441011550296E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.3724679803492545E+00 - 2.0911405727200415E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.0735829049513086E+00 - 2.0480118664816666E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.7843547320904758E+00 - 2.0056988498001228E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.5068990724116000E+00 - 1.9649537814648246E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.2385588054827377E+00 - 1.9252127780824326E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.9791362989229100E+00 - 1.8864246375905894E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.7305320386058263E+00 - 1.8491337716961782E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.4903344566877923E+00 - 1.8127459641080500E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.2546221171745886E+00 - 1.7761989681682334E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.0273365447547134E+00 - 1.7406156374748700E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.8102185535770294E+00 - 1.7065831396534972E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.5991931111965716E+00 - 1.6729001236502096E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.3974958891657963E+00 - 1.6404796441406803E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.2032054324000789E+00 - 1.6087602645227773E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.0128005253518539E+00 - 1.5766021748507525E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.8281027850582312E+00 - 1.5445502935186751E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.6505005650260527E+00 - 1.5130916100160461E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.4825069998940812E+00 - 1.4831745997336965E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.3209010578906604E+00 - 1.4539105530053898E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.1624217128121606E+00 - 1.4240775537109555E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.0098642979426442E+00 - 1.3947830457627090E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.8636288843775635E+00 - 1.3667527253427873E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.7223078152905997E+00 - 1.3396133290097385E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.5867013165383343E+00 - 1.3135250800639001E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.4576265885406636E+00 - 1.2888017045520291E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.3326881314552277E+00 - 1.2646794399107172E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.2108392452166084E+00 - 9.2312241235541619E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.0943703051431020E+00 - 5.7601186007829278E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.9832390021814366E+00 - 4.6066061102476326E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.8762108985810544E+00 - 3.9370151475201074E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.7731208211373977E+00 - 3.4751172659775178E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.6738083030340256E+00 - 3.1279299822523904E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.5781235314560362E+00 - 2.8532710114361301E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.4859206146642863E+00 - 2.6285166330747846E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3977604416341962E+00 - 2.4408502427878528E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3127960421089071E+00 - 2.2807266198164053E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2301215953086979E+00 - 2.1414842774975664E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.1516725998078434E+00 - 2.0208510438641384E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0766664995882351E+00 - 1.9149719379323955E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0029689428629789E+00 - 1.8196405477390498E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.9318007165860498E+00 - 1.7342746081418619E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8642695518666772E+00 - 1.6584753294639768E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7990744554551790E+00 - 1.5899779008091744E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7360186289736557E+00 - 1.5277514992312623E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.6756244227836057E+00 - 1.4715432176424864E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.6167679989893164E+00 - 1.4197849836954125E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.5602873183252428E+00 - 1.3727298599195179E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.5066335208981749E+00 - 1.3303784768334984E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.4542705948282120E+00 - 1.2910438933788724E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.4031663359005919E+00 - 1.2544015323735155E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3541460752544829E+00 - 1.2209418278975431E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3075042923270577E+00 - 1.1907385288927284E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2627184649656242E+00 - 1.1631669960652355E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2189673870854860E+00 - 1.1373265085082774E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1765557320701787E+00 - 1.1133534182534235E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1361527819688992E+00 - 1.0917830365293255E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0970160898157000E+00 - 1.0718381295607241E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0590339516208365E+00 - 1.0533162910291809E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0228101129995171E+00 - 1.0367669233563663E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.8795253976995090E-01 - 1.0217724005085651E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.5409839706959110E-01 - 1.0079141614115573E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.2122878348185777E-01 - 9.9512536315834046E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.8955817735911447E-01 - 9.8360352662400316E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.5905747070309002E-01 - 9.7331472116655147E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.2963869167743054E-01 - 9.6415126391785645E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.0148383783364530E-01 - 9.5633679262391368E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.7410697569279197E-01 - 9.4931326544594472E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.4743860477015078E-01 - 9.4296058498259182E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.2207823788527314E-01 - 9.3805246408144344E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.9758942793949541E-01 - 9.3409237650883799E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.7368738061137257E-01 - 9.3068773925875351E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.5073935374720204E-01 - 9.2835995005814508E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.1912916900094976E-01 - 1.3553713103690722E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1744856237596395E+00 - 1.8555952815427015E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0960950178098738E+00 - 1.8624484900931976E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0227667771789446E+00 - 1.8762026620474090E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.5438682566859467E-01 - 1.8975319025517078E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.9073590622047183E-01 - 1.9272652386403103E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.3124181073559122E-01 - 1.9655616060152397E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.7568348445061486E-01 - 2.0135025696200236E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.2380283794975353E-01 - 2.0723799056318412E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.7531909429464188E-01 - 2.1437817281414293E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.3000232028362413E-01 - 2.2298819633502939E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.8761787842916313E-01 - 2.3335355732433525E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.4793301061354105E-01 - 2.4584257238685237E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.1076171036275675E-01 - 2.6097972964641418E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.7586836404503213E-01 - 2.7945222454306174E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.4306373417455464E-01 - 3.0225661476412228E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.1214484177098965E-01 - 3.3082827638244761E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.8287972185444058E-01 - 3.6730259212630015E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.5500979738685184E-01 - 4.1499175167427528E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.2823399173703616E-01 - 4.7932833884255426E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.0212754264793029E-01 - 5.6969864446410594E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.7608755890911296E-01 - 7.0378317096854330E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0028419721426849E-01 - 7.3850797027162777E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.6150451574249103E-01 - 7.4316151463172783E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.6967121157666415E-01 - 1.3677858207235434E-08 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1875623200241373E-01 - 1.3920740561860094E-08 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.4043801173217313E-01 - 5.3768578865079475E-08 - 0.0000000000000000E+00 - -4.5780348298091148E+01 - 1.2902802303641772E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.7715737769410840E+01 - -7.0278239187611034E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.7118520898333461E+01 - -7.6914920985704880E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.5121830676519124E+01 - -7.9146053236477734E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3480603933872832E+01 - -8.2677281939345342E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2686860757687015E+01 - -8.5900635798223561E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2339818707974871E+01 - -8.7936077717470784E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2188790088893580E+01 - -9.1328776999327488E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2183890321763329E+01 - -9.4573072588916620E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2251867191136956E+01 - -9.9432639061874966E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2661327275630700E+01 - -1.0737498969840207E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.4095803073523658E+01 - -1.1428945209309061E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.6038999633633278E+01 - -1.2096088335590711E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.5221147158223555E+01 - -1.2310636010631862E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.4279804084347102E+01 - -1.1717366089118027E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3956279618051173E+01 - -1.1026670304971002E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3775006426052215E+01 - -1.0845600325662829E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3600232902610774E+01 - -1.1066622519081719E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3454654595295278E+01 - -1.1512354199929222E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3363217325903747E+01 - -1.2179382730558274E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3345801763498248E+01 - -1.2966621102389407E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3384469993695877E+01 - -1.3682661848415714E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3501762773758561E+01 - -1.4427760582093891E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3717188733605155E+01 - -1.5613213566466918E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.4051195971451779E+01 - -1.6535276436988585E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.4309490799978292E+01 - -1.6123591479252138E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.4334704428151863E+01 - -1.4877262454976712E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.4173090100641520E+01 - -1.3767421622920702E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3921401730989253E+01 - -1.3326136569503163E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3653620431432856E+01 - -1.3392630035188686E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3403339242383616E+01 - -1.3505893187408978E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3167784116536314E+01 - -1.3396114065467362E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2935089783630225E+01 - -1.3185468516856385E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2720596540150598E+01 - -1.3043802351921043E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2543701858661748E+01 - -1.3163114558966791E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2401515119369922E+01 - -1.3445294768831497E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2287363355687194E+01 - -1.3843789092256641E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2214294389230364E+01 - -1.4419876665128253E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2162274454622885E+01 - -1.4679281968758701E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2111003866259782E+01 - -1.4629446547214274E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2067472358870248E+01 - -1.4671893598786307E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2032588464508795E+01 - -1.4802044952027774E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2001536324205013E+01 - -1.4839171142491290E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.1961928008321561E+01 - -1.4597903975309299E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.1888456798542677E+01 - -1.3738793645875804E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.1770169026022398E+01 - -1.2508090634864365E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.1601466557091047E+01 - -1.1219786341722168E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.1382520979420612E+01 - -9.9888756260042051E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.1122767847658359E+01 - -8.9750401732900684E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0835127509676994E+01 - -8.0889547460376487E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0536286672773063E+01 - -7.2759604205845925E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0240669538748410E+01 - -6.5424684793598811E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.9962413337185446E+01 - -5.9044249092388634E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.9711393831857578E+01 - -5.3664700853680243E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.9491426552691983E+01 - -4.9193180521334208E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.9300057137007208E+01 - -4.5497169170246572E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.9136740575345009E+01 - -4.2421632730935199E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8998209332698657E+01 - -3.9804967768422106E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8885016951511428E+01 - -2.8003365446523119E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8106395945876443E+01 - -1.8239401395779145E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8070537553155425E+01 - -1.7773839695715139E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8052861226917472E+01 - -1.7336238299714506E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8021650953809591E+01 - -1.6930692319298228E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8006299821015492E+01 - -1.6548749422494542E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7978607871820021E+01 - -1.6199430711670741E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7965408887154197E+01 - -1.5869716325229262E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7938386903908626E+01 - -2.3434455599116566E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8482101728281197E+01 - -2.9996377013741613E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8425111421622201E+01 - -2.8964649887386851E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8373594443370916E+01 - -2.8050033330965172E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8326679438225593E+01 - -2.7223160049624111E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8282277255236362E+01 - -2.6515949493145290E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8243033107457354E+01 - -2.5731111930861310E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8195999746656259E+01 - -2.5074936136124966E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8168427612618984E+01 - -2.4503955001476214E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8129244870878722E+01 - -2.3949605652195332E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8102855147655887E+01 - -2.3463557205207644E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8070047436750837E+01 - -2.2944812692008001E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8043271815884005E+01 - -2.2479734686314585E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8016586946183349E+01 - -2.2014646076423268E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7992242814378194E+01 - -2.1570949402617199E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7967796520714025E+01 - -2.1123590403330832E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7944248969450516E+01 - -2.0684277534945554E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7921928919979027E+01 - -2.0260706906172379E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7900854214566969E+01 - -1.9846986770867334E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7880580942131296E+01 - -1.9442474788693795E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7861491023371251E+01 - -1.9052664309603096E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7843519105548935E+01 - -1.8671304360419019E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7826334161877288E+01 - -1.8287336576553448E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7809613682660036E+01 - -1.7912280840470993E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7794294839873068E+01 - -1.7552219655573906E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7779753967645924E+01 - -1.7195007437642269E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7765925538406840E+01 - -1.6850445476171967E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7753391241041776E+01 - -1.6513286163737275E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7741266295988922E+01 - -1.6172376515755664E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7729821982295583E+01 - -1.5833650512826782E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7719080418762260E+01 - -1.5502088818127089E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7709240759887852E+01 - -1.5187111595963434E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7700517718156028E+01 - -1.4879275775656506E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7692159334448572E+01 - -1.4565869032987904E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7684351986278930E+01 - -1.4257881311458991E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7677366820751082E+01 - -1.3962581926521667E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7671005101183351E+01 - -1.3676422738714147E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7665235719599583E+01 - -1.3401154432392799E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7660228372146030E+01 - -1.3140006002515778E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7655954755425945E+01 - -1.2884002364866360E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7651910812045344E+01 - -1.2546338198869316E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7648081221378806E+01 - -1.2086760745511402E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7644656166824682E+01 - -1.1648455997801286E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7641442266271778E+01 - -1.1226576008729987E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7638426445258908E+01 - -1.0820450410901656E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7635595627499161E+01 - -1.0429428054671297E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7632937842212428E+01 - -1.0052901037802204E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7630442112912405E+01 - -9.6902788615750668E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7628098944129441E+01 - -9.3437275377371987E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7626017832161633E+01 - -9.0099206237278651E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7623946230989596E+01 - -8.6852644703134085E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7621988671684658E+01 - -8.3772880664897698E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7620377850422564E+01 - -8.0829667869706812E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7618747687484802E+01 - -7.7939712813280704E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7617103593692189E+01 - -7.5150335509768407E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7615655213867527E+01 - -7.2504445983944510E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7614387012344196E+01 - -6.9951270289933920E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7613095498742478E+01 - -6.7483033550811722E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7611958333131948E+01 - -6.5119899047342378E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7610889016474570E+01 - -6.2818063681698610E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7609785763862501E+01 - -6.0609985797117027E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7608903885485375E+01 - -5.8513050564434677E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7608066670950777E+01 - -5.6467493606148711E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7607190623748309E+01 - -5.4471991904576444E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7606359010442723E+01 - -5.2558502435431254E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7605636698292042E+01 - -5.0738355561445525E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7605015532822801E+01 - -4.8991180808609869E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7604417245013817E+01 - -4.7285047804029257E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7603782070492311E+01 - -4.5631723465174989E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7603229418832630E+01 - -4.4057097908074788E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7602758934028241E+01 - -4.2532312941617589E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7602245496695989E+01 - -4.1052992476197397E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7601802976170148E+01 - -3.9642486541259964E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7601425604116486E+01 - -3.8285544623158041E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7601055120244474E+01 - -3.6968063349292246E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7600691265799099E+01 - -3.5689273644057318E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7600334822522136E+01 - -3.4457448242707472E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7600026986805862E+01 - -3.3271419976007810E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7599724681763437E+01 - -3.2127747062260542E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7599461684421733E+01 - -3.1033442132558048E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7599239208577828E+01 - -2.9969656602736450E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7598973552622635E+01 - -2.8933677353520038E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7598743055698002E+01 - -2.7948683811672848E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7598576911102192E+01 - -2.6997751130135828E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7598371316565892E+01 - -2.6069834953657905E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7598186676900713E+01 - -2.5179122761550787E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7598843495523582E+01 - -3.5560276869217811E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7652388469425816E+01 - -4.5430818276175539E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7648546277187005E+01 - -4.2390708468106553E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7644968466972099E+01 - -3.9547929204815374E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7641611515183168E+01 - -3.6897848067536287E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7638528398456408E+01 - -3.4431784538565829E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7635646723419679E+01 - -3.2127444204263411E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7632962651743604E+01 - -2.9976130842060450E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7630461806322298E+01 - -2.7967736150663713E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7628133228829203E+01 - -2.6091292985257930E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7625956754950980E+01 - -2.4337815150410572E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7623930863807487E+01 - -2.2698148123123277E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7622031506299528E+01 - -2.1163223039614612E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7620259166182763E+01 - -1.9725787240630038E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7618595164913426E+01 - -1.8376682023586177E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7617032234120284E+01 - -1.7108548232282245E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7615559034655675E+01 - -1.5913503538456450E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7614166492252401E+01 - -1.4782553146031363E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7612838101986863E+01 - -1.3705681211910811E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7611563023487800E+01 - -1.2671236877827710E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7610319775088644E+01 - -1.1662800250493260E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7609083606000247E+01 - -1.0657081288860561E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7607669987903741E+01 - -7.7307017372214556E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7594656141823897E+01 - -6.2337316776099480E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7605634762101708E+01 - -6.5487043934884873E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7593681911384259E+01 - -4.5834923538838869E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7603868382342259E+01 - -5.4201545090585973E-02 - 0.0000000000000000E+00 - 6.7744449635526422E+01 - 1.7039827064549200E+01 - 9.3724257195852944E+04 - 1.0000000000000000E+00 - -4.1911393485222547E+01 - -2.0919929385893671E+01 - 9.7952571664951887E+04 - 1.0000000000000000E+00 - -4.1584464861522306E+01 - -2.1244911349805367E+01 - 1.0030474848102943E+05 - 1.0000000000000000E+00 - -4.1390462974206578E+01 - -2.1089941491097608E+01 - 9.7205331685627025E+04 - 1.0000000000000000E+00 - -4.1416762039985933E+01 - -2.1014915974555763E+01 - 9.0415139337332250E+04 - 1.0000000000000000E+00 - -4.1524136509127331E+01 - -2.1093667442728758E+01 - 8.4424683322740093E+04 - 1.0000000000000000E+00 - -4.1528476784797327E+01 - -2.1086086797917350E+01 - 7.8899885607464676E+04 - 1.0000000000000000E+00 - -4.1473127853850634E+01 - -2.1046966344666977E+01 - 7.1722917677511447E+04 - 1.0000000000000000E+00 - -4.1499630617121149E+01 - -2.1066527259035428E+01 - 6.5679512549710038E+04 - 1.0000000000000000E+00 - -4.1436639321664359E+01 - -2.0894894538630261E+01 - 5.8963393504399464E+04 - 1.0000000000000000E+00 - -4.1359815694601316E+01 - -2.0746514357213613E+01 - 5.2315101699889325E+04 - 1.0000000000000000E+00 - -4.1103637208480230E+01 - -2.0657774854368270E+01 - 4.7778921479097036E+04 - 1.0000000000000000E+00 - -4.0477985488880016E+01 - -2.0917761598322230E+01 - 4.0832798477043361E+04 - 1.0000000000000000E+00 - -4.0461512735395530E+01 - -2.1737997303179625E+01 - 3.2992638562210333E+04 - 1.0000000000000000E+00 - -4.0883474911526854E+01 - -2.2459815772469668E+01 - 2.6884763359885608E+04 - 1.0000000000000000E+00 - -4.1434156559736188E+01 - -2.2627539141533873E+01 - 2.2634101725339347E+04 - 1.0000000000000000E+00 - -4.1958919947596030E+01 - -2.2513435032488402E+01 - 1.9648339450986947E+04 - 1.0000000000000000E+00 - -4.2356531897386333E+01 - -2.2409787714590482E+01 - 1.7334935587627875E+04 - 1.0000000000000000E+00 - -4.2628334440876138E+01 - -2.2315609821917757E+01 - 1.5383960830972834E+04 - 1.0000000000000000E+00 - -4.2790992840368908E+01 - -2.2226628463686197E+01 - 1.3563600110522248E+04 - 1.0000000000000000E+00 - -4.2894179919804607E+01 - -2.2235415627753259E+01 - 1.1876746159351262E+04 - 1.0000000000000000E+00 - -4.2943130994424237E+01 - -2.2323817844072465E+01 - 1.0283874802153445E+04 - 1.0000000000000000E+00 - -4.2966371257820349E+01 - -2.2167944044371801E+01 - 8.8542963924108662E+03 - 1.0000000000000000E+00 - -4.2891972572531834E+01 - -2.2013772934006539E+01 - 7.4822484871674251E+03 - 1.0000000000000000E+00 - -4.2783182140705328E+01 - -2.2301949531503475E+01 - 6.2342991460552375E+03 - 1.0000000000000000E+00 - -4.2771340565133421E+01 - -2.2819421975233457E+01 - 5.2042250545467232E+03 - 1.0000000000000000E+00 - -4.2974004359025706E+01 - -2.3115736066550205E+01 - 4.3984920919146098E+03 - 1.0000000000000000E+00 - -4.3370234521286790E+01 - -2.3184290125088118E+01 - 3.8118146637902355E+03 - 1.0000000000000000E+00 - -4.3761720872817065E+01 - -2.3169703510588807E+01 - 3.3582848083048384E+03 - 1.0000000000000000E+00 - -4.4077012002639698E+01 - -2.3267484983087204E+01 - 2.9696959578001674E+03 - 1.0000000000000000E+00 - -4.4349721041058061E+01 - -2.3502452650373485E+01 - 2.6261935713687340E+03 - 1.0000000000000000E+00 - -4.4615006930382648E+01 - -2.3777467692989184E+01 - 2.3324940281208810E+03 - 1.0000000000000000E+00 - -4.4863118629247836E+01 - -2.3968646655611924E+01 - 2.0803341145081163E+03 - 1.0000000000000000E+00 - -4.5094454000652448E+01 - -2.4018230608494044E+01 - 1.8617047583089120E+03 - 1.0000000000000000E+00 - -4.5297089851066936E+01 - -2.3960040561865380E+01 - 1.6707314393426739E+03 - 1.0000000000000000E+00 - -4.5452912365694523E+01 - -2.3879128842663690E+01 - 1.5001698129379240E+03 - 1.0000000000000000E+00 - -4.5569999404329934E+01 - -2.3670166908941194E+01 - 1.3443935804906689E+03 - 1.0000000000000000E+00 - -4.5660064688343574E+01 - -2.3587803445386729E+01 - 1.2012929367603292E+03 - 1.0000000000000000E+00 - -4.5736095825537703E+01 - -2.3673834423956102E+01 - 1.0753936750814782E+03 - 1.0000000000000000E+00 - -4.5799771657544014E+01 - -2.3578386613636809E+01 - 9.6751226474688417E+02 - 1.0000000000000000E+00 - -4.5848008677310318E+01 - -2.3421788487640800E+01 - 8.7523916777870932E+02 - 1.0000000000000000E+00 - -4.5868037013281210E+01 - -2.3292210955993323E+01 - 7.9609592361322336E+02 - 1.0000000000000000E+00 - -4.5855696966787285E+01 - -2.3184871604194775E+01 - 7.2956644732004565E+02 - 1.0000000000000000E+00 - -4.5806154152024241E+01 - -2.3208813292295538E+01 - 6.7642449276571404E+02 - 1.0000000000000000E+00 - -4.5717153177850157E+01 - -2.3303686753153748E+01 - 6.3808436005134979E+02 - 1.0000000000000000E+00 - -4.5588082685373500E+01 - -2.3214092695557888E+01 - 6.1559399258120288E+02 - 1.0000000000000000E+00 - -4.5393548972195568E+01 - -2.3057795415147766E+01 - 6.0860570733882355E+02 - 1.0000000000000000E+00 - -4.5108974506050991E+01 - -2.2650810091041613E+01 - 6.1638877808907478E+02 - 1.0000000000000000E+00 - -4.4725287164102689E+01 - -2.2174255262900758E+01 - 6.3717926406510742E+02 - 1.0000000000000000E+00 - -4.4258499713664527E+01 - -2.1720257448627045E+01 - 6.6909471247921795E+02 - 1.0000000000000000E+00 - -4.3744550486244812E+01 - -2.1277707777413024E+01 - 7.0990584326295470E+02 - 1.0000000000000000E+00 - -4.3226605046091080E+01 - -2.0849530315482745E+01 - 7.5672713768968561E+02 - 1.0000000000000000E+00 - -4.2736852697587757E+01 - -2.0456507610196482E+01 - 8.0676599802003409E+02 - 1.0000000000000000E+00 - -4.2294826620617492E+01 - -2.0110264700050884E+01 - 8.5754532092560476E+02 - 1.0000000000000000E+00 - -4.1908414476351282E+01 - -1.9812028173267244E+01 - 9.0792272849549227E+02 - 1.0000000000000000E+00 - -4.1573302442875580E+01 - -1.9561952302768280E+01 - 9.5587084459391883E+02 - 1.0000000000000000E+00 - -4.1286904869340276E+01 - -1.9360770977303204E+01 - 1.0006423919328142E+03 - 1.0000000000000000E+00 - -4.1041958037029794E+01 - -1.9196709863947227E+01 - 1.0423960175070547E+03 - 1.0000000000000000E+00 - -4.0830702267939209E+01 - -1.9054648228609423E+01 - 2.0896307644367612E+03 - 1.0000000000000000E+00 - -3.9168326229538849E+01 - -1.8027821684274873E+01 - 2.1581108289762565E+03 - 1.0000000000000000E+00 - -3.9105188599501901E+01 - -1.7986089830361781E+01 - 2.1625510281153470E+03 - 1.0000000000000000E+00 - -3.9084246019717234E+01 - -1.7969638475484942E+01 - 2.2268440856201537E+03 - 1.0000000000000000E+00 - -3.9028690757726508E+01 - -1.7932918635225004E+01 - 2.2296267733412692E+03 - 1.0000000000000000E+00 - -3.9010010401430009E+01 - -1.7918516824507961E+01 - 2.2898180983152051E+03 - 1.0000000000000000E+00 - -3.8960526378281010E+01 - -1.7885916622868816E+01 - 2.2891484167110789E+03 - 1.0000000000000000E+00 - -3.8945275449606832E+01 - -1.7873708794785898E+01 - 2.3452986001828658E+03 - 1.0000000000000000E+00 - -3.8902054321582995E+01 - -1.7844891055305698E+01 - 1.2041883123932064E+03 - 1.0000000000000000E+00 - -4.0101796544802063E+01 - -1.8575924707376021E+01 - 1.2289355007922047E+03 - 1.0000000000000000E+00 - -3.9997155805113877E+01 - -1.8507236484408821E+01 - 1.2508394379876581E+03 - 1.0000000000000000E+00 - -3.9902074016730197E+01 - -1.8445365765359259E+01 - 1.2701318100629742E+03 - 1.0000000000000000E+00 - -3.9815650761183697E+01 - -1.8388778988182001E+01 - 1.2880423251289953E+03 - 1.0000000000000000E+00 - -3.9732610124237112E+01 - -1.8333466789449481E+01 - 1.2979354843414098E+03 - 1.0000000000000000E+00 - -3.9663189088790951E+01 - -1.8289284304340441E+01 - 1.3333307556991003E+03 - 1.0000000000000000E+00 - -3.9567990205957564E+01 - -1.8228120238046792E+01 - 1.3292369936487839E+03 - 1.0000000000000000E+00 - -3.9519614312679913E+01 - -1.8196117704170408E+01 - 1.3559224812352295E+03 - 1.0000000000000000E+00 - -3.9439574075965282E+01 - -1.8148901620602434E+01 - 1.3540708180558581E+03 - 1.0000000000000000E+00 - -3.9391051668145757E+01 - -1.8122154875015180E+01 - 1.3737790722470857E+03 - 1.0000000000000000E+00 - -3.9323002641963626E+01 - -1.8086322298974334E+01 - 1.3771286519049206E+03 - 1.0000000000000000E+00 - -3.9270167035959069E+01 - -1.8059864780645803E+01 - 1.3895087979241916E+03 - 1.0000000000000000E+00 - -3.9213597265639294E+01 - -1.8031541162270681E+01 - 1.3935023111255018E+03 - 1.0000000000000000E+00 - -3.9162860579144400E+01 - -1.8005310424376809E+01 - 1.4010279842144403E+03 - 1.0000000000000000E+00 - -3.9110628268404326E+01 - -1.7979030651689026E+01 - 1.4085717012105470E+03 - 1.0000000000000000E+00 - -3.9059322205258503E+01 - -1.7952881179545578E+01 - 1.4154101983882238E+03 - 1.0000000000000000E+00 - -3.9009947092915162E+01 - -1.7927500216345170E+01 - 1.4214053502531985E+03 - 1.0000000000000000E+00 - -3.8962290419396886E+01 - -1.7903372544214207E+01 - 1.4274987352995415E+03 - 1.0000000000000000E+00 - -3.8915316522319451E+01 - -1.7880116278610934E+01 - 1.4327437473122334E+03 - 1.0000000000000000E+00 - -3.8869859015444518E+01 - -1.7858177325550479E+01 - 1.4371843061900684E+03 - 1.0000000000000000E+00 - -3.8826061662314551E+01 - -1.7837385265205825E+01 - 1.4416132588408113E+03 - 1.0000000000000000E+00 - -3.8783225019486380E+01 - -1.7817197012023968E+01 - 1.4469464625580199E+03 - 1.0000000000000000E+00 - -3.8740513766519136E+01 - -1.7797112616000277E+01 - 1.4505552579659302E+03 - 1.0000000000000000E+00 - -3.8699946409635935E+01 - -1.7778736298519007E+01 - 1.4540689724362210E+03 - 1.0000000000000000E+00 - -3.8660118282530078E+01 - -1.7761326533212394E+01 - 1.4576682943610597E+03 - 1.0000000000000000E+00 - -3.8621018947352340E+01 - -1.7744731778373424E+01 - 1.4594301764986421E+03 - 1.0000000000000000E+00 - -3.8584054514896557E+01 - -1.7729792813411098E+01 - 1.4620818120212862E+03 - 1.0000000000000000E+00 - -3.8547304232452326E+01 - -1.7715071099886888E+01 - 1.4647705236410111E+03 - 1.0000000000000000E+00 - -3.8511241977581932E+01 - -1.7700925499097234E+01 - 1.4673922916005406E+03 - 1.0000000000000000E+00 - -3.8476007848202144E+01 - -1.7687327047542432E+01 - 1.4691656166153596E+03 - 1.0000000000000000E+00 - -3.8441959638653486E+01 - -1.7674376318571593E+01 - 1.4690839293629667E+03 - 1.0000000000000000E+00 - -3.8409572906811661E+01 - -1.7662239977325811E+01 - 1.4699098968792141E+03 - 1.0000000000000000E+00 - -3.8377290404833417E+01 - -1.7649517483728811E+01 - 1.4707863783816192E+03 - 1.0000000000000000E+00 - -3.8345596567635056E+01 - -1.7636597941703176E+01 - 1.4707352596290330E+03 - 1.0000000000000000E+00 - -3.8315115746890577E+01 - -1.7624299754462736E+01 - 1.4706960741180660E+03 - 1.0000000000000000E+00 - -3.8285406107625697E+01 - -1.7612352744597228E+01 - 1.4706540998033026E+03 - 1.0000000000000000E+00 - -3.8256338985764565E+01 - -1.7600609777521065E+01 - 1.4697189990227746E+03 - 1.0000000000000000E+00 - -3.8228249192562444E+01 - -1.7589364337335091E+01 - 1.4678270883929501E+03 - 1.0000000000000000E+00 - -3.8201137877474963E+01 - -1.7578645804602221E+01 - 1.4668673986534179E+03 - 1.0000000000000000E+00 - -3.8174264668837807E+01 - -1.7153680493346872E+01 - 1.4659548048441375E+03 - 1.0000000000000000E+00 - -3.8148206538706091E+01 - -1.7149660592855284E+01 - 1.4641307002489689E+03 - 1.0000000000000000E+00 - -3.8123370095574749E+01 - -1.7145849853819744E+01 - 1.4623165241469990E+03 - 1.0000000000000000E+00 - -3.8099346589603840E+01 - -1.7142168261447399E+01 - 1.4605073033596734E+03 - 1.0000000000000000E+00 - -3.8076120938144804E+01 - -1.7138610607423466E+01 - 1.4587033113216887E+03 - 1.0000000000000000E+00 - -3.8053678105066368E+01 - -1.7135171764821330E+01 - 1.4569035145515627E+03 - 1.0000000000000000E+00 - -3.8032002675221484E+01 - -1.7131847119425064E+01 - 1.4551054886782433E+03 - 1.0000000000000000E+00 - -3.8011076632246549E+01 - -1.7128632504307351E+01 - 1.4533119943650777E+03 - 1.0000000000000000E+00 - -3.7990874648677874E+01 - -1.7125523747819965E+01 - 1.4506623005779568E+03 - 1.0000000000000000E+00 - -3.7971625392687628E+01 - -1.7122622516468866E+01 - 1.4488366287301808E+03 - 1.0000000000000000E+00 - -3.7952775771931485E+01 - -1.7119771406941634E+01 - 1.4471061522097029E+03 - 1.0000000000000000E+00 - -3.7934522074374996E+01 - -1.7116968610499487E+01 - 1.4435744229622819E+03 - 1.0000000000000000E+00 - -3.7917341692000868E+01 - -1.7114359346818439E+01 - 1.4409188967630525E+03 - 1.0000000000000000E+00 - -3.7900485726219067E+01 - -1.7111791664067788E+01 - 1.4391673403080301E+03 - 1.0000000000000000E+00 - -3.7883959770835155E+01 - -1.7109266949669340E+01 - 1.4365698321361863E+03 - 1.0000000000000000E+00 - -3.7868193835645592E+01 - -1.7106870591230621E+01 - 1.4330913895056215E+03 - 1.0000000000000000E+00 - -3.7853144521337789E+01 - -1.7104595409704203E+01 - 1.4304726762511109E+03 - 1.0000000000000000E+00 - -3.7838367724172514E+01 - -1.7102355970132770E+01 - 1.4270742725359105E+03 - 1.0000000000000000E+00 - -3.7824235872104246E+01 - -1.7100225088138043E+01 - 1.4235978153129167E+03 - 1.0000000000000000E+00 - -3.7810562125610872E+01 - -1.7098166529683265E+01 - 1.4210584519768813E+03 - 1.0000000000000000E+00 - -3.7797121352622582E+01 - -1.7096136717705523E+01 - 1.4168335925985891E+03 - 1.0000000000000000E+00 - -3.7784451424546027E+01 - -1.7094240536930617E+01 - 1.4125915171303611E+03 - 1.0000000000000000E+00 - -3.7772173372274160E+01 - -1.7092404125306700E+01 - 1.4092379992329120E+03 - 1.0000000000000000E+00 - -3.7760108370420930E+01 - -1.7090592431410204E+01 - 1.4058941507939612E+03 - 1.0000000000000000E+00 - -3.7748428725563954E+01 - -1.7088839112479171E+01 - 1.4017586247705717E+03 - 1.0000000000000000E+00 - -3.7737264158007221E+01 - -1.7087169800153358E+01 - 1.3968025163937332E+03 - 1.0000000000000000E+00 - -3.7726590779124344E+01 - -1.7085580112631600E+01 - 1.3918883136723932E+03 - 1.0000000000000000E+00 - -3.7716239854026853E+01 - -1.7084037159375676E+01 - 1.3877958794707724E+03 - 1.0000000000000000E+00 - -3.7706079517232084E+01 - -1.7082515372760056E+01 - 1.3829884871581307E+03 - 1.0000000000000000E+00 - -3.7696355993927504E+01 - -1.7081063335284220E+01 - 1.3773471810173310E+03 - 1.0000000000000000E+00 - -3.7687063749046402E+01 - -1.7079680319002264E+01 - 1.3725724514236322E+03 - 1.0000000000000000E+00 - -3.7677930454327210E+01 - -1.7078313447767425E+01 - 1.3670622568104279E+03 - 1.0000000000000000E+00 - -3.7669190324385596E+01 - -1.7077009126095522E+01 - 1.3607972435580948E+03 - 1.0000000000000000E+00 - -3.7660823837613435E+01 - -1.7075764093389687E+01 - 1.3545946752547143E+03 - 1.0000000000000000E+00 - -3.7652701526121945E+01 - -1.7074553458391048E+01 - 1.3484524691991462E+03 - 1.0000000000000000E+00 - -3.7644817851492860E+01 - -1.7073376585001984E+01 - 1.3423621776258290E+03 - 1.0000000000000000E+00 - -3.7637167511341552E+01 - -1.7072232995016790E+01 - 1.3356044314083510E+03 - 1.0000000000000000E+00 - -3.7629831528509420E+01 - -1.7071139140259877E+01 - 1.3288669158356299E+03 - 1.0000000000000000E+00 - -3.7622711133946623E+01 - -1.7070076228374706E+01 - 1.3215342211638454E+03 - 1.0000000000000000E+00 - -3.7615870233005829E+01 - -1.7069057425064504E+01 - 1.3134948047983751E+03 - 1.0000000000000000E+00 - -3.7609306710560212E+01 - -1.7068082775524854E+01 - 1.3062963946718369E+03 - 1.0000000000000000E+00 - -3.7602837435439945E+01 - -1.7067116770542718E+01 - 1.2984870763952752E+03 - 1.0000000000000000E+00 - -3.7596620698919111E+01 - -1.7066191114161022E+01 - 1.2893816115172485E+03 - 1.0000000000000000E+00 - -3.7590713184588367E+01 - -1.7065317393201347E+01 - 1.2810289899411621E+03 - 1.0000000000000000E+00 - -3.7584894883221608E+01 - -1.7064451719797294E+01 - 1.2722148364601821E+03 - 1.0000000000000000E+00 - -3.7579290880793096E+01 - -1.7063618618120550E+01 - 1.2627535369043892E+03 - 1.0000000000000000E+00 - -3.7573310325538152E+01 - -1.7062820839974886E+01 - 6.4409505716955437E+02 - 1.0000000000000000E+00 - -3.7678123208793259E+01 - -1.7083912404483197E+01 - 6.3369885734340460E+02 - 1.0000000000000000E+00 - -3.7661008576717407E+01 - -1.7081010855965172E+01 - 6.2259959400967205E+02 - 1.0000000000000000E+00 - -3.7645017404245856E+01 - -1.7078298784659101E+01 - 6.1091765957866585E+02 - 1.0000000000000000E+00 - -3.7630022855178893E+01 - -1.7075753622973465E+01 - 5.9814000119594311E+02 - 1.0000000000000000E+00 - -3.7616105092872971E+01 - -1.7073393347132054E+01 - 5.8455944528141811E+02 - 1.0000000000000000E+00 - -3.7603080902823933E+01 - -1.7071183772923483E+01 - 5.7004570390782169E+02 - 1.0000000000000000E+00 - -3.7590914499050697E+01 - -1.7069119585779166E+01 - 5.5453878590688885E+02 - 1.0000000000000000E+00 - -3.7579549139173643E+01 - -1.7067191201674159E+01 - 5.3795510811170061E+02 - 1.0000000000000000E+00 - -3.7568937127455619E+01 - -1.7065390677089820E+01 - 5.2029151728626869E+02 - 1.0000000000000000E+00 - -3.7559012538178528E+01 - -1.7063706362250866E+01 - 5.0139779612034323E+02 - 1.0000000000000000E+00 - -3.7549750660154338E+01 - -1.7062134623564972E+01 - 4.8131505716610116E+02 - 1.0000000000000000E+00 - -3.7541080300851462E+01 - -1.7060662558445667E+01 - 4.5988348854241389E+02 - 1.0000000000000000E+00 - -3.7532983719750277E+01 - -1.7059287723371988E+01 - 4.3710971769385577E+02 - 1.0000000000000000E+00 - -3.7525404001138853E+01 - -1.7057999846973672E+01 - 4.1290923071695710E+02 - 1.0000000000000000E+00 - -3.7518309839974698E+01 - -1.7056793628632803E+01 - 3.8723728914492699E+02 - 1.0000000000000000E+00 - -3.7511662721239595E+01 - -1.7055662259139730E+01 - 3.6003407249393337E+02 - 1.0000000000000000E+00 - -3.7505430700539783E+01 - -1.7054600126841702E+01 - 3.3131306781304255E+02 - 1.0000000000000000E+00 - -3.7499568023428509E+01 - -1.7053598783192108E+01 - 3.0104737930432532E+02 - 1.0000000000000000E+00 - -3.7494043408740062E+01 - -1.7052652505756438E+01 - 2.6931019658144555E+02 - 1.0000000000000000E+00 - -3.7488806425030248E+01 - -1.7051751606234877E+01 - 2.3621669182575693E+02 - 1.0000000000000000E+00 - -3.7483804754731899E+01 - -1.7050885758352525E+01 - 2.0201292110498460E+02 - 1.0000000000000000E+00 - -3.7479074428414485E+01 - -1.7050040125544005E+01 - 3.0873100453920540E+02 - 1.0000000000000000E+00 - -3.7449985425450159E+01 - -1.7044367258336244E+01 - 1.4967340211902996E+02 - 1.0000000000000000E+00 - -3.7471892848821867E+01 - -1.7048768201205011E+01 - 2.0161285375128847E+02 - 1.0000000000000000E+00 - -3.7445430138724447E+01 - -1.7043596780445377E+01 - 9.8876653787630019E+01 - 1.0000000000000000E+00 - -3.7465900184878123E+01 - -1.7047709112132402E+01 - 7.7416813827699798E+01 - 1.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 9.5225868179892958E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.0689663785678469E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.0764047301829185E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.1059705317561710E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.1693904462299511E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.2199804278064408E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.2633149918216229E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.3256927119663708E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.3794947449032873E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.4615434716852980E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.5620868601465110E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.6048470344608388E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.6016048029216488E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.5306502553635359E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.4273665468798915E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.3734496776653389E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.3677616336522163E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.3987897884219360E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.4591988752742784E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.5392127768143713E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.6000880891925375E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.6389397393066087E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.6442258915551882E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.5735182613221861E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.4304327185486476E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.3209554912387484E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.2899027821436233E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.3323658404783041E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.4142833558629349E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.5029012952800751E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.5794236811335165E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.6382424848827439E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.6758366288942483E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.7127482335720299E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.7244792598391836E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.7337693290160827E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.7650681645339914E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.7544774439093118E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.7132211683550571E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.6954733468579080E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.6744509626758715E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.6339176621008686E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.5690573704437121E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.4475795065262762E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.3100707379357983E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.1654726465019245E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.0252387492660602E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 9.0485129706500900E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 7.9528113809448009E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 6.9172390308809495E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 5.9877573327805045E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 5.2130127218271960E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 4.5889007435761453E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 4.0832331075361750E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6658626860683918E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.3170218816754216E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.0224445133887462E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.7714372220193273E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.3482979350115165E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.2828031535838230E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.2529349915566682E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.1971148972479123E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.1721368039227999E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.1239033218348585E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.1034516981375413E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.0617388404037617E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.0140054528606244E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.9136609660951892E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.8240334781990072E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.7437885937674896E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.6689977502482575E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.6135801946300113E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.5393032749907037E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.5028010443577305E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.4451074005260248E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.4115636942643661E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.3634817541784791E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.3251581716999233E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.2835922208438114E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.2443916623108520E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.2054997247000533E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.1672031409553971E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.1302877209242097E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.0949120093191496E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.0603140294232710E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.0272221570280055E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 9.9555747515074150E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 9.6477335368246098E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 9.3430293439829601E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 9.0582687950943264E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 8.7805372340170537E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 8.5070888217265411E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 8.2485358207255263E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 7.9886679347634437E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 7.7330928150992823E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 7.4829172824509682E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 7.2428757804512092E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 7.0178396464803977E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 6.7915433869930319E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 6.5689253109242188E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 6.3615298236244733E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 6.1665769534626276E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 5.9813505137558412E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 5.8083272660335292E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 5.6470500735005674E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2780266141310221E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.1937105013470282E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.1139887683503591E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0372530365252664E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.9633862456426887E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8922696804713923E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8237924032493341E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7578505956531726E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.6943389889198021E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.6341391034327124E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.5751676576751636E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.5182442985888614E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.4652503912664305E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.4131960883129069E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3621093882864305E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3136620388764678E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2677063568725827E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2225658175251547E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1796599750557935E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1382749729911928E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0975567818827993E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0595436606180195E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0227897708250787E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.8660944288394628E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.5165282445343891E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.1841144652432607E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.8679350893787062E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.5615604327015621E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.2600020713130246E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.9726168946104584E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.6992075191124110E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.4295175366416472E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.1724672273485779E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.9273791134176171E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.6894153080538837E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.4584213365956267E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.2342739939278823E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.0201048125604881E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.8122685310886837E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.6132654173941948E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.4230735468972752E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.2348548196486933E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.0546698879395301E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.8847124808868124E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.7165514051495890E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.5548671931982282E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.3999070895339817E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.4287288025285609E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.8678368580840027E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.3444056371043662E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.8539346308631843E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.3996821578014451E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.9749801999666202E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.5786894381152807E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.2088739069054535E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.8639255767385002E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.5415451560501682E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.2409700603726452E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.9596856136234156E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.6971743713601214E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.4514390214278497E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.2214335605895685E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.0058312486925597E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.8035378119572667E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.6129251660600056E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.4328866107423498E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2615667426103943E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0969927694381722E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.9363605985364810E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.6073504184832998E-03 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.6948655188556049E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.1414303056395187E-03 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.4920067589932532E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253068634018E+01 - 7.1354144483899462E-11 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082174014E+01 - 1.3056004772844135E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253081986374E+01 - 1.8637363047681272E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253076576962E+01 - 2.0585387053519236E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253076349326E+01 - 2.2331647236015252E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253077611377E+01 - 2.7497839478056806E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253081612294E+01 - 3.8311114065329111E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253077698241E+01 - 5.8348364889704167E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253077672491E+01 - 9.0190308982215955E-10 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253072810333E+01 - 1.4706263975937897E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253069663765E+01 - 2.7171865384918807E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253066723987E+01 - 6.2513938309340624E-09 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253061835488E+01 - 1.4510191479230872E-08 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253069519610E+01 - 2.0242998832181138E-08 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253074188693E+01 - 2.7764343135379651E-08 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253072084144E+01 - 4.5399743688893064E-08 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253074294052E+01 - 7.9342257489080770E-08 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082442635E+01 - 1.4173997251720205E-07 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253075063925E+01 - 2.5757234471945727E-07 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253070461214E+01 - 4.7946723752746804E-07 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253078149983E+01 - 9.0837920217862750E-07 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253069381616E+01 - 1.7620594981869695E-06 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253066425786E+01 - 3.4777541541575726E-06 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253067858525E+01 - 7.0990853723119023E-06 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253065633325E+01 - 1.5012565086258473E-05 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253065733412E+01 - 3.1927394418438937E-05 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253072157301E+01 - 6.6974559551727218E-05 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253076416536E+01 - 1.3675384352998169E-04 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253077411289E+01 - 2.7538390435963224E-04 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253070742341E+01 - 5.5386840500539901E-04 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253079121075E+01 - 1.1182180527647071E-03 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253079652447E+01 - 2.2517847422086367E-03 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253080469408E+01 - 4.5125306169651628E-03 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253076591081E+01 - 9.0108654082234445E-03 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253079612955E+01 - 1.7919354707987837E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253081953447E+01 - 3.5494792250331940E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253076927267E+01 - 6.9973060081139044E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253074517596E+01 - 1.3758077521617953E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253075762865E+01 - 2.6736118403185827E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253076802758E+01 - 5.0986432008014748E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253073031702E+01 - 9.5247681695347064E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253078262924E+01 - 1.7393576197584186E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253068288517E+01 - 3.0871979673417935E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253070528190E+01 - 5.2806721868673989E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253074416692E+01 - 8.6166972088904963E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253068258667E+01 - 1.3301666610524983E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253072610606E+01 - 1.9353605751532058E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253072053526E+01 - 2.6533829770524310E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253078067098E+01 - 3.4427747716956880E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253077411338E+01 - 4.2542155791824385E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253074010908E+01 - 5.0464338586159791E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253072061342E+01 - 5.7974552426848355E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253072468746E+01 - 6.5034301966503278E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253074652429E+01 - 7.1725014263053026E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253070446982E+01 - 7.8094056188022208E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253071616635E+01 - 8.4313758765039353E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253071425137E+01 - 9.0474546706030253E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253070117034E+01 - 9.6593508639267952E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253072720861E+01 - 5.0900080001840635E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253072701698E+01 - 5.1772639615708400E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253072575889E+01 - 5.3962307304618825E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253072496159E+01 - 5.4840634224375812E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253072271237E+01 - 5.7027855690269064E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253072105645E+01 - 5.7915781312820961E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253071810713E+01 - 6.0149907638203693E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253071725241E+01 - 6.1049772658878297E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253068304426E+01 - 1.2747467849224404E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253067678047E+01 - 1.3361877157196730E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253066870501E+01 - 1.3980335794387074E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253066256016E+01 - 1.4600937565682895E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253065510451E+01 - 1.5209250355473500E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253068737011E+01 - 1.5914167649912011E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253068256386E+01 - 1.6308345003536866E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253067548856E+01 - 1.7031360767724141E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253066915279E+01 - 1.7435764543662935E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253066101537E+01 - 1.8082459936236043E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253065385985E+01 - 1.8495351345149714E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253064454158E+01 - 1.9008003699293306E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253063621310E+01 - 1.9426399625671465E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253055962917E+01 - 1.9839520457840996E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253054575646E+01 - 2.0212924965581431E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253053019969E+01 - 2.0541205926326947E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253051398397E+01 - 2.0834327514799730E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253049766849E+01 - 2.1094895399055090E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253047877999E+01 - 2.1307983716655625E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253045942758E+01 - 2.1487931884598262E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253043810668E+01 - 2.1634600893322622E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253041572316E+01 - 2.1736466154391798E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253039085232E+01 - 2.1780103185288226E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253036589990E+01 - 2.1807374703041452E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253033919479E+01 - 2.1794483787041102E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253031177808E+01 - 2.1740259879794576E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253028399081E+01 - 2.1675853473633614E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253025626060E+01 - 2.1560997837813380E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253023079247E+01 - 2.1410078256802032E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253021037602E+01 - 2.1225760726953700E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253019576869E+01 - 2.1021142858169142E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253019332662E+01 - 2.0812330285634786E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253020630270E+01 - 2.0560274756907225E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253024070725E+01 - 2.0279348605764463E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253030402811E+01 - 1.9985598913972325E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253039498057E+01 - 1.9668489105100801E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253051031103E+01 - 1.9330090165317506E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253063577974E+01 - 1.8984034779311523E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253074828388E+01 - 1.8629716272061108E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082098938E+01 - 1.8248893229074105E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253081335886E+01 - 1.7851617172957623E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253081505010E+01 - 1.7452890435382733E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253081651069E+01 - 1.7041966275763195E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253081812589E+01 - 1.6620699812058763E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253081958179E+01 - 1.6190836933115131E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082098803E+01 - 1.5754022093641319E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082165452E+01 - 1.5311869606739518E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082335939E+01 - 1.4865819551217905E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082393081E+01 - 1.4425951179689196E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082481750E+01 - 1.3976142684614987E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082566162E+01 - 1.3525824867920153E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082626132E+01 - 1.3093338597927794E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082696647E+01 - 1.2653925961733852E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082764724E+01 - 1.2209433554201624E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082823926E+01 - 1.1776390822665917E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082856369E+01 - 1.1354979947162774E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082918570E+01 - 1.0931541091011627E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082920958E+01 - 1.0520039105030982E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253082996297E+01 - 1.0115274556676036E+02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083014607E+01 - 9.7107812211972217E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083035014E+01 - 9.3255510600481202E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083081015E+01 - 8.9477058612460539E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083087679E+01 - 8.5721296182547135E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083138625E+01 - 8.2053339463161777E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083137396E+01 - 7.8522537939932150E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083164340E+01 - 7.5125371767719869E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083178451E+01 - 7.1812252445796602E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083236446E+01 - 6.8547576600196550E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083212600E+01 - 6.5414341157162923E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083253037E+01 - 6.2412767531675748E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083238620E+01 - 5.9463221053670608E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083261663E+01 - 5.6640441566698527E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083310456E+01 - 5.3940168909683230E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083301048E+01 - 5.1326616022891507E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083297702E+01 - 4.8800137706329870E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083305503E+01 - 4.6361494008731015E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083327523E+01 - 4.4034523664932181E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083328923E+01 - 4.1792740943899268E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083362041E+01 - 3.9654518757552232E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083361437E+01 - 3.7618546571237957E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083339084E+01 - 3.5637479921922939E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083363931E+01 - 3.3752917955277802E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083382178E+01 - 3.1977359674512133E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083348164E+01 - 3.0254679514073114E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083407743E+01 - 2.8614875201435012E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083368692E+01 - 2.7058694404576791E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083401789E+01 - 4.9725462322793497E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083402848E+01 - 4.4337700123907595E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083399963E+01 - 3.9460829318325175E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083426232E+01 - 3.5046958015507919E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083417208E+01 - 3.1087168594468704E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083424335E+01 - 2.7521775277814598E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083429010E+01 - 2.4320321930758222E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083440983E+01 - 2.1449918043938915E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083437835E+01 - 1.8880410766512629E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083437728E+01 - 1.6580691734035049E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083450383E+01 - 1.4527009683550196E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083443839E+01 - 1.2691451757800968E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083441054E+01 - 1.1053922005227303E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083451463E+01 - 9.5915002837642707E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083453062E+01 - 8.2859136033446337E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083448962E+01 - 7.1195703034876292E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083454966E+01 - 6.0768657128306831E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083455471E+01 - 5.1424480702441047E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083458839E+01 - 4.3033966370022174E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083461468E+01 - 3.5466574200061589E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083458689E+01 - 2.8604190425815470E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083458895E+01 - 2.2331622032487153E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083460402E+01 - 8.9662999653111841E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083460757E+01 - 1.3798382024076412E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083460359E+01 - 4.9227602092489292E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083461759E+01 - 6.1632893007590950E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7792253083462107E+01 - 1.7018086715014016E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.3698777047735585E-11 - 1.6664814430418716E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.7500344777013366E-11 - 1.7790591427442322E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.8450691515180853E-11 - 1.7975708762113381E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3942898912857606E-10 - 1.6920089481069652E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0423416339146683E-10 - 1.5992901532407577E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.0489542851558046E-10 - 1.5560186781608147E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.6069904046106322E-10 - 1.5311634058734281E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.2176198128489214E-10 - 1.5258154214373647E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1265045325108438E-09 - 1.5188853923195843E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8055102179277689E-09 - 1.5176433118218528E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.9815970741113586E-09 - 1.5586386258177910E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.9632535290512152E-09 - 1.6434114396168336E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.0291638739365153E-09 - 1.7346395349800538E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.5849629262543467E-08 - 1.6186238615514942E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.8233436807669320E-08 - 1.4963339940122133E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.1552129696500021E-08 - 1.4300772187144615E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.4264532076184804E-08 - 1.3890895357022135E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7268022020570977E-07 - 1.3615575456808509E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.1811941851091614E-07 - 1.3393139977248515E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.9581778824347223E-07 - 1.3235634464729991E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1334311534084766E-06 - 1.3087882196314913E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2010069235968537E-06 - 1.2995086079472582E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.3371970643558065E-06 - 1.2881534821068378E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.8214309308051143E-06 - 1.2778302919056650E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8479491913432189E-05 - 1.2668229457564747E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.9048578882218815E-05 - 1.2435219305558951E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.2152832165073092E-05 - 1.2173178782596057E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.6950232581409833E-04 - 1.1924405019849621E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.4551599777353357E-04 - 1.1690471182505853E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.0433709784161521E-04 - 1.1473063753220329E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.4401743468555903E-03 - 1.1299088395979654E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.9340086863150136E-03 - 1.1144862913349860E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.9475305724988664E-03 - 1.1006527472576062E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1999960985529811E-02 - 1.0914729735904093E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.4075246887470925E-02 - 1.0867402455296945E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.8038894303283383E-02 - 1.0847472949176138E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.5414253104649058E-02 - 1.0856581021134856E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8860438200495613E-01 - 1.0908436660915616E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.6812889437223856E-01 - 1.0988707286481899E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.0528825881111623E-01 - 1.1101455221473289E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3227786236661048E+00 - 1.1254039194497265E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.4223036057185303E+00 - 1.1455427411790557E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.3069833226066363E+00 - 1.1710083153725702E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.3759224165049115E+00 - 1.2002925786145521E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2054377499889773E+01 - 1.2331766874519428E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8654373612391918E+01 - 1.2697302043222704E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.7229236521003596E+01 - 1.3093453168687995E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.7464940432006195E+01 - 1.3504987767693116E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.8775299225871699E+01 - 1.3910040626643983E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.0450073291924625E+01 - 1.4286685687670170E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.1888550073747737E+01 - 1.4620977883801455E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.2768722040230884E+01 - 1.4904723836588717E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.3025115622415299E+01 - 1.5139391816178561E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0276369697669446E+02 - 1.5333669889051563E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1204673093844752E+02 - 1.5492854270045648E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2111652238339229E+02 - 1.5623882887389769E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3010147114665315E+02 - 1.5734105580634727E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3902036526519274E+02 - 1.6604544017426360E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.3295410385771760E+01 - 1.6629295574753385E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.4579636591089951E+01 - 1.6636027116107449E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.7753049157939699E+01 - 1.6661230178659622E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.9044010524034803E+01 - 1.6667463588718544E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.2214345009339084E+01 - 1.6690029736415951E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.3517041733975759E+01 - 1.6695184081299946E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.6754698071167354E+01 - 1.6715283086379074E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.8073975282084149E+01 - 1.6102224824454357E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8395092922167149E+02 - 1.6156130872304541E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.9288448112930246E+02 - 1.6203075489800909E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0186925896875556E+02 - 1.6245661692433174E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.1088085680388855E+02 - 1.6285487887983681E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.1970725134641873E+02 - 1.6317334762925210E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2992457526397678E+02 - 1.6366846496710043E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3567275717206002E+02 - 1.6389853853765494E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.4612098104899218E+02 - 1.6429276678310281E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.5199635870956172E+02 - 1.6452490502128306E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.6133985396081624E+02 - 1.6485999036207051E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.6732185963313049E+02 - 1.6511547505565360E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.7471447477172114E+02 - 1.6539879133119236E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.8075652033151079E+02 - 1.6565029081668261E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.8669319687981221E+02 - 1.6590239273260657E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.9205905131794447E+02 - 1.6615544638421596E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.9676945435399284E+02 - 1.6640115547702734E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.0097055932137329E+02 - 1.6663927290602757E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.0469087869398402E+02 - 1.6687443580113406E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.0772150305363658E+02 - 1.6710256516322055E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.1027342777549410E+02 - 1.6732431565347071E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.1234411715805487E+02 - 1.6754309847972610E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.1376433968627697E+02 - 1.6776220011470464E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.1433896105177905E+02 - 1.6797179886933677E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.1467076616289359E+02 - 1.6817835013440384E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.1441247101001238E+02 - 1.6838248035176807E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.1354306377389037E+02 - 1.6857811607732664E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.1250751830612825E+02 - 1.6877431128324115E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.1072543142626893E+02 - 1.6896816172345346E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.0841242029821126E+02 - 1.6915932817668853E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.0562009703312111E+02 - 1.6934570550629946E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.0254309139758777E+02 - 1.6952503834931779E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.9941326361574966E+02 - 1.6970490064028333E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.9567353039438262E+02 - 1.6988331709111968E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.9153693612203517E+02 - 1.7005742480813204E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.8722901203369582E+02 - 1.7022918738056493E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.8258490060211147E+02 - 1.7039898042447923E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.7763962651195533E+02 - 1.7056515285027501E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.7259207665791331E+02 - 1.7072801128256827E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.6747445959496525E+02 - 1.7089134342538980E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.6195199159151764E+02 - 1.7105315874907735E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.5622707127099363E+02 - 1.7121029142462117E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.5049057731910818E+02 - 1.7136264571861190E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.4460061333602019E+02 - 1.7151037059173326E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3858472908584304E+02 - 1.7165360029772938E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3246814981043124E+02 - 1.7179246189093035E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2627502491769189E+02 - 1.7192707611535699E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2002823097913225E+02 - 1.7205756774589499E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.1374847876026766E+02 - 1.7218286904969087E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0757997528659678E+02 - 1.7230550757260943E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0129016607174253E+02 - 1.7242449594545189E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.9500944550864767E+02 - 1.7253755676332315E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8900563678464891E+02 - 1.7264834091748650E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8291953608233155E+02 - 1.7275683327258129E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7677562395321195E+02 - 1.7286098920772247E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7081090659803655E+02 - 1.7296099627297938E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.6502609837086572E+02 - 1.7305891832851824E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.5922145129033692E+02 - 1.7315305033177491E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.5359720682764262E+02 - 1.7324426455856241E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.4807545481734320E+02 - 1.7333361693011661E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.4255938309494854E+02 - 1.7341864513963191E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3732491239306555E+02 - 1.7350111937213331E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3219560817991575E+02 - 1.7358190412739525E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2709389810208413E+02 - 1.7366021534446858E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2211316247353710E+02 - 1.7373546204454044E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1732397466635933E+02 - 1.7380778036510328E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1272092353263626E+02 - 1.7387798139641959E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0822854321682621E+02 - 1.7394669064776735E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0379073329627120E+02 - 1.7401278276253866E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.9530080105679630E+01 - 1.7407629550629231E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.5447386697845545E+01 - 1.7413849904826339E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.1420052615205151E+01 - 1.7419833138764446E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.7561364310518172E+01 - 1.7425588772096130E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.3864600997141949E+01 - 1.7431178202644563E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.0273262710190252E+01 - 1.7436605401613569E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.6788153421657469E+01 - 1.7441873116276565E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.3409961649139106E+01 - 1.7446944902348193E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.0176477419741289E+01 - 1.7451866709397034E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.7045960842518141E+01 - 1.7456610394732081E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.4047635565727504E+01 - 1.7461178103788306E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.1180769088485341E+01 - 1.7465654669733997E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.8369306957431526E+01 - 1.7469968227089765E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.5681492695759047E+01 - 1.7474093456171389E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.3139709264967280E+01 - 1.7478134686655938E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.0652062633197808E+01 - 1.7482037159883898E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.8269182162363101E+01 - 1.7485797716952124E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.5993396458177571E+01 - 1.7440074994332527E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.5489549813561098E+01 - 1.7449454723843992E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.7433311828518541E+01 - 1.7459106034340127E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.0022927640692942E+01 - 1.7468156845472400E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.3198945248041547E+01 - 1.7476581906276508E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.6971020142648136E+01 - 1.7484470788837278E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.1258304502089381E+01 - 1.7491848927222296E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.6031315525436177E+01 - 1.7498749738737118E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.1253604291599828E+01 - 1.7505202633358749E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.6891978587519930E+01 - 1.7511244481415172E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.2909172409156696E+01 - 1.7516894252817536E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.9280145062172391E+01 - 1.7522190462482207E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.5968710996373233E+01 - 1.7527148854412676E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2953501943815610E+01 - 1.7531801678118381E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0204640149052608E+01 - 1.7536170674427396E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7699514021509192E+01 - 1.7540281017619712E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.5414957243031724E+01 - 1.7544156239540310E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3330135365303297E+01 - 1.7547827202375359E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1422928618333385E+01 - 1.7551321990123768E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.6748535882480873E+00 - 1.7554681753505950E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.0655726260854745E+00 - 1.7557958473819497E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.5760659642544068E+00 - 1.7561231774647727E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.1866496955346220E+00 - 1.7572954263883112E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0982902936831334E+00 - 1.7566661180219800E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.2491905103485057E+00 - 1.7576222702229959E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1668931452473918E+00 - 1.7573095234159972E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.4678226148238962E+00 - 1.7579522141517320E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.0757621386768222E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.5495399776504104E+01 - 1.1549646910087070E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.6902710793911957E+01 - 1.1325611152288014E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.7564564903132307E+01 - 1.1349559593366758E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.7877360778530388E+01 - 1.1281674404467239E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.8209419100209686E+01 - 1.1256516200612772E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.8480067248091551E+01 - 1.1335479117681732E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.8463473578613524E+01 - 1.1262635283741199E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.8519057506575486E+01 - 1.1302365283303436E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.8413944451017095E+01 - 1.1459934296529504E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.8261016475932486E+01 - 1.1655106220193234E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.8447145003564820E+01 - 1.2084219677953129E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.8034005503846572E+01 - 1.1489999992297696E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.6965211764382591E+01 - 9.5731674659226478E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.5967086103229327E+01 - 8.0227595093409896E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.5195974848455265E+01 - 7.6262060409521215E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.4734242677681419E+01 - 7.8386603978107985E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.4515112881191570E+01 - 8.0428424761059247E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.4436562067732044E+01 - 8.2269507920945362E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.4341746233949614E+01 - 8.3342411823522351E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.4241778506680593E+01 - 8.2943137748524762E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.4046892001614310E+01 - 8.0602110925155461E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.3864115113365930E+01 - 8.2997731883648580E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.3550267816955305E+01 - 8.4542087923312490E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.3109257361142941E+01 - 7.8277915677229473E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.2534728373864137E+01 - 6.7241411344060493E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.1879150176220840E+01 - 5.9275042070070372E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.1497291640053511E+01 - 5.7487543071069389E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.1394213155394755E+01 - 5.8192938272729569E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.1386503287463334E+01 - 5.6603116386327281E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.1379322046012444E+01 - 5.2298485199691651E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.1411962335376376E+01 - 4.7697773199795535E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.1462049785001458E+01 - 4.4657882171565113E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.1529767372033252E+01 - 4.4329489333204890E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.1662889754479053E+01 - 4.6530063253399403E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.1835886073704174E+01 - 4.9311739415564606E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.2009637951757103E+01 - 5.4265143297958112E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.2197977516256127E+01 - 5.7192276005569012E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.2421595521286427E+01 - 5.7586934747645380E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.2677301036152727E+01 - 6.1242070152066939E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.2995071471439839E+01 - 6.6220233906558441E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.3381712153213574E+01 - 7.0981002607963797E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.3848217805791062E+01 - 7.5651649457185721E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.4406205850378456E+01 - 7.8614533387481762E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.5034590252147343E+01 - 8.0647828016847036E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.5756647914688937E+01 - 8.5509312499161805E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.6588937124727451E+01 - 9.1294643696921778E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.7514720172222727E+01 - 1.0001059161566401E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.8490380040020248E+01 - 1.0886670179426646E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.9453079538530059E+01 - 1.1656891928864539E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.0348135576481916E+01 - 1.2328734125200192E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.1144291827800849E+01 - 1.2914029833845415E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.1830993009983160E+01 - 1.3408078790409700E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.2411409735407894E+01 - 1.3816677946218631E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.2901524618064101E+01 - 1.4155914528945122E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.3311105085897829E+01 - 1.4429818272469252E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.3654636563953943E+01 - 1.4646002704943415E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.3945828849702650E+01 - 1.4821117171328265E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.5870906928807031E+01 - 1.6005940559610035E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.5953677896168003E+01 - 1.6051772500332273E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.5987578046725964E+01 - 1.6069882522017302E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6055404910875332E+01 - 1.6109969301216708E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6084875368943791E+01 - 1.6125760464311355E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6144857704179472E+01 - 1.6161099629144221E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6169524618554846E+01 - 1.6174398122072699E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6222839512956121E+01 - 1.6205912883347285E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.4906279343759948E+01 - 1.5395131905718664E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.5036967604040733E+01 - 1.5474504387407201E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.5156847757080975E+01 - 1.5545903776790448E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.5266015330951582E+01 - 1.5610367631153439E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.5367317217526860E+01 - 1.5670530365993175E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.5450246427012068E+01 - 1.5720673086408496E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.5569832014814210E+01 - 1.5790309388470666E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.5634089392394628E+01 - 1.5828450680330924E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.5726174310252297E+01 - 1.5883495026430994E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.5787140912268207E+01 - 1.5915902451944024E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.5864746978469441E+01 - 1.5957470375800698E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.5928433145364288E+01 - 1.5987985385731870E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.5993137988483021E+01 - 1.6019772504050096E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6052854805411094E+01 - 1.6048322325737239E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6109112305538623E+01 - 1.6076636047083575E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6166267031537039E+01 - 1.6104859742969673E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6220655814930971E+01 - 1.6132293043593226E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6272440621881579E+01 - 1.6158736800048775E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6322892144189616E+01 - 1.6184407206082909E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6370882616414242E+01 - 1.6208501733536576E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6416482924179306E+01 - 1.6231219628436772E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6460431037904016E+01 - 1.6253148741393684E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6503704721752491E+01 - 1.6274858104349697E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6544182406324630E+01 - 1.6294937927945274E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6583138773840169E+01 - 1.6314132172712888E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6620686712087114E+01 - 1.6332376487682286E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6655456083672860E+01 - 1.6348802767353614E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6689537281945185E+01 - 1.6364870802245530E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6722430518784769E+01 - 1.6380231117862962E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6754062411307657E+01 - 1.6394909040522698E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6783863081816584E+01 - 1.6408640590735292E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6811428989782478E+01 - 1.6421270805793228E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6838332198137593E+01 - 1.6434263185796048E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6864151418403431E+01 - 1.6447464719102904E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6888335979725767E+01 - 1.6460324830766471E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6911387809947080E+01 - 1.6472848527083126E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6933422971412114E+01 - 1.6485027307941994E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6954073111804675E+01 - 1.6496642646739012E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6973345715080072E+01 - 1.6507749817816777E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.6992029342164784E+01 - 1.6518983151408364E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7009753322702565E+01 - 1.6929901278478916E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7026172681613659E+01 - 1.6933792428903324E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7041860358017949E+01 - 1.6937544789575856E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7056847532067827E+01 - 1.6941164592178442E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7071175431047173E+01 - 1.6944657857536139E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7084887223479768E+01 - 1.6948030008113747E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7098024644188342E+01 - 1.6951285942934579E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7110627482271752E+01 - 1.6954430496449458E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7122473663972769E+01 - 1.6957418762149885E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7134105953312691E+01 - 1.6960300804383401E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7145306619497177E+01 - 1.6963086295928029E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7155578655596109E+01 - 1.6965722826952103E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7165682158008657E+01 - 1.6968313338969701E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7175592557837220E+01 - 1.6970856662685200E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7184909905606737E+01 - 1.6973268937243823E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7193670286841169E+01 - 1.6975557760383289E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7202298663818361E+01 - 1.6977807634455718E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7210420288403022E+01 - 1.6979947143258517E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7218217484477606E+01 - 1.6982012262181684E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7225909165342635E+01 - 1.6984046007655500E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7232966772190480E+01 - 1.6985945657763409E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7239765160470597E+01 - 1.6987784002989759E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7246480912920191E+01 - 1.6989595538552070E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7252947097703931E+01 - 1.6991347423419008E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7259038166705650E+01 - 1.6993014780032205E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7264778056434722E+01 - 1.6994602126488932E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7270332380846604E+01 - 1.6996141785764138E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7275829738498572E+01 - 1.6997658823949088E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7281028738383696E+01 - 1.6999105926327154E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7285934432394868E+01 - 1.7000483978511223E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7290810090497956E+01 - 1.7001844639528915E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7295424226327910E+01 - 1.7003142777141115E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7299793483961011E+01 - 1.7004381710229868E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7304040397602975E+01 - 1.7005585767269384E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7308166913625961E+01 - 1.7006755634829339E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7312174640501325E+01 - 1.7007891845637054E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7315981116614985E+01 - 1.7008978499652745E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7319678139683027E+01 - 1.7010033926863048E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7323198919242685E+01 - 1.7011045421963669E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7326541848573868E+01 - 1.7012013028461769E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7329880389054232E+01 - 1.7012971213886068E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7333056587816841E+01 - 1.7013889300350776E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7336012444099552E+01 - 1.7014756160236065E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7338962121278733E+01 - 1.7015614317690996E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7341783263448747E+01 - 1.7016440078431508E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7344471105816339E+01 - 1.7017231692609187E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7241658088280410E+01 - 1.6997287678658889E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7254367170046386E+01 - 1.7000137815308349E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7265571705303095E+01 - 1.7002798044140775E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7276067640038988E+01 - 1.7005292977415309E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7285769666292005E+01 - 1.7007607150078833E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7294837539552489E+01 - 1.7009773267030670E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7303294960402269E+01 - 1.7011797230380886E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7311186396707811E+01 - 1.7013688852012695E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7318548701971928E+01 - 1.7015456417563740E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7325435924851504E+01 - 1.7017111561378517E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7331865507809013E+01 - 1.7018658654081939E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7337897762166143E+01 - 1.7020110481611731E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7343545793076309E+01 - 1.7021470484322457E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7348859260725092E+01 - 1.7022749264118278E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7353866490979328E+01 - 1.7023953185401574E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7358604662786732E+01 - 1.7025090300899997E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7363108662602023E+01 - 1.7026168168081334E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7367430361483514E+01 - 1.7027197642473709E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7371617379283158E+01 - 1.7028188671060335E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7375747096146583E+01 - 1.7029156989407145E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7379922287889578E+01 - 1.7030123240184405E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7384308007634985E+01 - 1.7031120198733504E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7406897560914373E+01 - 1.7035700596153227E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7391784505530723E+01 - 1.7032803882898818E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7410750100896522E+01 - 1.7036619509259406E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7402635606986507E+01 - 1.7035088813114530E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7415293259133037E+01 - 1.7037640412473426E+01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.3647108412953357E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.4588594777049377E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.5075572936665371E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.5961326502203781E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.6655196877092135E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.7190812158049007E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.8209638809838860E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.8882846716225363E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.9958765301642512E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.1246143308302954E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.1556134432309424E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.3173722113614983E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.5200561900548326E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.5323308496991874E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.4051103316167137E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.3140153068062603E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.2975586623607018E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.3417053203586371E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.4525848516936395E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.5922004310362170E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.7187553694460296E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.7908514153208048E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.8315750648937024E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.7438633409824780E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.5453121578038580E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.4183866665961462E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.3805529695050360E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.4508802350851799E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.5952466398048215E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.7563484511401541E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.8857166697145447E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.9819088443632999E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.0356259188206574E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.0725457392982594E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.0585597979304802E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.0408861862552605E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.0544146966347863E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.9856640223434678E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.8619901830789098E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.7691469322336948E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.6634544738199786E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.5197385759290452E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.3347821719769519E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.0748212254061049E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.8024399385755698E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.5335143035244561E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.2876667392265038E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.0856846080316713E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 9.1566849070404843E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 7.6975251149946688E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 6.4912053890762578E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 5.5468373269421534E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 4.8219154648014179E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 4.2517703586466005E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.7969614951196878E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.4238861605409715E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 3.1112136043048966E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.4227847373505526E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.3487859768462035E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.3151778401117931E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.2533292431726034E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.2254664391266873E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.1724455958629384E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.1497821685398105E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.1037390246543451E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.1696321511648925E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 2.0530058207851923E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.9488965515243892E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.8556089567414499E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.7706103874793427E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.7023581777928573E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.6141425313625946E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.5694734634293608E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.5032094950378214E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.4646474990782293E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.4119003989138329E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.3705895086796588E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.3253584332122734E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.2834260065212713E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.2415571985623891E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.2001340968787534E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.1601924239719828E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.1219517551355494E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.0846307809602725E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.0489928410858593E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 1.0149507753058525E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 9.8192773512305945E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 9.4932753593531469E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 9.1893492475363256E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 8.8953308697728606E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 8.6083735700104594E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 8.3382378122134740E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 8.0677208223994906E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 7.8021104085333193E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 7.5422486345062087E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 7.2927243012730208E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 7.0585209266671833E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 6.8259184224949726E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 6.5964789292542486E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 6.3767499649570472E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 6.1690052091140771E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 5.9735130600434477E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 5.7914412437296323E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 5.6215004994834422E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 5.4563444756662388E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2004462342724998E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.1187848415515856E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0403037635727986E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.9648691711663402E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8923469577918192E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8226121074784815E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.7555479160283399E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.6910374584358226E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.6299466718640071E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.5701999512166009E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.5125957591829550E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.4589831020617974E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.4063946379729661E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3548544913698751E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3060101410791902E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2597059097942268E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.2142799455548407E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1711278600882347E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.1295394888561745E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0886701919947112E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0505206255596899E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.0136628635207269E-01 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.7742060361290684E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.4242964327907144E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -9.0916802745258055E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.7754111000691665E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.4691559052536947E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.1680145755023359E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.8811157387335309E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.6082305658408955E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.3393204169335008E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.0830738514153849E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.8388007257285541E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.6017632477815100E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.3717961340807511E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.1487653432278709E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.9356998559334143E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.7290380547107084E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.5311942029632015E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.3421282669446082E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.1551934726708715E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.9762601949585761E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.8074357897883696E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.6405405084375032E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.4800999575976393E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.3264290169791685E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.1415193039576256E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.5900520297850049E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.0756896939262223E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.5940841949717763E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.1480086402888358E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.7310592616871409E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -5.3419751858139033E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.9787681026824127E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.6397572080127632E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.3226388901517275E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.0265052861224511E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.7488582087581331E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.4889872085426314E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.2448282362676821E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -3.0151304386716496E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.7983285190770580E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.5929569619196197E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.3969292178967819E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.2083360534867737E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -2.0241741301715532E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.8405137691662445E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.6511288623021106E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -7.8239799937489460E-03 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -1.3315094334465394E-02 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -6.0804076822583326E-03 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -8.9764767860909533E-03 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - -4.1392790412619262E-03 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 - 0.0000000000000000E+00 diff --git a/mtx/test/make/makefile_base b/mtx/test/make/makefile_base index 3352bedd7..98e466243 100644 --- a/mtx/test/make/makefile_base +++ b/mtx/test/make/makefile_base @@ -9,8 +9,8 @@ MESA_DIR = ../../.. include $(MESA_DIR)/utils/makefile_header SRCS = \ - test_mtx_support.f test_block_tri_dble.f test_block_tri_quad.f \ - test_square.f test_square_quad.f test_mtx.f + test_mtx_support.f90 test_block_tri_dble.f90 test_block_tri_quad.f90 \ + test_square.f90 test_square_quad.f90 test_mtx.f90 ################################################################# # @@ -34,7 +34,7 @@ LOAD_OTHER = -L$(MESA_LIB_DIR) $(addprefix -l,$(LIBS_OTHER)) $(LOAD_LAPACK) $(LO TEST = $(TEST_DIR)/tester -OBJS = $(patsubst %.f,%.o,$(patsubst %.f90,%.o,$(SRCS))) +OBJS = $(patsubst %.f90,%.o,$(patsubst %.c,%.o,$(SRCS))) all : $(TEST) @@ -47,7 +47,7 @@ else endif clean: - -@rm -f *.o *.mod .depend $(TEST) test_block_tri_dble.f test_block_tri_quad.f + -@rm -f *.o *.mod .depend $(TEST) test_block_tri_dble.f90 test_block_tri_quad.f90 nodeps : $(.DEFAULT_GOAL) @@ -57,7 +57,7 @@ nodeps : $(.DEFAULT_GOAL) PREPROCESS = $(FC) $(FCfree) $(FC_free_preprocess) -E -test_block_tri_dble.f: test_block_tridiagonal.f +test_block_tri_dble.f90: test_block_tridiagonal.f90 ifneq ($(QUIET),) @echo PREPROCESS $< @$(PREPROCESS) -E -DDBLE $< > $@ @@ -65,7 +65,7 @@ else $(PREPROCESS) -E -DDBLE $< > $@ endif -test_block_tri_quad.f: test_block_tridiagonal.f +test_block_tri_quad.f90: test_block_tridiagonal.f90 ifneq ($(QUIET),) @echo PREPROCESS $< @$(PREPROCESS) -E $< > $@ @@ -73,7 +73,7 @@ else $(PREPROCESS) -E $< > $@ endif -%.o: %.f +%.o: %.f90 ifneq ($(QUIET),) @echo TEST_COMPILE $< @$(TEST_COMPILE) $(FCfree) $< @@ -87,7 +87,7 @@ endif SRC_PATH = $(TEST_SRC_DIR) -vpath %.f $(SRC_PATH) +vpath %.f90 $(SRC_PATH) vpath %.mod $(LOCAL_LIB_DIR):$(MESA_DIR)/include diff --git a/mtx/test/sparse_data/E05R0100 b/mtx/test/sparse_data/E05R0100 deleted file mode 100755 index 5f5295844..000000000 --- a/mtx/test/sparse_data/E05R0100 +++ /dev/null @@ -1,2423 +0,0 @@ -Driven Cavity 5 x 5 Re = 100. E05R0100 - 2418 15 293 1952 158 -RUA 236 236 5856 1 -(16I5) (20I4) (3D23.15) (3D23.15) -FNX 1 0 - 1 11 21 42 63 84 105 148 191 199 207 222 237 263 289 319 - 349 401 453 465 477 489 504 519 545 571 601 631 683 735 747 759 - 771 786 801 823 845 875 905 949 993 1005 1017 1029 1040 1051 1073 1095 - 1103 1111 1119 1134 1149 1179 1209 1235 1261 1313 1365 1377 1389 1401 1422 1443 - 1479 1515 1551 1587 1649 1711 1729 1747 1765 1786 1807 1843 1879 1915 1951 2013 - 2075 2093 2111 2129 2150 2171 2201 2231 2267 2303 2355 2407 2425 2443 2461 2476 - 2491 2517 2543 2555 2567 2579 2594 2609 2639 2669 2695 2721 2773 2825 2837 2849 - 2861 2882 2903 2939 2975 3011 3047 3109 3171 3189 3207 3225 3246 3267 3303 3339 - 3375 3411 3473 3535 3553 3571 3589 3610 3631 3661 3691 3727 3763 3815 3867 3885 - 3903 3921 3936 3951 3977 4003 4015 4027 4039 4054 4069 4099 4129 4151 4173 4217 - 4261 4273 4285 4297 4318 4339 4375 4411 4441 4471 4523 4575 4593 4611 4629 4650 - 4671 4707 4743 4773 4803 4855 4907 4925 4943 4961 4982 5003 5033 5063 5093 5123 - 5167 5211 5229 5247 5265 5280 5295 5317 5339 5351 5363 5375 5386 5397 5419 5441 - 5449 5457 5465 5480 5495 5521 5547 5559 5571 5583 5598 5613 5639 5665 5677 5689 - 5701 5716 5731 5753 5775 5787 5799 5811 5822 5833 5841 5849 5857 - 7 5 3 1 8 6 4 2 9 10 1 7 5 3 8 6 4 2 9 10 - 1 7 5 2 8 3 6 4 9 10 17 15 13 11 18 16 14 12 19 20 - 21 1 2 7 5 3 8 6 4 9 10 17 15 13 11 18 16 14 12 19 - 20 21 1 7 2 3 5 8 6 4 9 10 57 55 53 51 58 56 54 52 - 59 60 61 1 2 7 5 3 8 4 6 9 10 57 55 53 51 58 56 54 - 52 59 60 61 1 2 5 7 3 8 6 4 9 10 13 17 15 18 11 72 - 16 14 12 19 20 21 57 53 55 58 51 71 56 54 52 59 60 61 68 66 - 64 62 69 67 65 63 70 1 2 7 5 3 4 6 8 72 9 10 15 17 - 18 13 11 16 71 14 12 19 20 21 55 53 51 56 57 54 52 59 60 61 - 58 70 63 62 66 64 68 69 67 65 1 2 3 7 5 4 8 6 1 2 - 3 7 5 4 8 6 3 4 7 8 15 17 18 13 16 14 11 12 19 20 - 21 3 4 7 8 15 17 18 16 13 11 14 12 19 20 21 3 4 7 8 - 15 17 16 18 11 13 27 14 12 19 20 21 26 28 25 24 22 23 30 31 - 32 29 3 4 7 8 15 17 18 16 13 26 11 12 14 19 20 21 28 24 - 22 27 29 25 23 30 31 32 3 4 7 8 72 17 71 70 15 13 11 18 - 16 14 12 19 20 21 63 53 57 54 58 62 66 64 68 67 65 69 3 4 - 7 8 72 15 17 13 18 11 63 14 16 12 19 20 21 53 71 57 58 54 - 70 62 66 64 68 65 69 67 3 4 7 8 72 15 16 71 53 63 70 17 - 13 11 14 18 54 12 19 20 21 57 83 26 24 22 82 27 25 23 30 31 - 32 28 29 58 62 68 66 81 64 74 67 78 65 69 76 73 77 80 75 79 - 3 8 4 7 72 17 71 15 13 70 63 83 53 11 16 18 14 12 19 20 - 21 57 54 26 24 22 82 62 27 25 23 30 31 58 32 28 81 66 64 29 - 68 74 76 78 65 69 73 67 80 77 75 79 3 4 7 8 15 17 18 16 - 13 11 12 14 3 4 7 8 15 17 18 16 13 11 12 14 3 4 7 8 - 15 17 18 16 13 11 12 14 17 18 13 14 26 28 27 24 25 23 22 30 - 29 31 32 17 18 13 14 26 28 27 24 22 29 25 23 30 31 32 17 18 - 13 26 14 27 28 22 25 24 23 29 30 35 31 32 33 37 36 34 41 38 - 42 43 39 40 17 18 13 14 26 28 29 27 24 22 23 25 30 31 32 37 - 39 35 33 38 40 36 34 41 42 43 17 18 83 13 82 14 64 28 26 81 - 24 27 22 74 25 23 29 30 31 32 68 78 65 73 76 69 80 77 75 79 - 17 18 13 83 14 64 26 82 28 81 29 24 27 22 25 23 30 68 31 74 - 32 76 78 65 77 73 69 80 75 79 17 83 18 14 13 82 26 24 81 27 - 64 74 22 25 28 23 30 29 31 32 68 78 65 73 76 37 35 80 33 94 - 93 36 34 41 42 43 77 69 38 75 39 40 92 79 85 84 87 89 88 86 - 91 90 17 18 13 83 14 82 26 64 24 28 22 81 27 74 31 25 23 30 - 29 68 32 65 78 73 76 35 69 33 80 77 75 36 34 41 42 43 94 39 - 37 38 93 40 92 85 79 89 84 87 88 91 86 90 17 18 13 14 26 28 - 27 24 22 29 23 25 17 18 13 14 26 27 28 29 24 22 23 25 17 18 - 13 14 26 27 28 29 24 22 23 25 28 29 24 25 37 38 39 35 36 34 - 33 41 40 42 43 28 29 24 25 37 39 38 35 33 40 36 34 41 42 43 - 29 28 24 25 37 38 39 36 33 35 34 40 41 42 43 44 46 45 47 48 - 49 50 28 29 24 25 37 39 40 38 35 33 34 36 41 42 43 46 44 47 - 45 48 49 50 28 29 76 24 75 25 80 94 38 93 37 35 33 39 92 36 - 85 34 40 41 42 43 79 84 89 87 88 86 91 90 28 76 29 24 80 25 - 75 94 93 37 39 40 85 35 38 33 36 34 41 42 92 79 43 89 84 87 - 88 86 91 90 28 29 24 76 75 25 94 37 80 38 35 93 33 92 85 36 - 39 34 40 41 42 43 79 84 89 87 88 46 44 45 47 48 49 50 91 86 - 90 101 95 100 96 99 98 97 28 29 24 76 75 25 80 94 37 93 35 33 - 39 92 38 85 42 36 34 41 40 43 79 89 87 84 44 88 45 48 49 50 - 46 86 47 91 90 100 101 95 96 99 97 98 28 29 24 25 37 39 38 35 - 33 40 34 36 28 29 24 25 37 38 39 40 33 35 34 36 28 29 24 25 - 37 38 39 33 35 40 34 36 39 40 35 36 46 47 44 45 48 49 50 35 - 39 40 36 46 47 44 45 48 49 50 39 40 35 87 36 86 91 101 47 46 - 44 96 45 48 49 50 100 99 95 90 97 98 39 40 35 87 36 86 91 46 - 95 96 44 47 45 48 49 50 100 101 99 90 98 97 39 35 36 40 46 47 - 44 45 39 35 36 40 46 47 44 45 39 35 36 40 46 47 44 45 5 7 - 6 8 53 57 54 55 58 56 51 52 59 60 61 5 7 6 8 53 57 54 - 55 58 56 51 52 59 60 61 5 7 6 8 72 15 17 18 16 71 57 70 - 55 53 51 56 54 58 52 59 60 61 63 62 66 64 65 67 68 69 5 7 - 6 8 15 17 72 16 18 57 53 71 55 51 63 58 56 54 52 59 60 61 - 70 62 66 64 68 65 67 69 5 7 8 6 53 57 54 51 55 58 56 52 - 59 60 61 112 111 110 104 103 102 105 106 108 109 107 5 7 6 8 53 57 - 55 54 58 51 110 104 56 52 59 60 61 111 112 105 103 102 106 108 109 107 - 5 8 7 6 123 72 15 17 16 18 70 71 53 51 55 57 56 54 58 122 - 63 52 59 60 61 62 66 64 68 65 67 121 114 116 112 104 102 113 111 105 - 103 110 69 106 108 115 107 109 117 118 119 120 8 5 7 6 123 72 15 17 - 16 53 57 71 18 55 51 70 54 63 56 58 122 52 59 60 61 62 66 64 - 65 67 68 121 112 69 104 114 102 113 111 110 105 103 116 106 115 108 107 109 - 117 118 119 120 5 7 6 8 53 57 54 58 55 56 51 52 5 7 6 8 - 53 57 54 58 55 56 51 52 5 7 6 8 53 57 54 58 55 56 51 52 - 7 8 16 17 15 53 54 18 57 58 70 63 71 72 64 66 62 67 68 65 - 69 7 17 8 18 57 58 66 64 15 68 67 65 16 69 53 54 62 63 70 - 71 72 7 8 15 17 16 53 18 54 57 71 58 63 72 83 70 26 82 62 - 27 81 74 28 66 64 76 67 29 73 65 68 77 69 78 75 80 79 7 8 - 17 15 16 18 83 53 26 54 82 27 81 74 62 28 57 64 58 63 70 73 - 66 76 71 67 68 65 29 77 72 69 78 80 75 79 7 8 15 17 16 53 - 72 57 18 54 70 63 58 71 62 64 123 122 66 67 65 104 105 68 69 113 - 121 116 114 115 108 117 109 119 118 120 7 8 17 15 16 53 18 54 62 57 - 64 58 123 63 70 66 71 122 72 65 68 105 67 104 69 113 121 114 116 115 - 117 109 108 119 118 120 7 8 15 16 17 72 53 18 57 54 71 58 70 83 - 63 62 66 82 26 81 64 123 27 134 74 28 122 29 76 73 65 67 78 104 - 113 105 133 77 68 121 132 69 125 75 114 124 80 116 115 108 109 117 118 127 - 119 129 126 120 128 79 131 130 7 8 15 17 16 53 18 83 54 57 58 82 - 26 27 62 81 64 74 28 63 123 70 71 76 66 122 29 73 134 65 72 104 - 67 77 68 78 105 133 132 121 125 113 69 124 114 115 116 75 109 108 117 80 - 127 119 118 129 126 120 128 131 79 130 7 17 18 57 58 8 66 64 68 67 - 65 15 16 69 53 54 62 63 7 17 57 58 18 8 66 64 68 67 65 15 - 69 16 53 54 62 63 7 17 18 57 58 66 64 67 65 68 8 69 15 16 - 53 54 62 63 17 18 26 68 78 27 69 77 64 82 65 28 81 74 29 83 - 73 80 76 75 79 28 29 68 78 17 76 18 69 77 80 75 26 27 64 79 - 65 73 74 81 82 83 17 18 26 68 27 78 74 77 69 81 64 65 28 82 - 73 29 83 76 80 37 94 93 38 85 92 39 75 84 40 89 87 88 79 86 - 91 90 28 29 68 78 17 94 18 37 69 76 77 93 38 39 80 26 40 27 - 92 75 85 64 79 73 65 84 74 87 88 86 81 89 91 82 90 83 17 18 - 134 26 27 82 133 83 68 78 74 28 132 81 69 64 116 125 77 65 73 115 - 29 124 76 80 127 119 75 129 120 79 126 131 128 130 134 28 29 133 132 68 - 17 18 125 76 78 26 124 69 77 116 27 80 75 115 64 73 65 74 127 129 - 79 81 119 120 131 82 128 126 130 83 17 18 26 27 83 81 82 74 28 64 - 65 76 73 29 68 77 78 69 134 133 132 124 116 94 115 125 93 37 85 75 - 80 38 92 39 40 87 84 86 89 127 145 119 129 88 126 120 128 144 143 135 - 136 79 131 91 138 140 139 90 130 137 142 141 28 17 29 134 68 18 133 78 - 132 76 26 125 37 94 77 27 93 69 39 40 38 80 75 116 64 115 124 92 - 65 73 145 85 74 127 84 79 144 120 143 81 89 86 119 88 87 129 82 131 - 136 91 90 126 128 83 130 135 138 140 137 142 139 141 28 29 68 78 76 69 - 17 77 80 18 75 26 27 79 73 64 65 74 28 29 68 69 78 76 77 75 - 80 17 18 79 26 27 65 64 73 74 28 29 68 69 78 76 80 77 79 75 - 17 18 26 27 73 64 65 74 80 76 28 29 79 38 37 93 92 89 85 88 - 75 94 39 87 84 91 40 86 90 80 39 40 28 79 89 76 87 29 88 86 - 91 37 38 90 75 84 85 92 93 94 80 28 29 76 37 38 79 93 85 92 - 75 89 88 39 84 94 87 40 91 46 47 96 90 99 86 100 95 97 98 101 - 80 39 79 40 28 76 89 29 88 101 46 87 47 100 37 86 38 91 99 96 - 90 75 95 84 85 92 97 98 93 94 28 80 127 76 29 145 37 144 38 93 - 92 94 75 131 85 79 89 39 84 126 40 143 88 87 135 136 86 91 140 138 - 130 90 137 139 142 141 80 127 145 39 28 40 76 144 79 131 29 126 143 87 - 89 88 37 38 136 86 91 135 75 84 90 85 130 92 140 138 93 94 139 137 - 142 141 28 76 80 29 127 37 94 38 92 93 145 75 85 39 89 79 131 84 - 40 88 126 144 87 143 135 136 46 47 91 86 130 95 99 100 96 140 101 138 - 98 97 90 137 139 142 147 146 150 141 151 152 148 149 80 39 28 127 76 29 - 145 40 79 131 37 144 89 46 143 126 87 47 38 88 101 86 75 100 92 91 - 93 85 90 135 84 136 130 94 95 96 99 138 98 97 140 137 152 139 142 151 - 146 150 147 141 148 149 80 39 40 87 79 89 28 29 88 91 86 76 37 90 - 38 75 84 85 39 40 80 79 89 86 87 88 28 91 29 90 76 37 38 75 - 84 85 39 80 40 79 87 86 89 88 91 90 28 29 37 38 76 84 75 85 - 91 39 87 40 46 90 47 86 97 96 98 95 99 100 101 91 39 90 87 40 - 46 47 97 98 86 95 96 99 100 101 91 87 39 40 46 47 90 86 138 95 - 96 99 100 98 101 97 137 142 147 146 150 151 152 141 148 149 91 39 87 40 - 90 46 47 138 86 97 137 95 99 98 96 100 101 152 142 146 151 147 150 141 - 148 149 91 90 39 87 40 46 97 98 47 86 95 96 91 90 97 39 98 40 - 87 46 47 86 95 96 91 90 97 98 39 40 46 47 87 86 95 96 57 58 - 55 56 108 106 104 107 109 105 102 110 103 111 112 57 58 106 108 107 109 55 - 104 56 102 105 103 110 111 112 57 58 55 123 56 122 66 106 108 67 105 68 - 103 104 102 107 109 110 113 111 112 117 69 114 118 121 115 116 119 120 57 58 - 123 55 108 56 106 66 107 109 122 104 67 68 102 117 110 105 103 111 113 112 - 69 118 119 120 116 114 121 115 57 58 55 56 112 111 110 108 102 103 105 104 - 106 107 109 163 162 161 155 153 154 156 157 158 160 159 57 58 55 108 56 106 - 109 102 107 104 103 105 110 111 112 163 162 155 153 161 154 156 159 157 158 160 - 57 58 55 56 123 122 66 112 67 111 68 110 103 105 102 106 104 107 109 108 - 69 113 117 114 121 115 118 116 119 164 120 174 173 172 162 163 153 165 161 155 - 154 156 167 166 168 158 160 157 159 170 169 171 57 55 58 123 56 66 122 67 - 107 106 108 104 105 68 102 109 110 103 113 111 117 112 69 114 118 121 119 116 - 120 164 115 174 173 172 155 153 165 163 162 161 154 156 166 157 158 159 167 168 - 160 169 170 171 57 107 106 58 108 109 55 104 105 56 102 103 106 57 107 58 - 109 108 105 104 55 56 102 103 106 107 57 108 58 109 55 104 105 56 102 103 - 108 109 117 57 118 58 120 66 119 104 68 105 67 69 122 115 113 116 114 121 - 123 68 69 116 115 57 109 108 58 117 104 66 105 118 119 67 113 120 114 121 - 122 123 108 109 57 117 58 77 78 118 134 104 66 119 120 105 68 67 113 129 - 133 69 121 122 132 114 116 123 115 131 124 125 80 128 127 130 126 79 134 133 - 78 68 77 132 69 125 124 80 57 115 116 58 108 109 117 104 105 127 66 67 - 113 119 118 129 79 121 126 128 122 114 131 120 123 130 57 108 109 58 66 67 - 118 117 119 105 104 120 174 113 173 172 68 165 122 69 115 114 121 164 167 155 - 116 156 123 166 159 168 160 170 169 171 68 69 57 116 115 58 117 108 105 66 - 109 104 67 113 114 164 119 121 118 174 120 122 173 156 165 155 123 172 167 166 - 168 160 169 159 170 171 57 108 58 109 77 66 78 117 104 134 67 133 68 105 - 118 113 120 174 119 173 172 114 165 121 69 164 122 123 132 116 129 115 124 185 - 125 167 184 80 131 155 166 127 128 156 168 159 126 130 79 183 160 170 169 176 - 171 178 175 177 180 179 182 181 78 134 133 77 132 68 69 57 125 124 116 80 - 58 115 66 105 104 67 108 117 109 113 114 122 127 118 119 129 121 126 79 164 - 174 123 156 128 173 131 165 120 185 172 184 155 167 168 166 160 169 183 159 176 - 175 170 130 178 171 177 180 179 181 182 68 69 116 108 115 109 117 57 118 104 - 105 58 119 66 67 113 120 114 68 69 116 108 109 117 115 120 118 119 104 57 - 58 105 113 66 67 114 68 69 116 120 108 109 117 118 115 119 105 104 57 58 - 66 67 113 114 80 79 127 129 119 78 120 131 77 128 126 68 115 69 130 116 - 124 125 132 133 134 80 79 120 127 129 119 131 126 128 78 130 77 115 68 116 - 69 124 125 132 133 134 78 80 77 119 127 68 115 129 69 124 120 145 89 88 - 79 116 131 128 126 125 144 132 133 135 143 136 91 134 90 140 138 130 139 137 - 142 141 80 79 145 120 89 88 129 127 144 119 131 91 90 143 136 78 135 128 - 126 138 140 130 77 115 124 116 68 139 69 142 137 125 132 133 141 134 77 78 - 80 127 119 68 115 129 124 69 125 79 185 132 133 126 116 120 131 128 184 167 - 166 134 176 183 175 130 170 171 178 177 180 179 181 182 80 79 185 127 120 184 - 131 119 129 167 78 166 183 128 77 126 130 115 171 176 124 170 175 68 116 125 - 69 132 133 179 177 178 134 180 182 181 78 77 80 68 69 115 124 119 127 132 - 125 116 145 89 129 133 88 126 120 144 185 134 128 79 143 184 131 136 135 167 - 166 196 91 138 183 90 140 176 175 195 170 178 139 137 194 171 177 130 180 142 - 182 187 179 181 186 191 190 189 141 188 193 192 80 79 127 120 145 89 88 90 - 129 144 119 143 185 78 131 91 136 167 166 184 77 196 128 126 115 130 68 135 - 195 124 171 140 138 69 170 116 194 187 125 183 142 132 133 139 175 137 176 178 - 141 134 177 180 179 182 181 191 189 186 193 190 188 192 80 79 129 119 120 127 - 131 128 126 130 78 77 116 68 115 69 124 125 80 79 127 129 119 120 131 128 - 126 130 77 78 116 115 68 69 124 125 79 80 127 129 131 119 120 130 128 126 - 78 115 68 69 77 116 124 125 131 91 90 130 80 127 140 138 89 88 126 137 - 139 136 142 143 135 79 144 141 145 131 91 90 130 140 138 127 137 142 80 139 - 89 141 88 135 126 79 136 143 144 145 80 131 127 89 88 91 90 126 130 138 - 140 135 136 98 143 144 79 97 139 142 137 147 145 146 150 151 141 152 148 149 - 131 91 90 130 98 97 140 152 127 138 142 80 151 150 139 89 137 88 147 126 - 141 146 135 79 136 149 148 143 144 145 80 127 89 131 88 126 79 143 196 91 - 136 144 135 138 140 145 195 90 178 137 194 130 142 139 177 187 182 186 189 181 - 191 190 141 188 193 192 131 91 90 196 130 195 138 127 194 80 140 178 89 187 - 142 88 137 139 177 126 182 181 135 141 136 143 79 189 191 144 186 145 188 190 - 193 192 80 89 127 88 126 131 79 136 143 144 135 91 138 196 98 140 90 139 - 145 182 97 177 130 137 181 146 178 195 191 194 147 150 187 142 151 152 149 148 - 190 186 189 188 197 198 201 193 141 202 192 199 203 200 131 91 90 196 80 140 - 130 97 127 98 195 138 178 89 88 194 152 137 126 139 187 177 142 182 135 151 - 136 150 181 79 147 191 143 189 146 141 186 144 148 149 203 145 202 201 198 190 - 197 188 193 192 199 200 91 90 131 140 130 138 142 137 139 127 80 141 89 88 - 126 135 79 136 90 131 91 138 130 140 137 139 142 141 127 80 89 88 126 135 - 79 136 90 91 131 138 140 130 142 139 137 141 127 80 89 88 79 126 135 136 - 142 138 141 91 98 97 149 90 137 148 146 147 150 151 152 142 148 141 138 149 - 91 98 97 90 137 146 147 150 151 152 142 138 91 98 141 189 97 90 137 146 - 149 147 148 150 152 203 151 197 202 201 188 198 193 192 199 200 142 141 138 91 - 189 98 148 97 90 146 149 137 147 150 151 203 202 197 152 201 188 198 193 192 - 199 200 142 141 148 138 149 91 98 97 90 137 146 147 142 141 149 148 138 98 - 97 91 90 137 146 147 142 141 149 148 91 98 90 138 97 137 146 147 107 109 - 108 106 155 154 156 161 157 162 153 163 158 160 159 109 157 108 158 159 107 160 - 106 155 153 156 154 161 162 163 117 109 108 107 119 106 118 164 161 156 154 168 - 153 155 162 173 174 172 165 163 120 158 157 160 167 159 170 166 169 171 117 109 - 108 157 158 107 118 106 119 168 159 155 153 160 164 174 162 156 154 161 165 173 - 170 172 163 120 169 171 167 166 109 108 107 106 163 162 156 154 161 155 153 158 - 160 159 206 204 157 207 205 208 209 210 109 108 107 157 106 159 155 153 154 158 - 156 160 162 161 163 206 207 204 205 208 209 210 117 109 108 107 164 119 106 163 - 162 161 154 118 156 120 172 155 165 153 173 174 167 168 166 158 160 169 215 206 - 157 212 211 204 159 207 205 208 209 210 216 217 170 213 214 171 117 107 109 108 - 106 119 118 168 164 157 155 153 159 154 158 156 161 162 174 173 165 172 160 163 - 120 170 167 166 212 217 215 206 169 171 204 207 205 208 209 210 211 216 213 214 - 157 158 109 108 159 160 107 155 106 153 156 154 157 159 158 109 108 160 107 155 - 156 106 153 154 157 158 159 109 160 108 107 155 156 106 153 154 159 169 160 168 - 117 171 170 119 109 118 108 155 156 165 172 173 164 167 166 174 120 120 119 166 - 167 168 117 159 160 109 170 169 156 155 108 171 118 164 165 172 173 174 159 117 - 168 169 171 129 160 170 118 109 119 155 185 108 156 164 165 180 131 173 172 167 - 174 184 128 120 166 182 179 175 183 181 176 130 178 177 119 185 120 129 131 128 - 184 117 166 109 160 168 167 159 130 183 156 176 170 108 169 155 118 164 171 178 - 165 172 175 177 173 180 174 179 182 181 117 159 160 171 170 168 169 217 216 118 - 109 119 108 215 212 155 164 156 214 211 173 165 172 174 206 207 213 167 166 120 - 119 120 117 109 167 166 168 108 118 160 155 156 164 159 170 217 212 165 211 169 - 216 172 215 173 206 207 174 171 214 213 117 159 168 160 129 171 109 108 118 119 - 170 217 169 216 155 185 164 156 215 212 128 131 174 165 172 173 211 214 167 120 - 213 207 206 166 184 180 224 179 183 175 223 176 182 222 219 181 218 220 221 177 - 178 130 119 117 129 185 128 120 131 184 109 167 166 108 118 155 168 156 183 160 - 164 176 172 165 173 169 159 217 130 175 216 211 215 207 170 174 212 206 178 213 - 214 171 177 180 179 218 219 222 223 224 181 220 221 182 119 120 167 166 168 159 - 117 160 170 169 109 171 156 155 108 164 118 165 119 120 167 166 168 159 160 117 - 170 169 171 109 156 155 108 164 118 165 119 120 167 166 168 159 170 160 117 169 - 171 156 109 155 108 164 118 165 131 129 130 119 170 166 167 128 171 178 177 120 - 180 179 183 176 175 184 185 181 182 131 130 170 129 171 178 177 119 180 179 167 - 128 166 120 182 175 181 176 183 184 185 131 129 119 196 167 166 140 195 128 170 - 194 130 120 178 187 171 139 175 142 177 183 176 180 179 184 185 189 141 186 191 - 188 181 190 182 193 192 131 196 195 130 140 129 139 170 194 171 187 119 177 178 - 167 180 142 166 128 179 120 175 189 186 141 176 182 183 181 191 188 190 184 193 - 185 192 129 131 119 167 128 166 120 170 175 176 178 213 177 183 214 130 171 184 - 180 182 185 218 181 179 219 220 221 222 223 224 131 129 170 119 130 171 178 167 - 177 214 166 128 213 120 224 179 180 223 222 175 218 219 183 176 184 185 181 221 - 220 182 129 119 131 167 128 166 184 120 196 185 140 170 175 176 183 213 195 139 - 130 214 177 194 178 182 180 187 142 191 181 171 179 186 190 220 218 221 219 189 - 188 222 223 141 224 225 229 226 193 230 231 192 227 228 131 129 196 119 140 195 - 170 130 171 194 178 187 167 166 128 177 213 120 214 139 180 142 179 175 218 222 - 183 223 224 186 141 176 184 219 189 185 193 188 191 192 221 220 181 190 226 225 - 227 182 228 229 230 231 131 130 170 171 178 129 177 180 179 119 182 167 181 128 - 166 120 175 176 131 130 171 170 178 177 179 180 129 182 181 119 166 167 120 128 - 175 176 131 130 170 171 178 180 177 179 181 182 129 119 120 166 167 128 175 176 - 131 142 140 189 141 178 188 130 177 139 187 191 181 194 193 195 186 182 192 190 - 196 142 141 182 181 189 191 193 131 190 192 188 140 139 130 177 186 178 187 194 - 195 196 131 140 142 130 139 178 149 148 189 177 141 191 197 198 187 181 190 182 - 195 188 186 194 201 196 193 202 203 192 199 200 142 141 181 182 203 191 131 202 - 189 148 149 140 201 198 190 197 188 192 193 139 178 177 130 186 199 187 200 194 - 195 196 131 140 142 139 130 182 177 187 189 194 191 195 141 196 181 178 220 221 - 188 186 190 226 225 229 193 230 231 192 227 228 142 231 182 181 220 141 131 221 - 189 230 191 140 229 190 188 226 193 130 225 139 178 192 177 186 187 194 228 195 - 196 227 131 140 182 139 130 177 194 142 181 187 178 195 191 149 196 148 197 220 - 190 189 221 186 198 188 141 225 202 226 201 193 231 203 229 199 230 200 227 228 - 192 232 233 234 235 236 131 142 231 182 191 140 181 141 148 149 189 230 229 220 - 197 190 130 139 221 226 178 177 188 225 187 198 186 201 194 202 196 193 195 203 - 227 192 199 200 228 232 233 234 235 236 142 141 182 181 189 191 193 188 190 192 - 131 140 139 130 177 186 178 187 142 141 181 182 189 191 190 193 188 192 131 140 - 177 130 139 186 178 187 142 141 182 181 189 191 192 190 188 193 131 140 130 177 - 178 139 186 187 193 192 142 149 148 200 199 189 188 141 197 198 201 202 203 193 - 192 199 200 142 149 148 189 188 141 197 198 201 202 203 142 149 192 193 148 200 - 227 188 189 199 228 197 141 198 202 203 201 232 233 234 235 236 193 192 142 199 - 149 148 227 200 189 228 188 197 141 198 201 202 203 232 233 234 235 236 193 192 - 200 199 142 149 148 189 188 141 197 198 193 192 200 199 142 149 148 189 188 141 - 197 198 193 192 200 199 142 149 148 189 188 141 197 198 160 158 206 159 157 207 - 204 205 208 209 210 160 206 159 158 207 157 204 205 208 209 210 168 160 170 169 - 158 171 215 157 159 212 204 206 207 205 208 209 210 211 216 214 217 213 168 170 - 160 169 171 158 157 206 159 211 213 214 204 207 205 208 209 210 212 215 216 217 - 160 206 159 158 207 157 204 205 160 206 159 158 207 157 204 205 160 206 159 158 - 207 157 204 205 170 168 171 160 169 214 206 159 213 207 211 212 215 216 217 170 - 171 168 160 169 214 213 206 159 207 211 212 215 216 217 168 170 160 169 171 206 - 180 159 207 214 211 212 213 215 224 216 217 179 223 219 218 222 182 181 221 220 - 170 168 171 160 169 224 180 213 206 214 159 211 223 207 179 212 222 218 219 215 - 182 216 181 220 221 217 170 171 168 160 213 214 169 206 159 207 211 212 170 171 - 214 168 213 160 169 206 159 207 211 212 170 171 214 213 168 160 169 206 159 207 - 211 212 182 170 214 181 213 221 220 180 171 179 218 219 222 223 224 182 181 170 - 220 221 214 213 179 180 171 218 219 222 223 224 170 214 182 191 213 181 180 190 - 171 179 221 231 220 218 230 229 219 222 223 226 193 224 225 192 227 228 182 170 - 191 181 214 213 190 220 231 230 221 218 180 179 193 171 229 219 222 223 226 225 - 224 192 227 228 182 181 220 170 221 214 213 179 171 180 218 219 182 181 221 220 - 170 214 213 180 171 179 218 219 182 181 220 221 170 214 213 180 171 179 218 219 - 193 192 221 191 220 228 181 227 182 190 225 226 229 230 231 192 193 227 228 191 - 220 221 181 182 190 225 226 229 230 231 193 192 191 221 220 200 199 181 228 190 - 182 225 227 229 226 230 231 232 233 234 235 236 193 192 199 200 221 227 191 220 - 181 228 182 225 190 226 229 230 231 232 233 234 235 236 193 192 228 227 191 221 - 220 181 182 190 225 226 193 192 228 227 191 221 220 181 182 190 225 226 193 192 - 228 227 191 221 181 220 182 190 225 226 192 193 199 200 227 228 232 233 234 235 - 236 192 193 199 200 227 228 232 233 234 235 236 192 193 199 200 227 228 232 233 - 192 193 199 200 227 228 232 233 192 193 199 200 227 228 232 233 - -0.537553773299707D+00 -0.242992558652598D+01 -0.825627372250049D+00 - 0.841997962308731D+01 -0.442562974401468D+00 0.617929285163604D-02 - 0.225331765653178D-01 0.583647752758973D-01 0.177777768505930D+00 - -0.132454768507484D-08 -0.702303979405557D-01 -0.447670297658605D+00 - -0.254385396314495D-01 -0.101627556783898D-01 -0.524951827490509D+00 - -0.599729883961185D+00 -0.254654147402233D+01 0.864668704382179D+01 - 0.132454758619560D-08 0.177777779102311D+00 -0.653458820052381D+00 - -0.104886789008112D+01 -0.498437167293971D+00 0.225331765653178D-01 - 0.714814998674840D-02 0.521828026874075D+01 0.446325914487400D+00 - 0.998234475715746D-01 0.444444421264772D-01 0.132454768594220D-08 - 0.206225364529241D+00 -0.566894701912277D+00 -0.683105796950441D-01 - -0.975156334471836D+00 0.109968742349889D+00 -0.442619598714648D+00 - -0.271477203621291D-01 0.225400395520833D-01 -0.198682152674490D-08 - 0.444444421264772D-01 0.132454768334012D-08 -0.101627556783898D-01 - -0.237437292182466D+01 -0.128208799610184D-01 0.441218591230159D+00 - -0.374039558342654D-01 0.224566897127728D-01 -0.485835181748343D+00 - 0.651505323169253D+01 0.331136904788837D-09 -0.888888888888817D-01 - 0.112645202113638D+00 -0.447683169442110D+00 0.478589781823816D-02 - -0.865628087698819D-02 0.130731507474635D+00 -0.554793331095159D+00 - 0.244568926268483D+00 -0.269427744492281D+01 0.133333333333333D+00 - 0.331136887007921D-09 -0.888888888888817D-01 -0.260026982202464D+01 - -0.185113266936259D+00 0.617929285163600D-02 -0.580831484948663D+00 - 0.630174450627466D+01 0.469116465515090D-02 0.155864979697050D-01 - 0.446325914487297D+00 -0.888888849152387D-01 -0.331136927340242D-09 - 0.128701228693988D+00 0.123726998843000D+00 -0.510625088347906D+00 - -0.231137068520635D+01 0.111707177984289D+00 0.141687628397717D-02 - -0.443739984435310D+00 0.272435546931499D-02 0.133333327372868D+00 - -0.888888849152387D-01 -0.331136904355156D-09 -0.254385396314495D-01 - -0.770074119459849D+00 -0.135059596117715D-01 -0.111390269922802D+00 - 0.441218591230263D+00 -0.116091437518227D+01 -0.568229499403035D+00 - 0.543158866029852D+01 -0.132454761525222D-08 0.444444447755726D-01 - 0.113546557217985D+00 0.240195865933419D-01 -0.448093927397116D+00 - -0.289441799311218D-01 0.190399704940303D+00 -0.254030964573092D+00 - -0.497836263981864D+00 -0.478877388371105D+00 0.198682138796702D-08 - -0.132454760007339D-08 0.444444447755726D-01 -0.541714839206496D+00 - -0.442562974401468D+00 -0.390857698966740D-01 0.364391119565808D+01 - -0.122245654473573D+01 0.191353533132027D-01 0.469116465515096D-02 - 0.714814998674834D-02 -0.222222207321017D-01 -0.333333315120763D-01 - 0.238787566584636D+00 -0.140478498988708D+00 -0.292111625345855D+00 - -0.327340930330401D-02 -0.610454687761135D+00 -0.333333315120763D-01 - 0.513947430258882D-02 -0.112253479872302D+00 0.446269290174220D+00 - -0.333333323399186D-01 -0.222222217255125D-01 0.333333321743501D-01 - -0.284846590086252D-01 -0.940073122793432D+00 0.112342168500929D+00 - 0.266097479746782D-02 -0.470002463077104D+00 -0.222222207321017D-01 - -0.110515044237902D+00 0.322339066200000D-02 0.445148904453454D+00 - 0.333333323399186D-01 -0.222222217255124D-01 0.333333321743501D-01 - -0.312221669154802D-01 0.140376189010092D+00 0.186838251456350D+00 - -0.540057308007180D+00 -0.285614670393971D-01 0.111678735490011D+00 - 0.110679906816145D+00 -0.443403734646274D+00 0.333333313465078D-01 - -0.447670297658605D+00 -0.529112893397298D+00 -0.538939534705943D-01 - -0.135059596117715D-01 -0.128208799610183D-01 -0.151131964941836D+00 - -0.101488687814268D+01 0.382275547110021D+01 -0.222222227189232D-01 - -0.333333336644662D-01 -0.222222227189232D-01 -0.134291364875233D-01 - 0.652936579827675D-02 0.723143632851020D-01 -0.109577020108553D+00 - 0.441205719446654D+00 -0.127060789100264D+01 -0.333333336644662D-01 - 0.163293694628868D+00 -0.598353263962109D+00 0.333333328366239D-01 - 0.333333330021924D-01 -0.222222217255125D-01 -0.108675665004206D+00 - -0.141196998283060D-01 0.440794961491752D+00 0.174040629846083D+00 - 0.105257658754024D-01 0.130702997730683D+00 -0.457213585729154D+00 - -0.333333328366240D-01 0.333333330021924D-01 -0.222222217255125D-01 - -0.291978803933746D+00 0.333333338300347D-01 -0.528362522592822D+00 - -0.447848159185902D+00 0.113843681774619D+00 0.112841990239583D+00 - -0.290502878789739D-01 -0.280241058759532D-01 0.202319854349320D+00 - 0.111661727848846D+00 0.177777768505930D+00 0.132454758619560D-08 - 0.444444421264772D-01 -0.222222207321017D-01 -0.888888849152387D-01 - 0.331136904788837D-09 -0.333333336644662D-01 -0.132454761525222D-08 - -0.132454768507484D-08 0.177777779102311D+00 0.132454768594220D-08 - -0.333333315120763D-01 -0.331136927340242D-09 -0.888888888888817D-01 - -0.222222227189232D-01 0.444444447755726D-01 -0.505722817359338D+00 - 0.225400395520833D-01 -0.468313418630534D+00 0.446269290174220D+00 - -0.229929862059099D+01 -0.594087060129451D+00 -0.441699809168904D+00 - -0.122380040574470D+01 0.167497929852710D-01 0.860508895801520D-01 - 0.819078614913406D+01 0.411740596485943D+00 0.000000000000000D+00 - 0.177777768505930D+00 -0.397364304481618D-08 -0.865628087698823D-02 - -0.222484392781032D+01 0.441205719446654D+00 -0.456211994831508D+00 - -0.245454719481202D-01 -0.447342077496385D+00 -0.570879709131232D+00 - -0.378859787563836D+00 -0.104872627122454D-01 -0.765744922994508D-01 - -0.288953074784861D+01 0.887588051824430D+01 0.173472347597681D-16 - 0.132454761221645D-08 0.177777776453216D+00 -0.244568878593943D+00 - -0.271477203621291D-01 0.170039637736761D+00 -0.112253479872315D+00 - -0.409098181593276D+00 -0.982268659907677D+00 0.447189079719964D+00 - 0.999053125239424D-02 -0.310469466669746D+00 0.510276532170466D+01 - -0.441567336975306D+00 0.352966061866908D+00 0.860508895801521D-01 - 0.397364305002035D-08 0.444444421264772D-01 0.264909537318544D-08 - -0.649221954912900D+00 0.225264103614007D+00 -0.668998378985455D-01 - 0.967435813053686D-01 -0.153000913221844D+01 0.865615786121269D-01 - -0.397364306042869D-08 0.444444484180786D-01 0.264909537361913D-08 - 0.110695537901638D+00 0.478589781823818D-02 0.683106273695848D-01 - -0.109577020108540D+00 0.945457657809928D-01 0.441546811392379D+00 - -0.142765642611164D-01 0.132229171261981D+00 -0.385890764367673D+00 - -0.405385619286744D-01 -0.449101404070782D+00 -0.104872627122454D-01 - -0.197619980877365D+01 0.663056790478282D+01 -0.133333331346512D+00 - 0.331136912595092D-09 -0.888888875643341D-01 0.112521670516784D+00 - 0.542917637812410D-02 -0.972826332120047D-02 -0.625894824571965D+00 - 0.144950828147680D+00 0.380799706371081D+00 -0.318852722917103D+01 - 0.133333331346512D+00 0.331136940784349D-09 -0.888888875643341D-01 - -0.511873311761053D+00 -0.442619598714544D+00 0.706077618236638D-01 - 0.513947430258871D-02 -0.993410737351597D-09 -0.466205055436531D+00 - -0.888888849152387D-01 0.133333327372868D+00 0.614735067481450D+01 - -0.680775942106816D+00 -0.282113999813085D+01 0.795418675248649D-02 - 0.545874307353913D-01 0.447189079719860D+00 0.167497929852711D-01 - -0.133333327372868D+00 -0.888888849152387D-01 -0.993410767709257D-09 - 0.101949797084795D-01 -0.440533264438028D+00 0.100801468190363D+00 - 0.445485154242490D+00 -0.110543486732180D+00 -0.198968296732570D+01 - 0.308925840869694D-01 -0.543135451339398D+00 0.145083177601582D+00 - 0.115636189145753D-01 -0.443760331102249D+00 0.113678240798447D+00 - -0.447683169442213D+00 -0.499771940943935D+00 -0.134291364875233D-01 - -0.907888503833116D+00 0.444444441132988D-01 -0.104469916314847D+00 - -0.126883028637246D-01 0.441546811392483D+00 -0.140554694527794D+01 - -0.245454719481203D-01 -0.783080804978980D-01 -0.657568524881213D+00 - 0.558598253959410D+01 -0.900701165103696D+00 -0.198682139924272D-08 - -0.132454759660394D-08 0.444444441132987D-01 0.441040729702965D+00 - -0.132454760354284D-08 -0.108378540447572D+00 0.162745115317061D+00 - -0.428838412796286D+00 0.198682139490591D-08 -0.276940819036338D-01 - 0.203601695782652D-01 -0.447964240256426D+00 0.113468577872146D+00 - -0.520790855349568D+00 0.203680615345326D+00 -0.376265142882611D+00 - 0.202601809989831D+00 0.109968742349876D+00 -0.272314335954338D+00 - -0.327340930330401D-02 0.333333325054870D-01 0.205546845925009D+00 - 0.795418675248649D-02 -0.222222222222178D-01 0.150905032431582D+00 - 0.445128557786515D+00 0.333333328366240D-01 0.357034287595688D+01 - -0.133222928171172D+01 -0.495786917870394D+00 0.999053125239441D-02 - 0.301739090276983D-01 -0.111542315406033D+00 -0.441699809168904D+00 - -0.333333308498025D-01 -0.222222202353963D-01 -0.333333311809394D-01 - -0.171740001070109D-01 -0.333333356512877D-01 -0.663045469758176D+00 - 0.279954223287626D+00 -0.737672122881349D+00 -0.222222232156285D-01 - 0.894703197462737D-02 -0.111526684320553D+00 0.447321551913562D+00 - -0.333333373069723D-01 -0.222222252024501D-01 0.333333369758354D-01 - -0.357425460588189D-01 -0.154877097479958D-02 0.269940885161474D-01 - -0.360580464968650D+00 -0.733555498955234D-01 0.739905079018706D-01 - 0.333333353201508D-01 -0.782529191973391D+00 -0.443306082997069D+00 - -0.108543981423744D+00 0.113597394114730D+00 0.248449027548470D-02 - 0.105990538432339D-01 0.111791512479449D+00 -0.593068786598928D+00 - 0.163793116092007D+00 -0.300130109052687D-01 0.194398700162926D+00 - -0.355101382982034D-01 0.112645202113651D+00 -0.595214736805278D-01 - 0.127107952935225D+00 0.652936579827676D-02 -0.222222213943756D-01 - -0.586124936319416D-01 0.333333325054871D-01 -0.126883028637244D-01 - -0.142765642611164D-01 -0.333333323399186D-01 -0.338235789505959D+00 - -0.222222223877863D-01 -0.109380231982621D+00 -0.447342077496385D+00 - -0.733795043916397D+00 0.389632379088372D+01 -0.217731450542066D+00 - -0.472579566872175D+00 -0.333333333333293D-01 -0.333333331677609D-01 - -0.222222223877863D-01 0.265052676765706D-01 0.757284906115475D-01 - -0.182874408938221D-01 -0.109700551705407D+00 0.439787484817982D+00 - -0.333333331677609D-01 0.440924648632441D+00 -0.160330753074068D+01 - 0.199640929608769D+00 -0.714344919690290D+00 0.333333323399185D-01 - 0.333333325054870D-01 -0.139759341004301D-01 -0.222222213943755D-01 - 0.561941285627919D-02 0.333333333333294D-01 -0.108753644350045D+00 - -0.157810214335976D-01 0.161633173604782D+00 0.102528777056790D-01 - -0.571662107835323D+00 0.115351217845783D+00 0.222184400816314D+00 - 0.326210725900983D+00 -0.349570800718223D+00 -0.449214302300781D+00 - 0.132587924121714D+00 -0.314543299533960D-01 0.114253021193045D+00 - 0.112726748078444D+00 -0.285090677001166D-01 -0.198682152674490D-08 - 0.133333333333333D+00 -0.333333323399186D-01 0.333333328366239D-01 - -0.133333327372868D+00 -0.333333308498025D-01 -0.333333333333293D-01 - -0.198682139924272D-08 0.397364305002035D-08 0.000000000000000D+00 - 0.173472347597681D-16 -0.133333331346512D+00 0.444444421264772D-01 - 0.331136887007921D-09 -0.222222217255125D-01 0.333333330021924D-01 - -0.888888849152387D-01 -0.222222202353963D-01 -0.333333331677609D-01 - -0.132454759660394D-08 0.444444421264772D-01 0.177777768505930D+00 - 0.132454761221645D-08 0.331136912595092D-09 0.132454768334012D-08 - -0.888888888888817D-01 0.333333321743501D-01 -0.222222217255125D-01 - -0.993410767709257D-09 -0.333333311809394D-01 -0.222222223877863D-01 - 0.444444441132987D-01 0.264909537318544D-08 -0.397364304481618D-08 - 0.177777776453216D+00 -0.888888875643341D-01 -0.352321794706188D+00 - 0.447321551913562D+00 -0.114721986084360D-01 0.865615786121268D-01 - -0.215555858252596D+01 -0.699256302874059D+00 0.644577035479660D-02 - -0.193305202360514D+01 0.181037836560338D+00 0.105288114815398D+01 - 0.795157384559814D+01 0.104083408558608D-16 -0.445659251128419D+00 - 0.177777793672335D+00 -0.529819076285076D-08 0.439787484817982D+00 - -0.328994591515129D+00 -0.972826332120041D-02 -0.166999029556102D+01 - -0.225689717376971D-01 -0.445429714493476D+00 -0.150941451578320D+00 - -0.119883786130126D-01 -0.868669918073316D-01 -0.667997004639088D+00 - -0.354409152183018D+01 0.911509282229670D+01 -0.277555756156289D-16 - 0.132454776834157D-08 0.177777773804120D+00 0.133692438534754D+00 - -0.111526684320566D+00 -0.380799825623968D+00 -0.268359389830572D+00 - -0.668998378985455D-01 0.443229637760449D+00 -0.914925613395175D+00 - 0.344092141876835D+00 0.733797779098706D+00 0.497428397154257D+01 - 0.181037836560338D+00 -0.724556125180231D-02 0.397364307604120D-08 - 0.344547422634052D+00 0.444444484180786D-01 0.264909538793059D-08 - -0.243710831086184D+01 -0.779525150670216D+00 -0.101080277479637D+00 - 0.196174071708160D+00 -0.397364309512316D-08 -0.440227375849168D+00 - 0.444444447755726D-01 0.264909538749691D-08 0.240522283422306D+00 - 0.123275613604021D+00 -0.109700551705394D+00 0.533791448558966D-01 - 0.542917637812407D-02 -0.967437005582564D-01 0.443459174395288D+00 - -0.173000867139403D-01 0.240755096405760D+00 -0.237100018745477D+00 - -0.150597946622887D-01 -0.119883786130126D-01 -0.126694735634821D+01 - 0.675904911235743D+01 -0.133333329359690D+00 0.331136957264222D-09 - -0.888888862397863D-01 -0.454330726903771D+00 0.110693284821342D+00 - 0.223641058401629D-01 0.204775027717743D-01 -0.734989928441796D+00 - 0.167735573309078D+00 0.607245505826643D+00 -0.401246294978847D+01 - 0.133333329359690D+00 0.331136897416262D-09 -0.888888862397863D-01 - 0.403307858567285D+00 0.894703197462726D-02 -0.132454761742062D-08 - -0.440771790483432D+00 -0.888888968361676D-01 -0.441567336975202D+00 - -0.305688791190740D+00 -0.905570449892348D+00 0.601959872249752D+01 - 0.133333345254262D+00 -0.829566699695692D+00 0.369216108082830D-01 - -0.304905914500617D+01 -0.304824227443157D-02 0.443229637760345D+00 - 0.644577035479659D-02 -0.275191628628774D-02 -0.133333345254262D+00 - -0.888888968361676D-01 -0.132454770719256D-08 0.539949082469396D-01 - 0.339798566235639D-01 0.445582805891694D+00 -0.167728334484238D+01 - -0.448304403417847D+00 -0.108624828107460D+00 0.117565756643804D+00 - -0.551299722014865D-01 -0.624259843161857D+00 0.176653975142044D+00 - -0.182874408938220D-01 -0.536954202415220D+00 -0.449101404070886D+00 - 0.444444434510249D-01 -0.417444660142497D+00 0.439674586588087D+00 - -0.899106903470068D-01 -0.132454778395408D-08 -0.419017874215327D-02 - 0.198682167940056D-08 -0.182147781502148D+01 0.443459174395391D+00 - 0.571373496894876D+01 -0.225689717376972D-01 -0.798307328610597D+00 - -0.104444201405853D+01 -0.198682167506375D-08 -0.107969201029146D+00 - -0.132454778135199D-08 0.293202704901732D+00 0.444444434510249D-01 - -0.596143272569025D+00 -0.477398544640458D+00 -0.284282026331536D+00 - 0.117006493646975D-01 -0.258502125172346D-01 0.112386169791662D+00 - 0.235372787060468D+00 -0.446137126510168D+00 0.110894356744881D+00 - -0.361633255572160D+00 0.333333369758354D-01 -0.154877097479958D-02 - 0.110695537901625D+00 0.188382515160572D+00 -0.222222252024500D-01 - 0.621478172692679D+00 -0.144075532927784D+01 0.333333373069723D-01 - -0.275191628628757D-02 0.106983870348938D+00 0.440584485470916D+00 - -0.398669614460997D+00 -0.724556125180226D-02 0.352333728871872D+01 - -0.445659251128419D+00 -0.333333353201508D-01 -0.261979776505578D-01 - -0.222222232156285D-01 -0.333333356512877D-01 -0.297888259998699D-02 - -0.104656465578387D+00 -0.110430709742729D+00 -0.215846134824608D+00 - -0.230031997008322D-01 -0.115742457483971D+01 0.316747647902720D+00 - 0.266872493457429D-01 -0.912491091563477D+00 -0.333333326710555D-01 - -0.222222212288071D-01 -0.989466086181695D-01 0.448661513039700D+00 - -0.333333343267401D-01 -0.222222232156286D-01 0.333333339956032D-01 - 0.261807209761097D-01 0.255425446502757D-01 0.459989727454979D-03 - -0.653329258775174D+00 0.390764110357870D-01 0.243087594460389D-01 - 0.333333323399186D-01 -0.104568320296790D+00 -0.451795172119574D+00 - -0.667548942107588D+00 0.116617854635311D+00 0.118211525244217D+00 - 0.189462187450376D+00 0.218558392519994D+00 -0.318971920796437D-01 - -0.439561623666220D-01 0.561941285627919D-02 -0.164257535908559D+00 - 0.112521670516797D+00 -0.222222210632386D-01 0.108069239694246D+00 - 0.333333320087816D-01 -0.419017874215338D-02 -0.109495474143760D+00 - -0.173000867139403D-01 -0.612623588830782D-01 -0.445429714493476D+00 - -0.333333318432131D-01 -0.294429192436455D+00 -0.187729478136178D+00 - -0.333333326710555D-01 -0.285074619476901D+00 -0.367410316226026D+00 - -0.333333328366239D-01 0.394332937800929D+01 0.270464878554278D-01 - -0.222222220566494D-01 0.279363665078953D-01 0.848995097149489D-01 - 0.442751762378699D+00 0.470809100684844D+00 -0.111528937400849D+00 - 0.107693153971662D-02 0.434558161984993D+00 -0.377054686147959D+00 - -0.111327865477310D+00 -0.208658227995323D-01 0.243960922888330D+00 - -0.867955803107672D+00 0.333333318432131D-01 0.333333320087816D-01 - -0.222222210632386D-01 -0.222222220566494D-01 -0.771521181136046D-02 - -0.380485269225789D-01 -0.204689080707659D+01 -0.333333326710555D-01 - 0.269203496677923D+00 0.333333328366240D-01 -0.636768145246224D+00 - 0.655320491863023D-03 0.247673171746680D+00 -0.457297660627069D+00 - 0.150702533264292D+00 0.113650666396108D+00 -0.445753624331339D-01 - 0.108542424735475D+00 -0.242175945514600D-01 -0.333333373069723D-01 - 0.333333323399185D-01 -0.397364306042869D-08 0.133333331346512D+00 - -0.133333345254262D+00 -0.333333353201508D-01 -0.198682167506375D-08 - 0.397364307604120D-08 0.104083408558608D-16 -0.333333328366239D-01 - -0.277555756156289D-16 -0.133333329359690D+00 -0.222222252024501D-01 - 0.333333325054870D-01 0.444444484180786D-01 0.331136940784349D-09 - -0.888888968361676D-01 -0.132454778135199D-08 -0.222222232156285D-01 - -0.333333326710555D-01 0.444444484180786D-01 0.177777793672335D+00 - 0.132454776834157D-08 0.331136957264222D-09 0.333333369758354D-01 - -0.222222213943755D-01 0.264909537361913D-08 -0.888888875643341D-01 - -0.132454770719256D-08 0.444444434510249D-01 -0.333333356512877D-01 - -0.222222220566494D-01 0.264909538793059D-08 -0.529819076285076D-08 - 0.177777773804120D+00 -0.888888862397863D-01 -0.198710903223025D+00 - 0.448661513039700D+00 0.812463164139447D+00 0.196174071708160D+00 - -0.195336550730817D+01 -0.140516675161804D+00 -0.764522705276404D+00 - -0.297763157768755D+01 0.208147085894103D+00 0.175113078349135D+01 - 0.771670208687337D+01 -0.346944695195361D-16 -0.497319517050914D+00 - 0.177777779102311D+00 -0.397364303093839D-08 0.434558161984993D+00 - -0.154175614767221D+00 0.204775027717743D-01 -0.762891474787183D+00 - 0.668520386567797D-02 -0.432886850865542D+00 0.179855609529506D-01 - -0.109933878448710D+00 -0.357825824101963D+00 -0.784577773586784D+00 - -0.458640250949719D+01 0.934996458321604D+01 -0.346944695195361D-17 - 0.132454764691092D-08 0.177777771155025D+00 -0.989466086181825D-01 - 0.893724264072169D-01 -0.607245553605305D+00 -0.101080277479637D+00 - -0.110153393613548D+00 0.391569371837954D+00 -0.668175548046190D+00 - 0.787938069345911D+00 0.138640277236314D+01 0.502265597052349D+01 - 0.208147085894103D+00 -0.233093312392324D+00 0.198682151893864D-08 - 0.444444447755725D-01 0.132454766035503D-08 -0.345132895449955D+01 - -0.581717353853018D+00 0.211663938787337D+00 -0.522538364431705D+00 - -0.198682145041706D-08 0.444444447755723D-01 0.132454765211509D-08 - -0.111528937400836D+00 0.165857013928272D-01 0.223641058401629D-01 - -0.344547470412714D+00 0.456002038023222D+00 0.271513558718733D-01 - 0.225004661832830D+00 -0.130208408942020D+00 -0.658752187818920D+00 - -0.109933878448710D+00 -0.222368159446508D+00 0.671067719631662D+01 - -0.133333327372868D+00 0.331136898717305D-09 -0.888888849152387D-01 - -0.476479715748017D+00 -0.564155676445218D+00 -0.637604426142967D+00 - -0.487765271799887D+01 0.133333327372868D+00 0.331136928641285D-09 - -0.888888849152387D-01 0.846890906925406D+00 0.459989727455146D-03 - 0.437093716769190D+00 -0.331676698416036D+00 -0.142357892370773D+00 - -0.440227375849064D+00 -0.104010696977974D+00 -0.993410628064018D-09 - -0.344679768662649D+00 -0.888888888888816D-01 0.620984492655961D+01 - -0.936458281909444D+00 -0.321798577716044D+01 -0.113148990771303D+01 - 0.133333333333333D+00 0.391569371837850D+00 -0.115177395069855D+00 - -0.140516675161804D+00 -0.976950036697533D-01 -0.133333333333333D+00 - -0.888888888888817D-01 -0.993410773780790D-09 0.589976835249608D-02 - -0.156794095574215D+01 0.705844419084446D-01 -0.459120684905614D+00 - -0.514450443144658D-01 -0.746474729443561D+00 0.120488351205228D+00 - 0.212726475996753D+00 -0.380485269225790D-01 -0.111577016036548D+00 - -0.425753253114811D-01 -0.454330726903875D+00 0.641107311248994D-01 - -0.287141476187616D+00 0.431591228261798D+00 0.444444427887510D-01 - -0.132454763476786D-08 0.123443324985226D+00 0.689093980098781D-01 - -0.222919864497477D+01 0.226999471255854D+00 0.456002038023326D+00 - 0.552348852586568D+01 0.668520386567809D-02 -0.956513297237916D+00 - -0.124663470889932D+01 -0.198682143133511D-08 -0.132454761655326D-08 - 0.198682142960038D-08 -0.108571555826083D+00 0.444444427887510D-01 - -0.398422682683475D+00 0.410989666928905D-01 -0.772498782439728D+00 - -0.569629239217784D-01 -0.421316476798826D+00 0.290325631260290D+00 - 0.943308199406017D-01 -0.469203524296056D+00 0.243087594460389D-01 - 0.165597761085305D+00 -0.105604367586867D+00 0.894759807957331D-01 - 0.123275613604008D+00 0.333333336644662D-01 0.102919877480823D+01 - 0.236583634759008D-01 -0.976950036697534D-01 -0.142500480947886D+01 - -0.222222227189232D-01 -0.282088877528241D+00 0.333333338300347D-01 - 0.429768203983150D+00 -0.233093312392324D+00 0.393023663390198D+01 - -0.497319517050914D+00 -0.441825149678662D+00 -0.333333328366239D-01 - -0.222222217255124D-01 -0.333333330021923D-01 -0.120240673090587D-04 - -0.209089242806086D+00 -0.101733871016963D+00 -0.700644972794345D-01 - 0.344509726554703D-01 -0.952887817807340D+00 -0.104733027393071D+01 - 0.366350524457163D+00 -0.148252047541691D+00 -0.333333338300346D-01 - -0.222222227189231D-01 0.333333336644662D-01 0.363346171013350D-01 - -0.982153227120168D+00 0.823765186907727D-02 -0.333333330021924D-01 - -0.626544602036547D+00 -0.222222217255124D-01 -0.467212295465382D+00 - 0.333333328366239D-01 0.121299511510138D+00 0.171436209638542D+00 - -0.771521181136044D-02 -0.239076438653920D+00 0.110693284821355D+00 - 0.216201033275008D-01 -0.113679797486729D+00 0.928110509720768D-01 - -0.631219166767047D-03 -0.222222207321017D-01 0.689093980098782D-01 - 0.333333315120763D-01 0.271513558718732D-01 -0.432886850865542D+00 - 0.243680253708319D+00 -0.333333313465079D-01 -0.685099624535068D-01 - -0.235113229574871D+00 -0.333333321743501D-01 -0.531824599599842D+00 - -0.302143945838621D+00 -0.333333323399185D-01 0.353643003238063D+01 - -0.222222217255124D-01 0.313379610040844D-01 0.112050109706477D+00 - -0.726080206482117D-01 0.467572412090042D+00 0.412409173140747D+00 - -0.127891402281589D+00 -0.110321730648423D+01 0.333333313465078D-01 - 0.333333315120763D-01 -0.222222207321017D-01 -0.421592744724675D-01 - 0.901878465027630D-01 -0.211572871508797D+01 -0.187193629163069D+00 - -0.745863729443084D-01 -0.333333321743501D-01 -0.222222217255124D-01 - -0.440513813814989D+00 -0.662250648698502D+00 0.333333323399185D-01 - 0.953186456450639D-01 0.254762285624098D+00 -0.333333343267401D-01 - 0.333333318432131D-01 -0.397364309512316D-08 0.133333329359690D+00 - -0.133333333333333D+00 -0.333333328366239D-01 -0.198682143133511D-08 - 0.198682151893864D-08 -0.346944695195361D-16 -0.333333323399185D-01 - -0.346944695195361D-17 -0.133333327372868D+00 -0.222222232156286D-01 - 0.333333320087816D-01 0.444444447755726D-01 0.331136897416262D-09 - -0.888888888888817D-01 -0.132454761655326D-08 -0.222222217255124D-01 - -0.333333321743501D-01 0.177777779102311D+00 0.444444447755725D-01 - 0.132454764691092D-08 0.331136898717305D-09 0.333333339956032D-01 - -0.222222210632386D-01 0.264909538749691D-08 -0.888888862397863D-01 - -0.993410773780790D-09 0.444444427887510D-01 -0.333333330021923D-01 - -0.397364303093839D-08 0.132454766035503D-08 -0.222222217255124D-01 - 0.177777771155025D+00 -0.888888849152387D-01 0.365506398368060D-01 - 0.366350524457164D+00 0.167765302172261D+01 0.211663938787337D+00 - -0.282204364723403D+01 -0.589678007058466D+00 0.101705445044362D+02 - 0.108327685446291D+01 0.000000000000000D+00 0.177777779102311D+00 - -0.132454767987067D-08 -0.564155676445218D+00 0.412409173140747D+00 - -0.193363927167113D-01 0.251329258223291D+00 0.919200954481726D+00 - -0.180766801927568D+01 0.599594169540035D+01 0.689612215571787D+01 - 0.000000000000000D+00 0.132454768680956D-08 0.177777768505930D+00 - 0.915728862909207D+00 -0.148252047541691D+00 -0.429062240504449D+00 - 0.421676593423382D+00 -0.522538364431601D+00 -0.213933233444478D+00 - -0.100922710712053D+00 -0.331136869660686D-09 -0.123884212343481D+01 - 0.746876663442120D+01 -0.139233228123057D+01 -0.242251232767485D+00 - -0.589678007058466D+00 -0.133333333333333D+00 -0.888888888888816D-01 - -0.331137062214992D-09 -0.888888888888816D-01 0.133333333333333D+00 - -0.443966060879610D+01 0.511325783632407D-01 0.739424798470171D+00 - 0.586531715391250D-01 -0.421592744724674D-01 -0.247112034371428D+00 - -0.476479715748121D+00 -0.249639227124526D+00 -0.484949312794398D+00 - 0.448375075073879D+00 0.134458639447635D+00 0.313343855628574D+01 - 0.752500414619170D+00 -0.311784778263657D+01 0.919200954481726D+00 - 0.426456686291808D+01 -0.377956653272221D+00 -0.198682152587754D-08 - -0.132454769158005D-08 0.444444421264772D-01 -0.132454769027901D-08 - 0.444444421264772D-01 0.198682153368379D-08 -0.126903576577127D+00 - 0.529015902088030D+00 -0.354672981004771D+00 -0.333333338300346D-01 - -0.198682145041706D-08 0.133333327372868D+00 0.333333313465078D-01 - -0.133333333333333D+00 -0.198682152587754D-08 0.000000000000000D+00 - 0.000000000000000D+00 -0.222222227189231D-01 0.444444447755723D-01 - 0.331136928641285D-09 0.333333315120763D-01 -0.888888888888816D-01 - -0.132454769158005D-08 0.177777779102311D+00 0.132454768680956D-08 - 0.333333336644662D-01 0.132454765211509D-08 -0.888888849152387D-01 - -0.222222207321017D-01 -0.331137062214992D-09 0.444444421264772D-01 - -0.132454767987067D-08 0.177777768505930D+00 -0.272112234934441D+01 - -0.609453065057789D+00 0.272435546931490D-02 0.445148904453454D+00 - -0.896612314531020D+00 -0.474833892564609D+00 -0.953705406779460D-02 - -0.218460653498642D+01 -0.447533177906718D+00 -0.839190828893742D-02 - 0.834754805641205D+01 -0.226698933517354D-01 -0.173472347597681D-16 - 0.177777771155025D+00 -0.132454768507484D-08 -0.289441799311217D-01 - 0.440794961491752D+00 -0.888629052509160D+00 -0.596664187709839D+00 - -0.412458069093597D-01 -0.450536751879749D+00 -0.259140867252524D+01 - -0.671342141259597D-01 -0.467749994985686D+00 -0.372734740191391D+00 - -0.396852636272289D+00 0.871911861050997D+01 0.173472347597681D-16 - 0.397364287307855D-08 0.177777779102311D+00 -0.568830426541512D+00 - -0.133070286858777D+01 -0.443739984435414D+00 0.322339066200006D-02 - 0.132454768334012D-08 -0.637828253886295D+00 0.257604838757929D+00 - -0.111542315406046D+00 0.445485154242593D+00 0.444444427887511D-01 - -0.832842825907323D+00 -0.198682151980600D-08 -0.450020277063178D+00 - 0.517315661388722D+01 -0.608591542173448D+00 0.441355710982150D+00 - -0.425755331640984D-01 -0.138673136937284D-01 -0.953705406779459D-02 - 0.198682150072405D-08 0.444444427887511D-01 0.132454766469184D-08 - -0.908197418145672D-02 -0.109952486409199D+01 -0.493131979823630D+00 - -0.289043700808290D-01 0.125390202168515D-01 -0.447755657718695D+00 - 0.160665955262316D+00 0.114677075432778D+00 -0.448093927397012D+00 - -0.141196998283061D-01 -0.556041602175469D+00 -0.259926748063656D+00 - 0.441040729702862D+00 -0.109380231982608D+00 -0.888888888888816D-01 - -0.626133402244554D+00 0.182428296937895D+00 -0.279833875151606D-01 - -0.171486378914381D+00 0.993410667962658D-09 0.438352137009015D+00 - -0.412458069093597D-01 -0.279674714148846D+01 0.217024260199128D+00 - -0.442936313256871D+00 0.656017683877055D+01 -0.230338790016767D+01 - -0.133333333333333D+00 0.993410749060980D-09 -0.888888888888816D-01 - 0.133333333333333D+00 -0.423005737691116D-01 -0.451971018317445D+00 - 0.213634148256940D-01 0.114470275367646D+00 0.273660951287210D+00 - -0.485934806287409D+00 0.897169152861334D-01 0.254030916875240D+00 - 0.159292704489156D+00 -0.110515044237889D+00 0.141687628397716D-02 - -0.623730313692471D+00 -0.145236339265444D+00 0.441355710982046D+00 - -0.282726504519942D+01 0.634218419952100D+01 -0.117271883805360D-01 - -0.318520379660395D-01 -0.839190828893747D-02 -0.133333329359690D+00 - -0.888888862397864D-01 -0.331136919100306D-09 -0.331136940784349D-09 - -0.888888862397863D-01 0.133333329359690D+00 -0.457713961837944D+00 - -0.892375690111949D-02 -0.210986440145586D+01 -0.447693468529104D+00 - 0.812517365000920D-01 0.111252200067475D+00 0.112735621133107D+00 - 0.446186257911493D-02 0.240195865933419D-01 -0.108675665004219D+00 - -0.123727046540851D+00 0.220991165834310D+00 0.438352137009119D+00 - -0.240836202939901D-01 -0.262290871845980D+00 -0.616646349886164D+00 - -0.114162241131648D+01 -0.671342141259596D-01 0.397364285226187D-08 - -0.450699314378040D+00 0.539114888355105D+01 -0.101539325040440D+01 - -0.397364288435426D-08 -0.264909526606627D-08 0.444444447755725D-01 - -0.264909524524959D-08 0.444444484180786D-01 -0.450885996413778D+00 - -0.303895048547618D+00 -0.687850895914102D-01 0.343925283587465D-01 - 0.114238544080098D+00 0.177918888580471D+00 -0.274303817359723D+00 - 0.142933644296098D+00 0.266097479746788D-02 0.919787766153961D-01 - 0.111707177984302D+00 -0.333333320087816D-01 0.333333326710555D-01 - 0.170588221996671D+00 -0.526907325705300D-01 -0.110543486732192D+00 - 0.269940885161474D-01 -0.333333328366240D-01 -0.222222220566494D-01 - -0.141702416085890D+01 -0.598916711436517D+00 -0.583778212031311D-01 - 0.368388517256399D+01 -0.117271883805360D-01 -0.138673136937285D-01 - -0.520858689805568D-01 -0.222222210632386D-01 0.441133231170172D+00 - -0.447533177906718D+00 -0.333333318432132D-01 -0.222222210632386D-01 - -0.333333320087816D-01 -0.639506729240148D+00 -0.204620493611577D+00 - 0.263875869906188D+00 -0.178453106126914D+00 -0.107545146789413D+00 - -0.122634239125409D-01 0.333333318432132D-01 -0.447808947680746D+00 - 0.114763285636264D+00 0.333333326710555D-01 -0.771802501277439D+00 - -0.435527918691286D+00 -0.474322341228660D+00 -0.222222220566494D-01 - -0.143120155143845D-01 0.441195420359660D+00 0.333333328366240D-01 - 0.134369713838705D-01 0.111252197056646D+00 -0.641406296993835D-01 - 0.149981893060658D+00 -0.109486601089084D+00 0.715599971199274D-02 - 0.111639339129242D+00 0.112793360714140D+00 -0.182999615108229D-01 - -0.296038640473769D-01 -0.171515368309724D+00 0.113546557217972D+00 - 0.105257658754024D-01 0.204632120542414D+00 -0.222222252024500D-01 - -0.222222212288071D-01 -0.108378540447559D+00 0.265052676765706D-01 - 0.232531869123368D+00 -0.279833875151606D-01 -0.109040384488471D+00 - 0.333333326710555D-01 -0.494926665639492D-01 -0.240836202939901D-01 - -0.450536751879749D+00 0.333333323399186D-01 -0.367157074752449D+00 - -0.632309476231068D+00 -0.105476389325417D+01 0.378278149411674D+01 - -0.333333369758353D-01 -0.591832813857594D+00 -0.333333343267400D-01 - -0.333333339956031D-01 -0.222222232156285D-01 0.436917870571319D+00 - -0.290081873037564D-01 -0.107751946854545D+00 0.192926808406106D+00 - -0.120181753771199D+01 0.130094419459108D-01 0.333333373069722D-01 - -0.222222232156285D-01 0.502817939376196D-01 -0.282698223462606D-01 - -0.467984854754439D+00 0.438189574510828D+00 -0.451937335773793D+00 - 0.333333356512877D-01 -0.333333353201508D-01 0.276005756979834D+00 - -0.428699880416998D+00 0.792566540555948D-01 -0.107983678142093D+00 - 0.114460210548604D+00 0.141349031620162D-01 0.177918867357112D+00 - -0.308585080426824D+00 0.114857554782873D+00 0.178306029289310D+00 - -0.294523264990268D-01 -0.182999670089569D-01 0.133333327372868D+00 - 0.333333323399186D-01 0.198682138796702D-08 -0.333333328366240D-01 - 0.198682150072405D-08 -0.333333318432132D-01 -0.133333333333333D+00 - -0.333333343267400D-01 -0.133333329359690D+00 -0.397364288435426D-08 - -0.173472347597681D-16 0.173472347597681D-16 -0.888888849152387D-01 - -0.222222217255124D-01 -0.132454760007339D-08 0.333333330021924D-01 - 0.444444427887511D-01 -0.222222210632386D-01 0.993410749060980D-09 - -0.333333339956031D-01 -0.888888862397864D-01 -0.264909526606627D-08 - 0.177777771155025D+00 0.397364287307855D-08 -0.331136904355156D-09 - 0.333333321743501D-01 0.444444447755726D-01 -0.222222217255125D-01 - 0.132454766469184D-08 -0.333333320087816D-01 -0.888888888888816D-01 - -0.222222232156285D-01 -0.331136919100306D-09 0.444444447755725D-01 - -0.132454768507484D-08 0.177777779102311D+00 -0.538304144089758D+00 - -0.443403734646274D+00 0.101949797084795D-01 -0.728430901025772D+00 - -0.312169173677530D+01 -0.403253041343986D+00 -0.908197418145676D-02 - 0.445128557786515D+00 -0.434357166604821D+00 0.441133231170172D+00 - 0.138777878078145D-16 -0.185017775126859D+00 0.177777771155025D+00 - -0.397364303093839D-08 -0.139530549212667D+01 -0.169541210397027D+01 - 0.810594621960939D+01 -0.564495030504951D-01 -0.455974863635252D+00 - -0.410740590022312D-01 -0.455397082496410D+00 -0.447848159185902D+00 - 0.440924648632441D+00 -0.526609358675399D+00 -0.706086225563081D+00 - 0.436917870571319D+00 -0.427159913595741D+00 -0.537466440931413D-01 - -0.431530378499465D-01 -0.276940819036338D-01 -0.450354521637083D+00 - 0.155177186835302D+00 -0.304167789711399D+01 -0.121031684994750D+01 - -0.446042592941664D+00 -0.423005737691115D-01 -0.210047531874045D+01 - -0.341814764555733D+00 0.896072044733227D+01 0.000000000000000D+00 - 0.397364284358825D-08 0.177777776453216D+00 0.221671596553577D+00 - 0.110679906816158D+00 -0.545875795445731D+00 -0.152621084418582D+01 - -0.443760331102353D+00 -0.273660919479328D+00 0.248449027548470D-02 - 0.125390202168515D-01 0.140406516987314D+00 0.444444427887511D-01 - -0.107545146789426D+00 -0.410740590022312D-01 0.264909532634791D-08 - 0.264909535974134D-08 0.397364300231545D-08 -0.782384668185720D+00 - 0.444444484180785D-01 -0.158322238019996D+00 0.445582805891798D+00 - -0.397364303267311D-08 -0.397805123783253D-01 0.305396996648583D+00 - -0.354159224189063D+00 0.507039190107992D+01 0.357637221364442D-01 - 0.433491806392457D+00 -0.110430709742742D+00 -0.172989466983166D+01 - -0.169584798106259D+00 -0.599276244532297D+00 -0.478457563467411D+00 - -0.448807294902793D-01 -0.455527943866777D+00 0.134603641231632D+00 - 0.119371645232961D+00 0.147556612008703D+00 0.112841990239570D+00 - 0.146495072946073D+00 -0.157810214335976D-01 -0.447964240256322D+00 - -0.523531199455901D+00 -0.417470926311446D+00 -0.888888875643340D-01 - 0.213634148256940D-01 0.439674586587983D+00 0.289044018887109D-01 - 0.993410865721134D-09 -0.760977903326517D+00 0.133333331346511D+00 - -0.336805738816608D+01 -0.431530378499464D-01 -0.109495474143747D+00 - -0.107751946854532D+00 -0.167256436170980D+00 0.694574554872324D-01 - -0.180469464300731D+01 -0.133333331346511D+00 -0.450426979459652D-01 - 0.438534367251680D+00 0.423797054373896D+00 0.993410729545341D-09 - -0.344226860777137D+00 -0.252305132309777D-01 0.666294130129723D+01 - 0.226349492807540D+00 -0.452242232876271D+00 -0.888888875643340D-01 - 0.463511551260713D+00 -0.466762733005256D+00 0.770475243019187D-01 - 0.135992189692908D-01 0.112420636813357D+00 0.131013487931464D+00 - 0.111678735489998D+00 0.376265111126318D+00 0.200745417169310D+00 - 0.115636189145753D-01 -0.580731876284904D+00 -0.993410755999874D-09 - 0.181731317417688D-02 -0.108543981423731D+00 -0.447755657718591D+00 - -0.133333329359690D+00 -0.564495030504950D-01 -0.122634239125409D-01 - -0.888888862397863D-01 -0.335517705180208D+01 -0.722439805907918D+00 - -0.993410808475259D-09 -0.888888862397864D-01 0.627355878918869D+01 - -0.209599212057184D+00 0.433491806392353D+00 -0.421855134664132D+00 - 0.441079941208017D+00 -0.288602809358547D+00 -0.414844377810811D-01 - -0.153456528407382D+01 0.133333329359690D+00 -0.455688633348251D+00 - -0.566807764921033D-01 -0.427916628813383D+00 0.111639342442846D+00 - -0.647429364089414D-01 -0.109428861508051D+00 0.948938521467521D-01 - 0.283403725108691D-01 0.116733203606237D+00 0.113843681774632D+00 - 0.192957153270692D+00 -0.108753644350058D+00 0.203601695782652D-01 - -0.308926158432628D-01 -0.451971018317548D+00 0.259342833389154D+00 - -0.573534702748684D+00 -0.537466440931414D-01 -0.290081873037563D-01 - 0.438534367251784D+00 -0.995379730926236D+00 0.444444484180785D-01 - -0.150458776099651D+01 -0.397364280976115D-08 -0.208151134705841D+00 - -0.264909520188150D-08 -0.264909522096346D-08 0.444444441132987D-01 - -0.712507442495992D+00 -0.230295566380271D-01 -0.415517562094314D+00 - 0.545977431766576D+01 0.436951553115074D+00 -0.127301210768200D+01 - -0.535856067884396D-01 0.397364285226187D-08 0.304587328860429D+00 - -0.418019904082321D+00 -0.450347944904618D+00 0.267927874873609D-01 - 0.178306011079014D+00 -0.107364667439318D+00 0.114062859344103D+00 - -0.420298490089405D+00 0.161560543803502D+00 -0.386425607950068D-01 - -0.285614670393971D-01 0.129652720978645D+00 0.113678240798460D+00 - 0.149570830806115D+00 -0.333333316776447D-01 0.243616415074340D+00 - 0.105990538432338D-01 -0.250281742018217D+00 0.114677075432765D+00 - -0.222222205665332D-01 0.134369713838705D-01 -0.333333313465078D-01 - 0.333333369758355D-01 -0.455397082496410D+00 -0.620624073743390D+00 - 0.730118980450037D-01 -0.222222252024501D-01 0.220947146667257D+00 - -0.333333373069724D-01 -0.166351168445721D+01 0.333333330021925D-01 - -0.108624828107473D+00 -0.333333356512877D-01 0.433360945022090D+00 - -0.677435994565717D-01 -0.222222225533548D-01 0.255425446502757D-01 - -0.102850576989230D+00 -0.751716810713631D+00 -0.448807294902792D-01 - -0.414844377810812D-01 -0.425019936797202D-01 0.131721035321553D+00 - -0.336051005734272D+00 -0.107458936585914D+00 -0.222222232156285D-01 - -0.381737279958363D+00 0.365804130569301D+01 0.333333333333294D-01 - 0.333333353201507D-01 -0.169610793702955D+00 -0.456139688621107D+00 - 0.298996035136849D+00 0.433200255540512D+00 -0.445902533241282D+00 - 0.301940757868238D-01 -0.458453764140310D-01 -0.507103426859375D+00 - -0.182999629400935D-01 0.259516915081675D-01 0.948938605538054D-01 - -0.105489018615954D+00 0.118895138543787D+00 -0.131155720120240D+00 - 0.116958731223941D+00 0.136042453253596D+00 0.229226803443484D-01 - 0.936074092956877D-01 -0.136884343404649D+00 -0.316697905229015D-01 - -0.122368804645224D-01 -0.290502878789739D-01 -0.354444997554798D-01 - 0.113468577872133D+00 0.102528777056790D-01 0.188250158722389D+00 - 0.114470275367659D+00 -0.126644420016584D+00 -0.222222208976701D-01 - 0.172667375098158D+00 0.130094419459108D-01 -0.215468419536829D-01 - 0.333333321743501D-01 -0.107969201029133D+00 0.279338408211980D+00 - -0.450354521637083D+00 0.333333318432132D-01 -0.252305132309776D-01 - -0.740021880910398D+00 0.270464878554278D-01 -0.610691803049802D+00 - -0.222222232156285D-01 -0.333333338300347D-01 -0.333333334988978D-01 - 0.228486922594796D+00 -0.230295566380272D-01 0.333333356512877D-01 - -0.636877853168681D-01 0.436646656012492D+00 -0.222222252024501D-01 - -0.600723888664202D+00 -0.222222228844917D-01 -0.107762011673600D+00 - -0.911397400278450D+00 -0.306665955693337D-01 -0.982229263414987D-01 - -0.136232213997050D+01 0.609957731369069D-01 -0.333333369758354D-01 - 0.333333373069723D-01 -0.333333353201507D-01 -0.435356122890299D+00 - 0.438540943984249D+00 0.380862536099521D+01 -0.452358459274007D+00 - -0.326154181662137D+00 -0.250621930646928D-01 0.553762034651317D+00 - -0.109801585408833D+00 -0.182999626433315D-01 0.261032290565177D-01 - -0.108159362878087D+00 0.918610457710764D-01 0.654560540555779D-01 - 0.125310885333978D-01 0.161560527375287D+00 0.160274089369275D+00 - 0.112097906968388D+00 -0.375600167708171D+00 0.115068116541468D+00 - -0.122368837660876D-01 0.466915674348144D-02 -0.282711746772118D-01 - 0.333333313465078D-01 0.333333328366240D-01 -0.333333323399186D-01 - -0.333333328366240D-01 0.333333323399186D-01 0.333333338300347D-01 - -0.133333329359690D+00 0.397364300231545D-08 -0.333333313465078D-01 - -0.397364280976115D-08 -0.133333331346511D+00 0.133333327372868D+00 - 0.198682139490591D-08 -0.333333338300347D-01 -0.198682151980600D-08 - 0.133333333333333D+00 0.138777878078145D-16 0.000000000000000D+00 - -0.222222207321017D-01 -0.222222222222178D-01 -0.222222220566494D-01 - 0.333333326710555D-01 0.333333325054871D-01 -0.333333336644662D-01 - -0.888888862397863D-01 0.444444427887511D-01 -0.222222205665332D-01 - -0.264909520188150D-08 0.993410729545341D-09 -0.888888849152387D-01 - -0.333333334988978D-01 -0.132454760354284D-08 0.444444427887511D-01 - 0.993410667962658D-09 0.177777771155025D+00 0.397364284358825D-08 - -0.333333315120763D-01 0.333333325054870D-01 -0.222222213943756D-01 - 0.333333326710555D-01 -0.222222212288071D-01 -0.993410755999874D-09 - 0.264909532634791D-08 0.444444441132987D-01 -0.888888875643340D-01 - -0.333333316776447D-01 -0.222222227189232D-01 -0.222222228844917D-01 - -0.993410737351597D-09 0.444444441132988D-01 0.132454768334012D-08 - -0.888888888888816D-01 -0.397364303093839D-08 0.177777776453216D+00 - -0.495004527077286D+00 -0.443306082997069D+00 -0.349320330122230D+01 - -0.326644793722718D+00 -0.132871231903545D+00 -0.304824227443166D-02 - 0.433360945022090D+00 -0.127627141949953D+01 0.168057960445212D+00 - 0.177777793672335D+00 -0.397805123783253D-01 -0.878937220367817D+00 - -0.346944695195361D-17 -0.543677579521024D+00 0.440584485470916D+00 - -0.529819077152438D-08 0.798787589823814D+01 -0.466403073562240D+00 - -0.103274312589168D+00 -0.206309638321343D+01 -0.465661174509574D+00 - 0.442751762378699D+00 -0.850820563679386D+00 0.436646656012492D+00 - 0.575650392264169D+00 -0.449214302300781D+00 -0.371504041236285D+01 - -0.473597848313682D+00 -0.314949863919485D+00 -0.209524326252766D-01 - -0.461986340679467D+00 -0.935411435291485D-02 -0.258502125172345D-01 - -0.152271725147819D+01 -0.450426979459652D-01 -0.441884750874281D+00 - -0.147010475788921D+01 -0.217587673223654D+00 0.907879076896801D+01 - 0.312250225675825D-16 0.397364333624972D-08 0.177777773804120D+00 - 0.217982130409534D+00 0.111791512479462D+00 -0.470523366330319D+00 - 0.104846435586672D+00 -0.448304403417951D+00 0.422485815326627D+00 - -0.103274312589168D+00 -0.272181932410473D+00 -0.102850576989243D+00 - 0.397364303007103D-08 -0.423797173627113D+00 0.357637221364442D-01 - -0.167080932545286D+01 0.444444484180786D-01 0.515041032352231D+00 - -0.230031997008323D-01 0.264909536407815D-08 -0.426995925417988D+00 - -0.837458215239992D-01 -0.955089666438841D+00 0.264909532504687D-08 - 0.444444441132986D-01 0.437093716769294D+00 -0.113606609881468D+00 - -0.397364297022307D-08 0.311713238890800D+00 0.512532563408512D+01 - -0.228971961549735D+01 -0.105604367586880D+00 -0.465495379262216D+00 - 0.659106208934926D-01 -0.457193515018112D+00 -0.474829481274432D+00 - 0.181789212658006D+00 0.122082027774598D+00 0.178485179910979D+00 - -0.208658227995323D-01 -0.546670965992845D+00 -0.109801585408820D+00 - -0.268506999239289D+00 0.112726748078430D+00 -0.888888862397863D-01 - 0.138934648092390D+00 0.431591228261694D+00 0.343373230446179D-01 - 0.660800747263561D+01 0.447004138014482D+00 0.993410773780790D-09 - -0.924308790104616D+00 -0.113679797486716D+00 0.557644364835959D+00 - -0.446137126510064D+00 0.243857361422568D+00 -0.442406795737488D+00 - 0.133333329359690D+00 -0.747055715857782D-02 -0.395270005183163D+01 - 0.135992189692908D-01 0.182445169902203D-01 -0.935411435291485D-02 - -0.134603760484849D+00 -0.274289058885120D-01 -0.113690299679719D+01 - 0.548637870522296D+00 -0.441749455362236D+00 -0.613033908549894D-01 - -0.133333329359690D+00 -0.454151619485369D+00 0.115484512059865D+00 - 0.993410817582557D-09 0.994390675616996D-01 -0.888888862397862D-01 - 0.111148905708497D+00 0.113597394114718D+00 -0.132454771456514D-08 - 0.477398663994836D+00 0.339798566235639D-01 -0.888888968361676D-01 - -0.888888968361676D-01 -0.132454773364710D-08 0.162322303909441D+00 - -0.487888438550348D+00 -0.132871231903545D+00 0.248433805757113D+00 - 0.133333345254262D+00 -0.133333345254262D+00 -0.425019936797201D-01 - -0.599903921759636D+00 0.432749200267656D+00 -0.127300973918825D+00 - 0.626505493148497D+01 -0.455527943866673D+00 -0.377565098861689D+01 - -0.308207845188174D+00 -0.104656465578374D+00 -0.109480293478298D+01 - 0.422485815326523D+00 -0.782742776784320D-01 -0.463885302051164D+00 - 0.936074186517502D-01 -0.798159679380590D+00 0.636504718754438D-01 - -0.105263490998249D+00 -0.452131484505413D+00 -0.444152437420102D+00 - 0.120831538005124D+00 -0.174616520370757D+00 0.886734418788497D-01 - 0.444444484180785D-01 -0.111327865477323D+00 0.307152594495952D+00 - -0.264909551586645D-08 0.397364327553440D-08 -0.306665955693337D-01 - 0.114253021193058D+00 0.169540190432804D+00 0.744282606436112D+00 - -0.794484746209406D+00 0.546827858078189D+01 0.117006493646975D-01 - -0.157887548673826D-01 -0.818262556102694D+00 -0.747065929089340D-01 - -0.297661328873379D+00 0.551300915558644D-01 -0.145319478825805D+01 - 0.447004138014586D+00 0.436530429614860D+00 -0.452242232876375D+00 - -0.209524326252765D-01 -0.588209091297481D+00 -0.192372917685319D+01 - -0.439019970627574D+00 -0.530172076229597D+00 0.119900003845507D-01 - -0.397364335359696D-08 -0.107154105680723D+00 0.160274072234384D+00 - 0.155340121590329D+00 -0.264909556357135D-08 0.789436098741487D-02 - -0.440477605096720D+00 0.109127689304838D+00 0.444444434510249D-01 - -0.352123354799319D-01 -0.300130109052687D-01 0.979605184774854D-01 - 0.117565756643817D+00 -0.333333356512877D-01 -0.333333353201508D-01 - -0.222222232156285D-01 -0.466403073562240D+00 0.177054738180666D+00 - 0.256285828912493D+00 0.119371645232948D+00 -0.837458215239992D-01 - -0.604680318072188D+00 0.266872493457429D-01 -0.291861086763906D+00 - 0.253194967104799D+00 -0.782742776784321D-01 0.301940757868238D-01 - 0.333333369758354D-01 -0.222222252024501D-01 0.333333373069724D-01 - -0.267729675969032D+00 -0.103327083678390D+00 0.333333334988978D-01 - 0.971223363677226D-01 0.425003586837599D+00 -0.222222228844917D-01 - 0.269222599192765D+00 0.423393509626651D+00 -0.175764457469597D+01 - -0.305706909551552D+00 -0.104010696977987D+00 -0.333333338300347D-01 - -0.660354474757791D-01 0.236583634759008D-01 -0.100140194447593D+00 - -0.821573713516510D+00 0.264542977275719D+00 -0.799604783486563D-01 - -0.767005176082768D-01 -0.333333321743501D-01 -0.122368824358615D-01 - -0.101390684217067D+00 -0.498792100900383D+00 -0.434654979101712D+00 - 0.238857650326429D-01 0.886734484419054D-01 -0.222222208976701D-01 - 0.333333318432132D-01 -0.440150766953903D+00 -0.465086288880698D+00 - 0.369650651891734D+01 0.383502508485038D-01 0.381606003830538D-01 - 0.119903523386759D+00 0.121432031280849D+00 0.846823646586800D-01 - -0.137810690433359D+00 -0.148221679124305D+00 0.183692197223028D+00 - -0.321739828678436D-01 -0.239521933000216D-01 0.655320491863023D-03 - -0.285090677001166D-01 -0.954316276705039D-01 -0.222222232156284D-01 - 0.466915674348145D-02 -0.311565271351244D-01 0.333333356512876D-01 - -0.747868336647840D+00 -0.333333353201506D-01 -0.725170728585574D+00 - 0.110894356744868D+00 -0.262597103212693D+00 -0.108571555826070D+00 - -0.222222205665332D-01 0.119900003845508D-01 0.156679330395909D+00 - 0.333333316776447D-01 -0.631156975881803D-01 0.313379610040844D-01 - -0.666546425752371D-01 0.327433561965168D+00 0.377016014762479D+01 - 0.182445169902204D-01 0.265359106787517D-01 0.112420636813370D+00 - -0.110124315253815D+00 0.448411283792146D+00 0.333333313465078D-01 - 0.185776741205708D+00 -0.441884750874281D+00 -0.222222252024500D-01 - -0.818531725265427D+00 -0.601005484242082D+00 0.607723438871779D+00 - 0.447139433526528D+00 0.665679006837545D-01 -0.333333369758353D-01 - -0.122368791146885D-01 0.333333373069722D-01 -0.333333333333294D-01 - -0.149613323683498D+01 -0.122783154660491D+00 0.272843808783327D-01 - 0.551529332852180D-02 0.201542287900703D+00 0.155340101662431D+00 - -0.333333330021925D-01 -0.392666127900640D+00 -0.432242514800315D+00 - 0.117739161216557D+00 -0.449792161987066D-01 0.199281687625251D-01 - -0.113094532917352D+00 -0.222222225533548D-01 -0.996409320543280D-02 - -0.442438275514589D+00 0.120350370928534D+00 0.151349055898325D+00 - 0.991556340723558D-01 -0.239521987785717D-01 0.110108024350722D+00 - -0.218000381052097D-01 0.333333373069723D-01 -0.333333318432131D-01 - -0.333333373069724D-01 -0.397364335359696D-08 -0.133333329359690D+00 - 0.333333318432132D-01 0.333333353201508D-01 -0.133333345254262D+00 - -0.333333333333294D-01 0.333333333333294D-01 0.397364303007103D-08 - 0.133333345254262D+00 0.198682167940056D-08 -0.333333353201508D-01 - -0.346944695195361D-17 -0.397364303267311D-08 0.133333331346511D+00 - 0.312250225675825D-16 -0.222222252024500D-01 0.333333320087816D-01 - -0.222222252024501D-01 0.333333321743501D-01 -0.264909556357135D-08 - 0.993410817582557D-09 -0.888888968361676D-01 0.444444484180786D-01 - -0.333333330021925D-01 -0.222222232156285D-01 -0.333333331677609D-01 - -0.222222232156285D-01 -0.888888968361676D-01 -0.132454778395408D-08 - 0.993410865721134D-09 0.444444484180785D-01 0.177777793672335D+00 - 0.397364333624972D-08 0.333333369758354D-01 -0.222222210632386D-01 - 0.333333369758355D-01 -0.222222208976701D-01 0.444444434510249D-01 - -0.888888862397862D-01 -0.222222225533548D-01 -0.132454773364710D-08 - -0.333333356512877D-01 0.264909536407815D-08 -0.333333356512877D-01 - -0.222222223877863D-01 -0.132454761742062D-08 0.444444434510249D-01 - -0.529819077152438D-08 0.264909535974134D-08 -0.888888875643340D-01 - 0.177777773804120D+00 0.423393509626651D+00 -0.113606609881468D+00 - -0.429898497492736D+00 -0.451795172119574D+00 -0.248134941345317D+00 - -0.115177395069855D+00 -0.342699965452590D+01 0.177777776453216D+00 - -0.381639164714898D-16 -0.167160420247641D+00 -0.112935094355191D+01 - -0.157710630000494D+01 0.752700188017916D+00 -0.397364308471482D-08 - -0.831553436954702D+00 -0.150035826008786D+00 0.861304419790176D+01 - -0.467277170320170D+00 0.429768203983150D+00 -0.209618139187877D+01 - -0.622413139208980D+00 -0.245092953094234D+00 0.467572412090042D+00 - -0.857577423723487D+00 -0.457297660627069D+00 0.447139433526528D+00 - 0.149197223384725D+00 -0.910280248316367D+00 -0.403392885675670D+01 - -0.399117700631372D+00 0.186752681310506D+00 0.272642516992186D+00 - -0.640119067091257D+00 0.410989666928906D-01 -0.163205922752790D+01 - -0.400451253368506D+00 -0.274289058885121D-01 0.980854130492364D+00 - 0.845362246722141D+01 -0.312250225675825D-16 0.397364297022307D-08 - 0.177777771155025D+00 -0.100140194447606D+00 0.182630803986955D+00 - 0.116617854635324D+00 0.659106208934926D-01 -0.294167884089840D+00 - -0.459120684905718D+00 0.131791048372097D+00 0.444444441132988D-01 - -0.150035826008786D+00 0.198682145909068D-08 -0.548637902827148D+00 - 0.421611718568697D+00 -0.446696638972281D+00 -0.112739210874975D+01 - 0.833929040524658D+00 0.132454764994669D-08 -0.581353808653050D+00 - -0.700644972794345D-01 -0.752739949677641D-01 -0.817027415200967D+00 - 0.421676593423486D+00 -0.163014389349106D+00 -0.123977081826127D+01 - -0.198682157531715D-08 0.578258059477879D+01 0.444444441132986D-01 - -0.141638829305438D+01 -0.543919417557021D+00 -0.462430200980093D+00 - 0.132454770415680D-08 0.687903589970816D-01 0.901878465027630D-01 - -0.122783154660478D+00 -0.217846902277790D+00 0.108542424735462D+00 - -0.181789244962858D+00 -0.464402487381695D+00 0.114774944731253D+00 - 0.488437635520258D+00 -0.888888849152386D-01 0.448375075073775D+00 - 0.595075261803897D+01 -0.852733408881014D+00 0.993410759903002D-09 - -0.421316476798722D+00 0.127563440260364D+01 -0.320191937086007D+00 - -0.300924194201698D+00 0.133333327372868D+00 -0.354898172367081D+01 - 0.208157621432612D+00 -0.613033908549894D-01 0.300899495303118D+00 - 0.272642516992186D+00 -0.110381842435327D+01 -0.133333327372868D+00 - -0.385205219170139D+00 -0.574851028038848D+00 0.993410704391851D-09 - -0.888888849152386D-01 0.856601536039305D-01 -0.799604783486562D-01 - 0.423802600008065D+00 -0.465495379262112D+00 0.118211525244204D+00 - -0.993410811944706D-09 0.398422714698948D+00 -0.888888875643339D-01 - 0.705844419084446D-01 -0.888888875643339D-01 -0.133333331346511D+00 - -0.993410851843346D-09 -0.612515047125367D+00 -0.100790190941342D+00 - -0.167160420247641D+00 0.296133104195183D+00 -0.632214871336174D+00 - 0.221283214625101D+00 -0.334919735891146D+01 -0.241634250813623D+00 - -0.101733871016950D+00 0.133333331346511D+00 0.647676699170626D+01 - 0.421611718568593D+00 -0.165721969019173D+01 -0.155445007225272D+00 - -0.602264163283235D+00 -0.726818993416990D-01 0.777224869005712D-01 - -0.458972243150280D+00 0.846823657035061D-01 -0.401122452728106D+00 - -0.656592020125530D+00 -0.270824706598883D-01 0.118375008321395D+00 - 0.144459757785193D+00 -0.701208031739412D+00 -0.233725899318962D+00 - 0.444444484180786D-01 -0.127891402281602D+00 0.113650666396121D+00 - 0.298882351676107D+00 -0.609473151592624D+00 -0.264909532851632D-08 - 0.551529332852191D-02 0.151349032107882D+00 0.143871137900234D+00 - 0.446450613374278D+00 0.397364302573422D-08 -0.619970011692649D+00 - 0.525656620966724D+01 0.719667396112234D+00 -0.569629239217784D-01 - 0.514450763299384D-01 0.753946830505801D-01 0.488437635520362D+00 - -0.149264743376976D+01 0.191287616485946D+00 -0.441749455362340D+00 - 0.186752681310506D+00 0.174401595308164D+00 -0.162289383552180D+01 - -0.112114197871469D+00 -0.397364299537656D-08 -0.382638025014161D+00 - -0.677799707942471D+00 -0.264909532981736D-08 0.444444427887510D-01 - -0.956438268137174D-01 -0.398628699258829D+00 0.211126448284031D+00 - 0.882032362009860D-01 -0.220913042094119D-01 0.122082027774585D+00 - 0.381606003830537D-01 -0.318971920796437D-01 -0.102318698835419D+00 - 0.430076980383393D-01 -0.333333325054870D-01 0.120488351205241D+00 - -0.333333323399185D-01 -0.222222213943755D-01 0.333333331677609D-01 - 0.217848829179987D+00 -0.467277170320170D+00 -0.128063434457080D-01 - -0.726818993416990D-01 -0.317739131389992D+00 0.233815726877009D-01 - -0.426547623310094D+00 0.363346171013350D-01 0.292647315973531D+00 - 0.139730144875338D+00 -0.222222223877863D-01 -0.752739949677642D-01 - 0.333333333333294D-01 -0.488645719464723D+00 0.429916645738484D+00 - 0.198874677843921D+00 -0.100922710712066D+00 -0.252537682191967D+00 - -0.899075905174079D+00 -0.239521929634973D-01 -0.560418821538379D+00 - -0.333333333333293D-01 -0.222222223877863D-01 0.426458687908775D+00 - -0.103847213900796D+00 0.333333331677609D-01 -0.516460902835993D-01 - -0.614917633654227D-01 -0.215140398167026D+00 0.387736432882471D+01 - -0.140324529740877D+01 0.144459753375677D+00 0.258230365546844D-01 - -0.456606822034675D+00 -0.607991426764652D+00 0.333333323399185D-01 - 0.998690143437297D-01 -0.222222213943755D-01 -0.333333325054870D-01 - 0.142800062230824D+00 0.117192297723913D+00 -0.621892797400755D-01 - -0.745863729443084D-01 -0.242175945514600D-01 0.763882954012601D-01 - 0.154848161328872D+00 -0.227105042759238D-01 -0.222222232156285D-01 - -0.208237624477854D+00 -0.449792161987066D-01 -0.239521926471514D-01 - 0.943308199405887D-01 0.333333356512877D-01 -0.798877665068126D+00 - -0.126903576577114D+00 -0.333333353201508D-01 -0.123066588149848D+00 - 0.397707188854952D-01 0.282200738928315D+00 0.120606853301876D+00 - 0.174401595308164D+00 -0.222222202353963D-01 0.208157621432612D+00 - 0.994390675617126D-01 0.333333311809394D-01 -0.333333328366239D-01 - 0.358930233728015D+01 -0.333333325054870D-01 -0.444253551192372D+00 - 0.791541737320681D+00 0.490260189630038D+00 -0.400451253368505D+00 - -0.509853321186065D+00 0.337555174503348D-01 -0.222222222222178D-01 - 0.503683669718625D+00 -0.591350365792820D+00 0.333333308498025D-01 - -0.457013453612747D+00 -0.133489599174785D+01 0.212059873538052D+00 - 0.211126422350615D+00 0.202359411966639D+00 -0.222222252024500D-01 - -0.134018986021205D+00 -0.144575434396283D+00 -0.333333369758353D-01 - -0.390740172969558D+00 0.333333373069722D-01 -0.630975878528990D+00 - -0.101179714936515D+00 0.842589729979064D-01 0.209466751546809D+00 - 0.333333313465078D-01 0.333333338300347D-01 -0.333333313465079D-01 - -0.133333327372868D+00 -0.333333338300347D-01 -0.397364299537656D-08 - 0.333333323399186D-01 0.333333328366240D-01 -0.133333331346511D+00 - -0.333333328366239D-01 0.198682145909068D-08 0.133333329359690D+00 - 0.133333333333333D+00 -0.333333323399185D-01 0.198682142960038D-08 - -0.397364297022307D-08 -0.381639164714898D-16 -0.312250225675825D-16 - -0.222222227189232D-01 0.333333315120763D-01 0.333333316776447D-01 - -0.222222228844917D-01 -0.264909532981736D-08 0.444444441132988D-01 - 0.993410704391851D-09 -0.888888875643339D-01 -0.222222212288071D-01 - -0.333333325054870D-01 -0.333333326710555D-01 -0.222222213943755D-01 - 0.993410773780790D-09 -0.888888888888816D-01 -0.132454763476786D-08 - 0.444444441132986D-01 0.177777776453216D+00 0.397364297022307D-08 - 0.333333336644662D-01 -0.222222205665332D-01 -0.222222207321017D-01 - 0.333333334988978D-01 -0.888888849152386D-01 0.132454764994669D-08 - 0.444444427887510D-01 -0.993410851843346D-09 -0.222222222222178D-01 - -0.333333325054870D-01 -0.333333326710555D-01 -0.222222220566494D-01 - -0.993410628064018D-09 0.444444427887510D-01 -0.888888862397863D-01 - -0.397364308471482D-08 0.264909532504687D-08 0.177777771155025D+00 - 0.426458687908775D+00 -0.404416033363421D+00 -0.163014389349106D+00 - -0.467212295465382D+00 -0.821524795644469D-01 -0.475316261047886D+00 - -0.242251232767486D+00 0.348981939625429D+00 -0.541597954724018D+01 - -0.938450612905864D+00 0.763849892726789D-02 0.971790844856475D+01 - 0.208166817117217D-16 0.177777776453216D+00 -0.132454767987067D-08 - -0.506247805302328D+00 -0.440513813814989D+00 0.503683669718625D+00 - -0.178361149099100D+01 -0.440122080025375D+00 0.752500414619171D+00 - 0.123966034659508D+01 0.666191461716195D+00 -0.376282335917037D+01 - 0.300899495303118D+00 0.566428956958634D+01 0.734875821322926D+01 - -0.138777878078145D-16 0.397364291644664D-08 0.177777768505930D+00 - -0.614917633654225D-01 -0.462430200979989D+00 0.785710465686175D-01 - 0.121299511510125D+00 -0.529015854639077D+00 0.586531715391250D-01 - 0.134895881892543D+00 -0.491815678274707D+00 0.432282066854089D+00 - 0.562823145473236D+00 0.763849892726796D-02 -0.133333331346511D+00 - -0.888888875643340D-01 -0.119608369223426D+00 -0.331137011474331D-09 - 0.664590081769408D+01 -0.523439466296746D+00 -0.105029924498278D+00 - -0.362065809857206D-01 -0.577019921754793D+01 0.133333331346511D+00 - -0.888888875643340D-01 -0.331136815884259D-09 0.142800055798401D+00 - 0.100463096793359D+01 0.181032732787689D-01 -0.984859711688282D+00 - 0.953186456450769D-01 -0.522747288756534D+00 0.161897122554173D+00 - 0.212059873538052D+00 -0.354672981004771D+00 -0.739424751021218D+00 - -0.546423845210963D+00 -0.385205219170243D+00 0.266992591587527D+01 - 0.498148715919310D+00 0.666191461716195D+00 -0.397364290950775D-08 - 0.508743240681986D+01 0.221597933354305D+01 -0.264909527343885D-08 - 0.444444421264772D-01 0.444444484180785D-01 0.209466726901855D+00 - 0.657982765756909D+00 -0.264909524524959D-08 -0.409890339397732D+01 - 0.397364288001745D-08 -0.137963249224285D+00 -0.328991394978985D+00 - 0.649075419958437D+00 0.333333308498025D-01 -0.333333333333293D-01 - 0.333333328366239D-01 0.133333327372868D+00 0.333333323399185D-01 - 0.133333333333333D+00 -0.133333331346511D+00 -0.397364290950775D-08 - 0.198682153368379D-08 -0.198682157531715D-08 0.208166817117217D-16 - -0.138777878078145D-16 0.333333311809394D-01 -0.222222223877863D-01 - -0.888888875643340D-01 -0.222222217255124D-01 -0.264909527343885D-08 - -0.333333321743501D-01 0.993410759903002D-09 -0.888888888888816D-01 - -0.132454769027901D-08 0.444444441132986D-01 0.177777776453216D+00 - 0.397364291644664D-08 -0.222222202353963D-01 0.333333331677609D-01 - -0.331137011474331D-09 0.444444421264772D-01 -0.333333330021924D-01 - -0.222222217255124D-01 -0.331136869660686D-09 0.444444421264772D-01 - -0.888888849152386D-01 0.132454770415680D-08 -0.132454767987067D-08 - 0.177777768505930D+00 -0.637966738560192D+00 0.441195420359660D+00 - -0.289610433148020D+01 -0.892375690111950D-02 -0.428699886978152D+00 - -0.208167272973104D+01 -0.711111344608933D+00 -0.892375699362085D-02 - -0.447693468395018D+00 -0.259921391595300D-01 0.853333302919791D+01 - 0.173472347597681D-16 -0.713896317237594D-01 0.177777773804120D+00 - -0.132454777528046D-08 0.438189574510828D+00 -0.631138700285903D+00 - -0.687850874218566D-01 -0.450699314334100D+00 -0.332086772285242D+00 - -0.435528006015029D+00 -0.687850895914103D-01 -0.539432044230225D-01 - -0.109013497857196D+01 -0.579328311226444D+00 -0.248888924697560D+01 - 0.853333363750731D+01 0.277555756156289D-16 0.529819057897007D-08 - 0.177777793672335D+00 -0.147600539928508D+01 -0.143120155143847D-01 - -0.615780721904492D+00 0.132454776660684D-08 -0.447693468529208D+00 - 0.444444434510249D-01 -0.651149076745644D+00 -0.450885904836017D+00 - -0.746216431635669D+00 0.441079941208121D+00 -0.114495910620847D+00 - 0.272337532373308D+00 -0.259921391595300D-01 0.533333330258438D+01 - -0.711111349185440D+00 0.441195420493850D+00 -0.143120151227283D-01 - 0.198682168113529D-08 -0.711111348126615D+00 0.444444434510249D-01 - 0.132454778135199D-08 -0.415517549249370D+00 -0.107458936585927D+00 - -0.269159724558478D-01 -0.447808947567558D+00 -0.198682164470609D-08 - -0.177777716888932D+00 0.292173697172965D-01 0.127662432233574D+00 - 0.114763285637988D+00 -0.282698223462604D-01 -0.428197141027811D+00 - -0.888888968361676D-01 -0.450699314377936D+00 -0.282698220909464D-01 - -0.608952756480326D+00 0.438189574554664D+00 0.436951553114970D+00 - -0.457713951022770D+00 0.250419660474056D+00 0.132454773191237D-08 - -0.232096851518445D+00 -0.644811504175826D+00 -0.107762011673587D+00 - -0.539432044230224D-01 -0.451937335749393D+00 -0.133333345254262D+00 - 0.640000038830426D+01 -0.248888925155211D+01 0.132454770762624D-08 - -0.581856977602049D-01 -0.888888968361676D-01 0.201612270188661D+00 - -0.421855202547323D+00 0.114460210532247D+00 0.650543863887958D-01 - 0.177777840429054D+00 -0.248888924955237D+01 0.133333345254262D+00 - 0.276953754772473D-01 0.155414475907458D+00 -0.109486601089071D+00 - 0.274303698108495D+00 0.446186257911491D-02 -0.331136953361094D-09 - -0.888888875643341D-01 -0.133333331346512D+00 -0.325415845932901D-01 - -0.286791265542639D+01 -0.892375699362084D-02 0.441195420493746D+00 - -0.608952663980797D+00 0.645781541364066D+01 -0.318520361636853D-01 - -0.117271877695633D-01 -0.331136895681539D-09 -0.888888875643341D-01 - 0.133333331346512D+00 -0.442936352050491D+00 -0.215051273425111D+01 - -0.839190733348003D-02 -0.447533177709992D+00 0.101524638797493D+00 - 0.141687577606258D-02 0.111707177869535D+00 0.107373962006074D+00 - -0.107983678142106D+00 0.222081146207924D+00 0.343925283587465D-01 - -0.240836196870231D-01 -0.812518557513202D-01 -0.262290856118701D+00 - -0.108060000570748D+01 -0.687850874218566D-01 0.527551781248253D+01 - 0.438189574554768D+00 -0.111832669798059D+01 -0.615780710167550D+00 - -0.397364289823204D-08 -0.264909527083676D-08 0.444444484180786D-01 - 0.444444421264770D-01 -0.264909525565793D-08 -0.450536751602452D+00 - -0.671342075114616D-01 0.397364290777302D-08 -0.406828977713746D+00 - -0.450020316641064D+00 0.113546557092873D+00 0.240195840421465D-01 - -0.231828507902011D+00 0.179008834256042D+00 0.108584998437120D+00 - 0.715599971199278D-02 0.155414479519370D+00 0.112735621133120D+00 - 0.333333331677610D-01 -0.222222223877864D-01 0.155027337149885D+00 - -0.333333325054871D-01 -0.109428861508064D+00 -0.222222213943755D-01 - -0.483667027777688D-01 -0.333333323399186D-01 -0.447693468395018D+00 - -0.143120151227283D-01 -0.631138708329621D+00 -0.119400104622623D+00 - -0.145041933258170D+01 -0.117271877695633D-01 -0.520858667964817D-01 - 0.378278136265177D+01 0.259516915081675D-01 -0.592344285350184D+00 - 0.268425671083872D-01 0.441079941321309D+00 -0.333333333333294D-01 - 0.250018073215504D+00 -0.122634231776880D-01 -0.107458936584202D+00 - -0.265991292360551D+00 -0.427159937103125D+00 0.134369713598235D-01 - -0.333333325054871D-01 -0.222222213943756D-01 0.333333323399187D-01 - -0.222222223877863D-01 0.333333331677609D-01 -0.467749954203763D+00 - -0.447755657436466D+00 0.333333333333293D-01 -0.805198055333940D+00 - 0.441355711178772D+00 -0.138673129235950D-01 0.114677075433092D+00 - 0.136124128440099D+00 0.960784445768171D-01 -0.110515044352656D+00 - 0.266097435608176D-02 0.123733021915844D+00 -0.475343339418443D-01 - -0.139759335719866D-01 0.111678735348287D+00 -0.285614670122910D-01 - 0.141349031620162D-01 0.114238544080085D+00 -0.135859452290320D+00 - -0.222222232156286D-01 0.222081168032366D+00 -0.107364667439305D+00 - 0.333333356512877D-01 0.221694005786053D+00 -0.116745852573681D+01 - -0.240836196870231D-01 -0.109040381214798D+00 -0.282698220909463D-01 - -0.453783240471980D+00 0.261032290565177D-01 -0.450699314334100D+00 - 0.368388530402895D+01 -0.333333373069724D-01 -0.637966827366498D+00 - 0.436951553139371D+00 -0.333333369758355D-01 -0.290081865315318D-01 - -0.222222252024501D-01 -0.483667024810068D-01 -0.598681852552537D+00 - -0.102040488219646D+01 0.333333353201508D-01 0.130094417204141D-01 - 0.187410004191142D+00 -0.583730938210469D-02 -0.451971017914857D+00 - -0.107762011689944D+00 -0.222222222222177D-01 -0.333333325054870D-01 - 0.333333328366239D-01 -0.279833859743168D-01 0.438352137286415D+00 - -0.434357191088650D+00 -0.222222202353963D-01 0.333333311809393D-01 - -0.333333308498023D-01 -0.474833852566956D+00 0.189379299793012D+00 - 0.114470275257702D+00 -0.108675665129318D+00 0.195367879264652D+00 - 0.105257652959712D-01 0.737398569291508D-01 0.113843681642879D+00 - -0.272929076836722D+00 0.167468131065917D+00 -0.290502878429284D-01 - -0.171739997626208D-01 0.333333328366240D-01 -0.397364289823204D-08 - -0.133333331346512D+00 -0.333333353201508D-01 -0.333333323399186D-01 - -0.333333373069724D-01 0.133333329359690D+00 0.198682168113529D-08 - -0.133333345254262D+00 0.397364285226187D-08 0.173472347597681D-16 - 0.277555756156289D-16 -0.888888875643341D-01 -0.222222220566494D-01 - -0.264909527083676D-08 0.333333356512877D-01 -0.333333369758355D-01 - -0.222222213943755D-01 0.132454770762624D-08 0.444444434510249D-01 - -0.888888862397863D-01 -0.264909524524959D-08 0.177777773804120D+00 - 0.529819057897007D-08 -0.331136953361094D-09 0.444444484180786D-01 - 0.333333326710555D-01 -0.333333325054871D-01 -0.222222232156285D-01 - -0.222222252024501D-01 -0.331136940784349D-09 0.132454778135199D-08 - -0.888888968361676D-01 0.444444484180786D-01 -0.132454777528046D-08 - 0.177777793672335D+00 -0.467984782313789D+00 0.441079941321309D+00 - -0.147319033687509D+01 -0.598681843690165D+00 -0.566807771296533D-01 - -0.447808947680746D+00 -0.455688633468390D+00 -0.350458670883130D+01 - -0.326154149570847D+00 -0.711111346535647D+00 -0.740512477037951D+00 - -0.269159724558478D-01 -0.566807764921034D-01 0.433200255540512D+00 - 0.177777773804120D+00 -0.711111362575158D+00 0.853333302942416D+01 - -0.899534587296170D-01 -0.453445790631844D+00 -0.451028103753970D-16 - -0.397364334665806D-08 0.438540943984249D+00 -0.730615652965816D+00 - -0.248888926217327D+01 -0.525957564650633D-01 -0.451937335773793D+00 - -0.474322349516142D+00 0.436951553139371D+00 -0.592344357215944D+00 - -0.535856067392843D-01 -0.581856977602049D-01 -0.535856067884396D-01 - -0.248888924796140D+01 0.243212359827306D+00 -0.450347944863539D+00 - -0.166543409589706D+01 -0.443126134792563D+00 -0.336051053735107D+00 - 0.853333363699940D+01 -0.381639164714898D-16 0.529819046794777D-08 - 0.177777793672335D+00 0.145923302312499D+00 -0.107458936584215D+00 - 0.254076661388727D+00 -0.418019846014604D+00 0.114763285636277D+00 - -0.769005337793157D+00 0.432749200267759D+00 0.433200255420477D+00 - 0.264909554362203D-08 -0.177777721194953D+00 -0.648646774485980D+00 - -0.468460161518226D+00 -0.458453767525036D-01 0.292173697172965D-01 - -0.175376185579176D+01 -0.455688633348355D+00 -0.711111333930888D+00 - -0.456139688666404D+00 0.444444484180786D-01 -0.458453764140310D-01 - 0.397364333278027D-08 0.444444434510250D-01 -0.397364332410666D-08 - -0.899534587296169D-01 -0.366762800738546D+00 0.264909554882620D-08 - 0.533333331727857D+01 0.118895138632564D+00 -0.711111145207244D+00 - -0.935619006126759D-01 -0.103327083678403D+00 -0.297661334150754D+00 - 0.622721933256907D-01 0.932025787296507D-01 -0.177777766140793D+00 - 0.306797422654518D+00 -0.888888968361676D-01 0.132454777874991D-08 - -0.758458821478362D+00 -0.250621930646928D-01 0.436530429614756D+00 - 0.133333345254262D+00 -0.692896394281064D+00 -0.248888892448562D+01 - -0.592464668437917D-01 0.236210996965547D+00 0.114460210548591D+00 - -0.202024534132972D+00 0.640000019478693D+01 0.183351422383664D+00 - -0.107762011689931D+00 0.833152332881366D-01 0.438540944025224D+00 - 0.276953754772473D-01 0.177777836123033D+00 0.177777789193161D+00 - -0.450347944904514D+00 -0.638750049754919D+00 -0.525957564650633D-01 - -0.250621928580397D-01 -0.427916650837792D+00 -0.308207851111334D+00 - -0.110124315253802D+00 -0.133333345254262D+00 0.656562501030761D-02 - -0.452358459283557D+00 0.132454748601532D-08 -0.248888923352900D+01 - 0.304556710460777D-01 0.515118774384683D+00 -0.888888968361676D-01 - 0.112097906825203D+00 0.155027333840751D+00 -0.179595236046380D+00 - -0.122634231776879D-01 0.112793360714127D+00 0.420298370809731D+00 - 0.283403725108691D-01 -0.209599210763117D+00 0.652644082671012D+01 - 0.110824871025666D+00 -0.447808947567454D+00 -0.644811491923655D+00 - -0.414844384197472D-01 -0.993410680105722D-09 -0.344321178748211D+01 - -0.888888875643341D-01 0.133333331346512D+00 0.171772825816631D+00 - -0.564495020766242D-01 -0.888888875643341D-01 -0.105489018615941D+00 - -0.638750003888705D+00 -0.566807771296534D-01 -0.133333331346512D+00 - -0.162260069006750D+01 -0.455397082779848D+00 -0.485934788015362D+00 - 0.433200255420374D+00 0.441133231452298D+00 -0.993410849241261D-09 - -0.344226856692984D+00 0.135653178057660D+00 -0.207095654031096D-01 - -0.110543486873904D+00 0.659212479223212D-01 0.115636181249949D-01 - 0.113678240831747D+00 -0.108159362878100D+00 0.238439492638113D+00 - 0.114857554782886D+00 -0.648646808711894D+00 0.438540944025328D+00 - 0.221694024000819D+00 -0.208151131111956D+00 -0.290081865315318D-01 - -0.651149145221608D+00 0.267927874873609D-01 -0.122684268535123D+01 - -0.451937335749496D+00 0.647428171292682D-01 -0.535856067392842D-01 - -0.172680909077972D+01 -0.537466421465318D-01 -0.230295565082662D-01 - -0.397364290170149D-08 0.520689237551171D+01 0.444444427887511D-01 - -0.949210321959856D+00 -0.264909525175480D-08 -0.264909522790235D-08 - -0.493131962528029D+00 0.823655689295524D-01 0.436917870974010D+00 - 0.444444484180788D-01 0.397364284532298D-08 -0.354159220417656D+00 - -0.450354521599948D+00 0.203601689780326D-01 0.207042846334230D+00 - -0.324662946685328D+00 -0.108378540579312D+00 0.113468577859705D+00 - 0.140657165489550D+00 -0.483667008956701D-01 -0.194162660553522D+00 - -0.296038640473769D-01 0.134369713598235D-01 0.173059261098896D+00 - 0.171772814355469D+00 -0.105263490998262D+00 -0.250789811184558D+00 - 0.268278930048951D+00 0.333333369758355D-01 0.116733203606250D+00 - -0.222222252024501D-01 0.175600126707307D+00 0.114763285637975D+00 - -0.414844384197474D-01 -0.730615620859593D+00 -0.169610795556240D+00 - 0.333333334988978D-01 0.380862536488420D+01 -0.222222228844916D-01 - 0.333333338300347D-01 -0.455688633468389D+00 0.433491806108916D+00 - -0.333333318432131D-01 0.229226803443484D-01 -0.446042581002875D+00 - -0.222222208976701D-01 -0.333333321743501D-01 -0.333333373069724D-01 - -0.458453767525034D-01 -0.425019938722304D-01 -0.171511861042642D+01 - -0.620764143059773D+00 -0.333333356512878D-01 0.432749200222463D+00 - -0.448807302800180D-01 -0.222222232156286D-01 0.238857650326429D-01 - 0.301940764173950D-01 0.156383581910391D+00 -0.558710704942034D+00 - -0.103327083589627D+00 0.203959623918923D+00 -0.107545146789085D+00 - 0.137013942918046D+00 -0.280241051168817D-01 0.263957550761460D+00 - -0.307560135975784D+00 -0.544297875519552D-01 0.333333353201509D-01 - 0.269940885432534D-01 -0.105126356189814D+00 -0.108543981390444D+00 - -0.455527943951882D+00 0.105990540041993D-01 0.119371645469393D+00 - -0.314949897771732D+00 0.101003998808698D+00 0.113597394111639D+00 - 0.457195094915752D-01 -0.300130110480275D-01 0.107693089151963D-02 - 0.239725914681530D+00 -0.222222232156285D-01 0.333333356512877D-01 - -0.107154105680710D+00 0.333333353201507D-01 0.125310885333979D-01 - -0.688443208806250D-01 -0.294523264990268D-01 -0.631310554056540D+00 - 0.436530429605206D+00 -0.731539674523508D+00 -0.544297842307822D-01 - -0.483667063938040D-01 -0.250621928580396D-01 0.114062859344090D+00 - 0.205670884204173D+00 0.114460210532260D+00 0.238439506012219D+00 - 0.130094417204142D-01 -0.230295565082662D-01 0.659913224249238D-01 - -0.450347944863539D+00 -0.740512525023853D+00 -0.333333369758353D-01 - 0.201210616586934D+00 -0.131082500417008D+01 -0.982229252235725D-01 - -0.859899917973277D+00 -0.333333373069722D-01 -0.110124315396987D+00 - 0.272843808783327D-01 0.438534367288919D+00 -0.222222205665332D-01 - -0.222222252024500D-01 0.939992888755432D-01 -0.306665954884165D-01 - 0.333333316776448D-01 -0.474166291266696D-01 -0.455974852009212D+00 - 0.365804130180402D+01 -0.222222225533548D-01 -0.333333313465078D-01 - -0.333333330021924D-01 -0.107751946964501D+00 0.422945987208073D+00 - -0.108753644362486D+00 -0.252305127527709D-01 -0.312221663404622D-01 - 0.211749838961376D+00 0.333333333333293D-01 0.265052677126161D-01 - -0.326644748469188D+00 -0.452242232799192D+00 0.102528776150400D-01 - 0.466915616707318D-02 0.381797530445564D-01 -0.317799985488041D+00 - 0.112420636616600D+00 0.120661556766449D+00 0.114253021213421D+00 - -0.285090676336227D-01 -0.297887825143310D-02 0.333333333333294D-01 - -0.333333353201507D-01 -0.133333345254262D+00 -0.333333333333294D-01 - 0.397364333278027D-08 0.333333353201508D-01 -0.133333331346512D+00 - 0.333333318432132D-01 -0.397364290170149D-08 -0.198682164470609D-08 - 0.133333345254262D+00 0.333333373069722D-01 -0.333333318432131D-01 - 0.133333329359690D+00 0.397364285226187D-08 -0.451028103753970D-16 - -0.333333373069722D-01 -0.381639164714898D-16 -0.222222225533548D-01 - 0.333333356512877D-01 0.132454748601532D-08 -0.222222223877864D-01 - 0.333333356512877D-01 -0.888888875643341D-01 0.444444434510250D-01 - -0.333333369758353D-01 -0.264909525175480D-08 -0.222222208976701D-01 - 0.444444434510249D-01 -0.222222210632386D-01 -0.333333369758353D-01 - 0.132454773191237D-08 0.177777773804120D+00 -0.888888862397864D-01 - -0.264909522096346D-08 0.529819046794777D-08 0.333333330021925D-01 - -0.222222232156285D-01 -0.888888968361676D-01 -0.222222252024500D-01 - 0.333333331677610D-01 -0.222222232156286D-01 -0.993410849241261D-09 - 0.444444484180788D-01 0.264909554882620D-08 -0.333333321743501D-01 - -0.888888968361676D-01 0.132454776660684D-08 -0.333333320087816D-01 - -0.222222252024500D-01 -0.993410808475259D-09 0.444444484180785D-01 - -0.397364334665806D-08 0.177777793672335D+00 0.425003586837599D+00 - -0.804069563453821D+00 -0.155526809111799D+00 -0.127300977161237D+00 - -0.435356112610019D+00 -0.127300973918825D+00 0.432749200222463D+00 - -0.463885302361024D+00 -0.394428260643576D+01 -0.103349514861483D+01 - -0.711111169349765D+00 -0.631310543776236D+00 -0.711111075514184D+00 - -0.456139688621107D+00 -0.262597113895688D+00 -0.935619006126759D-01 - 0.853333333038852D+01 -0.101840738046504D+01 0.346944695195361D-17 - 0.177777793672335D+00 -0.529819111326491D-08 -0.798936990697482D+00 - 0.448411283792146D+00 -0.445902523606785D+00 -0.248888894474054D+01 - 0.682974866934775D+00 0.436530429605206D+00 -0.267729685849380D+00 - 0.329840303808488D-01 -0.157887526605646D-01 -0.210519706521667D+01 - -0.440477604514378D+00 -0.157887548673827D-01 -0.592464668437917D-01 - -0.452358459274007D+00 -0.248888885479256D+01 -0.620764133425253D+00 - -0.105050169707024D+00 0.853333333627688D+01 0.589805981832114D-16 - 0.529819112540797D-08 0.177777793672335D+00 -0.463885302051267D+00 - -0.767005176082769D-01 -0.627646696038941D+00 0.132122716746357D+00 - -0.613603928805040D+00 0.267877279277692D+00 -0.177777789193265D+00 - 0.425003586527843D+00 0.118895138543800D+00 -0.711111055259259D+00 - -0.103327083589640D+00 0.264909565117488D-08 0.423802600008169D+00 - -0.832940755344740D+00 -0.180772327502350D+01 0.622721933256906D-01 - -0.767005175748794D-01 -0.439019954580887D+00 0.533333330935365D+01 - -0.155526809111799D+00 0.444444434510248D-01 0.397364330762678D-08 - 0.444444484180786D-01 -0.711111422352108D+00 -0.397364344900675D-08 - -0.165134701523197D+00 -0.102318698835432D+00 0.264909553624945D-08 - 0.256945011052937D+00 -0.465086288634442D+00 0.703392708447647D-01 - -0.414498746748228D+00 -0.233725887946266D+00 -0.177777703669409D+00 - 0.119903523169360D+00 0.143054958627586D+00 -0.765344857050011D+00 - 0.199281687625254D-01 -0.888888968361675D-01 0.693757825718313D-01 - -0.825032403850079D+00 0.446450613374174D+00 -0.444152420570767D+00 - 0.640000020241474D+01 0.132454762262479D-08 -0.110124315396974D+00 - 0.587567237445498D+00 0.193603161578860D+00 -0.123066588149835D+00 - 0.133333345254262D+00 -0.248888931556130D+01 -0.622514229246413D+00 - 0.223651770653385D-01 0.448411284374385D+00 0.179276607680509D+00 - 0.177777853510618D+00 -0.241634317864633D+00 0.199281722700645D-01 - -0.440477605096617D+00 0.656562501030762D-02 0.329840303808488D-01 - 0.177777766140688D+00 0.112097906968375D+00 -0.442438274279992D+00 - 0.197290880079674D+00 0.730634999939031D-01 -0.102818620203706D+00 - -0.248888883065003D+01 -0.133333345254262D+00 0.132454766122239D-08 - 0.991556334332273D-01 -0.888888968361675D-01 0.530172076229494D+00 - 0.636504718754438D-01 -0.101390684217054D+00 0.425003586527739D+00 - -0.340099903186560D+00 0.173059243964005D+00 -0.758458815555223D+00 - -0.487888450586691D+00 -0.388297486693474D+01 0.116958731223929D+00 - -0.127300977161238D+00 0.177993231670849D+00 -0.132454758099143D-08 - -0.133333345254262D+00 -0.888888968361676D-01 -0.622514246095814D+00 - -0.456139688666300D+00 -0.425019938722304D-01 -0.782742800082084D-01 - 0.653494546239614D+01 -0.888888968361676D-01 0.433360944936882D+00 - -0.466762770869467D+00 -0.132454782341904D-08 -0.132871235255639D+00 - 0.133333345254262D+00 -0.120212744429989D+01 0.274353806732660D+00 - 0.155517748587701D+00 -0.108624828110552D+00 -0.466403074422813D+00 - -0.268507031756110D+00 0.339798587681473D-01 -0.121843004851579D+00 - 0.182328504051277D-01 0.117565757217930D+00 0.244659884891375D+00 - -0.113094532917365D+00 0.444444434510248D-01 -0.627646712085694D+00 - -0.140395944507876D+01 -0.264909559913318D-08 -0.769027285833470D+00 - -0.306665954884163D-01 0.519838804987068D+01 -0.478457522225852D+00 - 0.174616520370654D+00 0.436646656089675D+00 0.397364337961781D-08 - -0.747065832020383D-01 0.789436098741486D-02 0.448411284374488D+00 - 0.119900026092650D-01 -0.452358459283661D+00 0.230459772682992D+00 - 0.501506540802568D+00 -0.157887526605645D-01 -0.107969201008770D+00 - -0.209524290845090D-01 0.115068116541481D+00 -0.769005332515803D+00 - -0.216650485138514D+01 0.239725924037592D+00 -0.397364326252397D-08 - -0.264909549374873D-08 0.117006482791808D-01 -0.441884750164381D+00 - -0.272181884536958D+00 0.444444484180787D-01 -0.410685543964189D+00 - 0.928473697240249D-01 0.110894356458530D+00 0.120831538005136D+00 - 0.177993211742951D+00 0.383502508485038D-01 -0.544297829005559D-01 - -0.316697905229015D-01 0.302877662287213D+00 -0.798936980817197D+00 - -0.152583411866151D+00 -0.767005175748796D-01 -0.333333353201507D-01 - -0.463885302361023D+00 0.118895138632551D+00 0.333333330021924D-01 - -0.100790190941355D+00 -0.782742800082083D-01 -0.222222232156285D-01 - 0.181984321052660D+00 -0.178756705869620D+01 0.301940764173950D-01 - -0.222222225533548D-01 0.333333369758353D-01 -0.333333356512877D-01 - -0.430972550221036D+00 0.192666086954839D+00 -0.333333333333293D-01 - -0.222222252024500D-01 -0.305706914761418D+00 0.423802600254425D+00 - -0.626515880057799D+00 -0.102850576752785D+00 0.143714199784926D+00 - -0.333333316776447D-01 0.233815726877008D-01 -0.102318699052831D+00 - 0.333333373069722D-01 -0.427144727492337D-01 -0.799604793986740D-01 - 0.422485814465949D+00 -0.461986367705865D+00 -0.222222205665333D-01 - -0.314543324279253D-01 -0.837458236556508D-01 0.321014107825317D+00 - 0.216307771022146D+00 0.333333313465079D-01 0.255425445075170D-01 - -0.464577820716195D+00 0.377016014084583D+01 -0.104656465004261D+00 - 0.381605998926605D-01 0.266872514082266D-01 -0.465495379799697D+00 - 0.168706134525557D+00 -0.132610262070168D+00 -0.245092965555043D+00 - 0.118211525857397D+00 -0.255593117848935D-02 0.122082027572558D+00 - -0.306633695431777D+00 0.135457027927236D+00 -0.318971922184084D-01 - -0.631220516106075D-03 -0.517783618214963D-01 -0.996409320543282D-02 - -0.785501074502473D+00 0.107560094982963D+00 -0.222222232156286D-01 - 0.248650987457036D+00 -0.112114197871456D+00 0.337555174503348D-01 - -0.147435364278717D+01 0.333333356512877D-01 0.466915616707321D-02 - 0.333333353201508D-01 -0.222222208976700D-01 0.244659891454430D+00 - 0.369650652569629D+01 -0.427144724328878D-01 -0.634424210635092D+00 - 0.808899291855161D-01 -0.109801585605604D+00 0.333333321743500D-01 - 0.109127689304825D+00 -0.222222228844916D-01 0.119900026092649D-01 - 0.199281722700648D-01 0.112097906825216D+00 0.665679135219834D-01 - -0.282711746772118D-01 0.446450614608771D+00 -0.333333334988978D-01 - -0.440477604514378D+00 -0.355101357759821D-01 -0.726089239476159D+00 - 0.146316289208879D+00 -0.544297862021211D-01 0.270464879219218D-01 - 0.240130754603640D+00 0.333333338300347D-01 -0.248134951681984D+00 - -0.804069552770889D+00 -0.333333318432131D-01 -0.732946648868801D-01 - -0.333333373069724D-01 -0.333333369758355D-01 0.551529696021696D-02 - 0.447004138724485D+00 -0.123066588788963D+00 -0.465661121145641D+00 - 0.547392826628048D+00 -0.449792196759104D-01 -0.222222252024502D-01 - 0.182445210601358D-01 0.243320630664869D+00 -0.111327865763661D+00 - -0.349012779901289D+00 0.655319019815345D-03 0.725664387554519D-01 - 0.651243843618763D-01 -0.441749454349066D+00 -0.120248032219085D-04 - 0.113650666136063D+00 0.994390662733311D-01 -0.242175939655010D-01 - -0.333333353201506D-01 0.333333373069724D-01 -0.397364326252397D-08 - -0.333333373069724D-01 0.333333353201507D-01 -0.133333345254262D+00 - -0.333333373069724D-01 -0.133333345254262D+00 0.397364330762678D-08 - -0.333333353201507D-01 0.397364327553440D-08 0.133333345254262D+00 - 0.133333345254262D+00 0.333333353201507D-01 -0.397364332410666D-08 - 0.333333373069723D-01 0.346944695195361D-17 0.589805981832114D-16 - 0.333333356512876D-01 -0.222222252024501D-01 0.132454766122239D-08 - -0.264909549374873D-08 -0.222222252024501D-01 0.333333356512877D-01 - -0.333333369758355D-01 -0.888888968361676D-01 0.444444484180786D-01 - -0.222222232156285D-01 -0.888888968361676D-01 -0.264909551586645D-08 - 0.132454777874991D-08 0.444444484180786D-01 -0.222222232156285D-01 - -0.333333369758354D-01 0.177777793672335D+00 0.529819112540797D-08 - 0.333333369758354D-01 -0.222222232156284D-01 -0.888888968361675D-01 - 0.444444484180787D-01 -0.222222252024502D-01 0.333333369758355D-01 - -0.222222232156285D-01 -0.333333356512877D-01 -0.132454782341904D-08 - 0.264909553624945D-08 0.444444484180785D-01 0.264909554362203D-08 - -0.333333356512877D-01 -0.222222252024501D-01 -0.132454771456514D-08 - -0.888888968361676D-01 -0.529819111326491D-08 0.177777793672335D+00 - 0.423802600254425D+00 0.429916645738483D+00 -0.556813313545281D+00 - -0.432242448002281D+00 -0.465086288880698D+00 -0.165134701523197D+00 - -0.155445003955293D+00 -0.116222334172140D+00 -0.155445007225272D+00 - -0.327539411094902D+01 -0.711111279633639D+00 -0.711111402113397D+00 - -0.170238295783139D+01 -0.124355962086711D+01 -0.458972242526992D+00 - -0.104083408558608D-15 0.853333302464586D+01 -0.634424159731604D+00 - 0.177777773804120D+00 -0.509853332106426D+00 -0.397364328247329D-08 - -0.440150778579574D+00 -0.578020915266622D+00 0.490260189630038D+00 - 0.446450614608772D+00 0.120557981258167D+00 -0.248888930937624D+01 - -0.248888917284283D+01 0.388909351433209D+00 -0.488645812468298D+00 - -0.626515907578016D+00 0.191287627190643D+00 -0.154277973770670D+01 - -0.398628697936860D+00 0.191287616485946D+00 0.164509779610278D+01 - 0.223651770653384D-01 -0.442438275514589D+00 0.853333364019593D+01 - -0.100613961606655D-15 0.529819046794777D-08 0.177777793672335D+00 - 0.119903523386772D+00 -0.102318699052844D+00 0.703392708447647D-01 - -0.458972243150384D+00 -0.388866986393524D+00 -0.516460902835993D-01 - -0.742986218499402D+00 -0.177777734695021D+00 0.187017016251917D+00 - -0.413168500103929D+00 0.429916646361875D+00 -0.711111285946989D+00 - -0.116222334172140D+00 0.432282066854193D+00 0.198682173317699D-08 - 0.444444434510249D-01 0.212982945459771D+00 -0.520242769616927D+00 - -0.677799628374643D+00 -0.516460877242796D-01 0.533333331805070D+01 - -0.972989646122233D-01 0.132454780563812D-08 -0.711111360000221D+00 - -0.198682167940056D-08 0.444444434510248D-01 -0.147923562932469D+01 - 0.132454779436242D-08 -0.546423868374059D+00 -0.456606821252724D+00 - 0.117025534438650D+00 0.203245625296623D+00 0.202359411966639D+00 - -0.123066588788950D+00 -0.543227148531144D+00 0.498148715919206D+00 - -0.656592022640917D+00 -0.888888968361676D-01 0.177777822485006D+00 - 0.640000037164977D+01 -0.381023130703426D+00 0.149641119165277D+00 - 0.132454771283042D-08 0.133333345254262D+00 0.490260190951903D+00 - -0.410074674210465D+00 0.164314555701750D+01 -0.398628699258725D+00 - -0.248888927507652D+01 -0.102818620203706D+00 0.202359415990279D+00 - 0.422504659207567D+00 0.388909351433209D+00 0.991556340723428D-01 - -0.248888919320983D+01 -0.523439573434387D+00 -0.390740171413762D+00 - -0.133333345254262D+00 0.132454767119705D-08 -0.888888968361676D-01 - 0.121432031280836D+00 -0.465086288634338D+00 0.777224869005713D-01 - -0.799604793986740D-01 0.382637905856410D+00 -0.825032360640951D+00 - 0.181984302229272D+00 -0.133333329359690D+00 -0.993410631533465D-09 - -0.103847213900783D+00 -0.155445003955293D+00 -0.888888862397862D-01 - -0.332055736147309D+01 0.429916646361771D+00 -0.632214866071894D+00 - -0.993410909522902D-09 -0.888888862397862D-01 0.122206925810800D+00 - 0.423393509089066D+00 -0.410074616064087D+00 0.133333329359690D+00 - -0.473910969656187D+00 -0.726818963301096D-01 0.632323260928749D+01 - -0.454151597897135D+00 -0.167160417078412D+00 -0.104010696364794D+00 - -0.162858043361822D+01 -0.467277168974478D+00 0.181006508984088D+00 - 0.705844463029699D-01 -0.428671543987544D-01 0.223344474076122D+00 - -0.464402528280946D+00 0.120488351147106D+00 0.453834593388738D-01 - -0.152101431695766D+01 0.188873594785738D+00 -0.134018986021218D+00 - 0.444444441132987D-01 0.551529696021702D-02 -0.264909521749401D-08 - -0.388867010330361D+00 -0.832940790559319D+00 0.397364286613966D-08 - 0.248650993468916D+00 0.541010049671861D+01 -0.457193491305743D+00 - 0.270823515021380D-01 0.200671599058861D+00 -0.729575042967723D+00 - -0.956438268137174D-01 0.490260190952008D+00 0.719667450725111D+00 - 0.447139434539802D+00 -0.442438274280096D+00 0.256128857394130D+00 - -0.108571556086127D+00 0.191287627190643D+00 0.174401605585283D+00 - -0.149761642238353D+01 -0.397364291297719D-08 0.110108024350735D+00 - -0.446696683567488D+00 -0.407000637608325D+00 -0.264909528471455D-08 - 0.186752701094924D+00 0.444444484180785D-01 -0.400451249228254D+00 - -0.569629328009883D-01 0.101117653794475D+00 0.943308178568103D-01 - -0.321739828678436D-01 0.118375008321408D+00 0.119903523169347D+00 - 0.122206914778545D+00 0.260269815400999D+00 0.381605998926606D-01 - -0.427144691013402D-01 -0.458972242526992D+00 -0.333333318432131D-01 - -0.222222210632385D-01 -0.578020885841347D+00 0.258230365546843D-01 - -0.516460877242795D-01 0.333333326710554D-01 -0.105029924498291D+00 - -0.726818963301096D-01 -0.554246475911661D-01 -0.470425181123530D+00 - -0.333333320087816D-01 0.236583633371361D-01 0.123866616274878D+00 - 0.182151168531531D+00 -0.126705283431522D+00 -0.818976511606337D+00 - -0.445753620009178D-01 -0.458675196724520D+00 -0.100140194649620D+00 - -0.222222220566492D-01 -0.101733871075085D+00 0.333333328366238D-01 - 0.432282067636144D+00 -0.333333328366239D-01 0.421611719914286D+00 - -0.252537672193339D+00 -0.222222220566494D-01 0.333333326710554D-01 - -0.614917605333938D-01 0.373624564546296D-01 0.223658967537568D+00 - -0.640119039356185D+00 -0.752739914611354D-01 -0.132314636326313D+01 - -0.506247868484496D+00 -0.462430200208400D+00 0.333333318432131D-01 - 0.363346162016265D-01 0.358930222095976D+01 -0.222222210632385D-01 - 0.572508014648484D-01 0.677919977704542D-01 -0.333333320087816D-01 - 0.121299511008576D+00 0.106633747113375D+00 -0.299869096331179D+00 - -0.101179714936515D+00 -0.222222212288071D-01 -0.427144745798903D-01 - -0.142334469816737D+01 -0.449792196759104D-01 -0.137963249224272D+00 - 0.190278356767316D+00 0.190533287378333D+00 0.333333326710555D-01 - 0.279235987014923D+00 0.111818503442273D+00 0.188873605277382D+00 - 0.882032362009730D-01 -0.333333323399186D-01 -0.222222232156285D-01 - 0.202359415990279D+00 0.991556334332403D-01 0.174401605585283D+00 - -0.622413115169871D+00 -0.122783155948873D+00 0.387736444514510D+01 - -0.439561613209801D-01 -0.398628697936860D+00 0.333333356512877D-01 - -0.556813366203218D+00 0.333333353201507D-01 0.313379615900435D-01 - -0.218000381052097D-01 -0.435690828934722D+00 0.279393143780639D+00 - -0.333333373069721D-01 -0.217548558024595D+00 0.498148717475002D+00 - 0.791541773607939D+00 0.488437639660613D+00 -0.333333369758352D-01 - 0.212059884048755D+00 -0.887326456031909D+00 -0.222222232156285D-01 - -0.222222252024500D-01 -0.333333339956032D-01 0.333333343267400D-01 - -0.475316329323345D+00 -0.127891404365381D+00 -0.385205216538220D+00 - 0.208157634282271D+00 -0.236206808836205D+00 -0.745863839216205D-01 - 0.953186414159333D-01 0.117799270295876D+00 -0.333333353201508D-01 - 0.333333333333294D-01 0.333333353201508D-01 -0.397364291297719D-08 - -0.333333333333293D-01 -0.133333345254262D+00 -0.333333373069721D-01 - 0.198682173317699D-08 -0.133333329359690D+00 0.133333345254262D+00 - 0.333333373069722D-01 -0.333333318432131D-01 0.397364302573422D-08 - 0.133333331346511D+00 -0.397364344900675D-08 -0.104083408558608D-15 - 0.333333318432132D-01 -0.100613961606655D-15 -0.222222223877863D-01 - 0.333333356512877D-01 0.333333356512877D-01 0.132454767119705D-08 - -0.222222225533548D-01 -0.264909528471455D-08 0.444444434510249D-01 - -0.888888862397862D-01 -0.333333369758352D-01 -0.222222210632385D-01 - 0.132454762262479D-08 -0.333333369758353D-01 -0.264909532851632D-08 - -0.888888875643339D-01 0.444444434510248D-01 0.177777773804120D+00 - -0.222222208976701D-01 0.529819046794777D-08 0.333333331677609D-01 - -0.222222232156285D-01 -0.222222232156286D-01 -0.888888968361676D-01 - 0.444444484180785D-01 0.333333330021924D-01 -0.222222252024500D-01 - -0.993410909522902D-09 0.132454780563812D-08 -0.333333320087816D-01 - -0.888888968361675D-01 -0.222222252024500D-01 0.444444484180786D-01 - -0.993410811944706D-09 -0.333333321743501D-01 0.264909565117488D-08 - -0.397364328247329D-08 0.177777793672335D+00 0.432282067636144D+00 - -0.972989646122233D-01 -0.630975789866793D+00 -0.456606822034675D+00 - -0.362065809857206D-01 0.898903966169104D+00 -0.362065757076357D-01 - -0.435690835639979D+00 -0.711111320076214D+00 -0.587668104723848D+01 - 0.853333307284147D+01 -0.289652202918234D+00 0.693889390390723D-17 - 0.177777773804120D+00 -0.132454780130131D-08 -0.607991422076996D+00 - 0.657982750580749D+00 0.498148717475002D+00 -0.248888923515252D+01 - -0.399242158399370D+01 -0.458675287404317D+00 0.257019978973971D+01 - 0.657982765756909D+00 -0.390740172969558D+00 0.422504659207567D+00 - 0.517129638668077D+01 0.853333359133688D+01 -0.138777878078145D-16 - 0.529819054080616D-08 0.177777793672335D+00 -0.614917605333938D-01 - -0.456606821252620D+00 0.117192297723900D+00 0.181032732787689D-01 - -0.312673776012863D+00 0.426458688680364D+00 -0.649075539161545D+00 - 0.123866616465194D+00 -0.543227144708209D+00 0.792422203869994D+00 - -0.119608355946705D+00 -0.362065757076357D-01 0.615409883907027D+01 - -0.133333329359690D+00 -0.331137001065990D-09 -0.331136753434214D-09 - -0.888888862397861D-01 -0.554060101558194D+01 -0.888888862397862D-01 - 0.133333329359690D+00 -0.574851001610695D+00 0.763849841666925D-02 - -0.100922711213615D+00 0.188095621628302D+00 0.884571439710093D+00 - 0.586531654136248D-01 -0.123736268849940D+01 0.212059884048755D+00 - -0.520242849768536D+00 0.190533305781179D+00 -0.543919396222164D+00 - -0.100463108713670D+01 0.266992593450113D+01 -0.328991394978985D+00 - 0.842589729979194D-01 0.657982750580749D+00 0.557923424239258D+01 - -0.390740171413865D+00 0.267668166711477D+01 -0.397364289216051D-08 - -0.264909526389787D-08 0.444444447755724D-01 -0.264909520708567D-08 - 0.666191481446713D+00 0.444444484180787D-01 0.397364281756740D-08 - 0.503683672350647D+00 -0.363820167217111D+01 0.238102879252563D+00 - -0.126903580806258D+00 -0.354672992799101D+00 0.383869239545548D+00 - 0.333333353201507D-01 -0.333333328366239D-01 -0.133333329359690D+00 - 0.133333345254262D+00 -0.397364289216051D-08 0.333333373069722D-01 - 0.397364288001745D-08 0.133333331346511D+00 0.333333323399185D-01 - -0.198682167940056D-08 0.693889390390723D-17 -0.138777878078145D-16 - 0.333333356512877D-01 -0.222222220566494D-01 -0.264909526389787D-08 - -0.888888862397861D-01 0.132454771283042D-08 -0.264909524524959D-08 - -0.888888875643340D-01 -0.333333369758353D-01 -0.222222213943755D-01 - 0.444444434510248D-01 0.177777773804120D+00 0.529819054080616D-08 - -0.222222232156285D-01 0.333333326710554D-01 0.444444484180787D-01 - -0.331137001065990D-09 -0.222222252024500D-01 0.444444484180785D-01 - -0.333333325054870D-01 -0.888888968361676D-01 -0.331136815884259D-09 - 0.132454779436242D-08 -0.132454780130131D-08 0.177777793672335D+00 - -0.839190733348003D-02 0.441355711178772D+00 -0.591832774382373D+00 - -0.279317123683047D+01 -0.525609909388123D+00 -0.226698852957554D-01 - -0.953705224939672D-02 0.104083408558608D-16 -0.225665543003955D+01 - 0.177777776453216D+00 0.871911861760401D+01 -0.132454757925671D-08 - 0.272435654551257D-02 -0.443739984173020D+00 -0.457213600979758D+00 - -0.598916672745566D+00 -0.289441763408416D-01 0.438352137286415D+00 - -0.533593171078113D+00 -0.448093927173964D+00 -0.104948748029310D+01 - -0.470002478590613D+00 -0.671342075114617D-01 -0.412458049977707D-01 - -0.396852593098610D+00 -0.238636911077804D+01 0.834754804931801D+01 - 0.208166817117217D-16 0.397364284011881D-08 0.177777768505930D+00 - -0.573534688255120D+00 -0.138673129235951D-01 -0.138937939913487D+01 - -0.447533177710095D+00 0.239334047445385D+00 -0.616646389781120D+00 - 0.441133231452402D+00 -0.322697363481113D+00 0.198682136888506D-08 - -0.425755261361222D-01 -0.953705224939674D-02 -0.428838411636122D+00 - -0.813630674767233D+00 0.549351006047848D+01 0.444444441132988D-01 - 0.444444441132987D-01 0.132454757925671D-08 -0.198682136715034D-08 - -0.908197188690829D-02 0.132454757969039D-08 -0.107545146789098D+00 - 0.445148904715848D+00 -0.497836238465570D+00 0.322339165741048D-02 - 0.125390198268767D-01 -0.891519347073615D+00 0.142395158340666D+00 - -0.326651184313329D+00 -0.443403734361606D+00 0.110679906707406D+00 - 0.436917870973906D+00 -0.394802044007915D+00 -0.279833859743167D-01 - 0.440794961714800D+00 -0.510625063094524D+00 -0.623730354371694D+00 - -0.580731862767787D+00 -0.450536751602349D+00 -0.107751946964488D+00 - -0.447848159061530D+00 -0.141196990514255D-01 -0.171486369430625D+00 - -0.412458049977706D-01 0.821489757818929D-01 -0.423005714530245D-01 - -0.888888849152387D-01 0.993410499260799D-09 0.623982315376076D+01 - -0.267438987615715D+01 -0.133333327372868D+00 -0.218103064542051D+01 - 0.993410726943256D-09 0.112841990205345D+00 0.133333327372868D+00 - -0.888888849152387D-01 0.176949754410537D+00 -0.440533263431293D+00 - 0.842383672412862D-01 0.818946081987355D-01 0.213634143603343D-01 - -0.110515044352643D+00 0.137965438182606D+00 0.141687577606259D-02 - 0.231828555571586D+00 -0.331136893946815D-09 -0.888888888888817D-01 - 0.445148904715744D+00 0.272435654551253D-02 -0.133333333333333D+00 - -0.556041579745157D+00 -0.266640709115832D+01 0.155865014859150D-01 - 0.469116579857731D-02 0.733548836824532D-02 -0.485835181012328D+00 - -0.237750795523795D+01 0.649825549440189D+01 -0.442562974127378D+00 - 0.617929344433443D-02 0.133333333333333D+00 -0.888888888888817D-01 - -0.331136880069027D-09 0.209600295531414D+00 -0.108675665129331D+00 - -0.101524591127919D+00 -0.111390256834994D+00 0.240195840421465D-01 - -0.135059588109032D-01 0.440794961714904D+00 -0.289441763408416D-01 - -0.943344832196886D+00 0.523507800595729D+01 -0.568830404374110D+00 - -0.106130784900325D+01 -0.132454753632230D-08 -0.198682135067046D-08 - 0.444444421264775D-01 -0.447670297459601D+00 -0.498437166842450D+00 - -0.254385366423233D-01 -0.652148102493521D+00 0.198682135327255D-08 - -0.132454758272615D-08 0.444444421264770D-01 0.126290478065154D+00 - 0.266097435608180D-02 0.729291041559547D-01 0.111707177869548D+00 - -0.526609359976580D+00 -0.354445003304978D-01 0.154324498092375D+00 - -0.333333330021924D-01 -0.222222217255125D-01 -0.333333328366240D-01 - -0.443739984173020D+00 -0.110543486873917D+00 0.322339165741053D-02 - 0.269940885432534D-01 -0.333333338300347D-01 -0.128214910492581D+01 - 0.445485154527261D+00 -0.596664203985485D+00 -0.222222227189232D-01 - 0.333333336644663D-01 -0.111542315514785D+00 0.114333848709054D+00 - 0.213161750611677D+00 0.469116579857731D-02 0.191353578160734D-01 - 0.513947556857219D-02 0.333333328366240D-01 -0.999765672352305D+00 - -0.138692005999766D+00 -0.442619598398164D+00 -0.456211977270992D+00 - -0.524951826234972D+00 0.382275547379827D+01 0.714815102087507D-02 - 0.446325914761386D+00 0.333333338300347D-01 -0.222222227189232D-01 - 0.333333336644662D-01 -0.222222217255125D-01 -0.333333330021925D-01 - -0.303965947487774D+00 0.161212431044461D+00 0.109968742260974D+00 - -0.327340992508068D-02 -0.108378540579299D+00 0.225959370342343D+00 - -0.152465638738923D+00 0.105257652959712D-01 0.113546557092860D+00 - 0.265052677126161D-01 0.197680146341723D+00 -0.134291359298861D-01 - 0.441040729827234D+00 -0.135059588109031D-01 -0.141196990514253D-01 - -0.448093927173964D+00 -0.538939504742134D-01 -0.609453081596340D+00 - -0.120733534337126D+01 -0.308480782070306D+00 -0.333333323399186D-01 - -0.333333321743501D-01 -0.222222207321016D-01 0.333333315120761D-01 - -0.538304145544366D+00 0.333333313465076D-01 0.364391119296002D+01 - -0.222222217255124D-01 -0.386425615540782D-01 0.652936564933775D-02 - 0.155004941299766D+00 -0.109380232016846D+00 -0.468313401420254D+00 - -0.222222217255125D-01 0.333333323399188D-01 -0.128208792393058D-01 - -0.951614331220735D+00 -0.278699191351080D-01 0.441218591429268D+00 - -0.266458092075852D-01 -0.537553772328668D+00 -0.333333313465078D-01 - 0.333333315120762D-01 -0.222222207321017D-01 -0.447683169308277D+00 - -0.333333321743502D-01 0.112645202076650D+00 0.103372970178638D+00 - -0.133333333333333D+00 -0.198682135067046D-08 -0.333333308498023D-01 - 0.333333333333293D-01 -0.333333328366240D-01 -0.333333323399186D-01 - 0.397364290777302D-08 0.198682136888506D-08 0.133333331346512D+00 - 0.104083408558608D-16 -0.133333327372868D+00 0.208166817117217D-16 - -0.888888888888817D-01 -0.222222217255125D-01 -0.132454753632230D-08 - 0.333333311809393D-01 -0.222222223877863D-01 -0.333333321743501D-01 - -0.264909525565793D-08 0.444444441132988D-01 0.993410499260799D-09 - -0.888888875643341D-01 0.177777776453216D+00 0.397364284011881D-08 - -0.331136893946815D-09 0.444444421264775D-01 -0.333333330021924D-01 - -0.222222202353963D-01 -0.222222217255124D-01 0.333333331677609D-01 - 0.444444421264770D-01 0.132454757969039D-08 -0.888888849152387D-01 - -0.331136895681539D-09 -0.132454757925671D-08 0.177777768505930D+00 - -0.528362521138210D+00 0.101949818929269D-01 0.445485154527261D+00 - -0.185608600045131D+01 -0.328236570410386D+01 -0.443760330952013D+00 - -0.338235754667383D+00 -0.610691814675820D+00 -0.447755657436466D+00 - -0.564495020766243D-01 -0.632309499430927D+00 -0.101896917183668D+01 - -0.908197188690837D-02 -0.185017763193124D+00 0.000000000000000D+00 - 0.177777776453216D+00 0.896072046879986D+01 -0.410740597368850D-01 - -0.269167391870933D-01 -0.397364274297429D-08 0.433491806108916D+00 - -0.620624085682157D+00 0.438534367288919D+00 -0.431530383045995D-01 - -0.193609989705100D+01 -0.276940814493164D-01 -0.537466421465317D-01 - 0.441040729827234D+00 -0.540057306705996D+00 -0.639506753416452D+00 - -0.447964240243795D+00 -0.211905337407854D+00 -0.287730245377608D+01 - -0.423005714530244D-01 -0.451971017914857D+00 -0.360580431632303D+00 - -0.157739944510681D+01 -0.341814756733895D+00 0.810594619814180D+01 - 0.346944695195361D-16 0.397364299450920D-08 0.177777771155025D+00 - 0.178328400984061D+00 -0.712507446267380D+00 -0.520790863322292D+00 - 0.445128557936854D+00 0.248449042136156D-02 0.433360944936985D+00 - -0.111542315514798D+00 -0.696011541078200D+00 -0.455397082779951D+00 - 0.114677075433105D+00 -0.162294619689708D+01 -0.818946399691242D-01 - 0.264909520361623D-08 0.259593484358831D+00 0.125390198268767D-01 - -0.126389996787540D+01 -0.410740597368852D-01 -0.443306082899599D+00 - -0.102850576752798D+00 0.444444441132988D-01 0.397364276118889D-08 - -0.169584800296108D+00 0.264909517065648D-08 0.444444484180786D-01 - -0.588209156380851D+00 -0.448807302800179D-01 0.559627481463460D+01 - 0.111791512814051D+00 -0.284282027667143D+00 0.307672907131627D+00 - -0.397364281756740D-08 0.946030325441512D-01 -0.397805118991864D-01 - 0.252443428995933D+00 0.357637243330130D-01 -0.490159308846521D+00 - -0.252305127527711D-01 -0.888888862397861D-01 -0.641289504746973D+00 - -0.599903907737236D+00 0.189619158396522D+00 0.436646656089571D+00 - 0.993410765107172D-09 -0.450354521599844D+00 -0.167256435812214D+00 - 0.197209212847882D+00 0.120171591672151D+00 0.440924648644968D+00 - 0.613705829237520D+01 -0.109380232016833D+00 -0.109801585605591D+00 - 0.133333329359690D+00 0.326651152542940D+00 -0.160971969531389D+01 - -0.157810215492483D-01 0.114470275257689D+00 -0.543135460814352D+00 - 0.213634143603343D-01 -0.722439809992053D+00 -0.431530383045993D-01 - 0.239693026130336D+00 -0.682416117806190D-01 -0.317308312573930D+01 - -0.133333329359690D+00 -0.450426985368523D-01 0.135992175075921D-01 - 0.993410762938768D-09 -0.305688713972547D+00 -0.888888862397862D-01 - -0.449214302459362D+00 0.403171782354059D-01 0.112726748009225D+00 - 0.324662978507306D+00 -0.248385539671400D+00 0.513947556857214D-02 - 0.795418797360703D-02 0.288427288044077D+00 0.665264933889497D+01 - 0.545874417758382D-01 -0.993410654084870D-09 -0.888888888888817D-01 - 0.115636181249949D-01 0.111678735348274D+00 0.121583491402136D+00 - 0.165865198300522D+00 0.133333333333333D+00 0.167497946370066D-01 - -0.626133403251292D+00 -0.298809484544066D+01 -0.443403734361502D+00 - -0.441699809129678D+00 -0.215663775112732D+01 -0.888888888888817D-01 - 0.101949818929269D-01 -0.133333333333333D+00 -0.993410693116148D-09 - -0.554793354415775D+00 0.446269290490600D+00 -0.385890715080935D+00 - 0.445128557936750D+00 -0.523531221770132D+00 -0.108543981390431D+00 - -0.108753644362499D+00 0.196319387445466D+00 0.203601689780326D-01 - 0.237254884789622D+00 -0.545875819262193D+00 0.440924648645072D+00 - -0.104469914003565D+00 0.113843681642892D+00 0.207095972250882D-01 - -0.131433371960119D+01 -0.447848159061634D+00 -0.637828255046463D+00 - -0.276940814493164D-01 -0.134291359298860D-01 -0.126883028256086D-01 - 0.444444427887508D-01 -0.521521037176130D+00 -0.134391418239721D+01 - -0.245454713305746D-01 0.508068411393213D+01 -0.132454772150403D-08 - -0.198682171236031D-08 0.198682158919494D-08 -0.132454780433708D-08 - 0.441205719580591D+00 -0.566894725583126D+00 0.444444427887510D-01 - -0.816675272366878D+00 -0.409098134003255D+00 -0.447342077482318D+00 - 0.192676159906908D+00 -0.172130108171705D+00 -0.383324628303984D+00 - -0.327340992508067D-02 -0.108624828110565D+00 0.301739119131575D-01 - -0.285614670122910D-01 -0.494926669083393D-01 0.113678240831760D+00 - 0.117800037430956D+00 0.389632393818373D+01 0.333333339956031D-01 - 0.795418797360692D-02 -0.222222232156285D-01 0.249094970075490D+00 - 0.333333369758353D-01 -0.706086211215758D+00 0.110679906707393D+00 - 0.333333343267400D-01 0.447189079759086D+00 0.102873542782501D+00 - 0.255425445075170D-01 -0.333333326710556D-01 -0.443760330952013D+00 - -0.333333323399187D-01 -0.222222212288072D-01 -0.570879745565031D+00 - 0.999053106263093D-02 0.248449042136162D-02 0.105990540041992D-01 - -0.889993113612541D+00 -0.112253479961204D+00 0.197398188672448D+00 - -0.143969325071020D+01 -0.222222252024500D-01 0.894703303701067D-02 - -0.333333356512878D-01 0.485268009997927D+00 -0.333333373069722D-01 - -0.473597921099791D+00 -0.222222232156286D-01 0.445582805989268D+00 - -0.154876981321704D-02 0.333333353201509D-01 -0.441567336806299D+00 - -0.408701994090165D+00 -0.328994572572039D+00 0.120045805898904D+00 - 0.110695538492487D+00 0.205601337586591D+00 -0.110430709408139D+00 - -0.311565321408727D-01 0.102528776150400D-01 0.113468577859692D+00 - 0.177815566877792D+00 -0.222222210632386D-01 -0.107969201008757D+00 - -0.948735918672710D-01 -0.352123354889295D-01 0.333333320087817D-01 - -0.526907330989735D-01 -0.503988683501664D+00 -0.157810215492483D-01 - -0.290502878429284D-01 0.267412077474137D+00 0.112841990205358D+00 - -0.126883028256084D-01 0.190938178976110D+00 0.333333318432133D-01 - 0.103965920180961D+00 -0.447964240243795D+00 -0.495004521309600D+00 - -0.333333328366238D-01 -0.728430888180678D+00 -0.333333326710553D-01 - -0.148842718871494D+01 0.652936564933772D-02 -0.222222210632387D-01 - 0.270464879219218D-01 0.439674586429401D+00 0.333333320087818D-01 - 0.441546811406550D+00 -0.333333318432133D-01 0.139558712905464D+00 - -0.586124936995116D-01 -0.222222220566493D-01 -0.594087098259974D+00 - -0.109577020145554D+00 0.151315461753946D+00 -0.142765642429987D-01 - 0.399535394178192D-01 0.357034272865687D+01 -0.109495474212965D+00 - -0.618914287528079D+00 -0.182874412046206D-01 -0.449101404108931D+00 - -0.352321697281419D+00 0.333333328366238D-01 -0.333333326710554D-01 - -0.222222220566493D-01 0.561941266377407D-02 0.112521670499716D+00 - 0.670257418131212D-01 -0.117188809175994D+00 0.333333338300347D-01 - -0.333333313465078D-01 -0.133333329359690D+00 0.397364276118889D-08 - -0.133333333333333D+00 -0.333333338300347D-01 0.133333331346512D+00 - 0.333333313465076D-01 -0.333333323399187D-01 -0.198682171236031D-08 - 0.333333328366239D-01 -0.333333328366238D-01 0.133333327372868D+00 - -0.198682136715034D-08 0.333333323399187D-01 0.000000000000000D+00 - 0.397364284532298D-08 0.346944695195361D-16 -0.222222228844916D-01 - 0.333333316776448D-01 0.993410762938768D-09 0.444444441132988D-01 - -0.888888888888817D-01 -0.222222227189232D-01 0.333333315120761D-01 - -0.888888875643341D-01 -0.222222212288072D-01 -0.132454780433708D-08 - -0.333333326710553D-01 -0.333333325054870D-01 0.993410726943256D-09 - 0.444444441132987D-01 -0.222222213943756D-01 0.177777776453216D+00 - -0.264909522790235D-08 0.397364299450920D-08 0.333333334988978D-01 - -0.222222205665332D-01 -0.888888862397862D-01 0.264909517065648D-08 - -0.993410693116148D-09 0.333333336644663D-01 -0.333333326710556D-01 - -0.222222207321016D-01 -0.993410680105722D-09 0.444444427887510D-01 - -0.222222220566493D-01 -0.888888849152387D-01 -0.222222222222177D-01 - 0.132454757925671D-08 -0.333333325054871D-01 -0.397364274297429D-08 - 0.444444427887511D-01 0.177777771155025D+00 0.422485814465950D+00 - -0.132871235255639D+00 -0.601005553500566D+00 -0.740021910269305D+00 - -0.571662177181292D+00 -0.159027968472305D+01 -0.397805118991864D-01 - -0.370150713715499D+01 0.445582805989268D+00 -0.103274321854587D+00 - 0.640874601758110D+00 -0.455527943951881D+00 -0.304824750067116D-02 - -0.148457511941618D+01 -0.104083408558608D-16 -0.543677612433218D+00 - 0.907879139780480D+01 0.177777793672335D+00 -0.529819029447542D-08 - -0.187729468953850D+00 -0.448304404853781D+00 -0.604680306940342D+00 - 0.447004138724485D+00 0.439674586429401D+00 -0.199787315205254D+01 - -0.593068777391102D+00 -0.126273667897476D+01 -0.935410791523777D-02 - -0.452242232799192D+00 0.100494623683734D+00 -0.258502117159351D-01 - -0.350767228716857D+01 -0.209524290845090D-01 -0.450426985368523D-01 - -0.751716760966762D+00 -0.215846045325601D+00 -0.217587649490657D+00 - -0.446137126074662D+00 0.798787526940135D+01 0.138777878078145D-16 - 0.397364334145389D-08 0.177777773804120D+00 -0.837458236556506D-01 - -0.466403074422917D+00 0.295153600169841D+00 0.264909519320788D-08 - 0.357637243330130D-01 0.682414925274277D-01 0.423393509089170D+00 - 0.444444427887510D-01 -0.794484770241047D+00 0.182017901402548D+00 - -0.397364276205625D-08 -0.174739295999527D+01 0.119371645469406D+00 - -0.426995959488972D+00 -0.113606620399953D+00 -0.110430709408152D+00 - -0.609473175304926D+00 -0.193726274871989D+01 -0.100140194649633D+00 - 0.554134104916203D+01 0.397364286787438D-08 -0.103274321854587D+00 - 0.440584484035087D+00 -0.596143335713188D+00 0.444444484180787D-01 - 0.264909523831069D-08 0.659106230920631D-01 0.221514821902995D+00 - 0.867497327839485D+00 -0.451795174034815D+00 -0.537344746414379D+00 - -0.551413060414139D+00 -0.111576986290084D+00 -0.230032058191152D-01 - 0.116617855392410D+00 0.882867625041896D-01 -0.735422312651024D+00 - -0.888888875643340D-01 0.993410662758487D-09 0.182445210601356D-01 - -0.612515068713534D+00 -0.798159623021895D+00 0.447139434539698D+00 - -0.109495474212953D+00 0.133333331346511D+00 0.127732025569903D+00 - -0.102507777530324D+01 0.112420636616587D+00 -0.747052732487824D-02 - 0.619199215292620D+01 0.490159189593330D+00 -0.624259825989338D+00 - 0.151182156813737D+00 0.135992175075921D-01 -0.441884750164278D+00 - 0.442751762814102D+00 0.232329354405699D+00 -0.935410791523768D-02 - -0.193082303347516D+00 -0.274289012090355D-01 -0.122783155948860D+00 - -0.384087402945276D+01 0.368893073942688D+00 -0.133333331346511D+00 - -0.208658209812566D-01 -0.142357862240514D+00 -0.613034025512484D-01 - -0.457297660600060D+00 0.993410930339583D-09 0.228093037924339D-01 - -0.888888875643340D-01 0.108542423680007D+00 0.339798587681474D-01 - -0.104656465004248D+00 0.212671748764936D+00 -0.443306082899495D+00 - 0.410685663318541D+00 -0.760977924913696D+00 0.113597394111626D+00 - -0.581085354842887D+00 -0.330049522000450D+01 -0.304824750067119D-02 - 0.440584484034983D+00 -0.625894919013121D+00 -0.442406868541082D+00 - -0.133333345254262D+00 0.447321552082465D+00 0.900126858006158D-01 - 0.894703303701078D-02 -0.888888968361677D-01 0.369215968608113D-01 - -0.275192199500324D-02 -0.132454767770226D-08 -0.192871929576077D+01 - 0.727792998802155D+00 0.678040208061888D+01 0.644576358799070D-02 - -0.237099986251077D+00 -0.445659253660774D+00 0.133333345254262D+00 - -0.888888968361676D-01 -0.132454748731636D-08 0.164627181939929D+00 - 0.121843124205931D+00 -0.182874412046206D-01 0.114253021213433D+00 - -0.111327865763674D+00 -0.168526765236889D+01 -0.470523358817232D+00 - -0.782384611219100D+00 0.442751762814205D+00 -0.649221970872385D+00 - -0.449214302459466D+00 0.117006482791807D-01 0.439787484779936D+00 - 0.287613796039810D+00 0.444444434510249D-01 -0.899106875159322D-01 - 0.495293161082729D+01 -0.132454779089297D-08 0.198682168633946D-08 - -0.258502117159351D-01 -0.225689713567743D-01 -0.377780640437993D+00 - -0.198682164904290D-08 -0.171542547690459D+01 -0.132454776270371D-08 - 0.444444434510248D-01 -0.419017766133645D-02 -0.268359278487962D+00 - -0.445429714387109D+00 -0.400743990785756D+00 0.117565757217943D+00 - -0.636877871818951D-01 0.266872514082267D-01 0.111791512814038D+00 - 0.240485936807356D+00 0.293016170019928D+00 -0.222222232156286D-01 - -0.300130110480275D-01 0.333333325054870D-01 -0.333333356512878D-01 - -0.104010696364807D+00 -0.828112727913594D-01 -0.850820589600184D+00 - -0.448304404853781D+00 -0.333333353201509D-01 0.211617518647313D+00 - -0.222222222222177D-01 0.772044838510284D-01 0.149012810078943D+00 - -0.111526683729691D+00 -0.156889319241585D+01 -0.333333328366239D-01 - -0.230032058191153D-01 -0.261980023915856D-01 -0.275192199500324D-02 - 0.437093714854052D+00 0.236583633371361D-01 0.459983605981262D-03 - 0.394332951259718D+01 -0.154876981321705D-02 -0.799255681345571D+00 - -0.399117726364872D+00 0.979646830461823D+00 -0.781467058067266D+00 - -0.667997094077307D+00 -0.724557120783564D-02 0.443229635227990D+00 - -0.105604366829781D+00 0.181441608455010D+00 0.333333373069723D-01 - -0.222222252024500D-01 -0.227105053215660D-01 0.333333369758354D-01 - -0.154175553512321D+00 0.333333308498025D-01 -0.440227377727670D+00 - 0.243087652802024D-01 -0.222222202353963D-01 -0.333333311809394D-01 - -0.483520856626707D+00 0.832523483521056D-01 0.123275616352739D+00 - -0.673897077521781D-01 0.315100456126253D+00 -0.222222213943756D-01 - -0.285090676336226D-01 0.152326832261071D+00 0.333333325054870D-01 - 0.561941266377408D-02 0.655319019815345D-03 0.208701912122811D+00 - 0.333333323399186D-01 -0.648587058059023D+00 -0.429898522842444D+00 - 0.238730315711182D+00 0.112726748009238D+00 0.110894356458517D+00 - -0.208658209812566D-01 -0.109700551722488D+00 -0.677435963248478D-01 - 0.158597436349001D+00 -0.108571556086114D+00 -0.192779267093348D+01 - -0.220913046416283D-01 -0.419017766133639D-02 -0.446137126074662D+00 - 0.443459174501759D+00 -0.333333323399184D-01 -0.333333333333295D-01 - 0.333333325054869D-01 -0.222222213943754D-01 0.431591228288704D+00 - 0.313379615900435D-01 -0.878937165971934D+00 -0.333333331677610D-01 - -0.699256313464070D+00 0.115964131530725D+00 -0.222222223877864D-01 - -0.224759061020245D+00 -0.113679798542184D+00 -0.175331380647551D+00 - -0.771521520634547D-02 0.107296721658811D+00 -0.173000857255594D-01 - -0.612623531436383D-01 -0.380485265687643D-01 -0.198710841909207D+00 - -0.454330726844565D+00 0.110693284098573D+00 0.352333715413083D+01 - 0.227057384011680D-01 0.333333333333294D-01 -0.333333331677609D-01 - -0.222222223877863D-01 -0.333333318432131D-01 0.333333373069722D-01 - -0.333333373069722D-01 0.333333318432133D-01 -0.133333331346511D+00 - 0.397364337961781D-08 0.397364286787438D-08 -0.198682164904290D-08 - -0.133333345254262D+00 0.333333353201509D-01 -0.333333333333295D-01 - 0.133333329359690D+00 -0.333333353201509D-01 0.133333345254262D+00 - -0.397364281756740D-08 0.333333333333293D-01 -0.104083408558608D-16 - 0.138777878078145D-16 0.333333321743500D-01 -0.222222252024500D-01 - 0.333333320087817D-01 -0.222222252024500D-01 0.993410930339583D-09 - 0.444444484180787D-01 -0.888888968361677D-01 -0.132454776270371D-08 - -0.264909559913318D-08 -0.333333331677610D-01 -0.222222232156286D-01 - -0.222222232156286D-01 0.444444484180786D-01 0.993410765107172D-09 - -0.333333330021924D-01 -0.888888968361676D-01 0.177777793672335D+00 - 0.397364334145389D-08 -0.222222208976700D-01 0.333333369758353D-01 - 0.333333369758353D-01 -0.222222210632386D-01 -0.888888875643340D-01 - 0.444444434510248D-01 0.264909523831069D-08 -0.132454767770226D-08 - -0.333333356512878D-01 -0.222222223877864D-01 0.444444434510248D-01 - -0.333333356512878D-01 -0.222222225533548D-01 0.264909520361623D-08 - -0.888888862397861D-01 -0.132454758099143D-08 -0.529819029447542D-08 - 0.177777773804120D+00 -0.465495379799697D+00 0.421611719914286D+00 - -0.167160417078411D+00 -0.150035824284585D+00 -0.444253527547785D+00 - -0.113606620399953D+00 0.673959077841869D+00 -0.818531714928694D+00 - -0.217492235871785D+01 -0.340067146437765D+01 -0.112935101351766D+01 - -0.115177415817183D+00 -0.636768167580202D+00 0.104083408558608D-16 - -0.459120686018819D+00 0.177777771155025D+00 0.845362238056053D+01 - 0.437093714854052D+00 -0.235113246115256D+00 -0.155077813172281D+01 - -0.397364278460766D-08 -0.426547603361471D+00 0.488437639660613D+00 - -0.667548964057775D+00 0.431591228288704D+00 -0.943848988194486D+00 - 0.209837038193443D+00 -0.209089248343629D+00 -0.821573701055634D+00 - 0.410989824253137D-01 -0.421316472603911D+00 0.272642559097744D+00 - -0.157141943170058D+01 0.186752701094924D+00 -0.441749454349066D+00 - -0.274289012090355D-01 0.980854309694366D+00 -0.406749746186058D+01 - 0.861304428456263D+01 -0.693889390390723D-17 0.397364285920077D-08 - 0.177777776453216D+00 0.122082027572571D+00 -0.467277168974581D+00 - -0.752739914611353D-01 0.268208945950447D+00 -0.619969998886609D+00 - 0.659106230920631D-01 0.426458688680468D+00 -0.522747230618522D+00 - -0.581353797037808D+00 0.193082334620951D+00 -0.982451342669088D+00 - 0.429768202870049D+00 -0.583398362992277D-02 -0.163014383605920D+00 - -0.150035824284585D+00 0.217369197773248D+00 -0.772498794325739D+00 - -0.105604366829794D+00 0.444444427887510D-01 0.488408605551785D+01 - -0.225615119361306D+01 0.198682135413991D-08 -0.198682136715034D-08 - 0.132454758879769D-08 -0.700644971872278D-01 0.444444427887509D-01 - 0.132454757925671D-08 -0.109483018009204D+01 -0.249639288467914D+00 - -0.467212294230830D+00 0.123146462569448D+00 0.208157634282271D+00 - -0.113679798542171D+00 0.151891720848962D+00 -0.888888888888817D-01 - -0.746474730326730D+00 0.197876302385088D+00 0.993410801536365D-09 - 0.684924739571833D+01 0.503683672350544D+00 -0.491815625229990D+00 - -0.602264154173151D+00 0.133333333333333D+00 -0.142879611438248D+01 - 0.467572416284853D+00 0.300899550608779D+00 0.127563457241375D+01 - 0.901878775623544D-01 0.400690828037192D-01 -0.400451249228150D+00 - 0.537344777687814D+00 -0.613034025512484D-01 0.994390662733181D-01 - 0.272642559097744D+00 -0.440513799530385D+00 -0.387395925964941D+01 - -0.213933290800523D+00 -0.133333333333333D+00 0.993410618956719D-09 - -0.888888888888817D-01 0.118211525857384D+00 0.705844463029699D-01 - -0.101733871075072D+00 0.407000606045510D+00 0.260766897522654D+00 - 0.459983605981151D-03 -0.924308788445705D+00 -0.115177415817183D+00 - 0.429768202869945D+00 -0.133333327372868D+00 -0.344679869246664D+00 - -0.888888849152386D-01 0.539401934653019D-01 -0.993410792862748D-09 - -0.102466871818559D+01 -0.451795174034711D+00 -0.734989975475747D+00 - 0.448661511161094D+00 -0.320191936202916D+00 -0.340983685588854D+01 - 0.659015501126883D+01 -0.140516714601046D+00 -0.175979197391937D+01 - 0.133333327372868D+00 -0.976950208849329D-01 -0.888888849152386D-01 - -0.993410671432104D-09 0.953712127513820D+00 -0.130208378238858D+00 - -0.497319526167231D+00 0.109674369708374D+00 0.444444441132987D-01 - -0.217964692929497D+01 -0.380485265687643D-01 0.434558162044302D+00 - -0.127891404365394D+00 0.335889267456595D+00 -0.779525197645250D+00 - -0.294167872203906D+00 -0.132454756190947D-08 0.514317820273781D+01 - 0.428671228359393D-01 0.198682137408923D-08 0.123443380141500D+00 - 0.467572416284957D+00 -0.175587455299397D+00 0.697644979440042D-02 - 0.113650666136076D+00 0.668521718157762D-02 -0.569629328009883D-01 - -0.955089664396135D+00 0.689094112360043D-01 -0.457297660600164D+00 - 0.410989824253137D-01 -0.164922168597229D+01 -0.198682133245587D-08 - -0.110153356441309D+00 -0.132454753285285D-08 0.444444441132987D-01 - -0.432886848033724D+00 -0.318971922184084D-01 0.120488351147119D+00 - 0.243087652802025D-01 0.232215688418520D+00 -0.666546418393240D-01 - 0.310524020544484D+00 -0.333333313465078D-01 0.363346162016265D-01 - 0.247590880397135D-01 -0.459120686018819D+00 0.116617855392397D+00 - -0.222222207321017D-01 -0.976950208849333D-01 -0.100922711213628D+00 - -0.333333315120762D-01 0.952304549269665D-01 -0.440122050148948D+00 - 0.234402240573638D+00 -0.120697657824798D+01 -0.700644971872276D-01 - -0.989466058694387D-01 -0.857577418186016D+00 0.421676594658038D+00 - -0.124006895391490D+01 0.362067815898589D-01 -0.784577801677580D+00 - -0.222222217255124D-01 0.391569362721533D+00 -0.333333323399185D-01 - -0.441825196478525D+00 0.333333321743500D-01 0.333333321743501D-01 - 0.333333323399185D-01 0.775110016201851D+00 -0.222222217255124D-01 - -0.148252057065068D+00 -0.797217454530976D+00 -0.233093339233504D+00 - 0.353642999552571D+01 -0.193364189678205D-01 -0.522538370777019D+00 - 0.333333313465079D-01 -0.222222207321017D-01 -0.333333315120763D-01 - -0.660354461264399D-01 -0.257250828711194D+00 -0.222222217255124D-01 - 0.283520883646175D+00 -0.215371225596739D+01 0.287949882874121D+00 - -0.771521520634554D-02 -0.745863839216205D-01 -0.126903580806245D+00 - 0.145237712551227D+00 -0.105169691019144D+00 0.333333330021924D-01 - -0.333333328366239D-01 -0.111528938123631D+00 0.448375089358379D+00 - 0.689094112360044D-01 -0.242175939655010D-01 0.943308178567973D-01 - 0.173855615721540D+00 -0.764522726898127D+00 0.245046561832728D+00 - 0.108542423680020D+00 0.901878775623541D-01 0.456002040855144D+00 - -0.831553420414389D+00 -0.404415999499651D+00 -0.421316472603911D+00 - 0.333333328366240D-01 -0.333333338300347D-01 0.333333330021924D-01 - -0.222222227189232D-01 0.393023667075697D+01 -0.333333336644662D-01 - -0.222222217255125D-01 0.271513862649779D-01 0.243680364608658D+00 - -0.421592232252939D-01 -0.106493517013090D+00 0.354046797144643D+00 - -0.476479701171324D+00 0.365506166772837D-01 0.333333338300347D-01 - -0.333333336644663D-01 -0.222222227189231D-01 -0.333333323399186D-01 - 0.333333328366238D-01 0.333333323399186D-01 -0.333333328366239D-01 - -0.133333333333333D+00 -0.198682133245587D-08 -0.333333338300347D-01 - 0.198682135413991D-08 -0.133333327372868D+00 -0.333333313465078D-01 - 0.333333338300347D-01 0.397364286613966D-08 0.133333329359690D+00 - 0.333333313465079D-01 -0.397364276205625D-08 0.104083408558608D-16 - 0.133333331346511D+00 -0.693889390390723D-17 0.333333326710555D-01 - -0.222222220566492D-01 -0.222222222222177D-01 0.333333325054870D-01 - 0.993410618956719D-09 -0.132454753285285D-08 -0.888888849152386D-01 - -0.333333336644662D-01 0.444444427887510D-01 -0.222222207321017D-01 - -0.333333334988978D-01 -0.264909521749401D-08 0.444444427887510D-01 - -0.222222205665333D-01 -0.888888862397862D-01 0.177777771155025D+00 - 0.993410662758487D-09 0.397364285920077D-08 -0.222222212288071D-01 - 0.333333326710554D-01 -0.222222213943756D-01 0.333333325054870D-01 - -0.888888888888817D-01 0.444444441132987D-01 -0.333333315120762D-01 - -0.993410792862748D-09 0.132454758879769D-08 -0.222222227189232D-01 - -0.222222228844916D-01 0.444444441132987D-01 -0.333333316776447D-01 - 0.264909519320788D-08 -0.888888875643340D-01 -0.993410631533465D-09 - -0.397364278460766D-08 0.177777776453216D+00 0.421676594658038D+00 - -0.662250650773103D+00 -0.462430200208400D+00 0.763849841666923D-02 - 0.438201887626722D+00 -0.242251207754881D+00 -0.489562546752241D+01 - -0.163014383605920D+00 -0.177120409881612D+01 -0.591350376990207D+00 - 0.734875833281562D+01 -0.938450524025054D+00 0.346944695195361D-17 - 0.177777771155025D+00 -0.132454756537892D-08 -0.626544600123806D+00 - 0.448375089358379D+00 0.752500442065980D+00 -0.266188277230915D+01 - -0.560418837829057D+00 0.234060123103755D+01 0.666191481446713D+00 - -0.319416622956867D+01 0.300899550608779D+00 -0.385205216538220D+00 - 0.566428971422358D+01 0.971790832897837D+01 -0.208166817117217D-16 - 0.397364275164791D-08 0.177777779102311D+00 0.121299511008563D+00 - 0.586531654136248D-01 -0.109350662524136D+01 -0.148252057065068D+00 - -0.383869287463967D+00 -0.123884207624154D+01 -0.637604448659032D+00 - -0.852733399208662D+00 -0.467212294230726D+00 0.533123338373505D+01 - 0.366350518111745D+00 -0.538116965370507D+00 0.215534078784816D+00 - -0.242251207754881D+00 -0.888888849152385D-01 -0.331136979815627D-09 - -0.133333327372868D+00 -0.358544571119687D+01 -0.589677993996361D+00 - 0.133333327372868D+00 -0.888888849152385D-01 -0.331136769046725D-09 - -0.197511015845630D+01 -0.421592232252941D-01 0.265541351310237D+00 - 0.313343868038362D+01 -0.884571487628512D+00 -0.354672992799101D+00 - 0.412409187717544D+00 0.640209977981859D+01 -0.817027401541271D+00 - -0.581717373277501D+00 -0.440513799530489D+00 0.752500442065980D+00 - 0.953186414159463D-01 0.169562572984276D+01 -0.198682138623230D-08 - -0.132454760657860D-08 0.444444447755726D-01 0.919200993113690D+00 - -0.104426578163011D+01 0.198682131857808D-08 -0.132454755150113D-08 - 0.444444447755724D-01 0.333333328366240D-01 -0.333333323399185D-01 - -0.198682138623230D-08 -0.133333327372868D+00 0.333333343267400D-01 - 0.397364281756740D-08 0.133333329359690D+00 0.133333333333333D+00 - -0.198682136715034D-08 0.333333318432131D-01 0.346944695195361D-17 - -0.208166817117217D-16 0.333333330021924D-01 -0.222222217255124D-01 - -0.132454760657860D-08 -0.888888849152385D-01 -0.333333339956032D-01 - -0.264909520708567D-08 -0.888888862397862D-01 0.993410801536365D-09 - 0.444444427887509D-01 -0.222222210632385D-01 0.177777771155025D+00 - 0.397364275164791D-08 -0.222222217255125D-01 0.333333321743501D-01 - 0.444444447755726D-01 -0.331136979815627D-09 -0.222222232156285D-01 - 0.444444447755724D-01 -0.331136753434214D-09 -0.888888888888817D-01 - 0.132454757925671D-08 -0.333333320087816D-01 -0.132454756537892D-08 - 0.177777779102311D+00 0.446325914761386D+00 0.617929344433452D-02 - -0.596594848343733D+00 -0.529112894368343D+00 -0.254785219159148D+01 - 0.225331801734071D-01 0.864668704510606D+01 0.583647834446769D-01 - -0.138777878078145D-16 0.177777779102311D+00 -0.132454758619560D-08 - -0.541714840462038D+00 -0.101627552876491D-01 0.441218591429268D+00 - -0.822492338847048D+00 -0.243123630378323D+01 -0.254385366423234D-01 - -0.702303904519146D-01 0.841997962180304D+01 0.208166817117217D-16 - 0.132454763476786D-08 0.177777768505929D+00 -0.499771964956776D+00 - 0.714815102087513D-02 0.193774636348145D+00 0.446269290490704D+00 - -0.442562974127482D+00 -0.112253479961217D+00 -0.198682138102813D-08 - -0.568229499854550D+00 -0.117335433589129D+01 0.225400432160435D-01 - -0.768763402192321D+00 0.544838640276752D+01 0.998234640693892D-01 - 0.225331801734071D-01 0.198682138016076D-08 0.444444447755726D-01 - 0.132454758966505D-08 -0.447065877856629D+00 0.444444447755725D-01 - -0.271477251616823D-01 0.132454760701228D-08 -0.287244982753939D+00 - 0.441205719580487D+00 -0.109577020145541D+00 -0.200234472746568D+00 - -0.511873336124127D+00 0.135935160581162D+00 -0.580831485684672D+00 - -0.447670297459497D+00 -0.374039535843715D-01 -0.128208792393059D-01 - -0.865628005510519D-02 0.478589784924377D-02 0.110986625621414D+00 - -0.101627552876492D-01 0.628494676387977D+01 -0.260340485763182D+01 - -0.133333327372868D+00 0.331136705295637D-09 -0.888888849152385D-01 - -0.228350032512477D+01 0.133333327372868D+00 0.331137121195590D-09 - -0.888888849152386D-01 -0.333333313465078D-01 0.198682138016076D-08 - 0.333333338300347D-01 0.198682135327255D-08 -0.133333327372868D+00 - 0.133333333333333D+00 -0.138777878078145D-16 0.208166817117217D-16 - 0.333333315120762D-01 0.444444447755726D-01 -0.222222227189232D-01 - -0.132454758272615D-08 0.331136705295637D-09 -0.888888888888817D-01 - 0.177777779102311D+00 0.132454763476786D-08 -0.222222207321017D-01 - 0.132454758966505D-08 0.333333336644662D-01 0.444444421264770D-01 - -0.888888849152385D-01 -0.331136880069027D-09 -0.132454758619560D-08 - 0.177777768505929D+00 -0.472579608214528D+00 -0.267847917767194D+01 - 0.447189079759086D+00 -0.442619598398164D+00 0.167497946370065D-01 - 0.860509051143985D-01 -0.916499412636439D+00 -0.598353249383237D+00 - -0.198421780750003D+00 0.225400432160435D-01 0.887588054371892D+01 - 0.411740668887582D+00 -0.242861286636753D-16 0.177777779102311D+00 - -0.397364275685208D-08 0.441546811406550D+00 -0.495786960909471D+00 - -0.245454713305745D-01 -0.610454673532500D+00 -0.104336246372075D+01 - -0.208824700494918D+01 -0.104872636581573D-01 -0.865628005510512D-02 - -0.447683169308277D+00 -0.275293385990458D+01 -0.765744926934174D-01 - 0.819078612365945D+01 0.346944695195361D-17 0.132454779783187D-08 - 0.177777771155025D+00 -0.657568492998381D+00 -0.123995377205703D+01 - 0.109968742260987D+00 -0.441699809129782D+00 0.999053106263087D-02 - -0.110986673314291D+00 0.447321552082569D+00 0.229960364173811D+00 - -0.271477251616823D-01 0.352966113425460D+00 -0.111175278041583D+01 - 0.860509051143985D-01 0.556390140020443D+01 0.397364276465834D-08 - 0.264909516545231D-08 0.444444447755726D-01 0.264909517282488D-08 - -0.417444747497689D+00 0.444444484180785D-01 0.865615899948125D-01 - 0.107787450611571D+00 -0.397364273430068D-08 -0.111526683729704D+00 - 0.174735931794518D+00 -0.668998442821260D-01 -0.452299279308866D+00 - -0.142765642429986D-01 -0.447342077482214D+00 -0.310007119026672D+00 - 0.172120903307989D+00 -0.680775911920702D+00 -0.888888862397864D-01 - -0.440771799356953D+00 -0.405385627764547D-01 0.478589784924377D-02 - 0.616943168323198D+01 0.112645202076637D+00 -0.104872636581572D-01 - 0.331136900885709D-09 0.287244935061061D+00 0.439787484779832D+00 - -0.300157800461501D+01 0.133333329359690D+00 -0.972826267835064D-02 - -0.178924977406816D+01 -0.133333329359690D+00 0.121715849496206D+00 - 0.331136708331403D-09 -0.109700551722475D+00 0.542917674032530D-02 - -0.252442892293384D-01 -0.888888862397863D-01 0.333333343267400D-01 - -0.333333318432133D-01 0.133333333333333D+00 0.333333323399188D-01 - 0.397364276465834D-08 -0.133333329359690D+00 0.198682158919494D-08 - -0.198682138102813D-08 0.333333328366240D-01 0.133333327372868D+00 - -0.242861286636753D-16 0.346944695195361D-17 -0.222222232156285D-01 - 0.333333320087818D-01 0.331136708331403D-09 -0.888888888888817D-01 - 0.444444447755726D-01 -0.333333321743502D-01 -0.132454772150403D-08 - 0.444444447755725D-01 -0.222222217255125D-01 0.331137121195590D-09 - 0.177777779102311D+00 0.132454779783187D-08 0.333333339956031D-01 - -0.222222210632387D-01 -0.888888862397863D-01 0.264909517282488D-08 - -0.993410654084870D-09 -0.222222217255125D-01 0.444444427887508D-01 - 0.132454760701228D-08 -0.333333330021925D-01 -0.888888849152386D-01 - -0.397364275685208D-08 0.177777771155025D+00 0.443229635227990D+00 - -0.714344921747580D+00 0.865615899948125D-01 -0.367410401003476D+00 - -0.141074960602741D+01 0.181037850711970D+00 0.510830388291555D+00 - 0.644576358799080D-02 -0.441567336806299D+00 -0.282221995614638D+01 - 0.911509349084898D+01 0.105288125472325D+01 -0.312250225675825D-16 - 0.177777793672335D+00 -0.529819034304768D-08 -0.398669620390239D+00 - 0.443459174501759D+00 -0.449101404108932D+00 -0.119883807046724D-01 - -0.143368544226160D+01 -0.330778683070715D+01 -0.972826267835064D-02 - -0.225689713567743D-01 -0.127128130082360D+01 -0.737672046456960D+00 - -0.868669971720295D-01 0.795157317704586D+01 0.693889390390723D-17 - 0.132454778742352D-08 0.177777773804120D+00 0.266307601495131D+00 - -0.668998442821260D-01 -0.724557120783548D-02 0.448661511161198D+00 - 0.252441699764811D-01 -0.130729683234127D+01 -0.445659253660878D+00 - -0.287141508685356D+00 0.110695538492500D+00 -0.798307336638528D+00 - 0.733797810764755D+00 0.264909518626899D-08 0.569238274555254D+01 - -0.176631398537575D+01 0.444444421264772D-01 -0.397364277593404D-08 - 0.181037850711970D+00 0.397364263802352D-08 0.444444484180787D-01 - 0.196174077322278D+00 -0.989466058694517D-01 0.264909508825711D-08 - 0.101488624026015D+01 0.159477716686015D+00 -0.700103019230944D+00 - -0.101080273113470D+00 -0.418533052615189D+00 0.112521670499703D+00 - -0.331676730854859D+00 -0.173000857255596D-01 0.452299160056009D+00 - 0.542917674032529D-02 0.434558162044199D+00 -0.150598013314416D-01 - -0.888888875643342D-01 0.331136999764947D-09 0.604095048139873D+01 - -0.119883807046724D-01 -0.829566628875414D+00 -0.445429714387005D+00 - 0.989310918339163D-01 0.213287537409349D+00 0.133333331346512D+00 - -0.371082981592891D+01 -0.133333331346512D+00 0.331136981550351D-09 - -0.965314676382341D+00 0.204775001882812D-01 -0.888888875643342D-01 - -0.111528938123618D+00 0.223641051343949D-01 -0.251689993257859D+00 - -0.333333323399184D-01 0.333333373069723D-01 0.397364263802352D-08 - 0.333333353201509D-01 -0.133333331346512D+00 0.133333329359690D+00 - -0.397364273430068D-08 0.133333345254262D+00 0.333333328366238D-01 - 0.198682168633946D-08 -0.312250225675825D-16 0.693889390390723D-17 - 0.333333325054869D-01 -0.222222252024500D-01 0.331136981550351D-09 - 0.444444484180787D-01 -0.222222232156286D-01 0.331136900885709D-09 - 0.444444484180785D-01 -0.132454779089297D-08 -0.333333326710554D-01 - -0.888888968361676D-01 0.177777793672335D+00 0.132454778742352D-08 - -0.222222213943754D-01 0.333333369758354D-01 0.264909508825711D-08 - -0.888888875643342D-01 -0.333333356512878D-01 -0.888888862397864D-01 - 0.264909516545231D-08 0.444444434510249D-01 -0.222222220566493D-01 - -0.132454748731636D-08 -0.529819034304768D-08 0.177777773804120D+00 - 0.391569362721533D+00 -0.302143956006100D+00 0.196174077322278D+00 - -0.140516714601046D+00 -0.223468553841980D+01 0.208147062815317D+00 - -0.867955784948547D+00 0.155540953755372D+01 -0.440227377727670D+00 - -0.302441233175445D+01 0.934996457026522D+01 0.175113073086701D+01 - -0.104083408558608D-16 0.177777768505930D+00 -0.397364275685208D-08 - 0.456002040855144D+00 -0.282088881226647D+00 -0.109933873042145D+00 - -0.391375078396917D+00 -0.144020781313448D+01 0.204775001882812D-01 - -0.421488645506229D+01 -0.454330726844565D+00 -0.912491073345432D+00 - 0.668521718157752D-02 -0.357825805804141D+00 0.771670209982417D+01 - 0.104083408558608D-16 0.132454761568590D-08 0.177777776453216D+00 - -0.233093339233504D+00 -0.155404665471467D+01 -0.497319526167335D+00 - -0.101080273113470D+00 0.251690040846677D+00 0.366350518111849D+00 - -0.484949293369797D+00 0.310627579105227D+00 0.787937978168768D+00 - -0.956513286726496D+00 0.123275616352752D+00 -0.280862518325856D+01 - 0.564401062149508D+01 0.198682140271217D-08 0.208147062815317D+00 - 0.444444421264773D-01 0.132454761525222D-08 0.202910680578917D+01 - 0.211663910041919D+00 -0.198682140878370D-08 0.444444421264771D-01 - 0.132454760701228D-08 -0.402782403039049D+00 0.271513862649781D-01 - 0.412409187717440D+00 -0.429062217988266D+00 0.700103066819763D+00 - -0.658752058086655D+00 -0.936458264928946D+00 0.223641051343949D-01 - 0.110693284098561D+00 0.608932287913121D+01 0.250080969154289D+00 - -0.109933873042145D+00 -0.432886848033620D+00 -0.475540979920920D+01 - -0.133333333333333D+00 0.331136805909599D-09 -0.888888888888817D-01 - -0.564155613551159D+00 -0.100124906059655D+00 0.133333333333333D+00 - 0.331137001499671D-09 -0.888888888888817D-01 -0.333333328366239D-01 - 0.333333323399185D-01 -0.133333333333333D+00 0.198682140271217D-08 - 0.198682137408923D-08 0.133333331346512D+00 -0.397364277593404D-08 - 0.333333308498025D-01 0.333333333333294D-01 0.133333327372868D+00 - -0.104083408558608D-16 0.104083408558608D-16 0.333333330021924D-01 - -0.222222217255124D-01 0.331136805909599D-09 0.444444421264773D-01 - -0.132454756190947D-08 0.331136999764947D-09 0.444444421264772D-01 - -0.222222202353963D-01 -0.333333331677609D-01 -0.888888849152386D-01 - 0.177777768505930D+00 0.132454761568590D-08 -0.222222217255124D-01 - 0.333333321743500D-01 -0.888888888888817D-01 0.132454761525222D-08 - 0.444444441132987D-01 -0.888888875643342D-01 -0.333333311809394D-01 - 0.264909518626899D-08 -0.222222223877863D-01 -0.993410671432104D-09 - -0.397364275685208D-08 0.177777776453216D+00 -0.110321728332459D+01 - -0.522538370777019D+00 -0.215573393077722D+01 -0.589677993996361D+00 - -0.309987537831519D+01 0.211663910041919D+00 0.689612190535187D+01 - 0.108327663373558D+01 0.138777878078145D-16 0.177777768505929D+00 - -0.132454757231781D-08 -0.476479701171324D+00 -0.104733024767949D+01 - 0.919200993113690D+00 0.385445998789541D+00 -0.564155613551159D+00 - -0.522910709016401D+01 0.599594204746372D+01 0.101705447548023D+02 - 0.589805981832114D-16 0.132454761568590D-08 0.177777779102311D+00 - 0.333333313465079D-01 0.333333338300347D-01 0.133333327372868D+00 - 0.198682131857808D-08 -0.198682140878370D-08 0.133333333333333D+00 - 0.138777878078145D-16 0.589805981832114D-16 -0.222222207321017D-01 - -0.333333336644663D-01 -0.888888849152385D-01 -0.132454755150113D-08 - 0.444444421264771D-01 0.331137001499671D-09 0.177777768505929D+00 - 0.132454761568590D-08 -0.333333315120763D-01 -0.222222227189231D-01 - -0.331136769046725D-09 0.444444447755724D-01 0.132454760701228D-08 - -0.888888888888817D-01 -0.132454757231781D-08 0.177777779102311D+00 - -0.760510245892757D-03 -0.876950243359387D-03 -0.121011089821054D-02 - -0.160821634524655D-02 -0.186599867371521D-02 -0.148122181775722D-02 - -0.267369715804173D-02 -0.230930931813896D-02 0.144419117506858D-18 - -0.249874719440019D-19 -0.588650611991160D-02 -0.182961135922495D-01 - -0.448769416575526D-02 -0.197075628143890D-01 -0.125782871906501D-01 - -0.249521516592609D-01 -0.829831152674484D-02 -0.258502178057032D-01 - -0.711507675693612D-18 0.457397791517322D-18 -0.816539761153146D-18 - -0.162593206391327D-01 -0.875794297087532D-01 -0.284836734534801D-01 - -0.888537242128359D-01 -0.356192625259522D-01 -0.109429683009165D+00 - -0.418486337742150D-02 -0.109188847406098D+00 -0.162630325872826D-18 - 0.123327997120226D-17 0.275116301268197D-17 0.687207566494343D-01 - -0.242084041976695D+00 0.576228528246354D+00 -0.135657787672495D+00 - -0.103523953799324D+00 -0.140389222003336D+00 -0.393970388666873D-01 - -0.643126159720595D-01 0.154498809579184D-17 0.111130722679764D-17 - -0.840256683676266D-18 -0.280160921270483D+01 0.888365750810044D+00 - -0.119653450256344D+01 0.607833472804820D+00 0.867361737988404D-17 - 0.173472347597681D-16 0.346944695195361D-17 -0.593290470338602D-02 - -0.599910745736396D-02 -0.780015164216189D-02 -0.105402888206979D-01 - -0.339647144721496D-02 -0.438331291159977D-02 -0.448564662269361D-02 - -0.772287136353065D-02 -0.620028117390148D-18 0.110114283143059D-18 - -0.133831205666179D-18 -0.303416275895586D-01 -0.793980174457007D-01 - -0.219798537348018D-01 -0.802139320703931D-01 -0.154232122131267D-01 - -0.548450797877222D-01 -0.109033751586779D-01 -0.538009686019237D-01 - -0.196511643762998D-17 0.813151629364128D-18 -0.124683249835833D-17 - -0.760815624181480D-01 -0.275032778201097D+00 -0.309536590379712D-01 - -0.208053170009149D+00 -0.345220729728883D-01 -0.169243507400686D+00 - -0.196722327975818D-01 -0.111106505341927D+00 0.788757080483204D-17 - 0.271050543121376D-19 0.100288700954909D-17 -0.302890450679555D+00 - -0.188838890155193D+00 -0.348085526978479D+00 0.157445432740469D+00 - -0.125931806875823D+00 -0.988328912125826D-01 -0.131448523376801D+00 - 0.574950097947861D-01 0.110046520507279D-16 -0.298155597433514D-17 - -0.501443504774546D-17 -0.118846389383658D+01 0.563353953840040D+00 - -0.229643075270305D+00 0.386712064992751D-01 -0.693889390390723D-17 - -0.867361737988404D-17 0.346944695195361D-17 0.706820215204407D-09 - -0.864939400472116D-02 0.755740581226405D-09 -0.150214959717461D-01 - 0.339647186829745D-02 -0.438331290707482D-02 0.448564713990088D-02 - -0.772287131038411D-02 -0.134170018845081D-17 -0.636968776335234D-18 - 0.108420217248550D-18 0.150782643315583D-08 -0.106438769840082D+00 - 0.775533304242515D-09 -0.105616348228146D+00 0.154232134330579D-01 - -0.548450813133708D-01 0.109033755566926D-01 -0.538009704460607D-01 - -0.420128341838133D-17 -0.792822838630025D-18 -0.569206140554890D-18 - -0.995336323778018D-09 -0.325845765793568D+00 -0.835857716374733D-09 - -0.213126321505617D+00 0.345220728906886D-01 -0.169243511779223D+00 - 0.196722333080062D-01 -0.111106503985780D+00 0.223616698075135D-17 - 0.557262975998604D-17 -0.106472041469866D-17 -0.168431178396850D-07 - -0.206483370280678D+00 -0.227832954169394D-07 0.817168483328142D-01 - 0.125931798247572D+00 -0.988328865374341D-01 0.131448504260196D+00 - 0.574950069196280D-01 0.357786716920216D-17 -0.233103467084383D-17 - -0.203287907341032D-18 -0.665691693157999D-07 0.174220750116136D+00 - 0.229643011619343D+00 0.386711953346676D-01 0.935124373768748D-17 - 0.199222149194211D-17 0.623416249179165D-18 0.593290468905121D-02 - -0.599910733266697D-02 0.780015168968597D-02 -0.105402886581727D-01 - 0.186599856309168D-02 -0.148122187862787D-02 0.267369699487478D-02 - -0.230930935144952D-02 -0.223616698075135D-18 -0.950370966819325D-18 - -0.377776694475418D-18 0.303416288959906D-01 -0.793980215886529D-01 - 0.219798542743512D-01 -0.802139377372324D-01 0.125782878917919D-01 - -0.249521550091510D-01 0.829831203158827D-02 -0.258502217844336D-01 - -0.104693272280632D-17 0.193292918563431D-17 0.151280084379618D-17 - 0.760815672967460D-01 -0.275032791619932D+00 0.309536620511393D-01 - -0.208053174709579D+00 0.356192655347311D-01 -0.109429695693905D+00 - 0.418486408037548D-02 -0.109188858900744D+00 -0.309675245516172D-17 - -0.340507244796229D-17 -0.316112695915305D-17 0.302890473092218D+00 - -0.188838865592827D+00 0.348085560550068D+00 0.157445449038149D+00 - 0.103523971296809D+00 -0.140389211616067D+00 0.393971115829685D-01 - -0.643125830822222D-01 -0.406575814682064D-17 -0.349655200626575D-17 - 0.650521303491303D-18 0.118846381476751D+01 0.563353929209374D+00 - 0.119653456616559D+01 0.607833514206575D+00 0.346944695195361D-17 - -0.932413868337534D-17 0.108420217248550D-17 0.760510201889681D-03 - -0.876950318528334D-03 0.121011088556486D-02 -0.160821641065051D-02 - -0.330342849429177D-18 -0.103338019565025D-18 0.252415818281782D-18 - 0.588650645095845D-02 -0.182961166486514D-01 0.448769454058515D-02 - -0.197075660040321D-01 0.555653613398821D-18 0.135525271560688D-18 - 0.108420217248550D-17 0.162593214972443D-01 -0.875794432199093D-01 - 0.284836738862795D-01 -0.888537344786142D-01 -0.230392961653170D-17 - 0.382181265801140D-17 -0.227682456221956D-17 -0.687207534252281D-01 - -0.242084056962026D+00 -0.576228457017050D+00 -0.135657748535210D+00 - 0.157209315010398D-17 0.379470760369927D-18 -0.200577401909818D-17 - 0.280160930718902D+01 0.888365800377834D+00 -0.867361737988404D-17 - 0.693889390390723D-17 -0.520417042793042D-17 - -0.147466971438369D-02 0.102590789862041D-02 -0.246649153850126D-02 - 0.451734436371024D-02 -0.345753039746096D-02 0.108210648964131D-02 - -0.691730670872468D-02 0.267805821400885D-02 -0.758766795372480D-02 - 0.185720970447082D-02 -0.156381683258027D-02 0.753621694272505D-02 - 0.324140883382044D-02 0.684505843180974D-02 -0.237382319606627D-02 - 0.659720466751732D-02 0.104014305373363D-01 -0.621628460048902D-03 - -0.223601797328152D+00 -0.477519362807882D-02 -0.248040668835583D+00 - 0.105275239251406D-01 -0.705292439631997D-02 0.337506895611311D-01 - -0.380641284434362D-01 0.350200409461704D-01 -0.100666168799133D-01 - 0.720198227192046D-01 -0.434863173951477D-01 -0.997361899948727D+00 - 0.911990069162212D-01 -0.376219791868186D+00 0.407778860533720D-02 - -0.860002188424153D-01 0.168883478854062D+00 -0.147806603566558D+00 - 0.750929651475913D-01 -0.747685033358831D-01 0.687366915696384D-01 - -0.456448046314779D-01 -0.611467873039406D+00 0.931039798153062D+00 - 0.109789366882989D+01 -0.113271367732595D+00 -0.835451755753489D-01 - -0.176401972281101D+00 -0.358074401859263D-01 0.399872996483280D+01 - -0.433710439231191D+01 0.358548788795604D+01 -0.550123748889882D-02 - 0.839042420231902D-03 -0.859577135488776D-02 0.379824430295291D-02 - -0.706274970030056D-02 0.818853230259501D-03 -0.147305420944157D-01 - 0.436307585538652D-02 -0.326323098211597D-01 -0.220196814136794D-01 - -0.178840875816698D-01 -0.558461397319068D-02 0.765841028759577D-02 - 0.135371537868006D-01 0.142200881110999D-01 -0.119335191901476D-01 - 0.104721100603791D-01 -0.326693397182590D-02 0.256957716399951D-01 - -0.439848310961730D+00 -0.187308840867763D+00 -0.448313455828793D+00 - 0.476453745612913D-01 0.127774170257611D-01 0.894566479907894D-01 - 0.103101353997850D-01 0.404615042803026D-01 0.500426089612566D-01 - 0.837343497676114D-01 0.643882577647237D-01 -0.186954041904905D+01 - -0.885448684451678D+00 -0.722772199587266D+00 0.837690806810058D-01 - 0.465669012889117D-02 0.222667487664441D-02 0.215111782247342D-01 - 0.757824144662883D-01 0.826473918962459D-01 -0.972236617572533D-02 - 0.857292821249991D-01 -0.211481978029618D+01 -0.190288985731119D+01 - 0.726637880367873D+00 -0.168640963504358D+00 0.303521504214731D-01 - -0.125254915987895D+00 0.363077207265703D-01 -0.644805989722828D+00 - -0.259002894564817D+01 0.459001748242698D+00 -0.836308431980370D-02 - 0.211817344932131D-03 -0.166800564080595D-01 0.332743208443568D-03 - -0.713139781667627D-02 -0.185217002896296D-02 -0.160239163652377D-01 - -0.412608235699133D-02 -0.664687907371524D-01 0.220453193434289D-01 - -0.790036156793726D-01 -0.253361790121419D-01 0.791720909466687D-02 - -0.212285418280879D-01 0.256961538209666D-01 -0.339222303532330D-01 - -0.723431363496205D-02 -0.522888150128064D-01 0.113576659864649D-01 - -0.793990717824233D+00 0.576409126913352D-02 -0.826436355520311D+00 - 0.473890102529151D-02 0.656938128146319D-01 0.572268241336173D-01 - 0.108001360143161D+00 -0.434384749769334D-01 0.346581647974811D-01 - -0.202302699530669D-02 0.113823543637280D+00 -0.382301935980158D+01 - -0.664865175805164D+00 -0.221103563505728D+01 0.719703239972025D-01 - 0.132514405083827D+00 0.441279159997725D-02 0.109832969394053D+00 - 0.654838198278860D-01 0.147158405723872D+00 0.776867730104211D-01 - 0.124698681003463D+00 -0.710870002826119D+01 -0.266219902806685D+01 - -0.937723008441275D+00 -0.548754807797013D-01 0.484049349522562D-01 - 0.153327764501321D-01 0.293956091701386D-01 -0.714975955509105D+01 - -0.338815567135857D+01 0.875376462995315D+00 -0.291483528860223D-02 - -0.242392765758886D-02 -0.119873679161565D-01 -0.865999666304155D-02 - 0.784529300327962D-03 -0.933588107344677D-03 -0.262237166812033D-02 - -0.629918670244739D-02 -0.194385454543210D-01 -0.179672991480721D-01 - -0.601409676339536D-01 -0.307833248360182D-01 -0.169425764409280D-01 - -0.604846655446213D-01 -0.270043059972974D-01 -0.176166621805150D-01 - -0.156686788380727D-01 -0.372687026365026D-01 -0.420496344320948D-01 - -0.534427018712638D+00 0.164652779028493D+00 -0.605447990119737D+00 - -0.811859666794663D-01 -0.230570217139451D-01 -0.684604424317836D-01 - 0.116554776817469D-01 -0.672340841662875D-01 -0.763374987922605D-01 - -0.980802631483042D-01 -0.122935052211197D+00 -0.335813572839573D+01 - 0.122083246381021D+01 -0.236230065890387D+01 0.225077477429142D-01 - 0.105490824192822D+00 0.126152748092910D+00 0.129944890273500D+00 - -0.971495569847617D-01 -0.809304980183920D-01 0.990567301205272D-01 - 0.118252969243053D+00 -0.888084127937756D+01 0.144316509470916D+01 - -0.282807189250093D+01 0.997662574060657D-01 0.613548608814446D-01 - 0.200673096527262D+00 0.905230849762832D-01 -0.935379823760943D+01 - 0.142079038783613D+01 0.208219359935335D+01 0.116026872949599D-02 - 0.789559942858107D-03 0.341187484413993D-03 0.170373302139647D-02 - -0.100371505263173D+00 -0.320216467170656D-01 -0.337181285044045D-01 - -0.352387278562552D-02 -0.325242281874518D-02 -0.146117239957545D-01 - -0.169480877490594D-01 -0.442212621693854D+00 -0.137491720008266D+00 - -0.316340624329466D+00 -0.256386103507448D-01 -0.475096220467115D-01 - -0.243124309424179D-01 -0.977980715444573D-01 -0.168347446569950D+01 - 0.166387187843182D+00 -0.970576892450766D+00 -0.514310286893166D-01 - -0.193715113834476D+00 -0.144665351124504D+00 -0.255000512457179D+00 - -0.409653019714340D+01 -0.158865905110741D+01 0.150836362161378D+00 - 0.171057412489886D+00 -0.116776266676537D+00 0.941529292144625D+01 - 0.178109777818017D+02 0.121282393123582D+02 diff --git a/mtx/test/sparse_data/E05R0400 b/mtx/test/sparse_data/E05R0400 deleted file mode 100755 index dcae98db7..000000000 --- a/mtx/test/sparse_data/E05R0400 +++ /dev/null @@ -1,2423 +0,0 @@ -Driven Cavity 5 x 5 Re = 400. E05R0400 - 2418 15 293 1952 158 -RUA 236 236 5856 1 -(16I5) (20I4) (3D23.15) (3D23.15) -FNX 1 0 - 1 11 21 42 63 84 105 148 191 199 207 222 237 263 289 319 - 349 401 453 465 477 489 504 519 545 571 601 631 683 735 747 759 - 771 786 801 823 845 875 905 949 993 1005 1017 1029 1040 1051 1073 1095 - 1103 1111 1119 1134 1149 1179 1209 1235 1261 1313 1365 1377 1389 1401 1422 1443 - 1479 1515 1551 1587 1649 1711 1729 1747 1765 1786 1807 1843 1879 1915 1951 2013 - 2075 2093 2111 2129 2150 2171 2201 2231 2267 2303 2355 2407 2425 2443 2461 2476 - 2491 2517 2543 2555 2567 2579 2594 2609 2639 2669 2695 2721 2773 2825 2837 2849 - 2861 2882 2903 2939 2975 3011 3047 3109 3171 3189 3207 3225 3246 3267 3303 3339 - 3375 3411 3473 3535 3553 3571 3589 3610 3631 3661 3691 3727 3763 3815 3867 3885 - 3903 3921 3936 3951 3977 4003 4015 4027 4039 4054 4069 4099 4129 4151 4173 4217 - 4261 4273 4285 4297 4318 4339 4375 4411 4441 4471 4523 4575 4593 4611 4629 4650 - 4671 4707 4743 4773 4803 4855 4907 4925 4943 4961 4982 5003 5033 5063 5093 5123 - 5167 5211 5229 5247 5265 5280 5295 5317 5339 5351 5363 5375 5386 5397 5419 5441 - 5449 5457 5465 5480 5495 5521 5547 5559 5571 5583 5598 5613 5639 5665 5677 5689 - 5701 5716 5731 5753 5775 5787 5799 5811 5822 5833 5841 5849 5857 - 7 5 3 1 8 6 4 2 9 10 1 7 5 3 8 6 4 2 9 10 - 1 2 7 5 8 3 6 4 9 10 17 15 13 11 18 16 14 12 19 20 - 21 1 2 3 7 5 8 6 4 9 10 17 15 13 11 18 16 14 12 19 - 20 21 1 2 3 4 7 8 6 5 9 10 57 55 53 51 58 56 54 52 - 59 60 61 1 2 3 4 5 7 8 6 9 10 57 55 53 51 58 56 54 - 52 59 60 61 1 2 3 4 5 6 8 7 58 9 10 53 18 13 17 15 - 72 11 57 16 14 12 19 20 21 55 51 71 56 54 52 59 60 61 68 66 - 64 62 69 67 65 63 70 1 2 3 4 5 6 7 72 16 18 71 9 8 - 10 17 15 13 11 55 14 12 19 20 21 53 51 56 57 54 52 59 60 61 - 58 70 63 62 66 64 68 69 67 65 1 2 3 4 5 6 7 8 1 2 - 3 4 5 6 7 8 3 4 7 8 15 17 18 16 13 14 11 12 19 20 - 21 3 4 7 8 15 17 11 18 16 13 14 12 19 20 21 3 4 7 8 - 17 15 16 11 18 12 14 13 27 19 20 21 26 28 25 24 22 23 30 31 - 32 29 3 4 7 8 11 17 15 18 16 12 13 26 14 19 20 21 28 24 - 22 27 29 25 23 30 31 32 3 4 7 8 72 17 71 70 13 18 11 63 - 16 14 15 12 57 19 54 20 21 58 53 62 66 64 68 67 65 69 3 4 - 7 8 72 11 71 13 15 17 18 14 63 12 54 19 20 21 16 58 57 53 - 70 62 66 64 68 65 69 67 3 4 7 72 8 15 16 71 53 63 70 13 - 54 11 18 57 83 17 14 58 12 82 19 20 21 28 27 29 26 24 22 25 - 23 81 30 31 32 68 74 66 64 62 67 78 65 77 69 76 73 80 75 79 - 3 4 7 8 72 17 71 11 70 15 13 63 54 83 16 12 57 14 53 82 - 19 18 20 21 27 25 23 26 30 24 22 31 32 62 28 58 81 64 66 29 - 74 68 65 76 78 69 73 67 80 77 75 79 3 4 7 8 11 17 15 12 - 18 13 16 14 3 4 7 8 11 17 15 12 18 13 16 14 3 4 7 8 - 11 17 15 12 18 13 16 14 13 17 18 14 26 27 28 24 29 25 30 23 - 22 31 32 18 13 17 14 26 28 29 27 22 24 25 23 30 31 32 13 17 - 18 14 26 27 28 25 29 22 23 30 24 31 35 32 33 37 36 34 41 38 - 42 43 39 40 17 13 18 14 26 28 29 24 22 27 23 25 30 31 32 37 - 39 35 33 38 40 36 34 41 42 43 13 17 83 18 14 64 82 81 28 74 - 24 29 27 22 26 68 25 23 78 30 65 31 32 76 69 80 73 75 77 79 - 18 13 17 83 14 64 82 81 26 28 74 29 24 22 25 23 30 68 27 31 - 32 65 76 78 69 77 73 80 75 79 17 18 83 13 14 26 81 82 27 64 - 24 74 22 29 31 25 23 65 68 30 28 32 33 94 78 76 37 73 80 35 - 36 34 42 38 93 41 77 69 39 43 40 75 92 79 85 84 87 89 88 86 - 91 90 18 13 17 83 14 82 26 64 24 28 74 22 81 31 32 27 68 25 - 65 30 23 78 35 73 29 33 69 76 41 43 80 34 36 42 77 39 75 38 - 94 37 93 85 92 40 79 89 84 87 88 91 86 90 18 13 17 14 28 26 - 29 22 27 23 24 25 18 13 17 14 27 28 26 29 22 23 24 25 18 13 - 17 14 26 27 29 22 28 23 24 25 29 24 28 25 37 39 38 35 36 41 - 40 34 33 42 43 29 24 28 25 37 39 33 38 35 40 36 34 41 42 43 - 29 24 28 25 37 38 39 36 33 40 34 41 35 42 43 44 46 45 47 48 - 49 50 28 24 29 25 37 39 40 35 33 34 38 36 41 42 43 46 44 47 - 45 48 49 50 24 28 29 76 75 25 80 93 94 38 35 85 92 33 40 39 - 37 79 43 36 34 42 41 89 84 87 88 86 91 90 28 24 29 76 80 25 - 75 94 93 37 85 39 33 35 40 34 36 41 92 42 38 43 89 84 79 87 - 88 86 91 90 24 28 29 76 75 25 37 38 94 80 93 35 33 85 92 42 - 79 40 36 34 89 41 39 43 84 46 87 47 88 48 44 45 91 49 50 86 - 90 101 95 100 96 99 98 97 24 29 28 76 25 75 80 94 93 35 37 33 - 85 92 42 39 38 43 36 34 79 89 44 41 87 84 40 88 46 86 100 47 - 45 91 48 49 50 90 101 95 96 99 97 98 29 24 28 25 33 37 39 34 - 35 38 40 36 28 24 29 25 38 37 39 33 34 35 40 36 29 24 28 25 - 38 37 39 33 34 35 36 40 40 35 36 39 46 47 44 45 48 49 50 35 - 36 39 40 44 46 47 45 48 49 50 39 35 40 36 87 86 101 100 91 44 - 45 47 96 99 46 95 48 49 50 90 97 98 35 36 40 39 87 86 46 101 - 44 91 95 100 45 96 90 48 47 49 50 99 98 97 35 36 39 40 44 45 - 46 47 35 36 39 40 44 45 46 47 35 36 39 40 44 45 46 47 5 6 - 7 8 53 57 54 58 55 56 51 52 59 60 61 5 6 7 8 57 53 54 - 58 55 56 51 52 59 60 61 5 6 7 8 72 17 18 15 71 16 63 70 - 57 55 54 58 51 66 62 53 56 64 52 59 60 61 68 67 65 69 5 6 - 7 8 72 17 15 18 71 16 57 63 55 70 53 52 62 66 51 58 64 59 - 56 54 60 61 68 65 69 67 5 6 7 8 57 53 54 58 112 111 103 51 - 56 104 55 110 52 105 59 60 61 108 106 102 109 107 5 6 7 8 53 57 - 54 58 110 55 111 104 112 105 103 51 108 106 56 52 59 60 61 102 109 107 - 5 6 8 7 123 72 17 16 70 15 18 71 53 54 58 55 63 62 51 122 - 56 57 66 52 64 59 60 61 68 121 116 65 67 114 69 104 112 113 103 108 - 106 105 102 110 111 115 107 109 117 118 119 120 5 6 8 7 123 72 17 16 - 53 15 18 71 57 70 55 63 54 122 64 62 51 66 67 65 56 58 116 52 - 59 60 61 121 68 69 104 114 112 113 111 105 103 106 102 115 110 107 108 109 - 117 118 119 120 5 6 7 8 54 57 53 58 55 56 51 52 5 6 7 8 - 54 57 53 58 55 56 51 52 5 6 7 8 54 57 53 58 55 56 51 52 - 7 8 16 15 17 53 54 72 18 57 71 70 63 58 64 66 68 67 69 65 - 62 7 17 8 18 57 58 15 64 16 66 68 65 67 69 53 54 62 63 70 - 71 72 7 8 15 16 18 53 17 54 71 72 57 70 63 83 58 26 82 81 - 62 27 29 74 28 76 67 73 65 66 68 64 77 69 78 75 80 79 7 8 - 17 15 16 18 83 53 54 26 82 81 27 28 74 64 62 58 57 29 73 63 - 67 76 70 66 68 77 71 72 69 80 78 65 75 79 7 8 15 16 53 17 - 72 18 54 57 71 70 63 62 123 58 64 122 68 65 67 113 69 105 66 121 - 104 116 114 115 108 109 117 119 118 120 7 8 17 15 16 53 54 62 18 57 - 64 58 63 122 123 72 65 68 66 70 71 105 69 104 113 121 116 114 67 115 - 109 117 108 119 120 118 7 8 15 16 18 17 53 54 72 71 58 57 70 83 - 63 62 66 82 26 81 123 64 74 134 27 28 29 122 76 73 78 65 67 104 - 105 132 113 77 133 121 125 75 69 114 68 124 80 116 108 109 115 117 118 127 - 119 129 126 128 120 79 131 130 7 8 15 17 16 53 18 83 54 57 82 26 - 27 58 62 28 81 64 63 70 71 74 29 123 76 73 66 122 65 134 77 104 - 68 67 133 132 72 78 105 125 121 75 124 113 80 116 115 114 69 108 109 117 - 127 119 118 129 126 128 120 131 79 130 7 17 18 8 57 58 66 64 15 16 - 68 65 67 69 53 54 62 63 7 17 57 58 8 18 67 66 65 64 68 15 - 16 69 53 54 62 63 7 57 58 66 64 67 65 17 18 8 69 68 15 16 - 53 54 62 63 17 18 68 78 28 26 82 69 27 83 77 64 74 65 81 29 - 80 76 75 79 73 28 29 78 17 68 18 76 77 80 69 26 27 75 64 79 - 65 73 74 81 82 83 17 18 26 68 27 78 69 74 29 77 64 81 28 65 - 83 82 73 76 94 37 80 93 38 85 39 84 40 92 87 86 88 89 75 79 - 91 90 28 29 17 68 78 18 77 94 93 37 38 39 69 27 26 76 80 92 - 40 75 64 85 73 87 65 79 81 88 84 91 89 86 74 90 82 83 17 18 - 134 26 27 82 83 133 68 78 28 74 132 81 69 125 116 64 73 29 65 115 - 124 80 77 76 127 75 119 129 120 79 126 131 128 130 134 28 29 133 17 68 - 132 18 76 26 125 124 69 80 77 27 78 75 116 73 115 65 129 127 81 79 - 64 119 74 120 131 82 128 126 130 83 17 18 26 83 27 74 28 81 64 65 - 76 82 73 29 77 68 69 78 134 133 132 94 93 116 124 125 115 85 80 37 - 75 92 39 38 87 40 84 86 89 129 127 88 145 126 119 120 128 144 143 136 - 131 135 79 91 138 140 139 90 130 137 142 141 28 17 29 133 18 68 76 132 - 26 134 78 125 37 40 77 27 69 39 94 75 38 116 93 64 115 65 124 80 - 73 92 74 85 127 145 143 89 144 84 86 79 88 119 81 120 87 129 136 90 - 91 131 83 82 128 126 130 135 137 140 138 142 139 141 28 29 68 78 17 76 - 69 77 18 75 80 27 26 79 73 64 65 74 28 29 68 69 78 76 77 75 - 17 80 18 26 79 27 65 73 64 74 68 28 29 69 78 76 77 80 79 75 - 17 18 26 27 73 64 65 74 28 29 80 76 79 38 37 93 85 94 92 39 - 89 75 88 40 91 90 86 87 84 80 40 39 28 29 76 79 87 89 88 86 - 37 91 38 90 75 84 85 92 93 94 28 80 29 37 38 79 76 93 85 92 - 94 75 89 88 39 84 87 40 47 46 91 90 96 99 97 100 95 86 98 101 - 80 79 28 39 29 40 76 89 46 47 101 37 88 100 86 91 38 87 99 96 - 84 90 95 75 98 85 97 92 93 94 28 80 127 29 145 76 37 144 94 38 - 93 92 85 75 89 131 39 79 84 126 40 143 87 136 86 91 135 138 88 130 - 90 140 137 139 142 141 28 80 127 39 40 145 29 144 131 76 126 79 143 87 - 88 37 38 86 91 136 89 84 135 90 75 85 92 130 93 94 138 140 139 142 - 137 141 28 29 76 80 127 37 92 93 94 38 75 85 39 145 89 79 84 40 - 88 143 131 144 126 135 46 136 87 47 86 91 130 99 100 101 140 95 96 97 - 138 137 98 142 147 139 90 146 150 141 151 152 148 149 28 39 76 80 29 79 - 40 127 145 131 37 89 46 47 38 87 144 143 101 86 126 88 92 93 75 100 - 84 85 90 135 136 91 130 95 99 94 96 97 98 140 138 137 152 139 142 146 - 150 151 141 148 147 149 80 39 40 28 79 89 87 29 91 88 86 37 38 76 - 90 75 84 85 39 40 80 86 87 79 28 89 88 29 91 90 76 37 38 75 - 84 85 39 40 80 87 79 86 28 89 88 91 29 90 37 38 76 75 84 85 - 39 91 40 87 46 47 86 90 97 98 96 95 99 100 101 39 91 40 90 46 - 87 47 98 97 86 95 96 99 100 101 39 91 40 87 46 47 90 86 100 101 - 138 95 137 99 142 96 98 147 151 146 152 97 150 141 148 149 39 91 87 40 - 90 46 47 86 97 138 137 95 101 152 142 99 96 100 150 98 146 151 147 141 - 149 148 91 39 40 90 87 46 47 97 98 86 95 96 91 90 97 39 40 98 - 46 47 87 86 95 96 91 90 97 39 98 40 46 47 87 86 95 96 57 58 - 108 104 106 55 107 56 109 105 103 102 110 111 112 58 57 106 109 108 107 55 - 56 104 105 102 103 110 111 112 58 122 57 123 68 66 55 56 105 69 67 108 - 106 109 103 110 102 107 115 104 113 117 118 111 112 121 114 119 116 120 58 57 - 123 122 108 66 106 107 109 55 104 56 67 117 68 69 110 113 102 111 119 120 - 118 105 103 116 121 112 115 114 57 58 112 56 55 110 111 108 104 105 103 107 - 102 109 163 162 155 154 106 161 156 157 153 159 160 158 57 58 55 108 106 109 - 102 56 105 104 103 110 163 111 107 112 162 155 154 161 159 153 156 160 158 157 - 57 55 58 56 123 122 68 66 67 112 104 69 105 110 106 111 103 107 102 109 - 117 113 114 115 121 108 116 119 118 164 120 174 173 155 172 163 162 165 156 167 - 153 168 154 161 158 160 166 157 159 170 169 171 55 57 66 58 67 122 123 68 - 56 107 108 104 106 105 113 110 117 103 119 102 69 109 111 114 112 118 116 120 - 121 115 164 174 173 155 172 165 162 163 156 158 161 153 154 157 168 166 159 167 - 160 169 170 171 107 57 106 109 58 108 55 105 104 56 102 103 106 57 107 109 - 58 108 105 56 104 55 102 103 106 107 57 109 58 108 55 104 105 56 102 103 - 108 109 117 57 58 118 120 119 66 68 104 105 69 67 122 115 116 114 113 121 - 123 68 69 116 57 115 108 109 58 117 104 66 105 119 67 118 120 113 114 121 - 122 123 108 57 109 117 77 58 78 104 134 119 118 129 105 120 68 67 66 133 - 121 80 113 69 132 122 123 114 116 131 125 124 128 127 115 126 130 79 134 133 - 78 77 132 68 125 69 80 124 127 57 115 108 58 109 105 117 116 67 104 66 - 119 118 129 113 121 79 122 126 123 131 128 114 120 130 109 57 108 58 66 119 - 67 105 173 118 120 174 104 117 172 113 165 122 68 69 167 115 121 114 116 155 - 123 166 164 159 156 170 168 160 169 171 68 69 57 116 58 115 117 67 105 108 - 66 109 104 113 119 121 114 164 174 123 122 120 165 173 118 172 156 155 167 166 - 168 160 170 169 159 171 57 108 58 77 66 134 109 78 117 67 104 105 68 118 - 80 133 113 69 120 173 172 114 174 164 119 132 121 116 165 131 123 129 122 167 - 115 124 125 185 127 184 155 166 128 126 79 130 156 168 159 176 183 160 170 169 - 171 178 177 180 175 179 182 181 78 77 68 69 134 133 57 125 132 80 124 116 - 127 58 115 66 105 108 104 67 109 117 113 114 122 129 126 118 119 79 123 174 - 164 121 128 156 131 173 185 165 184 172 155 167 166 120 168 160 169 183 176 130 - 170 159 175 178 177 171 179 180 181 182 68 69 116 115 108 109 117 57 118 104 - 105 58 119 66 67 120 113 114 68 69 116 120 108 109 117 118 119 115 104 57 - 58 105 113 66 67 114 68 69 116 120 108 109 118 117 115 119 105 104 57 58 - 66 67 113 114 80 79 127 129 131 77 78 119 120 128 126 68 69 116 115 130 - 124 125 132 133 134 80 79 127 129 120 119 131 126 78 128 130 77 115 68 69 - 116 124 125 132 133 134 80 78 127 77 119 68 115 88 145 69 89 129 124 120 - 79 131 144 125 128 116 135 132 143 136 126 133 134 91 140 90 130 137 138 139 - 142 141 80 79 145 88 144 89 120 129 90 131 91 119 143 127 136 138 78 135 - 140 77 128 126 130 124 115 139 69 116 137 68 125 142 132 133 141 134 78 77 - 80 127 115 119 129 68 124 69 125 133 185 79 120 116 126 132 184 131 167 134 - 166 183 176 128 130 175 171 170 178 177 180 179 181 182 80 79 185 127 184 120 - 119 131 78 167 183 166 77 126 129 115 130 128 124 176 170 171 175 132 68 116 - 125 133 69 179 177 134 182 178 180 181 78 77 80 124 69 68 115 119 89 132 - 145 127 133 116 88 126 125 129 144 120 143 134 128 185 79 184 136 131 135 167 - 196 166 91 138 90 140 183 176 195 178 175 137 170 139 194 171 177 180 182 142 - 179 130 187 181 191 186 190 189 141 188 193 192 80 79 127 89 120 90 88 119 - 78 91 145 144 129 136 185 167 143 166 184 128 131 130 196 135 195 126 77 138 - 115 124 194 68 140 187 116 171 69 170 142 183 125 175 133 132 137 134 139 178 - 176 180 141 179 177 182 181 189 191 190 186 193 188 192 80 79 129 127 119 131 - 120 128 126 130 78 116 77 68 69 115 124 125 80 79 127 129 119 131 120 128 - 126 130 77 78 116 68 115 69 124 125 79 80 127 129 131 119 120 130 128 126 - 78 68 69 77 115 116 124 125 91 131 130 90 80 127 138 89 140 88 79 126 - 139 136 137 142 143 144 141 135 145 131 91 90 130 140 138 127 137 142 80 139 - 89 141 79 88 135 126 136 143 144 145 80 131 89 88 127 91 126 136 79 90 - 138 130 135 140 98 143 139 144 97 142 145 147 146 150 151 141 137 152 149 148 - 131 91 90 98 130 97 140 127 152 142 139 89 151 80 150 138 141 147 79 137 - 88 135 146 126 136 143 148 144 149 145 80 89 88 127 126 131 79 196 143 135 - 138 140 136 91 145 195 144 178 142 137 90 194 130 177 187 182 186 189 181 139 - 190 141 191 188 193 192 131 90 91 196 138 130 195 127 194 178 89 142 80 187 - 139 79 140 177 88 137 141 135 136 143 126 182 181 145 189 144 191 186 188 193 - 190 192 80 89 127 126 88 79 131 135 136 91 138 196 143 144 140 98 145 90 - 139 182 177 137 130 97 178 181 146 195 191 151 150 147 194 152 142 187 149 186 - 148 189 190 188 197 198 201 202 193 141 192 199 203 200 91 90 131 196 98 97 - 140 127 80 130 195 178 89 138 152 88 137 79 194 126 139 187 135 147 136 177 - 182 151 142 146 181 150 145 143 144 191 141 189 148 149 203 186 202 198 190 201 - 188 193 197 192 199 200 91 90 131 140 130 138 142 139 137 127 80 89 79 141 - 88 135 126 136 91 90 138 131 130 140 137 142 139 141 127 79 80 89 88 126 - 135 136 90 91 131 138 140 130 142 139 137 141 127 79 80 88 89 126 135 136 - 142 138 141 91 90 98 149 137 97 148 146 147 150 151 152 142 148 138 141 149 - 90 97 91 98 137 146 147 150 151 152 138 142 90 91 141 137 98 189 97 146 - 147 149 150 152 203 202 197 188 148 151 201 193 199 192 198 200 142 141 138 98 - 148 91 90 97 189 137 151 147 146 150 203 202 149 197 188 201 152 193 192 198 - 199 200 142 141 148 138 91 90 149 98 97 137 146 147 142 141 138 149 98 148 - 90 91 97 137 146 147 142 141 149 148 91 90 98 97 138 137 146 147 109 107 - 108 155 161 106 154 156 162 160 163 157 159 158 153 157 109 159 158 107 108 106 - 155 160 153 156 154 161 162 163 109 117 108 119 118 107 164 174 106 168 173 161 - 165 156 120 172 154 162 153 155 163 158 157 160 159 167 166 170 169 171 109 108 - 118 117 119 168 157 158 159 165 107 155 106 153 174 160 164 170 162 173 172 120 - 166 156 154 161 171 163 167 169 109 108 163 106 162 107 156 154 155 158 161 160 - 159 153 206 204 207 157 205 208 209 210 109 108 107 106 157 159 155 153 160 156 - 162 154 161 206 207 158 163 204 205 208 209 210 117 109 108 107 119 164 106 163 - 118 156 162 172 120 155 173 161 154 174 153 167 165 166 168 160 169 215 212 206 - 170 158 211 216 157 204 217 207 213 205 159 208 209 210 171 214 117 107 109 108 - 119 168 118 106 164 157 159 173 155 153 161 154 172 156 158 120 174 163 162 165 - 166 170 217 167 160 212 215 169 171 216 206 207 214 211 204 213 205 208 209 210 - 157 109 159 158 108 160 155 106 107 156 153 154 157 159 109 158 160 108 107 155 - 106 153 156 154 157 158 160 159 108 109 107 155 106 156 153 154 159 169 160 168 - 170 117 171 119 109 118 108 155 156 165 173 172 166 174 120 167 164 120 119 166 - 167 168 117 170 160 159 169 109 156 155 108 164 171 118 165 172 173 174 159 117 - 168 169 171 129 118 170 160 119 109 155 180 108 185 156 164 184 128 131 165 173 - 167 172 174 120 181 182 175 179 183 130 166 176 178 177 119 185 120 131 129 128 - 117 184 166 109 130 176 168 183 159 160 156 170 167 108 178 169 171 118 155 164 - 165 177 172 175 173 180 174 179 182 181 117 159 160 171 170 217 216 119 169 215 - 118 168 109 212 108 155 164 156 214 172 173 211 165 174 167 166 206 120 207 213 - 119 120 167 117 109 166 108 168 155 118 160 164 159 170 156 217 211 216 165 212 - 173 172 215 206 174 169 171 214 207 213 117 159 129 168 160 171 118 131 109 128 - 108 185 217 119 216 169 170 164 156 155 215 212 174 173 172 165 214 184 167 211 - 166 120 180 224 213 206 207 179 183 223 176 175 182 222 219 181 178 177 218 220 - 221 130 117 119 128 185 129 131 120 184 167 109 108 183 166 176 118 155 168 156 - 160 130 164 172 165 173 175 169 170 217 159 215 216 178 174 211 213 206 212 207 - 180 214 177 179 218 219 222 171 223 224 181 220 221 182 120 119 167 166 159 117 - 168 160 170 169 171 109 155 156 108 164 118 165 119 120 167 166 168 159 117 170 - 160 169 171 155 156 109 108 118 164 165 120 119 167 168 166 159 170 117 160 171 - 169 156 109 155 164 108 118 165 131 129 170 130 166 178 128 119 171 177 167 120 - 180 179 176 183 184 185 181 182 175 131 130 129 170 177 171 178 119 180 167 179 - 128 166 120 175 182 181 176 183 184 185 131 129 119 167 166 140 195 196 128 130 - 170 194 139 187 120 142 175 178 176 183 171 180 179 184 185 177 189 141 191 188 - 186 182 181 190 193 192 131 196 195 130 140 139 170 142 171 129 194 187 119 177 - 167 166 179 180 189 178 128 186 120 175 176 141 183 182 188 191 181 190 193 184 - 192 185 129 131 119 167 120 128 175 170 166 184 178 183 176 185 177 214 130 213 - 180 182 171 218 181 220 221 219 179 222 223 224 131 129 170 130 119 178 171 214 - 177 166 128 120 167 224 213 222 179 223 175 218 183 219 180 184 176 185 181 221 - 220 182 129 131 119 140 128 167 166 120 196 170 195 175 184 194 176 185 183 139 - 213 178 130 177 182 214 187 191 171 180 142 179 186 221 190 218 181 189 188 220 - 219 141 223 193 222 225 224 229 226 230 231 192 227 228 131 129 196 140 119 195 - 130 171 194 170 178 167 166 128 139 142 187 177 213 120 180 214 179 175 222 218 - 183 223 186 184 141 185 224 189 219 193 176 188 191 192 221 181 190 220 226 225 - 228 227 182 229 230 231 131 130 170 178 171 177 129 180 179 182 119 181 167 128 - 166 120 175 176 131 130 171 170 178 177 179 180 129 182 181 119 120 128 167 166 - 175 176 131 130 170 171 178 180 177 179 181 182 129 119 120 128 166 167 175 176 - 189 142 131 141 178 130 140 188 194 139 195 187 177 191 181 193 182 192 190 186 - 196 142 141 182 181 189 191 193 192 131 190 188 140 130 139 177 186 178 187 194 - 195 196 131 142 140 130 139 178 148 191 149 177 141 189 187 198 182 196 186 194 - 197 181 195 190 193 201 202 188 203 192 200 199 142 141 181 203 182 202 140 191 - 148 131 149 201 190 198 189 197 130 188 192 193 178 139 177 186 199 200 187 194 - 196 195 140 131 142 177 139 130 187 182 191 189 194 196 195 141 178 221 220 181 - 186 188 226 225 229 230 231 190 193 227 192 228 142 231 182 141 181 220 131 189 - 221 230 229 190 140 188 130 193 191 226 225 192 178 139 177 186 196 187 194 195 - 228 227 131 140 139 182 177 130 181 178 194 187 191 142 195 149 148 220 186 190 - 196 189 197 141 198 188 221 225 202 226 201 193 203 200 199 231 229 227 230 228 - 192 232 233 234 235 236 142 231 131 191 140 182 149 148 141 181 230 220 189 130 - 229 139 221 190 197 178 177 186 188 195 196 226 225 187 201 198 202 203 199 194 - 200 192 227 193 228 232 233 234 235 236 142 141 182 181 189 191 188 193 190 192 - 131 140 130 139 177 186 178 187 142 141 182 181 190 191 189 193 188 192 131 130 - 140 139 177 186 178 187 141 142 182 181 189 191 192 190 188 193 131 130 140 139 - 177 178 186 187 193 142 149 192 148 200 199 189 188 141 197 198 201 202 203 192 - 193 142 199 200 149 189 148 141 188 197 198 201 202 203 142 193 149 192 200 148 - 227 141 228 188 197 189 198 203 202 199 201 232 233 234 235 236 193 192 142 199 - 149 227 148 197 141 201 198 228 188 200 189 203 202 232 233 234 235 236 193 192 - 200 199 142 149 148 189 141 188 197 198 193 192 200 199 142 149 148 189 141 188 - 197 198 193 192 200 199 142 149 148 189 188 141 197 198 159 160 206 157 158 207 - 204 205 208 209 210 160 206 157 159 158 204 207 205 208 209 210 170 168 160 171 - 157 159 169 215 212 207 158 205 214 208 204 211 217 206 209 210 216 213 170 168 - 171 157 169 160 211 206 213 159 158 214 204 205 208 209 207 210 212 215 216 217 - 160 206 157 159 158 204 205 207 160 206 157 159 158 204 205 207 160 206 157 159 - 158 204 205 207 170 168 171 169 214 160 213 159 206 207 211 212 215 216 217 170 - 171 168 160 214 169 213 206 159 207 211 212 215 216 217 168 170 160 171 169 180 - 206 224 207 159 214 215 179 219 212 211 182 223 213 222 218 216 217 181 220 221 - 170 168 171 224 169 160 180 223 213 179 219 222 206 212 159 214 211 215 207 218 - 182 181 220 221 216 217 170 171 168 214 160 213 169 206 159 207 211 212 170 171 - 168 214 213 169 160 206 159 207 211 212 170 171 214 213 168 160 169 206 159 207 - 211 212 170 182 181 214 221 220 180 213 171 179 218 219 222 223 224 182 181 170 - 220 221 213 214 180 171 179 218 219 222 223 224 170 191 214 182 181 180 190 213 - 171 231 179 230 221 193 229 222 226 218 220 219 223 224 225 192 228 227 191 182 - 170 181 214 190 180 231 230 193 213 220 218 171 229 225 221 179 222 223 226 219 - 224 192 227 228 182 181 170 220 221 214 213 180 171 179 218 219 182 181 221 170 - 220 214 213 171 179 180 218 219 182 181 220 221 170 213 214 171 179 180 218 219 - 192 193 221 191 220 181 228 190 182 227 225 226 229 230 231 192 193 227 191 220 - 228 221 181 182 190 225 226 229 230 231 193 192 191 221 199 200 181 220 190 182 - 228 229 226 230 231 225 227 232 233 234 235 236 192 193 199 200 227 221 181 182 - 191 190 220 225 226 229 230 228 231 232 233 234 235 236 193 192 228 227 191 220 - 181 221 182 190 225 226 193 192 228 227 191 181 221 182 220 190 225 226 193 192 - 228 227 191 221 181 182 190 220 225 226 192 193 199 200 227 228 232 233 234 235 - 236 192 193 199 200 227 228 232 233 234 235 236 192 193 199 200 227 228 232 233 - 192 193 199 200 227 228 232 233 192 193 199 200 227 228 232 233 - -0.585900846235845D+00 -0.205638424470206D+01 -0.147371836550539D+01 - 0.778583366991047D+01 -0.427758902773070D+00 0.701463452682254D-01 - 0.159012252127643D+00 0.414828449491813D+00 0.177777768505930D+00 - -0.132454768507484D-08 -0.200341703827073D+00 -0.470055684729066D+00 - -0.180040417313419D+00 0.656877989024457D-01 -0.476394956010639D+00 - 0.432876466575354D-01 -0.282662427823343D+01 0.928083299894004D+01 - 0.132454758619560D-08 0.177777779102311D+00 -0.373376016375563D+00 - 0.159012252127643D+00 -0.599062470368665D+00 -0.315921676832105D+00 - 0.745813185575810D-01 0.419017586857169D+01 0.461129986115798D+00 - 0.805920738132758D+00 0.444444421264772D-01 0.132454768594220D-08 - 0.278116619800896D+00 -0.790385272693371D+00 0.824537353697307D+00 - -0.317642180444000D+01 0.108766602987143D+00 -0.415793552879321D+00 - -0.228630370773193D+00 0.201979599925131D+00 -0.198682152674490D-08 - 0.444444421264772D-01 0.132454768334012D-08 0.656877989024457D-01 - -0.172628192910361D+01 -0.118442349318972D+01 -0.292872428720262D+00 - 0.418833204159699D+00 0.948397542478352D+00 -0.206415746870469D+00 - 0.754315763569657D+01 0.331136904788837D-09 -0.888888888888817D-01 - 0.107179072709577D+00 -0.609201156204045D+00 -0.387065922619323D-01 - -0.872760215844070D+00 0.131683079907539D+00 -0.619829413235568D+00 - 0.790831791720373D+00 -0.418015213779247D+01 0.133333333333333D+00 - 0.331136887007921D-09 -0.888888888888817D-01 -0.324328735259443D+01 - 0.701463452682253D-01 -0.860250920069217D+00 0.461129986115694D+00 - -0.826987863316644D+00 0.856654025089888D-01 0.141761985431522D+00 - 0.564479386295390D+01 -0.888888849152387D-01 -0.331136927340242D-09 - 0.939787074848302D-01 -0.219699473959549D+00 -0.349897180249146D+00 - -0.121526792071449D+01 0.112613916994466D+00 0.714352818762720D-02 - -0.409643366312735D+00 0.118394094975933D-01 0.133333327372868D+00 - -0.888888849152387D-01 -0.331136904355156D-09 -0.180040417313419D+00 - -0.114361546123483D+01 0.418833204159803D+00 -0.750744990107580D+00 - -0.817898376529033D+00 -0.111906836956633D+00 -0.145761628767293D+01 - 0.608853930424061D+01 -0.132454761525222D-08 0.444444447755726D-01 - 0.150066044362338D+00 0.234388081691361D+00 -0.465200856220765D+00 - -0.185148113698645D+00 0.100061684900394D+00 -0.778425267507071D+00 - -0.255283038401479D+00 0.105162156085559D+01 0.198682138796702D-08 - -0.132454760007339D-08 0.444444447755726D-01 -0.590271710929046D+00 - -0.427758902773070D+00 -0.214839739776829D+01 0.745813185575810D-01 - 0.257616142485667D+00 0.856654025089888D-01 0.329566414243720D+00 - 0.285482963120030D+01 0.946292811314781D-02 -0.222222207321017D-01 - -0.333333315120763D-01 0.439142308286249D+00 -0.505266752284478D-01 - 0.513672520525521D+00 0.505906001425709D+00 -0.204585270323456D+01 - -0.333333315120763D-01 -0.134509743985800D+01 -0.465097001607812D+00 - 0.884752204285449D-01 -0.113455619235048D+00 0.473095336009546D+00 - -0.333333323399186D-01 -0.222222217255125D-01 0.333333321743501D-01 - -0.500569901167552D-01 -0.380705306986211D-01 -0.222222207321017D-01 - -0.109608305227725D+00 0.117858177762113D+00 0.479245522576029D+00 - 0.333333323399186D-01 -0.222222217255124D-01 0.333333321743501D-01 - -0.265222000654688D-01 0.200561652127640D+00 0.944577258411640D-01 - -0.532714085566028D+00 -0.297317999456992D-01 0.114350290538403D+00 - 0.879947574187891D-01 -0.420368228053360D+00 0.333333313465078D-01 - -0.470055684729066D+00 -0.480765820703839D+00 -0.292872428720262D+00 - -0.600937384921277D+00 -0.111906836956633D+00 -0.373012281870619D+00 - -0.110121902898277D+01 -0.222222227189232D-01 -0.254419009382527D+01 - 0.462546220302671D+00 -0.333333336644662D-01 -0.333333336644662D-01 - 0.461183703771786D+01 -0.222222227189232D-01 0.126561702935583D-02 - -0.587316304228794D+00 -0.115043149512614D+00 0.279687732684719D+00 - -0.721561778598531D-01 0.367238965731002D+00 -0.117454152741828D+01 - 0.333333328366239D-01 0.333333330021924D-01 -0.222222217255125D-01 - -0.276030450187728D+00 0.423688032668103D+00 -0.439740276023529D-01 - 0.174415695835630D+00 0.185888167819796D+01 0.565436641309535D-01 - -0.333333328366240D-01 0.333333330021924D-01 -0.222222217255125D-01 - -0.947983492484511D+00 0.333333338300347D-01 -0.428818975350567D+00 - -0.598074389636670D+00 0.175841598650716D+00 0.113990255924385D+00 - -0.320160808339552D-01 0.903043944120456D-02 0.201922023022696D+00 - -0.467185507267370D-01 0.177777768505930D+00 0.132454758619560D-08 - 0.444444421264772D-01 0.331136904788837D-09 -0.888888849152387D-01 - -0.132454761525222D-08 -0.222222207321017D-01 -0.333333336644662D-01 - -0.132454768507484D-08 0.177777779102311D+00 0.132454768594220D-08 - -0.888888888888817D-01 -0.331136927340242D-09 0.444444447755726D-01 - -0.333333315120763D-01 -0.222222227189232D-01 0.980151871401175D+00 - 0.201979599925131D+00 0.107874844088470D+00 0.473095336009546D+00 - 0.206909676030485D+00 -0.123793696931093D+01 -0.463717297553246D+00 - 0.159597177468720D+00 -0.546299875405254D+01 0.712541930851359D+00 - 0.480295836447455D+01 0.392974457760998D+01 0.000000000000000D+00 - 0.177777768505930D+00 -0.397364304481618D-08 -0.872760215844070D+00 - -0.235784619512938D-01 0.279687732684719D+00 0.278430756528181D+00 - 0.629126035895282D-01 -0.263959573118206D+00 0.619305369273979D+00 - -0.108942537559839D+01 0.322953601637154D+01 0.102758663257552D+01 - -0.645777960149311D+01 0.122637083153633D+02 0.173472347597681D-16 - 0.132454761221645D-08 0.177777776453216D+00 -0.790831742294567D+00 - -0.228630370773193D+00 -0.339056328452531D-01 -0.113455619235061D+00 - -0.597098248041594D+00 0.410270096891727D+00 0.425171591335622D+00 - 0.325777938407885D+01 -0.849207944958665D-01 0.712541930851359D+00 - 0.285419514226870D+01 0.373662852172008D+01 -0.478006838516071D+00 - 0.397364305002035D-08 0.444444421264772D-01 0.264909537318544D-08 - -0.156123173486656D+01 0.535947082097271D+00 -0.478666349758376D+00 - 0.173396316363155D+01 -0.784628932248629D+01 0.718723816095032D+00 - -0.397364306042869D-08 0.444444484180786D-01 0.264909537361913D-08 - 0.119123518124996D+00 -0.387065922619323D-01 -0.824537304271502D+00 - -0.115043149512601D+00 -0.180339187639772D+00 0.102758663257552D+01 - -0.243261986873229D-01 0.624929315770558D+00 0.110919156426631D+01 - 0.558781756831649D+00 0.226299853663827D+01 -0.182549752024414D+00 - -0.664074415893117D+00 0.799670471083497D+01 -0.133333331346512D+00 - 0.331136912595092D-09 -0.888888875643341D-01 0.806516731808247D-01 - -0.110656538858549D+00 -0.124886175555072D+01 -0.134867043210270D+01 - 0.406589131037251D+00 0.188059062834424D+01 -0.867691699560651D+01 - 0.133333331346512D+00 0.331136940784349D-09 -0.888888875643341D-01 - -0.446837230357815D+00 -0.415793552879218D+00 0.134418996259934D+01 - 0.884752204285450D-01 -0.993410737351597D-09 -0.344959496144324D+01 - -0.888888849152387D-01 0.133333327372868D+00 -0.162544846464945D+01 - 0.113631504327106D+00 -0.642953580271321D+01 0.171638103456580D+00 - 0.693025173843337D+00 0.425171591335518D+00 0.419984088536671D+01 - 0.159597177468720D+00 -0.217827632337289D+00 -0.133333327372868D+00 - 0.468520660835404D+00 -0.888888849152387D-01 -0.993410767709257D-09 - -0.107871931683788D+00 0.393709214352595D+00 0.303954744790505D+01 - -0.140324036385740D+01 -0.755177734050936D+00 0.331931134885178D+00 - 0.494368876238454D-01 -0.376055240105739D+00 0.115688017375263D+00 - -0.609201156204149D+00 -0.276281370900012D+00 -0.587316304228794D+00 - 0.845852572008626D+00 0.444444441132988D-01 0.629126035895282D-01 - -0.132454760354284D-08 0.624929315770662D+00 -0.202499150105952D-01 - 0.582253859953230D+00 -0.384448515276332D+01 -0.147693680470953D+01 - 0.587675308257842D+01 -0.340690946237216D+01 0.497604390795440D+00 - -0.198682139924272D-08 -0.132454759660394D-08 0.444444441132987D-01 - 0.753349233513832D+01 -0.216467279654764D+00 -0.463806235714752D-01 - 0.290814499252197D+00 0.198682139490591D-08 -0.460663263376404D-01 - 0.678128545178527D-01 -0.302331072544864D+00 0.633338328159747D-01 - -0.561034451020620D+00 0.321693553204508D+00 -0.229227430746341D+01 - 0.201650238077049D+00 0.108766602987130D+00 -0.662546191991905D+00 - 0.333333325054870D-01 -0.505266752284478D-01 0.264448505153735D+01 - 0.113631504327105D+00 -0.222222222222178D-01 -0.218354642620946D+00 - 0.512833648783024D+00 0.333333328366240D-01 -0.230919167679263D+01 - -0.134227464803389D+00 0.227587472534516D-01 0.468834918186738D+00 - 0.120113880693772D+00 -0.333333356512877D-01 0.242671867443053D+01 - -0.849207944958663D-01 0.258237556098453D-01 -0.463717297553246D+00 - -0.222222232156285D-01 -0.333333308498025D-01 -0.222222202353963D-01 - -0.333333311809394D-01 0.111330000457650D+01 0.127407688544362D+00 - -0.567495529922132D-01 -0.488899153467337D+01 0.592922793992127D+00 - -0.212009496684498D+01 -0.103098704097195D+00 0.410882050372797D+00 - 0.333333353201508D-01 -0.333333373069723D-01 -0.222222252024501D-01 - 0.333333369758354D-01 -0.655228140885567D+00 -0.352565655821033D+00 - -0.422365202574800D+00 0.108481343073878D+01 0.856436919181967D+00 - -0.106534204846928D+00 0.116098265976837D+00 0.294011406553181D+00 - 0.474902947932842D+00 0.231882484871139D-01 0.806180228578928D-01 - -0.108767794557486D+01 -0.346658999844642D-01 0.383204100935194D+00 - -0.131923478277314D+00 0.107179072709590D+00 0.552166981836915D-01 - 0.126561702935579D-02 -0.705905973114943D+00 -0.222222213943756D-01 - 0.470936043477270D-02 0.333333325054871D-01 -0.263959573118206D+00 - -0.333333323399186D-01 0.582253859953230D+00 -0.243261986873228D-01 - 0.105058028168514D+01 -0.359530937401378D+00 -0.222222223877863D-01 - 0.224959486021727D+01 0.171270340965989D+00 0.235394747215893D-01 - -0.602901864484731D+00 -0.108231966297819D+00 -0.333333331677609D-01 - -0.333333333333293D-01 0.503994799480388D+01 -0.333333331677609D-01 - -0.222222223877863D-01 -0.514660019612540D+01 0.463564824719576D+00 - -0.190753359123099D+01 -0.658645276134003D+00 0.333333323399185D-01 - -0.141570549041366D+00 0.224814472995647D+00 0.333333325054870D-01 - -0.222222213943755D-01 0.586557816344003D+00 -0.120562201076345D+00 - 0.155666525167499D+00 0.333333333333294D-01 0.123314669952793D-02 - -0.158888389406216D+00 0.112023760926788D+01 -0.875203891645083D+00 - -0.469526674856192D-01 0.286456921473146D+01 0.243439598770058D+00 - 0.468264018458427D+00 -0.118207321419780D+01 -0.603556669418792D+00 - -0.432602805779370D+00 -0.110390276344790D+00 0.140122366407556D+00 - 0.815005151508437D-01 -0.473582931632256D-02 -0.198682152674490D-08 - 0.133333333333333D+00 -0.333333323399186D-01 0.333333328366239D-01 - 0.000000000000000D+00 -0.333333308498025D-01 -0.133333327372868D+00 - 0.173472347597681D-16 -0.333333333333293D-01 0.397364305002035D-08 - -0.198682139924272D-08 -0.133333331346512D+00 0.444444421264772D-01 - 0.331136887007921D-09 -0.222222217255125D-01 0.333333330021924D-01 - 0.177777768505930D+00 -0.222222202353963D-01 -0.888888849152387D-01 - 0.132454761221645D-08 -0.333333331677609D-01 0.444444421264772D-01 - -0.132454759660394D-08 0.331136912595092D-09 0.132454768334012D-08 - -0.888888888888817D-01 0.333333321743501D-01 -0.222222217255125D-01 - -0.397364304481618D-08 -0.333333311809394D-01 -0.993410767709257D-09 - 0.177777776453216D+00 -0.222222223877863D-01 0.264909537318544D-08 - 0.444444441132987D-01 -0.888888875643341D-01 0.547691757016208D+01 - 0.840866876543180D+00 0.410882050372797D+00 0.718723816095032D+00 - -0.247647980677407D+00 -0.149008822635153D+00 -0.222951437543311D+01 - -0.873123333822443D+01 -0.442931670481088D+00 0.119594164651676D+01 - 0.104083408558608D-16 0.799213804592704D+01 0.583913611534666D+01 - 0.177777793672335D+00 -0.529819076285076D-08 0.105342825215717D+01 - -0.124886175555072D+01 0.224814472995647D+00 0.464628989704186D+01 - 0.487350993205397D+00 -0.102976713327304D+00 -0.219131054724629D+01 - 0.254032683111307D+01 0.177050448225041D+01 0.169148797456319D+01 - -0.106204486188697D+02 0.112275305590865D+02 -0.277555756156289D-16 - 0.132454776834157D-08 0.177777773804120D+00 -0.188059074878440D+01 - -0.130231456420771D+00 -0.103098704097208D+00 -0.478666349758377D+00 - 0.793683457321819D+00 0.445957218407780D+00 -0.159085864588725D+01 - 0.454367626381174D+01 -0.299986242745720D-01 0.742044924133045D+01 - 0.119594164651676D+01 0.397364307604120D-08 0.540809526881313D+01 - 0.444444484180786D-01 0.158772329870325D+01 0.264909538793059D-08 - -0.909695205981924D+01 -0.208252495741068D+01 -0.542723017629922D+00 - 0.115224975022063D+01 -0.397364309512316D-08 -0.465199752390382D+00 - 0.444444447755726D-01 0.264909538749691D-08 0.766380355906734D+00 - 0.104233502562613D+00 -0.141570549041353D+00 -0.110656538858549D+00 - -0.259589425693322D+00 -0.173396328407171D+01 0.785912175561460D+00 - 0.119444787793400D+00 -0.540536800120135D+00 -0.551131707023387D+00 - 0.169148797456319D+01 0.831887358358762D+00 0.553123396068515D+01 - 0.632523781181207D+01 -0.133333329359690D+00 0.331136957264222D-09 - -0.888888862397863D-01 -0.753646823066231D+00 0.705237651555212D-01 - -0.283107835040109D+00 -0.232141856272322D+01 -0.213951578277962D+01 - 0.706124908952773D+00 0.222322131694155D+01 -0.108156317984078D+02 - 0.133333329359690D+00 0.331136897416262D-09 -0.888888862397863D-01 - 0.282003816755967D+00 0.394660052523187D+01 -0.132454761742062D-08 - 0.127407688544362D+00 -0.478006838515967D+00 0.124759092935279D+01 - -0.888888968361676D-01 0.133333345254262D+00 -0.567187351142331D+01 - 0.524561588553198D+00 -0.189855407712972D+01 0.995905552136324D-01 - 0.930352901512941D+00 -0.574032743272033D+01 0.484715443801335D+01 - -0.587777022711510D+00 0.445957218407676D+00 -0.149008822635153D+00 - 0.132484978915420D+00 -0.133333345254262D+00 0.536323233067731D+00 - -0.888888968361676D-01 -0.132454770719256D-08 -0.414350872107661D+00 - -0.106123956245354D+00 0.133676441098479D+00 0.163142482730646D+01 - -0.204681625812361D+01 -0.949211163578710D+00 0.773611160098877D+00 - 0.368899186377984D+01 -0.664074415893221D+00 -0.658645276134003D+00 - 0.444444434510249D-01 0.494565119519829D+00 0.285332219470075D+00 - -0.132454778395408D-08 0.198682167940056D-08 0.192899517135313D+01 - 0.114089411222852D+01 0.406888423903396D+01 -0.650868181619403D+01 - 0.785912175561564D+00 0.487350993205396D+00 -0.186035017609278D+01 - -0.295235262092985D+01 -0.198682167506375D-08 -0.820998558146352D-01 - 0.688617925572267D+01 -0.132454778135199D-08 0.444444434510249D-01 - 0.146006506937816D+01 -0.196689898330498D+01 -0.158115483514764D+01 - -0.594415975365509D+00 -0.368671167712900D+00 0.473769529389503D+00 - 0.827450611865158D+00 -0.166889827681757D+00 -0.100679420048062D-01 - -0.132023769186375D+01 -0.567495529922133D-01 0.333333369758354D-01 - -0.732557875737165D-01 0.119123518124983D+00 0.530868217509935D+01 - 0.333333373069723D-01 -0.222222252024500D-01 0.995905552136326D-01 - -0.259398079822192D+00 -0.659463436101402D+00 0.474538016781102D+00 - 0.112464392781642D+01 0.372582724131352D+00 -0.222222232156285D-01 - -0.299986242745720D-01 -0.442931670481088D+00 -0.141604199364285D+00 - 0.154937012777016D+00 -0.333333353201508D-01 0.351916709543752D+01 - -0.333333356512877D-01 -0.202110844010772D+01 -0.333333326710555D-01 - -0.885457811237114D-01 0.141530771907980D+00 -0.564995681416887D+01 - 0.858345916164994D+00 0.786953162678205D-01 0.366574932479126D+00 - -0.117988719659578D+00 0.423689136498486D+00 -0.222222232156286D-01 - 0.917882173653942D-01 -0.222222212288071D-01 -0.333333343267401D-01 - -0.486124586454681D+00 0.208896555710803D-01 0.107222618616538D+01 - 0.333333339956032D-01 -0.287651116117095D-01 -0.129935476494820D+01 - 0.333333323399186D-01 0.499016572800232D-01 -0.397266762831855D+00 - -0.200365882951212D+01 0.115980283544894D+00 0.130972077082554D+00 - 0.772330300584241D+00 0.759798951149927D+00 -0.359455154830123D-01 - -0.242524378776151D+00 -0.131330008717238D+01 0.806516731808377D-01 - -0.120562201076345D+00 -0.222222210632386D-01 -0.202613738633737D+00 - 0.333333320087816D-01 0.114089411222852D+01 -0.140721707071360D+00 - 0.119444787793401D+00 0.669022083112497D+00 0.938263277079227D+00 - -0.102976713327304D+00 -0.333333318432131D-01 -0.333333326710555D-01 - -0.222222220566494D-01 0.447187387032863D+01 0.508197262392219D-01 - 0.390858409665715D+00 -0.399162603511228D+00 -0.333333328366239D-01 - 0.116284775600323D+01 -0.432285157867984D+00 -0.151698457066670D+00 - 0.721999061207110D+00 0.394749957038455D+01 0.135242065822533D+00 - 0.176470220504436D+00 -0.267900428552383D-01 0.333333318432131D-01 - -0.222222210632386D-01 -0.222670664908773D+00 -0.207809919924928D+01 - 0.306319470624003D+00 0.333333320087816D-01 -0.232290164226997D+00 - -0.153408224757545D+00 0.198112497582081D+00 -0.669095129756334D+01 - -0.222222220566494D-01 -0.877526274482035D+00 -0.333333326710555D-01 - -0.195443419445902D+01 0.333333328366240D-01 0.137580721492453D+01 - -0.181198314300497D+00 0.840761232048545D+00 -0.634336225674956D+00 - 0.709600562735565D+00 0.143327546655868D+00 -0.252524135568966D+00 - 0.741034379522268D-01 -0.306532587776528D-02 0.333333323399185D-01 - -0.397364306042869D-08 -0.333333373069723D-01 0.133333331346512D+00 - -0.333333353201508D-01 -0.133333345254262D+00 -0.333333328366239D-01 - 0.104083408558608D-16 -0.198682167506375D-08 -0.277555756156289D-16 - 0.397364307604120D-08 -0.133333329359690D+00 0.333333325054870D-01 - 0.444444484180786D-01 -0.222222252024501D-01 0.331136940784349D-09 - -0.132454778135199D-08 -0.222222232156285D-01 -0.888888968361676D-01 - -0.333333326710555D-01 0.177777793672335D+00 0.132454776834157D-08 - 0.444444484180786D-01 0.331136957264222D-09 -0.222222213943755D-01 - 0.264909537361913D-08 0.333333369758354D-01 -0.888888875643341D-01 - -0.132454770719256D-08 0.444444434510249D-01 -0.222222220566494D-01 - -0.529819076285076D-08 -0.333333356512877D-01 0.177777773804120D+00 - 0.264909538793059D-08 -0.888888862397863D-01 0.423689136498486D+00 - 0.761563202927111D+01 0.101143249375923D+01 0.115224975022063D+01 - -0.167200043314926D+01 -0.273852201506201D+01 -0.133449382110425D+00 - -0.737245278432540D+01 0.101864236798277D+01 -0.346944695195361D-16 - -0.396178696344065D+00 0.858012684994634D+01 0.959025789393452D+01 - 0.177777779102311D+00 -0.397364303093839D-08 0.954441734617675D+00 - -0.232141856272322D+01 0.135242065822533D+00 0.589695229068252D+01 - 0.649397537914988D+00 0.271073239602026D-01 0.452972530756716D+01 - -0.648381135562156D+00 0.345384995056737D+01 -0.270717608841210D+01 - -0.103290983566559D+02 0.747640875899693D+01 -0.346944695195361D-17 - 0.132454764691092D-08 0.177777771155025D+00 -0.117988719659591D+00 - -0.222322137219179D+01 0.270138778586796D-01 -0.542723017629922D+00 - 0.102704230186709D+00 0.492710192544803D+00 -0.292420037995801D+01 - 0.400322449088584D+01 0.712909863289586D+01 0.121249630740043D+00 - 0.101864236798277D+01 0.198682151893864D-08 0.637350760080841D+01 - 0.444444447755725D-01 0.132454766035503D-08 -0.746481680014119D+01 - -0.163712903262653D+01 0.109489232334286D+01 -0.414380880316877D+00 - -0.198682145041706D-08 0.444444447755723D-01 0.132454765211509D-08 - -0.151698457066657D+00 -0.283107835040109D+00 -0.332415839964426D-01 - -0.158772335395349D+01 0.915996212848967D+00 -0.542256555508969D+00 - -0.206836678810312D+01 -0.514159614376148D+01 0.345384995056737D+01 - 0.417245306056536D+01 0.134050209818525D+00 0.535982553597509D+01 - -0.133333327372868D+00 0.331136898717305D-09 -0.888888849152387D-01 - -0.140429681701127D+01 -0.769109348477209D+01 -0.173529083443687D+01 - -0.869603080639011D+01 0.133333327372868D+00 0.331136928641285D-09 - -0.888888849152387D-01 0.107284915676244D+01 0.549095140315283D+01 - 0.917882173653943D-01 0.491622126056909D+00 0.910160325069588D+00 - -0.465199752390278D+00 -0.912501451396370D-01 -0.888888888888816D-01 - -0.993410628064018D-09 0.404578562768682D+00 -0.120071689825918D+01 - 0.129606538983539D+00 0.133333333333333D+00 -0.255161909026096D+01 - 0.232722529233012D-01 -0.504128503276891D+01 0.772721248787944D+01 - -0.505981379589209D+00 -0.993410773780790D-09 0.492710192544699D+00 - -0.133449382110425D+00 -0.888888888888817D-01 -0.133333333333333D+00 - 0.125915205351494D+00 -0.369013838723050D+01 -0.511098809831665D+00 - 0.633544968209935D+00 -0.268881112448621D+01 0.123921092980365D+00 - 0.945111221358717D+00 -0.877526274482035D+00 -0.753646823066335D+00 - 0.444995691975835D+01 0.959385039595545D+00 -0.437550469648806D+00 - 0.101585833139350D+01 0.254552663213912D+00 0.444444427887510D-01 - -0.132454763476786D-08 0.245453159373691D+01 -0.269456846237088D+01 - 0.149115919735407D+01 0.649397537914989D+00 0.915996212849071D+00 - -0.628128129134113D+01 -0.152799979267386D+01 -0.116937091862737D+01 - -0.198682143133511D-08 0.198682142960038D-08 -0.132454761655326D-08 - 0.400612095794701D+01 0.444444427887510D-01 0.538609941714954D+00 - 0.592122771188090D+00 -0.788946755663227D-01 -0.280390889903947D+01 - -0.395399226425481D+00 -0.106521964617947D+00 0.105001265635947D+01 - -0.199551350139374D-01 -0.372791575371254D+00 -0.157580724509554D+01 - -0.287651116117095D-01 -0.106241938677284D+00 0.699289297721216D-01 - 0.104233502562600D+00 0.508128142564544D+01 0.232722529233012D-01 - 0.333333336644662D-01 0.196100400725321D-01 -0.222222227189232D-01 - 0.868366638186574D+00 0.164050943970788D+01 0.377790079057099D+00 - 0.333333338300347D-01 -0.222222217255124D-01 0.615719468337003D-01 - -0.120111561649531D+00 0.121249630740044D+00 -0.396178696344065D+00 - -0.983011292418258D-01 -0.333333328366239D-01 0.444150162780189D+01 - -0.333333330021923D-01 -0.699352082245538D-01 -0.392098060524354D+01 - -0.327236592586861D+00 -0.882876793077779D-01 -0.220983755864577D+00 - -0.333333338300346D-01 -0.174425350532793D+01 0.474508008571991D+00 - 0.613327019366521D-01 -0.222222227189231D-01 0.333333336644662D-01 - -0.367506120613991D+01 0.735282009587603D+00 -0.333333330021924D-01 - -0.177878455033449D+01 -0.222222217255124D-01 -0.566563085488164D+00 - 0.333333328366239D-01 0.129746958693083D+00 0.627683169579596D+00 - 0.705237651555342D-01 -0.127222621633639D+01 -0.153408224757545D+00 - 0.197305231452298D-01 -0.433047022325214D+00 -0.148118784269977D+00 - 0.515721950079393D-01 -0.222222207321017D-01 0.333333315120763D-01 - -0.542256555508969D+00 0.149115919735407D+01 0.271073239602027D-01 - -0.185032916550433D+00 -0.333333313465079D-01 -0.333333321743501D-01 - -0.154894584139558D+01 0.384128516707323D+01 -0.222222217255124D-01 - 0.172420023004146D+01 0.167185536635779D+01 0.524902296777792D-01 - -0.116082339076358D+00 -0.515407928122501D+00 -0.333333323399185D-01 - -0.317255869381206D+01 0.782366924270920D+00 0.302516502625603D+01 - -0.242177357236128D+00 -0.297018959392734D+01 -0.348397715067372D+00 - -0.333333321743501D-01 -0.540717126929495D+01 -0.184241526740184D+01 - 0.739705924895235D+00 0.333333313465078D-01 0.333333315120763D-01 - -0.222222207321017D-01 0.243187436306396D-01 -0.222222217255124D-01 - -0.112304410145275D+01 -0.193285318290017D+01 0.333333323399185D-01 - 0.314879509945917D+00 0.785889980819701D+00 0.333333318432131D-01 - -0.397364309512316D-08 -0.333333343267401D-01 0.133333329359690D+00 - -0.346944695195361D-16 -0.133333333333333D+00 -0.333333328366239D-01 - -0.346944695195361D-17 0.198682151893864D-08 -0.198682143133511D-08 - -0.333333323399185D-01 -0.133333327372868D+00 -0.222222232156286D-01 - 0.444444447755726D-01 0.333333320087816D-01 0.331136897416262D-09 - -0.132454761655326D-08 -0.888888888888817D-01 -0.222222217255124D-01 - 0.177777779102311D+00 0.132454764691092D-08 0.444444447755725D-01 - -0.333333321743501D-01 0.331136898717305D-09 -0.222222210632386D-01 - 0.264909538749691D-08 0.333333339956032D-01 -0.888888862397863D-01 - 0.444444427887510D-01 -0.993410773780790D-09 -0.333333330021923D-01 - -0.397364303093839D-08 0.177777771155025D+00 0.132454766035503D-08 - -0.888888849152387D-01 -0.222222217255124D-01 0.474508008571991D+00 - 0.549603115043779D+01 0.109489232334286D+01 0.775748606093146D+00 - 0.102317861605054D+01 -0.475463856131364D+00 0.116032808527779D+02 - 0.530225116863581D+01 0.000000000000000D+00 0.177777779102311D+00 - -0.132454767987067D-08 -0.769109348477209D+01 0.426481714418887D+01 - -0.515407928122501D+00 0.677586844019236D+00 0.148985830612404D+02 - 0.239371234512323D+01 -0.445225335511961D+00 0.546338574559203D+01 - 0.000000000000000D+00 0.132454768680956D-08 0.177777768505930D+00 - 0.420717143394476D+01 0.668624173128187D+00 -0.882876793077780D-01 - -0.414380880316773D+00 0.322325803400600D+00 0.234419056717250D+00 - -0.331136869660686D-09 -0.888888888888816D-01 -0.924752635291079D-01 - -0.275477498510445D+01 -0.475463856131364D+00 -0.199291814083953D+01 - -0.974455795118647D+00 0.133333333333333D+00 0.111740122860278D+02 - -0.586750186697477D+01 -0.133333333333333D+00 -0.888888888888816D-01 - -0.331137062214992D-09 -0.199032237350768D+00 0.147894697878826D+01 - 0.149429467419976D+00 -0.140429681701137D+01 0.570462371317845D+00 - 0.272098076989334D+01 -0.297018959392733D+01 0.803504771334800D-01 - -0.234155212563880D+00 0.825906546613885D+01 0.444444421264772D-01 - 0.239371234512323D+01 -0.408254410118253D-01 0.200976628467192D+01 - -0.132454769027901D-08 -0.422317893666696D+01 -0.631206866608596D+01 - 0.926572877237265D-01 -0.198682152587754D-08 0.559321180652151D+00 - -0.132454769158005D-08 0.444444421264772D-01 0.198682153368379D-08 - 0.211288683307619D+01 -0.960352655669676D+00 -0.198682145041706D-08 - 0.133333327372868D+00 -0.333333338300346D-01 0.333333313465078D-01 - 0.000000000000000D+00 0.000000000000000D+00 -0.133333333333333D+00 - -0.198682152587754D-08 0.444444447755723D-01 0.331136928641285D-09 - -0.222222227189231D-01 0.333333315120763D-01 0.177777779102311D+00 - 0.132454768680956D-08 -0.888888888888816D-01 -0.132454769158005D-08 - 0.132454765211509D-08 -0.888888849152387D-01 0.333333336644662D-01 - -0.222222207321017D-01 -0.132454767987067D-08 0.177777768505930D+00 - -0.331137062214992D-09 0.444444421264772D-01 -0.425162129811461D+01 - 0.118394094975933D-01 -0.112321031533223D+01 0.479245522576028D+00 - -0.263264846556398D+01 -0.198600181132681D-01 -0.240448788744703D-01 - -0.485256752070000D+00 -0.104955419622130D+00 -0.404135699318160D-01 - 0.672100158502359D+01 -0.114296326385516D+00 -0.173472347597681D-16 - 0.177777771155025D+00 -0.132454768507484D-08 -0.185148113698645D+00 - -0.198473181654453D+01 0.423688032668103D+00 -0.102859612050266D+01 - -0.579507771633511D+00 -0.454635806276867D+00 -0.330498728900993D+01 - 0.127860557307037D+00 -0.752404260750512D+00 0.199639151096379D+01 - -0.342998609548090D+01 0.103456650839143D+02 0.173472347597681D-16 - 0.397364287307855D-08 0.177777779102311D+00 -0.811383652536232D+00 - -0.409643366312839D+00 -0.305888154980114D+01 0.117858177762113D+00 - 0.132454768334012D-08 0.692864267160352D+00 -0.134227464803402D+00 - -0.156427105838682D+01 0.444444427887511D-01 0.468520660835508D+00 - -0.518268518372255D-01 -0.198682151980600D-08 0.160314152323305D+01 - 0.244456122742549D+00 -0.151406782767388D+00 -0.155709914056561D+00 - 0.104987073675907D+00 -0.150615619801660D+00 -0.486530860217642D+01 - 0.338645695805710D+01 0.403632136818868D+00 0.142660115676866D+01 - -0.240448788744703D-01 0.198682150072405D-08 0.444444427887511D-01 - 0.132454766469184D-08 -0.116059722986961D+00 -0.481477384505177D+00 - 0.312643468211198D-01 0.142043556455342D+00 -0.465200856220661D+00 - -0.716769510688564D+00 -0.276030450187728D+00 -0.163914217988942D+01 - -0.888888888888816D-01 -0.108231966297806D+00 0.290814499252094D+00 - 0.551687972379921D+00 0.993410667962658D-09 -0.146037588194398D+01 - -0.421632356996647D+00 -0.571307552878033D+01 0.309381117255253D+00 - 0.133333333333333D+00 -0.263146967977897D+01 -0.567351749770050D+00 - -0.107708682272276D+01 -0.549736455371064D+00 -0.454635806276867D+00 - 0.318161474375821D+01 0.119511501512867D+00 -0.133333333333333D+00 - 0.392176764390238D+00 0.834687649961031D+01 0.993410749060980D-09 - -0.888888888888816D-01 0.125185181502770D+00 0.118982020954892D+01 - -0.250427323871331D+00 0.671440671014442D-02 0.778425219676583D+00 - 0.714352818762720D-02 0.377307362097035D+00 -0.109608305227712D+00 - -0.675485231699222D+00 -0.145884339156301D+01 0.403632136818764D+00 - -0.145854867569566D+00 -0.331136940784349D-09 -0.888888862397863D-01 - -0.124506025562216D-01 -0.519639129628056D+01 -0.130854535810636D+00 - 0.262608890153612D+00 0.581806359543980D+01 0.133333329359690D+00 - -0.404135699318160D-01 -0.490619730184249D+00 -0.133333329359690D+00 - -0.888888862397864D-01 -0.331136919100306D-09 -0.875829725192517D-01 - -0.608079667474568D+00 0.588016859123586D+00 0.124981807584337D+00 - 0.444149475730982D-01 0.234388081691361D+00 0.219699426129060D+00 - -0.721561778598661D-01 0.383390324611437D+00 0.309381117255357D+00 - -0.510089733803958D+00 -0.131112274991533D+01 -0.138580910251387D+01 - 0.397364285226187D-08 -0.289486525189497D+01 -0.264909524524959D-08 - -0.582736791328572D+00 0.444444484180786D-01 0.283199728527914D+00 - 0.267661026851792D+01 -0.752404260750511D+00 0.172212425389327D+00 - 0.369746654864430D+00 0.591526948627296D+01 -0.309504436569464D+01 - -0.397364288435426D-08 -0.264909526606627D-08 0.444444447755725D-01 - -0.774749548597248D+00 -0.197636602246534D-01 -0.972759809590711D+00 - 0.233271664495450D+00 0.112613916994479D+00 0.946292811314786D-02 - 0.747983465581818D+00 -0.333333320087816D-01 0.333333326710555D-01 - -0.222333192014622D+00 -0.107871931683801D+00 -0.333333328366240D-01 - 0.549800617385719D+00 0.258237556098453D-01 -0.222222220566494D-01 - -0.438161464533453D+01 -0.155709914056561D+00 -0.595899727998587D+00 - 0.185808870594234D+00 0.407411504383690D+00 -0.182051494122913D+01 - -0.119452726395267D+01 -0.222222210632386D-01 -0.145854867569566D+00 - 0.304360279923106D+01 -0.159240768780667D+01 -0.485256752070000D+00 - 0.857492615744549D+00 -0.333333318432132D-01 -0.222222210632386D-01 - -0.333333320087816D-01 0.372027822483952D+00 0.333333318432132D-01 - 0.150636635899271D+00 -0.801786657668491D-01 -0.146705202569846D+00 - -0.488224693090442D+00 0.128677370601477D+00 0.255380952720254D+01 - 0.333333326710555D-01 0.108127124836912D+00 0.398269158704515D+00 - -0.920806433461676D+00 -0.942032513038794D-01 -0.182926759628323D+00 - 0.472051521978489D+00 0.333333328366240D-01 -0.222222220566494D-01 - -0.276020349785081D+00 -0.972404146378543D-01 0.784818886992528D-01 - -0.131766723926720D+00 0.133357376028802D+00 0.113593358706991D+00 - -0.488141834303370D-01 0.150066044362325D+00 0.239354641911013D+00 - 0.265096974705119D+00 0.174415695835630D+00 -0.222222252024500D-01 - -0.222222212288071D-01 0.235394747215893D-01 0.551160970068244D+00 - -0.421632356996647D+00 -0.463806235714623D-01 -0.186780547540895D+00 - 0.333333326710555D-01 -0.171279125105012D+01 0.333333323399186D-01 - -0.510089733803957D+00 -0.166318483524446D+01 -0.280314142480936D+01 - -0.333333369758353D-01 -0.970370407194208D-01 0.339152433517699D+00 - -0.579507771633511D+00 -0.471911389978100D+00 -0.221594991158774D+01 - 0.723124993336279D+00 -0.524515000220412D+00 0.442306386861981D+01 - -0.402577036882690D+00 -0.104680668853237D+01 -0.333333343267400D-01 - -0.333333339956031D-01 -0.222222232156285D-01 0.333333373069722D-01 - 0.588604355502860D-01 0.378533938335545D+00 -0.441596124277721D+00 - 0.183989123612121D+00 -0.222222232156285D-01 -0.559469317658593D+00 - 0.333333356512877D-01 0.379080085746023D+01 0.492642433202913D+00 - -0.500097968328641D-01 0.306152097560296D+00 0.124309545814731D+00 - -0.333333353201508D-01 -0.263839572218119D-01 0.243532932644189D+00 - -0.114973947644501D+01 0.187816712173534D+00 -0.486855117270080D-01 - -0.414911650465495D-01 0.124592545453576D+00 0.133333327372868D+00 - 0.198682138796702D-08 0.333333323399186D-01 -0.333333328366240D-01 - -0.133333333333333D+00 -0.333333318432132D-01 0.198682150072405D-08 - -0.333333343267400D-01 -0.133333329359690D+00 -0.397364288435426D-08 - -0.173472347597681D-16 0.173472347597681D-16 -0.888888849152387D-01 - -0.132454760007339D-08 -0.222222217255124D-01 0.333333330021924D-01 - 0.993410749060980D-09 -0.222222210632386D-01 0.444444427887511D-01 - -0.333333339956031D-01 -0.888888862397864D-01 -0.264909526606627D-08 - 0.177777771155025D+00 0.397364287307855D-08 -0.331136904355156D-09 - 0.444444447755726D-01 0.333333321743501D-01 -0.222222217255125D-01 - -0.888888888888816D-01 -0.333333320087816D-01 0.132454766469184D-08 - -0.222222232156285D-01 -0.331136919100306D-09 0.444444447755725D-01 - -0.132454768507484D-08 0.177777779102311D+00 -0.637847692240813D+00 - -0.420368228053360D+00 0.171638103456580D+00 -0.907675289991756D+01 - -0.211724697286606D+01 0.251307534219453D+01 -0.518268518372256D-01 - -0.397364303093839D-08 0.512833648783024D+00 0.596518191648480D+00 - 0.177777771155025D+00 0.138777878078145D-16 -0.790990076130162D+00 - 0.407411504383690D+00 -0.804216939709877D+01 0.567954602662848D+01 - -0.180700499133748D+00 -0.369385701635676D+00 -0.531141279800184D+00 - -0.732304877635355D-01 0.407755238724770D+01 -0.598074389636670D+00 - 0.586557816344003D+00 -0.533952582025351D+00 -0.192310361036289D+01 - 0.339152433517699D+00 0.753848297633144D+00 -0.460663263376404D-01 - 0.599040864355010D+00 -0.623954726524419D+01 -0.225185139417485D+00 - -0.395448709123959D+00 -0.838061207852757D+01 0.853180943613421D+01 - -0.672268377829923D-01 -0.107708682272276D+01 0.166530841559062D+01 - -0.191218411410870D+01 0.129891142909683D+02 0.000000000000000D+00 - 0.397364284358825D-08 0.177777776453216D+00 0.380051875518657D+00 - 0.879947574188021D-01 -0.505632200423869D+00 -0.376055240105843D+00 - 0.294011406553181D+00 -0.118982017573491D+01 -0.406456933389332D+01 - 0.312643468211198D-01 0.444444427887511D-01 0.264909532634791D-08 - -0.389791667627707D+00 0.397364300231545D-08 -0.732304877635356D-01 - 0.264909535974134D-08 -0.801786657668622D-01 -0.252673176409294D+01 - 0.444444484180785D-01 -0.397364303267311D-08 0.518061193912238D+01 - 0.536323233067835D+00 -0.141604199364298D+00 -0.797944635841938D-01 - 0.732495966733377D+00 0.110209946962988D+00 0.357747609088683D+00 - -0.108188620874921D+02 -0.371011919487815D+00 0.122487014449135D+01 - 0.282611522170342D+01 0.287144317871267D+01 -0.413564865918470D+00 - -0.386764424343496D+00 -0.556271858491239D+00 0.250406117582306D+01 - 0.169156691171298D+00 0.167487347920284D+00 0.113990255924372D+00 - 0.238875598950756D+00 0.123314669952801D-02 -0.302331072544760D+00 - -0.311488917393553D+00 -0.228481354990065D+01 -0.888888875643340D-01 - 0.119511501512867D+00 -0.142660112295464D+01 0.285332219469971D+00 - 0.993410865721134D-09 0.133333331346511D+00 -0.231425762406756D+01 - -0.140721707071347D+00 -0.113691568521518D+02 0.945947002134675D+00 - 0.599040864355010D+00 -0.524159290035977D+00 -0.970370407194078D-01 - 0.592731443044341D+00 -0.123532520063599D+00 0.484216925769359D+01 - 0.133834389856045D+01 0.252839992502306D+01 -0.133333331346511D+00 - 0.493440179764805D+00 0.186577499401089D+00 -0.401377246616303D+00 - 0.993410729545341D-09 -0.888888875643340D-01 0.422040644133628D+01 - 0.877857057106284D-01 -0.332816553827597D+00 0.886189002730940D+01 - -0.352196185892674D+00 0.485539162057811D-01 0.131411319675311D+00 - 0.114350290538390D+00 0.229227427581490D+01 0.494368876238454D-01 - -0.107338109004255D+01 0.765936147357820D+00 -0.993410755999874D-09 - -0.106534204846915D+00 -0.481477384505073D+00 0.101594968555525D+01 - -0.888888862397863D-01 -0.133333329359690D+00 -0.369385701635676D+00 - -0.117318093014662D+02 -0.993410808475259D-09 -0.146705202569846D+00 - -0.240501056574601D+01 -0.888888862397864D-01 -0.285246580843944D+01 - 0.357747609088579D+00 -0.174408071232016D+01 0.804747424053626D+01 - -0.368004255994201D+00 0.400664195798322D+00 0.446123069011110D+01 - 0.133333329359690D+00 0.822521013436584D+00 -0.558766288990586D+00 - -0.485421922465340D+00 0.203296888026312D+00 -0.129443203144652D+00 - -0.888648461933887D-01 -0.257004178113618D+01 -0.174567140063980D+00 - 0.412432587227112D+00 0.173010465823415D+00 0.175841598650729D+00 - 0.132771690570367D+00 -0.158888389406229D+00 0.678128545178527D-01 - 0.140324033220889D+01 -0.549736455371168D+00 -0.916051063530747D+00 - -0.225185139417485D+00 0.755698544153250D+00 -0.471911389978100D+00 - 0.493440179764908D+00 0.392407461774173D+00 -0.887954589196047D+01 - -0.264909522096346D-08 0.444444484180785D-01 0.444444441132987D-01 - -0.229153681167692D+01 0.236469671618816D+00 -0.941767029484520D+00 - -0.397364280976115D-08 -0.264909520188150D-08 0.898383098307391D+00 - -0.332161479023047D+01 0.329419571230274D+00 -0.211174973319339D+00 - 0.397364285226187D-08 0.366994892826570D+00 0.108561949120212D+02 - 0.727210242002255D+01 -0.382213304084324D+00 -0.463620124688396D-01 - 0.219414204543658D+00 -0.344055100486565D-01 0.892590561435330D-01 - -0.168311739425748D+00 -0.311151405373872D+01 -0.756971062883266D-01 - -0.297317999456992D-01 0.116397834068877D-01 0.115688017375276D+00 - 0.231882484871139D-01 0.982073244716091D+00 0.583760654546956D+00 - 0.142043556455329D+00 -0.333333316776447D-01 -0.222222205665332D-01 - 0.128677370601477D+00 -0.578533885589489D+00 -0.333333313465078D-01 - 0.333333369758355D-01 -0.531141279800184D+00 -0.999439829402572D+00 - 0.212161457878155D+01 -0.222222252024501D-01 0.927749291977006D+00 - -0.333333373069724D-01 0.333333330021925D-01 -0.542040657537733D+01 - 0.332617030397629D+00 -0.333333356512877D-01 -0.106123956245367D+00 - -0.243136888481025D+00 0.208896555710803D-01 -0.222222225533548D-01 - -0.530655310508923D-01 -0.264930116198176D+01 -0.397574830293913D+00 - -0.386764424343496D+00 -0.368004255994201D+00 -0.525275209846799D+00 - -0.715855863229065D-01 0.333333353201507D-01 0.153790381531611D+01 - -0.371869050227689D+01 -0.222222232156285D-01 0.333333333333294D-01 - -0.557394493655895D+00 0.750387444382460D+00 -0.148293102245951D+01 - 0.330122599898177D+00 0.282975459445180D+01 -0.263665187512039D-01 - 0.205884923084950D+00 -0.434370107122116D+00 0.133038752476655D+00 - 0.674137212520742D-02 0.401767877946480D+01 -0.284084681130252D+00 - -0.492117563987754D-01 0.165047827973225D+00 -0.132026261315594D+01 - 0.166532616487198D+00 0.845501533555739D-01 -0.916003940632672D-01 - 0.228041076115228D+00 0.747299155659797D+00 -0.588011456901906D-01 - 0.201580443841372D-01 -0.320160808339552D-01 -0.401444667816533D-01 - 0.633338328159618D-01 -0.469526674856192D-01 0.140220172621773D-02 - 0.125185181502783D+00 0.455228171403854D+00 -0.222222208976701D-01 - 0.449393053662585D+00 0.588604355502860D-01 0.333333321743501D-01 - -0.820998558146221D-01 0.921110339323007D+00 -0.572027769737896D+00 - -0.395448709123959D+00 0.508197262392219D-01 0.333333318432132D-01 - 0.186577499401090D+00 -0.885966168051816D+00 -0.333333338300347D-01 - -0.333333334988978D-01 -0.256855275054981D+01 -0.221603680753605D+00 - -0.222222232156285D-01 0.670685777337535D+00 0.487511642272460D+00 - 0.236469671618816D+00 0.333333356512877D-01 -0.402611535574447D+01 - -0.222222252024501D-01 0.144106315614838D+00 -0.979126764074731D-01 - 0.764353298477882D+00 0.165246559699052D+01 -0.333333369758354D-01 - 0.333333373069723D-01 -0.222222228844917D-01 -0.432295882670646D+01 - -0.651831920123991D+00 0.103039434664539D+00 -0.333333353201507D-01 - -0.173668306016410D+00 -0.404975923506884D+00 0.506675584804543D+00 - 0.879065183697678D+00 0.558085098534979D+01 0.205019878773646D+00 - 0.170160191945744D+01 0.463691207327708D+01 0.140643905089949D-01 - 0.144037945018135D+00 -0.132963166078658D+00 -0.235203074233210D-01 - -0.130004464389170D+00 -0.277829305327289D+00 -0.543504983333440D-01 - 0.454422647450244D-01 0.617971431833996D-01 -0.171993540945636D+01 - 0.296450845070885D-01 -0.252349852518846D+00 0.919105195493865D-02 - 0.333333313465078D-01 0.333333328366240D-01 -0.333333323399186D-01 - 0.333333338300347D-01 -0.333333328366240D-01 0.333333323399186D-01 - -0.133333329359690D+00 0.397364300231545D-08 0.133333327372868D+00 - 0.198682139490591D-08 -0.333333313465078D-01 -0.133333331346511D+00 - -0.397364280976115D-08 -0.333333338300347D-01 -0.198682151980600D-08 - 0.133333333333333D+00 0.138777878078145D-16 0.000000000000000D+00 - -0.222222207321017D-01 -0.222222222222178D-01 -0.222222220566494D-01 - 0.333333326710555D-01 -0.333333336644662D-01 0.333333325054871D-01 - -0.264909520188150D-08 -0.888888862397863D-01 0.993410729545341D-09 - 0.444444427887511D-01 -0.222222205665332D-01 -0.888888849152387D-01 - -0.132454760354284D-08 -0.333333334988978D-01 0.444444427887511D-01 - 0.993410667962658D-09 0.177777771155025D+00 0.397364284358825D-08 - -0.333333315120763D-01 0.333333326710555D-01 -0.222222212288071D-01 - -0.993410755999874D-09 0.264909532634791D-08 0.444444441132987D-01 - -0.888888875643340D-01 0.333333325054870D-01 -0.222222213943756D-01 - -0.222222227189232D-01 -0.222222228844917D-01 -0.333333316776447D-01 - -0.993410737351597D-09 0.444444441132988D-01 0.132454768334012D-08 - -0.888888888888816D-01 -0.397364303093839D-08 0.177777776453216D+00 - -0.191462743465042D+00 -0.352565655821033D+00 0.150188607550390D+01 - -0.105450155189860D+01 -0.200492997564839D+01 -0.726888483905449D+01 - 0.177777793672335D+00 0.332617030397629D+00 0.524561588553197D+00 - -0.529819077152438D-08 0.292576478054932D+01 0.816915742661383D+01 - -0.211975952914140D+01 -0.797944635841938D-01 -0.346944695195361D-17 - 0.474538016781102D+00 -0.564799342691129D+00 -0.361045260689474D+00 - -0.116971146661822D+02 -0.153798747238113D+01 0.642874417479947D+01 - 0.721999061207110D+00 -0.192501261473416D+01 0.514941362684946D+01 - -0.603556669418792D+00 0.487511642272460D+00 0.210113104647326D-01 - -0.133775079932372D+02 0.100091509377838D+01 -0.156659590216826D+01 - 0.158263448693585D+01 0.473769529389504D+00 -0.483142542732699D+01 - 0.153231732721258D+01 -0.123532520063599D+00 -0.237282854703943D+00 - 0.761886266195414D+01 0.563513885155806D+01 0.106379224962296D+02 - 0.312250225675825D-16 0.397364333624972D-08 0.177777773804120D+00 - 0.898937495509293D-01 0.806180228579058D-01 0.900232344340464D+00 - -0.337352418982803D+00 -0.414350872107765D+00 0.324089546197738D+00 - -0.530655310509053D-01 -0.361045260689474D+00 0.141530771907980D+00 - 0.595793273317104D+00 -0.252840004530215D+01 0.397364303007103D-08 - -0.117321018417260D+01 0.110209946962988D+00 0.264909536407815D-08 - 0.444444484180786D-01 0.101775086151473D+02 -0.125912499697404D+01 - 0.264909532504687D-08 -0.202605172162352D+01 -0.456312060821122D+00 - 0.444444441132986D-01 0.491622126057013D+00 -0.317775443735883D+00 - 0.313602818606356D+00 -0.116066607583479D+02 -0.106241938677297D+00 - -0.397364297022307D-08 0.130683794691020D+00 0.220034280939860D+01 - -0.155731595279106D+01 -0.571065995903285D+00 0.517530775939312D+01 - -0.874449487876097D+00 0.138912892478490D+00 0.718479544147233D+00 - 0.198112497582081D+00 0.993545379203553D-01 0.815005151508307D-01 - -0.173668306016397D+00 0.567184942871054D+00 -0.498707526142071D-01 - 0.651606034184820D+00 -0.888888862397863D-01 0.993410773780790D-09 - 0.254552663213808D+00 -0.197682700709756D+01 -0.148118784269964D+00 - -0.417054086027728D+00 0.980149619159098D+00 -0.166889827681653D+00 - 0.655802534750844D+01 0.994182095186336D-02 0.133333329359690D+00 - 0.263404411979464D+00 0.295091394781560D+01 -0.352196185892674D+00 - -0.133426245194189D+02 0.153231732721258D+01 0.277986144767686D+01 - -0.250406129610216D+01 0.526680735778048D+00 -0.133333329359690D+00 - -0.383418411353389D+00 -0.970777182754570D-01 0.675343632359990D+00 - -0.161359768412204D+01 -0.445858547199701D+00 0.849711528809217D+01 - 0.492689796501686D-01 0.993410817582557D-09 -0.888888862397862D-01 - -0.134930711781039D+00 0.116098265976824D+00 -0.132454771456514D-08 - 0.158115495624468D+01 0.132484978915420D+00 -0.888888968361676D-01 - -0.132454773364710D-08 -0.888888968361676D-01 0.312295899094372D+01 - -0.327510689807464D+01 0.765618473426404D+00 -0.105450155189860D+01 - 0.133333345254262D+00 -0.133333345254262D+00 -0.397574830293913D+00 - -0.702282898331189D+00 0.331494395232868D+00 -0.733850101350089D+00 - -0.834941422647287D+01 -0.885457811236984D-01 -0.556271858491135D+00 - 0.172296842151375D+01 0.385595734157980D+01 -0.425964830256745D+00 - 0.564643787918613D+01 0.324089546197634D+00 -0.547241254734126D+00 - -0.163385162177120D+01 -0.373390895427162D+00 0.507445442497070D+00 - -0.556896057349923D-01 -0.403685541832169D+01 -0.153128110803553D+01 - 0.179783073411023D+00 -0.145630099586026D+01 0.304922280248741D+00 - 0.444444484180785D-01 -0.232290164227010D+00 0.819457902013101D+00 - -0.264909551586645D-08 0.140122366407569D+00 0.144106315614838D+00 - 0.397364327553440D-08 -0.141569641255454D+00 -0.166245995221725D+01 - -0.368671167712900D+00 0.593557458218600D+01 0.105070153141187D+01 - 0.251869066651415D+01 -0.502631781310552D+01 0.403759757057724D+01 - 0.949211284675752D+00 0.608689563453121D+01 0.651606034184924D+00 - 0.185237448089330D+01 0.100091509377838D+01 0.483912965381983D+00 - -0.653101789259215D+00 -0.192102745775209D+01 -0.149507193798426D+01 - -0.397364335359696D-08 0.865293126249687D+00 -0.401377246616407D+00 - -0.160425079038791D+00 -0.612576538017273D+01 -0.336141026188192D+00 - 0.363057570605818D+00 -0.264909556357135D-08 -0.591501266397243D+00 - -0.221237571970387D+00 0.125497561343046D-01 0.444444434510249D-01 - 0.437236108517286D-01 -0.346658999844642D-01 -0.494117306240847D+00 - -0.333333356512877D-01 0.133676441098492D+00 -0.564799342691129D+00 - 0.226707179410758D-01 -0.333333353201508D-01 0.245547647677047D+00 - 0.169156691171285D+00 -0.456312060821122D+00 -0.222222232156285D-01 - 0.499929243136343D+00 0.786953162678205D-01 0.382631799218523D+01 - -0.107906522482333D+01 0.205884923084950D+00 -0.425964830256745D+00 - 0.333333369758354D-01 -0.222222252024501D-01 0.333333373069724D-01 - 0.333333334988978D-01 -0.222222228844917D-01 -0.571743942489530D-01 - 0.499666693576806D+00 0.341647634154637D+00 -0.384130358764858D+00 - 0.317822892985582D+00 -0.166257432624698D+01 0.770883799949525D+00 - -0.120994203255043D+01 -0.333333338300347D-01 -0.118238861520499D+00 - -0.912501451396499D-01 -0.833093297437013D-01 0.196100400725321D-01 - -0.165249658871685D+01 0.184504996510970D+00 -0.409447090806753D+00 - -0.424391488111677D-01 -0.420824333590487D+00 -0.414349528583838D+01 - -0.333333321743501D-01 -0.104655971711330D+01 0.993814656073231D-01 - -0.324559013464620D-02 -0.514223640574961D-01 -0.222222208976701D-01 - 0.333333318432132D-01 -0.528968154646298D+00 0.268174517703008D+00 - -0.159180307460326D+01 0.371742858246158D+01 0.203571422225887D+00 - 0.197017922266721D+00 0.183979368290641D+00 0.332801421189609D+00 - 0.703426452089189D+00 -0.111291974947365D-01 0.740868371721165D+00 - -0.526185859315474D-01 -0.170728413245503D+00 -0.181198314300497D+00 - -0.473582931632256D-02 -0.249901604247721D+00 0.333333356512876D-01 - 0.652568127842521D-01 -0.252349852518846D+00 -0.325550723722474D+00 - -0.333333353201506D-01 -0.100679420048192D-01 -0.222222232156284D-01 - 0.283685559740141D+01 0.535875969591892D+00 -0.788946755663097D-01 - -0.128238613346260D+00 0.865293126249688D+00 -0.440277854474566D+00 - -0.947299196785447D+00 0.524902296777792D-01 -0.222222205665332D-01 - 0.526680735778048D+00 0.839314709889928D+00 -0.492200846034705D+00 - 0.333333316776447D-01 0.485539162057940D-01 -0.176779957477179D+00 - 0.165846005467391D+00 0.667651316918479D+00 0.374923808434962D+01 - -0.237282854703943D+00 0.333333313465078D-01 0.471320813349215D+00 - -0.170877822732950D+01 0.874604613997190D-01 -0.222222252024500D-01 - 0.333333373069722D-01 -0.520171288675197D+01 -0.333333369758353D-01 - 0.505470477535374D+00 -0.172953242572022D+00 0.209189695796673D+01 - 0.202339906674344D+00 0.647466075104831D-01 -0.333333333333294D-01 - 0.108868512353013D+00 0.141369063199826D+00 0.671289980862755D-02 - -0.156574226298707D+01 -0.238097655403143D+00 0.102388645768110D+01 - -0.298304728228366D+00 -0.222222225533548D-01 -0.333333330021925D-01 - -0.209672466087886D+00 0.561829606985232D+00 -0.277933030180474D+00 - -0.375543964685361D+00 0.531113540062928D-01 0.388368029138561D+00 - 0.697212740550026D+00 -0.166931589158914D+00 0.714445630022238D-01 - 0.584458045916157D-02 0.333333373069723D-01 -0.333333318432131D-01 - -0.333333373069724D-01 -0.397364335359696D-08 0.333333353201508D-01 - -0.133333329359690D+00 0.333333318432132D-01 -0.133333345254262D+00 - 0.333333333333294D-01 0.397364303007103D-08 -0.333333333333294D-01 - 0.198682167940056D-08 0.133333345254262D+00 -0.333333353201508D-01 - -0.346944695195361D-17 -0.397364303267311D-08 0.133333331346511D+00 - 0.312250225675825D-16 -0.222222252024500D-01 0.333333320087816D-01 - -0.222222252024501D-01 0.333333321743501D-01 -0.264909556357135D-08 - 0.993410817582557D-09 -0.888888968361676D-01 0.444444484180786D-01 - -0.222222232156285D-01 -0.333333330021925D-01 -0.333333331677609D-01 - -0.888888968361676D-01 -0.222222232156285D-01 -0.132454778395408D-08 - 0.993410865721134D-09 0.177777793672335D+00 0.444444484180785D-01 - 0.397364333624972D-08 0.333333369758355D-01 0.333333369758354D-01 - -0.222222210632386D-01 -0.222222208976701D-01 0.444444434510249D-01 - -0.888888862397862D-01 -0.132454773364710D-08 -0.222222225533548D-01 - -0.333333356512877D-01 0.264909536407815D-08 -0.333333356512877D-01 - -0.222222223877863D-01 -0.132454761742062D-08 0.444444434510249D-01 - -0.529819077152438D-08 0.264909535974134D-08 -0.888888875643340D-01 - 0.177777773804120D+00 0.887767552167478D+00 -0.397266762831855D+00 - 0.317822892985582D+00 -0.317775443735883D+00 0.642111560339127D+00 - 0.129606538983539D+00 -0.505431723628251D+00 0.177777776453216D+00 - -0.201464314813875D+01 -0.397364308471482D-08 -0.381639164714898D-16 - -0.881633748559692D+00 -0.633267408073233D+00 0.101426246615973D+02 - -0.565957700476335D+01 0.377790079057098D+00 -0.429030012494667D+00 - -0.265270408188446D+01 -0.957951683865152D+01 -0.204959687344480D+00 - 0.111300336710794D+02 0.585829921726477D+00 -0.996731456885571D+00 - 0.782366924270920D+00 -0.634336225674955D+00 0.936992187220575D+00 - 0.840666090052637D+01 0.505470477535374D+00 -0.122949609004486D+02 - -0.414207342673142D+01 0.989474086830116D+00 0.188051195475798D+01 - 0.592122771188090D+00 -0.269054540715850D+01 0.490138201231370D+00 - -0.258101945731228D+00 -0.970777182754571D-01 0.713373669160116D+01 - 0.593663298572462D+01 -0.312250225675825D-16 0.397364297022307D-08 - 0.177777771155025D+00 -0.376267225951034D+00 -0.833093297437143D-01 - 0.115980283544907D+00 0.173724223392935D+01 -0.511098809831769D+00 - 0.191964273019743D+00 0.130683794691020D+00 0.444444441132988D-01 - -0.204959687344480D+00 0.198682145909068D-08 0.132454764994669D-08 - -0.277986148249236D+01 0.459858876394200D+00 -0.607200115743898D+00 - 0.197255856307638D+01 0.909496108826704D+01 -0.981323148909881D+00 - -0.327236592586860D+00 0.322325803400703D+00 -0.114701711511145D+01 - 0.819057609983935D-01 -0.481807138361242D+01 -0.298173540932166D+00 - -0.198682157531715D-08 -0.178352184400784D+01 0.444444441132986D-01 - -0.568639043857065D+01 0.771997626903274D+01 -0.396869199689092D+00 - 0.132454770415680D-08 0.148828339708600D+00 -0.172953242572009D+00 - 0.741034379522138D-01 -0.348397715067372D+00 -0.426465614365396D+00 - 0.247506107540423D+01 -0.220034284421411D+01 -0.645041361545067D+00 - -0.234155212563984D+00 -0.130108569469522D+01 -0.888888849152386D-01 - -0.106521964617843D+00 0.630786943157536D+00 0.993410759903002D-09 - -0.573775662830857D+00 -0.427160285076784D+01 0.162214445937609D+01 - 0.401335692880306D+01 0.133333327372868D+00 -0.910812775623105D+01 - 0.188051195475798D+01 0.251122716702955D+00 -0.319897006201980D+01 - -0.445858547199701D+00 -0.199561380960414D+01 0.637951702646992D+01 - -0.580918388735794D+00 -0.133333327372868D+00 0.993410704391851D-09 - -0.888888849152386D-01 -0.507427906714880D+00 -0.409447090806753D+00 - 0.359920734242465D+00 0.130972077082541D+00 -0.993410811944706D-09 - -0.571065995903181D+00 -0.538609908748682D+00 -0.888888875643339D-01 - -0.993410851843346D-09 0.125915205351494D+00 -0.888888875643339D-01 - -0.133333331346511D+00 -0.633267408073233D+00 0.546931017131677D+00 - -0.307291390141829D+01 -0.382428539315496D-01 0.449415662904935D+00 - 0.400171275532739D+01 0.942073290130570D+00 0.511707753838197D+00 - -0.983011292418128D-01 0.133333331346511D+00 0.459858876394096D+00 - -0.103107351788481D+01 -0.421625288527308D+00 -0.404838574254934D+00 - -0.680897255691148D+01 -0.703547972904529D+00 0.730995268385671D+01 - -0.796872751231913D-01 -0.367852573784922D+01 0.450487505812227D+00 - -0.263754229125230D+01 0.132057389878164D+01 0.137606083566418D+00 - 0.708122781717315D+00 0.143327546655881D+00 0.294349515441380D+01 - 0.537768664795458D+00 -0.242177357236141D+00 0.554317079693153D+00 - 0.444444484180786D-01 -0.438996975250577D+00 -0.264909532851632D-08 - -0.241206920095080D-01 0.490649285800687D+00 0.513344924203506D+00 - 0.202339906674344D+00 0.397364302573422D-08 -0.459466534328477D+00 - 0.380956244605654D+01 -0.395399226425481D+00 -0.633544935243664D+00 - 0.630786943157640D+00 -0.496881486967986D+01 -0.585631513687843D+01 - 0.442338051469724D+01 0.989474086830117D+00 0.927996111400404D+00 - 0.750050738780087D+00 -0.383418411353493D+00 0.245957686816251D+01 - -0.397364299537656D-08 -0.150777659219967D+00 -0.264909532981736D-08 - 0.444444427887510D-01 -0.275564731902526D+01 0.896211771823520D+00 - -0.537957723603548D+00 0.770702237246291D+00 -0.281345889823805D+00 - 0.162882232919993D-01 0.185857469056406D+00 -0.359455154830123D-01 - 0.138912892478477D+00 0.203571422225887D+00 -0.252042999554568D-01 - -0.716679327563838D+00 -0.333333323399185D-01 -0.222222213943755D-01 - -0.333333325054870D-01 0.123921092980378D+00 -0.342010291173370D+00 - -0.429030012494668D+00 -0.939705897262669D+00 0.333333331677609D-01 - -0.404838574254934D+00 -0.122388642833543D+01 0.162387871734970D+01 - 0.613327019366521D-01 0.376881475259201D+01 0.333333333333294D-01 - 0.293696962399704D-02 -0.222222223877863D-01 0.262044535048878D+00 - -0.827347404027124D+00 0.374158756777454D+00 0.185340915984235D+00 - 0.819057609983935D-01 -0.924752635291209D-01 0.307160275176442D+01 - -0.146805541761317D+01 -0.555205466211386D-01 -0.333333333333293D-01 - -0.222222223877863D-01 0.333333331677609D-01 -0.846161386557730D-01 - -0.364710902377470D+00 0.492019689199775D+00 -0.220899488509821D+01 - -0.947980302919667D+00 -0.563370200133906D+01 -0.381520724364081D+00 - 0.107611002135864D+00 -0.717834421201446D+00 0.210425608151814D+00 - 0.458558921741137D+01 -0.204008450367955D+01 0.333333323399185D-01 - 0.121305493631562D+01 -0.222222213943755D-01 -0.333333325054870D-01 - 0.560878256971740D+00 0.135273914726011D+00 -0.306532587776528D-02 - 0.243187436306397D-01 -0.385146202960613D+00 -0.903426422743523D+00 - 0.175857712263591D+00 -0.238097655403143D+00 -0.935281981955038D+00 - 0.218388880698154D+00 -0.222222232156285D-01 -0.517237167396539D-01 - -0.199551350139504D-01 0.247852562076138D+01 0.926572877237394D-01 - 0.532365553116397D+00 -0.611777892563089D+00 0.361807128460899D+01 - 0.333333356512877D-01 -0.333333353201508D-01 -0.222222202353963D-01 - 0.251122716702955D+00 -0.169110868215911D+00 0.750050738780088D+00 - -0.333333328366239D-01 -0.333333325054870D-01 0.492689796501816D-01 - 0.333333311809394D-01 -0.258101945731227D+00 0.158603739207567D+01 - 0.900602775660278D+00 0.607542999065063D+00 -0.945452345704481D+00 - 0.288107744457582D+01 0.614001360147060D-01 0.307970500152970D+00 - 0.333333308498025D-01 -0.222222222222178D-01 -0.576802801746383D+00 - -0.615349391484079D+00 -0.387140984185564D+01 0.273005042156890D+00 - -0.503742826747620D+01 0.235800405512253D+00 -0.222222252024500D-01 - -0.205933998930192D+00 0.107170077080473D+01 -0.566162197216463D+00 - 0.333333373069722D-01 -0.333333369758353D-01 -0.194536736627140D+00 - 0.135404583000423D+00 -0.215281429126436D+01 0.688965037807427D+00 - 0.333333313465078D-01 0.333333338300347D-01 -0.333333313465079D-01 - 0.333333323399186D-01 -0.333333338300347D-01 -0.397364299537656D-08 - -0.133333327372868D+00 0.333333328366240D-01 -0.333333328366239D-01 - -0.133333331346511D+00 0.198682145909068D-08 0.133333333333333D+00 - 0.198682142960038D-08 0.133333329359690D+00 -0.333333323399185D-01 - -0.397364297022307D-08 -0.381639164714898D-16 -0.312250225675825D-16 - -0.222222227189232D-01 0.333333315120763D-01 0.333333316776447D-01 - 0.444444441132988D-01 0.993410704391851D-09 -0.222222228844917D-01 - -0.222222212288071D-01 -0.264909532981736D-08 -0.888888875643339D-01 - -0.333333326710555D-01 -0.333333325054870D-01 -0.222222213943755D-01 - 0.993410773780790D-09 -0.888888888888816D-01 -0.132454763476786D-08 - 0.444444441132986D-01 0.177777776453216D+00 0.397364297022307D-08 - 0.333333336644662D-01 -0.222222207321017D-01 -0.222222205665332D-01 - -0.888888849152386D-01 0.333333334988978D-01 0.132454764994669D-08 - -0.333333326710555D-01 0.444444427887510D-01 -0.993410851843346D-09 - -0.222222222222178D-01 -0.222222220566494D-01 -0.333333325054870D-01 - -0.993410628064018D-09 0.444444427887510D-01 -0.888888862397863D-01 - 0.264909532504687D-08 -0.397364308471482D-08 0.177777771155025D+00 - 0.866186505185766D+00 0.492019689199775D+00 -0.566563085488164D+00 - -0.298173540932166D+00 0.311206839862308D+01 -0.974455795118647D+00 - 0.590812799191558D+01 -0.489863823338132D+00 -0.116356794781666D+02 - 0.376737877755024D+00 -0.239087133362325D+01 0.162059686957046D+02 - 0.208166817117217D-16 0.177777776453216D+00 -0.132454767987067D-08 - -0.112304410145275D+01 -0.701955722707045D+00 0.712117872620088D+00 - 0.307970500152970D+00 0.200976628467192D+01 0.248639067425519D+01 - 0.266750159951189D+01 -0.115935386675063D+02 0.183164429032306D+01 - -0.319897006201980D+01 0.153288491197956D+02 0.860697919761124D+00 - -0.138777878078145D-16 0.397364291644664D-08 0.177777768505930D+00 - -0.452556650152913D+00 -0.381520724364081D+00 0.129746958693070D+00 - -0.396869199688989D+00 -0.211288678429231D+01 0.149429467419976D+00 - 0.267140973792850D+01 0.928947105046778D+00 -0.888888875643340D-01 - -0.331137011474331D-09 0.171054467687317D+00 0.839353845373135D+01 - -0.881730534983195D+00 -0.133333331346511D+00 -0.869483074961796D-01 - 0.376737877755024D+00 -0.941712503034498D+00 -0.812760530300384D+00 - -0.888888875643340D-01 -0.157912528095253D+02 -0.331136815884259D-09 - 0.935335966188548D+01 0.133333331346511D+00 0.185206991810283D+00 - 0.366411569875885D+01 0.138249255478715D+00 0.314879509945930D+00 - 0.100899478117107D+01 0.716855139450480D+00 -0.294349838912808D+00 - -0.615349391484079D+00 -0.960352655669676D+00 -0.147894693000438D+01 - -0.580918388735898D+00 0.736725048870401D+01 -0.994460249717884D+00 - 0.322726691672405D+00 0.183164429032306D+01 0.444444421264772D-01 - 0.444444484180785D-01 0.313293754433440D+00 -0.397364290950775D-08 - 0.843567926439161D+01 -0.264909527343885D-08 0.397364288001745D-08 - 0.237997354866087D+01 0.185167134741193D+01 -0.264909524524959D-08 - -0.152771116322984D+02 -0.868176392217679D-01 0.372687406683465D+01 - -0.881924177750486D+00 0.333333308498025D-01 0.333333328366239D-01 - 0.333333323399185D-01 -0.333333333333293D-01 0.133333327372868D+00 - 0.133333333333333D+00 0.198682153368379D-08 -0.133333331346511D+00 - -0.397364290950775D-08 -0.198682157531715D-08 0.208166817117217D-16 - -0.138777878078145D-16 0.333333311809394D-01 -0.222222223877863D-01 - -0.888888875643340D-01 -0.222222217255124D-01 -0.333333321743501D-01 - -0.264909527343885D-08 -0.888888888888816D-01 -0.132454769027901D-08 - 0.993410759903002D-09 0.444444441132986D-01 0.177777776453216D+00 - 0.397364291644664D-08 -0.222222202353963D-01 0.333333331677609D-01 - -0.331137011474331D-09 -0.333333330021924D-01 0.444444421264772D-01 - -0.222222217255124D-01 -0.331136869660686D-09 0.444444421264772D-01 - -0.888888849152386D-01 0.132454770415680D-08 -0.132454767987067D-08 - 0.177777768505930D+00 -0.155930905199886D+01 0.398269158704515D+00 - 0.449319573676269D+00 -0.628826420826515D+00 0.914590840825478D+00 - -0.587660964821613D+01 -0.165209251314452D+00 -0.124506025562216D-01 - -0.453751952544792D+00 -0.221931121215898D+00 -0.710638986974270D+00 - 0.857696185177915D+01 0.173472347597681D-16 0.177777773804120D+00 - -0.132454777528046D-08 -0.153871814077444D+01 0.306152097560296D+00 - -0.704237134438753D+00 0.424118086562850D+00 -0.550557362620481D+00 - 0.241805109481050D+01 -0.774749548597248D+00 -0.378801623882180D+01 - -0.841267983276597D+00 -0.256142761107829D+01 -0.581917538895638D+01 - 0.848970481230117D+01 0.277555756156289D-16 0.529819057897007D-08 - 0.177777793672335D+00 -0.182926759628323D+00 0.444444434510249D-01 - -0.499080049967457D+01 0.132454776660684D-08 0.985165225759032D+00 - -0.196504973758500D+01 -0.134986644666494D+01 -0.490619730184353D+00 - -0.125571013991114D+01 -0.715855863229195D-01 0.400664195798426D+00 - 0.274870447961082D+01 0.266358070235383D+00 -0.131000826957831D+00 - -0.221931121215898D+00 0.198682168113529D-08 -0.638572984461861D+00 - 0.435136936344076D+00 0.807065746807322D-01 0.533422003600630D+01 - -0.893310350018714D+00 0.901718603542535D+00 -0.489649263416512D+00 - 0.444444434510249D-01 0.132454778135199D-08 -0.198682164470609D-08 - -0.355940222940767D+00 -0.578347499959343D+00 0.336582479199090D+00 - 0.155731212906821D+00 -0.375380916941688D+01 -0.441596124277720D+00 - -0.888888968361676D-01 0.132454773191237D-08 -0.532535638088177D+00 - 0.329419571230170D+00 0.338331526268283D+00 0.241156655972088D+00 - 0.349411186874368D+01 -0.582736791328468D+00 -0.393698281174129D+01 - -0.132927560829064D+01 -0.188918765271419D+01 -0.636241983427237D+00 - -0.979126764074601D-01 0.858608515481840D+00 -0.133333345254262D+00 - -0.136601719398695D+01 -0.841267983276597D+00 0.132454770762624D-08 - 0.152766229456212D+00 -0.629120866690450D+00 0.760198349785017D+00 - 0.639911365647658D+01 -0.257117417471364D+01 0.255892765859692D+00 - 0.133333345254262D+00 -0.888888968361676D-01 0.262356481070135D+00 - -0.262626932358214D+01 0.359717300421930D+00 -0.972404146378413D-01 - -0.331136953361094D-09 0.444149475730982D-01 0.972759690122614D+00 - -0.133333331346512D+00 -0.888888875643341D-01 0.366925007673492D+00 - -0.130782327089908D+01 0.435136936343972D+00 -0.165209251314452D+00 - -0.428051544850870D+00 -0.561805052198427D+01 -0.141189101279634D+00 - -0.331136895681539D-09 -0.888888875643341D-01 0.389258142368709D+00 - -0.899302578774045D-01 0.700153599316332D+01 0.133333331346512D+00 - -0.513249569331723D+00 -0.383826056950327D+00 0.968822738934779D-01 - -0.131853956740309D+00 0.121260591271135D+00 0.927532172181555D-03 - -0.500097968328770D-01 0.427536594503997D+00 0.369746654864430D+00 - -0.497590864720544D+00 -0.286280716333364D+01 -0.778630199476213D+00 - -0.704237134438753D+00 0.608079548006471D+00 -0.133302468516238D+01 - 0.338331526268387D+00 -0.411459026799924D+01 -0.397364289823204D-08 - 0.444444421264770D-01 -0.264909527083676D-08 0.473179723157951D+01 - 0.444444484180786D-01 -0.264909525565793D-08 -0.594012833983938D+00 - 0.150241144168008D+01 0.397364290777302D-08 0.164078724815416D+00 - -0.789134184411498D+00 0.375800628413404D+00 -0.995298398333833D-03 - -0.497033893285022D+00 0.253003728876290D+00 0.949739394385881D+00 - 0.353097028260041D+00 0.784818886992528D-01 0.124981807584350D+00 - 0.333333331677610D-01 -0.222222223877864D-01 -0.210704610512784D+00 - 0.379695360938801D+00 -0.888648461934017D-01 -0.333333325054871D-01 - -0.469411154066455D+01 0.674137212520742D-02 -0.131000826957831D+00 - -0.333333323399186D-01 -0.421369910305491D+00 -0.222222213943755D-01 - -0.453751952544791D+00 -0.141189101279634D+00 -0.149078480083093D+01 - -0.662358873974844D+00 0.160714584180591D+01 -0.110317708630012D+01 - 0.399239625472355D+00 0.790980904937238D+00 -0.333333333333294D-01 - 0.429354902051415D+01 -0.664910093153696D-01 -0.622908501671153D+00 - -0.152126353172578D+00 0.904319686253547D+00 0.189529523213164D+00 - -0.333333325054871D-01 -0.222222213943756D-01 0.245135090649768D+01 - 0.333333323399187D-01 0.333333331677609D-01 -0.222222223877863D-01 - -0.484772813883130D+00 -0.237782993625900D+00 0.171301322126376D+00 - 0.156456245499035D+00 -0.328060145274074D+00 0.375639319557041D+00 - 0.333333333333293D-01 -0.100961630951056D+00 0.307013537411463D-01 - -0.550816162829704D+00 0.394161064438561D-01 -0.764596959147206D+00 - 0.198731923726232D+00 0.112691441585103D+00 -0.390554385395172D-01 - 0.172212425389314D+00 0.243532932644189D+00 -0.344055100486436D-01 - 0.720806351402551D+00 0.462776551614613D+00 0.333333356512877D-01 - -0.222222232156286D-01 0.140643905089949D-01 0.420916340554640D+00 - -0.156692511745520D+01 -0.209196258257497D+01 -0.532535638088177D+00 - -0.497590864720544D+00 -0.394870415153169D+01 0.252646905461526D+00 - -0.333333373069724D-01 -0.681643219797931D+00 -0.151598628794435D+01 - 0.144185955505273D+00 -0.550557362620481D+00 -0.199705417971303D+00 - 0.317311764602366D+01 -0.333333369758355D-01 -0.124469725396204D+01 - -0.222222252024501D-01 0.501632701383776D-01 0.740207515026547D+00 - -0.294555182478777D+00 0.333333353201508D-01 -0.694559927659790D-01 - -0.608862828542824D+00 -0.222222222222177D-01 -0.333333325054870D-01 - -0.553227270025053D+00 0.333333328366239D-01 0.755614521334193D+00 - 0.333333311809393D-01 -0.222222202353963D-01 0.319413425348434D+01 - 0.170274749884671D+00 -0.333333308498023D-01 0.294876054904929D+00 - 0.142998797771111D+00 -0.581434974067751D-01 0.181724870059973D+00 - 0.144037320832893D+00 0.219785387102243D+00 -0.592822657059356D+00 - -0.738501860594138D+00 -0.178385625551970D+00 -0.463783663315461D-01 - 0.164654013669396D+00 -0.397364289823204D-08 0.333333328366240D-01 - -0.133333331346512D+00 -0.333333373069724D-01 -0.333333353201508D-01 - -0.333333323399186D-01 0.133333329359690D+00 -0.133333345254262D+00 - 0.198682168113529D-08 0.397364285226187D-08 0.173472347597681D-16 - 0.277555756156289D-16 -0.888888875643341D-01 -0.222222220566494D-01 - -0.264909527083676D-08 -0.333333369758355D-01 0.333333356512877D-01 - -0.222222213943755D-01 0.132454770762624D-08 -0.264909524524959D-08 - 0.444444434510249D-01 -0.888888862397863D-01 0.177777773804120D+00 - 0.529819057897007D-08 -0.331136953361094D-09 0.444444484180786D-01 - 0.333333326710555D-01 -0.222222252024501D-01 -0.222222232156285D-01 - -0.333333325054871D-01 -0.331136940784349D-09 0.132454778135199D-08 - -0.888888968361676D-01 0.444444484180786D-01 -0.132454777528046D-08 - 0.177777793672335D+00 0.178030618569116D+00 0.399239625472355D+00 - 0.967102292890579D+01 -0.125065582249438D+01 -0.488224693090442D+00 - -0.116430849002139D+01 -0.577720026694767D+00 0.161217051246835D+01 - -0.140561942898108D+02 -0.276826857821918D+01 -0.573731276164120D+00 - -0.355940222940767D+00 0.330122599898177D+00 -0.485421922465340D+00 - 0.177777773804120D+00 -0.214778162218010D+01 -0.990389646171873D+00 - -0.659892121576268D+01 0.701094095861284D+01 -0.451028103753970D-16 - -0.397364334665806D-08 0.506675584804543D+00 -0.260457047407785D+01 - -0.324890098508443D+01 -0.559469317658593D+00 0.316591317390124D+00 - 0.252646905461526D+00 0.365104509071988D-01 -0.117479382371917D+01 - -0.666481908433575D+00 -0.136601719398695D+01 -0.211174973319339D+00 - -0.230669024972755D+01 -0.419267372881552D+00 -0.112474736183258D+02 - 0.111615244427458D+02 0.169011749230897D+01 -0.419770382901374D+01 - 0.100557257125178D+02 -0.381639164714898D-16 0.529819046794777D-08 - 0.177777793672335D+00 -0.406874208353540D+00 0.735910352451838D+00 - -0.664910093153826D-01 0.715633709707212D+00 -0.291904114755979D+01 - 0.150636635899284D+00 0.331494395232972D+00 -0.255892644608573D+00 - 0.264909554362203D-08 0.503228845793092D+01 0.311168862194100D+00 - -0.553180424684644D+00 0.336582479199090D+00 -0.477794229127935D+00 - -0.678085080572582D+01 -0.558766288990690D+00 -0.143366157145653D+01 - 0.444444484180786D-01 0.397364333278027D-08 -0.571743942489660D-01 - 0.489003845704542D-01 -0.434370107122116D+00 -0.397364332410666D-08 - 0.444444434510250D-01 0.264909554882620D-08 -0.990389646171873D+00 - -0.364865713073690D+01 0.181267869872283D+00 -0.886744071366482D+00 - -0.347250931546249D+01 0.142783470640716D+01 0.496373876548523D+00 - 0.413296705180017D+01 0.581619612308665D+00 -0.305706602758494D+00 - 0.825534179367939D+00 -0.888888968361676D-01 0.132454777874991D-08 - -0.278963508818023D+01 0.483912965381879D+00 0.133333345254262D+00 - 0.205019878773646D+00 -0.456011670187582D+01 -0.521767859984083D+01 - 0.717463692098092D+00 0.109368429829337D+01 0.767055396423926D+00 - 0.124309545814718D+00 0.245919948366195D+01 -0.694559927659661D-01 - 0.609353665354230D+00 -0.457647598264230D+00 -0.807064534296134D-01 - 0.469621516007211D+00 0.760036646100419D+01 -0.126996356665627D+01 - 0.262356481070135D+00 -0.382213304084220D+00 0.314997946993895D+00 - 0.793580788888902D+00 0.141609578375648D+01 0.316591317390124D+00 - -0.133333345254262D+00 -0.176779957477166D+00 0.132454748601532D-08 - -0.606142739889301D+00 -0.888888968361676D-01 -0.368917622559257D+00 - -0.286657101618408D+00 -0.105221897833388D+01 0.613447404430948D+01 - 0.289046425199658D-01 -0.152126353172578D+00 0.382018875098131D+00 - -0.125016338925954D+01 0.133357376028789D+00 0.311151393332462D+01 - 0.167661175732409D+01 0.412432587227112D+00 -0.489649263416408D+00 - -0.888888875643341D-01 -0.304419873687740D+01 -0.605991715838218D+00 - -0.993410680105722D-09 -0.182686504478259D+01 0.718930312317715D+01 - 0.133333331346512D+00 -0.143615238680442D+02 -0.545925678774431D+00 - -0.888888875643341D-01 0.611162658572340D+00 -0.492117563987624D-01 - -0.644876913106318D+00 -0.186024744376627D+01 -0.133333331346512D+00 - -0.116430849002139D+01 0.311168862193996D+00 0.514250566257601D-01 - -0.993410849241261D-09 0.159077080117406D+01 0.868962263350174D+01 - 0.162051702712479D+00 0.404116075005633D+00 -0.668543337472072D+00 - -0.242047142473745D+01 -0.109530780637088D+00 0.664150951390609D-01 - 0.154641420703835D+00 -0.132963166078671D+00 0.617418034375303D+00 - 0.187816712173547D+00 -0.178230036458458D+01 0.465100087297842D+00 - 0.469621516007314D+00 -0.230697535036963D+01 0.257004166072207D+01 - -0.196838529854011D+01 -0.681643219797931D+00 0.219414204543658D+00 - -0.280714596092707D+01 -0.636241983427341D+00 -0.666481908433575D+00 - 0.104899421618697D+00 -0.397364290170149D-08 -0.128710223542042D+02 - -0.526819371245106D+00 0.444444427887511D-01 0.444444484180788D-01 - -0.264909525175480D-08 0.853514341845535D+00 0.996298597259368D+01 - -0.264909522790235D-08 0.454403008009069D+01 0.397364284532298D-08 - -0.972800288207371D-01 0.280026060346043D+00 0.164083523925803D+01 - -0.411730893272745D+00 0.297609424990344D+00 0.311726204222053D+00 - 0.114899703397082D+00 -0.219903964936065D+01 -0.404973521622182D-01 - -0.548572877673038D+00 -0.191259213431752D+00 0.945552129381388D-01 - -0.488141834303370D-01 0.669474359521496D+00 0.501645097637851D+00 - 0.333333369758355D-01 0.189529523213164D+00 -0.556896057350053D-01 - -0.205351447569158D+01 0.173010465823428D+00 0.962454183297564D+00 - 0.155731212906808D+00 0.151993536806249D+01 -0.605991715838218D+00 - -0.324559013464620D-02 -0.222222252024501D-01 -0.275678416705454D+01 - 0.228041076115228D+00 -0.235148762850638D+01 -0.222222228844916D-01 - 0.333333338300347D-01 -0.577720026694767D+00 0.333333334988978D-01 - 0.480058651789447D+00 0.366099692392588D+01 -0.333333373069724D-01 - -0.333333318432131D-01 -0.477794229127935D+00 0.244011975782446D+00 - 0.284397485654763D+00 -0.333333321743501D-01 -0.645715297693551D+00 - -0.222222208976701D-01 -0.799457136030991D+00 -0.733447387954361D+01 - -0.186058956859571D+01 0.335708464204223D+00 -0.333333356512878D-01 - -0.409543523499082D-01 -0.222222232156286D-01 -0.339160716484095D+00 - 0.471827487679650D+01 0.139201679688937D+01 0.550464141910376D+00 - -0.175535179019657D+00 -0.528915044255120D+00 -0.509209000958017D-01 - 0.160227160714665D+00 0.365158957833608D-01 -0.688243212125927D+00 - 0.333333353201509D-01 0.165001170160273D-01 -0.141402605939001D+01 - -0.675808015183556D-01 0.207569603994115D+00 0.184031156776399D+00 - -0.321840046465207D+00 0.172602806381346D+00 0.143542050585351D+01 - -0.810820185330775D+00 -0.665367012980461D-01 0.219115865780617D+00 - 0.706724228760466D+00 -0.160425079038778D+00 -0.130004464389170D+00 - 0.112026257176207D+01 -0.222222232156285D-01 0.333333356512877D-01 - -0.414911650465495D-01 -0.187232838528259D+01 0.333333353201507D-01 - -0.166048132273968D+00 0.602231787270355D+00 -0.623228829316504D+01 - 0.487253095618660D+00 -0.180260026685167D+00 0.314997946993894D+00 - 0.892590561435201D-01 0.911680816566458D+00 0.144185955505273D+00 - 0.152766229456225D+00 0.507900498276082D+00 0.422908532130514D+00 - 0.104899421618697D+00 -0.419267372881552D+00 -0.267883718721392D+01 - -0.333333369758353D-01 0.296748338775974D+00 -0.193317579702225D+00 - -0.287661189117014D+01 0.101369156079213D+01 0.647466075104831D-01 - -0.222222252024500D-01 -0.222222205665332D-01 0.477157995616122D+00 - -0.333333373069722D-01 0.460186141095102D+00 -0.381167232237646D+00 - -0.323934464354108D+00 0.333333316776448D-01 -0.222222225533548D-01 - 0.530123182591753D+00 -0.333333330021924D-01 -0.333333313465078D-01 - -0.781849013893104D-01 0.580173961557952D+01 0.247923026298402D+00 - 0.380566974350849D+01 -0.107322518825109D+00 0.243799069357830D-02 - 0.280197598989799D+00 0.333333333333293D-01 0.142751278073625D+01 - -0.310249271567898D+00 -0.393055371235639D-01 0.917718922399835D-02 - -0.345872917594597D+00 -0.411174225060307D+00 0.271894672879026D-01 - -0.143610617697573D+01 0.847772672925281D-01 -0.671160357655906D+00 - -0.368951698166821D-02 0.220274872739034D+00 0.333333333333294D-01 - -0.333333353201507D-01 -0.133333345254262D+00 0.397364333278027D-08 - -0.333333333333294D-01 0.333333353201508D-01 -0.133333331346512D+00 - 0.333333318432132D-01 -0.397364290170149D-08 -0.198682164470609D-08 - 0.133333345254262D+00 0.333333373069722D-01 -0.333333318432131D-01 - 0.133333329359690D+00 0.397364285226187D-08 -0.333333373069722D-01 - -0.451028103753970D-16 -0.381639164714898D-16 -0.222222225533548D-01 - 0.333333356512877D-01 0.132454748601532D-08 -0.333333369758353D-01 - -0.222222223877864D-01 0.333333356512877D-01 -0.888888875643341D-01 - -0.264909525175480D-08 -0.222222208976701D-01 0.444444434510250D-01 - 0.444444434510249D-01 -0.222222210632386D-01 -0.333333369758353D-01 - 0.132454773191237D-08 0.177777773804120D+00 -0.888888862397864D-01 - -0.264909522096346D-08 0.529819046794777D-08 0.333333330021925D-01 - -0.222222232156285D-01 -0.888888968361676D-01 -0.222222252024500D-01 - 0.333333331677610D-01 -0.222222232156286D-01 0.444444484180788D-01 - -0.993410849241261D-09 0.264909554882620D-08 -0.333333321743501D-01 - -0.888888968361676D-01 0.132454776660684D-08 -0.333333320087816D-01 - -0.222222252024500D-01 -0.993410808475259D-09 0.444444484180785D-01 - -0.397364334665806D-08 0.177777793672335D+00 0.341647634154637D+00 - -0.160254263625831D+01 -0.109875137124932D+01 -0.132749893523538D+01 - -0.616335491301660D+00 -0.913557458218506D+01 -0.702282898331189D+00 - 0.805661718615881D+00 0.335708464204223D+00 0.443473086145840D+01 - -0.390228236670096D+01 -0.116970610133102D+01 -0.557394493655895D+00 - -0.886744071366482D+00 0.136011670187576D+01 -0.161377510405885D+00 - 0.751334947071310D+01 -0.811912691915036D+01 0.346944695195361D-17 - 0.177777793672335D+00 -0.529819111326491D-08 -0.156633336024323D+01 - 0.667651316918479D+00 -0.568975145008201D+01 0.634735280175290D+01 - 0.793922901929010D+00 0.602231787270355D+00 -0.163461228200715D+00 - 0.133088672484212D+01 -0.705595734157886D+01 0.131530347059881D+01 - -0.273405904958576D+00 0.105070153141187D+01 0.109368429829337D+01 - -0.404975923506884D+00 -0.104030014791528D+01 0.272509315462438D+00 - 0.969828368901074D+01 0.955331719595231D+01 0.589805981832114D-16 - 0.529819112540797D-08 0.177777793672335D+00 -0.420824333590488D+00 - -0.547241254734229D+00 -0.429079219829659D+01 0.428405271317834D+00 - -0.153919762285330D+00 0.356853640756555D+00 -0.767055396424060D+00 - -0.160443531931814D+01 0.264909565117488D-08 0.165047827973238D+00 - 0.359920734242569D+00 0.272553397587207D+00 0.248975145008258D+01 - -0.409543523499211D-01 -0.128746029753990D+01 -0.651873769010686D+00 - 0.444444434510248D-01 -0.109875137124932D+01 -0.766946787775179D+00 - 0.496373876548523D+00 -0.435947522918125D+01 0.397364330762678D-08 - -0.397364344900675D-08 -0.116589209959390D+01 0.502216418205104D+01 - 0.444444484180786D-01 0.264909553624945D-08 -0.252042999554698D-01 - -0.651393770908011D+00 0.114944425674644D+00 -0.793752005866031D+00 - 0.526302274270823D+00 0.397452916801559D+00 -0.226231190228520D+00 - 0.124567536544213D+00 0.527700870333148D+00 -0.153440119026880D+00 - 0.561829606985233D+00 -0.888888968361675D-01 0.513344924203402D+00 - 0.132454762262479D-08 -0.157837440836087D+01 -0.217130808577045D+00 - -0.769030399606197D+00 -0.169110868215898D+00 0.287596545617338D+00 - 0.712887713239205D-01 -0.193317579702212D+00 0.133333345254262D+00 - 0.671116933006218D+01 -0.577747353503003D+01 0.954771766774618D+00 - 0.464614441369108D+00 0.113179449992289D+01 -0.207891846446715D+00 - -0.221237571970284D+00 0.615482983930187D+00 0.485015761752790D+01 - 0.549902481947520D+00 0.133088672484212D+01 -0.606142739889300D+00 - -0.354678739715226D+00 0.248783179977660D+00 -0.581619612308799D+00 - -0.549993239173778D+00 0.454422647450114D-01 0.702282366701529D+00 - 0.422835898315556D+00 -0.133333345254262D+00 0.132454766122239D-08 - 0.346214392418053D-01 -0.888888968361675D-01 0.507445442497070D+00 - 0.192102745775201D+01 -0.424391488111547D-01 0.272553397587103D+00 - -0.248276245042318D+01 -0.149674815942373D+01 -0.495932148278562D+01 - 0.387683831666648D+00 -0.954735280175353D+01 0.166532616487185D+00 - -0.132749893523538D+01 -0.888888968361676D-01 -0.132454758099143D-08 - 0.326620433524633D+00 -0.645715297693551D+00 -0.553180424684540D+00 - -0.297636267060394D+00 -0.133333345254262D+00 -0.888888968361676D-01 - -0.491874613136361D+00 0.200645676762836D+00 -0.132454782341904D-08 - 0.680692818290875D+00 0.133333345254262D+00 -0.118326581614626D+01 - 0.575085934329299D+01 0.103047218999083D+01 0.520853154296630D+01 - -0.496194158408452D-01 0.294384457997788D+00 -0.492325851476793D+00 - -0.905830947921065D-01 0.685729111898796D+00 -0.181186307529257D+01 - -0.514764235462710D+00 0.204655105948298D+00 0.384755697390756D+00 - -0.209672466087899D+00 0.444444434510248D-01 -0.299719878891412D+00 - -0.264909559913318D-08 -0.259201661753713D+01 0.460186141095102D+00 - 0.239151721438300D+00 0.145630099586017D+01 0.672785192514686D+00 - 0.397364337961781D-08 0.543015971294270D+00 -0.591501266397243D+00 - 0.615482983930290D+00 0.598247416789717D+01 -0.286657101618512D+00 - 0.780810976965630D+00 0.496398823728799D+01 0.131530347059881D+01 - 0.764890067431296D+01 -0.137444954929663D+00 0.434044262493074D+00 - 0.134274627002229D+01 -0.397364326252397D-08 0.617971431834126D-01 - -0.249450137307387D+01 -0.763473086145903D+01 -0.264909549374873D-08 - 0.424933727396571D+00 -0.385412161277504D+00 -0.207329388054189D+00 - 0.444444484180787D-01 -0.525726760949286D+00 0.799465817068200D-02 - -0.216037633901838D+01 0.410919077716041D-01 0.179783073411036D+00 - -0.297242372725583D-01 0.268174517703008D+00 -0.903205438465873D+00 - -0.588011456901906D-01 -0.963117511737329D-01 0.702250955892586D+00 - 0.123934423252244D+00 -0.382428539315626D-01 -0.333333353201507D-01 - 0.333333330021924D-01 -0.651873769010686D+00 -0.222222232156285D-01 - 0.181267869872270D+00 0.357454045081488D+00 -0.148759636689241D+01 - -0.616335491301660D+00 -0.491874613136361D+00 -0.222222225533548D-01 - 0.284397485654763D+00 -0.333333333333293D-01 -0.333333356512877D-01 - -0.143915155756871D+01 0.333333369758353D-01 0.983046872857731D-01 - -0.222222252024500D-01 0.237495117980857D+00 -0.185798373403028D+01 - -0.405218828391819D+00 -0.381910654457785D-01 -0.333333316776447D-01 - -0.166541004145540D+00 0.293696962399704D-02 -0.976546856779777D-01 - -0.149429486070021D-01 -0.407828641992052D+00 0.333333373069722D-01 - 0.396563037411970D+00 -0.222222205665333D-01 -0.186802053296386D+00 - -0.605339300637966D+00 -0.107494946590262D+00 -0.523282484312876D-01 - 0.647126127176640D+00 0.333333313465079D-01 -0.109811457425017D-01 - -0.384273565157674D+00 -0.175671162738924D-01 0.331795582207913D+00 - 0.224031266342013D+00 0.630716130262717D+00 0.342273581664184D+01 - -0.403384447981627D+00 -0.250667686088957D+00 0.197237525757761D+00 - -0.198987534784422D+00 -0.345189661728304D+00 0.214760978052415D+00 - -0.203046925779647D+00 0.451580332516158D+00 -0.513088098220130D-01 - -0.302530096089707D-01 -0.188870843447857D+00 -0.277933030180474D+00 - -0.406247815409040D+00 0.413020628195171D+00 0.328915003153257D+00 - 0.614001360147060D-01 -0.150777659219954D+00 -0.310249271567898D+00 - 0.284110530845182D-01 -0.111461187255174D-01 -0.222222232156286D-01 - 0.333333356512877D-01 -0.223047202612124D+01 -0.386879385268940D+00 - -0.222222208976700D-01 -0.255875207575908D+00 0.333333353201508D-01 - -0.195032754934301D+00 0.333333321743500D-01 0.780810976965630D+00 - 0.404393084777046D+01 0.233599933780112D+01 -0.222222228844916D-01 - 0.534210149173537D+00 -0.333333334988978D-01 0.549902481947521D+00 - 0.125497561342917D-01 -0.212359941787438D+00 0.289046425199788D-01 - -0.273405904958576D+00 0.333333338300347D-01 0.919105195493865D-02 - -0.314507984239967D+00 -0.245704287715603D+00 0.639039936091824D+00 - -0.511692356779749D-01 -0.868247110507816D-01 0.518660385738763D-01 - -0.103098824717178D+00 -0.333333318432131D-01 -0.905289156260703D+00 - 0.681559500834678D+00 -0.333333369758355D-01 -0.333333373069724D-01 - -0.187600782980385D+00 -0.222222252024502D-01 0.379874302073091D+00 - 0.767730908772044D+00 -0.506761448334104D+00 0.619753581596557D+00 - -0.284722247016461D+00 -0.181130314450587D+00 0.654451873429662D+00 - -0.790213177428315D+00 -0.251534675214057D+00 0.355590553605367D+00 - -0.370576934044636D+00 0.574447137382187D-01 -0.343182594669450D+00 - 0.916431292720299D-02 0.481462159171432D-01 0.141402479892885D-01 - -0.333333353201506D-01 0.333333373069724D-01 -0.397364326252397D-08 - -0.133333345254262D+00 -0.333333373069724D-01 -0.333333373069724D-01 - 0.333333353201507D-01 -0.133333345254262D+00 0.397364330762678D-08 - -0.333333353201507D-01 0.397364327553440D-08 0.133333345254262D+00 - 0.133333345254262D+00 0.333333353201507D-01 0.333333373069723D-01 - -0.397364332410666D-08 0.346944695195361D-17 0.589805981832114D-16 - 0.333333356512876D-01 -0.222222252024501D-01 0.132454766122239D-08 - -0.264909549374873D-08 -0.222222252024501D-01 -0.333333369758355D-01 - 0.333333356512877D-01 -0.888888968361676D-01 0.444444484180786D-01 - -0.222222232156285D-01 -0.888888968361676D-01 -0.264909551586645D-08 - 0.132454777874991D-08 -0.222222232156285D-01 0.444444484180786D-01 - -0.333333369758354D-01 0.177777793672335D+00 0.529819112540797D-08 - 0.333333369758354D-01 -0.222222232156284D-01 -0.888888968361675D-01 - 0.444444484180787D-01 -0.222222252024502D-01 0.333333369758355D-01 - -0.222222232156285D-01 -0.333333356512877D-01 -0.132454782341904D-08 - 0.264909553624945D-08 0.444444484180785D-01 -0.333333356512877D-01 - -0.222222252024501D-01 -0.132454771456514D-08 0.264909554362203D-08 - -0.888888968361676D-01 -0.529819111326491D-08 0.177777793672335D+00 - 0.185340915984235D+00 0.237495117980856D+00 -0.679787273155209D+00 - -0.121214288842293D+00 -0.528968154646298D+00 -0.116589209959390D+01 - -0.423919519928613D+00 -0.103107351788481D+01 -0.770876568942379D+00 - 0.265631571130689D+01 0.499075588596178D+00 0.257747293881615D+01 - -0.776530785242434D+01 -0.720779987445416D+01 -0.319890342794095D+01 - -0.291320813752836D+00 -0.104083408558608D-15 0.177777773804120D+00 - -0.205074259858734D+01 0.905218610915177D+01 -0.397364328247329D-08 - -0.661447830032330D+00 -0.239319230519650D+00 0.607542999065063D+00 - 0.534210149173537D+00 -0.488718366971014D+01 -0.562811666385926D+01 - 0.115947463296737D+01 0.106817850445594D+01 -0.191628879911375D+01 - 0.525136400212366D+00 0.122383471943551D+01 0.360897313133994D+01 - -0.228251455735937D+00 -0.375543964685361D+00 0.927996111400404D+00 - 0.879989169578218D+01 0.113179449992289D+01 0.801448055250746D+01 - -0.100613961606655D-15 0.529819046794777D-08 0.177777793672335D+00 - 0.197017922266734D+00 -0.976546856779907D-01 -0.703547972904632D+00 - 0.168898062487383D+01 0.397452916801559D+00 -0.947980302919667D+00 - -0.954771647427989D+00 -0.423919519928613D+00 -0.363879424243119D+00 - 0.383742859462891D+01 -0.172177591932745D+01 0.545693247130716D+00 - 0.242811606743085D+01 0.597568075136031D+00 0.171054467687421D+00 - 0.198682173317699D-08 -0.187014880479599D+01 0.444444434510249D-01 - -0.722063637197754D-01 0.517536262587069D+00 0.132454780563812D-08 - -0.386604836778912D+00 -0.198766580198461D+01 -0.198682167940056D-08 - 0.444444434510248D-01 -0.637101808850178D+01 0.631644883321480D+01 - 0.132454779436242D-08 -0.267705690094344D+00 -0.181685001550488D+01 - 0.440828251933540D+00 0.443370232849177D+01 0.235800405512253D+00 - -0.184936078454464D+00 -0.187600782980372D+00 0.322726691672301D+00 - -0.173569491922680D+01 -0.526302154924195D+00 -0.888888968361676D-01 - -0.533520861286384D+01 0.660637433152826D+00 0.157087559710088D+01 - 0.132454771283042D-08 -0.407535055414259D+00 0.133333345254262D+00 - 0.541688485298245D+01 0.542346509207164D+00 -0.423710431263022D+01 - 0.531113540062798D-01 0.277468860233112D+01 -0.281345889823701D+00 - 0.106817850445594D+01 -0.179809092402473D+00 -0.549993239173778D+00 - -0.109716848746300D-02 -0.133333345254262D+00 -0.419900587176923D+00 - 0.132454767119705D-08 -0.194980075082354D+01 -0.888888968361676D-01 - 0.183979368290628D+00 0.450487505812227D+00 -0.896211892109000D+00 - -0.651393770907907D+00 -0.858774831845644D+00 -0.407828641992052D+00 - -0.550346710995263D-01 -0.993410631533465D-09 -0.133333329359690D+00 - 0.168718429167925D+01 0.597568075135927D+00 -0.315300276935629D+01 - -0.770876568942379D+00 -0.846161386557600D-01 -0.993410909522902D-09 - -0.888888862397862D-01 -0.888888862397862D-01 0.485504440907136D+00 - -0.488296399534141D+00 0.669028280778641D+00 0.603283058941706D-01 - 0.133333329359690D+00 -0.885492225132502D+00 -0.500550221033889D+00 - -0.785528971892739D+00 -0.249846964644297D-01 -0.643164919482650D+01 - -0.900103902711974D+00 0.467239385452540D+00 0.544566437129026D+01 - 0.109014119513278D+01 -0.543316111548594D+00 0.367907150973850D+00 - -0.177339742109696D+01 0.119108821661161D+00 0.318217884797961D+00 - -0.184712633654911D+01 -0.205933998930205D+00 0.122907739899247D+00 - 0.444444441132987D-01 0.803482166347832D+00 0.379874302073091D+00 - -0.264909521749401D-08 -0.840435488063839D+00 0.397364286613966D-08 - -0.547266881246737D+00 -0.132057401906712D+01 -0.104814114654760D+01 - 0.531936849425430D-03 -0.497187423869094D+01 0.455555589704864D+01 - 0.714445630022368D-01 0.628766872995649D+01 0.545706294219417D+00 - -0.537957723603548D+00 0.660637433152930D+00 0.759014709834612D+00 - 0.122383471943551D+01 0.456530847439345D+01 -0.397364291297719D-08 - -0.354678739715330D+00 0.441852091612310D+00 -0.164777508483972D+00 - 0.444444484180785D-01 -0.160938826819753D+01 -0.264909528471455D-08 - 0.682370639164835D-01 0.100743832737465D+01 -0.293846707483118D+00 - 0.319269214210677D+00 -0.670688404548199D+00 -0.289459756450278D-02 - -0.526185859315474D-01 0.137606083566431D+00 0.124567536544200D+00 - -0.895025830381713D-01 -0.437368874294069D+00 0.100264921328732D+00 - 0.224031266342013D+00 0.849622101060949D+00 -0.291320813752836D+00 - 0.107611002135864D+00 0.517536262587069D+00 0.333333326710554D-01 - -0.333333318432131D-01 -0.222222210632385D-01 -0.488296399534141D+00 - -0.869483074961926D-01 -0.333333320087816D-01 -0.127170085250986D+01 - -0.151859075769516D+00 0.424674573353148D-02 0.489935319148134D+00 - 0.413520897015998D+01 -0.969011239847276D-01 0.200395882361055D-01 - -0.746124416976335D-02 -0.167085659374903D+00 0.538802954615471D+00 - -0.222222220566492D-01 -0.103113400561030D+00 -0.222222220566494D-01 - -0.333333328366239D-01 0.621183198794523D+00 0.333333328366238D-01 - 0.333333326710554D-01 -0.178913464643412D+01 -0.112150138232110D-01 - -0.482760133340701D+00 -0.182646077499614D+01 -0.526740195890445D+00 - -0.159884542601279D+01 0.615753742027243D+00 -0.603558856009790D+01 - -0.166934028928254D+01 -0.918165916683273D+00 0.333333318432131D-01 - -0.222222210632385D-01 0.595599985009774D-01 0.332943525756381D+01 - 0.123658086976039D+01 0.339984931627932D+00 -0.333333320087816D-01 - 0.124234388839102D+00 -0.141305501802075D+01 -0.194536736627140D+00 - 0.304697707774176D-02 -0.222222212288071D-01 0.148126350859262D+00 - -0.868176392217549D-01 -0.656684110768520D+00 -0.194367555055763D+00 - 0.104061745415320D+00 -0.284722247016461D+00 0.333333326710555D-01 - 0.393945518713444D+00 -0.374789418765094D+00 0.517101844579791D+01 - -0.222222232156285D-01 0.162882232919863D-01 0.542346509207164D+00 - 0.584458045916157D-02 -0.333333323399186D-01 0.346214392418183D-01 - 0.759014709834612D+00 -0.166245154262386D+01 -0.228251455735937D+00 - 0.405852292146932D+00 0.984075900534542D+00 -0.174076006305061D+00 - -0.127668331871676D+00 0.333333356512877D-01 0.413723141081181D+01 - 0.468988301711841D+00 0.696958035448329D-01 0.333333353201507D-01 - -0.222222252024500D-01 -0.333333373069721D-01 -0.333333369758352D-01 - 0.616805053227429D+00 0.206007081419150D+01 -0.450518639273620D+01 - 0.131716995570750D+00 -0.161170945922805D+01 -0.222222232156285D-01 - 0.595042181405749D+00 -0.333333339956032D-01 -0.153023723733023D+01 - -0.225116819786694D+00 0.333333343267400D-01 0.528355263029101D+00 - 0.863901055877239D+00 -0.360207478922858D+00 -0.259481319869127D+00 - 0.118271902669725D+00 0.417207187283964D+00 -0.333333353201508D-01 - 0.333333333333294D-01 0.333333353201508D-01 -0.397364291297719D-08 - -0.333333333333293D-01 -0.133333345254262D+00 -0.333333373069721D-01 - -0.133333329359690D+00 0.198682173317699D-08 0.133333345254262D+00 - 0.333333373069722D-01 0.397364302573422D-08 0.333333318432132D-01 - -0.333333318432131D-01 0.133333331346511D+00 -0.104083408558608D-15 - -0.397364344900675D-08 -0.100613961606655D-15 0.333333356512877D-01 - -0.222222223877863D-01 0.132454767119705D-08 0.333333356512877D-01 - -0.222222225533548D-01 -0.264909528471455D-08 0.444444434510249D-01 - -0.333333369758352D-01 -0.888888862397862D-01 -0.222222210632385D-01 - 0.132454762262479D-08 -0.222222208976701D-01 -0.333333369758353D-01 - -0.264909532851632D-08 -0.888888875643339D-01 0.444444434510248D-01 - 0.177777773804120D+00 0.529819046794777D-08 0.333333331677609D-01 - -0.222222232156285D-01 -0.222222232156286D-01 -0.888888968361676D-01 - 0.444444484180785D-01 0.333333330021924D-01 -0.222222252024500D-01 - -0.993410909522902D-09 0.132454780563812D-08 -0.333333320087816D-01 - -0.888888968361675D-01 -0.333333321743501D-01 -0.222222252024500D-01 - -0.993410811944706D-09 0.444444484180786D-01 0.264909565117488D-08 - -0.397364328247329D-08 0.177777793672335D+00 0.621183198794523D+00 - -0.386604836778912D+00 -0.147251891030993D+01 -0.717834421201446D+00 - 0.108614757848562D+01 -0.812760530300384D+00 0.259763444807242D+00 - 0.103710372537815D+01 0.120771122024949D+02 -0.181713324050965D+02 - 0.108755881098298D+02 -0.221198791864988D+01 0.693889390390723D-17 - 0.177777773804120D+00 -0.132454780130131D-08 -0.160546957277846D+01 - 0.167602530001173D+01 -0.121233478526746D+01 0.468988301711841D+00 - -0.168031739597118D+02 -0.566162197216463D+00 0.185167134741194D+01 - 0.973417790900812D+00 0.125912533797218D+02 -0.179809092402473D+00 - 0.142742616143795D+02 0.619107853697343D+01 -0.138777878078145D-16 - 0.529819054080616D-08 0.177777793672335D+00 -0.267705690094241D+00 - -0.482760133340701D+00 -0.355631670302612D+00 0.135273914725998D+00 - 0.411709231546322D+00 0.883134033319467D+00 0.138249255478715D+00 - -0.292770277945085D-01 -0.372687418541680D+01 0.136031745790995D+02 - 0.259763444807242D+00 -0.124943627925117D+01 -0.133333329359690D+00 - -0.331137001065990D-09 -0.331136753434214D-09 -0.888888862397862D-01 - -0.185199139255235D+02 -0.158098736058380D+01 0.683658833256769D+01 - -0.888888862397861D-01 0.133333329359690D+00 -0.979878333830887D-01 - 0.400183782387612D+01 0.426232787079358D+00 -0.925737627026783D+00 - 0.112225949125417D+00 -0.673260031791279D+00 0.131716995570750D+00 - 0.750183298000804D+00 -0.366411581734099D+01 0.702801697810775D+01 - -0.227544889466925D+00 0.135404583000436D+00 -0.881924177750486D+00 - -0.144188424240411D+01 -0.419900587177027D+00 -0.264909526389787D-08 - 0.149713330244842D+02 0.167602530001173D+01 -0.397364289216051D-08 - 0.444444447755724D-01 -0.264909520708567D-08 0.489674474363468D+01 - 0.181021323868884D+01 0.528681409966010D+00 0.397364281756740D-08 - 0.444444484180787D-01 0.503455027834228D+00 -0.103950319552466D+00 - -0.167698389852961D+02 -0.916734793625032D+00 0.344516256835084D+01 - 0.333333353201507D-01 -0.333333328366239D-01 -0.133333329359690D+00 - 0.133333345254262D+00 0.333333373069722D-01 0.333333323399185D-01 - -0.397364289216051D-08 0.397364288001745D-08 0.133333331346511D+00 - -0.198682167940056D-08 0.693889390390723D-17 -0.138777878078145D-16 - 0.333333356512877D-01 -0.222222220566494D-01 0.132454771283042D-08 - -0.264909526389787D-08 -0.264909524524959D-08 -0.888888862397861D-01 - -0.222222213943755D-01 -0.333333369758353D-01 -0.888888875643340D-01 - 0.444444434510248D-01 0.177777773804120D+00 0.529819054080616D-08 - -0.222222232156285D-01 0.333333326710554D-01 0.444444484180787D-01 - -0.331137001065990D-09 -0.222222252024500D-01 -0.333333325054870D-01 - 0.444444484180785D-01 -0.331136815884259D-09 -0.888888968361676D-01 - 0.132454779436242D-08 -0.132454780130131D-08 0.177777793672335D+00 - 0.375639319557041D+00 -0.899302578774045D-01 -0.120966542437026D+01 - 0.154549901367056D+01 0.104083408558608D-16 -0.470241165704905D+01 - -0.148403864298275D-01 -0.162391666374043D+00 0.177777776453216D+00 - -0.416237246157689D+00 -0.132454757925671D-08 -0.105794275863566D+01 - 0.268256791318553D+00 0.862200815049611D-01 0.106964111275763D+02 - -0.222880778777380D+00 -0.122312287209819D+01 -0.506746515682649D+00 - 0.122692847617297D+00 -0.329688248926245D+01 0.294876054904929D+00 - -0.789134184411498D+00 -0.114568365779104D+01 0.249463187044029D-01 - -0.480026019981468D+01 -0.139110271279093D+01 0.637025553776848D+01 - 0.208166817117217D-16 0.397364284011881D-08 0.177777768505930D+00 - -0.237782993625900D+00 -0.969386621553965D+00 -0.439413435255116D+01 - 0.714500568536811D+00 0.404116075005737D+00 -0.513249569331826D+00 - 0.428507317525899D+01 0.132454757925671D-08 -0.144246733448541D+01 - 0.663310137758434D+00 0.444444441132987D-01 0.198682136888506D-08 - -0.252852750423050D-01 -0.491221600645508D+00 -0.509209000958147D-01 - -0.198682136715034D-08 -0.162391666374043D+00 0.444444441132988D-01 - -0.180889707184111D+01 0.754488937233624D+01 0.132454757969039D-08 - 0.472651642731179D+00 -0.184021564548436D+00 0.114977554819458D+00 - 0.136021252392603D+01 0.180442564088011D+00 -0.195535472337796D+01 - -0.535638684439534D+00 -0.410437402862207D+00 0.960315461230268D-01 - -0.365135100556450D+01 -0.553227270025053D+00 -0.111809170700046D+01 - 0.280026060345939D+00 -0.781849013892975D-01 -0.562481102101939D+00 - 0.382142373206115D+00 -0.427331984180685D+00 -0.325914302225774D+00 - 0.129202847587016D+01 -0.145592484844072D+01 -0.376393914842163D+01 - -0.594012833983835D+00 -0.114568365779104D+01 -0.888888849152387D-01 - 0.157971548913004D+01 -0.994756415128246D+00 0.152587258584625D+00 - 0.993410499260799D-09 0.993410726943256D-09 0.133333327372868D+00 - 0.672494052783260D+00 0.253262672331858D+00 0.418844384148545D+01 - -0.474549879830260D+01 -0.133333327372868D+00 -0.490653877355402D+00 - -0.888888849152387D-01 -0.101645057150227D+01 0.479983863965077D+00 - -0.100961630951043D+00 0.163058567470352D+00 -0.331136893946815D-09 - 0.497033941201426D+00 -0.888888888888817D-01 0.927532172181562D-03 - 0.472651642731075D+00 0.862200815049611D-01 -0.639334658640234D+00 - 0.375088119776178D+00 -0.133333333333333D+00 0.181045902107979D+00 - 0.918749749010390D+00 -0.332269311001629D+01 -0.230057887051220D+00 - -0.214355502028056D+01 -0.355577876749733D+00 0.733870119373511D+01 - 0.146750809222469D+00 0.133333333333333D+00 -0.888888888888817D-01 - -0.331136880069027D-09 0.293917210911167D+00 -0.581434974067881D-01 - 0.383826104866731D+00 0.253003728876290D+00 -0.806380234358866D+00 - -0.205357103075883D+00 0.382142373206219D+00 -0.222880778777380D+00 - -0.728738826235884D+00 -0.882645078272483D+00 -0.132454753632230D-08 - -0.214205750376333D+01 -0.198682135067046D-08 -0.477972878479004D+00 - -0.346061616633773D+00 0.439463230743157D+01 0.444444421264775D-01 - -0.127985310441144D+00 -0.812099597495897D+00 0.198682135327255D-08 - -0.132454758272615D-08 0.444444421264770D-01 0.216071201558512D-01 - 0.307013537411463D-01 0.538501887643221D+00 0.121260591271148D+00 - -0.691046574450461D-01 -0.439097808388187D+00 0.334328630654516D+00 - -0.333333330021924D-01 -0.109530780637101D+00 0.114977554819458D+00 - -0.222222217255125D-01 -0.333333338300347D-01 0.165001170160273D-01 - -0.277971561746841D+01 -0.222222227189232D-01 -0.333333328366240D-01 - -0.416237246157689D+00 0.333333336644663D-01 -0.109161300126174D+01 - -0.126190676099164D+00 0.478451486026661D+00 0.386778562835571D+00 - 0.205718212787174D+01 0.736296185184717D+00 0.216474013854034D+00 - 0.333333328366240D-01 -0.342709969658854D+00 -0.366093935719014D+00 - -0.117136921300478D+01 0.181045902107979D+00 0.693660258130407D-01 - -0.222222217255125D-01 -0.471261029154339D+00 -0.549078357700086D+00 - -0.333333330021925D-01 0.350836698341929D+00 -0.283205285340108D+00 - 0.533311012139031D+00 0.487917682014099D+01 0.333333338300347D-01 - -0.222222227189232D-01 0.333333336644662D-01 -0.100988736448223D+00 - 0.646655428573588D-01 -0.404973521622052D-01 0.465187288996491D+00 - 0.564596986196289D+00 0.219785387102243D+00 0.917718922399835D-02 - -0.426068113322767D+00 0.171281621665425D+00 0.164078724815403D+00 - 0.326407786786824D+00 -0.205357103075883D+00 -0.116371468840056D+01 - 0.333333315120761D-01 -0.325914302225774D+00 -0.506746515682649D+00 - -0.333333323399186D-01 -0.133492347387589D+01 0.333333313465076D-01 - -0.256021265226439D+01 -0.211874960440061D+01 -0.103182562534829D+00 - -0.222222207321016D-01 -0.222222217255124D-01 -0.333333321743501D-01 - -0.622424015954160D+00 -0.696349636375655D-01 0.166178047630251D+00 - -0.222222217255125D-01 0.431763351707172D+00 0.258748984710850D+01 - -0.432903622534649D-01 0.333333323399188D-01 0.486430494042710D+00 - -0.532937573200214D+00 -0.333333321743502D-01 -0.265176075508180D+00 - 0.180160657848898D+00 -0.243474893581546D+00 -0.550087014199020D+00 - 0.410916010409865D+00 0.159531586072955D+00 -0.665082047546213D+00 - -0.333333313465078D-01 0.333333315120762D-01 -0.222222207321017D-01 - -0.133333333333333D+00 -0.333333308498023D-01 -0.333333328366240D-01 - -0.198682135067046D-08 0.333333333333293D-01 -0.333333323399186D-01 - 0.198682136888506D-08 0.133333331346512D+00 0.397364290777302D-08 - -0.133333327372868D+00 0.104083408558608D-16 0.208166817117217D-16 - -0.888888888888817D-01 -0.222222217255125D-01 0.333333311809393D-01 - -0.132454753632230D-08 -0.333333321743501D-01 -0.222222223877863D-01 - -0.264909525565793D-08 0.444444441132988D-01 -0.888888875643341D-01 - 0.177777776453216D+00 0.993410499260799D-09 0.397364284011881D-08 - -0.331136893946815D-09 0.444444421264775D-01 -0.222222217255124D-01 - -0.333333330021924D-01 0.333333331677609D-01 -0.222222202353963D-01 - 0.444444421264770D-01 0.132454757969039D-08 -0.331136895681539D-09 - -0.888888849152387D-01 -0.132454757925671D-08 0.177777768505930D+00 - -0.444242651050943D+00 0.280265250534470D+00 0.478451486026661D+00 - 0.627857887120872D+01 0.199412193512399D+01 -0.131629861084666D+02 - -0.418133220113896D+00 -0.159678984959818D+01 -0.484772813883130D+00 - -0.545925678774431D+00 -0.182228121144532D+01 -0.449202829582001D+01 - -0.252852750423052D-01 -0.106264139262637D+01 0.177777776453216D+00 - 0.000000000000000D+00 0.732679322026407D+01 -0.397364274297429D-08 - 0.244011975782446D+00 -0.696484933626026D+00 0.134540485846835D+02 - -0.154672531879587D+01 0.477157995616122D+00 -0.182942265154718D-01 - 0.443088804239506D+01 -0.663618376399990D+00 -0.526819371245106D+00 - -0.492312370720506D+00 -0.627568858616915D+00 0.326407786786824D+00 - 0.625282182752120D+01 -0.197098637636468D+01 -0.748507299520884D+01 - -0.994756415128245D+00 -0.608862828542824D+00 -0.405220288738908D+01 - 0.173084228742321D+01 -0.118896227693746D+02 0.361261808741067D+01 - 0.346944695195361D-16 0.397364299450920D-08 0.177777771155025D+00 - -0.984300090795503D-01 -0.270750190626446D+01 -0.210247961220244D+00 - 0.470755668774971D+00 -0.308213037873266D-01 0.200645676762940D+00 - -0.644876913106421D+00 0.419330636550709D+01 -0.126190676099177D+00 - -0.700173982691294D+01 0.171301322126389D+00 0.101645054071361D+01 - -0.446612463804380D+00 0.926155998325574D+00 0.264909520361623D-08 - 0.180442564088011D+00 -0.763088790855573D+01 0.444444484180786D-01 - -0.173945187158146D+01 -0.381910654457915D-01 -0.696484933626026D+00 - 0.444444441132988D-01 -0.332111361485275D+01 0.397364276118889D-08 - 0.264909517065648D-08 -0.799457136030990D+00 -0.761506666991939D+00 - 0.193226762507120D+00 0.902793165765579D+01 0.273518531885809D+01 - -0.397364281756740D-08 0.589208565693569D+00 0.698425651804220D+01 - -0.983867119594791D+00 0.620142772251748D+00 -0.225206415966505D+01 - 0.247923026298402D+00 -0.888888862397861D-01 -0.591827508812993D+01 - 0.499874362263201D+00 -0.174735949735765D+01 0.543015971294166D+00 - -0.411730893272641D+00 0.993410765107172D-09 0.337267701676524D+00 - 0.884149504095923D+00 -0.195032754934288D+00 0.645691289664614D+01 - 0.396576518168258D+00 0.133333329359690D+00 -0.696349636375525D-01 - -0.534452202079490D-01 0.195535469258931D+01 -0.907009016460059D-01 - 0.474907659199478D+01 0.144037320832880D+00 -0.204506368602827D+01 - -0.473527529448164D+00 0.426482883923269D+01 -0.265743746818049D+01 - 0.253262672331858D+00 -0.182942265154716D-01 -0.105267930864247D+02 - -0.417205477193712D+00 -0.133333329359690D+00 0.133844290180020D+00 - 0.993410762938768D-09 0.245112038537251D+01 -0.888888862397862D-01 - -0.437680601980388D+00 -0.810141852875205D+00 0.986797147301047D-01 - 0.219903968116699D+01 -0.168643036667519D+01 0.216474013854034D+00 - 0.187480955780714D+00 0.430135350358543D+01 -0.993410654084870D-09 - -0.888888888888817D-01 0.531357317172237D-01 0.172074690570777D+01 - 0.133333333333333D+00 0.664150951390609D-01 0.985222125647144D+01 - 0.112691441585090D+00 0.722725679919065D+00 0.511718954896929D+00 - -0.154665053097019D+01 -0.945282200960859D+01 -0.410437402862103D+00 - -0.360396640254525D+00 -0.133333333333333D+00 -0.888888888888817D-01 - 0.210628423522646D+01 0.280265250534469D+00 -0.993410693116148D-09 - 0.470755668774868D+00 -0.593139154188972D+00 -0.853472474712373D+00 - -0.675808015183426D-01 0.546178919229910D+00 0.150363621806088D+01 - -0.107322518825122D+00 0.173106169992358D+00 -0.856418722416892D+00 - 0.297609424990344D+00 0.661393474619033D+00 0.396576518168361D+00 - 0.181724870059986D+00 -0.265884882021113D+01 -0.562481102102043D+00 - 0.242047145654379D+01 -0.325718200050423D+01 -0.663618376399989D+00 - -0.426068113322767D+00 -0.238644053356379D+00 -0.172997680476355D+01 - 0.444444427887508D-01 -0.774727611268746D+00 -0.132454772150403D-08 - -0.947857905329610D+01 0.183279008908591D+01 -0.132454780433708D-08 - -0.198682171236031D-08 0.198682158919494D-08 0.338801874689848D+00 - 0.444444427887510D-01 0.188111220041612D+01 0.225171195126613D+01 - 0.119070435255827D+01 -0.966128809796967D+00 -0.532483768576797D+00 - 0.881906203413008D+00 0.332937546638642D+00 -0.496194158408582D-01 - -0.345171185317761D+01 -0.100988736448223D+00 0.592646045248178D+00 - 0.154641420703848D+00 -0.109811457425017D-01 -0.390554385395172D-01 - -0.100710946948087D+00 -0.231320680420864D+00 0.333333369758353D-01 - 0.333333339956031D-01 0.123610622972505D+01 -0.222222232156285D-01 - 0.187480955780714D+00 0.559513874803388D+01 -0.279750893132393D+01 - 0.960315461230138D-01 0.823987215015973D+00 0.333333343267400D-01 - 0.528492248634239D+00 -0.333333326710556D-01 -0.222222212288072D-01 - -0.333333323399187D-01 -0.418133220113896D+00 0.377357232197684D+00 - -0.222222252024500D-01 -0.308213037873267D-01 -0.559563225616349D+00 - -0.546482906539374D+01 0.207569603994114D+00 0.226750496461241D+00 - -0.333333356512878D-01 0.263178156400141D+01 0.109880321087533D+00 - -0.157556679364819D+00 0.701837988701924D+01 -0.333333373069722D-01 - -0.222222232156286D-01 0.442276425084488D+00 0.148303782162107D+00 - 0.129689770221825D+00 0.333333353201509D-01 -0.301435058884976D+00 - -0.210807954560883D+01 -0.289954597150711D-01 0.212997806105953D+00 - 0.237165048028506D+01 -0.716286955783252D+00 0.120785206955716D+00 - -0.154974321317207D-01 0.114899703397069D+00 -0.393055371235638D-01 - -0.137444954929650D+00 -0.222222210632386D-01 0.389488575471987D-01 - -0.143384193784080D-01 0.121402611213933D+01 0.333333320087817D-01 - -0.539330659166814D+01 -0.265398590477700D+00 -0.463783663315461D-01 - 0.333333318432133D-01 -0.907009016460060D-01 -0.135761065227879D+00 - 0.100187666321204D+01 0.152587258584638D+00 -0.238644053356379D+00 - 0.868972022100105D+00 0.971369186443204D+00 0.518660385738763D-01 - -0.492312370720506D+00 -0.333333328366238D-01 -0.306078857902471D+01 - -0.333333326710553D-01 0.451208286908375D+00 -0.550135340549690D+01 - -0.319937294921785D+00 -0.222222210632387D-01 0.166178047630251D+00 - -0.333333318432133D-01 0.333333320087818D-01 0.164362598698788D+00 - -0.222222220566493D-01 0.356405120312070D+00 -0.119288115771966D+00 - -0.626906361492486D-01 -0.872495024891584D+00 0.149610697944934D+00 - 0.497836772610684D+01 0.253955752738804D+01 -0.123542507492086D+00 - 0.824218103026180D-01 -0.417034154777924D+00 0.209835189018120D+01 - 0.333333328366238D-01 0.187152791971041D+01 -0.333333326710554D-01 - -0.222222220566493D-01 -0.805742166301368D-01 0.910351753871824D-01 - -0.654250050811726D+00 -0.160182563629164D+01 -0.333333313465078D-01 - 0.333333338300347D-01 -0.133333329359690D+00 0.397364276118889D-08 - -0.333333338300347D-01 0.133333331346512D+00 -0.133333333333333D+00 - 0.333333313465076D-01 -0.333333323399187D-01 -0.198682171236031D-08 - -0.333333328366238D-01 0.333333328366239D-01 -0.198682136715034D-08 - 0.133333327372868D+00 0.333333323399187D-01 0.000000000000000D+00 - 0.397364284532298D-08 0.346944695195361D-16 -0.222222228844916D-01 - 0.333333316776448D-01 0.993410762938768D-09 0.444444441132988D-01 - -0.888888888888817D-01 -0.222222227189232D-01 -0.888888875643341D-01 - -0.222222212288072D-01 0.333333315120761D-01 -0.132454780433708D-08 - -0.333333326710553D-01 0.444444441132987D-01 0.993410726943256D-09 - -0.333333325054870D-01 -0.222222213943756D-01 -0.264909522790235D-08 - 0.177777776453216D+00 0.397364299450920D-08 -0.222222205665332D-01 - 0.333333334988978D-01 -0.888888862397862D-01 -0.993410693116148D-09 - 0.264909517065648D-08 0.333333336644663D-01 -0.333333326710556D-01 - -0.993410680105722D-09 -0.222222207321016D-01 -0.222222220566493D-01 - 0.444444427887510D-01 -0.888888849152387D-01 -0.222222222222177D-01 - 0.132454757925671D-08 -0.397364274297429D-08 -0.333333325054871D-01 - 0.444444427887511D-01 0.177777771155025D+00 0.396563037411970D+00 - -0.118326581614626D+01 -0.930905633120914D+00 -0.559905225596881D+00 - -0.965691227335886D+01 -0.149670390583392D+01 -0.108489012696381D+02 - -0.249417943993481D+01 0.442276425084488D+00 0.695967652026670D+01 - -0.983867119594790D+00 -0.688243212125927D+00 -0.155965067913264D+01 - 0.613699015620236D+01 -0.109716657252186D+02 -0.104083408558608D-16 - 0.177777793672335D+00 -0.529819029447542D-08 0.204984798770685D+01 - -0.770739022721274D+00 0.754958427101231D+01 -0.461327373293019D+00 - 0.681559500834678D+00 -0.840853213829148D+01 0.451208286908375D+00 - 0.153497768217311D+01 -0.121497048051090D+01 0.656936029181445D+01 - -0.345872917594597D+00 0.722400765151088D+01 -0.122279310343685D+02 - 0.198902327404009D+00 0.134274627002229D+01 0.133844290180020D+00 - -0.250208716505207D+01 0.667528745173686D+01 0.226178698481336D+01 - -0.401482693437153D+00 0.951708238933556D+01 0.138777878078145D-16 - 0.397364334145389D-08 0.177777773804120D+00 -0.186802053296386D+00 - -0.492325851476897D+00 0.744507578210917D+00 0.620142772251748D+00 - 0.204506356570117D+01 0.485504440907240D+00 0.444444427887510D-01 - 0.264909519320788D-08 -0.107466131223346D+01 -0.196773103888301D+01 - 0.168970764092857D+00 -0.397364276205625D-08 -0.519399783604895D+00 - -0.137802262830042D+01 0.184031156776412D+00 -0.746124416977634D-02 - -0.976935971853768D+01 -0.530872926982394D+01 -0.149670390583392D+01 - 0.397364286787438D-08 -0.289954597150840D-01 0.118149866167593D+00 - -0.201731733557637D+01 0.444444484180787D-01 0.264909523831069D-08 - 0.280968291409586D+01 0.376496497689165D+00 -0.606121932297013D-01 - -0.830010105454341D+00 -0.140328357702050D+01 0.402200161337153D+01 - -0.114038029937712D+01 0.678369156327195D+00 0.137564814714780D+01 - 0.101585375326972D+00 0.129054881559442D+00 -0.815726564953291D+00 - -0.888888875643340D-01 0.993410662758487D-09 0.654451873429661D+00 - -0.566116443817742D+00 0.545706294219313D+00 -0.123542507492073D+00 - -0.156601993664392D+00 0.120335556685692D+00 -0.976083559270675D+00 - 0.133333331346511D+00 0.391980038139838D+01 0.271894672878896D-01 - 0.547327834989846D+01 0.225206403933794D+01 -0.417205477193712D+00 - 0.487406195451610D+00 -0.180537825237427D+01 -0.135191679062684D+01 - 0.892365028313694D+01 -0.207329388054085D+00 0.147075355175609D+01 - 0.655173399615816D+00 0.153497768217311D+01 -0.101596759469899D+02 - -0.174076006305048D+00 -0.133333331346511D+00 0.275121335813150D+01 - -0.547476220493728D+00 0.179058060700270D+01 0.351686803584705D+00 - -0.331040710688296D+00 -0.659579491000396D-01 0.993410930339583D-09 - 0.640390621703705D-02 -0.888888875643340D-01 0.685729111898796D+00 - -0.175671162738794D-01 0.100449366326678D+01 -0.446612463804276D+00 - 0.172602806381333D+00 0.216037645816068D+01 -0.104240082480107D+02 - -0.617836736618358D+01 -0.351778702411665D+01 -0.888888968361677D-01 - 0.118149866167489D+00 -0.133333345254262D+00 -0.155965067913264D+01 - -0.132454767770226D-08 0.738711559161146D+00 0.587453830003788D+00 - -0.286420265639202D+00 -0.137029449578800D+01 -0.157741400560919D+01 - -0.745509545559403D+00 0.226750496461241D+00 0.402708217610149D+01 - 0.781443644194322D+01 0.241822248335162D+01 -0.626150205435009D+00 - 0.414426769633882D+00 0.856881973669990D+01 0.133333345254262D+00 - -0.888888968361676D-01 -0.132454748731636D-08 -0.297382814305362D+00 - 0.181186319443487D+01 0.824218103026179D-01 -0.181130314450600D+00 - 0.847772672925411D-01 0.950650642363251D+00 -0.821837952709598D+01 - -0.164359301304174D+01 0.487406195451714D+00 -0.437680601980492D+00 - -0.385412161277504D+00 0.114415349094165D+01 -0.380185195760223D+01 - 0.444444434510249D-01 0.471854734110944D+00 0.198682168633946D-08 - 0.128918738288430D+01 -0.132454779089297D-08 0.198902327404009D+00 - 0.321214946210180D+00 -0.198682164904290D-08 0.406012244531796D+01 - 0.316451395260633D+01 -0.132454776270371D-08 -0.933699075270215D+01 - 0.444444434510248D-01 0.239875088007068D+00 0.217670678027998D+01 - -0.391550983267981D+00 0.676276641812964D+01 0.204655105948311D+00 - 0.331795582207913D+00 -0.286941538065203D+00 -0.249846964644427D-01 - 0.859060066972537D+00 0.193226762507107D+00 0.114347520076569D+01 - -0.665367012980461D-01 0.333333325054870D-01 0.140182555311498D+01 - -0.222222222222177D-01 -0.332845361842185D+01 -0.222222232156286D-01 - -0.333333328366239D-01 -0.770739022721274D+00 -0.333333356512878D-01 - -0.333333353201509D-01 -0.108518751299747D+00 0.321969902468709D+00 - -0.114038029937712D+01 0.590213206079748D+00 -0.395121347375603D+01 - -0.326780740788082D+01 -0.101437015266462D+00 0.588787834345265D-01 - -0.965530865097178D+00 0.129689770221825D+00 -0.745509545559403D+00 - 0.424674573353149D-02 -0.796276608771794D+01 0.909061805289498D-01 - -0.108008469757773D+01 0.658530411310364D+01 -0.237564352831919D+01 - 0.351370977333091D+01 -0.120636846895219D+00 -0.109684325717046D+00 - 0.106069451214580D+01 0.262738683453755D+00 0.610016651864429D-01 - -0.222222252024500D-01 0.571556922333424D+00 0.333333373069723D-01 - 0.235678615240354D+01 0.333333369758354D-01 0.333333308498025D-01 - -0.716375117317528D+00 -0.222222202353963D-01 -0.333333311809394D-01 - -0.125648425423158D+01 -0.250619006926994D+00 0.501067037213365D+00 - 0.506677147403893D-01 0.848097541485961D+00 -0.222222213943756D-01 - -0.133906045139977D+00 -0.368951698166820D-02 0.333333325054870D-01 - -0.251534675214057D+00 0.190807946243216D+01 0.333333323399186D-01 - -0.805742166301368D-01 -0.187836927195173D+01 0.109484001488242D+01 - 0.986797147301177D-01 0.410919077715912D-01 -0.164777508483959D+00 - 0.100418992689670D+00 0.505838719856708D+00 0.351686803584705D+00 - -0.131187046835022D+00 -0.285782531106786D+00 -0.901443611153152D+01 - 0.384006789227706D+00 0.239875088007068D+00 -0.401482693437153D+00 - -0.333333323399184D-01 0.497337905620886D+00 -0.333333333333295D-01 - 0.333333325054869D-01 0.557848178200467D+00 -0.333333331677610D-01 - 0.696958035448329D-01 -0.222222223877864D-01 -0.222222213943754D-01 - -0.304697174589057D+00 -0.261715915854071D+01 -0.150587988747139D+01 - -0.311651462131534D+01 -0.215818316005154D+00 0.573067411857183D+01 - -0.325105162287872D+00 0.128698994422082D+01 0.114485552075701D+01 - 0.252909072779715D+00 0.208747104313133D+00 0.204300854285592D+01 - -0.423351586167425D+00 -0.483002336262312D+00 0.334193968667994D-01 - 0.395295689283556D+01 0.333333333333294D-01 -0.333333331677609D-01 - -0.222222223877863D-01 -0.333333318432131D-01 0.333333373069722D-01 - -0.333333373069722D-01 -0.133333331346511D+00 0.333333318432133D-01 - 0.397364286787438D-08 0.397364337961781D-08 -0.198682164904290D-08 - -0.133333345254262D+00 -0.333333333333295D-01 0.333333353201509D-01 - -0.333333353201509D-01 0.133333329359690D+00 0.133333345254262D+00 - -0.397364281756740D-08 0.333333333333293D-01 -0.104083408558608D-16 - 0.138777878078145D-16 0.333333321743500D-01 -0.222222252024500D-01 - 0.333333320087817D-01 -0.222222252024500D-01 0.993410930339583D-09 - 0.444444484180787D-01 -0.888888968361677D-01 -0.132454776270371D-08 - -0.264909559913318D-08 -0.333333331677610D-01 -0.222222232156286D-01 - -0.222222232156286D-01 -0.333333330021924D-01 -0.888888968361676D-01 - 0.993410765107172D-09 0.444444484180786D-01 0.177777793672335D+00 - 0.397364334145389D-08 -0.222222208976700D-01 0.333333369758353D-01 - 0.333333369758353D-01 -0.222222210632386D-01 -0.888888875643340D-01 - 0.444444434510248D-01 0.264909523831069D-08 -0.132454767770226D-08 - -0.333333356512878D-01 -0.222222223877864D-01 0.444444434510248D-01 - -0.333333356512878D-01 -0.222222225533548D-01 -0.132454758099143D-08 - 0.264909520361623D-08 -0.888888862397861D-01 -0.529819029447542D-08 - 0.177777773804120D+00 -0.127963314772529D+00 -0.112150138232109D-01 - -0.403384447981627D+00 0.595784897593268D+00 -0.137802262830042D+01 - -0.820962377136037D+00 -0.785528971892739D+00 0.423493955552303D+01 - 0.104083408558608D-16 0.177187437772326D+01 0.177777771155025D+00 - -0.588651417528260D+01 -0.711980052465481D+01 -0.686099679686377D+00 - -0.157250540830801D+01 -0.207758343375400D-01 0.588787834345265D-01 - -0.113386876623570D+01 -0.553800895976827D+01 0.581445217786839D+01 - -0.397364278460766D-08 0.759794129965551D+00 0.595042181405749D+00 - -0.115757286898025D+01 0.557848178200467D+00 0.199834024500990D+01 - -0.776834121283613D+00 -0.103541661647850D+01 -0.139019352663795D+00 - -0.867679130067218D+00 0.167531524313443D+01 0.719151377902537D+00 - 0.323164933385882D+01 -0.343182594669450D+00 0.100743832737465D+01 - 0.147075355175609D+01 0.875961940430324D+01 -0.722200175662796D+01 - 0.112522144899870D+02 -0.693889390390723D-17 0.397364285920077D-08 - 0.177777776453216D+00 0.214760978052427D+00 -0.159884542601278D+01 - -0.900103902712078D+00 -0.222572231545689D-01 0.542721583430499D+00 - 0.376496497689165D+00 0.375217613571390D+00 0.868113054551328D+00 - -0.292770277944047D-01 0.135191682448227D+01 0.330518648346291D+01 - -0.952959854745389D+00 -0.127963314772529D+00 -0.209972431513723D+00 - -0.120636846895232D+00 0.132454758879769D-08 -0.519834042791009D+01 - 0.198682135413991D-08 0.218478491065643D+01 0.638030503925303D+00 - 0.444444427887510D-01 -0.227094886774459D+01 0.136060540816702D+01 - -0.198682136715034D-08 0.444444427887509D-01 0.449377578157019D+01 - 0.132454757925671D-08 -0.529623558117661D+01 -0.232160890780609D-01 - -0.111774139254442D+01 0.483558865082461D+01 0.528355263029101D+00 - -0.215818316005141D+00 -0.888888888888817D-01 0.443017655053292D+00 - 0.993410801536365D-09 0.706730736329926D+00 -0.217249665176001D+01 - 0.528681409965907D+00 -0.118247002065360D+00 0.514320731751083D+00 - 0.133333333333333D+00 0.749869536224969D+00 0.154093237164599D+01 - 0.723955768768769D+01 0.691244930333002D+00 0.481462159171302D-01 - 0.367389009381619D+01 0.509569992605549D+00 -0.426925186607564D+01 - 0.140328361087593D+01 -0.293846707483014D+00 -0.547476220493728D+00 - 0.719151377902537D+00 -0.557324582160914D+00 -0.129906684019063D+01 - -0.743493973842322D+01 -0.133333333333333D+00 -0.888888888888817D-01 - 0.993410618956719D-09 0.367907150973850D+00 0.197237525757748D+00 - -0.103113400561017D+00 -0.285724725571758D+01 -0.682370975489213D-01 - 0.703910269390147D+00 -0.686099679686376D+00 -0.965530865097178D+00 - -0.108475026028160D+02 0.868113054551224D+00 -0.133333327372868D+00 - -0.993410792862748D-09 -0.888888849152386D-01 -0.283471714878145D+00 - -0.830010105454237D+00 0.172513771571236D+00 -0.217560591278660D+01 - -0.693067421520062D+01 -0.242316569248411D+01 0.110582998312993D+01 - -0.657233194718581D+01 -0.140046379072815D+01 0.133333327372868D+00 - -0.888888849152386D-01 -0.993410671432104D-09 0.227269951143399D+01 - -0.132069680039466D+01 0.289003688119459D+00 0.276297786242662D+01 - -0.173233747001988D+01 -0.282420403677958D+00 0.444444441132987D-01 - -0.778530420973243D+01 -0.225116819786707D+00 0.252909072779715D+00 - 0.465537302721443D+00 0.678522997073815D+00 0.120428219911451D+01 - -0.248938345610684D+01 -0.132454756190947D-08 0.198682137408923D-08 - 0.520168251199937D+01 -0.109014122876521D+01 0.749869536225073D+00 - 0.574447137382317D-01 0.354852368351473D+01 0.946063371281428D+01 - 0.237120198366490D+01 0.124306741639309D+01 0.104751160021363D+01 - -0.244231479586268D+01 -0.670688404548199D+00 -0.331040710688400D+00 - 0.167531524313443D+01 0.444444441132987D-01 0.233800914600055D+01 - -0.198682133245587D-08 -0.132454753285285D-08 0.126564790860526D+01 - -0.154770439783768D+00 -0.513088098220130D-01 0.119108821661174D+00 - 0.140641291056613D-01 0.571556922333424D+00 0.399291273469231D+00 - -0.758309796124360D-01 0.130587991206219D+01 0.101585375326958D+00 - -0.333333313465078D-01 -0.207758343375399D-01 -0.132069680039466D+01 - 0.595599985009773D-01 -0.222222207321017D-01 -0.979878333831017D-01 - -0.170121692878461D+00 0.636963535182648D+00 -0.312500521515757D-01 - -0.474852380445798D+01 -0.333333315120762D-01 0.136060540816702D+01 - 0.665744486327485D+00 -0.106390107869767D+01 0.865672799810807D+00 - 0.306925198584039D+01 0.278844814991187D+00 -0.254889539396055D+01 - -0.222222217255124D-01 -0.843448581131112D+00 -0.333333323399185D-01 - -0.480505883471605D+01 0.333333321743501D-01 -0.127003303059250D+01 - 0.168473260574980D+01 0.333333321743500D-01 0.333333323399185D-01 - -0.308494137098738D+01 -0.222222217255124D-01 -0.450980609817871D+01 - 0.147352286329352D+01 0.191882675933598D+00 -0.169527341794742D+01 - 0.333333313465079D-01 -0.222222207321017D-01 -0.333333315120763D-01 - -0.143658089258082D+01 -0.222222217255124D-01 -0.364136570762623D-01 - -0.396297798336987D+01 0.151154585183773D-01 0.105648427882238D+01 - -0.928994521235912D-01 -0.103950319552453D+00 -0.259481319869127D+00 - -0.325105162287872D+00 0.333333330021924D-01 -0.188802825355405D+00 - 0.409623570094136D+01 0.141402479892885D-01 -0.333333328366239D-01 - -0.289459756451577D-02 0.404580190946170D+00 0.104751160021363D+01 - 0.331564306727850D+00 0.204278442809750D+00 0.640390621705003D-02 - -0.139019352663795D+00 0.509569992605549D+00 -0.333333336644662D-01 - -0.222222227189232D-01 -0.157225112049284D+01 0.734118449105099D+00 - 0.672020976056229D-01 0.333333328366240D-01 0.484419091663182D+00 - 0.333333330021924D-01 -0.222222217255125D-01 -0.297627202907091D+00 - -0.333333338300347D-01 0.135633758510509D+01 0.199860694792699D+01 - 0.557054176666594D+00 0.599314381580548D+01 0.618273078362657D+00 - -0.529200292186015D+00 0.808115984827921D+00 0.333333338300347D-01 - -0.333333336644663D-01 -0.222222227189231D-01 -0.333333323399186D-01 - 0.333333328366238D-01 0.333333323399186D-01 -0.333333328366239D-01 - -0.133333333333333D+00 -0.198682133245587D-08 0.198682135413991D-08 - -0.333333338300347D-01 -0.133333327372868D+00 -0.333333313465078D-01 - 0.333333338300347D-01 0.397364286613966D-08 0.333333313465079D-01 - 0.133333329359690D+00 -0.397364276205625D-08 0.104083408558608D-16 - 0.133333331346511D+00 -0.693889390390723D-17 0.333333326710555D-01 - -0.222222220566492D-01 0.333333325054870D-01 -0.222222222222177D-01 - -0.888888849152386D-01 -0.132454753285285D-08 0.993410618956719D-09 - -0.333333336644662D-01 0.444444427887510D-01 -0.222222207321017D-01 - -0.333333334988978D-01 -0.222222205665333D-01 -0.264909521749401D-08 - -0.888888862397862D-01 0.444444427887510D-01 0.177777771155025D+00 - 0.993410662758487D-09 0.397364285920077D-08 0.333333326710554D-01 - -0.222222212288071D-01 -0.222222213943756D-01 0.333333325054870D-01 - -0.888888888888817D-01 0.444444441132987D-01 -0.333333315120762D-01 - -0.993410792862748D-09 0.132454758879769D-08 -0.222222227189232D-01 - -0.222222228844916D-01 -0.333333316776447D-01 0.444444441132987D-01 - -0.993410631533465D-09 0.264909519320788D-08 -0.888888875643340D-01 - -0.397364278460766D-08 0.177777776453216D+00 0.865672799810807D+00 - -0.918165916683273D+00 -0.925737627026783D+00 -0.155108574304885D+01 - 0.135698391970154D+02 0.476833782841403D+00 -0.170071936988196D+02 - -0.209972431513723D+00 -0.474093257686994D+01 0.463570529024638D+00 - 0.482344328087812D+01 -0.179561507389130D+01 0.346944695195361D-17 - 0.177777771155025D+00 -0.132454756537892D-08 0.331564306727850D+00 - -0.173241113771315D+01 0.602673580976950D+00 0.185672588812758D+01 - -0.143972343789800D+02 0.153199141372429D+02 -0.538478511588038D+01 - 0.181021323868884D+01 -0.360207478922858D+00 0.691244930333002D+00 - 0.161731121562930D+02 0.122432233804044D+02 -0.208166817117217D-16 - 0.397364275164791D-08 0.177777779102311D+00 0.124234388839089D+00 - -0.127003303059250D+01 0.112225949125417D+00 -0.255633771633640D+01 - -0.675446803219534D+01 -0.344516261396241D+01 -0.154536646482237D+01 - -0.838738374270343D-01 -0.806384529058659D+00 0.232400149068526D+00 - 0.111972346358092D+02 -0.232160890779570D-01 0.476833782841403D+00 - -0.331136979815627D-09 -0.888888849152385D-01 0.378853575480436D+01 - -0.133333327372868D+00 -0.129451197753647D+02 -0.495067120912180D+01 - 0.133333327372868D+00 -0.888888849152385D-01 -0.331136769046725D-09 - -0.288473273698110D+01 -0.297627202907091D+00 -0.665158177100300D-02 - 0.877880380400880D+01 -0.400183786948769D+01 0.359688596702853D+00 - -0.916734793625032D+00 0.185672588812758D+01 0.118271902669738D+00 - -0.198682138623230D-08 0.138071939556488D+02 -0.929133116191615D+00 - -0.557324582161018D+00 0.794479740682164D+01 0.510747014223169D-01 - 0.444444447755726D-01 -0.132454760657860D-08 0.275176382999117D+01 - -0.933882491916802D+01 0.198682131857808D-08 -0.132454755150113D-08 - 0.444444447755724D-01 0.333333328366240D-01 -0.333333323399185D-01 - -0.198682138623230D-08 -0.133333327372868D+00 0.333333343267400D-01 - 0.397364281756740D-08 0.133333329359690D+00 0.133333333333333D+00 - 0.333333318432131D-01 -0.198682136715034D-08 0.346944695195361D-17 - -0.208166817117217D-16 0.333333330021924D-01 -0.222222217255124D-01 - -0.132454760657860D-08 -0.888888849152385D-01 -0.333333339956032D-01 - -0.264909520708567D-08 -0.888888862397862D-01 0.993410801536365D-09 - -0.222222210632385D-01 0.444444427887509D-01 0.177777771155025D+00 - 0.397364275164791D-08 -0.222222217255125D-01 0.333333321743501D-01 - 0.444444447755726D-01 -0.331136979815627D-09 -0.222222232156285D-01 - 0.444444447755724D-01 -0.331136753434214D-09 -0.888888888888817D-01 - 0.132454757925671D-08 -0.333333320087816D-01 -0.132454756537892D-08 - 0.177777779102311D+00 -0.401584619094378D+00 0.533311012139031D+00 - -0.481929336179175D+00 -0.238790069664415D+01 0.146750809222469D+00 - 0.249355525653077D+00 0.882221626316751D+01 0.424947398864339D+00 - -0.138777878078145D-16 0.177777779102311D+00 -0.132454758619560D-08 - -0.517588308940504D+00 -0.148765391111794D+00 -0.127985310441144D+00 - 0.410916010409864D+00 -0.105644527385949D+01 -0.236485679321947D+00 - -0.244789404060508D+01 0.824445040329013D+01 0.208166817117217D-16 - 0.132454763476786D-08 0.177777768505929D+00 0.183722651518868D+00 - -0.100537881027813D+00 0.350836698341929D+00 -0.157556679364832D+00 - -0.720605050006807D+00 -0.138016080234229D+01 0.546178919230014D+00 - -0.198682138102813D-08 0.231072912789883D+00 0.109241772577763D+01 - -0.355577876749837D+00 0.249355525653077D+00 -0.319659055893031D+00 - 0.198682138016076D-08 -0.752105665202549D+00 0.701757378976264D+00 - 0.132454760701228D-08 0.609687359467582D+01 0.444444447755726D-01 - 0.132454758966505D-08 0.444444447755725D-01 -0.121116066323014D+01 - -0.626906361492356D-01 0.338801874689744D+00 0.223453028376268D+00 - -0.477972878478900D+00 -0.213194216112407D+00 -0.833906208774380D+00 - -0.599638275775393D-01 -0.556691340395702D+00 0.228817053906563D+00 - -0.265176075508180D+00 -0.836608779589360D+00 -0.270347138676375D+00 - -0.148765391111794D+00 -0.271807036962846D+01 -0.133333327372868D+00 - 0.331136705295637D-09 0.563645957095984D+01 -0.888888849152385D-01 - -0.148696670863247D+01 0.133333327372868D+00 0.331137121195590D-09 - -0.888888849152386D-01 -0.333333313465078D-01 0.198682138016076D-08 - 0.133333333333333D+00 0.333333338300347D-01 0.198682135327255D-08 - -0.138777878078145D-16 0.208166817117217D-16 -0.133333327372868D+00 - 0.333333315120762D-01 0.444444447755726D-01 -0.888888888888817D-01 - -0.222222227189232D-01 -0.132454758272615D-08 0.177777779102311D+00 - 0.132454763476786D-08 0.331136705295637D-09 -0.222222207321017D-01 - 0.132454758966505D-08 -0.331136880069027D-09 0.333333336644662D-01 - 0.444444421264770D-01 -0.132454758619560D-08 0.177777768505929D+00 - -0.888888849152385D-01 -0.194171682138809D+00 -0.503279030464055D+01 - 0.528492248634239D+00 0.722725679919065D+00 0.104756335846596D+01 - -0.342709969658854D+00 0.458028457091816D+01 -0.102337628883491D+01 - -0.171303302923771D+01 0.231072912789883D+00 0.133742827722750D+02 - 0.452280805605441D+01 -0.242861286636753D-16 0.177777779102311D+00 - -0.397364275685208D-08 0.356405120312070D+00 -0.507103481414044D+00 - -0.774727611268746D+00 -0.113603267690141D+01 0.872421322345932D+00 - -0.530628445078110D+01 -0.855304340364998D+00 -0.599638275775392D-01 - -0.550087014199020D+00 -0.390175711684644D+01 -0.366107297359967D+01 - 0.369238389787531D+01 0.346944695195361D-17 0.132454779783187D-08 - 0.177777771155025D+00 -0.225737098011580D+01 -0.373955776082886D+01 - 0.646655428573718D-01 0.377357232197684D+00 -0.360396640254629D+00 - 0.587453830003892D+00 0.270347090902668D+00 0.264909516545231D-08 - -0.319659055893031D+00 0.576808228144188D+00 0.448658729140590D+01 - 0.397364276465834D-08 0.576926295182734D+00 0.123168207162479D+01 - 0.104756335846596D+01 -0.407242110727866D+01 -0.101437015266475D+00 - 0.444444484180785D-01 0.880252328486414D+01 -0.397364273430068D-08 - 0.886376498669155D+01 0.444444447755726D-01 0.264909517282488D-08 - -0.506734209205898D-01 -0.341719606253157D+01 -0.748060289059368D+00 - -0.119288115771966D+00 -0.532483768576694D+00 -0.383178179744224D+01 - -0.888888862397864D-01 -0.257030284561841D+01 0.616538619902750D+00 - 0.303627777928990D+00 0.331136900885709D-09 -0.128564288473713D+01 - 0.471854734110840D+00 0.536816920828867D+01 0.133333329359690D+00 - 0.228817053906563D+00 -0.778028435585089D+01 0.159531586072942D+00 - 0.293080980023003D+01 -0.855304340364998D+00 -0.133333329359690D+00 - 0.121116061545643D+01 -0.380467519097083D-02 0.113634658384067D-01 - -0.131187046835009D+00 -0.231837891185326D+00 -0.218037408811236D+01 - 0.331136708331403D-09 -0.888888862397863D-01 0.333333343267400D-01 - -0.333333318432133D-01 0.133333333333333D+00 -0.133333329359690D+00 - 0.333333323399188D-01 0.397364276465834D-08 0.198682158919494D-08 - -0.198682138102813D-08 0.333333328366240D-01 0.133333327372868D+00 - -0.242861286636753D-16 0.346944695195361D-17 -0.222222232156285D-01 - 0.333333320087818D-01 -0.888888888888817D-01 0.331136708331403D-09 - 0.444444447755726D-01 -0.132454772150403D-08 -0.333333321743502D-01 - 0.444444447755725D-01 -0.222222217255125D-01 0.331137121195590D-09 - 0.177777779102311D+00 0.132454779783187D-08 0.333333339956031D-01 - -0.222222210632387D-01 -0.888888862397863D-01 0.264909517282488D-08 - -0.993410654084870D-09 -0.222222217255125D-01 0.444444427887508D-01 - 0.132454760701228D-08 -0.333333330021925D-01 -0.888888849152386D-01 - -0.397364275685208D-08 0.177777771155025D+00 -0.316501850869913D+01 - 0.262738683453755D+00 0.155049244290771D+01 0.123168207162479D+01 - 0.176055914819096D+01 0.137480949283462D+02 0.414426769633882D+00 - -0.856816858883214D+01 -0.301435058884976D+00 -0.726012304792430D+01 - 0.155154272876998D+02 0.132184139687447D+02 -0.312250225675825D-16 - 0.177777793672335D+00 -0.529819034304768D-08 0.130897681268619D+01 - 0.497337905620886D+00 -0.417034154777924D+00 0.931156303510554D+00 - 0.101630697141575D+02 -0.380467519097080D-02 -0.120637643672350D+02 - -0.722708277870782D+01 -0.343831709880299D+01 0.321214946210180D+00 - 0.370940607270414D+01 0.155123939109464D+01 0.693889390390723D-17 - 0.132454778742352D-08 0.177777773804120D+00 0.987583394283576D+00 - 0.172513771571340D+00 -0.748060289059368D+00 -0.108008469757773D+01 - -0.248699006245144D+01 -0.626150205435113D+00 0.142271674980233D+01 - 0.218037396824604D+01 0.120785206955729D+00 0.264909518626899D-08 - -0.324337339657193D+01 0.444444421264772D-01 0.631497002712696D+01 - 0.278844814991174D+00 -0.397364277593404D-08 0.397364263802352D-08 - 0.170944064816700D+01 -0.133630691388930D+02 0.902565168734026D+01 - 0.176055914819096D+01 0.444444484180787D-01 0.264909508825711D-08 - 0.193503905202432D+02 -0.712468569161017D-01 -0.361910242213517D+00 - -0.508506741590634D+01 0.110893920648210D+01 -0.226069463037642D+01 - 0.910351753871694D-01 0.208747104313132D+00 0.341719594266524D+01 - 0.465537302721339D+00 -0.348488909964357D+01 -0.888888875643342D-01 - 0.331136999764947D-09 -0.303630201152581D+00 -0.231837891185326D+00 - 0.862045132837442D+00 0.931156303510554D+00 0.104962029925510D+01 - 0.133333331346512D+00 -0.351053286813559D+00 0.270768155093020D+01 - -0.391550983267877D+00 -0.133333331346512D+00 0.331136981550351D-09 - 0.151586288251754D+02 -0.169480943530818D+02 -0.888888875643342D-01 - -0.188802825355392D+00 0.239947084711119D+00 -0.455798874510710D+01 - -0.333333323399184D-01 0.333333373069723D-01 0.333333353201509D-01 - 0.397364263802352D-08 -0.133333331346512D+00 0.133333329359690D+00 - -0.397364273430068D-08 0.198682168633946D-08 0.333333328366238D-01 - 0.133333345254262D+00 -0.312250225675825D-16 0.693889390390723D-17 - 0.333333325054869D-01 -0.222222252024500D-01 0.331136981550351D-09 - -0.222222232156286D-01 0.444444484180787D-01 0.331136900885709D-09 - 0.444444484180785D-01 -0.333333326710554D-01 -0.888888968361676D-01 - -0.132454779089297D-08 0.177777793672335D+00 0.132454778742352D-08 - -0.222222213943754D-01 0.333333369758354D-01 0.264909508825711D-08 - -0.888888875643342D-01 -0.333333356512878D-01 0.264909516545231D-08 - -0.888888862397864D-01 -0.222222220566493D-01 -0.132454748731636D-08 - 0.444444434510249D-01 -0.529819034304768D-08 0.177777773804120D+00 - 0.505584431072454D+00 -0.843448581131112D+00 0.170944064816700D+01 - -0.657233194718581D+01 -0.183586290330435D+02 -0.310967516968757D+01 - -0.261799631629220D+00 -0.557120180793625D+01 -0.716375117317528D+00 - 0.192773683919244D+02 0.106329670791463D+02 0.652883052273339D+01 - -0.104083408558608D-16 0.177777768505930D+00 -0.397364275685208D-08 - 0.734118449105099D+00 0.148222870454016D+01 -0.608735004347202D+00 - -0.179953603354320D+01 -0.351053286813559D+00 0.192274819750945D+02 - -0.225503907281113D+02 -0.423351586167425D+00 -0.342345277923519D+01 - 0.124306741639309D+01 -0.383915346501954D+01 0.643369965141092D+01 - 0.104083408558608D-16 0.132454761568590D-08 0.177777776453216D+00 - -0.450980609817871D+01 -0.181827296334494D+01 -0.173233747001998D+01 - -0.361910242213517D+00 -0.137533555984143D+00 -0.806384529058555D+00 - 0.816335655391221D+00 0.455798878595903D+01 -0.233231455828922D+01 - 0.501067037213378D+00 -0.347165526207213D+00 0.198682140271217D-08 - -0.261799631629220D+00 0.444444421264773D-01 0.132454761525222D-08 - -0.224274822167364D+02 0.176804009608954D+01 0.148161379698481D+02 - -0.200141397152586D+00 -0.198682140878370D-08 0.444444421264771D-01 - 0.132454760701228D-08 0.557054176666594D+00 0.188494148600510D+01 - 0.359688596702749D+00 0.478699792646607D+00 0.222406023331061D+01 - 0.508506745675827D+01 0.334193968667865D-01 0.583952326055903D+00 - -0.135567033780342D+01 -0.154770439783665D+00 0.239947084711119D+00 - -0.608735004347202D+00 -0.224773686335664D+02 -0.133333333333333D+00 - 0.331136805909599D-09 0.996529345142632D+01 -0.888888888888817D-01 - 0.118286145082374D+01 0.149515776477792D+02 0.133333333333333D+00 - 0.331137001499671D-09 -0.888888888888817D-01 -0.333333328366239D-01 - 0.333333323399185D-01 -0.133333333333333D+00 0.198682140271217D-08 - 0.198682137408923D-08 -0.397364277593404D-08 0.333333308498025D-01 - 0.133333331346512D+00 0.333333333333294D-01 0.133333327372868D+00 - -0.104083408558608D-16 0.104083408558608D-16 0.333333330021924D-01 - -0.222222217255124D-01 0.331136805909599D-09 0.444444421264773D-01 - -0.132454756190947D-08 -0.222222202353963D-01 0.331136999764947D-09 - -0.333333331677609D-01 0.444444421264772D-01 -0.888888849152386D-01 - 0.177777768505930D+00 0.132454761568590D-08 -0.222222217255124D-01 - 0.333333321743500D-01 -0.888888888888817D-01 0.132454761525222D-08 - 0.444444441132987D-01 -0.888888875643342D-01 -0.333333311809394D-01 - -0.222222223877863D-01 -0.993410671432104D-09 0.264909518626899D-08 - -0.397364275685208D-08 0.177777776453216D+00 -0.187478265700369D+01 - -0.169527341794742D+01 0.613882518529910D+01 -0.495067120912180D+01 - -0.181515779122120D+02 -0.200141397152586D+00 -0.456329382948738D+01 - 0.109622332869185D+01 0.138777878078145D-16 0.177777768505929D+00 - -0.132454757231781D-08 -0.529200292186015D+00 -0.125854934810937D+01 - 0.275176382999117D+01 0.974512004149580D+01 0.118286145082374D+01 - -0.180161382342808D+02 0.256450839885985D+02 0.216299605147958D+02 - 0.589805981832114D-16 0.132454761568590D-08 0.177777779102311D+00 - 0.333333313465079D-01 0.333333338300347D-01 0.133333327372868D+00 - 0.198682131857808D-08 -0.198682140878370D-08 0.133333333333333D+00 - 0.138777878078145D-16 0.589805981832114D-16 -0.222222207321017D-01 - -0.333333336644663D-01 -0.888888849152385D-01 -0.132454755150113D-08 - 0.444444421264771D-01 0.331137001499671D-09 0.177777768505929D+00 - 0.132454761568590D-08 -0.333333315120763D-01 -0.222222227189231D-01 - -0.331136769046725D-09 0.444444447755724D-01 0.132454760701228D-08 - -0.888888888888817D-01 -0.132454757231781D-08 0.177777779102311D+00 - -0.388675281098142D-02 -0.222149183695039D-02 0.317052810620763D-01 - -0.877464779306210D-02 -0.646561221063723D-02 -0.328790102685523D-02 - 0.406012657475323D-01 -0.144172235964772D-01 -0.948676900924816D-18 - -0.406575814682064D-18 -0.177648408724276D+00 -0.844015134101707D-01 - 0.706586663360524D-01 -0.147542271570905D+00 -0.176043645979800D+00 - -0.921090402227006D-01 -0.120488540690000D-01 -0.962891529070343D-01 - -0.135525271560688D-18 0.120617491689012D-17 0.218195687212708D-17 - -0.330717170967192D+00 -0.137108257941506D+00 0.115862768515291D+00 - -0.574379309777691D-01 -0.395181191593174D+00 -0.189883005537150D+00 - -0.712554107067502D-01 -0.121039066056527D-02 -0.899887803162969D-17 - 0.140946282423116D-17 -0.108420217248550D-17 -0.461891861426713D+00 - 0.203101666803876D+00 0.568389594693100D+00 -0.120097834556458D+00 - -0.350215352393749D+00 0.120596678233509D+00 0.225951015427137D+00 - 0.104839361582801D+00 0.411996825544492D-17 -0.758941520739853D-18 - 0.964939933512099D-17 -0.908973931592588D+00 0.534493597672861D+00 - -0.193732015707653D+00 0.378576252726513D+00 0.216840434497101D-17 - 0.130104260698261D-17 0.303576608295941D-17 -0.345530941645085D-01 - -0.294516117358239D-01 -0.170211286238840D-01 -0.673503529734413D-01 - -0.128791517234606D-01 -0.217493736241187D-01 -0.183836830474046D-01 - -0.743395654682506D-01 0.596311194867027D-18 0.813151629364128D-19 - 0.406575814682064D-18 -0.360013345080544D+00 -0.417265463105078D+00 - -0.300090654891896D+00 -0.354416629437196D+00 -0.259537571345355D+00 - -0.345915028662393D+00 -0.236753747883616D+00 -0.302739849065346D+00 - -0.455364912443912D-17 0.281892564846231D-17 -0.216840434497101D-18 - -0.969894508170217D+00 -0.470508654971690D+00 -0.422448063559772D+00 - -0.443559369702129D-02 -0.541651528690228D+00 -0.359441631508323D+00 - -0.260663461702145D+00 -0.238324606892704D-01 -0.238524477946811D-17 - 0.384891771232354D-17 -0.126309553094561D-16 -0.103137104172018D+01 - 0.393617280023819D+00 -0.117003297643582D+00 0.416065425981952D+00 - -0.526657317133728D+00 0.265549447090218D+00 -0.181273639112782D+00 - 0.372903066444671D+00 0.433680868994202D-18 0.433680868994202D-18 - -0.216840434497101D-17 -0.111392932068895D+01 0.505827835319273D+00 - -0.719650085660493D+00 0.315911999470096D+00 0.694567016748526D-17 - 0.511607900141597D-18 0.268001224511261D-17 0.834719995315461D-02 - -0.451496947683143D-01 0.215389272864098D-01 -0.120313428749396D+00 - 0.539176048479889D-02 -0.309351886174988D-01 -0.589616049885850D-01 - -0.930923053577019D-01 -0.786046575051991D-18 0.268340037690162D-17 - -0.243945488809238D-18 -0.249946864911529D+00 -0.107002769781877D+01 - -0.281375624986743D+00 -0.694702897656472D+00 0.392128948396264D-01 - -0.576632219649111D+00 0.129487739024665D+00 -0.434457218509933D+00 - -0.867361737988404D-18 -0.112757025938492D-16 0.000000000000000D+00 - -0.466776379905841D+00 -0.786479827430992D+00 -0.214566771541489D+00 - -0.265638102456336D-01 0.125647743495588D+00 -0.475026505440227D+00 - 0.814845191790399D-01 -0.242126196801973D-03 0.216840434497101D-17 - 0.216840434497101D-18 0.216840434497101D-17 -0.414731550826574D+00 - 0.490578992048134D+00 -0.213653741866946D+00 0.286923115304157D+00 - 0.792547979875522D-01 0.189226259130844D+00 0.820428311754937D-01 - 0.314228745918240D+00 -0.306287113727155D-17 -0.731836466427715D-17 - -0.512285526499401D-17 -0.744340698677324D+00 0.435256515061946D+00 - -0.525134858568457D-01 0.284639149632003D+00 0.433680868994202D-17 - 0.130104260698261D-17 0.173472347597681D-17 0.309079656253880D-02 - -0.487343931906383D-01 0.272241538131157D-02 -0.105346414437327D+00 - 0.374678201131567D-02 -0.822390034810477D-02 0.126450110572933D-01 - 0.128920621302534D-01 0.116551733542192D-17 -0.833480420098232D-18 - 0.138913403349705D-17 0.293317421457723D+00 -0.626980569057690D+00 - 0.292634728904852D+00 -0.838575439527727D+00 0.891211450205118D-01 - -0.144110673549034D+00 0.117844096078550D+00 -0.346459265469827D+00 - 0.693889390390723D-17 -0.303576608295941D-17 -0.780625564189563D-17 - 0.723992336064869D+00 -0.110731679219212D+01 0.387883211706846D+00 - 0.884198250059978D-01 0.540837582353045D+00 -0.670272978896403D+00 - 0.282086699333433D+00 -0.816992346357983D-01 0.112757025938492D-16 - 0.168593437821496D-16 -0.128477957439532D-16 0.683174284392803D+00 - 0.380002104137325D+00 0.283135299555626D+00 0.187699763978891D+00 - 0.822081833832173D+00 0.463712899635516D+00 0.381720911157976D+00 - 0.222034248504188D+00 0.910729824887824D-17 -0.314418630020796D-17 - -0.813151629364128D-17 0.886699540466746D+00 0.490831850251408D+00 - 0.912705380815765D+00 0.103877153771687D+01 -0.260208521396521D-17 - -0.780625564189563D-17 -0.260208521396521D-17 -0.461662970291134D-03 - -0.122744109735941D-02 -0.319144735360564D-03 0.799007179334993D-02 - -0.108420217248550D-17 0.379470760369927D-18 -0.487890977618477D-18 - -0.437505046418397D-02 -0.765977130119323D-01 0.783879787617758D-01 - -0.529939747654947D-01 -0.123599047663348D-16 0.585469173142172D-17 - -0.477048955893622D-17 0.886691664950928D+00 -0.616705135203117D+00 - 0.314224552644792D+00 -0.110388842553885D+01 0.112757025938492D-16 - -0.693889390390723D-17 -0.260208521396521D-17 -0.811853879684679D+00 - -0.487003911045772D+00 0.380477263198341D+00 0.150380221155863D+01 - 0.208166817117217D-16 0.693889390390723D-17 -0.208166817117217D-16 - 0.456629198999737D+01 0.269792102160772D+01 -0.242861286636753D-16 - 0.208166817117217D-16 0.173472347597681D-16 - -0.174774581175561D-01 0.130171872074507D-01 0.648268042673536D-01 - 0.622065199231532D-02 -0.232162474237923D-01 0.400101247053274D-02 - 0.385491618726226D-01 0.294331803813626D-01 0.678414200799743D+00 - -0.441601728599381D+00 -0.541285046854977D-01 0.290017045842835D-01 - 0.528188860470041D-01 0.589593259271318D-01 -0.826842511979838D-01 - 0.691902640377683D-01 0.547970463568553D-01 0.558692734141835D-01 - -0.624823233580588D+00 -0.245136357033832D+01 -0.587328341491076D+00 - -0.215008552014566D-01 0.646984634816448D-01 0.446025753770765D-01 - 0.549267464341764D-01 -0.344833625177405D-01 0.548469374083984D-01 - 0.858552017165761D-01 0.692807992066728D-01 -0.672825837853840D+01 - -0.262134793921447D+01 -0.212003257232741D+01 -0.298583674683721D-02 - 0.380434158312149D-01 0.541285472351048D-01 0.102003550797624D-01 - -0.103191082919574D-03 0.557322675007061D-01 0.104123116467484D+00 - 0.586207967424302D-01 -0.710998296888761D+01 -0.302710854635300D+01 - 0.295456437083994D+01 -0.120957587476101D-01 -0.295894566625810D-01 - -0.117522772131892D-02 0.899765926356126D-01 -0.102608928715566D+01 - 0.832186570515040D+00 0.690609245202082D+01 -0.345915599033159D-01 - -0.195250335506729D-02 -0.289549517446071D-01 0.406272636601193D-01 - -0.417643668446690D-01 0.642715425531726D-02 -0.993631760806126D-01 - 0.201625717431204D-01 -0.564543408030355D-01 -0.815184201218392D+00 - -0.134037754212705D+00 -0.677804387816577D-01 0.611309690799401D-01 - -0.175812132378368D-01 0.659745216035584D-01 -0.766598139187639D-01 - 0.517570648626897D-01 0.268964809145231D-01 0.340526063818693D-01 - -0.790769639912916D+01 -0.469369795059675D+01 -0.706340920232527D+01 - -0.141122607128593D-02 0.585357078986971D-01 0.618696579360335D-01 - 0.357562818232249D-01 0.153480437190808D-01 -0.820048834970455D-02 - 0.528809033785641D-01 0.306328256795228D-02 -0.214360516441807D+02 - -0.112051429440085D+02 -0.449283747815404D+01 0.371264262767438D-01 - 0.321156839732588D-01 0.915907111363150D-01 -0.249315360311798D-02 - 0.315662832607731D-01 0.396501981824728D-02 0.837706797761218D-01 - 0.933698694438044D-01 -0.190182076734493D+02 -0.954110982778941D+01 - 0.555132980327911D+01 0.131946789631037D-01 -0.204821237762051D-02 - 0.394173924232563D-01 0.448960765842327D-02 -0.473737989380098D+01 - -0.594832053032996D+01 0.699045049957937D+01 -0.552688491185460D-01 - 0.256407598145187D-02 -0.761545275495013D-01 0.247206635650878D-02 - -0.451314059171199D-01 -0.134331222402571D-01 -0.113298142652419D+00 - -0.264771748829976D-02 -0.795823729921367D+00 0.493054228068344D+00 - -0.125422186639790D+01 -0.673433360015801D-01 0.111612449208787D-01 - -0.242905828665573D-01 -0.661819563044347D-02 -0.749706250615362D-01 - -0.560157752689080D-01 0.226677211499599D-01 0.312302910507493D-01 - -0.171731917667123D+02 -0.204655413762296D+01 -0.172462896706165D+02 - 0.303911487133733D-01 0.261558109268523D-02 0.491146050948546D-01 - 0.556352007604150D-03 0.370354875872653D-01 -0.242961606356157D-02 - 0.493250547667126D-01 -0.454437324657036D-01 -0.361804019023121D+02 - -0.322239606412964D+01 -0.248003340634421D+01 0.433002398843006D-01 - -0.105882705933226D-01 0.529825408500488D-01 -0.485387693616454D-01 - 0.308150977546578D-01 0.526445961656955D-02 0.881077009972280D-01 - 0.628537446300152D-01 -0.318936526037589D+02 -0.192573312794333D+01 - 0.599595860648592D+01 0.480947719415867D-01 -0.397823736937770D-02 - 0.288502765761886D-01 -0.107951369726947D-01 -0.189884804750587D+02 - -0.409187061549857D+01 0.459416342374393D+01 -0.235957717810021D-01 - -0.921634421891177D-02 -0.106937859337015D+00 -0.509314836775801D-01 - -0.518173285676632D-02 -0.528732711119902D-02 -0.160440470957818D-01 - -0.506791518135529D-01 -0.921119494737443D+00 -0.505480543131431D+00 - -0.155015928755454D+01 -0.895241019061947D-01 -0.656678959323119D-01 - 0.136508305497411D-01 -0.469456518245850D-01 -0.787646167131726D-01 - -0.747685902027450D-01 -0.670263022561566D-01 -0.928845742054732D-01 - -0.117988489316064D+02 0.799692440987532D+01 -0.836511267404974D+01 - 0.522737873198467D-01 -0.811440486445897D-02 0.479219101645301D-01 - -0.111462347618294D-01 0.237121295942205D-01 -0.829588895981971D-01 - 0.206310186596368D-01 0.122733065662952D-01 -0.309105730233451D+02 - 0.557107619365605D+01 -0.482121990396921D+01 0.378675607941549D-01 - -0.477541955853992D-01 0.303042656339480D-01 -0.610006026175228D-01 - 0.621010009311670D-01 0.752939218563218D-01 0.641126151193520D-01 - 0.309388107461146D-01 -0.262052972118918D+02 0.696887245031300D+01 - 0.463112686296469D+01 0.305089527982921D-01 -0.878372151977434D-02 - -0.270341746917158D-02 -0.111785996783229D-01 -0.140094693058531D+02 - 0.888307539282719D+01 0.484546531342018D+01 0.648102591853090D-02 - -0.266281748614882D-03 -0.630023165758138D-02 0.347704246733618D-02 - -0.152499210822813D+01 -0.347014220156878D+00 -0.109389859854508D+00 - -0.242479754780346D-01 -0.307075300712028D-01 -0.641182101696273D-01 - -0.855038128261278D-01 -0.313622161909979D+01 -0.254853318747961D+00 - -0.171194234127588D+01 -0.103433491793735D-01 -0.983643265253459D-01 - 0.508498258992449D-01 -0.996799690023377D-01 -0.893651582305342D+01 - 0.160125115650372D+02 -0.584963982156574D+01 0.227835203562282D-01 - -0.819444682393347D-01 0.105907898336557D-01 -0.210594379535589D-01 - -0.223496440284743D+02 -0.116567336494826D+02 0.656430143309503D+01 - 0.981569783769186D-02 0.815339765687753D-02 0.170814025012210D+02 - 0.240177425848816D+02 0.157145744715894D+02 diff --git a/mtx/test/sparse_data/README b/mtx/test/sparse_data/README deleted file mode 100644 index fcbbc42ce..000000000 --- a/mtx/test/sparse_data/README +++ /dev/null @@ -1,11 +0,0 @@ -These are from the Harwell-Boeing collection. -http://math.nist.gov/MatrixMarket/data/Harwell-Boeing/ - -all are real unsymmetric - -lns__131.rua 131^2, 536 entries Fluid flow modeling -nnc261.rua 261^2, 1500 entries Nuclear reactor models -lns__511.rua 511^2, 2796 entries Fluid flow modeling -nnc666.rua 666^2, 4044 entries Nuclear reactor models -fs_760_3.rua 760^2, 5976 entries Chemical kinetics -nnc1374.rua 1374^2, 8606 entries Nuclear reactor models diff --git a/mtx/test/sparse_data/e05r0100_rhs1.mtx b/mtx/test/sparse_data/e05r0100_rhs1.mtx deleted file mode 100755 index 56a059d9a..000000000 --- a/mtx/test/sparse_data/e05r0100_rhs1.mtx +++ /dev/null @@ -1,238 +0,0 @@ -%%MatrixMarket matrix array real general -236 1 --7.6051024589276e-01 --8.7695024335939e-01 --1.2101108982105e-01 --1.6082163452466e-01 --1.8659986737152e-01 --1.4812218177572e-01 --2.6736971580417e-01 --2.3093093181390e-01 - 1.4441911750686e-01 --2.4987471944002e-01 --5.8865061199116e-01 --1.8296113592249e-01 --4.4876941657553e-01 --1.9707562814389e-01 --1.2578287190650e-01 --2.4952151659261e-01 --8.2983115267448e-01 --2.5850217805703e-01 --7.1150767569361e-01 - 4.5739779151732e-01 --8.1653976115315e-01 --1.6259320639133e-01 --8.7579429708753e-01 --2.8483673453480e-01 --8.8853724212836e-01 --3.5619262525952e-01 --1.0942968300917e-01 --4.1848633774215e-01 --1.0918884740610e-01 --1.6263032587283e-01 - 1.2332799712023e-01 - 2.7511630126820e-01 - 6.8720756649434e-01 --2.4208404197670e-01 - 5.7622852824635e-01 --1.3565778767250e-01 --1.0352395379932e-01 --1.4038922200334e-01 --3.9397038866687e-01 --6.4312615972059e-01 - 1.5449880957918e-01 - 1.1113072267976e-01 --8.4025668367627e-01 --2.8016092127048e-01 - 8.8836575081004e-01 --1.1965345025634e-01 - 6.0783347280482e-01 - 8.6736173798840e-01 - 1.7347234759768e-01 - 3.4694469519536e-01 --5.9329047033860e-01 --5.9991074573640e-01 --7.8001516421619e-01 --1.0540288820698e-01 --3.3964714472150e-01 --4.3833129115998e-01 --4.4856466226936e-01 --7.7228713635307e-01 --6.2002811739015e-01 - 1.1011428314306e-01 --1.3383120566618e-01 --3.0341627589559e-01 --7.9398017445701e-01 --2.1979853734802e-01 --8.0213932070393e-01 --1.5423212213127e-01 --5.4845079787722e-01 --1.0903375158678e-01 --5.3800968601924e-01 --1.9651164376300e-01 - 8.1315162936413e-01 --1.2468324983583e-01 --7.6081562418148e-01 --2.7503277820110e-01 --3.0953659037971e-01 --2.0805317000915e-01 --3.4522072972888e-01 --1.6924350740069e-01 --1.9672232797582e-01 --1.1110650534193e-01 - 7.8875708048320e-01 - 2.7105054312138e-01 - 1.0028870095491e-01 --3.0289045067956e-01 --1.8883889015519e-01 --3.4808552697848e-01 - 1.5744543274047e-01 --1.2593180687582e-01 --9.8832891212583e-01 --1.3144852337680e-01 - 5.7495009794786e-01 - 1.1004652050728e-01 --2.9815559743351e-01 --5.0144350477455e-01 --1.1884638938366e-01 - 5.6335395384004e-01 --2.2964307527031e-01 - 3.8671206499275e-01 --6.9388939039072e-01 --8.6736173798840e-01 - 3.4694469519536e-01 - 7.0682021520441e-01 --8.6493940047212e-01 - 7.5574058122640e-01 --1.5021495971746e-01 - 3.3964718682974e-01 --4.3833129070748e-01 - 4.4856471399009e-01 --7.7228713103841e-01 --1.3417001884508e-01 --6.3696877633523e-01 - 1.0842021724855e-01 - 1.5078264331558e-01 --1.0643876984008e-01 - 7.7553330424251e-01 --1.0561634822815e-01 - 1.5423213433058e-01 --5.4845081313371e-01 - 1.0903375556693e-01 --5.3800970446061e-01 --4.2012834183813e-01 --7.9282283863003e-01 --5.6920614055489e-01 --9.9533632377802e-01 --3.2584576579357e-01 --8.3585771637473e-01 --2.1312632150562e-01 - 3.4522072890689e-01 --1.6924351177922e-01 - 1.9672233308006e-01 --1.1110650398578e-01 - 2.2361669807514e-01 - 5.5726297599860e-01 --1.0647204146987e-01 --1.6843117839685e-01 --2.0648337028068e-01 --2.2783295416939e-01 - 8.1716848332814e-01 - 1.2593179824757e-01 --9.8832886537434e-01 - 1.3144850426020e-01 - 5.7495006919628e-01 - 3.5778671692022e-01 --2.3310346708438e-01 --2.0328790734103e-01 --6.6569169315800e-01 - 1.7422075011614e-01 - 2.2964301161934e-01 - 3.8671195334668e-01 - 9.3512437376875e-01 - 1.9922214919421e-01 - 6.2341624917917e-01 - 5.9329046890512e-01 --5.9991073326670e-01 - 7.8001516896860e-01 --1.0540288658173e-01 - 1.8659985630917e-01 --1.4812218786279e-01 - 2.6736969948748e-01 --2.3093093514495e-01 --2.2361669807514e-01 --9.5037096681932e-01 --3.7777669447542e-01 - 3.0341628895991e-01 --7.9398021588653e-01 - 2.1979854274351e-01 --8.0213937737232e-01 - 1.2578287891792e-01 --2.4952155009151e-01 - 8.2983120315883e-01 --2.5850221784434e-01 --1.0469327228063e-01 - 1.9329291856343e-01 - 1.5128008437962e-01 - 7.6081567296746e-01 --2.7503279161993e-01 - 3.0953662051139e-01 --2.0805317470958e-01 - 3.5619265534731e-01 --1.0942969569390e-01 - 4.1848640803755e-01 --1.0918885890074e-01 --3.0967524551617e-01 --3.4050724479623e-01 --3.1611269591530e-01 - 3.0289047309222e-01 --1.8883886559283e-01 - 3.4808556055007e-01 - 1.5744544903815e-01 - 1.0352397129681e-01 --1.4038921161607e-01 - 3.9397111582969e-01 --6.4312583082222e-01 --4.0657581468206e-01 --3.4965520062658e-01 - 6.5052130349130e-01 - 1.1884638147675e-01 - 5.6335392920937e-01 - 1.1965345661656e-01 - 6.0783351420658e-01 - 3.4694469519536e-01 --9.3241386833753e-01 - 1.0842021724855e-01 - 7.6051020188968e-01 --8.7695031852833e-01 - 1.2101108855649e-01 --1.6082164106505e-01 --3.3034284942918e-01 --1.0333801956503e-01 - 2.5241581828178e-01 - 5.8865064509584e-01 --1.8296116648651e-01 - 4.4876945405851e-01 --1.9707566004032e-01 - 5.5565361339882e-01 - 1.3552527156069e-01 - 1.0842021724855e-01 - 1.6259321497244e-01 --8.7579443219909e-01 - 2.8483673886279e-01 --8.8853734478614e-01 --2.3039296165317e-01 - 3.8218126580114e-01 --2.2768245622196e-01 --6.8720753425228e-01 --2.4208405696203e-01 --5.7622845701705e-01 --1.3565774853521e-01 - 1.5720931501040e-01 - 3.7947076036993e-01 --2.0057740190982e-01 - 2.8016093071890e-01 - 8.8836580037783e-01 --8.6736173798840e-01 - 6.9388939039072e-01 --5.2041704279304e-01 diff --git a/mtx/test/sparse_data/e05r0400_rhs1.mtx b/mtx/test/sparse_data/e05r0400_rhs1.mtx deleted file mode 100755 index 3363f0152..000000000 --- a/mtx/test/sparse_data/e05r0400_rhs1.mtx +++ /dev/null @@ -1,238 +0,0 @@ -%%MatrixMarket matrix array real general -236 1 --3.8867528109814e-01 --2.2214918369504e-01 - 3.1705281062076e-01 --8.7746477930621e-01 --6.4656122106372e-01 --3.2879010268552e-01 - 4.0601265747532e-01 --1.4417223596477e-01 --9.4867690092482e-01 --4.0657581468206e-01 --1.7764840872428e-01 --8.4401513410171e-01 - 7.0658666336052e-01 --1.4754227157090e-01 --1.7604364597980e-01 --9.2109040222701e-01 --1.2048854069000e-01 --9.6289152907034e-01 --1.3552527156069e-01 - 1.2061749168901e-01 - 2.1819568721271e-01 --3.3071717096719e-01 --1.3710825794151e-01 - 1.1586276851529e-01 --5.7437930977769e-01 --3.9518119159317e-01 --1.8988300553715e-01 --7.1255410706750e-01 --1.2103906605653e-01 --8.9988780316297e-01 - 1.4094628242312e-01 --1.0842021724855e-01 --4.6189186142671e-01 - 2.0310166680388e-01 - 5.6838959469310e-01 --1.2009783455646e-01 --3.5021535239375e-01 - 1.2059667823351e-01 - 2.2595101542714e-01 - 1.0483936158280e-01 - 4.1199682554449e-01 --7.5894152073985e-01 - 9.6493993351210e-01 --9.0897393159259e-01 - 5.3449359767286e-01 --1.9373201570765e-01 - 3.7857625272651e-01 - 2.1684043449710e-01 - 1.3010426069826e-01 - 3.0357660829594e-01 --3.4553094164509e-01 --2.9451611735824e-01 --1.7021128623884e-01 --6.7350352973441e-01 --1.2879151723461e-01 --2.1749373624119e-01 --1.8383683047405e-01 --7.4339565468251e-01 - 5.9631119486703e-01 - 8.1315162936413e-01 - 4.0657581468206e-01 --3.6001334508054e-01 --4.1726546310508e-01 --3.0009065489190e-01 --3.5441662943720e-01 --2.5953757134535e-01 --3.4591502866239e-01 --2.3675374788362e-01 --3.0273984906535e-01 --4.5536491244391e-01 - 2.8189256484623e-01 --2.1684043449710e-01 --9.6989450817022e-01 --4.7050865497169e-01 --4.2244806355977e-01 --4.4355936970213e-01 --5.4165152869023e-01 --3.5944163150832e-01 --2.6066346170214e-01 --2.3832460689270e-01 --2.3852447794681e-01 - 3.8489177123235e-01 --1.2630955309456e-01 --1.0313710417202e-01 - 3.9361728002382e-01 --1.1700329764358e-01 - 4.1606542598195e-01 --5.2665731713373e-01 - 2.6554944709022e-01 --1.8127363911278e-01 - 3.7290306644467e-01 - 4.3368086899420e-01 - 4.3368086899420e-01 --2.1684043449710e-01 --1.1139293206890e-01 - 5.0582783531927e-01 --7.1965008566049e-01 - 3.1591199947010e-01 - 6.9456701674853e-01 - 5.1160790014160e-01 - 2.6800122451126e-01 - 8.3471999531546e-01 --4.5149694768314e-01 - 2.1538927286410e-01 --1.2031342874940e-01 - 5.3917604847989e-01 --3.0935188617499e-01 --5.8961604988585e-01 --9.3092305357702e-01 --7.8604657505199e-01 - 2.6834003769016e-01 --2.4394548880924e-01 --2.4994686491153e-01 --1.0700276978188e-01 --2.8137562498674e-01 --6.9470289765647e-01 - 3.9212894839626e-01 --5.7663221964911e-01 - 1.2948773902467e-01 --4.3445721850993e-01 --8.6736173798840e-01 --1.1275702593849e-01 - 0.0000000000000e+00 --4.6677637990584e-01 --7.8647982743099e-01 --2.1456677154149e-01 --2.6563810245634e-01 - 1.2564774349559e-01 --4.7502650544023e-01 - 8.1484519179040e-01 --2.4212619680197e-01 - 2.1684043449710e-01 - 2.1684043449710e-01 - 2.1684043449710e-01 --4.1473155082657e-01 - 4.9057899204813e-01 --2.1365374186695e-01 - 2.8692311530416e-01 - 7.9254797987552e-01 - 1.8922625913084e-01 - 8.2042831175494e-01 - 3.1422874591824e-01 --3.0628711372716e-01 --7.3183646642772e-01 --5.1228552649940e-01 --7.4434069867732e-01 - 4.3525651506195e-01 --5.2513485856846e-01 - 2.8463914963200e-01 - 4.3368086899420e-01 - 1.3010426069826e-01 - 1.7347234759768e-01 - 3.0907965625388e-01 --4.8734393190638e-01 - 2.7224153813116e-01 --1.0534641443733e-01 - 3.7467820113157e-01 --8.2239003481048e-01 - 1.2645011057293e-01 - 1.2892062130253e-01 - 1.1655173354219e-01 --8.3348042009823e-01 - 1.3891340334971e-01 - 2.9331742145772e-01 --6.2698056905769e-01 - 2.9263472890485e-01 --8.3857543952773e-01 - 8.9121145020512e-01 --1.4411067354903e-01 - 1.1784409607855e-01 --3.4645926546983e-01 - 6.9388939039072e-01 --3.0357660829594e-01 --7.8062556418956e-01 - 7.2399233606487e-01 --1.1073167921921e-01 - 3.8788321170685e-01 - 8.8419825005998e-01 - 5.4083758235305e-01 --6.7027297889640e-01 - 2.8208669933343e-01 --8.1699234635798e-01 - 1.1275702593849e-01 - 1.6859343782150e-01 --1.2847795743953e-01 - 6.8317428439280e-01 - 3.8000210413732e-01 - 2.8313529955563e-01 - 1.8769976397889e-01 - 8.2208183383217e-01 - 4.6371289963552e-01 - 3.8172091115798e-01 - 2.2203424850419e-01 - 9.1072982488782e-01 --3.1441863002080e-01 --8.1315162936413e-01 - 8.8669954046675e-01 - 4.9083185025141e-01 - 9.1270538081577e-01 - 1.0387715377169e-01 --2.6020852139652e-01 --7.8062556418956e-01 --2.6020852139652e-01 --4.6166297029113e-01 --1.2274410973594e-01 --3.1914473536056e-01 - 7.9900717933499e-01 --1.0842021724855e-01 - 3.7947076036993e-01 --4.8789097761848e-01 --4.3750504641840e-01 --7.6597713011932e-01 - 7.8387978761776e-01 --5.2993974765495e-01 --1.2359904766335e-01 - 5.8546917314217e-01 --4.7704895589362e-01 - 8.8669166495093e-01 --6.1670513520312e-01 - 3.1422455264479e-01 --1.1038884255388e-01 - 1.1275702593849e-01 --6.9388939039072e-01 --2.6020852139652e-01 --8.1185387968468e-01 --4.8700391104577e-01 - 3.8047726319834e-01 - 1.5038022115586e-01 - 2.0816681711722e-01 - 6.9388939039072e-01 --2.0816681711722e-01 - 4.5662919899974e-01 - 2.6979210216077e-01 --2.4286128663675e-01 - 2.0816681711722e-01 - 1.7347234759768e-01 diff --git a/mtx/test/sparse_data/g10 b/mtx/test/sparse_data/g10 deleted file mode 100644 index 09e14419a..000000000 --- a/mtx/test/sparse_data/g10 +++ /dev/null @@ -1,146 +0,0 @@ -10x10 grid, with COLMMD order - 145 11 39 92 0 -RUA 100 100 460 0 -(10I8) (12I6) (5E16.8) - 1 6 10 13 17 22 26 30 35 40 - 45 50 55 60 65 70 75 79 83 88 - 92 95 99 103 108 112 117 122 127 131 - 136 140 145 150 155 160 165 169 173 176 - 180 184 188 193 197 202 207 211 215 220 - 225 230 235 239 242 246 251 255 259 264 - 269 274 279 284 289 294 299 303 307 312 - 317 322 327 332 337 342 347 352 356 360 - 365 370 374 379 384 389 394 399 404 409 - 413 417 422 427 432 437 442 447 452 457 - 461 - 46 55 56 57 66 60 69 70 80 90 99 100 - 89 98 99 100 79 88 89 90 99 80 89 90 - 100 70 79 80 90 69 78 79 80 89 78 87 - 88 89 98 59 68 69 70 79 68 77 78 79 - 88 58 67 68 69 78 67 76 77 78 87 57 - 66 67 68 77 47 56 57 58 67 34 43 44 - 45 54 85 94 95 96 86 95 96 97 75 84 - 85 86 95 51 61 62 71 81 91 92 82 91 - 92 93 71 81 82 91 62 71 72 73 82 61 - 71 72 81 72 81 82 83 92 52 61 62 63 - 72 63 72 73 74 83 84 93 94 95 74 83 - 84 85 94 83 92 93 94 73 82 83 84 93 - 64 73 74 75 84 53 62 63 64 73 43 52 - 53 54 63 54 63 64 65 74 4 5 6 15 - 5 6 7 16 1 2 11 1 2 3 12 21 - 31 32 41 1 11 12 21 12 21 22 23 32 - 11 21 22 31 2 11 12 13 22 3 12 13 - 14 23 2 3 4 13 3 4 5 14 4 13 - 14 15 24 5 14 15 16 25 13 22 23 24 - 33 22 31 32 33 42 30 39 40 50 9 10 - 20 8 9 10 19 9 18 19 20 29 20 29 - 30 40 10 19 20 30 19 28 29 30 39 8 - 17 18 19 28 18 27 28 29 38 29 38 39 - 40 49 17 26 27 28 37 28 37 38 39 48 - 7 16 17 18 27 6 15 16 17 26 7 8 - 9 18 6 7 8 17 15 24 25 26 35 16 - 25 26 27 36 42 51 52 53 62 24 33 34 - 35 44 14 23 24 25 34 23 32 33 34 43 - 25 34 35 36 45 32 41 42 43 52 33 42 - 43 44 53 31 41 42 51 41 51 52 61 35 - 44 45 46 55 36 45 46 47 56 50 59 60 - 70 26 35 36 37 46 27 36 37 38 47 37 - 46 47 48 57 38 47 48 49 58 48 57 58 - 59 68 39 48 49 50 59 49 58 59 60 69 - 40 49 50 60 88 97 98 99 44 53 54 55 - 64 45 54 55 56 65 55 64 65 66 75 56 - 65 66 67 76 65 74 75 76 85 66 75 76 - 77 86 76 85 86 87 96 77 86 87 88 97 - 87 96 97 98 - 1.26819336e+00 -3.12426583e-02 7.78211737e-01 2.18048355e+00 4.37813682e-01 - -3.96516210e-01 1.38880676e+00 1.36442229e+00 6.58152637e-01 -6.92971494e-01 - -8.59806235e-01 5.29038063e-01 -1.74530599e-01 9.78788421e-01 1.28955368e+00 - -5.30575045e-01 1.83403368e+00 -1.71591032e+00 8.69317059e-02 1.95567435e+00 - 1.61453770e-01 -6.28688359e-01 -1.43882447e+00 -6.65959686e-02 3.73380863e-01 - 1.39860373e-01 -7.48088838e-01 -6.28974933e-01 1.39483065e+00 4.20988804e-01 - -4.33373058e-01 7.06251990e-01 2.27856907e-01 -1.01699185e+00 8.25892307e-01 - 1.47039036e+00 -1.37890689e+00 -2.60172069e-01 9.94768173e-01 -1.58105341e+00 - 1.04902235e+00 3.02689036e-01 -1.22650234e+00 6.96000951e-02 1.33881437e+00 - 1.22229851e+00 -1.59597816e+00 -1.06773032e+00 -7.59919212e-01 -1.98499916e-01 - -1.41404614e-01 4.11267927e-01 -1.17905966e+00 -2.77775506e-01 1.93931843e+00 - -8.95840361e-01 -3.04157583e-01 5.55253123e-01 -3.24246851e-01 -9.11425420e-01 - -9.96089984e-01 1.19514263e+00 -1.59447782e-01 2.70402605e+00 1.33332898e+00 - 2.51078139e-01 -3.10470908e-01 -9.23003724e-01 -3.84775736e-01 -1.46163875e+00 - 1.55446592e+00 -5.97535384e-01 -1.21056787e+00 -7.02668798e-01 9.53355517e-01 - -1.93005494e+00 5.12844987e-01 3.93682449e-01 -9.05426500e-01 -1.27447328e+00 - 3.46546103e-01 -1.19523544e+00 8.66840733e-01 1.29184358e+00 4.34312653e-01 - -3.86206929e-01 -1.12563760e-01 9.59664371e-01 2.08759311e+00 1.52468053e+00 - -1.95260790e-01 2.17314078e-01 -1.79456822e-01 2.56729070e-02 6.42066362e-01 - 9.23086649e-01 -1.55510777e+00 6.63594033e-01 -1.64769114e+00 -2.01498584e+00 - 4.91716881e-01 -1.55497528e+00 -3.97913855e-01 8.64279576e-01 -1.77618078e-01 - 1.87438052e+00 1.72400235e-01 4.91313669e-01 8.00733701e-01 -7.67268997e-01 - 3.64419504e-01 -1.40609081e-01 2.44943669e-01 -2.67458500e-01 -5.70245480e-01 - -1.87266787e-01 1.72603158e-02 2.46340439e-01 -8.54484721e-01 1.15778270e+00 - 1.61907723e-01 1.27174349e+00 -3.53443680e-02 -1.50132884e+00 3.65373411e-01 - -1.98659856e-01 9.94299745e-01 -8.03474714e-01 -5.91204478e-01 1.69154641e+00 - -7.24410496e-01 1.19219551e+00 1.86746737e-01 1.59493888e+00 3.21307056e-01 - -6.09499611e-01 5.65239403e-01 -6.10781446e-01 1.23111147e+00 1.20855665e+00 - -6.38854660e-01 6.05540299e-01 -6.24480544e-01 5.72228122e-01 -1.38972170e+00 - 2.29327812e-01 2.71190237e-01 -3.66360220e-01 1.37696039e+00 1.55706376e+00 - -1.93543855e-01 1.65130117e+00 -1.89877818e+00 1.82252476e+00 7.65458387e-01 - -5.94524008e-01 1.30245975e-01 3.50135051e-02 -6.24674139e-01 -1.51841513e+00 - -1.05107061e+00 4.99305134e-02 -1.45474887e+00 4.66545850e-01 -3.60029626e-01 - -1.35576294e-01 -1.34933848e+00 -1.27044990e+00 9.84570273e-01 -4.48806138e-02 - -7.98944517e-01 -7.65172429e-01 1.16495351e+00 6.26839083e-01 7.50801547e-02 - 3.51606903e-01 -6.96512535e-01 1.69614248e+00 5.90597780e-02 9.68481048e-01 - 6.70291997e-01 4.20146042e-01 -2.87275127e+00 -2.04134535e-03 1.60651096e+00 - 8.47648635e-01 2.68100812e-01 3.98848528e-02 -2.48284251e+00 1.15865471e+00 - -1.02627947e+00 1.15348699e+00 6.15769628e-01 9.77894070e-01 -1.11534771e+00 - -5.50021449e-01 -9.23489086e-01 -7.04993878e-02 1.47891351e-01 -5.57093642e-01 - -3.36705699e-01 4.15227463e-01 1.55781354e+00 -2.44429890e+00 -1.09819539e+00 - 1.12264786e+00 1.79707178e+00 2.64068529e-01 8.71673289e-01 -1.44617154e+00 - -7.01165346e-01 1.24598212e+00 -6.38976995e-01 5.77350219e-01 5.81667258e-01 - -2.71354296e-01 4.14191307e-01 -9.77814227e-01 -1.02146617e+00 3.17687980e-01 - 1.51610780e+00 7.49432453e-01 -5.07700387e-01 8.85299448e-01 -7.86456613e-01 - 6.34808588e-01 8.20409762e-01 -1.76026510e-01 5.62473875e-01 1.68587408e+00 - 2.79245535e-02 -9.02030581e-01 -2.05325749e+00 8.90862977e-02 -1.04842345e+00 - 4.22723685e-01 -8.44414378e-01 -3.11629756e-01 -3.22939921e-01 3.17987916e-01 - -5.11172208e-01 1.12516182e+00 7.28641592e-01 -2.37745429e+00 -2.73782416e-01 - 3.49733203e-02 -1.80786206e+00 1.02819255e+00 3.94600309e-01 6.39405642e-01 - -7.59696649e-01 -6.74720856e-01 -1.17168719e+00 2.03293002e+00 8.74212895e-01 - 1.75240173e+00 -3.20050826e-01 -1.37413808e-01 2.92314877e-01 2.56591024e+00 - -4.57815644e-01 -1.61082701e+00 -2.66952378e+00 7.03144053e-01 -5.24115850e-02 - 2.01849612e+00 9.24159405e-01 -1.81411470e+00 4.38705098e-01 -1.24734432e+00 - 3.24666917e-01 3.90070410e-01 -4.05138317e-01 -3.68411285e-01 1.14789528e+00 - 4.14302603e-02 -1.09804965e+00 1.56672375e+00 4.99520851e-01 -1.05537507e+00 - -4.50743203e-01 1.27037824e+00 8.98693601e-01 8.74127225e-01 7.61126995e-01 - -1.65923455e-01 3.00907437e-01 -3.22467327e-01 5.62147834e-01 -1.06392289e+00 - 3.51588948e-01 1.13299993e+00 1.49994248e-01 -2.48093553e-01 -7.26249000e-01 - -4.45040301e-01 -6.12911120e-01 -2.09144085e-01 7.56218970e-01 4.00486023e-01 - -1.34138072e+00 3.75041024e-01 8.61734897e-01 -5.62251244e-02 5.13478174e-01 - 3.96680866e-01 -6.20214209e-01 2.37148765e-01 -1.58684699e+00 -4.01484810e-01 - -7.70692269e-01 -2.62680506e-01 9.76489544e-01 9.77815041e-01 1.17002111e+00 - 1.59310862e-01 1.83613203e+00 -3.82918259e-01 1.55082745e-01 -9.64648249e-01 - 3.87564313e-02 -1.52762265e+00 9.64938959e-01 5.26162503e-01 -1.84454117e-01 - 1.98782828e-01 -1.27442875e-01 5.54171561e-01 -1.09734432e+00 -7.31301400e-01 - 1.40473192e+00 2.08709913e+00 3.65118460e-01 8.46105526e-01 -1.84537657e-01 - 1.03071442e+00 1.59042684e+00 3.21916399e-02 8.89163671e-01 -1.29915249e+00 - 1.18257310e+00 -2.21360782e-01 1.66494939e-02 -1.19236124e+00 -1.31646297e-01 - 1.48752430e+00 -8.36821231e-01 -1.30098190e+00 1.57413186e+00 1.16603996e+00 - 7.86429695e-01 3.97810484e-01 1.04978596e+00 -3.40795563e-01 3.36296999e-01 - 8.99883574e-01 -2.00898856e-01 -2.33734975e-01 1.44990660e+00 3.56429388e-01 - 6.52635669e-01 2.15671161e-01 -2.63896186e-01 1.80244024e+00 -6.42984172e-01 - 1.09555050e-01 -7.19037696e-01 4.20627573e-01 -1.93113369e+00 3.20690754e+00 - 5.36007045e-01 2.98450536e-01 2.84043161e-01 1.81747171e+00 -5.84302130e-01 - -1.01067382e+00 -9.60498312e-01 6.91159584e-01 -7.58618207e-01 -9.69717328e-02 - -1.40694905e+00 1.03081246e+00 -7.59874404e-01 6.60299785e-01 -1.10250960e+00 - -1.02970645e-01 -1.05980154e+00 -1.23856594e+00 -1.88923606e+00 -9.73584554e-01 - 2.12115839e-01 4.93441991e-01 1.54717659e+00 1.15818057e+00 8.62500188e-01 - -1.03470562e+00 -1.92672883e-01 -1.29972278e+00 6.44932748e-01 -2.14835899e+00 - -1.02884453e+00 -1.41582116e-01 -2.52670612e+00 3.06595916e-01 9.68992176e-01 - -7.47317127e-01 -2.79602442e+00 6.96731554e-01 -3.12981493e-01 -5.93617619e-01 - 3.32322162e-01 5.58850703e-01 -9.14800738e-01 -5.14012560e-01 1.89626061e+00 - -2.53229992e-01 -5.39775241e-01 1.87995711e+00 -1.00384945e+00 -4.97445878e-01 - -1.50439715e+00 -9.54492989e-02 3.96727054e-01 -5.27114908e-01 3.44571056e-01 - -7.23290526e-01 5.45436841e-01 1.32031907e+00 -4.04494328e-01 4.18468509e-01 - 2.47348750e-01 7.04110315e-01 6.31938853e-01 -9.92362113e-01 1.76670837e+00 - -3.82103635e-01 -7.97532757e-01 -9.36740612e-01 -2.43346549e-03 3.96086166e-01 - -5.08693172e-01 -2.68285779e-01 -1.08214045e+00 2.01413372e+00 1.94403113e+00 - -1.52152942e+00 -9.64333079e-01 -2.05725119e+00 1.49996068e-01 5.42037571e-01 - 2.54408816e-01 -3.07240694e-01 -4.17111830e-01 1.13680483e+00 3.91313809e-01 - 1.60514782e+00 6.67201442e-01 -6.77937746e-02 -1.73566011e+00 8.06348573e-01 diff --git a/mtx/test/sparse_data/g10.rhs b/mtx/test/sparse_data/g10.rhs deleted file mode 100644 index 82da24dcb..000000000 --- a/mtx/test/sparse_data/g10.rhs +++ /dev/null @@ -1,101 +0,0 @@ -this rhs with g10 matrix should produce solution of all 1's -1.51451906765 -0.803909242 -1.674273126 -2.339293041 -0.5277049639999999 --0.7805777497999997 -0.4631971626 -2.74227007 --0.9007057287000001 --1.185253479 -2.2268613549 -2.6522981568 --5.505374991 -1.282011061 --2.845294883 --3.044516513 -0.58246796 -2.157380112 -3.723286146 --1.196319374 --0.2683665799999998 -2.027283969 -3.558048843 --3.585310885 -1.134067442 -1.129282786 --1.136690372 -3.220967922 --0.4714717329999999 --3.968351458 -0.5460055854999999 -0.815360129 --0.516560361 -0.3169096558999998 --0.2938554569999999 --2.890471352800001 --0.0473269810000001 --0.2815900920000001 --1.2595296497 --0.2225155010000003 --0.9064322421000002 --0.9089203753000002 -4.79312429 -0.8801478320000001 -0.2017821421 --0.1260905380000001 --0.08247304999999983 --2.160331448 -0.7442995080000001 -3.08601783 -0.712144255 -0.8316083777999999 -3.389048291 --2.7931928189 -1.2920736367 -0.1468375569999999 -0.5825214699999999 -0.359959506 --4.511742495 --2.335239391 -4.275153818 -0.1174945302999999 -2.405082611 --3.422647446599999 --2.748127628 --1.400455685 -4.37498908 -1.339934085 -1.630156494 -0.5618234840000003 --0.1779386530000001 --0.958932801 -3.633460902 --0.5580416100000001 --0.3367446524900001 -0.1679428109999999 -5.258957413 --0.9259812940000001 -0.7940666071000002 --0.3716537479999999 --1.188308589 -0.3998703179999998 -0.4193308619999998 -3.225369908 -0.4166626879999997 --3.080278611 -3.492187352 --4.378223351000001 --2.8035872821 -2.5909375374 --0.811345453 --1.151462247 --0.1784340050000001 --0.9688408920000002 -0.8173543569999999 -0.9268435934 --1.83976029 -4.676165777 -0.3379712230000001 -0.371843881 diff --git a/mtx/test/sparse_data/g20.rua b/mtx/test/sparse_data/g20.rua deleted file mode 100644 index 382c9c437..000000000 --- a/mtx/test/sparse_data/g20.rua +++ /dev/null @@ -1,534 +0,0 @@ -g20, symm permuted by SYMMMD SYM - 530 26 120 384 0 -RUA 400 400 1920 0 -(16I5) (16I5) (5E15.8) (5E15.8) - 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 - 81 86 91 96 101 106 111 116 121 126 131 136 141 146 151 156 - 161 166 171 176 181 186 191 196 201 206 210 214 218 223 228 231 - 235 239 243 248 253 257 262 266 271 276 281 286 291 295 300 304 - 309 313 318 323 328 332 337 342 347 352 357 362 367 372 377 382 - 387 392 397 402 407 412 417 422 427 432 437 442 447 452 457 462 - 467 472 477 482 487 492 497 501 505 510 514 519 524 529 534 539 - 544 549 554 559 564 568 572 576 580 583 588 593 597 601 606 610 - 614 619 624 629 634 639 644 649 654 659 664 669 674 678 682 686 - 691 696 701 706 710 714 718 723 728 732 737 742 747 752 757 762 - 767 772 777 781 786 791 796 800 805 810 815 820 825 830 835 839 - 844 849 854 859 864 869 874 879 884 889 894 899 904 909 914 919 - 923 928 932 937 941 946 951 956 961 966 971 976 981 986 991 996 - 1001 1006 1011 1015 1020 1024 1029 1033 1038 1043 1048 1053 1058 1063 1068 1073 - 1078 1083 1088 1093 1098 1103 1108 1113 1117 1122 1126 1130 1133 1138 1142 1147 - 1152 1156 1161 1165 1170 1174 1179 1183 1188 1193 1198 1203 1208 1212 1217 1221 - 1226 1230 1235 1240 1245 1249 1254 1259 1264 1269 1274 1279 1284 1288 1293 1298 - 1303 1308 1313 1317 1322 1327 1332 1337 1342 1347 1352 1357 1362 1367 1372 1377 - 1382 1387 1392 1397 1402 1407 1412 1417 1422 1427 1432 1437 1442 1446 1451 1455 - 1459 1464 1468 1472 1477 1482 1487 1492 1497 1501 1506 1510 1515 1519 1522 1526 - 1530 1535 1539 1544 1549 1554 1559 1563 1568 1573 1578 1583 1587 1592 1596 1601 - 1605 1610 1615 1620 1625 1630 1635 1640 1645 1650 1655 1660 1665 1670 1674 1679 - 1684 1689 1694 1699 1704 1709 1714 1719 1724 1729 1734 1738 1743 1748 1753 1758 - 1763 1768 1773 1778 1783 1788 1792 1797 1802 1807 1811 1816 1821 1826 1831 1836 - 1841 1846 1851 1856 1861 1866 1871 1876 1881 1886 1891 1896 1901 1906 1911 1916 - 1921 - 1 9 32 391 395 2 9 392 395 400 3 8 389 393 394 4 - 8 9 392 394 5 7 8 381 389 6 7 8 9 32 5 6 - 7 33 382 3 4 5 6 8 1 2 4 6 9 10 31 396 - 398 399 11 18 29 30 31 12 18 31 397 399 13 17 386 387 - 388 14 17 18 30 387 15 17 383 388 390 16 17 18 390 397 - 13 14 15 16 17 11 12 14 16 18 19 28 33 380 382 20 - 22 28 29 33 21 22 29 31 398 20 21 22 32 391 23 27 - 379 384 385 24 27 28 379 380 25 27 30 385 387 26 27 28 - 29 30 23 24 25 26 27 19 20 24 26 28 11 20 21 26 - 29 11 14 25 26 30 10 11 12 21 31 1 6 22 32 33 - 7 19 20 32 33 34 74 92 370 372 35 40 70 174 176 36 - 40 91 174 177 37 39 40 70 71 38 39 40 90 91 37 38 - 39 74 92 35 36 37 38 40 41 56 70 71 73 42 44 55 - 56 43 44 175 176 42 43 44 45 44 45 56 70 176 46 54 - 55 56 73 47 49 53 48 49 54 55 47 48 49 52 50 51 - 53 69 50 51 52 68 72 49 51 52 53 54 47 50 52 53 - 46 48 52 54 72 42 46 48 55 41 42 45 46 56 57 59 - 67 68 72 58 59 67 74 372 57 58 59 71 73 60 66 67 - 372 373 61 62 65 69 61 62 66 67 68 63 64 65 374 63 - 64 66 371 373 61 63 65 66 60 62 64 65 66 57 58 60 - 62 67 51 57 62 68 69 50 61 68 69 35 37 41 45 70 - 37 41 59 71 74 51 54 57 72 73 41 46 59 72 73 34 - 39 58 71 74 75 89 369 381 389 76 78 92 370 375 77 78 - 89 369 375 76 77 78 88 90 79 87 91 177 178 80 87 88 - 90 91 81 86 87 173 178 82 86 173 379 380 83 85 86 87 - 88 84 85 86 380 382 83 84 85 89 381 81 82 83 84 86 - 79 80 81 83 87 78 80 83 88 89 75 77 85 88 89 38 - 78 80 90 92 36 38 79 80 91 34 39 76 90 92 93 172 - 385 386 387 94 98 168 169 170 95 98 169 172 386 96 98 109 - 170 171 97 98 109 386 388 94 95 96 97 98 99 108 377 383 - 390 100 108 376 377 378 101 107 109 167 171 102 107 109 383 388 - 103 106 107 167 104 106 108 378 105 106 107 108 383 103 104 105 - 106 101 102 103 105 107 99 100 104 105 108 96 97 101 102 109 - 110 166 173 379 384 111 132 138 162 164 112 132 138 168 169 113 - 131 132 163 164 114 130 131 132 168 115 129 130 168 170 116 123 - 128 129 130 117 121 123 128 118 120 131 163 119 120 121 123 118 - 119 120 122 117 119 121 120 122 123 130 131 116 117 119 122 123 - 124 127 128 129 125 127 167 171 126 127 129 170 171 124 125 126 - 127 116 117 124 128 115 116 124 126 129 114 115 116 122 130 113 - 114 118 122 131 111 112 113 114 132 133 137 138 162 165 134 137 - 165 166 384 135 137 138 169 172 136 137 172 384 385 133 134 135 - 136 137 111 112 133 135 138 139 145 174 175 176 140 145 161 174 - 177 141 143 145 175 142 143 153 160 141 142 143 144 143 144 145 - 160 161 139 140 141 144 145 146 152 153 159 160 147 152 159 162 - 165 148 150 152 153 149 150 163 164 148 149 150 151 150 151 152 - 162 164 146 147 148 151 152 142 146 148 153 154 158 159 160 161 - 155 158 161 177 178 156 158 159 165 166 157 158 166 173 178 154 - 155 156 157 158 146 147 154 156 159 142 144 146 154 160 140 144 - 154 155 161 111 133 147 151 162 113 118 149 163 111 113 149 151 - 164 133 134 147 156 165 110 134 156 157 166 101 103 125 167 94 - 112 114 115 168 94 95 112 135 169 94 96 115 126 170 96 101 - 125 126 171 93 95 135 136 172 81 82 110 157 173 35 36 139 - 140 174 43 139 141 175 35 43 45 139 176 36 79 140 155 177 - 79 81 155 157 178 179 183 201 369 375 180 183 200 201 274 181 - 183 369 389 393 182 183 272 274 393 179 180 181 182 183 184 188 - 370 372 373 185 188 199 371 373 186 188 201 370 375 187 188 199 - 200 201 184 185 186 187 188 189 198 200 274 277 190 198 273 276 - 277 191 197 198 199 200 192 193 196 374 192 193 197 199 371 194 - 195 196 275 194 195 197 198 276 192 194 196 197 191 193 195 196 - 197 189 190 191 195 198 185 187 191 193 199 180 187 189 191 200 - 179 180 186 187 201 202 271 272 393 394 203 207 272 274 277 204 - 207 218 273 277 205 207 267 271 272 206 207 218 266 267 203 204 - 205 206 207 208 217 218 266 268 209 217 265 268 270 210 216 217 - 218 273 211 212 215 275 211 212 216 273 276 213 214 215 269 213 - 214 216 217 270 211 213 215 216 210 212 214 215 216 208 209 210 - 214 217 204 206 208 210 218 219 223 271 392 394 220 223 229 267 - 271 221 223 365 392 400 222 223 229 365 366 219 220 221 222 223 - 224 228 229 266 267 225 228 263 266 268 226 228 229 264 366 227 - 228 262 263 264 224 225 226 227 228 220 222 224 226 229 230 249 - 263 265 268 231 239 248 249 265 232 233 238 269 232 233 239 265 - 270 234 236 237 238 235 236 237 247 234 235 236 234 235 237 239 - 248 232 234 238 239 231 233 237 238 239 240 246 249 262 263 241 - 242 245 247 241 242 246 248 249 243 244 245 261 243 244 246 260 - 262 241 243 245 246 240 242 244 245 246 235 241 247 248 231 237 - 242 247 248 230 231 240 242 249 250 259 264 364 366 251 259 260 - 262 264 252 258 259 364 367 253 254 257 261 253 254 258 259 260 - 255 256 257 363 255 256 258 367 368 253 255 257 258 252 254 256 - 257 258 250 251 252 254 259 244 251 254 260 261 243 253 260 261 - 227 240 244 251 262 225 227 230 240 263 226 227 250 251 264 209 - 230 231 233 265 206 208 224 225 266 205 206 220 224 267 208 209 - 225 230 268 213 232 269 270 209 214 233 269 270 202 205 219 220 - 271 182 202 203 205 272 190 204 210 212 273 180 182 189 203 274 - 194 211 275 276 190 195 212 275 276 189 190 203 204 277 278 283 - 289 395 400 279 283 289 361 362 280 282 283 391 395 281 282 283 - 359 361 280 281 282 396 398 278 279 280 281 283 284 288 289 365 - 400 285 288 364 365 366 286 288 289 360 362 287 288 360 364 367 - 284 285 286 287 288 278 279 284 286 289 290 292 298 396 399 291 - 292 298 355 357 290 291 292 358 359 293 297 377 390 397 294 297 - 298 397 399 295 297 356 376 377 296 297 298 355 356 293 294 295 - 296 297 290 291 294 296 298 299 328 351 355 357 300 308 328 355 - 356 301 307 326 327 302 307 308 326 328 303 306 376 378 304 306 - 307 308 305 306 308 356 376 303 304 305 306 301 302 304 307 300 - 302 304 305 308 309 311 326 328 351 310 311 324 326 327 309 310 - 311 325 353 312 323 325 352 353 313 314 322 350 313 314 323 352 - 354 315 316 320 322 315 316 321 323 325 317 319 324 327 318 319 - 320 317 318 319 321 315 318 320 321 316 319 320 321 324 313 315 - 322 323 312 314 316 322 323 310 317 321 324 325 311 312 316 324 - 325 301 302 309 310 326 301 310 317 327 299 300 302 309 328 329 - 338 349 360 362 330 338 360 367 368 331 337 338 348 349 332 333 - 336 363 332 333 337 338 368 334 335 336 350 334 335 337 348 354 - 332 334 336 337 331 333 335 336 337 329 330 331 333 338 339 347 - 358 359 361 340 347 349 361 362 341 346 347 348 349 342 346 348 - 352 354 343 345 346 347 358 344 345 346 352 353 343 344 345 351 - 357 341 342 343 344 346 339 340 341 343 347 331 335 341 342 348 - 329 331 340 341 349 313 334 350 354 299 309 345 351 353 312 314 - 342 344 352 311 312 344 351 353 314 335 342 350 354 291 296 299 - 300 355 295 296 300 305 356 291 299 345 357 358 292 339 343 357 - 358 281 292 339 359 396 286 287 329 330 360 279 281 339 340 361 - 279 286 329 340 362 255 332 363 368 250 252 285 287 364 221 222 - 284 285 365 222 226 250 285 366 252 256 287 330 367 256 330 333 - 363 368 75 77 179 181 369 34 76 184 186 370 64 185 193 371 - 374 34 58 60 184 372 60 64 184 185 373 63 192 371 374 76 - 77 179 186 375 100 295 303 305 376 99 100 293 295 377 100 104 - 303 378 23 24 82 110 379 19 24 82 84 380 5 75 85 381 - 382 7 19 84 381 382 15 99 102 105 383 23 110 134 136 384 - 23 25 93 136 385 13 93 95 97 386 13 14 25 93 387 13 - 15 97 102 388 3 5 75 181 389 15 16 99 293 390 1 22 - 280 391 398 2 4 219 221 392 3 181 182 202 393 3 4 202 - 219 394 1 2 278 280 395 10 282 290 359 396 12 16 293 294 - 397 10 21 282 391 398 10 12 290 294 399 2 221 278 284 400 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 --1.00000000E+00 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 - 4.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00-1.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 --1.00000000E+00-1.00000000E+00-1.00000000E+00-1.00000000E+00 4.00000000E+00 diff --git a/mtx/test/sparse_data/g20.test b/mtx/test/sparse_data/g20.test deleted file mode 100644 index 2256427e8..000000000 --- a/mtx/test/sparse_data/g20.test +++ /dev/null @@ -1,804 +0,0 @@ -400 argument B for g20.rua -- solution follows -0 -0.080000 -1 -1.960000 -2 -1.005000 -3 -1.945000 -4 -0.020000 -5 -0.040000 -6 -0.970000 -7 0.055000 -8 -0.030000 -9 -1.885000 -10 -0.120000 -11 0.075000 -12 -1.935000 -13 0.020000 -14 -1.945000 -15 -0.860000 -16 -0.075000 -17 0.075000 -18 -1.975000 -19 0.075000 -20 -1.050000 -21 0.090000 -22 -0.960000 -23 -0.780000 -24 -0.075000 -25 0.115000 -26 -0.125000 -27 0.105000 -28 -0.115000 -29 0.200000 -30 -0.055000 -31 0.250000 -32 -0.130000 -33 -1.930000 -34 -1.150000 -35 -0.175000 -36 -0.275000 -37 0.055000 -38 -0.510000 -39 0.215000 -40 -0.315000 -41 1.170000 -42 0.450000 -43 1.335000 -44 -0.865000 -45 0.185000 -46 2.000000 -47 1.345000 -48 0.750000 -49 1.500000 -50 -0.605000 -51 0.385000 -52 0.745000 -53 -0.005000 -54 0.660000 -55 0.340000 -56 -0.350000 -57 -0.535000 -58 -0.145000 -59 -0.495000 -60 0.845000 -61 0.285000 -62 -0.095000 -63 0.475000 -64 0.835000 -65 0.195000 -66 -0.450000 -67 0.525000 -68 0.705000 -69 0.700000 -70 -0.185000 -71 0.585000 -72 -0.295000 -73 0.510000 -74 0.000000 -75 -0.590000 -76 -0.195000 -77 0.145000 -78 -0.445000 -79 0.355000 -80 -0.660000 -81 -0.345000 -82 -0.435000 -83 -1.280000 -84 -0.210000 -85 0.445000 -86 -0.200000 -87 0.485000 -88 -0.220000 -89 0.180000 -90 -0.385000 -91 0.420000 -92 -1.395000 -93 -0.150000 -94 -1.640000 -95 0.290000 -96 -2.180000 -97 0.505000 -98 -1.245000 -99 -1.155000 -100 0.000000 -101 0.050000 -102 0.735000 -103 0.560000 -104 -0.535000 -105 1.800000 -106 -0.255000 -107 0.570000 -108 -0.495000 -109 -0.275000 -110 -1.490000 -111 0.025000 -112 -0.740000 -113 0.065000 -114 -1.170000 -115 0.515000 -116 0.680000 -117 1.880000 -118 0.700000 -119 1.600000 -120 2.000000 -121 0.595000 -122 -0.595000 -123 1.920000 -124 1.000000 -125 0.835000 -126 0.375000 -127 1.680000 -128 -0.915000 -129 0.420000 -130 -0.885000 -131 0.755000 -132 -0.750000 -133 -0.035000 -134 -0.775000 -135 -0.030000 -136 -0.675000 -137 1.100000 -138 -0.875000 -139 0.965000 -140 1.000000 -141 2.020000 -142 0.285000 -143 1.040000 -144 -0.710000 -145 0.680000 -146 -0.785000 -147 1.725000 -148 0.215000 -149 2.130000 -150 -1.570000 -151 0.785000 -152 -0.090000 -153 0.745000 -154 -0.840000 -155 0.750000 -156 -1.255000 -157 0.805000 -158 -1.140000 -159 0.135000 -160 -1.095000 -161 1.620000 -162 0.705000 -163 1.640000 -164 -0.725000 -165 0.660000 -166 1.000000 -167 0.880000 -168 -0.515000 -169 0.910000 -170 -0.555000 -171 1.380000 -172 -0.480000 -173 1.300000 -174 1.000000 -175 1.760000 -176 -0.440000 -177 1.780000 -178 0.000000 -179 0.615000 -180 0.000000 -181 0.455000 -182 -0.905000 -183 -0.485000 -184 -0.470000 -185 0.465000 -186 -0.970000 -187 0.955000 -188 -1.680000 -189 0.715000 -190 -0.995000 -191 1.495000 -192 -0.480000 -193 2.450000 -194 -1.670000 -195 1.995000 -196 -0.490000 -197 1.505000 -198 0.000000 -199 1.550000 -200 -0.915000 -201 0.355000 -202 -1.365000 -203 1.495000 -204 -0.680000 -205 0.850000 -206 -1.025000 -207 0.200000 -208 -1.345000 -209 1.015000 -210 0.470000 -211 0.890000 -212 0.465000 -213 0.925000 -214 0.460000 -215 0.570000 -216 -1.580000 -217 0.110000 -218 -1.965000 -219 2.200000 -220 -1.980000 -221 1.305000 -222 -1.105000 -223 1.005000 -224 -1.905000 -225 0.115000 -226 -1.885000 -227 1.155000 -228 -2.230000 -229 1.630000 -230 -0.620000 -231 2.725000 -232 -1.255000 -233 2.155000 -234 0.410000 -235 3.775000 -236 -1.205000 -237 2.215000 -238 -0.595000 -239 1.130000 -240 0.395000 -241 1.185000 -242 0.390000 -243 0.520000 -244 0.385000 -245 0.645000 -246 0.380000 -247 1.875000 -248 -1.780000 -249 0.015000 -250 -1.965000 -251 0.965000 -252 0.365000 -253 1.245000 -254 0.360000 -255 0.995000 -256 0.355000 -257 0.675000 -258 -1.890000 -259 1.355000 -260 0.350000 -261 1.410000 -262 -1.175000 -263 1.450000 -264 -0.575000 -265 1.065000 -266 -1.625000 -267 1.585000 -268 -0.255000 -269 2.165000 -270 -1.055000 -271 1.760000 -272 -2.040000 -273 1.835000 -274 -0.175000 -275 1.755000 -276 -0.985000 -277 1.780000 -278 -0.905000 -279 2.095000 -280 -0.705000 -281 0.135000 -282 -1.395000 -283 1.120000 -284 -2.545000 -285 0.335000 -286 -2.530000 -287 1.455000 -288 -2.120000 -289 0.435000 -290 -1.475000 -291 1.300000 -292 -0.975000 -293 2.195000 -294 -1.830000 -295 1.325000 -296 -1.475000 -297 0.780000 -298 -0.820000 -299 0.520000 -300 0.185000 -301 0.615000 -302 -1.650000 -303 2.505000 -304 -3.365000 -305 3.300000 -306 -0.515000 -307 0.815000 -308 -1.635000 -309 1.475000 -310 -0.775000 -311 2.240000 -312 -1.465000 -313 1.375000 -314 -1.395000 -315 3.160000 -316 0.190000 -317 4.380000 -318 0.205000 -319 3.405000 -320 -2.400000 -321 4.220000 -322 -3.160000 -323 2.465000 -324 -2.380000 -325 1.730000 -326 0.225000 -327 1.775000 -328 -2.650000 -329 0.635000 -330 -1.715000 -331 3.480000 -332 -2.595000 -333 2.625000 -334 -2.590000 -335 2.695000 -336 -0.840000 -337 2.555000 -338 -0.895000 -339 2.495000 -340 -1.735000 -341 -0.080000 -342 -1.760000 -343 1.695000 -344 -0.860000 -345 1.745000 -346 -0.850000 -347 2.625000 -348 -0.850000 -349 2.780000 -350 0.000000 -351 0.240000 -352 -1.640000 -353 1.025000 -354 -1.490000 -355 2.070000 -356 -0.895000 -357 2.850000 -358 -1.720000 -359 2.060000 -360 -0.850000 -361 2.055000 -362 -0.750000 -363 2.385000 -364 -1.265000 -365 1.915000 -366 -2.095000 -367 2.215000 -368 0.000000 -369 2.500000 -370 -1.095000 -371 2.880000 -372 -0.770000 -373 4.260000 -374 -0.655000 -375 3.510000 -376 -0.250000 -377 4.270000 -378 -0.540000 -379 3.325000 -380 -0.955000 -381 3.610000 -382 -0.255000 -383 2.890000 -384 -0.340000 -385 3.860000 -386 -0.035000 -387 3.625000 -388 0.000000 -389 3.860000 -390 -1.750000 -391 3.905000 -392 -0.960000 -393 3.425000 -394 -1.400000 -395 2.505000 -396 -0.805000 -397 3.250000 -398 -1.515000 -399 2.590000 -400 solution B -0 1.000000 -1 1.005000 -2 1.000000 -3 1.010000 -4 1.000000 -5 1.015000 -6 1.000000 -7 1.020000 -8 1.000000 -9 1.025000 -10 1.000000 -11 1.030000 -12 1.000000 -13 1.035000 -14 1.000000 -15 1.040000 -16 1.000000 -17 1.045000 -18 1.000000 -19 1.050000 -20 1.000000 -21 1.055000 -22 1.000000 -23 1.060000 -24 1.000000 -25 1.065000 -26 1.000000 -27 1.070000 -28 1.000000 -29 1.075000 -30 1.000000 -31 1.080000 -32 1.000000 -33 1.085000 -34 1.000000 -35 1.090000 -36 1.000000 -37 1.095000 -38 1.000000 -39 1.100000 -40 1.000000 -41 1.105000 -42 1.000000 -43 1.110000 -44 1.000000 -45 1.115000 -46 1.000000 -47 1.120000 -48 1.000000 -49 1.125000 -50 1.000000 -51 1.130000 -52 1.000000 -53 1.135000 -54 1.000000 -55 1.140000 -56 1.000000 -57 1.145000 -58 1.000000 -59 1.150000 -60 1.000000 -61 1.155000 -62 1.000000 -63 1.160000 -64 1.000000 -65 1.165000 -66 1.000000 -67 1.170000 -68 1.000000 -69 1.175000 -70 1.000000 -71 1.180000 -72 1.000000 -73 1.185000 -74 1.000000 -75 1.190000 -76 1.000000 -77 1.195000 -78 1.000000 -79 1.200000 -80 1.000000 -81 1.205000 -82 1.000000 -83 1.210000 -84 1.000000 -85 1.215000 -86 1.000000 -87 1.220000 -88 1.000000 -89 1.225000 -90 1.000000 -91 1.230000 -92 1.000000 -93 1.235000 -94 1.000000 -95 1.240000 -96 1.000000 -97 1.245000 -98 1.000000 -99 1.250000 -100 1.000000 -101 1.255000 -102 1.000000 -103 1.260000 -104 1.000000 -105 1.265000 -106 1.000000 -107 1.270000 -108 1.000000 -109 1.275000 -110 1.000000 -111 1.280000 -112 1.000000 -113 1.285000 -114 1.000000 -115 1.290000 -116 1.000000 -117 1.295000 -118 1.000000 -119 1.300000 -120 1.000000 -121 1.305000 -122 1.000000 -123 1.310000 -124 1.000000 -125 1.315000 -126 1.000000 -127 1.320000 -128 1.000000 -129 1.325000 -130 1.000000 -131 1.330000 -132 1.000000 -133 1.335000 -134 1.000000 -135 1.340000 -136 1.000000 -137 1.345000 -138 1.000000 -139 1.350000 -140 1.000000 -141 1.355000 -142 1.000000 -143 1.360000 -144 1.000000 -145 1.365000 -146 1.000000 -147 1.370000 -148 1.000000 -149 1.375000 -150 1.000000 -151 1.380000 -152 1.000000 -153 1.385000 -154 1.000000 -155 1.390000 -156 1.000000 -157 1.395000 -158 1.000000 -159 1.400000 -160 1.000000 -161 1.405000 -162 1.000000 -163 1.410000 -164 1.000000 -165 1.415000 -166 1.000000 -167 1.420000 -168 1.000000 -169 1.425000 -170 1.000000 -171 1.430000 -172 1.000000 -173 1.435000 -174 1.000000 -175 1.440000 -176 1.000000 -177 1.445000 -178 1.000000 -179 1.450000 -180 1.000000 -181 1.455000 -182 1.000000 -183 1.460000 -184 1.000000 -185 1.465000 -186 1.000000 -187 1.470000 -188 1.000000 -189 1.475000 -190 1.000000 -191 1.480000 -192 1.000000 -193 1.485000 -194 1.000000 -195 1.490000 -196 1.000000 -197 1.495000 -198 1.000000 -199 1.500000 -200 1.000000 -201 1.505000 -202 1.000000 -203 1.510000 -204 1.000000 -205 1.515000 -206 1.000000 -207 1.520000 -208 1.000000 -209 1.525000 -210 1.000000 -211 1.530000 -212 1.000000 -213 1.535000 -214 1.000000 -215 1.540000 -216 1.000000 -217 1.545000 -218 1.000000 -219 1.550000 -220 1.000000 -221 1.555000 -222 1.000000 -223 1.560000 -224 1.000000 -225 1.565000 -226 1.000000 -227 1.570000 -228 1.000000 -229 1.575000 -230 1.000000 -231 1.580000 -232 1.000000 -233 1.585000 -234 1.000000 -235 1.590000 -236 1.000000 -237 1.595000 -238 1.000000 -239 1.600000 -240 1.000000 -241 1.605000 -242 1.000000 -243 1.610000 -244 1.000000 -245 1.615000 -246 1.000000 -247 1.620000 -248 1.000000 -249 1.625000 -250 1.000000 -251 1.630000 -252 1.000000 -253 1.635000 -254 1.000000 -255 1.640000 -256 1.000000 -257 1.645000 -258 1.000000 -259 1.650000 -260 1.000000 -261 1.655000 -262 1.000000 -263 1.660000 -264 1.000000 -265 1.665000 -266 1.000000 -267 1.670000 -268 1.000000 -269 1.675000 -270 1.000000 -271 1.680000 -272 1.000000 -273 1.685000 -274 1.000000 -275 1.690000 -276 1.000000 -277 1.695000 -278 1.000000 -279 1.700000 -280 1.000000 -281 1.705000 -282 1.000000 -283 1.710000 -284 1.000000 -285 1.715000 -286 1.000000 -287 1.720000 -288 1.000000 -289 1.725000 -290 1.000000 -291 1.730000 -292 1.000000 -293 1.735000 -294 1.000000 -295 1.740000 -296 1.000000 -297 1.745000 -298 1.000000 -299 1.750000 -300 1.000000 -301 1.755000 -302 1.000000 -303 1.760000 -304 1.000000 -305 1.765000 -306 1.000000 -307 1.770000 -308 1.000000 -309 1.775000 -310 1.000000 -311 1.780000 -312 1.000000 -313 1.785000 -314 1.000000 -315 1.790000 -316 1.000000 -317 1.795000 -318 1.000000 -319 1.800000 -320 1.000000 -321 1.805000 -322 1.000000 -323 1.810000 -324 1.000000 -325 1.815000 -326 1.000000 -327 1.820000 -328 1.000000 -329 1.825000 -330 1.000000 -331 1.830000 -332 1.000000 -333 1.835000 -334 1.000000 -335 1.840000 -336 1.000000 -337 1.845000 -338 1.000000 -339 1.850000 -340 1.000000 -341 1.855000 -342 1.000000 -343 1.860000 -344 1.000000 -345 1.865000 -346 1.000000 -347 1.870000 -348 1.000000 -349 1.875000 -350 1.000000 -351 1.880000 -352 1.000000 -353 1.885000 -354 1.000000 -355 1.890000 -356 1.000000 -357 1.895000 -358 1.000000 -359 1.900000 -360 1.000000 -361 1.905000 -362 1.000000 -363 1.910000 -364 1.000000 -365 1.915000 -366 1.000000 -367 1.920000 -368 1.000000 -369 1.925000 -370 1.000000 -371 1.930000 -372 1.000000 -373 1.935000 -374 1.000000 -375 1.940000 -376 1.000000 -377 1.945000 -378 1.000000 -379 1.950000 -380 1.000000 -381 1.955000 -382 1.000000 -383 1.960000 -384 1.000000 -385 1.965000 -386 1.000000 -387 1.970000 -388 1.000000 -389 1.975000 -390 1.000000 -391 1.980000 -392 1.000000 -393 1.985000 -394 1.000000 -395 1.990000 -396 1.000000 -397 1.995000 -398 1.000000 -399 2.000000 -end solution B -||X-Xtrue||/||X|| = 7.771561e-16 diff --git a/mtx/test/sparse_data/star_matrix.dat b/mtx/test/sparse_data/star_matrix.dat deleted file mode 100644 index dddc73eee..000000000 --- a/mtx/test/sparse_data/star_matrix.dat +++ /dev/null @@ -1,4248 +0,0 @@ - 206 3832 - i j mtx(i,j) - 1 1 2.3719135771164666D+01 - 2 1 4.4120318337048175D+03 - 3 1 1.0572251789250504D+16 - 4 1 6.2839872547792037D+00 - 6 1 -9.5866245993189932D+03 - 7 1 -2.2305187799293855D+06 - 8 1 9.0243989981252191D-04 - 9 1 2.0855142728347466D-10 - 10 1 -3.4900626233890525D+05 - 11 1 -3.6327952413670981D-10 - 12 1 -4.7199850638580267D-13 - 13 1 5.5444316107129311D-08 - 14 1 9.9544277805059798D-08 - 15 1 -1.8617396043586098D-15 - 16 1 3.7552098418208900D-16 - 17 1 8.9409542598303318D-09 - 18 1 -9.8712249035058251D-08 - 19 1 -1.7009257628147301D+02 - 20 1 3.8735171564601406D-02 - 21 1 1.8154993243166595D+02 - 22 1 -2.0949680947084143D-03 - 23 1 4.4879301649655215D-02 - 24 1 1.2559042862727331D-09 - 25 1 4.4388537852754768D-05 - 26 1 -4.0987061929042750D+02 - 27 1 2.6744858575099224D+00 - 28 1 -5.0586226871421573D-08 - 29 1 1.9214712792494722D-14 - 30 1 2.8117437015931951D+03 - 31 1 1.3284087789030977D-04 - 32 1 5.3148273312892324D-04 - 33 1 2.3049968083975309D-10 - 34 1 1.4914410622438717D-05 - 35 1 3.4844884130912227D+01 - 36 1 2.0105475442948415D-03 - 37 1 -3.7375523814874858D-04 - 38 1 6.7425195014998111D-10 - 39 1 1.0860856855787828D+00 - 40 1 3.0236906111313433D-03 - 41 1 -2.8331839561516720D-01 - 42 1 -1.4306462011283905D-04 - 43 1 8.1791055492242935D-03 - 44 1 -2.0619965452444426D+03 - 45 1 3.5691442792423551D+01 - 46 1 -2.1124583862513056D+01 - 47 1 -4.1350606555308716D-04 - 48 1 2.9124985410412388D+04 - 49 1 1.7914240298641413D+01 - 50 1 -6.3738283506422295D+02 - 51 1 -1.3673711598480748D+01 - 52 1 2.4656818912745093D+00 - 53 1 -3.6614504647652993D+01 - 54 1 -3.6571849061972953D+03 - 55 1 -2.0952074271174144D+04 - 56 1 -6.8730791501339951D+01 - 57 1 -1.5103401098461131D-01 - 58 1 5.8679421248197539D-08 - 59 1 3.6987711439244269D+05 - 60 1 2.5281527581508428D+04 - 61 1 -1.0636821582619905D+04 - 62 1 -5.6993876651294511D+02 - 63 1 1.4919242262029127D-03 - 64 1 1.7622488115073158D+03 - 65 1 6.6144137610998015D+01 - 66 1 1.6212811882444355D+03 - 67 1 -4.1450073716010185D+04 - 68 1 -8.2454765157078498D+02 - 69 1 -5.4141570363273308D+00 - 70 1 6.0236617342521786D-06 - 71 1 1.2812176180834671D+05 - 72 1 -9.9605582968906710D+03 - 73 1 -1.3817422302849131D+03 - 74 1 7.7273529674010766D-03 - 75 1 1.5076688346403317D+00 - 76 1 4.2145896938506331D+02 - 77 1 2.2379790701947572D+03 - 78 1 -2.9418865300247890D+04 - 79 1 9.0593811446766637D+01 - 80 1 -4.6890116339109050D-01 - 81 1 9.8407819388183052D-06 - 82 1 8.6541801999224946D+04 - 83 1 -2.3189990637915653D+02 - 84 1 -2.2766985355319925D+01 - 85 1 5.6936159983083940D-04 - 86 1 -1.5400639856205772D-05 - 87 1 4.0395460785883642D-10 - 88 1 1.2293809303655931D-01 - 89 1 1.0064134926989480D+02 - 90 1 3.1228592597527213D+03 - 91 1 -2.8986487211999254D+04 - 92 1 -3.8299149871926389D+01 - 93 1 -2.6457215784488266D+01 - 94 1 -3.8054857314396323D-03 - 95 1 -1.9794075461867323D-04 - 96 1 -8.8858270179068046D-09 - 97 1 -1.3823994736488039D-10 - 98 1 7.7590661563791487D-16 - 99 1 3.6350228407230810D+04 - 100 1 1.4274152292714577D+01 - 101 1 -1.2168242205860167D+02 - 102 1 -5.0643493004228268D-01 - 103 1 -1.1764435258948733D-01 - 104 1 -5.7608935307477912D-05 - 105 1 -3.2389769030196914D-06 - 106 1 6.1331135133367376D-11 - 107 1 2.0353246157451315D-17 - 108 1 3.0289694239863840D-05 - 109 1 5.0291883426172632D+02 - 110 1 5.6291324119271529D+01 - 111 1 -2.1856042996825170D+04 - 112 1 -5.6469020780147530D+03 - 113 1 -1.4527539499540457D+04 - 114 1 -2.4905058208547729D+01 - 115 1 -5.7146359582122761D+00 - 116 1 3.2314059213507803D-04 - 117 1 3.9489812047949541D-10 - 118 1 6.4871168196980771D-15 - 119 1 3.7411489521761156D-22 - 120 1 1.9679321538644581D+05 - 121 1 2.8366445640753695D+03 - 122 1 -2.0583195033423934D+04 - 123 1 -1.3477258447246559D+03 - 124 1 -1.6133607882771175D+03 - 125 1 5.1007042764566168D-01 - 126 1 -6.2224605877906261D-06 - 127 1 6.1991164329685742D-10 - 128 1 2.3489382496217847D-16 - 129 1 6.1722780828811358D-22 - 130 1 6.7407489987507098D-05 - 131 1 6.7676358060222685D+02 - 132 1 2.6189549017585896D+03 - 133 1 -1.0744704206870187D+04 - 134 1 -2.2639965147012099D+04 - 135 1 -2.1943754045399492D+04 - 136 1 -1.2470270710453744D+03 - 137 1 -5.5807914715441377D+01 - 138 1 5.9720686235669078D-03 - 139 1 1.5341835491291259D-09 - 140 1 1.8488259226466168D-13 - 141 1 1.5209063608880086D-20 - 142 1 5.9573233445134421D+05 - 143 1 4.9335389112359619D+04 - 144 1 -3.2708901916537238D+03 - 145 1 -3.8866380301340803D+04 - 146 1 -1.1626190174483381D+04 - 147 1 4.2017367228370874D+00 - 148 1 1.4005511213796603D-03 - 149 1 2.7069094627201293D+03 - 150 1 7.6096371136144426D+03 - 151 1 -4.4261234758674664D+03 - 152 1 -9.6626508063663987D+03 - 153 1 -1.2944879592673342D+04 - 154 1 1.7679210895306003D+03 - 155 1 -1.0099558042345458D+02 - 156 1 3.3660253699908348D-02 - 157 1 -1.3272044235927840D-07 - 158 1 1.7668110763617805D-11 - 159 1 2.6598189361952720D-18 - 160 1 4.4887216271121731D-23 - 161 1 8.3374513431906806D-31 - 162 1 5.4609636158721362D-37 - 163 1 1.6010648955910737D-45 - 164 1 4.6436485491329693D+05 - 165 1 1.6724932312047653D+05 - 166 1 4.9766907711227977D+04 - 167 1 5.1633881053920470D+02 - 168 1 -1.5440835848956269D+03 - 169 1 5.8847552657981184D-01 - 170 1 -2.0483850384263124D-04 - 171 1 1.4254792768497028D-07 - 172 1 3.6342863688955168D-13 - 173 1 3.8675302221141777D-17 - 174 1 1.6078844235410447D-23 - 175 1 7.6707108728576261D-29 - 176 1 1.9780471456929379D-36 - 177 1 2.5613945780932649D-03 - 178 1 1.4896007274440256D+03 - 179 1 9.4271481099271059D+03 - 180 1 -3.1652467648885340D+02 - 181 1 -3.0058848179877573D+03 - 182 1 -8.0187046174516336D+03 - 183 1 5.4089168685794641D+02 - 184 1 -1.3466790557270347D+01 - 185 1 8.8262084016152761D-03 - 186 1 -1.3127680297962338D-06 - 187 1 3.4793957206708794D-10 - 188 1 -7.6720164968143553D-17 - 189 1 6.9667563496060511D-20 - 190 1 1.8026994123663781D-26 - 191 1 1.9256188965435410D+06 - 192 1 9.3754438049869088D+04 - 193 1 1.6417298793223751D+05 - 194 1 2.0548524747431358D+02 - 195 1 1.1684097674687699D+01 - 196 1 1.2257951366370619D-02 - 197 1 -1.7358662801428459D-05 - 198 1 2.6374059445678370D-08 - 199 1 8.0580872172664713D-08 - 200 1 4.3917523316951366D+00 - 201 1 2.8902734529069100D+01 - 202 1 3.9326033600966025D+02 - 203 1 5.8833040567658976D+00 - 204 1 2.9460941040015474D+00 - 205 1 2.4299694030173385D-02 - 206 1 7.4808292215749298D-05 - 1 2 6.3204659583459328D+00 - 2 2 9.4531902525901081D+04 - 3 2 -2.1660771066473120D+17 - 6 2 8.7926169005577418D+05 - 7 2 5.1236302325540088D+07 - 8 2 -9.3540908496559157D-03 - 9 2 -3.1462743803453134D-07 - 10 2 -3.8633212772999309D+07 - 11 2 4.8355744734095064D-08 - 12 2 -1.5819496970377054D-11 - 13 2 -4.0423197691592371D-07 - 14 2 1.8415552941693120D-06 - 15 2 5.4278112666090413D-13 - 16 2 -8.8492633384430589D-16 - 17 2 1.5357733920020198D-06 - 18 2 4.3927959693385656D-06 - 19 2 1.4942691457510800D+03 - 20 2 -4.1076483813081915D-01 - 21 2 -1.5840168660816155D+03 - 22 2 -2.2086210668567588D-01 - 23 2 1.6922402150757705D+01 - 24 2 -1.1492648178086197D-08 - 25 2 -6.6186394874207530D-04 - 26 2 1.6902501014884074D+03 - 27 2 -4.6870975027683954D+01 - 28 2 2.1192160090624974D-05 - 29 2 1.8570087043214430D-13 - 30 2 -1.1263166591927946D+04 - 31 2 -1.6024242298580415D-03 - 32 2 1.8448653060561395D-02 - 33 2 9.9486472888465683D-09 - 34 2 -3.7650061473249614D-05 - 35 2 -4.8504420126470728D+02 - 36 2 3.4043929973952175D-01 - 37 2 1.7272004226592400D-03 - 38 2 -1.4960891899262937D-08 - 39 2 -7.9472718211354545D+00 - 40 2 -6.4507356331036006D-02 - 41 2 3.6593148721116684D+01 - 42 2 2.0847299591802669D-02 - 43 2 7.5417747160347959D-01 - 44 2 8.9892213607864433D+03 - 45 2 -1.2365974163652018D+03 - 46 2 5.6182257525156047D+02 - 47 2 2.4496203998230406D-02 - 48 2 -2.6197872554144013D+05 - 49 2 -3.6397211499883633D+02 - 50 2 2.6302615814294096D+05 - 51 2 1.3413397806449673D+03 - 52 2 -2.9527213143681632D+01 - 53 2 -3.8889663014744192D+03 - 54 2 2.8342432790699851D+04 - 55 2 5.0767923274113639D+05 - 56 2 9.2109295492109538D+02 - 57 2 -5.3259041524270421D+00 - 58 2 -1.0552961311274021D-06 - 59 2 -6.9152551918870322D+06 - 60 2 3.5048028857228728D+06 - 61 2 6.6755769346654217D+05 - 62 2 1.7268588810033580D+02 - 63 2 2.3656483313472935D-03 - 64 2 -3.5752470570514313D+04 - 65 2 -2.4763329390104373D+03 - 66 2 -5.3025307393418749D+04 - 67 2 8.9084581029940897D+05 - 68 2 -6.8851519308226380D+03 - 69 2 2.0391333134367610D+01 - 70 2 -1.0467217573320065D-04 - 71 2 -2.3977213312632637D+06 - 72 2 1.2222064009963482D+05 - 73 2 2.0769040218732385D+04 - 74 2 -1.3000039616066050D-01 - 75 2 1.4156174722235900D+02 - 76 2 -1.0961527929991780D+04 - 77 2 -5.1427464475862507D+04 - 78 2 6.2182923181768623D+05 - 79 2 -4.6977991628914706D+03 - 80 2 9.2682066498745552D+00 - 81 2 -1.9436256877948508D-04 - 82 2 -1.8120241931522118D+06 - 83 2 8.4316340386767879D+03 - 84 2 1.1473102604800911D+03 - 85 2 9.9586739289190720D-02 - 86 2 2.6347046245493938D-04 - 87 2 1.5809186453905035D-09 - 88 2 1.1297581158776211D+01 - 89 2 -2.6333362379455830D+03 - 90 2 -9.7530610957106765D+04 - 91 2 3.9966527510009118D+05 - 92 2 -8.7740723280681095D+01 - 93 2 4.7571147984003341D+02 - 94 2 -1.4056090488703835D-01 - 95 2 6.1404518172900133D-04 - 96 2 4.4990130800409140D-08 - 97 2 -1.2195912693271475D-09 - 98 2 -1.6675602072280123D-14 - 99 2 -5.0018534043131332D+05 - 100 2 5.4940796016704189D+02 - 101 2 3.1016330774349644D+03 - 102 2 2.5777871893138858D+01 - 103 2 -1.1392850182169203D+00 - 104 2 3.5499386589325495D-03 - 105 2 5.2962627548971053D-05 - 106 2 -1.2782215651212574D-09 - 107 2 -5.6630884343255235D-16 - 108 2 1.9235961605842068D-03 - 109 2 -9.2498254674007876D+03 - 110 2 -3.7359922947209299D+01 - 111 2 2.1657960587277243D+05 - 112 2 9.9406288584465510D+04 - 113 2 2.5957790537710971D+05 - 114 2 -6.8624672536687990D+02 - 115 2 1.0849515353929289D+02 - 116 2 -8.6504147914979630D-03 - 117 2 -2.3208010425862793D-08 - 118 2 -1.4758642678936914D-13 - 119 2 -1.0940408114761259D-20 - 120 2 -1.9293414123884477D+06 - 121 2 -4.4947330279569360D+04 - 122 2 6.7257497002453113D+05 - 123 2 2.5773874722480032D+04 - 124 2 -1.4149250621349543D+03 - 125 2 -7.9750913052153987D+00 - 126 2 2.2262972769642334D-04 - 127 2 -1.4757248895527181D-08 - 128 2 -7.1455098620317338D-15 - 129 2 -1.0092472508111473D-20 - 130 2 4.2265070196581388D-03 - 131 2 -5.9647984197357264D+03 - 132 2 -8.1786672961464581D+02 - 133 2 1.6900414629703754D+05 - 134 2 3.7288405478929152D+05 - 135 2 4.2390235717168363D+05 - 136 2 -1.1562857151806509D+05 - 137 2 -7.7351133511596686D+02 - 138 2 -1.4107297124184628D-01 - 139 2 -3.1301467054177219D-07 - 140 2 -3.6317544295230703D-12 - 141 2 -5.1815550636731422D-19 - 142 2 -9.2943184915086664D+06 - 143 2 -8.1864238565354224D+05 - 144 2 1.8382124437021255D+05 - 145 2 1.0457344259510709D+06 - 146 2 7.4865085102970857D+04 - 147 2 -8.8627798393793569D+01 - 148 2 1.0921143361517292D-01 - 149 2 -1.1175446001966675D+04 - 150 2 -6.6438989930746058D+04 - 151 2 6.9706284088905799D+04 - 152 2 1.2493970558749638D+05 - 153 2 2.5731935822973619D+05 - 154 2 1.1194610793929958D+03 - 155 2 -1.8749608699568378D+02 - 156 2 -8.2767859086106854D-01 - 157 2 -8.9641571715249955D-06 - 158 2 -3.9793076907193081D-10 - 159 2 -1.3258974566572778D-16 - 160 2 -8.0356001682674338D-22 - 161 2 -2.8719674565981237D-29 - 162 2 -6.5008570935600785D-36 - 163 2 -5.4319104416342409D-44 - 164 2 -7.6252747678650999D+06 - 165 2 -2.6178382769931140D+06 - 166 2 -9.7011933125105628D+05 - 167 2 2.0090704648617309D+05 - 168 2 -4.7899925406459879D+03 - 169 2 -1.1803102838708057D+01 - 170 2 -7.3840388775358945D-03 - 171 2 -2.2297350071025956D-06 - 172 2 -2.5135987601430021D-11 - 173 2 -5.4588282018138022D-16 - 174 2 -6.1991232032906428D-22 - 175 2 -8.8734782060698727D-28 - 176 2 -7.4979923457858892D-35 - 177 2 2.2623209679409817D-01 - 178 2 -1.8383257605709412D+04 - 179 2 -1.6929893744863800D+05 - 180 2 -2.4747626067705929D+04 - 181 2 -2.4493501180960233D+04 - 182 2 1.1569991019782945D+05 - 183 2 -1.7142831209702828D+04 - 184 2 2.1506606975054027D+02 - 185 2 -1.3491350812493708D-01 - 186 2 -2.4616522977394652D-05 - 187 2 -7.5406862044452905D-09 - 188 2 -4.4731136257171716D-14 - 189 2 -1.5259888554483410D-18 - 190 2 -6.2259827248389832D-25 - 191 2 -2.0884713675347898D+07 - 192 2 -1.0163889503471813D+06 - 193 2 -2.4065013533006371D+06 - 194 2 -2.5872717940630255D+03 - 195 2 -2.1290312154289566D+02 - 196 2 -2.3822936758758681D-01 - 197 2 -3.3530753282876388D-04 - 198 2 -4.6967248307980417D-07 - 199 2 7.4863217083051336D-06 - 200 2 -7.0793596671122160D+01 - 201 2 -4.9756158070836199D+02 - 202 2 -7.7650229785539823D+03 - 203 2 -1.4296335011119561D+02 - 204 2 -6.3030005517587007D+01 - 205 2 -6.4914209865952177D-01 - 206 2 -2.6353934169994989D-03 - 2 3 -2.0924989505639528D+03 - 3 3 -9.4012092819156474D+05 - 1 4 8.8480002990390886D-03 - 2 4 1.1991029412985133D+05 - 4 4 1.4326207200430629D+01 - 5 4 4.0750573460469202D+00 - 1 5 -2.2888862610284327D-04 - 5 5 -1.5833715128681231D-03 - 3 6 4.2754390486398704D+20 - 6 6 -9.8158616504257355D+10 - 7 6 4.7968903006323067D+10 - 8 6 1.9124700835105159D+03 - 9 6 -2.0563105162917534D-08 - 10 6 3.4936788705349083D+10 - 11 6 3.7197514704991576D-10 - 12 6 1.1778761905260916D-05 - 13 6 -4.7828946080186029D-08 - 14 6 2.1130802444898575D-01 - 15 6 6.1370399571527743D-08 - 16 6 -1.1284756117812165D-18 - 17 6 3.4576393035120088D-04 - 18 6 2.4883497980987461D+00 - 19 6 -1.4071897749658630D+04 - 20 6 8.7884237791570180D+04 - 21 6 -8.4607011096420717D+00 - 22 6 2.5719320052686157D+01 - 23 6 1.3047936704338701D+02 - 24 6 2.6658228088414235D-03 - 25 6 -1.6797330636563456D+02 - 26 6 -8.2939714474783407D+05 - 27 6 5.6667949956900552D+06 - 28 6 2.5467928826177286D+00 - 29 6 6.6652598062177372D-08 - 30 6 -6.5819423066505138D+01 - 31 6 4.5855062747572611D-01 - 32 6 9.3222004895278388D+01 - 33 6 1.0484301165028364D-03 - 34 6 -3.6063893997882591D-03 - 35 6 1.0588153590171152D+04 - 36 6 6.6678375835835584D+04 - 37 6 2.5618348286504124D+03 - 38 6 8.5433250643780229D-03 - 39 6 -7.6750471713156694D+00 - 40 6 -4.4244927212011618D+02 - 41 6 1.2422848442071502D+05 - 42 6 2.3100771178287414D+03 - 43 6 -5.5671839865700313D+04 - 44 6 -7.7596627431887137D+06 - 45 6 1.3130219999237995D+08 - 46 6 8.4429912916766871D+06 - 47 6 1.0773245100648503D+04 - 48 6 -1.1976026692409632D+05 - 49 6 -2.4500250651094489D+05 - 50 6 1.2297593880085085D+08 - 51 6 1.4324772536590838D+08 - 52 6 -2.1619035005490975D+06 - 53 6 -3.7467654918010337D+06 - 54 6 6.3013283006412191D+09 - 55 6 1.1037690569854138D+09 - 56 6 8.0144977400433564D+08 - 57 6 1.3581489705920084D+06 - 58 6 1.3108989925281456D-01 - 59 6 -6.2573410961225634D+09 - 60 6 -1.6122159104408566D+07 - 61 6 9.4810884405211365D+10 - 62 6 4.8896559846489439D+09 - 63 6 8.8680201442380639D+03 - 64 6 -1.6556503950565568D+08 - 65 6 -3.7518598474111877D+07 - 66 6 2.9025673747301335D+09 - 67 6 5.6571599376123689D+07 - 68 6 7.2870283859360256D+09 - 69 6 1.8559393978058111D+07 - 70 6 1.3373037338306091D+01 - 71 6 -1.9703876296106765D+08 - 72 6 6.4983080787665543D+10 - 73 6 7.1752205593785172D+09 - 74 6 2.5011950855886989D+04 - 75 6 -1.1200317831921687D+07 - 76 6 -1.0265564653015520D+08 - 77 6 6.9407986297909510D+08 - 78 6 5.1108088441115925D+06 - 79 6 9.7273133504952645D+08 - 80 6 4.1481375881504011D+05 - 81 6 3.7866886735241849D+01 - 82 6 -5.0324357641875833D+07 - 83 6 2.0176463389077783D+09 - 84 6 1.0660930268760641D+08 - 85 6 2.1027924207988253D+04 - 86 6 1.0402792497648605D+02 - 87 6 3.2243090290088772D-03 - 88 6 -8.4732444175690517D+05 - 89 6 -2.8787274968833484D+07 - 90 6 5.3035724373001928D+09 - 91 6 5.1205640880649760D+06 - 92 6 8.0496041063366801D+07 - 93 6 1.4067711511049706D+06 - 94 6 4.6610576903756766D+04 - 95 6 3.6233082840370827D+02 - 96 6 1.0315407350563445D-01 - 97 6 6.7748378424563761D-04 - 98 6 1.6817214782376909D-09 - 99 6 -4.0360738867199473D+07 - 100 6 9.7724277905935645D+07 - 101 6 1.4840274440440086D+08 - 102 6 3.5083463547078976D+06 - 103 6 7.0425992563488241D+05 - 104 6 5.4462196823076874D+02 - 105 6 1.9575888605568625D+01 - 106 6 1.4032169720421949D-04 - 107 6 5.3679300509190690D-11 - 108 6 -1.5417955668413134D+02 - 109 6 -1.2498171784507740D+08 - 110 6 -1.3640674311753243D+08 - 111 6 -5.8875036696013249D+07 - 112 6 1.5382270549413960D+09 - 113 6 4.2098700099920380D+08 - 114 6 1.5092282449162623D+08 - 115 6 2.3306289560692143D+06 - 116 6 7.9159138235188277D+02 - 117 6 2.7084269750078066D-03 - 118 6 1.3923758486312836D-08 - 119 6 8.9276350401735452D-16 - 120 6 -1.0084217140425054D+09 - 121 6 1.4985310066883945D+09 - 122 6 1.0038446703894463D+10 - 123 6 5.6580839350854263D+09 - 124 6 7.1848506674791269D+09 - 125 6 1.4150353107931640D+06 - 126 6 7.6208584153391939D+01 - 127 6 1.3441116461967223D-03 - 128 6 8.1715548559017480D-10 - 129 6 1.3101290008904471D-15 - 130 6 -3.7745475001100647D+02 - 131 6 -1.9780843086079624D+09 - 132 6 -7.2238843355399046D+09 - 133 6 -8.8314363814182073D+07 - 134 6 4.5390448396745644D+09 - 135 6 1.5474454714265525D+08 - 136 6 2.4120669068760448D+10 - 137 6 1.8462724655617282D+08 - 138 6 1.3430442597622907D+04 - 139 6 3.9504401882171726D-02 - 140 6 3.9180724698340332D-07 - 141 6 3.2231543478031828D-14 - 142 6 -8.2031516622681580D+09 - 143 6 -1.4911463954249642D+09 - 144 6 4.1418167667900431D+08 - 145 6 2.0533657367610757D+11 - 146 6 5.2495852968165894D+10 - 147 6 1.1031124915575096D+07 - 148 6 -7.1562409991042832D+03 - 149 6 -5.7529726291638145D+09 - 150 6 -1.0099846338693119D+10 - 151 6 -9.9555958299981207D+07 - 152 6 3.4097726895313239D+09 - 153 6 3.4479495736463898D+08 - 154 6 6.1097618512056526D+10 - 155 6 1.6780562065163085D+08 - 156 6 7.6627592147630770D+04 - 157 6 1.6256627342890084D+00 - 158 6 3.7710396912049509D-05 - 159 6 1.3742903025705597D-11 - 160 6 9.5248510881145112D-17 - 161 6 1.8925276945811224D-24 - 162 6 1.1574580722691861D-30 - 163 6 3.4654106532292893D-39 - 164 6 -6.2458676728766270D+09 - 165 6 -2.9573258613767095D+09 - 166 6 6.5137358232193089D+08 - 167 6 5.9099243402487091D+10 - 168 6 4.9470839372148714D+09 - 169 6 2.0091342004867948D+06 - 170 6 1.7695943335157926D+03 - 171 6 3.0835327446242733D-01 - 172 6 2.0789869881986645D-06 - 173 6 8.2260593684556020D-11 - 174 6 3.9066795461917642D-17 - 175 6 1.6263801812835098D-22 - 176 6 4.3126053143196484D-30 - 177 6 -1.3583228450528984D+04 - 178 6 -2.1799115586968155D+09 - 179 6 -5.7738018387514038D+09 - 180 6 -1.4854056509120819D+08 - 181 6 4.9216735205347481D+09 - 182 6 3.0525422719833914D+07 - 183 6 1.9274413908988070D+09 - 184 6 2.5304879221878797D+06 - 185 6 2.2023745765059255D+04 - 186 6 3.8665845879882030D+00 - 187 6 7.5357875474321679D-04 - 188 6 4.8167926951647160D-09 - 189 6 1.4764099401626250D-13 - 190 6 3.8203192753721889D-20 - 191 6 -2.6369130288669446D+08 - 192 6 -6.6586325120443434D+07 - 193 6 -2.5243069036338153D+08 - 194 6 1.3648137145955507D+07 - 195 6 4.3920622559397930D+05 - 196 6 3.3069854229738776D+04 - 197 6 7.1356458902496328D+01 - 198 6 5.7563925316283654D-02 - 199 6 -4.2291836988993925D-01 - 200 6 -1.1494897007328240D+05 - 201 6 -1.9102217009643072D+05 - 202 6 -8.1527719626421090D+06 - 203 6 -8.5905135022966875D+04 - 204 6 -4.7633749182093081D+04 - 205 6 5.0687010131103329D+04 - 206 6 8.3042354755698355D+01 - 3 7 2.2044170447316605D+17 - 6 7 5.2149201820773177D+05 - 7 7 -7.0868066762800872D+07 - 8 7 2.0825592816249214D-02 - 9 7 4.9255740133360230D-09 - 10 7 1.2867531903341073D+08 - 11 7 -8.1138251357903014D-09 - 12 7 -1.3188823253950168D-10 - 13 7 1.1804361219124186D-06 - 14 7 -3.5198793715546896D-09 - 15 7 -7.1708209768082781D-13 - 16 7 8.1239981406947204D-15 - 17 7 3.2097618979407221D-07 - 18 7 -2.7011211996234667D-05 - 19 7 -3.4969074050556305D+03 - 20 7 -2.9872001274543689D-03 - 21 7 3.8084470430424403D+03 - 22 7 7.5855276928288851D-01 - 23 7 -1.8332620363742468D+01 - 24 7 -6.6897222476897019D-11 - 25 7 2.6156301567721897D-03 - 26 7 -8.2477099345125698D+03 - 27 7 -9.2135444336283201D-01 - 28 7 -5.5261907791785921D-05 - 29 7 -2.4418971437258891D-13 - 30 7 5.7249219097160414D+04 - 31 7 2.1178723432306872D-03 - 32 7 -7.1218375704958327D-03 - 33 7 -1.6377662675045287D-08 - 34 7 1.9426832372284190D-04 - 35 7 2.2484379769039062D+01 - 36 7 -9.9276282806914182D-02 - 37 7 -1.7518492507386445D-02 - 38 7 -6.6089560686741607D-08 - 39 7 2.1481514817135604D+01 - 40 7 1.2871698450314348D-01 - 41 7 -4.3009369706027108D+01 - 42 7 -2.5623477509897540D-02 - 43 7 6.7642500439308598D-02 - 44 7 -2.9874284605058409D+02 - 45 7 -3.0684193163420133D+02 - 46 7 -3.7579800563966745D+02 - 47 7 -1.0554501225208369D-01 - 48 7 5.6004843367652909D+05 - 49 7 3.5752141972972953D+02 - 50 7 -6.3805383069184166D+05 - 51 7 -1.6121468945080653D+03 - 52 7 6.4138332933955397D+01 - 53 7 1.3086232295384229D+04 - 54 7 -8.7944840221821200D+04 - 55 7 -3.8880619673660694D+05 - 56 7 -8.3573041276519216D+03 - 57 7 -1.4809912223401161D+01 - 58 7 -5.9430901765432516D-08 - 59 7 6.9829952283593006D+06 - 60 7 -1.1153971111083398D+07 - 61 7 -1.2431706274203793D+06 - 62 7 -5.9217753596324728D+04 - 63 7 -5.2982387290336684D-02 - 64 7 3.3285804335214903D+04 - 65 7 3.4174130168941401D+03 - 66 7 2.8535674593718904D+03 - 67 7 -7.6359532747074566D+05 - 68 7 -7.7748119245358379D+04 - 69 7 -2.6281106584786926D+02 - 70 7 -5.2450316803854503D-06 - 71 7 1.3634718273074059D+06 - 72 7 -8.3452564510883298D+05 - 73 7 -1.3431172121645609D+05 - 74 7 -7.8658518970337724D-02 - 75 7 9.5286280991850546D+01 - 76 7 7.6347886885236794D+03 - 77 7 1.8821382154958999D+04 - 78 7 -5.2599405921631516D+05 - 79 7 -6.5666489053129408D+03 - 80 7 -1.6850199203271426D+01 - 81 7 -1.4256074970071903D-04 - 82 7 1.4773825930833104D+06 - 83 7 -2.3652994647488846D+04 - 84 7 -2.8873640164296212D+03 - 85 7 -1.6696527101868411D-01 - 86 7 -1.1380723642641494D-03 - 87 7 -1.9608206914753683D-08 - 88 7 7.3614610195286962D+00 - 89 7 2.0382707165498753D+03 - 90 7 4.6581534051998196D+03 - 91 7 -5.4363184866565454D+05 - 92 7 -1.3222197470685287D+03 - 93 7 -4.6929063382284659D+02 - 94 7 -4.4645071144413578D-01 - 95 7 -6.3833662265123390D-03 - 96 7 -9.9606380745551821D-07 - 97 7 -7.9240436180979899D-09 - 98 7 -3.0539919475928742D-16 - 99 7 6.1819386798333051D+05 - 100 7 -7.0380577231366556D+02 - 101 7 -3.5013463026003515D+03 - 102 7 -3.6980397126004370D+01 - 103 7 -7.6922459756638979D+00 - 104 7 -5.3769384184745965D-03 - 105 7 -2.1323301534410368D-04 - 106 7 -8.3462875795447134D-11 - 107 7 -8.5094589668686055D-17 - 108 7 1.4642336917821386D-03 - 109 7 1.4055004539098757D+03 - 110 7 1.9488553944254024D+03 - 111 7 -3.6842665827059891D+05 - 112 7 -1.0757404613374370D+05 - 113 7 -2.4859351030329295D+05 - 114 7 -1.6227892440785240D+03 - 115 7 -1.1503933235139941D+02 - 116 7 -8.5067987825180940D-04 - 117 7 -1.4910666856780301D-08 - 118 7 -1.4031436085814880D-15 - 119 7 -7.9610582639672184D-22 - 120 7 3.3305842221591505D+06 - 121 7 3.6770325992949423D+04 - 122 7 -4.2071331522832019D+05 - 123 7 -6.7013192415708269D+04 - 124 7 -8.3461118838793438D+04 - 125 7 -2.6296295182025826D+00 - 126 7 -7.0424186194658202D-04 - 127 7 -2.3935862025523815D-10 - 128 7 -2.5145126010994124D-15 - 129 7 -1.6430943523459479D-23 - 130 7 3.9969110203688313D-03 - 131 7 2.6865431975479794D+04 - 132 7 1.0046631080819492D+05 - 133 7 -1.7634116686933377D+05 - 134 7 -4.0835727470697672D+05 - 135 7 -3.6283495694162656D+05 - 136 7 -2.0813437291131978D+05 - 137 7 -2.3556649089610778D+03 - 138 7 -6.0217985890230552D-03 - 139 7 -2.8194194943596153D-07 - 140 7 -1.0944902794694965D-18 - 141 7 -8.7019075650334680D-25 - 142 7 9.8821924859485980D+06 - 143 7 8.2736010893940297D+05 - 144 7 -5.4023756494684349D+04 - 145 7 -2.2111389454688262D+06 - 146 7 -5.9297391571197938D+05 - 147 7 -1.6353254512438284D+01 - 148 7 7.7305799785903490D-02 - 149 7 8.8302888270977492D+04 - 150 7 2.0145992169826032D+05 - 151 7 -7.2431754380235390D+04 - 152 7 -1.8623011417509639D+05 - 153 7 -2.1653339915357801D+05 - 154 7 -4.4707479434579541D+05 - 155 7 -2.9770476841226773D+03 - 156 7 -4.1269782822229803D-02 - 157 7 -1.4864866913723081D-05 - 158 7 -2.0872191941104353D-12 - 159 7 -6.3188909443088381D-17 - 160 7 -9.5537687485229363D-25 - 161 7 -9.7936347753211531D-31 - 162 7 -1.2391044085993008D-39 - 163 7 -5.6437043054875871D-46 - 164 7 7.7199085506011639D+06 - 165 7 2.7862971485425369D+06 - 166 7 8.1728911151011125D+05 - 167 7 -4.5122020078272501D+05 - 168 7 -6.4096944384253518D+04 - 169 7 -5.9360472284986114D+00 - 170 7 -1.7138742078022060D-02 - 171 7 -4.8713461992847478D-08 - 172 7 -1.0171622617968362D-11 - 173 7 -2.3240555627743519D-18 - 174 7 -3.8792343253658055D-23 - 175 7 -6.1130889891633317D-31 - 176 7 -9.3778306506322613D-37 - 177 7 1.4701372990784611D-01 - 178 7 4.1469759215286627D+04 - 179 7 1.9960518857493525D+05 - 180 7 -3.9653261771682282D+03 - 181 7 -8.7662956313330578D+04 - 182 7 -1.3198187187073275D+05 - 183 7 -6.0555859056066438D+03 - 184 7 -2.4088498019416517D+02 - 185 7 -2.5720392721946140D-02 - 186 7 -5.1521865828133070D-05 - 187 7 -1.2567446262810920D-10 - 188 7 -3.8586059093823171D-14 - 189 7 -4.3084594399416399D-27 - 190 7 -8.4194654159450992D-33 - 191 7 3.1624890582362428D+07 - 192 7 1.5401310425026210D+06 - 193 7 2.6973547006321549D+06 - 194 7 3.2576392806563381D+03 - 195 7 1.8193408553026902D+02 - 196 7 -5.5495184217135722D-02 - 197 7 -8.5630278321296765D-04 - 198 7 -1.2961655315198888D-08 - 199 7 4.5483711913145276D-06 - 200 7 7.2271705694164723D+01 - 201 7 4.7213118247105075D+02 - 202 7 6.2932962757117739D+03 - 203 7 9.1493215077822796D+01 - 204 7 3.6697045057526871D+01 - 205 7 1.3551044821133037D-03 - 206 7 -2.9781991543754897D-05 - 3 8 -4.5682902699908035D+18 - 6 8 2.5598723869316878D+09 - 7 8 2.5598723600699368D+09 - 8 8 -5.1197448284690943D+09 - 9 8 8.0313361824843113D+01 - 10 8 -1.2664178681761740D-01 - 11 8 1.9011937104847343D-01 - 12 8 1.0032446229963801D-07 - 13 8 9.0009754838125460D-08 - 14 8 1.0901883133055401D-13 - 20 8 -1.1781974297638920D+00 - 22 8 1.2688280012841913D+00 - 3 9 -2.6945407177735148D+13 - 6 9 -2.6807624482134808D-03 - 7 9 6.1154427883849976D+03 - 8 9 1.2229423047977980D+04 - 9 9 -1.8356863136006836D+04 - 10 9 -1.5618628839682957D+01 - 11 9 4.3895759292848933D+00 - 12 9 -2.3029576813865779D-10 - 13 9 2.2229033316935681D+01 - 3 10 -1.4659999483660098D+16 - 6 10 2.9622838848207051D+04 - 7 10 9.9345607219426483D+06 - 8 10 -7.9625757839655619D-14 - 9 10 -1.0080613844590415D-10 - 10 10 -4.0296404442538381D+07 - 11 10 3.4365002929192549D-11 - 12 10 -1.9030034260347794D-13 - 13 10 1.8342064173526906D-10 - 14 10 -2.0188212726922686D-11 - 15 10 1.5096024632267743D-14 - 16 10 8.6566135729619159D-39 - 17 10 -4.7293217697599459D-08 - 18 10 -2.9431161464768364D-08 - 19 10 -4.4794370679850735D+00 - 20 10 -1.5398102713687526D-02 - 21 10 -3.8037659276460114D-03 - 22 10 -2.2745954457541565D-01 - 23 10 5.5353843544645107D+00 - 24 10 7.2465515327030441D-12 - 25 10 -1.6322284367895385D-05 - 26 10 -2.3466182284811509D+01 - 27 10 2.6462856433736553D-01 - 28 10 8.4502818465679286D-06 - 29 10 -1.3476019947458790D-15 - 30 10 -6.8121373686648532D-03 - 31 10 1.5465602916198845D-04 - 32 10 4.7393423901999120D-03 - 33 10 3.1064494064585451D-09 - 34 10 2.7878043778909852D-05 - 35 10 1.8513622994036200D+02 - 36 10 -1.3553510871113625D-01 - 37 10 -3.8654476314073142D-03 - 38 10 -8.6841529466623522D-11 - 39 10 -9.7109068507910900D-05 - 40 10 -1.8304668804573453D-02 - 41 10 6.2913072458261512D+00 - 42 10 4.4883613777996038D-04 - 43 10 -2.0543523423243618D-01 - 44 10 -1.1363834249801608D+04 - 45 10 -5.6868119401487498D+01 - 46 10 -3.0566849464450378D+01 - 47 10 -4.5415314284037046D-05 - 48 10 -2.0371867973127350D-01 - 49 10 -3.0250959052694815D+00 - 50 10 1.8091753284743070D+05 - 51 10 2.0518564164358608D+01 - 52 10 -5.8776386898874200D-01 - 53 10 -4.0803500479315803D+03 - 54 10 -1.0598363073295734D+04 - 55 10 -3.7933954135308891D+03 - 56 10 -1.1840750412349297D+00 - 57 10 -1.7494716219062225D-03 - 58 10 -8.6922047798134512D-12 - 59 10 -2.2057990100057414D+03 - 60 10 3.4540850311782644D+06 - 61 10 6.5669317494582094D+04 - 62 10 1.8144555006629448D+03 - 63 10 9.7400884112156915D-04 - 64 10 2.0389500897731128D+02 - 65 10 -5.8359740700406985D+02 - 66 10 5.0623436711725219D+02 - 67 10 2.4205852572679992D+03 - 68 10 2.6913337586871066D+01 - 69 10 1.4035934219743196D+00 - 70 10 6.7848587234565191D-09 - 71 10 2.9932515035895596D+05 - 72 10 3.2002128291808258D+04 - 73 10 1.4936160641985171D+04 - 74 10 1.6564437838238258D-03 - 75 10 8.2521745538021882D+00 - 76 10 2.3502514662539554D+02 - 77 10 4.7630059372088062D+03 - 78 10 1.1834798997719738D+03 - 79 10 8.6570980695332302D+00 - 80 10 1.5842074035111837D+00 - 81 10 2.4354842422068962D-08 - 82 10 1.9041600529072552D+04 - 83 10 9.3162340716221411D+02 - 84 10 5.1484510497744679D+02 - 85 10 9.7917995134032048D-04 - 86 10 2.5445060738852264D-06 - 87 10 7.8258862340914271D-12 - 88 10 5.7665692012294734D-01 - 89 10 -1.2535439533575111D+01 - 90 10 1.9867271676894518D+03 - 91 10 1.3715879850055277D+04 - 92 10 6.9162143897687334D-01 - 93 10 -1.6746109484717660D-02 - 94 10 -7.5932499752513063D-06 - 95 10 -2.7898549790259069D-07 - 96 10 -1.8797065556073796D-11 - 97 10 -1.7588531325345604D-13 - 98 10 -1.1668949628389450D-20 - 99 10 3.7685680995020612D+03 - 100 10 5.7682887945826025D+01 - 101 10 7.7601619745763543D+01 - 102 10 9.9574131567938349D-03 - 103 10 5.5053149560278336D-04 - 104 10 -3.7248301654620027D-08 - 105 10 -2.4820884588552679D-09 - 106 10 3.3709270408374739D-15 - 107 10 1.2862270619746279D-20 - 108 10 9.9980645973230908D-05 - 109 10 2.7600915082965821D+03 - 110 10 3.8106271827261516D+01 - 111 10 -3.5777445633156702D+01 - 112 10 -6.3067497338541978D+00 - 113 10 -1.0878628573082020D+01 - 114 10 -1.3588166444035528D-02 - 115 10 -3.1732945869949914D-03 - 116 10 -1.4194135406731076D-08 - 117 10 2.2023624224191490D-13 - 118 10 1.4136956691099960D-20 - 119 10 -4.7366426664836011D-27 - 120 10 2.8001373205453097D+00 - 121 10 -1.3696071588154293D+00 - 122 10 1.8302769217636947D+02 - 123 10 9.1320818914083712D-01 - 124 10 8.8513088611248136D-01 - 125 10 6.3219404359535770D-05 - 126 10 2.2923877523930564D-07 - 127 10 8.4125633522722637D-14 - 128 10 3.2667177588879524D-19 - 129 10 2.8730269631768631D-27 - 130 10 3.5060719846141679D-05 - 131 10 -3.2931527816497561D+00 - 132 10 2.5316344905037248D+01 - 133 10 -1.4674301626109632D+01 - 134 10 -1.1545723581451675D+01 - 135 10 -8.7658763492501617D+00 - 136 10 -8.4388290462732085D-01 - 137 10 2.3556188626053232D-02 - 138 10 2.9253808106121664D-08 - 139 10 1.6445068542154271D-12 - 140 10 1.2861869183857321D-19 - 141 10 -1.7536681882992687D-25 - 142 10 -4.8600196006037875D+00 - 143 10 -1.1437780002347646D+00 - 144 10 1.5227242579783578D+01 - 145 10 4.4655573902815135D+01 - 146 10 6.5554411723505822D+01 - 147 10 3.2968018159935226D-03 - 148 10 1.9227957712137110D-04 - 149 10 -6.5168012304161327D-01 - 150 10 3.7979772910237692D+01 - 151 10 -1.9290248655723092D+00 - 152 10 1.1042064341027642D+00 - 153 10 -6.2868238805164300D-01 - 154 10 4.4107130297980985D+00 - 155 10 2.0910498338063516D-01 - 156 10 5.5583022839663832D-07 - 157 10 -1.3829649738897949D-11 - 158 10 -4.2854129352637177D-18 - 159 10 -1.2851184873758145D-22 - 160 10 -1.9626496451254108D-30 - 161 10 -1.9296827723051993D-36 - 162 10 -2.3336814414354887D-45 - 164 10 -9.6625804723364195D-01 - 165 10 2.3437506969765490D+01 - 166 10 1.5425541665754034D+02 - 167 10 2.4261493075530623D+02 - 168 10 9.3024215105536740D+01 - 169 10 5.8936622137059280D-03 - 170 10 6.0012401155213540D-06 - 171 10 1.9867017796261844D-11 - 172 10 6.5255544049315297D-16 - 173 10 7.5391247477641002D-23 - 174 10 3.7308688130169965D-28 - 175 10 5.2816974009575034D-36 - 176 10 8.0952518545989030D-43 - 177 10 2.8473939497779271D-04 - 178 10 -4.8511835778929918D-01 - 179 10 1.9942244598179937D+02 - 180 10 5.2133064795333839D+00 - 181 10 7.3336615960996639D+01 - 182 10 2.5182640553036894D+01 - 183 10 8.8901140144686663D-01 - 184 10 5.0187273041872232D-02 - 185 10 1.9715236303797726D-07 - 186 10 2.1530478579735141D-10 - 187 10 1.5546561488293937D-16 - 188 10 7.4734305811805925D-21 - 189 10 1.1096949049330698D-27 - 190 10 2.1391796924763432D-33 - 191 10 2.1591431202173897D+01 - 192 10 1.7045773792251239D+01 - 193 10 2.9918722915959813D+02 - 194 10 4.9479556660785615D+00 - 195 10 2.8518452218027788D+00 - 196 10 2.8407184848485746D-04 - 197 10 8.6942306739014907D-06 - 198 10 1.6838484228797021D-11 - 199 10 1.7844273107330065D-08 - 200 10 2.4572947026505926D-01 - 201 10 1.2425416793973045D+00 - 202 10 9.1427943377089619D+01 - 203 10 2.3886344177378960D+00 - 204 10 5.1267467628578496D+00 - 205 10 2.1130873149807902D-03 - 206 10 2.6505162847515422D-04 - 3 11 -2.3266333809006510D+15 - 6 11 4.1329416043146608D+04 - 7 11 -2.1768335518405176D+05 - 8 11 5.1419299165160405D+06 - 9 11 7.7799678122466744D+05 - 10 11 1.1485183083189048D+07 - 11 11 -1.7231798613456212D+07 - 12 11 3.6389259077162627D-03 - 13 11 6.1381098189396333D+01 - 14 11 2.9543165054128763D+03 - 17 11 2.6070424833266507D+01 - 3 12 1.5975665295756897D+14 - 6 12 2.4164536572082270D+04 - 7 12 -3.7758767447966304D+04 - 8 12 1.0807391682365741D+00 - 9 12 -5.4878227113907042D-06 - 10 12 1.0957748125224820D+05 - 11 12 1.6864105382647477D+02 - 12 12 -2.6580810938594892D+05 - 13 12 1.6788454683294246D+05 - 15 12 1.0346601156274954D+02 - 17 12 1.5346340711234488D+03 - 18 12 1.3149030644922397D+02 - 3 13 -2.1634331553305347D+17 - 6 13 -7.4979670681154374D+01 - 7 13 4.8815754624579313D+03 - 8 13 2.5020893786287511D-03 - 9 13 5.1006891609139645D+08 - 10 13 6.8007754807713687D+08 - 11 13 7.2526839035487419D+03 - 12 13 4.2804022394737626D+02 - 13 13 -1.1901950873859866D+09 - 16 13 8.1868687179969104D+00 - 17 13 3.6126708163258969D+04 - 3 14 -8.5183298538257114D+17 - 6 14 6.7582160062534153D+08 - 7 14 -1.0338126897171225D+06 - 8 14 1.1121083516976759D+06 - 10 14 5.4126400139251547D+09 - 11 14 2.8660236055636234D+06 - 14 14 -6.0916987208364353D+09 - 15 14 5.0385599713938863D-04 - 17 14 8.7912941014133696D+02 - 19 14 2.9190688848098589D+05 - 3 15 8.8183031075281325D+14 - 6 15 1.8243933116077740D+03 - 7 15 -4.2653697546228475D+05 - 10 15 1.6991419721569924D+06 - 12 15 2.9857289701859737D+06 - 14 15 6.9458691859322926D+02 - 15 15 -4.2836146877389243D+06 - 17 15 1.4782381420622016D-16 - 18 15 4.6919792887304801D+01 - 20 15 2.2713820835155282D+04 - 3 16 -1.3189691878300314D+18 - 6 16 -1.8085452605359951D+01 - 7 16 1.1956505638240646D+10 - 10 16 1.4469202979249187D+02 - 13 16 8.3695539341086349D+10 - 16 16 -9.5652045106933594D+10 - 3 17 1.4215379099336844D+14 - 6 17 1.4757307207323134D+02 - 7 17 -1.5291684956858624D+05 - 10 17 6.7965408053142449D+05 - 11 17 1.0053571668604083D+05 - 12 17 1.2769881580313677D+02 - 13 17 1.1790617892972939D+06 - 14 17 3.4946391398674009D+03 - 17 17 -2.0089806336737506D+06 - 18 17 2.6206694459438164D-02 - 20 17 1.9671932364100509D+05 - 21 17 2.1556358521344018D+03 - 3 18 5.3872396158812410D+15 - 6 18 2.7281833654787843D+03 - 7 18 -7.7339509116987896D+05 - 10 18 9.2693111755002253D+06 - 12 18 1.3661730727392460D+00 - 15 18 1.6893362907903163D-05 - 17 18 3.2722231352031186D-03 - 18 18 -8.5373591667694990D+06 - 19 18 5.1796707589388939D+02 - 22 18 3.8194562535590580D+04 - 3 19 2.0780448740270405D+10 - 6 19 1.3036203212902971D-02 - 7 19 -1.2917991696949288D+01 - 10 19 3.5707201570678809D-01 - 14 19 1.0279929906410739D-07 - 18 19 4.4411161041886143D-10 - 19 19 -1.6288741075886188D+02 - 20 19 7.4321076937534135D-03 - 21 19 1.6995520484918654D+02 - 23 19 8.0062956462746060D-01 - 25 19 9.2984078739273796D-07 - 26 19 -1.9807126424955773D-01 - 35 19 1.4187613369319776D+00 - 41 19 1.3076479597910371D+00 - 43 19 1.2327162899942794D-01 - 44 19 4.5589727868107034D-02 - 50 19 1.2219119210493765D+00 - 52 19 2.2270168184008596D-01 - 53 19 5.9085185942966777D-12 - 60 19 1.3952539418937969D-08 - 64 19 2.0942092102987719D-07 - 3 20 -2.2185952093309791D+14 - 6 20 6.0635586802485923D+04 - 7 20 -1.8526933764447358D+02 - 8 20 -5.9448940599567938D-07 - 10 20 -1.2366701516179803D+04 - 15 20 5.3882055482333175D-07 - 17 20 1.6183469050079740D+00 - 19 20 6.9014494454791315D+05 - 20 20 -7.9026040845068276D+05 - 21 20 4.1172140689197084D+02 - 22 20 2.1481127797374106D+03 - 24 20 2.1217789053392175D-05 - 26 20 7.5715977822619088D+03 - 3 21 -3.9372620491825523D+17 - 6 21 -6.1092736888262458D+00 - 7 21 2.5253897051735768D+08 - 10 21 -3.2663492223037474D+03 - 17 21 3.4031348137772257D-03 - 19 21 3.0304577742241421D+09 - 20 21 7.9010109618782906D+01 - 21 21 -3.2830066181361198D+09 - 22 21 4.3726855664951025D-01 - 26 21 1.9997408607786904D+03 - 3 22 -1.0953231851281433D+12 - 6 22 5.5103911033711227D-02 - 7 22 9.8723663265058269D+02 - 8 22 1.2554980339628840D-07 - 10 22 -3.8317799240262852D+03 - 18 22 4.9350370570025293D-01 - 20 22 4.2132605840918609D+02 - 21 22 4.4685234026425108D-01 - 22 22 -1.3903524320796645D+04 - 23 22 8.0858589679977453D-04 - 25 22 3.8379278535541374D+01 - 27 22 1.6275554426188681D+04 - 30 22 1.1160261292313776D+00 - 31 22 9.6955542412643680D+00 - 3 23 5.6734846729507812D+14 - 6 23 3.7481527949204194D+00 - 7 23 -1.4234685402392194D+05 - 10 23 5.6912508697361790D+05 - 19 23 1.7073904895434389D+06 - 22 23 7.4661117438612522D-04 - 23 23 -2.1352255366916885D+06 - 24 23 3.1757554470588918D-03 - 25 23 5.6222924219593260D+01 - 26 23 1.4875630776780045D+02 - 28 23 3.2241328995237599D+00 - 31 23 1.8540412807865148D-03 - 32 23 2.0706777322874771D+01 - 3 24 -1.1574657671375613D+17 - 6 24 5.8505771769652665D+07 - 7 24 -1.3499233183147220D+05 - 10 24 2.4697080347964368D+05 - 20 24 8.7748131733047415D+05 - 23 24 8.7648783208036649D+08 - 24 24 -9.3717240302388263D+08 - 26 24 1.6529717907329826D+05 - 29 24 9.1084321875679123D+01 - 32 24 1.0927029370974062D+05 - 3 25 4.0392023237930284D+09 - 6 25 -5.2783049211030031D+00 - 7 25 6.8734782072213196D+00 - 10 25 3.8663122490857917D+00 - 19 25 1.4149540111532771D+01 - 22 25 3.8741892270754057D+01 - 23 25 6.1486575902520663D+01 - 25 25 -1.2487205138507203D+02 - 26 25 1.8380583763314841D-04 - 31 25 1.2777598655359909D-01 - 34 25 3.9035806742961374D+00 - 3 26 3.9816325013092332D+09 - 6 26 -7.9578164803692942D-03 - 7 26 -7.7385748412913413D+00 - 10 26 -2.3181235901586503D-01 - 19 26 8.0395374582366688D-02 - 20 26 1.8171749062654838D-03 - 21 26 9.7669215764781270D-03 - 23 26 9.2669176000279246D-04 - 24 26 3.7305497432543215D-12 - 25 26 1.0468851252799113D-09 - 26 26 -2.0194912733841466D+01 - 27 26 1.4173818601986046D-01 - 30 26 1.3159328248813591D+02 - 32 26 3.4910690472039370D-05 - 34 26 7.8282960973159043D-10 - 35 26 1.4269967012389972D+00 - 44 26 2.3456323797779533D-03 - 50 26 6.2868464043961986D-02 - 52 26 1.1458201230469494D-02 - 53 26 7.3721338032206599D-08 - 60 26 2.0450423581103166D-04 - 64 26 2.9489873665068875D-03 - 3 27 -2.1033415961695728D+15 - 6 27 6.3601150391934125D+05 - 7 27 -9.5002355049382531D+03 - 10 27 3.6433525328685420D+04 - 22 27 1.3284427875559797D+05 - 26 27 1.5565882134573879D+06 - 27 27 -1.0973644510316333D+07 - 28 27 1.7205492841424638D-04 - 30 27 6.2279053982597112D+01 - 31 27 1.3851118913478336D+02 - 33 27 1.7771951285798480D-03 - 35 27 7.6025999395785020D+03 - 36 27 7.6783551861925172D+00 - 3 28 2.4643952099699103D+14 - 6 28 9.3127407297302568D+02 - 7 28 -7.7990277355629456D+04 - 10 28 3.0816611938329478D+05 - 23 28 1.1624899592271028D+06 - 27 28 7.0942062949313005D+00 - 28 28 -1.4120739225672556D+06 - 29 28 5.0726630329396769D-03 - 31 28 8.5299639095127568D+03 - 32 28 3.2413727592169624D+02 - 36 28 9.5963731466577046D+03 - 37 28 1.8273628464515621D+01 - 3 29 -2.9271051474405112D+14 - 6 29 2.3988978061665429D+05 - 7 29 -9.0523945297792787D+04 - 10 29 1.1024333354065668D+05 - 24 29 4.8360083368139376D+05 - 28 29 3.1847268326797849D+06 - 29 29 -5.1322322176386304D+06 - 32 29 1.1456301378809293D+06 - 33 29 5.1403074225365870D+01 - 37 29 5.8612160099892004D+04 - 38 29 6.8136288585612859D-01 - 3 30 -3.1328136461025024D+17 - 6 30 -8.1449740051396269D+00 - 7 30 6.5058260860718620D+08 - 10 30 -9.8794959763218515D+02 - 22 30 6.0678255113841125D+01 - 26 30 1.5932106273210731D+09 - 27 30 6.4789858432863511D+01 - 30 30 -1.1059904421221632D+10 - 31 30 4.4195841170124287D-04 - 35 30 5.0261819690593647D+03 - 39 30 2.6170272739959094D-01 - 3 31 -5.3325457525476211D+13 - 6 31 1.0271901335025737D+01 - 7 31 3.0512933353913090D+03 - 10 31 4.5397618445808730D+04 - 22 31 1.5915774853955046D+05 - 23 31 3.2865644403776969D+01 - 25 31 2.5345243584845375D+03 - 27 31 5.1741913420771009D+04 - 28 31 6.4785289061612630D+01 - 30 31 1.3304956919565214D-01 - 31 31 -2.6600623268186959D+05 - 32 31 3.4658832983161060D-02 - 34 31 2.0565743317170096D+01 - 36 31 3.6561627829659114D+03 - 39 31 3.3717641803313728D+02 - 40 31 1.3909434470679075D-01 - 3 32 7.3822430503807469D+13 - 6 32 7.9296482366739284D+01 - 7 32 -2.7878487930120824D+04 - 10 32 2.4476450431587439D+05 - 23 32 5.0098190182733670D+05 - 24 32 9.5788372632007318D-03 - 26 32 6.8255265922703926D+04 - 28 32 1.0951930719372475D+01 - 29 32 1.8915486776795990D-05 - 31 32 4.7304343390227273D-02 - 32 32 -1.1658189892826278D+06 - 33 32 3.3256941475855872D-01 - 34 32 1.8020420236296783D+01 - 35 32 1.4347542962678594D+02 - 37 32 1.8494142043591260D+01 - 40 32 1.7239780650606031D+03 - 41 32 6.4283298873893173D+00 - 3 33 1.4924802232388547D+14 - 6 33 3.2077737938692633D+04 - 7 33 -4.8813190482912709D+04 - 10 33 1.2796363244595281D+05 - 27 33 5.4797017492710811D+05 - 29 33 7.3987842394941574D-04 - 32 33 2.8992566052560537D+05 - 33 33 -1.2864890962390103D+06 - 35 33 3.3170462299012434D+05 - 36 33 7.8897860600914157D+01 - 38 33 2.1475903154733859D+02 - 41 33 5.3650149460965404D+03 - 42 33 7.8531631632541810D-01 - 3 34 -2.7360891354656447D+14 - 6 34 -1.3334277049202489D+01 - 7 34 1.0617898794660276D+02 - 10 34 3.8652120953320980D+05 - 25 34 1.4507050515933302D+06 - 26 34 1.8512926187619218D+01 - 31 34 1.7089698125675392D+02 - 32 34 1.0972516602183954D+02 - 34 34 -1.8397221051496926D+06 - 35 34 1.7276575904270693D-03 - 40 34 2.0000246960605384D+03 - 43 34 3.9565464219564217D-01 - 3 35 -3.6978074525518610D+11 - 6 35 -9.0888879950884790D-03 - 7 35 -2.7976899497171881D-01 - 10 35 3.8276889572901922D+02 - 19 35 -4.0690721781602922D-05 - 26 35 2.4105125187857328D+02 - 27 35 1.1462858419614955D-01 - 30 35 7.0726210918323790D-02 - 32 35 1.8998188720018841D-06 - 33 35 1.6220632031380280D-08 - 34 35 1.2096676298093411D-11 - 35 35 -2.0772613808080700D+03 - 36 35 5.0520525053842323D-02 - 39 35 5.4937983600106158D+01 - 41 35 5.3831120868774207D+01 - 43 35 1.3644302871390957D-03 - 44 35 6.6874761964609586D-01 - 53 35 3.3842742192641894D-10 - 60 35 7.9917188539202494D-07 - 64 35 1.1995186487186475D-05 - 3 36 -4.3085260285164917D+11 - 6 36 4.5184326966045080D+02 - 7 36 -5.3233895185073877D+01 - 10 36 -9.2918627163332542D+02 - 27 36 9.9911745004213870D+00 - 28 36 3.0284350263348886D-01 - 31 36 1.5192181941739916D+01 - 33 36 3.3296009041415363D-07 - 35 36 4.3599890815962408D+03 - 36 36 -1.0633227884916500D+04 - 37 36 8.7439853338929036D-02 - 39 36 1.7734181199457421D+01 - 40 36 1.1496096215519722D+03 - 42 36 1.7029980551789524D+01 - 44 36 3.7949569235808008D+02 - 45 36 3.8515849732794188D-01 - 3 37 7.4556070318358325D+11 - 6 37 1.4712011415864546D+02 - 7 37 -1.6294500832410480D+02 - 10 37 -4.4021811455592569D+02 - 28 37 2.4718956764918322D-03 - 29 37 5.1313668020958400D-08 - 32 37 1.2060704522955609D+02 - 36 37 1.5229280312528255D+00 - 37 37 -6.1482545402797541D+03 - 38 37 1.3562943486012733D-02 - 40 37 6.7626915152624349D+02 - 41 37 2.8947285309206263D+03 - 45 37 2.9077169146136071D+03 - 46 37 2.4369437893748733D+00 - 3 38 2.9281401718893074D+13 - 6 38 3.3912158911880819D+04 - 7 38 -2.4090313676427773D+04 - 10 38 -3.7394843342364356D+02 - 29 38 9.4158592202895546D-06 - 33 38 2.0618733910358915D+02 - 37 38 2.1408725185575118D+05 - 38 38 -7.8028402421005070D+05 - 41 38 5.5377410761212674D+05 - 42 38 6.8860827690006502D+01 - 46 38 2.6984121539962575D+03 - 47 38 3.0760993760422195D-01 - 3 39 -6.2657805177116350D+15 - 6 39 -1.2500098833322562D+01 - 7 39 3.2128799096364328D+06 - 10 39 -1.8567372180488610D+02 - 30 39 4.4367113472646578D+00 - 31 39 1.8987952357353947D+01 - 35 39 6.4256414710195668D+07 - 36 39 2.4035264832810944D+02 - 39 39 -6.7470506855025858D+07 - 40 39 3.2723060382103494D-03 - 44 39 7.7731369119002792D+01 - 48 39 1.3092286995719479D-01 - 3 40 -7.2285913713894666D+11 - 6 40 -2.3744953383801142D+00 - 7 40 1.9901678385490945D+02 - 10 40 -1.6585396732783303D+02 - 31 40 1.7615287631567733D-03 - 32 40 1.5996532324798519D+01 - 34 40 3.0539318059423644D+00 - 36 40 3.5037771282196431D+03 - 37 40 1.1834126263409263D+02 - 39 40 7.3589036354739976D-04 - 40 40 -5.0029501508664198D+03 - 41 40 2.6287458851764856D-01 - 43 40 2.6807025167475399D+02 - 45 40 9.6517696575292564D+02 - 48 40 9.6448964982364160D+01 - 49 40 3.1420275557659721D-02 - 3 41 5.4465076022110771D+12 - 6 41 5.0122210673441110D+00 - 7 41 -2.6952610980312015D+03 - 10 41 1.0645917608469843D+04 - 19 41 9.7231787903965532D-05 - 32 41 3.1055451263769661D-04 - 33 41 2.9730846727228367D-07 - 35 41 5.3959703725451007D+04 - 37 41 2.6697839819035258D+00 - 38 41 3.1964165507439982D-05 - 40 41 1.3686609190628734D-03 - 41 41 -6.3560952371290165D+04 - 42 41 1.0622184853887429D-01 - 43 41 3.2460014117855112D+00 - 44 41 4.6770365387324041D+01 - 46 41 8.1801399195653551D+02 - 49 41 1.2676184753104783D+02 - 50 41 4.5432421275254811D+00 - 3 42 5.4204893497510680D+13 - 6 42 1.5145753440349479D+04 - 7 42 -1.5914960888644677D+04 - 10 42 5.5252961175526561D+03 - 33 42 5.8103998318332452D-06 - 36 42 2.9914595155507999D+04 - 38 42 5.3066991171182019D-04 - 41 42 1.4182079390631006D+04 - 42 42 -3.9784036227249203D+05 - 44 42 2.3594873215385622D+04 - 45 42 1.1207482913630082D+02 - 47 42 5.0935726729830137D+01 - 50 42 1.1145977242967874D+03 - 51 42 3.5270265643940157D-01 - 3 43 7.0872690565003952D+10 - 6 43 -1.5951583380769188D+01 - 7 43 3.2438817743288674D+01 - 10 43 -4.7447638200779366D+01 - 19 43 1.3377437339381246D-03 - 34 43 2.2953473521035707D-04 - 35 43 1.1305089090098068D+02 - 40 43 1.0184928918535505D+02 - 41 43 2.3687819660812389D+02 - 43 43 -8.7720598645403561D+02 - 44 43 4.3767240181339159D-04 - 49 43 4.5527534634997824D+02 - 52 43 1.0465015831605537D-01 - 3 44 3.5867177395006920D+10 - 6 44 -1.1925012151209637D-01 - 7 44 -4.4047783557935138D-01 - 10 44 -2.0765422952189567D+02 - 19 44 4.6284627645142230D-12 - 26 44 9.4455324334378455D-13 - 35 44 2.5427851728948886D-01 - 36 44 1.6235167042221109D-03 - 39 44 2.4832997771819650D-05 - 41 44 1.5208174518294959D-02 - 42 44 5.7464468945245737D-05 - 43 44 1.9502587033716099D-09 - 44 44 -1.6964533239651399D+02 - 45 44 2.9937304124934521D+00 - 48 44 1.2873255726760510D+03 - 50 44 1.3784008311357970D+03 - 52 44 1.5627588397689966D-02 - 53 44 3.6922072324318606D-04 - 3 45 -4.5638566454734668D+11 - 6 45 1.1594628272388350D+02 - 7 45 -2.4879231394118246D+01 - 10 45 -5.9467016050278893D+01 - 36 45 9.4908672495279549D-05 - 37 45 4.1138546245352119D-02 - 40 45 7.8976309540424228D-02 - 42 45 1.5721914179404266D-05 - 44 45 1.7243695107820403D+02 - 45 45 -3.7645591573016550D+03 - 46 45 3.0750256058421144D-01 - 48 45 2.6414818015953387D+00 - 49 45 7.7132814891055068D+02 - 51 45 1.3710156098542569D+02 - 53 45 4.2138751334013756D-03 - 54 45 8.3979293914509493D-04 - 3 46 3.1868073974666589D+11 - 6 46 1.3405025871070020D+01 - 7 46 -4.9626434029864797D+01 - 10 46 -4.8489029236014972D+01 - 37 46 6.2209272888059385D-05 - 38 46 4.4655635397229533D-09 - 41 46 2.3736255248225557D+01 - 45 46 5.6774910434850567D-01 - 46 46 -1.6339258909949456D+03 - 47 46 3.8445428949304403D-02 - 49 46 6.0115114346206813D+00 - 50 46 1.3058066957542528D+03 - 54 46 5.1540231181901648D+00 - 55 46 2.0155165843186666D-03 - 3 47 8.3326068546581934D+12 - 6 47 1.0269967241606568D+04 - 7 47 -9.2394266937190041D+03 - 10 47 -5.1407856593102956D+01 - 38 47 3.5133037000530748D-07 - 42 47 7.6400176004178313D+00 - 46 47 2.6533317328365458D+04 - 47 47 -2.7737494831826788D+05 - 50 47 2.4937976757507928D+05 - 51 47 7.8978809214427002D+01 - 55 47 1.5222550277931743D+01 - 56 47 9.1433119345317310D-02 - 3 48 -1.1777339737024178D+16 - 6 48 -1.5049656788667475D+01 - 7 48 6.4630375962459370D+06 - 10 48 -3.0523382971301004D+01 - 39 48 3.4198516199040817D-04 - 40 48 1.1202894332274911D+00 - 44 48 1.0525641372090911D+07 - 45 48 3.7497406520742459D+02 - 48 48 -1.6157594219270614D+08 - 49 48 3.8442084982944088D-03 - 53 48 3.2455792518719848D-03 - 3 49 -1.1093809572339902D+12 - 6 49 -1.7555939578869701D+00 - 7 49 2.3825907851930640D+02 - 10 49 -2.5020638669313971D+01 - 40 49 2.1228232667637124D-05 - 41 49 1.6449213810818456D+01 - 43 49 8.2202904881588812D-01 - 45 49 6.3687304389668079D+03 - 46 49 2.6884196476970885D+01 - 48 49 2.2360324978254627D-04 - 49 49 -7.4900583313705156D+03 - 50 49 1.7365719225298637D-01 - 52 49 6.6133882195799242D+02 - 54 49 2.7452707819811426D+00 - 59 49 1.3211486436074005D-02 - 3 50 6.4163498849144995D+11 - 6 50 7.7367776392040444D-01 - 7 50 -3.2532930531116244D+02 - 10 50 1.1958673801001598D+03 - 19 50 4.5413291733963879D-11 - 26 50 9.2677146129607244D-12 - 41 50 5.3263142822261686D-04 - 42 50 9.7870907837132691D-07 - 44 50 4.9848777455658745D+02 - 46 50 5.2758139758728531D+00 - 47 50 1.4599466821652546D-03 - 49 50 1.5689059543247633D-04 - 50 50 -9.1579679763536969D+03 - 51 50 2.1178963702230091D-01 - 52 50 2.3954837913280130D-01 - 53 50 1.0869185664176759D-02 - 55 50 7.2678464612040887D+00 - 59 50 2.3172527833663985D+01 - 60 50 2.1141372009912160D-02 - 3 51 2.6714216040202555D+13 - 6 51 8.7461878352088515D+03 - 7 51 -9.0474131427455559D+03 - 10 51 1.5232791314804331D+03 - 42 51 3.4580548844938141D-06 - 45 51 9.7293892253280628D+03 - 47 51 5.1625196950729367D-03 - 50 51 2.3647873799562362D+03 - 51 51 -2.5604155158401650D+05 - 53 51 3.6551644815667745D+00 - 54 51 3.1270732136930568D+00 - 56 51 2.9492896339784306D+01 - 60 51 2.6729324905353211D+00 - 61 51 3.3504236992761705D-01 - 3 52 -5.5222522421052345D+10 - 6 52 -1.0264907699981105D+01 - 7 52 3.0192360028884345D+01 - 10 52 -3.5313259901210614D+00 - 19 52 6.8598755167894304D-09 - 26 52 1.3999286583864591D-09 - 43 52 1.4148384764087776D-04 - 44 52 4.7414884868312326D+00 - 49 52 4.9519754763967632D+02 - 50 52 1.9854905900975487D+02 - 52 52 -8.9485199765441712D+02 - 53 52 1.1206731372908074D-07 - 59 52 1.1379162330964733D+02 - 64 52 3.6567541893835771D-02 - 3 53 -1.0409134188808325D+14 - 6 53 -2.2196437340540430D+02 - 7 53 7.1183143682684022D+04 - 10 53 -2.8747506500772457D+05 - 19 53 2.8699187590270753D-18 - 26 53 5.4695843392084144D-16 - 35 53 4.7831979317117915D-18 - 44 53 1.4092988492135741D+00 - 45 53 2.9021348655200735D-01 - 48 53 1.6039161644141396D-03 - 50 53 1.1778127341510805D+02 - 51 53 3.5473638250196990D+00 - 52 53 1.4652358236884802D-06 - 53 53 -3.1461171955564900D+01 - 54 53 8.6945187372120216D+01 - 60 53 2.5731333095080117D+04 - 64 53 1.5173789342306032D+00 - 65 53 1.7192828606086292D+00 - 3 54 6.5146434934748743D+11 - 6 54 4.0306725399805231D+02 - 7 54 -5.1583335841581879D+02 - 10 54 -8.0507475985864028D+02 - 45 54 6.2392015263037275D-05 - 46 54 2.0739391126339191D-01 - 49 54 2.5160897181527631D-02 - 51 54 3.2737961672427577D-03 - 53 54 9.3792431941747315D-02 - 54 54 -3.7515014308912242D+02 - 55 54 4.3845769120223016D-01 - 59 54 1.5934016351996341D+04 - 61 54 4.8964386526663696D+02 - 65 54 4.5153739080063565D-01 - 66 54 2.9381660329924681D+00 - 3 55 4.4361212142093496D+12 - 6 55 2.5975791419191410D+01 - 7 55 -7.7302246329688035D+02 - 10 55 -9.7815885843817355D+01 - 46 55 3.0088348828736039D-05 - 47 55 3.2927073993470601D-07 - 50 55 2.7352979276977852D+01 - 54 55 1.6266347009283619D-01 - 55 55 -9.2510671888382274D+02 - 56 55 8.6316202470544268D-01 - 59 55 1.6727993173575825D+02 - 60 55 2.7721668637249383D+02 - 62 55 1.3540340055766316D+01 - 66 55 1.3026294937702986D+01 - 67 55 1.3753744154991281D+00 - 3 56 1.8660089799973301D+12 - 6 56 5.7442296275584431D+03 - 7 56 -5.5004980812670592D+03 - 10 56 -1.0114865054620184D+01 - 47 56 6.5648988914587024D-07 - 51 56 3.2998093835084252D+00 - 55 56 2.8651823507425905D+02 - 56 56 -1.7828149725322225D+05 - 57 56 6.1405360482471034D-02 - 60 56 1.9860123847706091D+03 - 61 56 2.1200593617541458D+02 - 63 56 6.4643880216455632D-02 - 67 56 7.1964024048178132D-01 - 68 56 1.8829322170072416D-01 - 3 57 -2.7064465212144517D+12 - 6 57 6.2309578976906796D+03 - 7 57 -6.2393633964906439D+03 - 10 57 -9.5447191308809742D+00 - 56 57 4.0300890075958847D+01 - 57 57 -1.9977860522968473D+05 - 58 57 1.8428587480769140D-02 - 61 57 1.9927276891947695D+05 - 62 57 3.9894913598430594D+02 - 68 57 8.3453954046834227D+01 - 69 57 6.4119444042129950D-02 - 3 58 -4.8313365175725475D+14 - 6 58 1.4741276539610350D+05 - 7 58 -6.1372031852875607D+03 - 10 58 -1.1624026347840003D+01 - 57 58 4.5207628184993891D+06 - 58 58 -4.8646612604999226D+06 - 62 58 2.0248872162919107D+05 - 63 58 4.0165411498827588D+01 - 69 58 1.0459686032389702D+02 - 70 58 1.9915051292553915D-02 - 3 59 -3.3912555799852158D+12 - 6 59 -7.5251709746892637D+00 - 7 59 7.7123941784358954D+02 - 10 59 -3.2417189382193370D+00 - 49 59 2.2820210398444869D-06 - 50 59 4.4303409174424369D+00 - 52 59 2.6821000662923387D-02 - 54 59 3.0029853235689819D+02 - 55 59 8.4978836111223757D+00 - 59 59 -2.3348447051887215D+04 - 60 59 3.8095568012357895D-03 - 64 59 1.0589863845924667D+02 - 66 59 6.3496593552681235D-01 - 3 60 1.0903566411626892D+14 - 6 60 -1.1074556492066570D+00 - 7 60 -7.0919637358959706D+04 - 10 60 2.8446284840856818D+05 - 19 60 7.7131603347350239D-18 - 26 60 1.7268331846324688D-15 - 35 60 1.2855267224558372D-17 - 50 60 2.5518160283665065D-01 - 51 60 2.8894650966929535D-03 - 53 60 3.0078213254144242D+01 - 55 60 8.8907297329980372D+02 - 56 60 1.9188632485293009D+01 - 59 60 2.4050634944410315D-01 - 60 60 -2.6249180721129702D+04 - 61 60 1.9023455152745210D+01 - 64 60 3.0409784349856337D+00 - 65 60 1.4251777214144419D+00 - 67 60 2.0184997443558096D+01 - 71 60 6.6699727940642750D-01 - 3 61 3.0707053764585142D+12 - 6 61 2.6950347103721037D+03 - 7 61 -3.2434472772722811D+03 - 10 61 2.2138866049365784D+03 - 51 61 1.5235739698513394D-04 - 54 61 2.1730982100236679D+02 - 56 61 8.6166842318735859D-01 - 57 61 1.2340476226389712D+00 - 60 61 8.0024589571481890D+00 - 61 61 -1.0454652453612145D+05 - 62 61 2.8900287627061516D-01 - 65 61 6.6490833543814825D+00 - 66 61 1.1125786027468299D+01 - 68 61 8.4698608695146120D+00 - 71 61 7.4304498161666754D-01 - 72 61 1.3716102569846522D-01 - 3 62 -6.5148942496853247D+11 - 6 62 3.8025975673846197D+03 - 7 62 -4.1958049033720645D+03 - 10 62 1.5464411532774404D+03 - 55 62 4.4829661527953641D+02 - 57 62 6.8375563589219854D-02 - 58 62 1.4150666063116568D-07 - 61 62 7.9983661495574081D+00 - 62 62 -1.3851943980585484D+05 - 63 62 1.0643572231874639D-01 - 66 62 2.4744261469904795D+03 - 67 62 1.8631400612389017D+00 - 69 62 1.0964474386814791D+01 - 72 62 3.0389807957049449D+01 - 73 62 4.7818463790413207D-01 - 3 63 -3.6977560184234038D+12 - 6 63 8.1370642056504785D+03 - 7 63 -4.4571977509949529D+03 - 10 63 1.0098558193407227D+03 - 56 63 7.8654548745025104D+03 - 58 63 3.4232322635881235D-05 - 62 63 1.2983979727435973D+05 - 63 63 -2.8536297575779923D+05 - 67 63 1.1455375479031504D+03 - 68 63 7.7294023049394738D+01 - 70 63 6.7298210505063960D-02 - 73 63 4.6548769536967725D+01 - 74 63 1.9084828091942663D-02 - 3 64 -7.6183861602518982D+11 - 6 64 -9.2615017166472047D+00 - 7 64 1.7135479987124546D+02 - 10 64 1.2113723957147460D+01 - 19 64 8.5779177707170945D-17 - 26 64 1.8450312047853174D-14 - 35 64 1.4296529617861824D-16 - 52 64 4.0317671396229498D-04 - 53 64 1.2795707902318362D-03 - 59 64 4.9536598167506618D+03 - 60 64 2.2533317995397946D+00 - 64 64 -5.4069057762195262D+03 - 65 64 3.7204733125375694D-07 - 75 64 4.5557106454690421D-03 - 3 65 -1.0128174194393254D+13 - 6 65 -3.7740393827815984D+02 - 7 65 3.1711747862590319D+03 - 10 65 -7.0308310576609510D+03 - 53 65 2.8688851647533159D-01 - 54 65 7.0931079577649285D+01 - 60 65 2.1220049187385487D+02 - 61 65 2.3534599973372956D+03 - 64 65 7.4763843003875191D-05 - 65 65 -1.1603150939437741D+01 - 66 65 7.9964905679304763D+01 - 71 65 2.2355456472787228D+03 - 75 65 6.1346660385458336D-02 - 76 65 4.0188220424787691D+00 - 3 66 -8.5586490579050085D+11 - 6 66 1.1313350634669354D+02 - 7 66 1.0107110231356728D+01 - 10 66 1.7136456044098900D+01 - 54 66 1.7845364079578336D+00 - 55 66 2.1325870193015572D+01 - 59 66 2.0972761208331118D+01 - 61 66 1.5225787094857260D+01 - 62 66 1.2235643041004614D+02 - 65 66 3.0917592142370676D-01 - 66 66 -1.1300605517730943D+02 - 67 66 1.4384263091263119D-01 - 72 66 2.3841523244697478D+02 - 76 66 4.3395958773798321D-01 - 77 66 7.5404066212640677D+00 - 3 67 3.2466229360692758D+13 - 6 67 5.4530036838707518D+00 - 7 67 -6.4371323067100993D+03 - 10 67 2.6283182620815114D+02 - 55 67 5.6882054905976558D+00 - 56 67 8.9662258605910858D-03 - 60 67 2.6677746316431332D+01 - 62 67 2.3273567033431733D-01 - 63 67 1.1731314695701533D-04 - 66 67 3.6337504177924984D-01 - 67 67 -1.7620832770911049D+03 - 68 67 5.0869770286529379D+00 - 71 67 5.6687894262763848D+03 - 73 67 1.1119427596217115D+02 - 77 67 3.0948738802871649D+01 - 78 67 3.3474331116066409D+00 - 3 68 -1.5986800449767156D+12 - 6 68 2.6930472504446143D+03 - 7 68 -2.6384852036244802D+03 - 10 68 1.1448243949691193D+01 - 56 68 9.4448858592181776D-03 - 57 68 6.3782411315676498D-03 - 61 68 1.0713501772954650D+02 - 63 68 3.1864803294615747D-05 - 67 68 2.0479929884695590D+01 - 68 68 -9.4994040922881599D+04 - 69 68 1.5516170579788865D-01 - 71 68 2.3306645569889270D+03 - 72 68 6.3643737593517881D+02 - 74 68 6.3879312387804159D-03 - 78 68 3.2565918006794936D-01 - 79 68 1.3085727462990601D-01 - 3 69 1.2291297200717422D+11 - 6 69 4.5215167925179145D+02 - 7 69 -5.8329156518118862D+02 - 10 69 3.8877661877899520D+01 - 57 69 3.2405583301348866D-04 - 58 69 2.1549120892285080D-09 - 62 69 3.3137499721255847D+02 - 68 69 1.0260316879843957D+01 - 69 69 -2.1021662488921676D+04 - 70 69 1.1207320346167442D-02 - 72 69 1.6256814662027200D+04 - 73 69 4.5018534010791245D+03 - 79 69 1.0945162224474805D+01 - 80 69 1.6646421716398900D+00 - 3 70 -2.2922010828352350D+14 - 6 70 7.1391856875047451D+04 - 7 70 -2.5713308810347835D+03 - 10 70 4.0305294443985581D+01 - 58 70 9.0715363850307063D-05 - 63 70 3.6864048325412654D+02 - 69 70 2.4779343931498872D+06 - 70 70 -2.6419344904856607D+06 - 73 70 9.4704468567750679D+04 - 74 70 3.4514730319035998D+01 - 80 70 3.0628908553342608D+01 - 81 70 1.3266724797304119D-02 - 3 71 -2.6378220859447203D+13 - 6 71 -5.5388395254770586D+00 - 7 71 3.5202371246417415D+03 - 10 71 1.0005968075943183D+04 - 60 71 2.6995466845802601D-01 - 61 71 7.1490548740442295D-01 - 65 71 6.2470428901854742D+00 - 67 71 1.7359506263337769D+03 - 68 71 1.7728014070397484D+02 - 71 71 -8.2318586659928496D+03 - 72 71 1.6474773070836815D+01 - 75 71 2.1902553119519300D-01 - 76 71 1.3149096479220484D+01 - 78 71 6.4251250961714277D+00 - 82 71 5.8542640616153474D-01 - 3 72 4.2570006294017719D+11 - 6 72 1.0840790504232114D+03 - 7 72 -1.2759414570864260D+03 - 10 72 6.2843432533256635D+02 - 61 72 7.8406442098154769D-02 - 62 72 6.2769697451137518D-01 - 66 72 1.0237819602564723D+02 - 68 72 2.8762245942592948D+01 - 69 72 1.1110297251716492D+01 - 71 72 9.7883210519852675D+00 - 72 72 -4.6421919920164160D+04 - 73 72 5.3517331253301892D-01 - 76 72 4.0273323666240067D+01 - 77 72 2.8585461689371152D+02 - 79 72 1.5837222395403567D+00 - 82 72 3.1535680641864478D-01 - 83 72 5.9383190606206102D-02 - 3 73 6.5468652934375586D+11 - 6 73 6.6197827200492429D+02 - 7 73 -1.1199266717871647D+03 - 10 73 1.5642433103694070D+03 - 62 73 5.5741526765276571D-02 - 63 73 4.4480703063107513D-06 - 67 73 1.0667172600550310D+02 - 69 73 1.7363750193610446D+01 - 70 73 1.6522691087919515D-06 - 72 73 3.0203386320013341D+00 - 73 73 -4.1484591033956269D+04 - 74 73 6.1804900390574811D-02 - 77 73 4.0635951194163526D+03 - 78 73 4.5470078422948667D+01 - 80 73 1.5779081640593930D+00 - 83 73 3.6031415256773887D+00 - 84 73 1.2555607710590184D+00 - 3 74 -1.6262739601400590D+13 - 6 74 6.1956047731611570D+03 - 7 74 -1.7880042584502642D+03 - 10 74 4.7002655824328701D+02 - 63 74 4.9420978568708524D-03 - 68 74 4.1249540504938996D+03 - 70 74 1.6316578338564148D-03 - 73 74 1.6748785880760924D+05 - 74 74 -2.3997308555755354D+05 - 78 74 1.1252723927580128D+03 - 79 74 6.2075999086653127D+01 - 81 74 8.8909919430203058D-02 - 84 74 1.4224445029889592D+01 - 85 74 9.6428149820398986D-03 - 3 75 3.9243053531081474D+10 - 6 75 -6.8365222390487190D+00 - 7 75 5.3405900309437770D+00 - 10 75 5.9901003591414073D+00 - 64 75 5.5543808125237605D-02 - 65 75 3.7220007162764674D-03 - 71 75 4.7558919321302895D+00 - 75 75 -2.4036121057733632D+02 - 76 75 5.5253284705105080D-06 - 88 75 2.0126227756441040D-03 - 3 76 -2.9336871302464741D+12 - 6 76 -6.8476618236061171D+01 - 7 76 4.6747868477250000D+02 - 10 76 1.8825304796497059D+02 - 65 76 2.6792066625023275D-01 - 66 76 7.4512383299335623D+00 - 71 76 3.1238521006401982D+02 - 72 76 1.6103629027588916D+03 - 75 76 6.0458525753206524D-06 - 76 76 -2.3477852759550220D+01 - 77 76 7.5505570805886848D+01 - 82 76 1.4510176215492496D+02 - 88 76 4.2891756329568658D-03 - 89 76 1.9343884741208548D-02 - 3 77 -8.4649937071901932D+10 - 6 77 3.0849672690511527D+00 - 7 77 7.0057312835135530D+00 - 10 77 2.2224033819385483D+01 - 66 77 8.0744313359367959D-01 - 67 77 1.3118744250461889D+00 - 72 77 7.1283493444685405D+01 - 73 77 1.7955337565319934D+02 - 76 77 4.7088813372375249D-01 - 77 77 -1.6079971325703727D+02 - 78 77 6.4621469728813205D-02 - 83 77 6.9139277967584487D+00 - 89 77 4.2805827785837094D-02 - 90 77 1.1105645068187058D+00 - 3 78 9.0994584962368652D+12 - 6 78 1.8992249898890076D-01 - 7 78 -1.7928008368114074D+03 - 10 78 5.0226531148633008D+01 - 67 78 1.2803110638019741D+00 - 68 78 3.0938419162030197D-02 - 71 78 8.2744983316222580D+00 - 73 78 1.8128521913882562D+01 - 74 78 1.6555825943299381D-04 - 77 78 5.8308241540010652D-01 - 78 78 -1.2151531758063140D+03 - 79 78 9.9015755617124626D+00 - 82 78 3.5994100958081108D+03 - 84 78 3.8223484321437784D+00 - 90 78 1.4339147114285241D+01 - 91 78 3.4733007123468596D+01 - 3 79 -2.7453159703145771D+12 - 6 79 1.3022921822646192D+03 - 7 79 -8.0724088254079436D+02 - 10 79 1.3382336844906574D+01 - 68 79 4.4835965901245900D-01 - 69 79 5.6711864321598182D-01 - 72 79 1.2380672957903626D+02 - 74 79 3.2937637231210171D-04 - 78 79 3.5710677426749294D+02 - 79 79 -5.2140849207165178D+04 - 80 79 3.1206450778050066D-01 - 82 79 1.5588765195267342D+03 - 83 79 1.2450439299561351D+03 - 85 79 1.5301468255518518D-02 - 91 79 4.2166045575084050D+00 - 92 79 6.7124015265016754D-02 - 3 80 7.2436223737460706D+11 - 6 80 7.6095748991585040D+01 - 7 80 -2.7880373811703839D+02 - 10 80 3.2526988088952305D+02 - 69 80 1.1840849921455847D+01 - 70 80 9.8538324327733914D-07 - 73 80 3.0005112884555438D+03 - 79 80 4.2840520866754304D+01 - 80 80 -1.1214679232330000D+04 - 81 80 1.7979113060628463D-01 - 83 80 2.9958741628755961D+03 - 84 80 5.0352966121030677D+03 - 86 80 5.5097256314838245D-03 - 92 80 4.5066236790544183D+00 - 93 80 6.1980822833274808D-02 - 3 81 -7.7349377275378965D+12 - 6 81 2.8358527459940901D+03 - 7 81 -9.8040897818408905D+02 - 10 81 2.0503715160228158D+00 - 70 81 1.7631139573989134D-04 - 74 81 2.5771879144944847D+01 - 80 81 7.4269578510183390D+04 - 81 81 -1.1633088416682843D+05 - 84 81 4.0136868226838604D+04 - 85 81 3.2883830322515543D+01 - 87 81 8.0527939362006022D-03 - 93 81 7.2722198693865634D+00 - 94 81 7.1320382329768759D-03 - 3 82 -8.8506209433070703D+12 - 6 82 -6.2435361271988121D-01 - 7 82 1.6827452157035398D+03 - 10 82 2.8300988210335873D+02 - 71 82 2.5195131711370145D-01 - 72 82 2.2843288442205806D-01 - 76 82 2.7184153498109174D+00 - 78 82 1.2028633488164767D+03 - 79 82 1.4444524392498757D+01 - 82 82 -3.8134292160006266D+03 - 83 82 9.9228003820484325D+00 - 88 82 1.6921091823416577D-02 - 89 82 4.4462900058887929D+00 - 91 82 6.8088790231945254D+01 - 99 82 1.8041359829061410D+00 - 3 83 9.7706587806282166D+10 - 6 83 2.8454381906611280D+02 - 7 83 -3.0592215334446712D+02 - 10 83 1.5432088535921423D+02 - 72 83 4.8937007830943463D-01 - 73 83 5.2613026597778942D+00 - 77 83 2.3629083345465648D+02 - 79 83 1.3124818829644931D+02 - 80 83 2.3004994517939008D+00 - 82 83 1.1288902356420554D+02 - 83 83 -1.4760758211855615D+04 - 84 83 1.0239993401285146D+00 - 89 83 3.3102248064284503D+01 - 90 83 1.7263619872321822D+03 - 92 83 1.3807603775480470D+00 - 99 83 1.1094893802636381D+00 - 100 83 2.1775545835630170D-02 - 3 84 1.9272007509135032D+12 - 6 84 4.6954058996975152D+02 - 7 84 -1.1665840041730592D+03 - 10 84 2.6878067916314449D+03 - 73 84 5.7259410934481615D+01 - 74 84 2.3937780144875828D-04 - 78 84 4.5216339712716990D+02 - 80 84 1.2075934157888094D+02 - 81 84 2.3304310169157687D-03 - 83 84 3.1981293643987925D+01 - 84 84 -4.8179767400806224D+04 - 85 84 1.1089894601620729D+00 - 90 84 1.9218052470219791D+04 - 91 84 1.0681288624487108D+03 - 93 84 1.3435684970174349D+00 - 100 84 1.5196805827136202D+00 - 101 84 3.1437425616266466D-02 - 3 85 -1.0367194884025732D+11 - 6 85 9.2984999501579580D+02 - 7 85 -6.7780967075007231D+02 - 10 85 5.0182635224889886D+01 - 74 85 1.5930145032653862D-03 - 79 85 4.9268788363911602D+02 - 81 85 1.8741423319938499D-02 - 84 85 1.0886658670359828D+04 - 85 85 -3.9625774776502949D+04 - 86 85 7.4525750233180954D-01 - 91 85 2.3315616308205354D+04 - 92 85 3.9790921202587874D+01 - 94 85 1.5273009633660700D-01 - 101 85 3.7771825850144172D+00 - 102 85 3.4214664826198752D-03 - 3 86 5.1058303403911719D+11 - 6 86 6.1926181176841499D+02 - 7 86 -6.2163586629575650D+02 - 10 86 1.6043213020982332D+01 - 80 86 1.6233376402902346D+02 - 85 86 9.3617265145906615D+01 - 86 86 -2.6829707512407815D+04 - 87 86 3.9531174790852647D-01 - 92 86 2.6530845456958905D+04 - 93 86 2.5659600460423245D+01 - 95 86 9.4598011079901581D-02 - 102 86 2.0887536044071040D+00 - 103 86 3.6039565190856878D-03 - 3 87 -4.2331644886938770D+11 - 6 87 1.0508784236062193D+03 - 7 87 -5.8671016142883013D+02 - 10 87 2.4501255515491951D+00 - 81 87 2.9068444521604700D+01 - 86 87 2.0006853952068526D+04 - 87 87 -4.6292647579083896D+04 - 93 87 2.5762305805948683D+04 - 94 87 2.2267555646027375D+01 - 96 87 2.8649536166369449D-02 - 103 87 4.5026155348674610D+00 - 104 87 2.1680990773443633D-03 - 3 88 3.5656768901584686D+10 - 6 88 -5.8663160225741446D+00 - 7 88 4.6729514479683507D+00 - 10 88 4.7748897632497140D+00 - 75 88 2.2986995584594491D-02 - 76 88 4.4770720179995629D-02 - 82 88 9.4289225140347828D+00 - 88 88 -2.2983803671305461D+02 - 89 88 3.4471920229343846D-05 - 108 88 2.6079779329021896D-03 - 3 89 -1.8147636681864651D+11 - 6 89 -4.9801589701040587D+00 - 7 89 3.2388672549871210D+01 - 10 89 -2.5972005426420908D+00 - 76 89 4.9781251834313924D-03 - 77 89 1.7949543976861895D+00 - 82 89 6.2064595913573712D+01 - 83 89 4.0614973103783491D+01 - 88 89 8.6364345896783749D-07 - 89 89 -6.3461501805741189D+00 - 90 89 1.5057064108564234D+02 - 99 89 2.6239784962906437D+01 - 108 89 5.0226504235772687D-07 - 109 89 2.0419004555078097D+01 - 3 90 -2.9862211656965111D+10 - 6 90 3.9666993531931807D+00 - 7 90 3.2046847696765990D-01 - 10 90 1.7602386856674090D+00 - 77 90 2.0131110732581886D-01 - 78 90 2.8806714697895031D-01 - 83 90 9.1565895134237145D+00 - 84 90 3.2637446027711374D+00 - 89 90 6.5090031207966259D-01 - 90 90 -2.1898660923678267D+02 - 91 90 1.0421521801803639D+00 - 100 90 5.2581978928787565D-01 - 109 90 1.9402209890457575D-01 - 110 90 1.5810779686975432D-01 - 3 91 1.2846132864260194D+11 - 6 91 3.2665396796231617D-03 - 7 91 -3.5599088245125820D+01 - 10 91 1.1507247483869165D+01 - 78 91 6.4425352205443875D-01 - 79 91 2.1686207123714054D-03 - 82 91 3.9198901100067292D+00 - 84 91 1.6748353887997627D-01 - 85 91 3.7242923529973740D-04 - 90 91 9.6222172763666691D-01 - 91 91 -1.2872267180856866D+03 - 92 91 1.0224624304354115D+00 - 99 91 1.4479432436174818D+03 - 101 91 5.7859908083284273D-01 - 110 91 1.6381736226801630D-01 - 111 91 2.6000474756964796D-02 - 3 92 6.6531053207471268D+10 - 6 92 4.3598498752998260D+01 - 7 92 -6.9793727752152677D+01 - 10 92 4.3930111006351891D-01 - 79 92 2.6209019622607337D-02 - 80 92 1.2817812028513729D-02 - 83 92 5.3045820115970521D+00 - 85 92 4.8252166475319289D-04 - 86 92 2.5615581393469097D-03 - 91 92 7.7624638250107500D+02 - 92 92 -3.9558391842459964D+03 - 93 92 1.6538765794899115D+00 - 99 92 9.2447680989029254D+02 - 100 92 2.1191923252738607D+03 - 102 92 7.9965529775512995D-02 - 111 92 1.1451653081503461D-01 - 112 92 3.3330582874171351D-03 - 3 93 3.8362973215813721D+11 - 6 93 2.1737929681084682D+00 - 7 93 -7.2984397972791641D+01 - 10 93 -4.3159496598711496D-02 - 80 93 4.4867857942479307D-04 - 81 93 1.2743884987054639D-07 - 84 93 4.2064032356675535D-01 - 86 93 6.3044557696091136D-06 - 87 93 1.2511243853509948D-07 - 92 93 4.2093742411668167D+00 - 93 93 -3.2179807508705685D+03 - 94 93 4.2885727710871718D-01 - 100 93 9.0853505279847042D+01 - 101 93 3.1909316580379636D+03 - 103 93 1.4390996038998164D-02 - 112 93 9.6718098527918983D-01 - 113 93 8.4529952932630090D-03 - 3 94 -5.2076048053526282D+11 - 6 94 4.8052587418638740D+02 - 7 94 -4.2270888673476486D+02 - 10 94 -9.3678995888147779D-02 - 81 94 7.5884777983673868D-07 - 85 94 2.9574376620635338D-02 - 87 94 6.5635465362974286D-07 - 93 94 2.6038761452515687D+03 - 94 94 -2.1687613218923532D+04 - 95 94 5.7150225244522546D-01 - 101 94 1.8960096973750104D+04 - 102 94 6.3157748150288739D+01 - 104 94 1.4411169321632519D-02 - 113 94 1.1427140006088077D+00 - 114 94 8.4010163219957090D-04 - 3 95 3.3044829241079309D+11 - 6 95 1.3037655775944626D+02 - 7 95 -2.1206025810683639D+02 - 10 95 -1.2009932769702913D-01 - 86 95 4.9183942318640145D-03 - 94 95 1.9276044076174951D+01 - 95 95 -9.7770580499965909D+03 - 96 95 1.9678081861738206D-01 - 102 95 5.9764268373244449D+03 - 103 95 3.8604804343046599D+03 - 105 95 2.9598893689538235D-03 - 114 95 1.4732094910665106D+00 - 115 95 6.6537311453407670D-04 - 3 96 9.8540813501572968D+10 - 6 96 4.9204139298748959D+02 - 7 96 -4.3631242998453644D+02 - 10 96 -1.0663054259190775D-01 - 87 96 3.8515892369926652D-04 - 95 96 2.5751501677620540D+03 - 96 96 -2.3140216622089447D+04 - 97 96 1.5018273167517610D-01 - 103 96 2.0493708196226991D+04 - 104 96 1.3252031054843794D+01 - 106 96 3.6749035680178256D-04 - 115 96 1.3325903922748927D+00 - 116 96 3.6881196951020359D-04 - 3 97 6.2504152954432816D+10 - 6 97 3.6307276872082639D+02 - 7 97 -3.9000160074595982D+02 - 10 97 -1.1210308475799327D-01 - 96 97 1.6724527815109795D+01 - 97 97 -1.8739544115824054D+04 - 98 97 4.2542270191261111D-02 - 104 97 1.7409109211981995D+04 - 105 97 1.3382794494304969D+03 - 107 97 1.1437823542634127D-07 - 116 97 1.4290538363748742D+00 - 117 97 2.6548539976155257D-04 - 3 98 -1.0599543091923950D+14 - 6 98 2.6500547122225682D+04 - 7 98 -4.4194046459324261D+02 - 10 98 -2.1867347172957738D-01 - 97 98 1.2508139894208906D+06 - 98 98 -1.2985313757185577D+06 - 105 98 2.1651516314909382D+04 - 106 98 3.6392378848022742D+00 - 117 98 2.8424649888957663D+00 - 118 98 2.9572327313911215D-04 - 3 99 -1.2498944960953035D+13 - 6 99 -2.2369826402393249D+00 - 7 99 3.1439621147430557D+03 - 10 99 2.5769471833694979D+02 - 82 99 8.0659767308082841D+00 - 83 99 4.3600690334642184D-01 - 89 99 8.7424944640657252D+00 - 91 99 1.1244522034850987D+05 - 92 99 9.4566058054935425D+01 - 99 99 -1.4067782810386235D+05 - 100 99 1.1831211083206516D+00 - 108 99 3.2046427455848978D-04 - 109 99 5.9570969642507976D+01 - 111 99 4.8862016965140240D-02 - 120 99 2.0662053374733442D-03 - 3 100 -2.6707538046024698D+11 - 6 100 1.0208426323384546D+02 - 7 100 -6.9657126197098520D+01 - 10 100 6.3866586439762813D+01 - 83 100 1.3821306774883060D-01 - 84 100 3.0884101383670853D-01 - 90 100 6.5455751778521130D+02 - 92 100 3.5012042123619030D+03 - 93 100 5.8975921694875737D+01 - 99 100 1.9109047531247445D+01 - 100 100 -1.0371646898148745D+04 - 101 100 1.9808757290670214D+00 - 109 100 4.5331462883047379D+03 - 110 100 1.5045017573455218D+03 - 112 100 1.5995581945769041D-01 - 120 100 2.6910094771265264D-01 - 121 100 1.4430709123286845D-03 - 3 101 2.7599693304706140D+11 - 6 101 3.5303696519696985D+01 - 7 101 -7.8601253146679881D+01 - 10 101 1.9658164719736185D+01 - 84 101 1.4159164421892070D-03 - 85 101 1.7329702425071897D-05 - 91 101 1.7288304561184682D+02 - 93 101 4.5904689250230308D+02 - 94 101 4.4923847526080124D-01 - 100 101 4.3899923683138053D-01 - 101 101 -4.4810310380062392D+03 - 102 101 2.1020408895055662D+00 - 110 101 1.5903547994501739D+03 - 111 101 2.5423373578113629D+02 - 113 101 1.2806577640768388D-01 - 121 101 3.9270863288082847D-01 - 122 101 1.1055227094554506D-03 - 3 102 2.6646530742641638D+11 - 6 102 2.6555362234993430D+02 - 7 102 -2.5709259150665105D+02 - 10 102 7.9346340085265621D-01 - 85 102 4.7008412693161132D-06 - 86 102 2.2845468627586934D-05 - 92 102 9.4246494370530574D+00 - 94 102 4.4812427680309591D-01 - 95 102 1.2572290575654994D+00 - 101 102 6.2947862083037899D+02 - 102 102 -1.2476217299801763D+04 - 103 102 1.0670866458828228D+00 - 111 102 1.3112726883589075D+03 - 112 102 2.4986385400024258D+02 - 114 102 6.2466118681230462D-02 - 122 102 6.7433436275743575D-01 - 123 102 9.6739805948258624D-04 - 3 103 -3.5867904182510056D+10 - 6 103 3.0119146040414279D+02 - 7 103 -3.0210409375978389D+02 - 10 103 2.8718386095879528D-01 - 86 103 2.1963640810604161D-07 - 87 103 5.4219046265823885D-09 - 93 103 3.7132269611196844D+00 - 95 103 4.5250811654349024D+00 - 96 103 1.8356510440772932D-03 - 102 103 5.9458282754677700D+00 - 103 103 -1.4216858019354348D+04 - 104 103 1.0446952392412971D+00 - 112 103 1.4150382557179772D+04 - 113 103 5.0240440526989730D+01 - 115 103 2.6626116004968451D-02 - 123 103 6.0187531811335171D-01 - 124 103 1.3021907832387013D-03 - 3 104 5.4672754128909314D+11 - 6 104 3.1837332629233350D+02 - 7 104 -2.8864182833639978D+02 - 10 104 -2.4698240338236359D-02 - 87 104 3.5404781264149106D-09 - 94 104 8.3051531771320175D-01 - 96 104 1.6096902890500133D-03 - 97 104 1.8989100650400517D-02 - 103 104 1.4167223432158669D+03 - 104 104 -1.5304269395921998D+04 - 105 104 3.7799806638649980D-01 - 113 104 1.3834264196543349D+04 - 114 104 2.0090781775615810D+01 - 116 104 2.6049669252389768D-03 - 124 104 1.2530775055007679D+00 - 125 104 4.8002056321526967D-04 - 3 105 2.8928898143155457D+11 - 6 105 2.9380569563882443D+02 - 7 105 -2.9386390846151193D+02 - 10 105 -4.3695292162692759D-02 - 95 105 1.2971190825476811D-01 - 97 105 3.7439492078968378D-02 - 98 105 2.0607632355752872D-08 - 104 105 9.6949505884277336D+00 - 105 105 -1.4411074019760566D+04 - 106 105 9.7576284884893505D-02 - 114 105 1.4386004802203912D+04 - 115 105 1.3496769877163493D+01 - 117 105 7.8258860610694859D-05 - 125 105 7.1418323551872753D-01 - 126 105 4.1600570974031638D-04 - 3 106 -2.5841769519830426D+13 - 6 106 5.9747377628400936D+03 - 7 106 -3.2634212794861753D+02 - 10 106 1.8859490073131679D-01 - 96 106 3.4907442083388633D+00 - 98 106 9.8222110829506436D-06 - 105 106 2.7677827629265864D+05 - 106 106 -2.9874637099892233D+05 - 107 106 9.7720170301929726D-02 - 115 106 1.6308815565166236D+04 - 116 106 4.6689449786251966D+00 - 118 106 2.3193321099572251D-05 - 126 106 1.4372836123592481D+00 - 127 106 1.8532003453118525D-04 - 3 107 -9.3699684890158359D+12 - 6 107 2.3659519061258247D+03 - 7 107 -3.4434011733037607D+02 - 10 107 7.3143183563636638D-01 - 97 107 1.0092894045812116D+01 - 106 107 1.0109220398829493D+05 - 107 107 -1.2067779230989264D+05 - 116 107 1.7548101658239262D+04 - 117 107 2.5703698387732339D+00 - 119 107 5.3738777837298518D-06 - 127 107 1.4800182405537825D+00 - 128 107 1.5522834975148018D-04 - 3 108 4.6228749201615372D+10 - 6 108 -7.3568734111342806D+00 - 7 108 6.3682454640572352D+00 - 10 108 5.8611104399254419D+00 - 88 108 1.8601862181589414D+01 - 89 108 1.4299386706668296D-01 - 99 108 2.7387381999474570D+02 - 108 108 -3.3789468190773215D+02 - 109 108 1.4013765645248377D-02 - 130 108 1.2537677183762242D-04 - 3 109 -1.2864477586973978D+10 - 6 109 -4.9022740146655763D-01 - 7 109 4.7666055614939074D-01 - 10 109 1.2984475795724117D+01 - 89 109 4.6731768899114290D-01 - 90 109 9.0671688892593416D-01 - 99 109 3.6120486318578151D+00 - 100 109 1.7018089800912684D+01 - 108 109 9.9441122964874849D-10 - 109 109 -1.6864026907673392D+02 - 110 109 3.6602406572211352D+00 - 120 109 2.7662849938634415D-01 - 130 109 1.7989867479716833D-06 - 131 109 2.6014083657697057D-05 - 3 110 1.4183825972268507D+07 - 6 110 -1.8431967039594330D+00 - 7 110 2.4316070352938843D+00 - 10 110 5.3620492567756795D-01 - 90 110 2.4670638525765689D+00 - 91 110 2.7684928510344013D+00 - 100 110 1.8858551644912676D+01 - 101 110 8.9950763406130534D+01 - 109 110 1.2221271459208729D+01 - 110 110 -1.3120128676503330D+02 - 111 110 2.2961212272004330D-01 - 121 110 1.9715392690515704D-01 - 131 110 4.1899076668401737D-02 - 132 110 3.4605885188138672D-04 - 3 111 6.7538048271858862D+11 - 6 111 -2.8463693542616786D-01 - 7 111 -1.6249996817524965D+02 - 10 111 -2.0756241529608704D-01 - 91 111 1.4732921532094637D-01 - 92 111 8.5471904951294397D-04 - 99 111 3.7194233426406991D-03 - 101 111 4.8213101114808916D+00 - 102 111 8.3041053928366845D-02 - 110 111 7.6987029604159540D-02 - 111 111 -8.5114999553412008D+02 - 112 111 1.3925583483576535D+01 - 120 111 7.6446452134171122D+03 - 122 111 1.4924476821640669D+00 - 132 111 2.8388950329621609D-01 - 133 111 1.1669707083880822D-04 - 3 112 1.4458946868800037D+11 - 6 112 5.2253027423205491D+00 - 7 112 -3.3971149887418768D+01 - 10 112 -2.5788920517809257D-02 - 92 112 1.7599785209805463D-05 - 93 112 2.0065817586235406D-03 - 100 112 5.3333906672881472D-04 - 102 112 1.1194491910727421D-02 - 103 112 1.1378265013986026D-01 - 111 112 9.8519569326997605D+00 - 112 112 -1.6893165215665431D+03 - 113 112 2.2502911851939356D+00 - 120 112 1.5882520348437754D+02 - 121 112 1.4686056420455836D+03 - 123 112 7.0430065439108430D-02 - 133 112 4.8241344576524601D-04 - 134 112 3.1246318071070688D-05 - 3 113 1.9908781282737354D+11 - 6 113 6.9355662835648590D-01 - 7 113 -3.7911621704016589D+01 - 10 113 -2.1479801333161505D-02 - 93 113 8.3954420014364417D-06 - 94 113 1.8692292855473883D-07 - 101 113 9.2238571938765910D-04 - 103 113 1.9338632133607771D-04 - 104 113 3.9269031499339134D-05 - 112 113 1.0772622014825273D+00 - 113 113 -1.8231547305387121D+03 - 114 113 1.0281039807731145D+00 - 121 113 3.2972371000802291D+01 - 122 113 1.2860764131569385D+03 - 124 113 3.2246935174930776D-02 - 134 113 9.8030594638381947D-03 - 135 113 1.5853484735603801D-05 - 3 114 -2.2507849566058817D+11 - 6 114 2.0310269181453566D+02 - 7 114 -2.0055748131032209D+02 - 10 114 -2.1738016832816336D-02 - 94 114 1.1134568542313272D-07 - 95 114 5.7890460318940041D-06 - 102 114 1.2173121717139509D-03 - 104 114 4.6205147611233094D-05 - 105 114 1.2901038369090548D-03 - 113 114 8.3301833394537584D+02 - 114 114 -1.0679968071522873D+04 - 115 114 1.0271449069399619D+00 - 122 114 6.4178313126779940D+03 - 123 114 7.3971135692228472D+02 - 125 114 1.8341658552834905D-03 - 135 114 1.3420295044654384D-03 - 136 114 1.8827474579083259D-04 - 3 115 2.6527382319796591D+11 - 6 115 1.2891139071828693D+01 - 7 115 -5.8670449769722595D+01 - 10 115 -2.0954972889145482D-02 - 95 115 1.0739746706374020D-08 - 96 115 1.6436410523027621D-09 - 103 115 3.8250712663320834D-04 - 105 115 4.9711411012973751D-06 - 106 115 2.1187417677446130D-09 - 114 115 4.2190997071967198D+00 - 115 115 -2.9392843336197916D+03 - 116 115 1.9815434717524319D-01 - 123 115 6.4018405874040513D+02 - 124 115 2.3392048069415146D+03 - 126 115 1.9210494879648827D-05 - 136 115 2.7767764227864783D-01 - 137 115 3.9520873917915406D-04 - 3 116 -9.7668371176848555D+12 - 6 116 2.1831662760011659D+03 - 7 116 -2.1542649170944202D+02 - 10 116 -4.6431149777275985D-02 - 96 116 2.2587950638044952D-07 - 97 116 7.8593495799626765D-06 - 104 116 1.3702514678062390D-02 - 106 116 3.0103490645095293D-07 - 107 116 1.0956637637300512D-09 - 115 116 9.8393200137336695D+04 - 116 116 -1.1134960719510134D+05 - 117 116 1.8903100179233198D-01 - 124 116 1.0979994952597839D+04 - 125 116 6.8737618549885582D+00 - 127 116 3.5175457997856396D-06 - 137 116 6.4206249348107347D-01 - 138 116 1.8225499578112528D-04 - 3 117 -1.1968582824051870D+12 - 6 117 4.5661078382033458D+02 - 7 117 -2.3032218014517804D+02 - 10 117 5.2470618600110104D-02 - 97 117 8.9174219630075639D-05 - 98 117 3.2472946344974932D-08 - 105 117 9.8024766527635887D-01 - 107 117 9.7841363956549184D-09 - 116 117 1.1544996317494564D+04 - 117 117 -2.3749598899767720D+04 - 118 117 1.2066600315978421D-01 - 125 117 1.1972152209638751D+04 - 126 117 3.6293845842668984D+00 - 128 117 8.4949745777800301D-07 - 138 117 3.7881648294935588D-01 - 139 117 9.3539020607304681D-05 - 3 118 -1.1370307807514975D+14 - 6 118 2.6513629651373041D+04 - 7 118 -2.4535883682462580D+02 - 10 118 4.1784029877113729D-02 - 98 118 3.8243955952813260D-05 - 106 118 1.1593858206373275D+00 - 117 118 1.3659526139854747D+06 - 118 118 -1.4052267085873301D+06 - 119 118 8.2757945327513238D-02 - 126 118 1.3000844139549101D+04 - 127 118 1.9821004832435971D+00 - 129 118 8.6203245383145278D-08 - 139 118 7.1347705302380071D-01 - 140 118 1.0409521728232891D-04 - 3 119 -1.5653946185767082D+13 - 6 119 3.2579310434732092D+03 - 7 119 -2.6669283241471175D+02 - 10 119 -1.6426108550816273D-02 - 107 119 4.9743995005939307D-01 - 118 119 1.5853714335505062D+05 - 119 119 -1.7593157177647846D+05 - 127 119 1.4399117888159702D+04 - 128 119 1.8012732221543302D+00 - 140 119 7.8998862479587140D-01 - 141 119 4.6521269314971044D-05 - 3 120 -3.5034163464351992D+12 - 6 120 -2.8051741576295726D+00 - 7 120 8.5079797182940524D+02 - 10 120 1.0557054027125232D-02 - 99 120 9.1094680467145066D-05 - 100 120 7.3455597199685964D-04 - 109 120 2.1043880288579178D-01 - 111 120 4.4276385782208727D+03 - 112 120 1.3002514365678459D+02 - 120 120 -4.0132064450582402D+04 - 121 120 1.8565732218667288D+00 - 130 120 4.7988506335613847D-05 - 131 120 7.2148319800584090D+01 - 133 120 2.0470230188369631D-04 - 142 120 3.0828823282609238D-05 - 3 121 -1.0361630854092651D+11 - 6 121 6.3707444503735955D+00 - 7 121 1.4343969290695696D+01 - 10 121 -6.4297473452155675D-03 - 100 121 5.9602432353857942D-06 - 101 121 7.3188143914909073D-03 - 110 121 6.7966646956598126D-02 - 112 121 1.8191956102689524D+03 - 113 121 8.5318304650130685D+01 - 120 121 2.8091788916533904D+00 - 121 121 -3.2060238102374010D+03 - 122 121 2.8498390891158558D+00 - 131 121 3.9215544695120843D+02 - 132 121 4.3357780725430621D+02 - 134 121 4.3753369579252700D-03 - 142 121 6.1685138303159120D-03 - 143 121 3.7499345221995489D-05 - 3 122 1.6566553735575623D+11 - 6 122 7.2613506336732927D+00 - 7 122 -2.7993372203477033D+01 - 10 122 1.8343499242220870D-01 - 101 122 3.4732502853353825D-06 - 102 122 7.0746253704417280D-06 - 111 122 2.5868047374946956D-01 - 113 122 5.6099012398657931D+02 - 114 122 3.4551020246101891D+00 - 121 122 4.8041600062450723D-01 - 122 122 -1.7828850875144146D+03 - 123 122 2.6028998999988726D+00 - 132 122 1.7786025030877113D+02 - 133 122 3.0692069049081971D+00 - 135 122 3.9718392561654398D-04 - 143 122 1.2076002811961195D-02 - 144 122 2.1519508987121915D-06 - 3 123 1.1298231134523933D+11 - 6 123 1.2832625252733800D+02 - 7 123 -1.3963856438582309D+02 - 10 123 3.1052261373517638D-02 - 102 123 3.1764938765774167D-07 - 103 123 3.5468076758953340D-05 - 112 123 5.4004496027226490D-01 - 114 123 1.2463760126848237D+01 - 115 123 2.6260634975062631D+00 - 122 123 8.1465541869135578D+01 - 123 123 -7.1335785590349069D+03 - 124 123 1.9036276027976757D+00 - 133 123 1.1966310291512800D+01 - 134 123 2.8984627539624785D+01 - 136 123 9.2876242550103440D-03 - 144 123 5.0937814096830647D-04 - 145 123 1.6546049052415819D-04 - 3 124 -1.0067798015788829D+11 - 6 124 1.5164916699879720D+02 - 7 124 -1.6183343321144213D+02 - 10 124 2.7907121707853193D-02 - 103 124 7.1043030502039299D-08 - 104 124 5.0411440039977992D-08 - 113 124 4.7818089331244618D-01 - 115 124 8.8834757515360430D+00 - 116 124 8.4074409003546738D-05 - 123 124 1.7623686058083827D+00 - 124 124 -8.2758284402085301D+03 - 125 124 1.2652255074491026D+00 - 134 124 3.1665908953619771D+02 - 135 124 2.5655850959326854D+00 - 137 124 1.0721601138548139D-02 - 145 124 7.0686606752845701D-02 - 146 124 5.0572413877811914D-04 - 3 125 -3.8176863230499419D+12 - 6 125 8.6231791446382340D+02 - 7 125 -1.4714651020076286D+02 - 10 125 5.7032098971042312D-02 - 104 125 5.5682704286515401D-07 - 105 125 3.2300806074219524D-05 - 114 125 9.6790653584881448D-01 - 116 125 1.5158507748715049D-03 - 117 125 4.3424665291483060D-05 - 124 125 3.6481838555761446D+04 - 125 125 -4.4850444680208799D+04 - 126 125 3.7483910019829886D-01 - 135 125 3.6380333745280794D+01 - 136 125 7.2854006764266472D+00 - 138 125 6.7951740026948664D-04 - 146 125 3.0146079643389151D-01 - 147 125 1.3330327113929779D-04 - 3 126 1.4316678382313742D+11 - 6 126 1.8942437721425949D+02 - 7 126 -1.6041463746981091D+02 - 10 126 7.9201222207667399D-01 - 105 126 7.6445807402052542D-05 - 106 126 9.3112738050538020D-08 - 115 126 1.0027583384990939D+01 - 117 126 5.3245791767420253D-05 - 118 126 1.6892876175702219D-08 - 125 126 1.5229830349781626D+03 - 126 126 -1.0055553050304350D+04 - 127 126 1.7382482507354535D-01 - 136 126 8.4872564065239330D+03 - 137 126 4.1675090710198255D+00 - 139 126 1.0350924409351442D-04 - 147 126 1.4270624379561847D-01 - 3 127 -7.3587731805832859D+13 - 6 127 1.5517974877791838D+04 - 7 127 -2.5376448315721618D+02 - 10 127 1.3498236231277101D+00 - 106 127 5.5877871137008890D-05 - 107 127 4.3137066348521261D-07 - 116 127 1.7210239477578913D+01 - 118 127 1.1955784897491069D-05 - 119 127 4.5546514031907706D-08 - 126 127 8.0902628379808925D+05 - 127 127 -8.3799557300166460D+05 - 128 127 3.6606408013486680D-01 - 137 127 1.3680072805973165D+04 - 138 127 5.0797563892705311D+00 - 140 127 5.1087088045130418D-05 - 3 128 -3.1147155431219741D+12 - 6 128 1.0210719120904522D+03 - 7 128 -2.8824858758355680D+02 - 10 128 5.6605048657664492D-01 - 107 128 4.8922057559031524D-06 - 117 128 7.3586553479463896D+00 - 119 128 6.1328223022033639D-07 - 127 128 3.9582815888501354D+04 - 128 128 -5.6170592330333369D+04 - 129 128 8.9845152462738664D-02 - 138 128 1.5843213168108157D+04 - 139 128 2.7253882511468812D+00 - 141 128 4.4733407512492811D-06 - 3 129 -1.1414484518619620D+15 - 6 129 2.8546041795621626D+05 - 7 129 -3.2876614301496778D+02 - 10 129 8.6897544429079421D-01 - 118 129 1.1513924636853023D+01 - 128 129 1.5682256245053563D+07 - 129 129 -1.5985800092273820D+07 - 139 129 1.8395240249473471D+04 - 140 129 3.5722575018396472D+00 - 3 130 6.2054682990459435D+10 - 6 130 -9.3889478210505359D+00 - 7 130 9.1108196329525715D+00 - 10 130 1.1101584198463443D+00 - 108 130 6.0391414021673951D-05 - 109 130 1.2211686015157007D+01 - 120 130 4.2825293962676847D+02 - 130 130 -4.4232503602335407D+02 - 131 130 2.8313739440141684D-02 - 148 130 6.0188261172512864D-06 - 3 131 7.0350300000517344D+08 - 6 131 -1.9838293854753097D+00 - 7 131 2.4737577893380913D+00 - 10 131 -3.9024993490318518D-03 - 109 131 8.8505753941899835D-06 - 110 131 3.4039540787356068D-03 - 120 131 2.5726594417220280D+01 - 121 131 9.2416898716626307D+01 - 130 131 1.1314462836956019D-09 - 131 131 -1.2254922072255664D+02 - 132 131 1.4095554678923301D+00 - 142 131 5.5020109363629922D-03 - 148 131 2.7519462121514353D-06 - 149 131 8.3531691559277941D-07 - 3 132 7.0614726537516346D+09 - 6 132 -7.4946930445448068D+00 - 7 132 9.5697873202590156D+00 - 10 132 3.8325112483741507D-02 - 110 132 2.8840511369015815D-05 - 111 132 7.0563416976969440D-02 - 121 132 1.0481661929862372D+02 - 122 132 2.5506243894981753D+02 - 131 132 1.4459640223391763D+00 - 132 132 -2.3607583737182662D+02 - 133 132 1.2256827359249404D-02 - 143 132 1.9002354072012378D-02 - 149 132 7.7487192172548775D-03 - 150 132 3.6554003605376125D-05 - 3 133 1.8111418527404496D+13 - 6 133 -2.3319221554791660D+01 - 7 133 -4.2701797986531346D+03 - 10 133 -4.5998023026825869D+00 - 111 133 7.3596235055917985D-03 - 112 133 4.3003707951502740D-02 - 120 133 2.3386431659167806D-02 - 122 133 1.1167509332586924D+03 - 123 133 1.3912408848202571D+02 - 132 133 3.1098696958561844D+00 - 133 133 -4.1522363897675075D+02 - 134 133 4.3396550804247745D+01 - 142 133 2.2536006011013076D+04 - 144 133 1.4701209184915290D-01 - 150 133 3.0242222148192127D-01 - 151 133 4.6581056754612362D-05 - 3 134 1.9189227084635986D+12 - 6 134 5.4089960238714902D+01 - 7 134 -4.4948769468266067D+02 - 10 134 -1.6336904493088478D-01 - 112 134 1.2596104813875940D-04 - 113 134 8.2549921868166690D-02 - 121 134 1.4939536137615830D-02 - 123 134 1.5238207754595468D+01 - 124 134 1.7982316007208476D+02 - 133 134 1.9624877762273825D+00 - 134 134 -1.0025610522368501D+03 - 135 134 4.2721977378490805D-01 - 142 134 2.0222864788544172D+02 - 143 134 2.3236717208211239D+03 - 145 134 3.8075371623316634D-01 - 151 134 9.6854970050583891D-05 - 152 134 2.6087094685272328D-05 - 3 135 1.7574563846925574D+13 - 6 135 1.5482927244013920D+01 - 7 135 -3.3697149120114645D+03 - 10 135 -1.0528509560337718D+00 - 113 135 1.1198023558565975D-03 - 114 135 1.1699355147929372D-04 - 122 135 6.7481069632854038D-02 - 124 135 1.2220799459575334D+01 - 125 135 6.0135299503591803D-03 - 134 135 3.5835469056999001D+00 - 135 135 -8.3635699566034316D+02 - 136 135 1.5641805124857700D+02 - 143 135 9.2301210947527153D+01 - 144 135 4.8168694130606872D+02 - 146 135 4.9885129469384681D-01 - 152 135 2.2773596350707238D-02 - 153 135 8.2810932822569819D-04 - 3 136 -2.9284196246072125D+11 - 6 136 1.3574404181759692D+02 - 7 136 -1.0756592609847065D+02 - 10 136 -5.6039369474936481D-03 - 114 136 9.1331759924845012D-07 - 115 136 3.2793116627579267D-04 - 123 136 2.8054880391073776D-03 - 125 136 6.6970999958753825D-05 - 126 136 1.9253260966775828D-05 - 135 136 8.7039569278292124D+00 - 136 136 -7.5674288474245368D+03 - 137 136 1.5312858265462388D+00 - 144 136 1.4450496313242372D+01 - 145 136 1.7717515950812765D+02 - 147 136 2.9596055494507541D-04 - 153 136 1.1845192297402470D-04 - 154 136 8.1794010444250794D-05 - 3 137 -6.6335544428257637D+10 - 6 137 1.0918093625343170D+02 - 7 137 -1.2797622621741371D+02 - 10 137 2.1838262272971663D-02 - 115 137 4.9035148304781108D-05 - 116 137 1.6043412243824620D-07 - 124 137 3.6752532126234616D-01 - 126 137 9.9060018750222916D-07 - 127 137 7.0028899252535627D-10 - 136 137 1.6087760175998329D+02 - 137 137 -7.0761276244339042D+03 - 138 137 4.1142474182345484D-01 - 145 137 2.7014411392054149D+03 - 146 137 1.1999775647531428D+03 - 154 137 9.9425412009883404D-02 - 155 137 2.0251598501085376D-04 - 3 138 -2.1613915382976770D+13 - 6 138 4.5557074754335745D+03 - 7 138 -1.8757524932323156D+02 - 10 138 1.8331421995142143D-02 - 116 138 2.6110323197519223D-05 - 117 138 8.8858932472593972D-07 - 125 138 4.6316173346702355D-01 - 127 138 1.4873982661285520D-07 - 128 138 4.3058190686823564D-09 - 137 138 2.3588685769331740D+05 - 138 138 -2.5057326027582976D+05 - 139 138 2.5539452754492575D-01 - 146 138 1.0308791425080695D+04 - 147 138 7.4911857206233758D+00 - 155 138 2.5069933889074941D-01 - 156 138 1.3142691033915250D-04 - 3 139 -5.9029823001842920D+11 - 6 139 3.2023601969107722D+02 - 7 139 -2.0949755902115152D+02 - 10 139 2.1596344789002891D-02 - 117 139 5.2329731905805878D-06 - 118 139 3.5260214346248931D-09 - 126 139 4.1413675764435998D-01 - 128 139 1.7601354181492056D-08 - 129 139 6.8685433029524962D-13 - 138 139 6.0910836520478524D+03 - 139 139 -1.7935003596123122D+04 - 140 139 1.7753438546968328D-01 - 147 139 1.1731425729445202D+04 - 156 139 1.4240932201283119D-01 - 157 139 7.1896125351627953D-05 - 3 140 -1.6608206469281147D+14 - 6 140 3.8957761941067249D+04 - 7 140 -9.9938014732774225D-03 - 10 140 2.2591691080320921D-02 - 118 140 6.3217202497165755D-06 - 119 140 2.5043991353172878D-08 - 127 140 5.3966528112319656D-01 - 129 140 1.6242237995678393D-09 - 139 140 2.1816346017512558D+06 - 140 140 -2.2205943593961876D+06 - 141 140 1.8267349117903209D-01 - 157 140 2.6070315197609117D-01 - 158 140 5.7702387855285863D-05 - 3 141 -8.4627860973994775D+12 - 6 141 1.4290834813619499D+03 - 7 141 -3.5431408785073885D-03 - 10 141 -6.6297248525836825D-03 - 119 141 6.5764302744724131D-07 - 128 141 1.9487274831790635D-01 - 140 141 8.1457462042211715D+04 - 141 141 -8.2888047460419009D+04 - 158 141 3.1719509797522744D-01 - 159 141 4.1207139963654267D-05 - 3 142 -1.8053782022119867D+13 - 6 142 -3.9235222873847675D+01 - 7 142 4.3405408616019658D+03 - 10 142 -2.6897956997813895D-02 - 120 142 6.3885924717477018D-05 - 121 142 8.4481609088733617D-03 - 131 142 3.3643247860289327D-02 - 133 142 4.0877564137673414D+02 - 134 142 8.1114625474983768D+01 - 142 142 -2.2764264592214917D+04 - 143 142 2.1995886024755054D+00 - 148 142 1.7769550544242862D-04 - 149 142 6.1629434896613077D+01 - 151 142 2.6600328858202445D-05 - 164 142 4.6385012196736809D-06 - 3 143 -1.6326114759932473D+12 - 6 143 -6.6812183373428446D+00 - 7 143 3.3917000530787601D+02 - 10 143 -2.7953401201907471D-04 - 121 143 4.7683063679934106D-05 - 122 143 9.1089228110883186D-02 - 132 143 1.0516440801432840D-01 - 134 143 8.6534786197505377D+02 - 135 143 4.0979005590216238D+00 - 142 143 2.0422125286146167D+00 - 143 143 -2.9355773934834760D+03 - 144 143 8.6613547550844064D-02 - 149 143 1.4132602807371288D+02 - 150 143 2.1295949234055104D+02 - 152 143 5.4584426288858869D-04 - 164 143 3.7221792708812636D-04 - 165 143 1.1766127385860188D-04 - 3 144 1.1454112633699258D+13 - 6 144 7.1920587553320445D+01 - 7 144 -8.6474691724318075D+02 - 10 144 4.3055210327229227D+00 - 122 144 6.2995857730606354D-04 - 123 144 4.7643659814142715D-03 - 133 144 1.2444759881696357D-01 - 135 144 8.2995653121951420D+02 - 136 144 4.4745177197332595D+02 - 143 144 3.3614143388624527D+00 - 144 144 -1.0934333494931491D+03 - 145 144 4.1403653377209940D+02 - 150 144 2.5009034469945433D+02 - 151 144 1.4473820610922926D+01 - 153 144 9.6380650284100290D-03 - 165 144 1.7442867689639419D-01 - 166 144 1.5824425692672174D-03 - 3 145 -2.4641507631953991D+10 - 6 145 2.0193007746825992D+02 - 7 145 -1.9971499064108929D+02 - 10 145 6.9483955522474480D-02 - 123 145 8.7333152309968022D-06 - 124 145 4.0300115599849699D-03 - 134 145 4.0220305898881044D-02 - 136 145 3.0958751311176247D+01 - 137 145 4.4930223952572694D+00 - 144 145 2.3364616441419899D+00 - 145 145 -5.5334932489005314D+03 - 146 145 4.2199164073407669D+00 - 151 145 6.5132104200614327D-01 - 152 145 1.3465209419621691D+00 - 154 145 3.7931440708819424D-02 - 166 145 4.9705680334858216D-04 - 167 145 3.6705735512145075D-04 - 3 146 -6.2387030897029411D+10 - 6 146 1.2383782879476389D+02 - 7 146 -1.2852350802001698D+02 - 10 146 2.3893089931550776D-01 - 124 146 6.9032052476338459D-05 - 125 146 1.4271140081076025D-06 - 135 146 1.5041029966961729D-02 - 137 146 4.7784018837417497D+00 - 138 146 7.1653294657807892D-05 - 145 146 1.0103481683113273D+01 - 146 146 -7.1026445699457809D+03 - 147 146 1.2390754557798285D+00 - 152 146 1.1432550250102667D+01 - 153 146 4.1376656140372925D-01 - 155 146 8.4209202631688584D-03 - 167 146 5.0908209051718466D-02 - 168 146 9.9059617957711712D-04 - 3 147 -4.8146348994980508D+12 - 6 147 1.0198539567098177D+03 - 7 147 -1.3883489342041096D+02 - 10 147 4.6898724896804767D-01 - 125 147 2.4686251185877013D-05 - 126 147 6.5044111259536934D-06 - 136 147 6.2733315381374917D+00 - 138 147 2.0353273588517048D-03 - 139 147 1.3402369948113172D-04 - 146 147 4.8471365073375237D+04 - 147 147 -5.7128484700136018D+04 - 153 147 1.1264716671497926D+01 - 154 147 9.1925352697647682D+00 - 156 147 9.9377902108007841D-04 - 168 147 6.4904036871659632D-02 - 169 147 9.7145228697843289D-05 - 3 148 6.2931839220028336D+10 - 6 148 -8.9185003165826124D+00 - 7 148 8.8270721613144172D+00 - 10 148 3.6454188911831376D-01 - 130 148 3.8232957233682984D-07 - 131 148 4.3745050353548214D+00 - 142 148 4.6196480024209855D+01 - 148 148 -4.5586474864961406D+02 - 149 148 4.0987799440616989D-03 - 177 148 3.1583741978851367D-06 - 3 149 1.1339605366417398D+09 - 6 149 -1.0280853105777917D+01 - 7 149 1.4490283685780867D+01 - 10 149 -7.4865062594685295D-04 - 131 149 1.6958234307961093D-06 - 132 149 1.7185725515667313D-02 - 142 149 2.2931072299424702D+01 - 143 149 5.6637065178209809D+01 - 148 149 5.8664735403088196D-09 - 149 149 -2.0638608912779247D+02 - 150 149 4.4990312180754322D-01 - 164 149 3.0544599556248781D-04 - 177 149 2.1189477087512390D-06 - 178 149 1.7287120969158978D-07 - 3 150 -1.3462245669267218D+11 - 6 150 -9.6961812816222448D+01 - 7 150 1.7757568654970109D+02 - 10 150 5.6524224258353739D-01 - 132 150 4.3348135876359960D-04 - 133 150 1.4134646632550220D-02 - 143 150 4.5632212824253031D+02 - 144 150 1.3808173329229744D+01 - 149 150 2.4055639291552535D+00 - 150 150 -4.6704991512067591D+02 - 151 150 2.9908626065835867D-03 - 165 150 1.1240445624347015D-02 - 178 150 6.6661831298282879D-04 - 179 150 3.7873829082433974D-05 - 3 151 1.8511692171755578D+14 - 6 151 -7.1124735263480545D+02 - 7 151 -4.7501726829403167D+04 - 10 151 -1.6324908866839596D+01 - 133 151 1.6158252565395849D-03 - 134 151 7.4294343415320763D-02 - 142 151 5.3639548395558595D-02 - 144 151 5.9310992214098269D+02 - 145 151 4.7296666347107803D+03 - 150 151 2.2197808815504101D+00 - 151 151 -1.9962131771863869D+02 - 152 151 4.8791651837779149D+01 - 164 151 1.7599362864181185D+04 - 166 151 1.1561049370669492D+00 - 179 151 1.4875060055930376D+00 - 180 151 3.1261274812777060D-02 - 3 152 1.4511267996855199D+13 - 6 152 9.1977615659636433D+02 - 7 152 -4.6228227355314020D+03 - 10 152 6.5150358386667440D-01 - 134 152 7.5599777180698129D-04 - 135 152 7.8679864108574971D-02 - 143 152 4.4788609663972204D-02 - 145 152 3.6940745203143229D+02 - 146 152 1.3100004838360680D+03 - 151 152 1.8433443140948196D+00 - 152 152 -4.8811196799278707D+02 - 153 152 2.8044929709806818D+00 - 164 152 1.5363769498812545D+02 - 165 152 6.5545240421741628D+03 - 167 152 1.8041349638113162D+00 - 180 152 9.1123729907439978D-03 - 181 152 2.0565322631725325D-02 - 3 153 2.8617148545734762D+13 - 6 153 1.0492129584276886D+02 - 7 153 -6.1219983278875370D+03 - 10 153 -5.3213650578891311D-02 - 135 153 3.2248845827005505D-03 - 136 153 8.2897021326686221D-03 - 144 153 2.2969220446860131D-02 - 146 153 5.3440985825530284D+01 - 147 153 3.7213226270783738D-02 - 152 153 3.1611788385457533D+00 - 153 153 -5.0250258214556311D+02 - 154 153 5.7901103408472682D+02 - 165 153 1.2584376381595574D+02 - 166 153 2.3167275516026443D+03 - 168 153 6.9275516616440680D-01 - 181 153 5.0269656369450721D-01 - 182 153 1.1865625493911072D-01 - 3 154 -3.7280717705745404D+11 - 6 154 1.3097018852057218D+02 - 7 154 -8.8013862423845950D+01 - 10 154 1.5786860127153982D-02 - 136 154 3.9851327672804168D-05 - 137 154 4.6108376164408915D-04 - 145 154 1.1152201082580761D-01 - 147 154 2.1129675950554142D-04 - 153 154 4.0309881050508301D+00 - 154 154 -7.8455485199091381D+03 - 155 154 1.6488403046519156D+00 - 166 154 3.1218336142333065D+01 - 167 154 3.8234775744100631D+02 - 169 154 2.1427942490814564D-04 - 182 154 1.3105219379851046D-03 - 183 154 1.8870270054468472D-04 - 3 155 4.0249441148058342D+10 - 6 155 3.0783334405152562D+01 - 7 155 -5.0397455165558036D+01 - 10 155 6.2306593475818656D-02 - 137 155 8.0294847596431966D-05 - 138 155 1.7336752896329537D-07 - 146 155 8.8409462892818302D-01 - 154 155 1.4096898501248663D+02 - 155 155 -3.0682894778495120D+03 - 156 155 7.7909474661461575D-01 - 167 155 1.6427287983032058D+03 - 168 155 1.3014497722204469D+03 - 170 155 1.9118191070376432D-05 - 183 155 2.9829030508824642D-02 - 184 155 6.1848784390635075D-04 - 3 156 -1.2887865803147477D+13 - 6 156 2.5842138049444343D+03 - 7 156 -1.2781208633090596D+02 - 10 156 3.1238732594523502D-02 - 138 156 1.6621677343085441D-05 - 139 156 7.5517136308428589D-07 - 147 156 4.8777217680254858D-01 - 155 156 1.4248389932980627D+05 - 156 156 -1.5248300515773948D+05 - 157 156 5.2942398568543758D-01 - 168 156 7.5285637315237063D+03 - 169 156 1.2036071786401088D+01 - 171 156 1.1790115167993962D-05 - 184 156 5.5776542367837904D-02 - 185 156 6.5405185523376258D-05 - 3 157 -2.8224399196381500D+11 - 6 157 1.8804810874775421D+02 - 7 157 -1.5790514722594241D+02 - 10 157 -1.9024383631728867D-03 - 139 157 1.2915941424763861D-06 - 140 157 3.8112428145112632D-10 - 156 157 1.7935626838086396D+03 - 157 157 -1.1299555584506918D+04 - 158 157 2.6042827147334502D-01 - 169 157 9.4591521370473147D+03 - 170 157 1.5409309459771771D+01 - 172 157 1.3628997480658812D-06 - 185 157 2.9920238374226003D-02 - 186 157 4.3943020344703423D-05 - 3 158 -1.2371055649672003D+14 - 6 158 2.7854782730954954D+04 - 7 158 -1.4157905498705071D+02 - 10 158 -3.7643602528059047D-03 - 140 158 5.3859734026097424D-07 - 141 158 6.6396123420943320D-09 - 157 158 1.6627973345191905D+06 - 158 158 -1.6991483595683624D+06 - 159 158 3.6217847682207316D-01 - 170 158 8.6314221664423130D+03 - 171 158 4.9805611592243153D+00 - 173 158 1.0099416508546395D-06 - 186 158 6.0193216423673028D-02 - 187 158 3.6714586708170736D-05 - 3 159 -1.1347760705550813D+12 - 6 159 3.6080959055806528D+02 - 7 159 -1.5207190422033312D+02 - 10 159 -4.0051584787463351D-03 - 141 159 3.0338319056351609D-08 - 158 159 1.2738691073031110D+04 - 159 159 -2.2377194418692972D+04 - 160 159 1.5463142842124650D-01 - 171 159 9.4227626816132797D+03 - 172 159 5.7872672537452798D+00 - 174 159 1.8022732446068759D-07 - 187 159 6.5064338689230075D-02 - 188 159 1.9637906958568491D-05 - 3 160 -6.0819980688230588D+14 - 6 160 1.6106979158150879D+05 - 7 160 -1.4836334717299201D+02 - 10 160 -3.9469637031435550D-03 - 159 160 9.9771310527049024D+06 - 160 160 -1.0147400665499229D+07 - 161 160 1.9292869354077224D-01 - 172 160 9.3444773535776276D+03 - 173 160 2.4530995512401734D+00 - 175 160 1.6729171238147741D-07 - 188 160 6.5109664162066969D-02 - 189 160 1.5297976090657631D-05 - 3 161 -1.5868386024263021D+13 - 6 161 2.9304922173995096D+03 - 7 161 -1.3874545005462915D+02 - 10 161 -3.5402115933167457D-03 - 160 161 1.7588247329842829D+05 - 161 161 -1.8755513896222069D+05 - 162 161 1.1426799760368923D-01 - 173 161 8.8773016186523837D+03 - 174 161 2.4472512948813239D+00 - 176 161 2.3762583054817026D-08 - 189 161 5.9287120714345262D-02 - 190 161 1.1569856069365497D-05 - 3 162 -4.3122871007950335D+15 - 6 162 1.2867867604757824D+06 - 7 162 -1.2650464499969938D+02 - 10 162 -3.0853795536589959D-03 - 161 162 8.2346257966199398D+07 - 162 162 -8.3641142350296825D+07 - 163 162 2.4706281967379573D-01 - 174 162 8.2213851803046855D+03 - 175 162 1.4466574195406467D+00 - 190 162 5.2451452412202920D-02 - 3 163 -4.5923446858323312D+13 - 6 163 8.7005158789459056D+03 - 7 163 -1.3012235871779387D+02 - 162 163 5.5707693520438205D+05 - 163 163 -5.7423643998318340D+05 - 175 163 8.5867131339551688D+03 - 176 163 1.3981246180843034D+00 - 3 164 -2.0878007918812259D+14 - 6 164 -4.6031869458351292D+02 - 7 164 5.2248621000776213D+04 - 10 164 -8.1552769203237008D-02 - 142 164 9.6530241423524739D-05 - 143 164 8.3430370941941275D-03 - 149 164 1.8006119881072369D-02 - 151 164 1.8162900086669339D+02 - 152 164 4.1968747198230595D+01 - 164 164 -1.7764395302944402D+04 - 165 164 1.1041649273624230D+01 - 177 164 3.3792650894629695D-04 - 178 164 4.2613970510912942D+01 - 180 164 1.6509272451343119D-03 - 191 164 1.2870995322736360D-02 - 3 165 -1.8627355478543711D+13 - 6 165 -4.7574296887442209D+01 - 7 165 4.1118394785609407D+03 - 10 165 6.2301309133421590D-01 - 143 165 5.7385814008346274D-04 - 144 165 2.1920558837602803D-02 - 150 165 2.6965886912401343D-02 - 152 165 3.8959459504467009D+02 - 153 165 6.6360449092431777D+00 - 164 165 2.4025810286572851D+00 - 165 165 -6.9704125028612980D+03 - 166 165 7.5562063494609244D-01 - 178 165 5.2701949397017074D+01 - 179 165 3.1711601361120768D+02 - 181 165 2.6210983481130642D-02 - 191 165 1.0373772454979141D-02 - 192 165 5.2483735920893400D-03 - 3 166 -2.2212997132327555D+13 - 6 166 4.2124126107384228D+01 - 7 166 4.8982177199680718D+03 - 10 166 1.7066384219974307D+01 - 144 166 7.9946653414885067D-04 - 145 166 4.4499941468540645D-02 - 151 166 1.5022880810036176D-02 - 153 166 4.9112432479824014D+02 - 154 166 9.5061065679010062D+02 - 165 166 3.0376831181038333D+00 - 166 166 -2.7724812142269311D+03 - 167 166 5.3756208233258315D+02 - 179 166 1.4169244883833022D+02 - 180 166 7.8284945111851783D+01 - 182 166 7.1300562690714997D-02 - 192 166 3.2584755630273354D-02 - 193 166 1.4520750475947677D-01 - 3 167 -1.2216333178400087D+11 - 6 167 5.5863537058833430D+01 - 7 167 -3.9200470281826128D+01 - 10 167 3.8880383045655154D-01 - 145 167 4.7574444592990108D-04 - 146 167 2.7558766601774483D-02 - 152 167 8.9836137729443731D-03 - 154 167 1.6855330167627642D+02 - 155 167 8.4703025548777990D+00 - 166 167 7.7824258512395996D+00 - 167 167 -3.8142133019666990D+03 - 168 167 2.4032515672281454D+00 - 180 167 2.5705552964219454D+00 - 181 167 2.4028595709253072D+01 - 183 167 1.4423019020030837D-02 - 193 167 5.3176280314647800D-03 - 194 167 6.6789550435637454D-04 - 3 168 2.7537233984147034D+09 - 6 168 5.0080603481697096D+01 - 7 168 -6.0133576164074668D+01 - 10 168 1.6066257908632431D+00 - 146 168 5.7245690943822126D-03 - 147 168 9.5880772297038133D-06 - 153 168 3.2669482591732087D-02 - 155 168 7.1636574146603010D+01 - 156 168 2.2660974886802507D-03 - 167 168 2.5655076673014765D+01 - 168 168 -3.7216355024968002D+03 - 169 168 8.9279923288192564D-01 - 181 168 1.8490086899314338D+02 - 182 168 3.3845012199725488D+01 - 184 168 9.0184228700890649D-03 - 194 168 5.9823576708120376D-03 - 195 168 2.4228265930117988D-03 - 3 169 -1.1584832604944221D+12 - 6 169 2.9402570191457937D+02 - 7 169 -7.9802714353095965D+01 - 10 169 1.4467120334733878D+00 - 147 169 2.0393850306830354D-04 - 154 169 2.0627081261708696D+01 - 156 169 5.1479807618096833D-02 - 157 169 1.1942823851101047D-02 - 168 169 1.2687420301584032D+04 - 169 169 -1.7693543306573476D+04 - 170 169 1.8071642483684633D+00 - 182 169 2.3636677157667918D+02 - 183 169 2.6083673230253790D+01 - 185 169 5.4196844147591961D-04 - 195 169 1.1958753839843659D-02 - 196 169 3.7298265018582716D-04 - 3 170 -4.6557478715552414D+10 - 6 170 1.0392427406047044D+02 - 7 170 -9.2414663339982809D+01 - 10 170 5.8256935967822332D-01 - 155 170 8.4605131387957027D+00 - 157 170 7.6464465258712158D-03 - 158 170 6.7238120548191232D-07 - 169 170 7.1028984187414721D+02 - 170 170 -6.3615258686072675D+03 - 171 170 1.0912892862291899D+00 - 183 170 5.6183132919534064D+03 - 184 170 1.0256466176872399D+01 - 186 170 2.2925084247464386D-04 - 196 170 1.3753378504342433D-02 - 197 170 6.5634939714171998D-04 - 3 171 -3.5403241085172266D+13 - 6 171 6.8495909541812571D+03 - 7 171 -9.9369642605073821D+01 - 10 171 7.2817574480727920D-01 - 156 171 1.0765321064490848D+01 - 158 171 1.4606242100179728D-04 - 159 171 7.8914725961750096D-06 - 170 171 4.1178813862283761D+05 - 171 171 -4.2470239829668618D+05 - 172 171 1.7172674030451955D+00 - 184 171 6.1375396673032756D+03 - 185 171 1.2260532815678708D+01 - 187 171 6.3654806234991336D-05 - 197 171 2.7156404500331171D-02 - 198 171 2.3927948729582671D-05 - 3 172 -6.0813060995786536D+11 - 6 172 2.2415416658569333D+02 - 7 172 -1.0052070324783108D+02 - 10 172 1.0839521796355567D-01 - 157 172 1.6411678011714683D+00 - 159 172 2.1558779848741806D-05 - 160 172 5.4139328264686821D-10 - 171 172 7.6724018587380042D+03 - 172 172 -1.4130518571754566D+04 - 173 172 5.5648243310504020D-01 - 185 172 6.3260941635808822D+03 - 186 172 5.0662556013631894D+00 - 188 172 1.5063709579773255D-05 - 198 172 1.6748421180366738D-02 - 3 173 -1.9709394084751012D+14 - 6 173 4.1009022318096919D+04 - 7 173 -1.0639524447883005D+02 - 10 173 5.7836448475103233D-02 - 158 173 8.8201542271077815D-01 - 160 173 6.5584410672665998D-07 - 161 173 2.8292334104455768D-09 - 172 173 2.5768720813948843D+06 - 173 173 -2.6245862463923413D+06 - 174 173 1.1495541955573791D+00 - 186 173 6.8037533912600747D+03 - 187 173 4.6951153267273158D+00 - 189 173 1.0526101400343199D-05 - 3 174 -5.6693220379208643D+12 - 6 174 1.1220032559214026D+03 - 7 174 -1.0221597862591287D+02 - 10 174 1.6392415468909734D-02 - 159 174 2.5408352126321260D-01 - 161 174 4.0748968818556698D-08 - 162 174 1.8996016944828082D-13 - 173 174 6.5269101720946805D+04 - 174 174 -7.2934273035836988D+04 - 175 174 3.0324300488349559D-01 - 187 174 6.6415831870202237D+03 - 188 174 2.2271304059717996D+00 - 190 174 1.1861559289669711D-06 - 3 175 -1.2573625296793610D+15 - 6 175 3.1298261349448009D+05 - 7 175 -1.0803292148221198D+02 - 10 175 1.5564492246283656D-02 - 160 175 2.4514075287896761D-01 - 162 175 2.2416995537859698D-09 - 163 175 5.9010533898298864D-12 - 174 175 2.0336850406967435D+07 - 175 175 -2.0656856764707863D+07 - 176 175 5.3894630843473346D-01 - 188 175 7.1280252995515020D+03 - 189 175 1.9522163300139510D+00 - 3 176 -2.8321672378081266D+13 - 6 176 5.2512264834095067D+03 - 7 176 -1.0486270894475422D+02 - 10 176 1.5044919107234729D-03 - 161 176 2.4071870571575567D-02 - 163 176 6.0555114190020029D-10 - 175 176 3.3966154522621422D+05 - 176 176 -3.5183474900943128D+05 - 189 176 7.0242573483759243D+03 - 190 176 1.5570840132656434D+00 - 3 177 6.0276236273227943D+10 - 6 177 -7.9362290757054517D+00 - 7 177 7.8655054161686966D+00 - 10 177 2.8199481490070682D-01 - 148 177 2.1065798451765466D-06 - 149 177 9.8744114412093920D-01 - 164 177 2.6718163323679365D+00 - 177 177 -4.3757099064900490D+02 - 178 177 4.0749703038376613D-04 - 199 177 7.2333710710477909D-07 - 3 178 -5.8651653363167099D+10 - 6 178 -3.0125539025401476D+01 - 7 178 5.2622760371677792D+01 - 10 178 -7.3334437688430615D-03 - 149 178 1.4527573077173049D-06 - 150 178 1.3763065350900037D-03 - 164 178 7.9799990197760939D+00 - 165 178 4.5356433008813433D+01 - 177 178 9.6531557379654151D-09 - 178 178 -9.8126081155847345D+01 - 179 178 2.1450787427681650D+00 - 191 178 1.3761064124061118D-01 - 199 178 1.3222850998931427D-10 - 200 178 1.7372507470635862D-03 - 3 179 -6.4485696698926831D+11 - 6 179 -6.7445535239436254D+01 - 7 179 2.1380554170806815D+02 - 10 179 3.9629820991247420D+00 - 150 179 6.5729261653864164D-05 - 151 179 3.4782705389901328D-03 - 165 179 2.2940650132012877D+02 - 166 179 2.5497420358697809D+01 - 178 179 1.8031208307822908D+00 - 179 179 -4.6547356638056527D+02 - 180 179 6.8423148387830188D-02 - 192 179 8.9060844514666879D-02 - 200 179 9.1397075303461972D-05 - 201 179 8.9789529382725223D-03 - 3 180 -3.5037105927875547D+12 - 6 180 -5.1720176587145573D+01 - 7 180 -1.2712961710790411D+02 - 10 180 3.1513151947486544D+00 - 151 180 2.1657960906946543D-03 - 152 180 1.6710226247276097D-02 - 164 180 1.1675191139603542D-02 - 166 180 4.1738233649363156D+02 - 167 180 9.4667089724367031D+02 - 179 180 2.0272590025193566D+00 - 180 180 -1.7173843366691654D+02 - 181 180 1.3466917138886129D+02 - 191 180 7.2686964885139139D+04 - 193 180 2.0790841067100416D+00 - 201 180 2.6768375442562809D-04 - 202 180 6.7084089036445849D-01 - 3 181 -5.6864785031566269D+10 - 6 181 3.2968337114193645D+01 - 7 181 -5.4100328445968344D+01 - 10 181 8.4388278414040185D-01 - 152 181 7.2583150169009780D-04 - 153 181 1.5740255085161910D-02 - 165 181 1.6395493525338374D-02 - 167 181 1.7031223103626220D+02 - 168 181 1.2276765258012615D+02 - 180 181 2.5918963127328056D+00 - 181 181 -3.7825706597350683D+02 - 182 181 2.7503801433647781D+00 - 191 181 6.5477923281967163D+00 - 192 181 3.5397973592911417D+03 - 194 181 3.6269571118214820D-02 - 202 181 9.3522176550683463D-03 - 203 181 1.6626784789678040D-02 - 3 182 3.8447633778328772D+11 - 6 182 2.1866859022649168D-01 - 7 182 -1.0142829660083621D+02 - 10 182 3.5391259535754377D-01 - 153 182 4.4454442229492604D-03 - 154 182 7.0525330856842511D-03 - 166 182 1.3274382904404951D-02 - 168 182 2.6887951625698747D+01 - 169 182 1.3216633560299449D-02 - 181 182 3.2908753132674802D+00 - 182 182 -3.1202261129562186D+02 - 183 182 4.2137630803031996D+01 - 192 182 1.5628488806681067D+00 - 193 182 6.2112586981829882D+03 - 195 182 2.1122244010848269D-02 - 203 182 1.1022882036332139D-03 - 204 182 3.7825863823535373D-02 - 3 183 -3.3078608408156720D+11 - 6 183 6.5859559247603315D+01 - 7 183 -1.9019302252878607D+01 - 10 183 5.2658143332827784D-02 - 154 183 4.1468261299289931D-03 - 155 183 7.6671159309610326D-03 - 167 183 7.5740699555293356D-01 - 169 183 5.9545704708326135D-03 - 170 183 3.2664044120388732D-03 - 182 183 1.7207122570015218D+02 - 183 183 -4.6727760440052161D+03 - 184 183 2.8161447306996266D+00 - 193 183 5.1141978974071446D+02 - 194 183 6.5859301738624890D+02 - 196 183 1.7610296419271507D-04 - 204 183 5.0837916640888870D-03 - 205 183 1.1025693547577762D-03 - 3 184 5.9199054751644714D+10 - 6 184 1.3647909131008558D+00 - 7 184 -1.4461586610390780D+01 - 10 184 4.7312060535757101D-02 - 155 184 2.5055200593512420D-03 - 156 184 1.2355017404065130D-06 - 168 184 6.9920285048220387D-01 - 170 184 9.3889194808476921D-05 - 171 184 1.4930115015588798D-07 - 183 184 4.4384247300932003D+01 - 184 184 -9.4352456952784394D+02 - 185 184 7.9997081294968297D-01 - 194 184 4.0290983665441949D+01 - 195 184 8.6939271043842632D+02 - 197 184 1.0476270687973913D-04 - 205 184 1.5404424900386066D-03 - 206 184 2.6920971120510738D-03 - 3 185 -3.4482760425721323D+12 - 6 185 6.9558971621988019D+02 - 7 185 -7.4602816886242124D+01 - 10 185 9.1129688675050582D-03 - 156 185 6.9839164956124057D-05 - 157 185 9.4305856157966878D-06 - 169 185 1.4253512539939506D-01 - 171 185 1.4337977515090233D-05 - 172 185 1.6640772284633608D-06 - 184 185 3.8562818685314058D+04 - 185 185 -4.3886686773012545D+04 - 186 185 9.1767241660409116D-01 - 195 185 4.6382496277561140D+03 - 196 185 6.2555631675618905D+01 - 198 185 9.9615728555038355D-06 - 206 185 6.5031888644010378D-03 - 3 186 -1.7075300289486977D+10 - 6 186 4.3492890224390223D+01 - 7 186 -5.4810958342370398D+01 - 10 186 3.4827554404291668D-03 - 157 186 4.7950676182812566D-06 - 158 186 1.0287321070078895D-09 - 170 186 5.3107144452400765D-02 - 172 186 4.5909530630924982D-07 - 173 186 1.3444769113938973D-10 - 185 186 3.1770184168838574D+02 - 186 186 -3.8321884355653460D+03 - 187 186 5.5084203307416679D-01 - 196 186 2.4613426138381928D+03 - 197 186 1.0628546109684553D+03 - 3 187 -2.2657289979900562D+13 - 6 187 4.7199037168187906D+03 - 7 187 -7.2283433177911746D+01 - 10 187 1.3614839781238793D-03 - 158 187 3.3883762152486162D-07 - 159 187 1.7072346068402407D-08 - 171 187 2.1102640196237428D-02 - 173 187 4.9615530528403407D-08 - 174 187 1.2512959341003445D-09 - 186 187 2.9745728821883915D+05 - 187 187 -3.0680502452238963D+05 - 188 187 5.5137095410894144D-01 - 197 187 4.6892262640666268D+03 - 198 187 9.3159203579627974D+00 - 3 188 -2.5946903285000854D+11 - 6 188 1.1733254157126481D+02 - 7 188 -8.6315397524907254D+01 - 10 188 2.5952973656270876D-04 - 159 188 1.8843688801114176D-08 - 160 188 9.6829846620256356D-13 - 172 188 4.0875742022750986D-03 - 174 188 1.5158653100710542D-09 - 175 188 7.2341927799881732D-14 - 187 188 2.0163488571350379D+03 - 188 188 -7.7454196649877649D+03 - 189 188 2.3736222437991014D-01 - 198 188 5.6968119544576903D+03 - 3 189 -8.4096087163363484D+13 - 6 189 1.8050150651495966D+04 - 7 189 -4.8371898929114165D-05 - 10 189 1.9348767457894452D-04 - 160 189 1.1418517745602167D-09 - 161 189 4.8541387564785959D-12 - 173 189 3.0958016284325673D-03 - 175 189 9.9440302199371312D-11 - 176 189 5.6772084503560014D-13 - 188 189 1.1913102467257027D+06 - 189 189 -1.2093617135489341D+06 - 190 189 3.1293081664719768D-01 - 3 190 -1.4662062920837800D+12 - 6 190 2.3454777251916741D+02 - 7 190 -4.7469369109633480D-06 - 10 190 1.8987750994319313D-05 - 161 190 4.7570331561473476D-11 - 162 190 2.9925869816326118D-16 - 174 190 3.0855090534377157D-04 - 176 190 6.3198047669477289D-12 - 189 190 1.5714700758784220D+04 - 190 190 -1.5950248854095158D+04 - 3 191 -1.4784934541971831D+14 - 6 191 -4.8963012529582928D+00 - 7 191 5.3925981184583834D+04 - 10 191 7.4852165135442317D-01 - 164 191 4.8545920183215669D-03 - 165 191 1.7981801786614487D-02 - 178 191 2.9237103461740743D-01 - 180 191 3.8766899519867502D+03 - 181 191 1.8144814539697641D+01 - 191 191 -3.1816692472247565D+06 - 192 191 7.3155558954545652D-01 - 199 191 4.5759101660639638D-07 - 200 191 7.1511313050050465D+00 - 202 191 8.1963881005022304D-03 - 3 192 -2.7301903655985148D+13 - 6 192 -3.5830855567002167D+00 - 7 192 7.6103759624116237D+03 - 10 192 1.7043321840780412D+00 - 165 192 2.6280588536306937D-02 - 166 192 4.0586865992173288D-02 - 179 192 6.5028182968769832D-01 - 181 192 2.8336574782575262D+04 - 182 192 1.0456074859030231D+01 - 191 192 2.1133001674298617D+00 - 192 192 -4.5694591726511135D+05 - 193 192 1.4411662438286834D+00 - 200 192 3.5304937921025070D-01 - 201 192 1.3943986744668794D+02 - 203 192 5.9921008317389470D-03 - 3 193 -6.9959217003812041D+12 - 6 193 -1.8560627555428184D+00 - 7 193 1.8207082334946879D+03 - 10 193 3.9944902341365829D+00 - 166 193 2.3748102565604504D-02 - 167 193 6.0071906127269793D-02 - 180 193 6.7274227270746251D-02 - 182 193 5.4562979725202504D+03 - 183 193 1.1001695131243120D+02 - 192 193 1.8922650024368418D-01 - 193 193 -1.1168949012383012D+05 - 194 193 3.4636790439610374D+00 - 201 193 7.5290708561752975D-02 - 202 193 2.5589578732961007D+02 - 204 193 4.7465296612451725D-03 - 3 194 -1.2682822419476973D+12 - 6 194 1.1665573874657328D+01 - 7 194 2.5291405421215276D+02 - 10 194 7.6320148509969661D+00 - 167 194 8.6660994087065946D-01 - 168 194 7.2713191250318709D-01 - 181 194 7.0037790003704119D+00 - 183 194 1.6272711317224099D+04 - 184 194 6.3165234828259365D+01 - 193 194 3.9783237046975330D+02 - 194 194 -1.7935896626384983D+04 - 195 194 4.3010392527264747D+00 - 202 194 3.8707317858643199D+02 - 203 194 4.2503836563848932D+02 - 205 194 3.2499716496881682D-03 - 3 195 -2.5507135652716669D+11 - 6 195 1.1548855045218507D+00 - 7 195 5.1323294844180339D+01 - 10 195 1.3805140518968775D+01 - 168 195 8.8801460083216999D-01 - 169 195 3.0843535110555280D-04 - 182 195 1.0279392392653522D+01 - 184 195 4.1099948947742459D+03 - 185 195 4.5488357922279832D-01 - 194 195 1.2969680557025404D+01 - 195 195 -5.1408298984048333D+03 - 196 195 5.6739974760772878D+00 - 203 195 6.5619450305118434D+01 - 204 195 6.7176691457898460D+02 - 206 195 2.4616831303711090D-03 - 3 196 -2.0994711459094485D+12 - 6 196 3.8841325049038534D+02 - 7 196 -5.9926194449773071D+01 - 10 196 5.0613599612481837D+00 - 169 196 3.5361188744737294D-02 - 170 196 3.3174860708963688D-03 - 183 196 7.7146471381073425D+01 - 185 196 2.2550546060306537D+01 - 186 196 2.5629689832787270D+00 - 195 196 2.0856869543030691D+04 - 196 196 -2.5079433271371629D+04 - 197 196 4.3081027571535202D+00 - 204 196 3.6773252592172007D+03 - 205 196 1.0408328526525409D+02 - 3 197 -3.7787761849768745D+10 - 6 197 4.9801641615629720D+01 - 7 197 -5.7148929250357966D+01 - 10 197 1.0403759587194719D+01 - 170 197 8.7670172747116495D-03 - 171 197 9.6128994933686572D-07 - 184 197 1.6124936190135881D+02 - 186 197 6.1284211749133966D+01 - 187 197 5.0161074655059748D-04 - 196 197 2.3856250733241453D+02 - 197 197 -4.0850912328279715D+03 - 198 197 2.6672983175409390D+00 - 205 197 2.9974440449218405D+03 - 206 197 6.1981806706390500D+02 - 3 198 -1.6325785314109982D+13 - 6 198 2.9571431562802832D+03 - 7 198 -6.1149784135686005D+01 - 10 198 1.4254039763716801D+00 - 171 198 5.9783439610014366D-05 - 172 198 9.3660241326170843D-06 - 185 198 2.2450042514141188D+01 - 187 198 7.0209450007176266D-02 - 188 198 1.1740301845867766D-02 - 197 198 1.8826266173188869D+05 - 198 198 -1.9519606228121079D+05 - 206 198 4.0124497117857072D+03 - 3 199 4.4483192671296776D+10 - 6 199 -5.5860602779490947D+00 - 7 199 5.4764448821322915D+00 - 10 199 4.3996609438836115D-01 - 177 199 2.5706399524464421D-02 - 178 199 1.9837228221748721D-01 - 191 199 3.2314578896638955D+02 - 199 199 -3.3064067327543449D+02 - 200 199 5.4756781185994943D-03 - 3 200 -1.0850343567007396D+12 - 6 200 -4.7231382702337683D+00 - 7 200 2.7098764035517070D+02 - 10 200 1.8871632960533649D+01 - 178 200 8.1158473344220159D+00 - 179 200 5.0795180578865884D-01 - 191 200 1.5724022852627606D+04 - 192 200 2.6872882604288532D+02 - 199 200 1.7051113311671230D-08 - 200 200 -1.6543774555974265D+04 - 201 200 4.4684631897759097D-01 - 3 201 -4.2657219579937710D+12 - 6 201 -4.4635513292224660D+00 - 7 201 1.0081257199530354D+03 - 10 201 5.4456416327292075D+01 - 179 201 2.8324766557089610D+01 - 180 201 2.8500748911847520D-02 - 192 201 6.0243863070613115D+04 - 193 201 2.4774351380384380D+02 - 200 201 2.5363493484004807D-01 - 201 201 -6.2328000551375510D+04 - 202 201 6.2139375326727153D-01 - 3 202 -5.3535854369142181D+11 - 6 202 -1.4625319298109425D+00 - 7 202 1.0125232127669462D+02 - 10 202 2.9187933467781534D+01 - 180 202 5.1723235252820721D-01 - 181 202 3.7465480370003695D-01 - 191 202 1.2515627408202479D-01 - 193 202 6.0975152843555588D+03 - 194 202 8.0301523790866312D+01 - 201 202 4.4998499547843863D-03 - 202 202 -6.7353364980351207D+03 - 203 202 4.2097012176948851D+00 - 3 203 -2.2340434930225781D+11 - 6 203 -4.8111295700699125D-01 - 7 203 4.0143649547176324D+01 - 10 203 2.0616532499764187D+01 - 181 203 1.7905403064851892D+01 - 182 203 9.9209153995612165D-01 - 192 203 8.5144057520184202D-01 - 194 203 2.3703562835777921D+03 - 195 203 1.2135645550163257D+02 - 202 203 1.1316454909333753D+02 - 203 203 -2.9736947433854712D+03 - 204 203 3.0986978719441884D+00 - 3 204 -3.2631791206049759D+10 - 6 204 -6.6087607308937674D-02 - 7 204 4.1016698603891903D+00 - 10 204 9.5806370318021372D+00 - 182 204 7.1009778224836344D+00 - 183 204 2.3371085327459071D-01 - 193 204 1.0714092506066797D+00 - 195 204 2.5913186877589129D+02 - 196 204 3.8593132565204707D-01 - 203 204 6.4632533223288158D-01 - 204 204 -4.2283286831218334D+02 - 205 204 4.3215727049536081D+00 - 3 205 -3.5031987188158002D+11 - 6 205 5.4237682406853096D+01 - 7 205 1.2502869296794406D-01 - 10 205 3.2464660630650761D+00 - 183 205 4.0875881426941355D+01 - 184 205 3.6235371118589481D+00 - 194 205 5.1507090218732801D+00 - 196 205 8.8083162350369708D+00 - 197 205 4.5808995146079070D+00 - 204 205 3.4850785349819807D+03 - 205 205 -3.6125186116550904D+03 - 206 205 5.7915561999040124D+00 - 3 206 -5.4149886405264769D+09 - 6 206 3.8766322337103271D-01 - 7 206 -2.5941760399862249D-02 - 10 206 2.1351820529715226D+00 - 184 206 2.7553857422469104D+01 - 185 206 1.3807765148677142D-03 - 195 206 5.6294620801163981D+00 - 197 206 4.1215884416880746D+00 - 198 206 3.7802195105328862D-04 - 205 206 2.5199906424152800D+01 - 206 206 -6.6003476682834986D+01 - j rhs(j) - 1 3.8640182769230134D-07 - 2 2.0924989090333356D+03 - 3 -7.2395520292457521D+07 - 4 1.7763568349509375D-15 - 5 -7.6905060171377500D-06 - 6 -4.2349394567545245D-09 - 7 -1.8235175402377597D-06 - 8 -3.0995961788979745D-17 - 9 -1.4416838054704297D-16 - 10 -5.8614716338702133D-06 - 11 -2.9698161108779147D-20 - 12 -2.2525338280102334D-21 - 13 -8.9711316694911849D-21 - 14 -5.3554043940934340D-21 - 15 -7.8351685494273528D-25 - 16 -2.8952332766055975D-29 - 17 -4.4579574181539697D-18 - 18 -9.4386783885839075D-18 - 19 -3.0488820019937509D-05 - 20 -3.8205726888066732D-12 - 21 -9.1904190761768339D-12 - 22 -1.3110294649399076D-10 - 23 -2.2853676598100486D-11 - 24 -1.5549712260450583D-22 - 25 -5.9238520127493857D-11 - 26 -5.7826111013458326D-04 - 27 -1.5338846784469369D-11 - 28 -1.2524494007428840D-16 - 29 -7.4460511205440313D-25 - 30 -1.2567880359694059D-10 - 31 -3.6684647365710341D-14 - 32 -6.1539171700112577D-14 - 33 -7.0949058797935653D-20 - 34 -6.4369112403552733D-16 - 35 -8.1492167195619916D-07 - 36 -2.0013580030134011D-10 - 37 -8.3307575673584382D-12 - 38 -3.0122391824721362D-19 - 39 -1.2426374112230728D-12 - 40 -1.2571297058239356D-10 - 41 -1.6948016767540488D-09 - 42 -1.5405953609704585D-13 - 43 -2.8792038061432563D-09 - 44 -2.6494440092825607D-04 - 45 -5.7635130602547999D-07 - 46 -2.6377547383754691D-07 - 47 -7.5591021122704384D-13 - 48 -8.9887569166865049D-09 - 49 -9.7667114847829992D-08 - 50 -6.7060680322370377D-05 - 51 -1.0241059500515593D-08 - 52 -1.5574468697208598D-07 - 53 1.8169470596105302D-05 - 54 -9.2626638987313884D-05 - 55 -7.2388348804161592D-05 - 56 -4.5339789421082878D-08 - 57 -7.1975768994699104D-11 - 58 -6.6491336076692805D-19 - 59 -2.6653519427548376D-04 - 60 -1.5619819695961035D-04 - 61 -1.4502843360988163D-05 - 62 -2.6714260263595568D-07 - 63 -6.1231971323075863D-13 - 64 -8.2400066524132960D-06 - 65 -5.3246236617431349D-05 - 66 -1.6055640685994129D-04 - 67 -4.6584090726096903D-05 - 68 -6.1699658293617360D-07 - 69 -8.1282530120925299D-09 - 70 -1.1050160214223176D-16 - 71 -2.2503666951508394D-04 - 72 -1.4458669285188519D-05 - 73 -2.1928243190694108D-06 - 74 -2.0126265867852737D-12 - 75 -9.6188015014227766D-07 - 76 -1.6348297495169851D-04 - 77 -2.7704500898251733D-04 - 78 -9.3462693336771412D-05 - 79 -1.9622166192962081D-07 - 80 -1.4835683168879383D-09 - 81 -7.3150864642029816D-15 - 82 -2.6752960629300199D-04 - 83 -2.6436246447483668D-06 - 84 -6.5905529155723666D-08 - 85 -1.3575855860342841D-11 - 86 -7.7171024840811605D-14 - 87 -2.3188388064366979D-18 - 88 -8.5734355566148348D-08 - 89 -2.2679761403964475D-04 - 90 -2.9000525266234821D-04 - 91 -2.5071644479330939D-04 - 92 -5.0595444711769368D-07 - 93 -2.3118444138377422D-07 - 94 -5.2833857236708121D-11 - 95 -1.3638870268903131D-12 - 96 -1.2348999613672402D-16 - 97 -9.7590275985741804D-19 - 98 -4.7949609775900153D-26 - 99 -7.1898370961320178D-06 - 100 -5.5006107268075018D-07 - 101 -2.1584135830520300D-06 - 102 -9.5153342249382714D-09 - 103 -1.0333814536288753D-09 - 104 -9.5476543822492260D-13 - 105 -2.7501743445038374D-14 - 106 -1.4961590669285829D-20 - 107 -1.6660984740423242D-26 - 108 -1.5753472966717876D-11 - 109 -7.5663634566258898D-05 - 110 -4.2240450223250082D-05 - 111 -7.0945459109055767D-04 - 112 -1.2456510137091314D-04 - 113 -1.2878904534503733D-04 - 114 -1.9474269601362425D-07 - 115 -2.7428631071822837D-08 - 116 -1.1465498881614020D-13 - 117 -2.3966043520248071D-18 - 118 -3.1769028027911354D-25 - 119 -1.9551011013479610D-31 - 120 -2.4782290134116308D-04 - 121 -1.1779297165285216D-04 - 122 -6.6283977354346033D-04 - 123 -1.4822805908205318D-05 - 124 -7.7239200483556528D-06 - 125 -6.7865397518172440D-10 - 126 -1.3428603596290832D-13 - 127 -4.4579924966045463D-20 - 128 -4.5392464237493106D-25 - 129 -3.8577813667623951D-33 - 130 -3.9253597540410577D-11 - 131 -5.0999188554144215D-04 - 132 -8.3589705808401074D-04 - 133 -3.8598788294702172D-04 - 134 -3.0936065838082946D-04 - 135 5.0459269955465201D-05 - 136 -1.1721778669505314D-05 - 137 -1.0439536551431120D-07 - 138 -7.4559296034208324D-13 - 139 -3.2362758341177476D-17 - 140 -4.9529728927968398D-24 - 141 -1.2051674605103818D-29 - 142 -7.2604843213005881D-04 - 143 -5.2309005027059751D-04 - 144 -1.4083612214234721D-04 - 145 -4.2740177599651704D-04 - 146 -4.0221095768987853D-05 - 147 -3.0866954786657310D-09 - 148 -6.0713335468999753D-10 - 149 -6.9526862456990651D-04 - 150 -4.7262088203230877D-04 - 151 3.0385194617582181D-06 - 152 -4.7163701399555694D-05 - 153 1.4831376873180685D-04 - 154 -8.3100294001060219D-05 - 155 3.4585103776726140D-08 - 156 -4.7573761154068228D-12 - 157 -1.2450711951566026D-15 - 158 -4.4224088861114397D-22 - 159 -1.3933199846644211D-26 - 160 -3.5068432037213584D-34 - 161 -4.0803808393415202D-40 - 162 -8.4464100694335662D-49 - 163 -3.7637827273752317D-55 - 164 -3.0676436964570218D-04 - 165 -3.6671646372017815D-04 - 166 -1.0438613853202243D-05 - 167 -2.5495697383900442D-04 - 168 6.9584674523808225D-07 - 169 -1.1602997745004389D-09 - 170 -1.2306335864236733D-12 - 171 -1.4897543128439804D-17 - 172 -2.3543461615561007D-21 - 173 -1.0450635060728163D-27 - 174 -1.7702863866091193D-32 - 175 -4.1433545596425442D-40 - 176 -6.4070550807229154D-46 - 177 -9.4047851373938765D-10 - 178 -3.8878391159141110D-04 - 179 -3.2171887790276548D-04 - 180 1.9212112757735171D-05 - 181 -1.4154245209961730D-04 - 182 2.2535214518155223D-04 - 183 -2.0588414110608344D-06 - 184 5.3071985405570968D-08 - 185 -7.0489499784230969D-12 - 186 -6.0858912419284736D-15 - 187 -4.0381705756810298D-20 - 188 -9.4564510040866533D-24 - 189 -3.2924299097577301D-30 - 190 -7.0778681438892899D-35 - 191 -1.2086543732386289D-05 - 192 -5.2841549582520410D-06 - 193 -8.8171285913871930D-06 - 194 -2.9736908424383626D-07 - 195 -1.6393394438686317D-08 - 196 -2.1582058238609942D-11 - 197 -1.4111772367881609D-13 - 198 -6.2663142029304608D-18 - 199 -4.7545362191535862D-14 - 200 -8.4685719502424496D-09 - 201 -1.6710024090329211D-08 - 202 -7.4299247864963060D-07 - 203 -4.4686573494712175D-08 - 204 -5.3278075791351956D-08 - 205 -1.8202089379954063D-10 - 206 -1.5164783391396777D-11 - j soln(j) - 1 8.3649347940157286D-09 - 2 2.0529911938318026D-07 - 3 -9.9999089806793162D-01 - 4 -3.6691596820348279D-09 - 5 4.8476014116978381D-03 - 6 2.7650400126009214D-12 - 7 3.6977373901851711D-07 - 8 2.1635061756010013D-18 - 9 4.7028027013605882D-17 - 10 1.3642425434741509D-06 - 11 9.3400895861466170D-21 - 12 6.7940875560224050D-22 - 13 1.8009523113448637D-21 - 14 4.4947494610184348D-22 - 15 2.3263787267770022D-25 - 16 1.8368313951151870D-31 - 17 1.5165488922486186D-18 - 18 3.7875498037455681D-18 - 19 1.7226675439746134D-05 - 20 1.6510603702208580D-12 - 21 1.2238091463232653D-12 - 22 7.0059864639410795D-11 - 23 8.6965538822720646D-12 - 24 3.7311489836210390D-23 - 25 3.1427666451416408D-11 - 26 5.5593537886492231D-04 - 27 7.8447935511795387D-12 - 28 2.6625592110653527D-17 - 29 1.4675004594284562D-25 - 30 8.3217580001599144D-12 - 31 1.0357143921255787D-14 - 32 2.4302710671147033D-14 - 33 2.6134661895923103D-20 - 34 2.0651566255571386D-16 - 35 5.0690576017948215D-07 - 36 2.0249815458258968D-11 - 37 4.7799136388516578D-13 - 38 3.5650429889341188D-20 - 39 5.0643034228852553D-13 - 40 5.0235378476136373D-11 - 41 7.9420293907475513D-10 - 42 3.8896512250473831D-15 - 43 2.1599277679815811D-09 - 44 -1.2012061326812336D-05 - 45 -1.9931157485352048D-08 - 46 -1.3365701009236412D-08 - 47 9.4761787412270979D-15 - 48 8.5462426708164206D-10 - 49 7.0642138655466379D-09 - 50 5.0824125537177502D-06 - 51 1.5878557221596797D-10 - 52 3.0856768943289522D-08 - 53 -1.7163117209672233D-05 - 54 -3.6640008661630903D-05 - 55 -1.1640317448735332D-05 - 56 -3.1346314321164055D-10 - 57 -5.9874996901092216D-12 - 58 2.6400049543903187D-21 - 59 2.4306468143305030D-05 - 60 3.3348248835868746D-05 - 61 1.3141838395149916D-06 - 62 -8.0547969094273094D-09 - 63 4.0509737512538309D-14 - 64 1.3802101674218532D-06 - 65 5.3104477974522847D-05 - 66 4.0034481124497782D-05 - 67 4.8377869019775656D-05 - 68 9.2807589818429635D-08 - 69 5.5312236812919876D-10 - 70 7.8869449785925772D-18 - 71 1.0397837655111696D-04 - 72 3.6614683617454457D-06 - 73 6.2094035181227940D-07 - 74 3.0960327844103756D-13 - 75 2.9788284272148742D-07 - 76 1.3010966532344483D-04 - 77 1.3042116448352229D-04 - 78 1.1832932412793320D-04 - 79 5.9368926362371438D-08 - 80 4.2940247738826854D-10 - 81 1.2542221256596146D-15 - 82 1.7298499036594013D-04 - 83 8.3171453760808900D-07 - 84 2.4200873580746870D-08 - 85 3.0398715347461866D-12 - 86 1.6956493658549255D-14 - 87 4.0901293427908197D-19 - 88 3.0708883038309493D-08 - 89 2.0454356369252211D-04 - 90 1.5669964222214471D-04 - 91 1.9975381309206571D-04 - 92 2.0511221336989894D-07 - 93 8.1570864130786208D-08 - 94 1.3276712187249848D-11 - 95 2.7579057634234446D-13 - 96 1.6147500909032923D-17 - 97 4.7522994093224646D-20 - 98 2.4458090057743365D-27 - 99 3.0318363992437222D-06 - 100 1.7190756852022029D-07 - 101 7.0551755463295712D-07 - 102 2.3487236593806385D-09 - 103 2.1411513203023561D-10 - 104 1.1237287588922711D-13 - 105 1.6539246031330305D-15 - 106 8.4678808024434502D-22 - 107 6.7478930017467595D-28 - 108 5.3771286410558998D-12 - 109 4.4450162495986776D-05 - 110 1.5689406609749555D-05 - 111 3.1372237603149436D-04 - 112 3.6587985985300364D-05 - 113 3.1772145750159405D-05 - 114 2.9182608721094303D-08 - 115 -1.7279187405701532D-09 - 116 -2.0276901288501804D-15 - 117 -8.3226859927988800D-20 - 118 -1.7560166301344216D-27 - 119 -1.5587492229947289D-33 - 120 8.0825540461736304D-05 - 121 3.4043914756834319D-05 - 122 1.6467987735384020D-04 - 123 2.7043847351569219D-06 - 124 1.8418723203288555D-07 - 125 2.7413409781530973D-11 - 126 -9.5348843229030405D-15 - 127 -1.3239608202102401D-21 - 128 -1.9469331821453775D-26 - 129 -1.2755536640652548D-35 - 130 1.2091787878299198D-11 - 131 1.9034205040319646D-04 - 132 2.6604595763194994D-04 - 133 1.5482154576266152D-04 - 134 7.4762423069900226D-05 - 135 -5.1752342407945695D-05 - 136 -5.3211778287301395D-06 - 137 -7.9621463929557588D-08 - 138 -1.1016051072254753D-13 - 139 -6.3480017724511778D-18 - 140 -3.5471178414149091D-25 - 141 -9.8824506120482039D-31 - 142 2.3013448922186281D-04 - 143 1.2874260538667980D-04 - 144 3.8106164116765213D-06 - 145 4.5891033045304992D-06 - 146 -1.1753167151133620D-05 - 147 -1.9755052216792098D-10 - 148 1.6127497201073386D-10 - 149 2.3193733871698606D-04 - 150 1.3289818360601985D-04 - 151 1.3912494825840464D-05 - 152 -1.5509306087317893D-05 - 153 -8.1186114390837248D-05 - 154 -9.0136373831633437D-06 - 155 -3.2118479962958949D-07 - 156 -1.5308724360324947D-12 - 157 -6.0021693273283080D-16 - 158 -7.9537695394686955D-23 - 159 -2.6041024843174116D-27 - 160 -3.0017519725025063D-35 - 161 -3.7670434281343032D-41 - 162 -2.9112527098604818D-50 - 163 -1.5773633430346267D-56 - 164 8.5548665780815056D-05 - 165 5.7402006559926014D-05 - 166 -2.9618762604304280D-05 - 167 3.1919966663366080D-06 - 168 -4.4865998907688262D-06 - 169 -2.6131186885488730D-10 - 170 -1.1673202720046773D-12 - 171 -2.1416936718176827D-18 - 172 -6.3166142263250833D-22 - 173 -9.0477610863561970D-29 - 174 -2.0437896495026814D-33 - 175 -1.7041683936548733D-41 - 176 -3.7682057093627639D-47 - 177 2.1482487877225871D-10 - 178 1.2995893070562499D-04 - 179 8.1764422369043046D-05 - 180 -3.3617229906191143D-06 - 181 -1.7618650969486428D-05 - 182 -1.1796840232081628D-04 - 183 -1.2201015281005174D-06 - 184 -9.1931181484331255D-08 - 185 -1.2482606581216322D-12 - 186 -6.0022892547916911D-15 - 187 -9.2786599357330648D-21 - 188 -2.8692978774923921D-24 - 189 -4.8416280025624258D-31 - 190 -1.0875906192178566D-35 - 191 2.2558725751633931D-06 - 192 6.5452521934964085D-07 - 193 -2.0470639079326018D-06 - 194 -4.8991610527354546D-09 - 195 -1.0920812763245593D-08 - 196 -1.7447667261151275D-12 - 197 -6.4667136536160209D-14 - 198 -5.9482469922754170D-19 - 199 9.5923377740682823D-15 - 200 1.7438557557958683D-09 - 201 2.6585998543781990D-09 - 202 4.6204916119030511D-08 - 203 1.5356474531183557D-09 - 204 -1.0122175816500992D-08 - 205 -9.7134612331219685D-12 - 206 -4.7842256193650744D-12 diff --git a/mtx/test/sparse_data/tiny.rua b/mtx/test/sparse_data/tiny.rua deleted file mode 100644 index 27f6be541..000000000 --- a/mtx/test/sparse_data/tiny.rua +++ /dev/null @@ -1,8 +0,0 @@ -test matrix in standard format - 7 1 1 2 0 -RUA 3 3 6 0 -(10I8) (12I6) (5E16.8) - 1 3 5 7 - 1 2 1 2 1 3 - 1.57579152E+00 -9.95037190E+02 1.57579152E+00 9.95037190E+00 4.00000000E+01 - 4.00000000E+00 diff --git a/mtx/test/sparse_data/tiny.test b/mtx/test/sparse_data/tiny.test deleted file mode 100644 index a503d7fec..000000000 --- a/mtx/test/sparse_data/tiny.test +++ /dev/null @@ -1,8 +0,0 @@ -3 argument B for tiny.rua -- solution follows -1 88.4137241284723 -2 -994.987562112089 -3 4.00000000000000 -3 solution b -1 1.29424202820776 -2 29.4291903828884 -3 1.00000000000000 diff --git a/mtx/test/sparse_data/umfd.test b/mtx/test/sparse_data/umfd.test deleted file mode 100644 index 108e497bc..000000000 --- a/mtx/test/sparse_data/umfd.test +++ /dev/null @@ -1,20 +0,0 @@ -5 12 -1 1 1 2 2 1 2 3 2 5 3 2 3 3 -3 4 4 3 5 2 5 3 5 5 - 2.0 - 3.0 - 3.0 - 4.0 - 6.0 - -1.0 - -3.0 - 2.0 - 1.0 - 4.0 - 2.0 - 1.0 - 8.0 - 45.0 - -3.0 - 3.0 - 19.0 diff --git a/mtx/test/src/test_banded.f b/mtx/test/src/test_banded.f deleted file mode 100644 index 3c49b99f5..000000000 --- a/mtx/test/src/test_banded.f +++ /dev/null @@ -1,234 +0,0 @@ -! *********************************************************************** -! -! Copyright (C) 2011 Bill Paxton -! -! This file is part of MESA. -! -! MESA is free software; you can redistribute it and/or modify -! it under the terms of the GNU General Library Public License as published -! by the Free Software Foundation; either version 2 of the License,or -! (at your option) any later version. -! -! MESA 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 Library General Public License for more details. -! -! You should have received a copy of the GNU Library General Public License -! along with this software; if not,write to the Free Software -! Foundation,Inc.,59 Temple Place,Suite 330,Boston,MA 02111-1307 USA -! -! *********************************************************************** - - - module test_banded - - use mtx_lib - use mtx_def - use utils_lib, only: mesa_error - - implicit none - - contains - - - subroutine do_test_banded - call test_diffusion - end subroutine do_test_banded - - - subroutine test_med - integer,parameter :: n = 400,iounit = 33,KU = 2,KL = 2,nzmax = 500 - integer,parameter :: ldAB = 2*KL+KU+1 - real(dp) :: AB(ldAB,n),work(3*n),rcond, values(nzmax), b(n), rhs(n), ref(n) - integer :: nz,ldb,nrhs,ierr,nn,i,j,ipiv(n),iwork(n),ios,info,colptr(n+1),rowind(nzmax),norm - - include 'formats' - - open(unit=iounit,file='med',action='read',status='old',iostat=ios) - if (ios /= 0) then - write(*,*) 'failed to open file for test_banded' - call mesa_error(__FILE__,__LINE__) - end if - ! read compressed column format - read(iounit,*) nn, nz - if (nn /= n) stop 'test_med' - do i=1,n+1 - read(iounit,*) colptr(i) - end do - do i=1,nz - read(iounit,*) rowind(i) - end do - do i=1,nz - read(iounit,'(1pe26.16)') values(i) - end do - do i=1,n - read(iounit,'(1pe26.16)') rhs(i) - end do - do i=1,n - read(iounit,'(1pe26.16)') ref(i) - end do - close(iounit) - call column_sparse_to_band(n,KL,KU,ab,ldab,nz,colptr,rowind,values,ierr) - if (ierr /=0) stop 'test_med column_sparse_to_band' - - call mtx_rcond_banded('N', n, n, KU, KL, AB, ldAB, ipiv, rcond, work, iwork, info) - if (ierr /=0) stop 'test_med mtx_rcond_banded' - write(*,*) 'mtx_rcond_banded rcond', rcond - - b = rhs - ldb = n - nrhs = 1 - CALL DGBSV( N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB, INFO ) - write(*,*) 'info', info - if (info /= 0) stop 'test_med' - - do i=1,n - write(*,2) 'b ref', i, b(i), ref(i) - end do - - - end subroutine test_med - - - subroutine test_diffusion - integer, parameter :: n = 10 - real(dp), dimension(n) :: x, sig, dq, bb - real(dp) :: mstar, dt, init_xtotal, banded_xtotal - integer :: lrd, lid - - include 'formats' - - write(*,*) 'test_diffusion' - - mstar = 9.5216384650402128D+33 - dt = 8.2230155734773409D+08 - - x( 1 )= 3.3853553765573918D-01 - x( 2 )= 3.3853553765572147D-01 - x( 3 )= 4.5462481641995478D-01 - x( 4 )= 4.9630359938855395D-01 - x( 5 )= 4.9630359938855390D-01 - x( 6 )= 4.9630359938855384D-01 - x( 7 )= 4.9630359938855390D-01 - x( 8 )= 5.8265967459668622D-01 - x( 9 )= 6.1370782322384976D-01 - x(10 )= 6.1370782322384976D-01 - - sig( 1 )= 0.0000000000000000D+00 - sig( 2 )= 7.7006096541650005D+38 - sig( 3 )= 1.4638096218318065D+39 - sig( 4 )= 1.2767160238768072D+39 - sig( 5 )= 1.1314657565143642D+39 - sig( 6 )= 1.0969967768680467D+39 - sig( 7 )= 1.0969967748843832D+39 - sig( 8 )= 9.8367595476496157D+38 - sig( 9 )= 7.5703431242949176D+38 - sig(10 )= 3.2185674473372967D+38 - - dq( 1 )= 3.2180704472120336D-08 - dq( 2 )= 1.7819062402685692D-08 - dq( 3 )= 1.5396355905853213D-08 - dq( 4 )= 1.3290183455525239D-08 - dq( 5 )= 1.5048420108580579D-08 - dq( 6 )= 1.6727579700091661D-08 - dq( 7 )= 1.8662871023197620D-08 - dq( 8 )= 2.1239878600194412D-08 - dq( 9 )= 2.2654435507986098D-08 - dq(10 )= 2.3822242205812923D-08 - - init_xtotal = mstar*dot_product(x(:), dq(:)) - - call lapack_work_sizes(2*n,lrd,lid) - call do_banded(lrd,lid) - banded_xtotal = mstar*dot_product(bb(:), dq(:)) - - write(*,1) 'init_xtotal', init_xtotal - write(*,1) 'banded_xtotal', banded_xtotal - write(*,*) - - contains - - - subroutine do_banded(lrd,lid) - integer, intent(in) :: lrd, lid - integer, parameter :: & - nvar=2, nz=n, neq=nvar*nz, i_x=1, i_dx=2, equx=1, equdx=2, & - mu = 2*nvar-1, ml = 2*nvar-1, lda = 2*ml+mu+1, idiag = ml+mu+1 - real(dp), dimension(nvar,nvar,nz) :: em1, e00, ep1 - real(dp), target :: a1_ary(lda*neq), dx_ary(n), b1_ary(nvar*nz) - integer :: ierr, i, k - integer, target :: ip_ary(neq) - real(dp), target :: rpar_decsol_ary(lrd) - integer, target :: ipar_decsol_ary(lid) - real(dp), pointer :: rpar_decsol(:), a1(:), dx(:), b1(:) - integer, pointer :: ipar_decsol(:) - - real(dp), pointer :: a(:,:), b(:,:) - integer, pointer :: ip(:) - - include 'formats' - rpar_decsol => rpar_decsol_ary - ipar_decsol => ipar_decsol_ary - a1(1:lda*neq) => a1_ary - a(1:lda,1:neq) => a1(1:lda*neq) - b1(1:nvar*nz) => b1_ary - b(1:nvar,1:nz) => b1(1:nvar*nz) - dx(1:n) => dx_ary - ip(1:neq) => ip_ary - - dx(1) = 0 - do k=2,n - dx(k) = x(k-1)-x(k) - end do - - ! store partials - em1 = 0; e00 = 0; ep1 = 0 - do k=1, n - ! dx(k) - x(k-1) + x(k) = 0 - e00(equdx,i_dx,k) = 1 - if (k > 1) then - e00(equdx,i_x,k) = 1 - em1(equdx,i_x,k) = -1 - end if - ! x(k) - (sig(k)*dx(k) - sig(k+1)*dx(k+1))*dt/(mstar*dq(k)) = x0(k) - e00(equx,i_x,k) = 1 - if (k > 1) e00(equx,i_dx,k) = -sig(k)*dt/(mstar*dq(k)) - if (k < n) ep1(equx,i_dx,k) = sig(k+1)*dt/(mstar*dq(k)) - end do - - ! store matrix - call copy_all_to_3point_jacobian(nvar, nz, ldA, A, idiag, nz, em1, e00, ep1) - - ! factor - call lapack_decsol(0,neq,ldA,A1,ml,mu,b1,ip,lrd,rpar_decsol,lid,ipar_decsol,ierr) - if (ierr /= 0) then - write(*,*) 'lapack_decsol 0', ierr - call mesa_error(__FILE__,__LINE__) - end if - - ! set rhs of equation - b(equdx,:) = 0 - b(equx,:) = x(:) - - ! solve - call lapack_decsol(1,neq,ldA,A1,ml,mu,b1,ip,lrd,rpar_decsol,lid,ipar_decsol,ierr) - if (ierr /= 0) then - write(*,*) 'lapack_decsol 1', ierr - call mesa_error(__FILE__,__LINE__) - end if - - bb(:) = b(equx,:) - - do k=1,n - !write(*,2) 'banded: init x, soln x(k), dx(k)', k, x(k), b(equx,k), b(equdx,k) - write(*,2) 'banded: init x, soln x(k)', k, x(k), b(equx,k) - end do - write(*,*) - - end subroutine do_banded - - - end subroutine test_diffusion - - end module test_banded diff --git a/mtx/test/src/test_bcyclic.f b/mtx/test/src/test_bcyclic.f deleted file mode 100644 index 42224fe36..000000000 --- a/mtx/test/src/test_bcyclic.f +++ /dev/null @@ -1,170 +0,0 @@ - - - module test_bcyclic - use cyclic_red, only: check_solver, bcyclic_init - use mtx_lib, only: bcyclic_mt_lapack_decsolblk, bcyclic_mt_lapack_work_sizes - use mtx_def, only: lapack - use utils_lib, only: mesa_error - implicit none - -#ifdef mpi_opt - include 'mpif.h' !mpi stuff -#endif - - integer :: timeon, timeoff, countrate, ns0, nsn - integer, parameter :: rprec = 8 - - contains - - - subroutine do_test_bcyclic(quiet, tol, fname_in, fname_out) - logical, intent(in) :: quiet - real*8, intent(in) :: tol - character (len=*), intent(in) :: fname_in, fname_out - - integer :: ns, mblock, istat, k, nmin, irhs - integer, pointer :: ipivot(:,:) - real*8, pointer, dimension(:,:,:) :: & - lblk, dblk, ublk, lblk1, dblk1, ublk1 - real*8, pointer :: brhs(:,:), gc(:,:) - real*8 :: t1, rms_error - - - integer, parameter :: lid = 0, lrd = 0 - real*8, target :: rpar_decsol(lrd) - integer, target :: ipar_decsol(lid) - integer :: ierr, lid_check, lrd_check, iop - - include 'formats' - -!****************************************** - ierr = 0 - call read_data(ierr) ! sets mblock and ns; allocates and reads lblk, dblk, ublk - if (ierr /= 0) return -! -! mpi setup calls: -! - call bcyclic_init(ns,lapack,ierr) - if (ierr /= 0) stop 'failed in bcyclic_init' - - write(*,3) 'test_bcyclic ' // trim(fname_in), mblock, ns - - call bcyclic_mt_lapack_work_sizes(mblock,ns,lrd_check,lid_check) - if (lrd_check /= lrd .or. lid_check /= lid) then - write(*,*) 'unexpected result from bcyclic_mt_lapack_work_sizes', lid_check, lrd_check - call mesa_error(__FILE__,__LINE__) - end if -!****************************************** -! -! do cyclic reduction -! important: the blocks and data are assumed to be distributed consecutively -! on nodes as described in the paper .... - -!***************************************** - -! note: in production run, skip this since ipivot, lblk, dblk, ublk, brhs are -! known inputs - allocate (ipivot(mblock, ns0:nsn), stat=istat) - if (istat .ne. 0) stop 'allocation error!' - -! store lblk1, etc only for back-solver check - allocate (lblk1(mblock,mblock,ns0:nsn), dblk1(mblock,mblock,ns0:nsn), & - ublk1(mblock,mblock,ns0:nsn), gc(mblock,ns0:nsn), & - stat=istat) - if (istat .ne. 0) stop 'allocation error!' - - lblk1 = lblk; dblk1 = dblk; ublk1 = ublk - gc = brhs -!***************************************** - -! simulate multiple rhs - multiple_rhs: do irhs = 1, 2 - -! solve using cyclic reduction -! solution overwrite brhs on each processor - if (.not. quiet) then -#ifdef mpi_opt - if (rank .eq. 0) print '(a,i1)',' solution rhs #',irhs -#else - print '(a,i1)',' solution rhs #',irhs -#endif - end if - !call bcyclic_solver (lblk, dblk, ublk, ipivot, brhs, mblock, ns) - iop = 0 ! factor - call bcyclic_mt_lapack_decsolblk(iop,lblk,dblk,ublk,brhs,ipivot,lrd,rpar_decsol,lid,ipar_decsol,ierr) - if (ierr /= 0) then - write(*,*) 'failed in bcyclic_mt_lapack_decsolblk solve', ierr - call mesa_error(__FILE__,__LINE__) - end if - iop = 1 ! solve - call bcyclic_mt_lapack_decsolblk(iop,lblk,dblk,ublk,brhs,ipivot,lrd,rpar_decsol,lid,ipar_decsol,ierr) - if (ierr /= 0) then - write(*,*) 'failed in bcyclic_mt_lapack_decsolblk solve', ierr - call mesa_error(__FILE__,__LINE__) - end if - -! check solution - call check_solver (lblk1, dblk1, ublk1, brhs, gc, mblock, ns, irhs, quiet, tol) - -! important: do not reset factored blocks -! set brhs (solution) - gc(:,ns0:nsn)=gc(:,ns0:nsn)*2 + 1.1d0 ! change from previous - brhs(:,ns0:nsn)=gc(:,ns0:nsn) - - end do multiple_rhs - -! clean up allocated arrays - !call clearstorage - iop = 2 ! deallocate - call bcyclic_mt_lapack_decsolblk(iop,lblk,dblk,ublk,brhs,ipivot,lrd,rpar_decsol,lid,ipar_decsol,ierr) - if (ierr /= 0) then - write(*,*) 'failed in bcyclic_mt_lapack_decsolblk deallocate', ierr - call mesa_error(__FILE__,__LINE__) - end if - - deallocate (ipivot, lblk, dblk, ublk, brhs, stat=istat) - deallocate (lblk1, ublk1, dblk1, gc, stat=istat) - -! shut down mpi -#ifdef mpi_opt - call mpi_barrier(mpi_comm_world, ierr) - call mpi_finalize(ierr) -#endif - - write(*,*) 'done test_bcyclic' - write(*,*) - - - contains - - - subroutine read_data(ierr) - integer, intent(out) :: ierr - integer :: k, i, j, iounit - ierr = 0 - iounit = 33 - write(*,*) 'read test matrix info ' // trim(fname_in) - open(iounit,file=trim(fname_in), status='old', action='read', iostat=ierr) - if (ierr /= 0) return - read(iounit,*,iostat=ierr) mblock, ns - if (ierr /= 0) return - allocate (lblk(mblock,mblock,ns), dblk(mblock,mblock,ns), ublk(mblock,mblock,ns),brhs(mblock,ns)) - do k=1,ns - do i=1,mblock - read(iounit,*,iostat=ierr) brhs(i,k) - if (ierr /= 0) return - do j=1,mblock - read(iounit,*,iostat=ierr) lblk(i,j,k), dblk(i,j,k), ublk(i,j,k) - if (ierr /= 0) return - end do - end do - end do - close(iounit) - end subroutine read_data - - - end subroutine do_test_bcyclic - - - - end module test_bcyclic diff --git a/mtx/test/src/test_block_tridiagonal.f b/mtx/test/src/test_block_tridiagonal.f90 similarity index 53% rename from mtx/test/src/test_block_tridiagonal.f rename to mtx/test/src/test_block_tridiagonal.f90 index 39ea779d8..853295b16 100644 --- a/mtx/test/src/test_block_tridiagonal.f +++ b/mtx/test/src/test_block_tridiagonal.f90 @@ -20,13 +20,12 @@ ! ! *********************************************************************** - #ifdef DBLE - module test_block_tri_dble +module test_block_tri_dble #else - module test_block_tri_quad + module test_block_tri_quad #endif - + use mtx_lib use mtx_def @@ -36,8 +35,8 @@ module test_block_tri_quad use const_def, only: qp #endif - use utils_lib, only: is_bad,mesa_error - + use utils_lib, only: is_bad, mesa_error + implicit none #ifdef DBLE @@ -45,13 +44,11 @@ module test_block_tri_quad #else integer, parameter :: fltp = qp #endif - + integer, parameter :: caller_id = 0 - - - contains - - + + contains + #ifdef DBLE subroutine do_test_block_tri_dble @@ -66,41 +63,36 @@ subroutine do_test_block_tri_quad end subroutine do_test_block_tri_quad #endif - - + subroutine test_block(which_decsol_option, for_release) integer, intent(in) :: which_decsol_option logical, intent(in) :: for_release - + integer :: nrep real(fltp), pointer :: lblk1(:), dblk1(:), ublk1(:) ! (nvar,nvar,nz) - real(fltp), pointer :: lblk(:,:,:), dblk(:,:,:), ublk(:,:,:) ! (nvar,nvar,nz) - real(fltp), pointer :: l_init(:,:,:), d_init(:,:,:), u_init(:,:,:) ! (nvar,nvar,nz) - real(fltp), pointer :: x(:,:), xcorrect(:,:), brhs(:,:), work(:,:) ! (nvar,nz) + real(fltp), pointer :: lblk(:, :, :), dblk(:, :, :), ublk(:, :, :) ! (nvar,nvar,nz) + real(fltp), pointer :: l_init(:, :, :), d_init(:, :, :), u_init(:, :, :) ! (nvar,nvar,nz) + real(fltp), pointer :: x(:, :), xcorrect(:, :), brhs(:, :), work(:, :) ! (nvar,nz) real(fltp), pointer :: x1(:) ! =(nvar,nz) integer, pointer :: ipiv1(:) ! =(nvar,nz) - integer, pointer :: ipiv(:,:) ! (nvar,nz) - + integer, pointer :: ipiv(:, :) ! (nvar,nz) + real(dp), pointer :: rpar_decsol(:) ! (lrd) integer, pointer :: ipar_decsol(:) ! (lid) - real(fltp) :: time_factor, time_solve, time_refine, time_dealloc, sum_times - real(fltp) :: sum_factor, setup, factor_As, & - factor_As_thm_fac_avg, factor_As_thm_slv_avg, & - factor_As_thm_fac_max, factor_As_thm_slv_max, & - setup_coupling, factor_coupling + real(fltp) :: time_factor, time_solve, time_refine, time_dealloc integer :: i, j, k, ierr, lid, lrd, nvar, nz, rep logical :: use_given_weights - character (len=255) :: fname, which_decsol_str - + character(len=255) :: fname, which_decsol_str + include 'formats' - + ierr = 0 - + call decsol_option_str(which_decsol_option, which_decsol_str, ierr) if (ierr /= 0) return - + if (for_release) then fname = 'block_tri.data' else @@ -108,55 +100,54 @@ subroutine test_block(which_decsol_option, for_release) end if nrep = 1 - time_factor=0; time_solve=0; time_refine=0; time_dealloc=0 - + time_factor = 0; time_solve = 0; time_refine = 0; time_dealloc = 0 + call read_testfile(fname) !call xread_testfile(fname) #ifdef DBLE if (which_decsol_option == bcyclic_dble) then - write(*,*) 'bcyclic_dble' - call bcyclic_dble_work_sizes(nvar,nz,lrd,lid) + write (*, *) 'bcyclic_dble' + call bcyclic_dble_work_sizes(nvar, nz, lrd, lid) else - write(*,*) 'bad value for which_decsol_option in test_block' - call mesa_error(__FILE__,__LINE__) + write (*, *) 'bad value for which_decsol_option in test_block' + call mesa_error(__FILE__, __LINE__) end if #endif - - allocate( & - rpar_decsol(lrd), ipar_decsol(lid), x1(nvar*nz), xcorrect(nvar,nz), & - brhs(nvar,nz), ipiv1(nvar*nz), work(nvar,nz), & - l_init(nvar,nvar,nz), d_init(nvar,nvar,nz), u_init(nvar,nvar,nz), stat=ierr) + + allocate ( & + rpar_decsol(lrd), ipar_decsol(lid), x1(nvar*nz), xcorrect(nvar, nz), & + brhs(nvar, nz), ipiv1(nvar*nz), work(nvar, nz), & + l_init(nvar, nvar, nz), d_init(nvar, nvar, nz), u_init(nvar, nvar, nz), stat=ierr) if (ierr /= 0) then - write(*,*) 'failed in alloc' - call mesa_error(__FILE__,__LINE__) + write (*, *) 'failed in alloc' + call mesa_error(__FILE__, __LINE__) end if - ipiv(1:nvar,1:nz) => ipiv1(1:nvar*nz) - x(1:nvar,1:nz) => x1(1:nvar*nz) - - - do k=1,nz - do i=1,nvar - do j=1,nvar - l_init(j,i,k) = lblk(j,i,k) - d_init(j,i,k) = dblk(j,i,k) - u_init(j,i,k) = ublk(j,i,k) + ipiv(1:nvar, 1:nz) => ipiv1(1:nvar*nz) + x(1:nvar, 1:nz) => x1(1:nvar*nz) + + do k = 1, nz + do i = 1, nvar + do j = 1, nvar + l_init(j, i, k) = lblk(j, i, k) + d_init(j, i, k) = dblk(j, i, k) + u_init(j, i, k) = ublk(j, i, k) end do end do end do - + call set_xcorrect call set_brhs(lblk, dblk, ublk) - + if (.false.) then ! check data - write(*,*) trim(fname) - write(*,3) 'nvar nz', nvar, nz - do k=1,nz - do i=1,nvar - write(*,3) 'sol-xcorrect', i, k, brhs(i,k), xcorrect(i,k) - do j=1,nvar - write(*,4) 'u-d-l', i, j, k, & - ublk(i,j,k), dblk(i,j,k), lblk(i,j,k) + write (*, *) trim(fname) + write (*, 3) 'nvar nz', nvar, nz + do k = 1, nz + do i = 1, nvar + write (*, 3) 'sol-xcorrect', i, k, brhs(i, k), xcorrect(i, k) + do j = 1, nvar + write (*, 4) 'u-d-l', i, j, k, & + ublk(i, j, k), dblk(i, j, k), lblk(i, j, k) end do end do end do @@ -164,17 +155,17 @@ subroutine test_block(which_decsol_option, for_release) end if do rep = 1, nrep - - do k=1,nz - do i=1,nvar - do j=1,nvar - lblk(j,i,k) = l_init(j,i,k) - dblk(j,i,k) = d_init(j,i,k) - ublk(j,i,k) = u_init(j,i,k) + + do k = 1, nz + do i = 1, nvar + do j = 1, nvar + lblk(j, i, k) = l_init(j, i, k) + dblk(j, i, k) = d_init(j, i, k) + ublk(j, i, k) = u_init(j, i, k) end do end do end do - + use_given_weights = (rep > 1) #ifdef DBLE @@ -182,137 +173,131 @@ subroutine test_block(which_decsol_option, for_release) call solve_blocks( & use_given_weights, bcyclic_dble_decsolblk, null_decsolblk_quad) else - write(*,*) 'missing case for which_decsol_option', which_decsol_option - call mesa_error(__FILE__,__LINE__) + write (*, *) 'missing case for which_decsol_option', which_decsol_option + call mesa_error(__FILE__, __LINE__) end if -#endif - - +#endif + end do - + call check_x #ifdef DBLE if (which_decsol_option == bcyclic_dble) then - write(*,*) 'done bcyclic_dble' + write (*, *) 'done bcyclic_dble' else if (which_decsol_option == block_thomas_dble) then - write(*,*) 'done block_thomas_dble' + write (*, *) 'done block_thomas_dble' end if #else if (which_decsol_option == block_thomas_quad) then - write(*,*) 'done block_thomas_quad' + write (*, *) 'done block_thomas_quad' end if #endif - - write(*,*) - - deallocate(rpar_decsol, ipar_decsol, x1, xcorrect, work, & - brhs, ipiv1, lblk1, dblk1, ublk1, l_init, d_init, u_init) - - contains - - + + write (*, *) + + deallocate (rpar_decsol, ipar_decsol, x1, xcorrect, work, & + brhs, ipiv1, lblk1, dblk1, ublk1, l_init, d_init, u_init) + + contains + subroutine solve_blocks(use_given_weights, decsolblk, decsolblk_quad) logical, intent(in) :: use_given_weights interface include 'mtx_decsolblk_dble.dek' include 'mtx_decsolblk_quad.dek' end interface - + integer :: iop, rep - real(fltp) :: avg_err, max_err, err, atol, rtol - integer :: i_max, j_max, i, j, k - + integer :: j, k + include 'formats' - + iop = 0 ! factor A #ifdef DBLE call decsolblk( & - iop,caller_id,nvar,nz,lblk1,dblk1,ublk1,x1,ipiv1,lrd,rpar_decsol,lid,ipar_decsol,ierr) + iop, caller_id, nvar, nz, lblk1, dblk1, ublk1, x1, ipiv1, lrd, rpar_decsol, lid, ipar_decsol, ierr) #else call decsolblk_quad( & - iop,caller_id,nvar,nz,lblk1,dblk1,ublk1,x1,ipiv1,lrd,rpar_decsol,lid,ipar_decsol,ierr) + iop, caller_id, nvar, nz, lblk1, dblk1, ublk1, x1, ipiv1, lrd, rpar_decsol, lid, ipar_decsol, ierr) #endif if (ierr /= 0) then - write(*,*) 'decsolblk failed for factor' - call mesa_error(__FILE__,__LINE__) + write (*, *) 'decsolblk failed for factor' + call mesa_error(__FILE__, __LINE__) end if - - do rep=1,1 - + + do rep = 1, 1 + iop = 1 ! solve A*x = b - - do k=1,nz - do j=1,nvar - x(j,k) = brhs(j,k) + + do k = 1, nz + do j = 1, nvar + x(j, k) = brhs(j, k) end do end do #ifdef DBLE call decsolblk( & - iop,caller_id,nvar,nz,lblk1,dblk1,ublk1,x1,ipiv1,lrd,rpar_decsol,lid,ipar_decsol,ierr) + iop, caller_id, nvar, nz, lblk1, dblk1, ublk1, x1, ipiv1, lrd, rpar_decsol, lid, ipar_decsol, ierr) #else call decsolblk_quad( & - iop,caller_id,nvar,nz,lblk1,dblk1,ublk1,x1,ipiv1,lrd,rpar_decsol,lid,ipar_decsol,ierr) + iop, caller_id, nvar, nz, lblk1, dblk1, ublk1, x1, ipiv1, lrd, rpar_decsol, lid, ipar_decsol, ierr) #endif if (ierr /= 0) then - write(*,*) 'decsolblk failed for solve' - call mesa_error(__FILE__,__LINE__) + write (*, *) 'decsolblk failed for solve' + call mesa_error(__FILE__, __LINE__) end if - + end do - + iop = 2 ! deallocate #ifdef DBLE call decsolblk( & - iop,caller_id,nvar,nz,lblk1,dblk1,ublk1,x1,ipiv1,lrd,rpar_decsol,lid,ipar_decsol,ierr) + iop, caller_id, nvar, nz, lblk1, dblk1, ublk1, x1, ipiv1, lrd, rpar_decsol, lid, ipar_decsol, ierr) #else call decsolblk_quad( & - iop,caller_id,nvar,nz,lblk1,dblk1,ublk1,x1,ipiv1,lrd,rpar_decsol,lid,ipar_decsol,ierr) + iop, caller_id, nvar, nz, lblk1, dblk1, ublk1, x1, ipiv1, lrd, rpar_decsol, lid, ipar_decsol, ierr) #endif if (ierr /= 0) then - write(*,*) 'decsolblk failed for deallocate' - call mesa_error(__FILE__,__LINE__) + write (*, *) 'decsolblk failed for deallocate' + call mesa_error(__FILE__, __LINE__) end if - + end subroutine solve_blocks - - + subroutine read_testfile(fname) - character (len=*), intent(in) :: fname - integer :: iounit, ierr, i, j, k, line + character(len=*), intent(in) :: fname + integer :: iounit, ierr !write(*,*) 'reading ' // trim(fname) iounit = 33; ierr = 0 - open(unit=iounit, file=trim(fname), status='old', action='read', iostat=ierr) + open (unit=iounit, file=trim(fname), status='old', action='read', iostat=ierr) if (ierr /= 0) then - write(*,*) 'failed to open ' // trim(fname) - call mesa_error(__FILE__,__LINE__) + write (*, *) 'failed to open '//trim(fname) + call mesa_error(__FILE__, __LINE__) end if #ifdef DBLE - call mtx_read_block_tridiagonal(iounit,nvar,nz,lblk1,dblk1,ublk1,ierr) + call mtx_read_block_tridiagonal(iounit, nvar, nz, lblk1, dblk1, ublk1, ierr) #else - call mtx_read_quad_block_tridiagonal(iounit,nvar,nz,lblk1,dblk1,ublk1,ierr) + call mtx_read_quad_block_tridiagonal(iounit, nvar, nz, lblk1, dblk1, ublk1, ierr) #endif if (ierr /= 0) then - write(*,*) 'failed to read ' // trim(fname) - call mesa_error(__FILE__,__LINE__) + write (*, *) 'failed to read '//trim(fname) + call mesa_error(__FILE__, __LINE__) end if - close(iounit) - - lblk(1:nvar,1:nvar,1:nz) => lblk1(1:nvar*nvar*nz) - dblk(1:nvar,1:nvar,1:nz) => dblk1(1:nvar*nvar*nz) - ublk(1:nvar,1:nvar,1:nz) => ublk1(1:nvar*nvar*nz) - + close (iounit) + + lblk(1:nvar, 1:nvar, 1:nz) => lblk1(1:nvar*nvar*nz) + dblk(1:nvar, 1:nvar, 1:nz) => dblk1(1:nvar*nvar*nz) + ublk(1:nvar, 1:nvar, 1:nz) => ublk1(1:nvar*nvar*nz) + !return nz = 20 - write(*,*) 'testing with nvar,nz', nvar,nz - - + write (*, *) 'testing with nvar,nz', nvar, nz + end subroutine read_testfile - - + subroutine set_brhs(lblk, dblk, ublk) - real(fltp), pointer, dimension(:,:,:) :: lblk, dblk, ublk + real(fltp), pointer, dimension(:, :, :) :: lblk, dblk, ublk integer :: k, j include 'formats' ! set brhs = A*xcorrect @@ -324,29 +309,27 @@ subroutine set_brhs(lblk, dblk, ublk) return do k = 1, 2 !nz do j = 1, nvar - if (brhs(j,k) /= 0) write(*,3) 'brhs xcorrect', j, k, brhs(j,k), xcorrect(j,k) + if (brhs(j, k) /= 0) write (*, 3) 'brhs xcorrect', j, k, brhs(j, k), xcorrect(j, k) end do end do - write(*,*) 'end set_brhs' + write (*, *) 'end set_brhs' stop end subroutine set_brhs - - + subroutine check_x - real(fltp) :: max_err, err, atol, rtol, avg_err - integer :: i_max, j_max,i, j, rep + real(fltp) :: max_err, atol, rtol, avg_err + integer :: i_max, j_max, i, j include 'formats' atol = 1d-4 - rtol = 1d-4 + rtol = 1d-4 call check1_x(avg_err, max_err, atol, rtol, i_max, j_max) i = i_max; j = j_max if (max_err > 1) then - write(*,3) 'BAD: err, x, xcorrect', i, j, max_err, x(i,j), xcorrect(i,j) + write (*, 3) 'BAD: err, x, xcorrect', i, j, max_err, x(i, j), xcorrect(i, j) !write(*,3) 'BAD: avg err, max err, x, xcorrect', i, j, avg_err, max_err, x(i,j), xcorrect(i,j) end if end subroutine check_x - - + subroutine check1_x(avg_err, max_err, atol, rtol, i_max, j_max) real(fltp), intent(out) :: avg_err, max_err real(fltp), intent(in) :: atol, rtol @@ -358,11 +341,11 @@ subroutine check1_x(avg_err, max_err, atol, rtol, i_max, j_max) max_err = 0; i_max = 0; j_max = 0; err_sum = 0 do j = 1, nz do i = 1, nvar - if (is_bad(x(i,j))) then - write(*,3) 'x xcorrect', i, j, x(i,j), xcorrect(i,j) + if (is_bad(x(i, j))) then + write (*, 3) 'x xcorrect', i, j, x(i, j), xcorrect(i, j) stop 'check1_x' end if - err = abs(x(i,j) - xcorrect(i,j))/(atol + rtol*max(abs(x(i,j)),abs(xcorrect(i,j)))) + err = abs(x(i, j) - xcorrect(i, j))/(atol + rtol*max(abs(x(i, j)), abs(xcorrect(i, j)))) err_sum = err_sum + err if (err > max_err) then max_err = err; i_max = i; j_max = j @@ -372,27 +355,23 @@ subroutine check1_x(avg_err, max_err, atol, rtol, i_max, j_max) avg_err = err_sum/(nz*nvar) !write(*,1) 'avg_err', avg_err end subroutine check1_x - - + subroutine set_xcorrect real(fltp) :: cnt integer :: k, j cnt = 1d0 - do k=1,nz - do j=1,nvar + do k = 1, nz + do j = 1, nvar cnt = cnt + 1d-3 - xcorrect(j,k) = cnt + xcorrect(j, k) = cnt end do end do end subroutine set_xcorrect - - end subroutine test_block - - + end subroutine test_block #ifdef DBLE - end module test_block_tri_dble + end module test_block_tri_dble #else - end module test_block_tri_quad +end module test_block_tri_quad #endif diff --git a/mtx/test/src/test_mtx.f b/mtx/test/src/test_mtx.f90 similarity index 52% rename from mtx/test/src/test_mtx.f rename to mtx/test/src/test_mtx.f90 index dc009da5a..c13052af5 100644 --- a/mtx/test/src/test_mtx.f +++ b/mtx/test/src/test_mtx.f90 @@ -20,40 +20,39 @@ ! ! *********************************************************************** - program test_mtx - use const_lib - use math_lib, only: math_init - use mtx_lib - use test_mtx_support - - use test_square - use test_square_quad - - use test_block_tri_dble, only: do_test_block_tri_dble - use test_block_tri_quad, only: do_test_block_tri_quad - - use utils_lib, only: mesa_error - - implicit none - - character (len=32) :: my_mesa_dir - integer :: ierr, i - - my_mesa_dir = '../..' - call const_init(my_mesa_dir,ierr) - if (ierr /= 0) then - write(*,*) 'const_init failed' - call mesa_error(__FILE__,__LINE__) - end if - - call math_init() - - call do_test_square - call do_test_square_quad - call do_test_block_tri_dble - call do_test_block_tri_quad - call test_format_conversion - - - end program +program test_mtx + use const_lib + use math_lib, only: math_init + use mtx_lib + use test_mtx_support + + use test_square + use test_square_quad + + use test_block_tri_dble, only: do_test_block_tri_dble + use test_block_tri_quad, only: do_test_block_tri_quad + + use utils_lib, only: mesa_error + + implicit none + + character(len=32) :: my_mesa_dir + integer :: ierr + + my_mesa_dir = '../..' + call const_init(my_mesa_dir, ierr) + if (ierr /= 0) then + write (*, *) 'const_init failed' + call mesa_error(__FILE__, __LINE__) + end if + + call math_init() + + call do_test_square + call do_test_square_quad + call do_test_block_tri_dble + call do_test_block_tri_quad + call test_format_conversion + +end program diff --git a/mtx/test/src/test_mtx_support.f b/mtx/test/src/test_mtx_support.f deleted file mode 100644 index 5a4064639..000000000 --- a/mtx/test/src/test_mtx_support.f +++ /dev/null @@ -1,156 +0,0 @@ -! *********************************************************************** -! -! Copyright (C) 2011 Bill Paxton -! -! This file is part of MESA. -! -! MESA is free software; you can redistribute it and/or modify -! it under the terms of the GNU General Library Public License as published -! by the Free Software Foundation; either version 2 of the License,or -! (at your option) any later version. -! -! MESA 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 Library General Public License for more details. -! -! You should have received a copy of the GNU Library General Public License -! along with this software; if not,write to the Free Software -! Foundation,Inc.,59 Temple Place,Suite 330,Boston,MA 02111-1307 USA -! -! *********************************************************************** - - - module test_mtx_support - - use mtx_lib - use mtx_def - use utils_lib, only: mesa_error - - implicit none - - - - contains - - - subroutine test_format_conversion - use mtx_def - integer,parameter :: n=6 - integer,parameter :: nzmax = n*n,nrow = n,ncol = n,ndns = n,ndim = n - integer,parameter :: iwk = nzmax,im = 10 - - real(dp) :: a(ndim,n),a2(ndim,n),values(nzmax) - integer,parameter :: ml = 1,mu = 2, ldbb = 2*ml+mu+1 - real(dp) :: b(ndim,n),b2(ndim,n),bb(ldbb,n),bb2(ldbb,n) - integer :: ierr,nz,iptr(n+1),jind(nzmax),i,j,k,kk,hint - - write(*,*) 'test_format_conversion' - - a(1,1:n) = (/ 10d0, 0d0, 0d0, 0d0, 0d0, 0d0 /) - a(2,1:n) = (/ 0d0,12d0,-3d0,-1d0, 0d0, 0d0 /) - a(3,1:n) = (/ 0d0, 0d0,15d0, 0d0, 0d0, 0d0 /) - a(4,1:n) = (/ -2d0, 0d0, 0d0,10d0, -1d0, 0d0 /) - a(5,1:n) = (/ -1d0, 0d0, 0d0,-5d0, 1d0,-1d0 /) - a(6,1:n) = (/ -1d0,-2d0, 0d0, 0d0, 0d0, 6d0 /) - - b(1,1:n) = (/ 10d0, 0d0, 0d0, 0d0, 0d0, 0d0 /) - b(2,1:n) = (/ -2d0,12d0,-3d0,-1d0, 0d0, 0d0 /) - b(3,1:n) = (/ 0d0, 1d0,15d0, 0d0, 0d0, 0d0 /) - b(4,1:n) = (/ 0d0, 0d0, 0d0,10d0, -1d0, 0d0 /) - b(5,1:n) = (/ 0d0, 0d0, 0d0,-5d0, 1d0,-1d0 /) - b(6,1:n) = (/ 0d0, 0d0, 0d0, 0d0, 0d0, 6d0 /) - - ierr = 0 - - write(*,*) 'dense_to_row_sparse' - call dense_to_row_sparse(n,ndim,a,nzmax,nz,iptr,jind,values,ierr) - if (ierr /= 0) call mesa_error(__FILE__,__LINE__) - a2 = -1 - write(*,*) 'find_loc_in_row_sparse' - do i=1,n - hint = 0 - do k=iptr(i),iptr(i+1)-1 - j = jind(k) - call find_loc_in_sparse(compressed_row_sparse,n,nzmax,iptr,jind,i,j,hint,kk,ierr) - if (kk /= k .or. ierr /= 0) then - write(*,*) 'failure in find_loc_in_row_sparse', i, j, k, kk - call mesa_error(__FILE__,__LINE__) - end if - hint = k - end do - end do - - write(*,*) 'dense_to_band' - call dense_to_band(n,ndim,b,ml,mu,bb,ldbb,ierr) - if (ierr /= 0) call mesa_error(__FILE__,__LINE__) - - write(*,*) 'band_to_dense' - a2 = -1 - call band_to_dense(n,ml,mu,bb,ldbb,ndim,a2,ierr) - if (ierr /= 0) call mesa_error(__FILE__,__LINE__) - if (any(b /= a2)) call mesa_error(__FILE__,__LINE__) - - write(*,*) 'band_to_column_sparse' - call band_to_column_sparse(n,ml,mu,bb,ldbb,nzmax,nz,iptr,jind,values,ierr) - if (ierr /= 0) call mesa_error(__FILE__,__LINE__) - - write(*,*) 'column_sparse_to_band' - bb2 = -1 - call column_sparse_to_band(n,ml,mu,bb2,ldbb,nz,iptr,jind,values,ierr) - if (ierr /= 0) call mesa_error(__FILE__,__LINE__) - if (any(bb /= bb2)) call mesa_error(__FILE__,__LINE__) - - write(*,*) 'band_to_row_sparse' - call band_to_row_sparse(n,ml,mu,bb,ldbb,nzmax,nz,iptr,jind,values,ierr) - if (ierr /= 0) call mesa_error(__FILE__,__LINE__) - - write(*,*) 'okay' - write(*,*) - - end subroutine test_format_conversion - - - subroutine test_quad_tridiag - integer, parameter :: n = 5 - real(16), dimension(n) :: DL, D, DU, DU2, B - integer, dimension(n) :: ip - integer :: ierr, i - - write(*,*) 'test_quad_tridiag' - - DL = -2 ! subdiagonal - D = 3 ! diagonal - DU = -1 ! superdiagonal - - do i=1,n - b(i) = i-1 - end do - - ierr = 0 - ! factor - call qgttrf(n, DL, D, DU, DU2, ip, ierr) - if (ierr /= 0) then - write(*,*) 'failed in factoring' - call mesa_error(__FILE__,__LINE__) - end if - - ierr = 0 - ! solve - call qgttrs( 'N', n, 1, DL, D, DU, DU2, ip, B, n, ierr) - if (ierr /= 0) then - write(*,*) 'failed in solving' - call mesa_error(__FILE__,__LINE__) - end if - - do i=1,n - write(*,*) i, b(i) - end do - write(*,*) - write(*,*) - - end subroutine test_quad_tridiag - - - - end module test_mtx_support diff --git a/mtx/test/src/test_mtx_support.f90 b/mtx/test/src/test_mtx_support.f90 new file mode 100644 index 000000000..603a6ea5a --- /dev/null +++ b/mtx/test/src/test_mtx_support.f90 @@ -0,0 +1,148 @@ +! *********************************************************************** +! +! Copyright (C) 2011 Bill Paxton +! +! This file is part of MESA. +! +! MESA is free software; you can redistribute it and/or modify +! it under the terms of the GNU General Library Public License as published +! by the Free Software Foundation; either version 2 of the License,or +! (at your option) any later version. +! +! MESA 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 Library General Public License for more details. +! +! You should have received a copy of the GNU Library General Public License +! along with this software; if not,write to the Free Software +! Foundation,Inc.,59 Temple Place,Suite 330,Boston,MA 02111-1307 USA +! +! *********************************************************************** + +module test_mtx_support + + use mtx_lib + use mtx_def + use utils_lib, only: mesa_error + + implicit none + +contains + + subroutine test_format_conversion + use mtx_def + integer, parameter :: n = 6 + integer, parameter :: nzmax = n*n, ndim = n + + real(dp) :: a(ndim, n), a2(ndim, n), values(nzmax) + integer, parameter :: ml = 1, mu = 2, ldbb = 2*ml + mu + 1 + real(dp) :: b(ndim, n), bb(ldbb, n), bb2(ldbb, n) + integer :: ierr, nz, iptr(n + 1), jind(nzmax), i, j, k, kk, hint + + write (*, *) 'test_format_conversion' + + a(1, 1:n) = (/10d0, 0d0, 0d0, 0d0, 0d0, 0d0/) + a(2, 1:n) = (/0d0, 12d0, -3d0, -1d0, 0d0, 0d0/) + a(3, 1:n) = (/0d0, 0d0, 15d0, 0d0, 0d0, 0d0/) + a(4, 1:n) = (/-2d0, 0d0, 0d0, 10d0, -1d0, 0d0/) + a(5, 1:n) = (/-1d0, 0d0, 0d0, -5d0, 1d0, -1d0/) + a(6, 1:n) = (/-1d0, -2d0, 0d0, 0d0, 0d0, 6d0/) + + b(1, 1:n) = (/10d0, 0d0, 0d0, 0d0, 0d0, 0d0/) + b(2, 1:n) = (/-2d0, 12d0, -3d0, -1d0, 0d0, 0d0/) + b(3, 1:n) = (/0d0, 1d0, 15d0, 0d0, 0d0, 0d0/) + b(4, 1:n) = (/0d0, 0d0, 0d0, 10d0, -1d0, 0d0/) + b(5, 1:n) = (/0d0, 0d0, 0d0, -5d0, 1d0, -1d0/) + b(6, 1:n) = (/0d0, 0d0, 0d0, 0d0, 0d0, 6d0/) + + ierr = 0 + + write (*, *) 'dense_to_row_sparse' + call dense_to_row_sparse(n, ndim, a, nzmax, nz, iptr, jind, values, ierr) + if (ierr /= 0) call mesa_error(__FILE__, __LINE__) + a2 = -1 + write (*, *) 'find_loc_in_row_sparse' + do i = 1, n + hint = 0 + do k = iptr(i), iptr(i + 1) - 1 + j = jind(k) + call find_loc_in_sparse(compressed_row_sparse, n, nzmax, iptr, jind, i, j, hint, kk, ierr) + if (kk /= k .or. ierr /= 0) then + write (*, *) 'failure in find_loc_in_row_sparse', i, j, k, kk + call mesa_error(__FILE__, __LINE__) + end if + hint = k + end do + end do + + write (*, *) 'dense_to_band' + call dense_to_band(n, ndim, b, ml, mu, bb, ldbb, ierr) + if (ierr /= 0) call mesa_error(__FILE__, __LINE__) + + write (*, *) 'band_to_dense' + a2 = -1 + call band_to_dense(n, ml, mu, bb, ldbb, ndim, a2, ierr) + if (ierr /= 0) call mesa_error(__FILE__, __LINE__) + if (any(b /= a2)) call mesa_error(__FILE__, __LINE__) + + write (*, *) 'band_to_column_sparse' + call band_to_column_sparse(n, ml, mu, bb, ldbb, nzmax, nz, iptr, jind, values, ierr) + if (ierr /= 0) call mesa_error(__FILE__, __LINE__) + + write (*, *) 'column_sparse_to_band' + bb2 = -1 + call column_sparse_to_band(n, ml, mu, bb2, ldbb, nz, iptr, jind, values, ierr) + if (ierr /= 0) call mesa_error(__FILE__, __LINE__) + if (any(bb /= bb2)) call mesa_error(__FILE__, __LINE__) + + write (*, *) 'band_to_row_sparse' + call band_to_row_sparse(n, ml, mu, bb, ldbb, nzmax, nz, iptr, jind, values, ierr) + if (ierr /= 0) call mesa_error(__FILE__, __LINE__) + + write (*, *) 'okay' + write (*, *) + + end subroutine test_format_conversion + + subroutine test_quad_tridiag + integer, parameter :: n = 5 + real(16), dimension(n) :: DL, D, DU, DU2, B + integer, dimension(n) :: ip + integer :: ierr, i + + write (*, *) 'test_quad_tridiag' + + DL = -2 ! subdiagonal + D = 3 ! diagonal + DU = -1 ! superdiagonal + + do i = 1, n + b(i) = i - 1 + end do + + ierr = 0 + ! factor + call qgttrf(n, DL, D, DU, DU2, ip, ierr) + if (ierr /= 0) then + write (*, *) 'failed in factoring' + call mesa_error(__FILE__, __LINE__) + end if + + ierr = 0 + ! solve + call qgttrs('N', n, 1, DL, D, DU, DU2, ip, B, n, ierr) + if (ierr /= 0) then + write (*, *) 'failed in solving' + call mesa_error(__FILE__, __LINE__) + end if + + do i = 1, n + write (*, *) i, b(i) + end do + write (*, *) + write (*, *) + + end subroutine test_quad_tridiag + +end module test_mtx_support diff --git a/mtx/test/src/test_square.f b/mtx/test/src/test_square.f deleted file mode 100644 index f0eece3d9..000000000 --- a/mtx/test/src/test_square.f +++ /dev/null @@ -1,186 +0,0 @@ -! *********************************************************************** -! -! Copyright (C) 2011 Bill Paxton -! -! This file is part of MESA. -! -! MESA is free software; you can redistribute it and/or modify -! it under the terms of the GNU General Library Public License as published -! by the Free Software Foundation; either version 2 of the License,or -! (at your option) any later version. -! -! MESA 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 Library General Public License for more details. -! -! You should have received a copy of the GNU Library General Public License -! along with this software; if not,write to the Free Software -! Foundation,Inc.,59 Temple Place,Suite 330,Boston,MA 02111-1307 USA -! -! *********************************************************************** - - - module test_square - - use mtx_lib - use mtx_def - use utils_lib, only: mesa_error - - implicit none - - contains - - - - subroutine do_test_square - call test_square1 - call test_square2 - call test_square_inv - end subroutine do_test_square - - - subroutine test_square_inv - - - integer,parameter :: n=3, nrhs=1 - integer :: i,info,ipiv(n),icommon(n) - double precision :: A1(n,n),B1(n),A2(n,n),B2(n),work(4*n),rcond - double precision :: A1_init(n,n),A2_init(n,n),X(n),prod(n) - - include 'formats' - - write(*,*) 'test_square_inv' - write(*,*) - - A1(1,1:n) = (/ 3.14d0,7.5d0, 0.00d0 /) - A1(2,1:n) = (/ 4.1d0,3.2d0,0.3d0 /) - A1(3,1:n) = (/ 0.00d0,1d0,4.1d0 /) - A1_init = A1 - - A2(1,1:n) = (/ 0d0,3.1d0,0d0 /) - A2(2,1:n) = (/ 4.7d0,6.2d0,0d0 /) - A2(3,1:n) = (/ 3.2d0,0d0,0.31d0 /) - A2_init = A2 - - B1(1:n) = (/ 1.0d0,2.0d0,3.0d0 /) - B2(1:n) = (/ 1.1d0,2.1d0,3.1d0 /) - - - - call DGETRF(n,n,A1,n,ipiv,info) - if (info /= 0) then - write(*,*) 'singular matrix?', info - call mesa_error(__FILE__,__LINE__) - end if - X = B1 - ! solve A1*X = B1 - call DGETRS('N',n,nrhs,A1,n,ipiv,X,n,info) - if (info /= 0) call mesa_error(__FILE__,__LINE__) - - write(*,1) 'B1', B1(1:n) - ! prod = A1_init*X; should get prod == B1 - call dgemv('N',n,n,1d0,A1_init,n,X,1,0d0,prod,1) - write(*,1) 'A1_init*X', prod(1:n) - ! prod = A1*X; should get prod == B1 - - call DGETRF(n,n,A2,n,ipiv,info) - if (info /= 0) then - write(*,*) 'singular matrix?', info - call mesa_error(__FILE__,__LINE__) - end if - X = B2 - ! solve A2*X = B2 - call DGETRS('N',n,nrhs,A2,n,ipiv,X,n,info) - if (info /= 0) call mesa_error(__FILE__,__LINE__) - - write(*,1) 'B2', B2(1:n) - ! prod = A2_init*X; should get prod == B2 - call dgemv('N',n,n,1d0,A2_init,n,X,1,0d0,prod,1) - write(*,1) 'A2_init*X', prod(1:n) - ! prod = A2*X; should get prod == B2 - - end subroutine test_square_inv - - - subroutine test_square2 - - integer,parameter :: n=3,nrhs=1 - integer :: i,info,ipiv(n),icommon(n) - double precision :: A1(n,n),B1(n,nrhs),A2(n,n),B2(n,nrhs),work(4*n),rcond - - include 'formats' - - write(*,*) 'test_square2' - write(*,*) - - A1(1,1:n) = (/ 3.14d0,7.5d0, 0.00d0 /) - A1(2,1:n) = (/ 4.1d0,3.2d0,0.3d0 /) - A1(3,1:n) = (/ 0.00d0,1d0,4.1d0 /) - - A2(1,1:n) = (/ 4.7d0,6.2d0,0d0 /) - A2(2,1:n) = (/ 3.2d0,0d0,0.31d0 /) - A2(3,1:n) = (/ 0d0,3.1d0,0d0 /) - - B1(1:n,1) = (/ 1.0d0,2.0d0,3.0d0 /) - B2(1:n,1) = (/ 1.1d0,2.1d0,3.1d0 /) - - call DGETRF(n,n,A1,n,ipiv,info) - if (info /= 0) then - write(*,*) 'singular matrix?', info - call mesa_error(__FILE__,__LINE__) - end if - call DGETRS('N',n,nrhs,A1,n,ipiv,B1,n,info) - if (info /= 0) call mesa_error(__FILE__,__LINE__) - - write(*,1) 'B1', B1(1:n,1) - - call DGETRF(n,n,A2,n,ipiv,info) - if (info /= 0) then - write(*,*) 'singular matrix?', info - call mesa_error(__FILE__,__LINE__) - end if - call DGETRS('N',n,nrhs,A2,n,ipiv,B2,n,info) - if (info /= 0) call mesa_error(__FILE__,__LINE__) - - write(*,1) 'B2', B2(1:n,1) - write(*,*) - - end subroutine test_square2 - - - subroutine test_square1 - - integer,parameter :: n=4,nrhs=1 - integer :: i,info,ipiv(n),iwork(n) - double precision :: A(n,n),B(n,nrhs),A2(n,n),work(4*n),rcond - - include 'formats' - - A(1,1:n) = (/ 1.80d0, 2.88d0, 2.05d0, 0.00d0 /) - A(2,1:n) = (/ 5.25d0, -2.95d0, -0.95d0, -3.80d0 /) - A(3,1:n) = (/ 0.00d0, 0.00d0, -2.90d0, -1.04d0 /) - A(4,1:n) = (/-1.11d0, 0.00d0, -0.59d0, 0.80d0 /) - B(1:n,1) = (/ 4.35d0,5.05d0,3.04d0,-2.05d0 /) - - A2 = A - - write(*,*) ' test_square1' - write(*,*) - - call DGETRF(n,n,A,n,ipiv,info) - if (info /= 0) then - write(*,*) 'singular matrix?', info - call mesa_error(__FILE__,__LINE__) - end if - - call DGETRS('N',n,nrhs,A,n,ipiv,B,n,info) - if (info /= 0) call mesa_error(__FILE__,__LINE__) - - write(*,1) 'B', B(1:n,1) - write(*,*) - - end subroutine test_square1 - - - end module test_square diff --git a/mtx/test/src/test_square.f90 b/mtx/test/src/test_square.f90 new file mode 100644 index 000000000..875939cb2 --- /dev/null +++ b/mtx/test/src/test_square.f90 @@ -0,0 +1,176 @@ +! *********************************************************************** +! +! Copyright (C) 2011 Bill Paxton +! +! This file is part of MESA. +! +! MESA is free software; you can redistribute it and/or modify +! it under the terms of the GNU General Library Public License as published +! by the Free Software Foundation; either version 2 of the License,or +! (at your option) any later version. +! +! MESA 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 Library General Public License for more details. +! +! You should have received a copy of the GNU Library General Public License +! along with this software; if not,write to the Free Software +! Foundation,Inc.,59 Temple Place,Suite 330,Boston,MA 02111-1307 USA +! +! *********************************************************************** + +module test_square + + use mtx_lib + use mtx_def + use utils_lib, only: mesa_error + + implicit none + +contains + + subroutine do_test_square + call test_square1 + call test_square2 + call test_square_inv + end subroutine do_test_square + + subroutine test_square_inv + + integer, parameter :: n = 3, nrhs = 1 + integer :: info, ipiv(n) + double precision :: A1(n, n), B1(n), A2(n, n), B2(n) + double precision :: A1_init(n, n), A2_init(n, n), X(n), prod(n) + + include 'formats' + + write (*, *) 'test_square_inv' + write (*, *) + + A1(1, 1:n) = (/3.14d0, 7.5d0, 0.00d0/) + A1(2, 1:n) = (/4.1d0, 3.2d0, 0.3d0/) + A1(3, 1:n) = (/0.00d0, 1d0, 4.1d0/) + A1_init = A1 + + A2(1, 1:n) = (/0d0, 3.1d0, 0d0/) + A2(2, 1:n) = (/4.7d0, 6.2d0, 0d0/) + A2(3, 1:n) = (/3.2d0, 0d0, 0.31d0/) + A2_init = A2 + + B1(1:n) = (/1.0d0, 2.0d0, 3.0d0/) + B2(1:n) = (/1.1d0, 2.1d0, 3.1d0/) + + call DGETRF(n, n, A1, n, ipiv, info) + if (info /= 0) then + write (*, *) 'singular matrix?', info + call mesa_error(__FILE__, __LINE__) + end if + X = B1 + ! solve A1*X = B1 + call DGETRS('N', n, nrhs, A1, n, ipiv, X, n, info) + if (info /= 0) call mesa_error(__FILE__, __LINE__) + + write (*, 1) 'B1', B1(1:n) + ! prod = A1_init*X; should get prod == B1 + call dgemv('N', n, n, 1d0, A1_init, n, X, 1, 0d0, prod, 1) + write (*, 1) 'A1_init*X', prod(1:n) + ! prod = A1*X; should get prod == B1 + + call DGETRF(n, n, A2, n, ipiv, info) + if (info /= 0) then + write (*, *) 'singular matrix?', info + call mesa_error(__FILE__, __LINE__) + end if + X = B2 + ! solve A2*X = B2 + call DGETRS('N', n, nrhs, A2, n, ipiv, X, n, info) + if (info /= 0) call mesa_error(__FILE__, __LINE__) + + write (*, 1) 'B2', B2(1:n) + ! prod = A2_init*X; should get prod == B2 + call dgemv('N', n, n, 1d0, A2_init, n, X, 1, 0d0, prod, 1) + write (*, 1) 'A2_init*X', prod(1:n) + ! prod = A2*X; should get prod == B2 + + end subroutine test_square_inv + + subroutine test_square2 + + integer, parameter :: n = 3, nrhs = 1 + integer :: info, ipiv(n) + double precision :: A1(n, n), B1(n, nrhs), A2(n, n), B2(n, nrhs) + + include 'formats' + + write (*, *) 'test_square2' + write (*, *) + + A1(1, 1:n) = (/3.14d0, 7.5d0, 0.00d0/) + A1(2, 1:n) = (/4.1d0, 3.2d0, 0.3d0/) + A1(3, 1:n) = (/0.00d0, 1d0, 4.1d0/) + + A2(1, 1:n) = (/4.7d0, 6.2d0, 0d0/) + A2(2, 1:n) = (/3.2d0, 0d0, 0.31d0/) + A2(3, 1:n) = (/0d0, 3.1d0, 0d0/) + + B1(1:n, 1) = (/1.0d0, 2.0d0, 3.0d0/) + B2(1:n, 1) = (/1.1d0, 2.1d0, 3.1d0/) + + call DGETRF(n, n, A1, n, ipiv, info) + if (info /= 0) then + write (*, *) 'singular matrix?', info + call mesa_error(__FILE__, __LINE__) + end if + call DGETRS('N', n, nrhs, A1, n, ipiv, B1, n, info) + if (info /= 0) call mesa_error(__FILE__, __LINE__) + + write (*, 1) 'B1', B1(1:n, 1) + + call DGETRF(n, n, A2, n, ipiv, info) + if (info /= 0) then + write (*, *) 'singular matrix?', info + call mesa_error(__FILE__, __LINE__) + end if + call DGETRS('N', n, nrhs, A2, n, ipiv, B2, n, info) + if (info /= 0) call mesa_error(__FILE__, __LINE__) + + write (*, 1) 'B2', B2(1:n, 1) + write (*, *) + + end subroutine test_square2 + + subroutine test_square1 + + integer, parameter :: n = 4, nrhs = 1 + integer :: info, ipiv(n) + double precision :: A(n, n), B(n, nrhs), A2(n, n) + + include 'formats' + + A(1, 1:n) = (/1.80d0, 2.88d0, 2.05d0, 0.00d0/) + A(2, 1:n) = (/5.25d0, -2.95d0, -0.95d0, -3.80d0/) + A(3, 1:n) = (/0.00d0, 0.00d0, -2.90d0, -1.04d0/) + A(4, 1:n) = (/-1.11d0, 0.00d0, -0.59d0, 0.80d0/) + B(1:n, 1) = (/4.35d0, 5.05d0, 3.04d0, -2.05d0/) + + A2 = A + + write (*, *) ' test_square1' + write (*, *) + + call DGETRF(n, n, A, n, ipiv, info) + if (info /= 0) then + write (*, *) 'singular matrix?', info + call mesa_error(__FILE__, __LINE__) + end if + + call DGETRS('N', n, nrhs, A, n, ipiv, B, n, info) + if (info /= 0) call mesa_error(__FILE__, __LINE__) + + write (*, 1) 'B', B(1:n, 1) + write (*, *) + + end subroutine test_square1 + +end module test_square diff --git a/mtx/test/src/test_square_quad.f b/mtx/test/src/test_square_quad.f deleted file mode 100644 index fe2c293a7..000000000 --- a/mtx/test/src/test_square_quad.f +++ /dev/null @@ -1,182 +0,0 @@ -! *********************************************************************** -! -! Copyright (C) 2011 Bill Paxton -! -! This file is part of MESA. -! -! MESA is free software; you can redistribute it and/or modify -! it under the terms of the GNU General Library Public License as published -! by the Free Software Foundation; either version 2 of the License,or -! (at your option) any later version. -! -! MESA 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 Library General Public License for more details. -! -! You should have received a copy of the GNU Library General Public License -! along with this software; if not,write to the Free Software -! Foundation,Inc.,59 Temple Place,Suite 330,Boston,MA 02111-1307 USA -! -! *********************************************************************** - - - module test_square_quad - - use mtx_lib - use mtx_def - use utils_lib, only: mesa_error - - implicit none - - contains - - - - subroutine do_test_square_quad - call test_square_quad1 - call test_square_quad2 - call test_square_quad_inv - end subroutine do_test_square_quad - - - subroutine test_square_quad_inv - - integer,parameter :: n=3, nrhs=1 - integer :: i,info,ipiv(n),icommon(n) - real(16) :: A1(n,n),B1(n),A2(n,n),B2(n),work(4*n),rcond - real(16) :: A1_init(n,n),A2_init(n,n),X(n),prod(n) - - include 'formats' - - write(*,*) 'test_square_quad_inv' - write(*,*) - - A1(1,1:n) = (/ 3.14_16,7.5_16, 0.00_16 /) - A1(2,1:n) = (/ 4.1_16,3.2_16,0.3_16 /) - A1(3,1:n) = (/ 0.00_16,1.0_16,4.1_16 /) - A1_init = A1 - - A2(1,1:n) = (/ 0.0_16,3.1_16,0.0_16 /) - A2(2,1:n) = (/ 4.7_16,6.2_16,0.0_16 /) - A2(3,1:n) = (/ 3.2_16,0.0_16,0.31_16 /) - A2_init = A2 - - B1(1:n) = (/ 1.0_16,2.0_16,3.0_16 /) - B2(1:n) = (/ 1.1_16,2.1_16,3.1_16 /) - - info = 0 - call QGETRF(n,n,A1,n,ipiv,info) - if (info /= 0) then - write(*,*) 'singular matrix?', info - call mesa_error(__FILE__,__LINE__) - end if - X = B1 - ! solve A1*X = B1 - call QGETRS('N',n,nrhs,A1,n,ipiv,X,n,info) - if (info /= 0) call mesa_error(__FILE__,__LINE__) - - write(*,1) 'B1', B1(1:n) - ! prod = A1_init*X; should get prod == B1 - - write(*,*) 'ipiv1', ipiv(1:n) - write(*,*) - - call QGETRF(n,n,A2,n,ipiv,info) - if (info /= 0) then - write(*,*) 'singular matrix?', info - call mesa_error(__FILE__,__LINE__) - end if - X = B2 - ! solve A2*X = B2 - call QGETRS('N',n,nrhs,A2,n,ipiv,X,n,info) - if (info /= 0) call mesa_error(__FILE__,__LINE__) - - write(*,1) 'B2', B2(1:n) - - end subroutine test_square_quad_inv - - - subroutine test_square_quad2 - - integer,parameter :: n=3,nrhs=1 - integer :: i,info,ipiv(n),icommon(n) - real(16) :: A1(n,n),B1(n,nrhs),A2(n,n),B2(n,nrhs),work(4*n),rcond - - include 'formats' - - write(*,*) 'test test_square_quad2' - write(*,*) - - A1(1,1:n) = (/ 3.14_16,7.5_16, 0.0_16 /) - A1(2,1:n) = (/ 4.1_16,3.2_16,0.3_16 /) - A1(3,1:n) = (/ 0.00_16,1.0_16,4.1_16 /) - - A2(1,1:n) = (/ 4.7_16,6.2_16,0.0_16 /) - A2(2,1:n) = (/ 3.2_16,0.0_16,0.31_16 /) - A2(3,1:n) = (/ 0.0_16,3.1_16,0.0_16 /) - - B1(1:n,1) = (/ 1.0_16,2.0_16,3.0_16 /) - B2(1:n,1) = (/ 1.1_16,2.1_16,3.1_16 /) - - info = 0 - call QGETRF(n,n,A1,n,ipiv,info) - if (info /= 0) then - write(*,*) 'singular matrix?', info - call mesa_error(__FILE__,__LINE__) - end if - call QGETRS('N',n,nrhs,A1,n,ipiv,B1,n,info) - if (info /= 0) call mesa_error(__FILE__,__LINE__) - - write(*,1) 'B1', B1(1:n,1) - - call QGETRF(n,n,A2,n,ipiv,info) - if (info /= 0) then - write(*,*) 'singular matrix' - call mesa_error(__FILE__,__LINE__) - end if - call QGETRS('N',n,nrhs,A2,n,ipiv,B2,n,info) - if (info /= 0) call mesa_error(__FILE__,__LINE__) - - write(*,1) 'B2', B2(1:n,1) - write(*,*) - - end subroutine test_square_quad2 - - - subroutine test_square_quad1 - - integer,parameter :: n=4,nrhs=1 - integer :: i,info,ipiv(n),iwork(n) - real(16) :: A(n,n),B(n,nrhs),A2(n,n),work(4*n),rcond - - include 'formats' - - A(1,1:n) = (/ 1.80_16, 2.88_16, 2.05_16, 0.00_16 /) - A(2,1:n) = (/ 5.25_16, -2.95_16, -0.95_16, -3.80_16 /) - A(3,1:n) = (/ 0.00_16, 0.00_16, -2.90_16, -1.04_16 /) - A(4,1:n) = (/-1.11_16, 0.00_16, -0.59_16, 0.80_16 /) - B(1:n,1) = (/ 4.35_16, 5.05_16, 3.04_16, -2.05_16 /) - - A2 = A - - write(*,*) ' test_square_quad1' - write(*,*) - - info = 0 - call QGETRF(n,n,A,n,ipiv,info) - if (info /= 0) then - write(*,*) 'singular matrix?', info - call mesa_error(__FILE__,__LINE__) - end if - - call QGETRS('N',n,nrhs,A,n,ipiv,B,n,info) - if (info /= 0) call mesa_error(__FILE__,__LINE__) - - write(*,1) 'B', B(1:n,1) - write(*,*) - - end subroutine test_square_quad1 - - - end module test_square_quad diff --git a/mtx/test/src/test_square_quad.f90 b/mtx/test/src/test_square_quad.f90 new file mode 100644 index 000000000..505a27b69 --- /dev/null +++ b/mtx/test/src/test_square_quad.f90 @@ -0,0 +1,175 @@ +! *********************************************************************** +! +! Copyright (C) 2011 Bill Paxton +! +! This file is part of MESA. +! +! MESA is free software; you can redistribute it and/or modify +! it under the terms of the GNU General Library Public License as published +! by the Free Software Foundation; either version 2 of the License,or +! (at your option) any later version. +! +! MESA 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 Library General Public License for more details. +! +! You should have received a copy of the GNU Library General Public License +! along with this software; if not,write to the Free Software +! Foundation,Inc.,59 Temple Place,Suite 330,Boston,MA 02111-1307 USA +! +! *********************************************************************** + +module test_square_quad + + use mtx_lib + use mtx_def + use utils_lib, only: mesa_error + + implicit none + +contains + + subroutine do_test_square_quad + call test_square_quad1 + call test_square_quad2 + call test_square_quad_inv + end subroutine do_test_square_quad + + subroutine test_square_quad_inv + + integer, parameter :: n = 3, nrhs = 1 + integer :: info, ipiv(n) + real(16) :: A1(n, n), B1(n), A2(n, n), B2(n) + real(16) :: A1_init(n, n), A2_init(n, n), X(n) + + include 'formats' + + write (*, *) 'test_square_quad_inv' + write (*, *) + + A1(1, 1:n) = (/3.14_16, 7.5_16, 0.00_16/) + A1(2, 1:n) = (/4.1_16, 3.2_16, 0.3_16/) + A1(3, 1:n) = (/0.00_16, 1.0_16, 4.1_16/) + A1_init = A1 + + A2(1, 1:n) = (/0.0_16, 3.1_16, 0.0_16/) + A2(2, 1:n) = (/4.7_16, 6.2_16, 0.0_16/) + A2(3, 1:n) = (/3.2_16, 0.0_16, 0.31_16/) + A2_init = A2 + + B1(1:n) = (/1.0_16, 2.0_16, 3.0_16/) + B2(1:n) = (/1.1_16, 2.1_16, 3.1_16/) + + info = 0 + call QGETRF(n, n, A1, n, ipiv, info) + if (info /= 0) then + write (*, *) 'singular matrix?', info + call mesa_error(__FILE__, __LINE__) + end if + X = B1 + ! solve A1*X = B1 + call QGETRS('N', n, nrhs, A1, n, ipiv, X, n, info) + if (info /= 0) call mesa_error(__FILE__, __LINE__) + + write (*, 1) 'B1', B1(1:n) + ! prod = A1_init*X; should get prod == B1 + + write (*, *) 'ipiv1', ipiv(1:n) + write (*, *) + + call QGETRF(n, n, A2, n, ipiv, info) + if (info /= 0) then + write (*, *) 'singular matrix?', info + call mesa_error(__FILE__, __LINE__) + end if + X = B2 + ! solve A2*X = B2 + call QGETRS('N', n, nrhs, A2, n, ipiv, X, n, info) + if (info /= 0) call mesa_error(__FILE__, __LINE__) + + write (*, 1) 'B2', B2(1:n) + + end subroutine test_square_quad_inv + + subroutine test_square_quad2 + + integer, parameter :: n = 3, nrhs = 1 + integer :: info, ipiv(n) + real(16) :: A1(n, n), B1(n, nrhs), A2(n, n), B2(n, nrhs) + + include 'formats' + + write (*, *) 'test test_square_quad2' + write (*, *) + + A1(1, 1:n) = (/3.14_16, 7.5_16, 0.0_16/) + A1(2, 1:n) = (/4.1_16, 3.2_16, 0.3_16/) + A1(3, 1:n) = (/0.00_16, 1.0_16, 4.1_16/) + + A2(1, 1:n) = (/4.7_16, 6.2_16, 0.0_16/) + A2(2, 1:n) = (/3.2_16, 0.0_16, 0.31_16/) + A2(3, 1:n) = (/0.0_16, 3.1_16, 0.0_16/) + + B1(1:n, 1) = (/1.0_16, 2.0_16, 3.0_16/) + B2(1:n, 1) = (/1.1_16, 2.1_16, 3.1_16/) + + info = 0 + call QGETRF(n, n, A1, n, ipiv, info) + if (info /= 0) then + write (*, *) 'singular matrix?', info + call mesa_error(__FILE__, __LINE__) + end if + call QGETRS('N', n, nrhs, A1, n, ipiv, B1, n, info) + if (info /= 0) call mesa_error(__FILE__, __LINE__) + + write (*, 1) 'B1', B1(1:n, 1) + + call QGETRF(n, n, A2, n, ipiv, info) + if (info /= 0) then + write (*, *) 'singular matrix' + call mesa_error(__FILE__, __LINE__) + end if + call QGETRS('N', n, nrhs, A2, n, ipiv, B2, n, info) + if (info /= 0) call mesa_error(__FILE__, __LINE__) + + write (*, 1) 'B2', B2(1:n, 1) + write (*, *) + + end subroutine test_square_quad2 + + subroutine test_square_quad1 + + integer, parameter :: n = 4, nrhs = 1 + integer :: info, ipiv(n) + real(16) :: A(n, n), B(n, nrhs), A2(n, n) + + include 'formats' + + A(1, 1:n) = (/1.80_16, 2.88_16, 2.05_16, 0.00_16/) + A(2, 1:n) = (/5.25_16, -2.95_16, -0.95_16, -3.80_16/) + A(3, 1:n) = (/0.00_16, 0.00_16, -2.90_16, -1.04_16/) + A(4, 1:n) = (/-1.11_16, 0.00_16, -0.59_16, 0.80_16/) + B(1:n, 1) = (/4.35_16, 5.05_16, 3.04_16, -2.05_16/) + + A2 = A + + write (*, *) ' test_square_quad1' + write (*, *) + + info = 0 + call QGETRF(n, n, A, n, ipiv, info) + if (info /= 0) then + write (*, *) 'singular matrix?', info + call mesa_error(__FILE__, __LINE__) + end if + + call QGETRS('N', n, nrhs, A, n, ipiv, B, n, info) + if (info /= 0) call mesa_error(__FILE__, __LINE__) + + write (*, 1) 'B', B(1:n, 1) + write (*, *) + + end subroutine test_square_quad1 + +end module test_square_quad diff --git a/mtx/test/src/test_trisolve.f b/mtx/test/src/test_trisolve.f deleted file mode 100644 index 64de66cf4..000000000 --- a/mtx/test/src/test_trisolve.f +++ /dev/null @@ -1,282 +0,0 @@ -! *********************************************************************** -! -! Copyright (C) 2012 Bill Paxton -! -! This file is part of MESA. -! -! MESA is free software; you can redistribute it and/or modify -! it under the terms of the GNU General Library Public License as published -! by the Free Software Foundation; either version 2 of the License,or -! (at your option) any later version. -! -! MESA 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 Library General Public License for more details. -! -! You should have received a copy of the GNU Library General Public License -! along with this software; if not,write to the Free Software -! Foundation,Inc.,59 Temple Place,Suite 330,Boston,MA 02111-1307 USA -! -! *********************************************************************** - -#ifdef DBLE - module test_trisolve_dble -#else - module test_trisolve_quad -#endif - - use mtx_lib - use mtx_def - -#ifdef DBLE - use const_def, only: dp -#else - use const_def, only: qp -#endif - - use utils_lib, only: is_bad, mesa_error - - implicit none - -#ifdef DBLE - integer, parameter :: fltp = dp -#else - integer, parameter :: fltp = qp -#endif - - - contains - - -#ifdef DBLE - subroutine do_test_trisolve_dble(do_timing, for_release) -#else - subroutine do_test_trisolve_quad(do_timing, for_release) -#endif - logical, intent(in) :: do_timing, for_release - integer :: nvar, nz, ierr, i, j, k, lwork, liwork, n - real(fltp), dimension(:), pointer :: ublk_tst1, dblk_tst1, lblk_tst1, sol_tst1 - real(fltp), dimension(:,:,:), pointer :: ublk_tst, dblk_tst, lblk_tst - real(fltp), dimension(:,:), pointer :: sol_tst, x, xcorrect - real(dp), dimension(:), pointer :: work - integer, dimension(:), pointer :: iwork - character (len=255) :: fname - - include 'formats' - - ierr = 0 - write(*,*) 'do_test_trisolve' - ! setup test problem - if (for_release) then - fname = 'block_tri.data' - else - fname = 'block_tri_12.data' - end if - call read_testfile(fname, lblk_tst1, dblk_tst1, ublk_tst1) - lblk_tst(1:nvar,1:nvar,1:nz) => lblk_tst1(1:nvar*nvar*nz) - dblk_tst(1:nvar,1:nvar,1:nz) => dblk_tst1(1:nvar*nvar*nz) - ublk_tst(1:nvar,1:nvar,1:nz) => ublk_tst1(1:nvar*nvar*nz) - -#ifdef DBLE - call mtx_trisolve_dble_work_sizes(nvar,nz,lwork,liwork) -#else - call mtx_trisolve_quad_work_sizes(nvar,nz,lwork,liwork) -#endif - allocate( & - x(nvar,nz), xcorrect(nvar,nz), sol_tst1(nvar*nz), & - work(lwork), iwork(liwork)) - - sol_tst(1:nvar,1:nz) => sol_tst1(1:nvar*nz) - - call set_xcorrect - call set_brhs(lblk_tst, dblk_tst, ublk_tst, sol_tst) - - - if (.false.) then ! output data in simple format - open(12,file='test_case.data',status='unknown') - write(12,*) nvar, nz - do k=1,nz - do i=1,nvar - do j=1,nvar - write(12,*) ublk_tst(i,j,k), dblk_tst(i,j,k), lblk_tst(i,j,k) - end do - end do - do i=1,nvar - write(12,*) sol_tst(i,k), xcorrect(i,k) - end do - end do - close(12) - stop 'done output to test_case.data' - end if - - - if (.false.) then ! check data - write(*,*) trim(fname) - write(*,3) 'nvar nz', nvar, nz - do k=1,nz - do i=1,nvar - write(*,3) 'sol-xcorrect', i, k, sol_tst(i,k), xcorrect(i,k) - do j=1,nvar - write(*,4) 'u-d-l', i, j, k, & - ublk_tst(i,j,k), dblk_tst(i,j,k), lblk_tst(i,j,k) - end do - end do - end do - stop 'trisolve' - end if - -! sol_tst(1:nvar,1:nz) = 1d0 -! ublk_tst(1:nvar,1:nvar,1:nz) = 1d0 -! dblk_tst(1:nvar,1:nvar,1:nz) = 1d0 -! lblk_tst(1:nvar,1:nvar,1:nz) = 1d0 -! do i=1,nvar -! do k=1,nz -! dblk_tst(i,i,k) = 4d0 -! end do -! end do - - -#ifdef DBLE - call mtx_trisolve_dble( & -#else - call mtx_trisolve_quad( & -#endif - nvar, nz, lblk_tst1, dblk_tst1, ublk_tst1, sol_tst1, & - lwork, work, liwork, iwork, ierr) - if (ierr /= 0) call mesa_error(__FILE__,__LINE__) - - x = sol_tst - call check_x - -! open(12,file='solution.dat',status='unknown') -! do n=1,nz -! do i=1,nvar -! write(12,*) sol_tst(i,n) -! write(*,*) sol_tst(i,n) -! end do -! end do - write(*,*) - - deallocate( & - lblk_tst1, dblk_tst1, ublk_tst1, sol_tst1, x, xcorrect, work, iwork) - - !stop 'trisolve' - - - contains - - - subroutine read_testfile(fname,lblk1,dblk1,ublk1) - character (len=*), intent(in) :: fname - real(fltp), dimension(:), pointer :: lblk1,dblk1,ublk1 - integer :: iounit, ierr, i, j, k, line - iounit = 33; ierr = 0 - open(unit=iounit, file=trim(fname), status='old', action='read', iostat=ierr) - if (ierr /= 0) then - write(*,*) 'failed to open ' // trim(fname) - call mesa_error(__FILE__,__LINE__) - end if -#ifdef DBLE - call mtx_read_block_tridiagonal(iounit,nvar,nz,lblk1,dblk1,ublk1,ierr) -#else - call mtx_read_quad_block_tridiagonal(iounit,nvar,nz,lblk1,dblk1,ublk1,ierr) -#endif - if (ierr /= 0) then - write(*,*) 'failed to read ' // trim(fname) - call mesa_error(__FILE__,__LINE__) - end if - close(iounit) - - return - nz = 9 - write(*,*) 'testing with small nz', nz - - - end subroutine read_testfile - - - subroutine set_xcorrect - real(fltp) :: cnt - integer :: k, j - cnt = 1d0 - do k=1,nz - do j=1,nvar - cnt = cnt + 1d-3 - xcorrect(j,k) = cnt - end do - end do - end subroutine set_xcorrect - - - subroutine set_brhs(lblk, dblk, ublk, brhs) - real(fltp), pointer, dimension(:,:,:) :: lblk, dblk, ublk - real(fltp), pointer, dimension(:,:) :: brhs - integer :: k, j - include 'formats' - ! set brhs = A*xcorrect -#ifdef DBLE - call block_dble_mv(lblk, dblk, ublk, xcorrect, brhs) -#else - call block_quad_mv(lblk, dblk, ublk, xcorrect, brhs) -#endif - end subroutine set_brhs - - - subroutine check_x - real(fltp) :: max_err, err, atol, rtol, avg_err - integer :: i_max, j_max,i, j, rep - include 'formats' - atol = 1d-4 - rtol = 1d-4 - call check1_x(avg_err, max_err, atol, rtol, i_max, j_max) - i = i_max; j = j_max - if (max_err > 1) then - write(*,3) 'BAD: err, x, xcorrect', i, j, max_err, x(i,j), xcorrect(i,j) - else - write(*,3) 'solution matches xcorrect: nvar, nz', nvar, nz - end if - end subroutine check_x - - - subroutine check1_x(avg_err, max_err, atol, rtol, i_max, j_max) - real(fltp), intent(out) :: avg_err, max_err - real(fltp), intent(in) :: atol, rtol - integer, intent(out) :: i_max, j_max - integer :: i, j - real(fltp) :: err_sum - real(fltp) :: err - include 'formats' - max_err = 0; i_max = 0; j_max = 0; err_sum = 0 - do j = 1, nz - do i = 1, nvar - if (is_bad(x(i,j))) then - write(*,3) 'x xcorrect', i, j, x(i,j), xcorrect(i,j) - stop 'check1_x' - end if - err = abs(x(i,j) - xcorrect(i,j))/(atol + rtol*max(abs(x(i,j)),abs(xcorrect(i,j)))) - err_sum = err_sum + err - if (err > max_err) then - max_err = err; i_max = i; j_max = j - end if - !write(*,3) 'err', i, j, err, x(i,j), xcorrect(i,j) - end do - end do - avg_err = err_sum/(nz*nvar) - end subroutine check1_x - - - - -#ifdef DBLE - end subroutine do_test_trisolve_dble -#else - end subroutine do_test_trisolve_quad -#endif - - -#ifdef DBLE - end module test_trisolve_dble -#else - end module test_trisolve_quad -#endif diff --git a/net/private/net_burn_const_p.f90 b/net/private/net_burn_const_p.f90 index a2368b652..e88efbb06 100644 --- a/net/private/net_burn_const_p.f90 +++ b/net/private/net_burn_const_p.f90 @@ -195,6 +195,7 @@ subroutine burn_1_zone_const_P( & t = 0 tend = times(ntimes) + rpar(r_burn_const_P_rho) = 1d-99 ! dummy value, will be calculated later rpar(r_burn_const_P_pressure) = exp10(log10Ps_f1(1)) ! no interpolation yet rpar(r_burn_const_P_temperature) = starting_temp rpar(r_burn_const_P_init_rho) = -1d99 diff --git a/net/private/net_burn_support.f90 b/net/private/net_burn_support.f90 index fab953452..ba92c4840 100644 --- a/net/private/net_burn_support.f90 +++ b/net/private/net_burn_support.f90 @@ -88,9 +88,9 @@ subroutine netint( & real(dp), parameter :: tiny=1.0d-15 - real(dp) y0(nvar),a(stifbs_imax),alf(kmaxx,kmaxx),epsold,xnew,scale,red - integer i,kmax,kopt,nseq(stifbs_imax),nvold - logical first + real(dp) :: y0(nvar),a(stifbs_imax),alf(kmaxx,kmaxx),epsold,xnew,scale,red + integer :: i,kmax,kopt,nseq(stifbs_imax),nvold + logical :: first include 'formats' diff --git a/net/test/src/mod_one_zone_burn.f90 b/net/test/src/mod_one_zone_burn.f90 index 0604a27c6..e0c4311bc 100644 --- a/net/test/src/mod_one_zone_burn.f90 +++ b/net/test/src/mod_one_zone_burn.f90 @@ -1011,7 +1011,7 @@ subroutine burn_solout( & integer, intent(inout), target :: iwork_y(*) integer, intent(inout), pointer :: ipar(:) ! (lipar) real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) - real(dp) :: lgt,lgrho + real(dp) :: lgt, lgrho integer :: i, cid interface include 'num_interp_y.dek' diff --git a/net/test/src/test_net_do_one.f90 b/net/test/src/test_net_do_one.f90 index bf6bd5364..c25c63819 100644 --- a/net/test/src/test_net_do_one.f90 +++ b/net/test/src/test_net_do_one.f90 @@ -209,7 +209,7 @@ subroutine show_results( & logical, intent(in) :: extended_set logical, intent(in) :: sorted - integer :: ierr, j + integer :: j include 'formats' @@ -335,8 +335,6 @@ subroutine show_by_category( & real(dp) :: mx integer :: k, j, jmx logical :: flgs(rates_reaction_id_max) - - integer :: info write(*, *) write(*, *) 'energy generation by category' diff --git a/net/test/src/test_net_support.f90 b/net/test/src/test_net_support.f90 index 03bb2be81..667c14f04 100644 --- a/net/test/src/test_net_support.f90 +++ b/net/test/src/test_net_support.f90 @@ -100,10 +100,9 @@ end subroutine load_libs subroutine test_net_setup(net_file_in) character (len=*), intent(in) :: net_file_in - integer, pointer :: r_id(:) type(Net_General_Info), pointer :: g - integer :: info, i, ierr + integer :: info, ierr include 'formats' @@ -195,7 +194,6 @@ end subroutine do_test_net_alloc subroutine Do_One_Net(symbolic) logical, intent(in) :: symbolic - integer :: i, id call do1_net(net_handle, symbolic) end subroutine Do_One_Net @@ -787,21 +785,20 @@ subroutine Do_One_Testcase(net_file, do_timing, show_Qs) character (len=*), intent(in) :: net_file logical, intent(in) :: do_timing, show_Qs - real(dp) :: logRho, logT, Rho, T, xsum, Q1, Q2, & + real(dp) :: logRho, logT, Rho, T, xsum, Q1, & eps_nuc, d_eps_nuc_dRho, d_eps_nuc_dT, weak_rate_factor, & dvardx, dvardx_0, dx_0, err, var_0, xdum, & eps_nuc_categories(num_categories), xh, xhe, mass_correction !approx_abar, approx_zbar - integer :: i, j, k, info, ierr + integer :: i, j, info, ierr integer :: j_dx, j_dx_sink - integer :: adjustment_iso, ir_c12_c12_to_he4_ne20, ir_he4_ne20_to_c12_c12 real(dp), dimension(:), pointer :: d_eps_nuc_dx, dabar_dx, dzbar_dx, dmc_dx real(dp), pointer :: rate_factors(:), & actual_Qs(:), actual_neuQs(:) logical, pointer :: from_weaklib(:) logical :: skip_jacobian, doing_d_dlnd, doing_dx real(dp), dimension(:), pointer :: & - rate_raw, rate_raw_dT, rate_raw_dRho, & - rate_screened, rate_screened_dT, rate_screened_dRho + rate_raw, rate_raw_dT, & + rate_screened type(net_info) :: n include 'formats' @@ -1713,7 +1710,7 @@ subroutine Do_One_Testcase(net_file, do_timing, show_Qs) real(dp) function dfridr_func(delta_x) result(val) real(dp), intent(in) :: delta_x integer :: ierr - real(dp) :: pgas, prad, energy, entropy, var, log_var + real(dp) :: var, log_var include 'formats' ierr = 0 @@ -1793,7 +1790,7 @@ real(dp) function dfridr(hx,err) ! from Frank ! an estimate of the error in the first derivative is returned in err. integer, parameter :: ntab = 20 integer :: i,j - real(dp) :: x,errt,fac,hh,a(ntab,ntab),xdum,ydum + real(dp) :: errt,fac,hh,a(ntab,ntab) real(dp), parameter :: con2=2d0, con=sqrt(con2), big=1d50, safe=2d0 include 'formats' dfridr = 0d0 diff --git a/neu/private/mod_neu.f90 b/neu/private/mod_neu.f90 index e4dc69d12..978866796 100644 --- a/neu/private/mod_neu.f90 +++ b/neu/private/mod_neu.f90 @@ -851,7 +851,7 @@ subroutine brem_neu_weak_degen(sbrem,sbremdt,sbremdd,sbremda,sbremdz,t8, input) real(dp), intent(out) :: sbrem,sbremdt,sbremdd,sbremda,sbremdz type(inputs), intent(in) :: input - real(dp) :: a0,a1,a2,c00,c01,c02,c03,c04, & + real(dp) :: a0,c00,c01,c02,c03,c04, & dd00,dd01,dd02,& f0,z, & dum,dumdt,dumdd,dumda,dumdz @@ -1001,7 +1001,7 @@ subroutine brem_neu_liquid_metal(sbrem,sbremdt,sbremdd,sbremda,sbremdz,t8, input real(dp), intent(out) :: sbrem,sbremdt,sbremdd,sbremda,sbremdz type(inputs), intent(in) :: input - real(dp) :: a0,a1,a2,c00,c01,c02,c03, & + real(dp) :: a0,a1,c00,c01,c02,c03, & z, & dum,dumdt,dumdd,dumda,dumdz @@ -1171,7 +1171,7 @@ subroutine brem_neu(sbrem,sbremdt,sbremdd,sbremda,sbremdz, input) real(dp), intent(out) :: sbrem,sbremdt,sbremdd,sbremda,sbremdz type(inputs), intent(in) :: input - real(dp) :: a0,a1,a2,tfermi + real(dp) ::tfermi ! brem @@ -1427,7 +1427,7 @@ subroutine plas_neu(splas,splasdt,splasdd,splasda,splasdz, input) real(dp), intent(out) :: splas,splasdt,splasdd,splasda,splasdz type(inputs), intent(in) :: input - real(dp) :: a0,a1,a2,a3,b1,b2,c00,c01,c02,c03,c04,xlnt,cc, & + real(dp) :: a1,a2,a3,b1,b2,c00,c01,c02,c03,c04,xlnt,cc, & c,d,f1,& dumdt,dumdd,dumda,dumdz, gum @@ -1614,7 +1614,7 @@ subroutine pair_neu(spair,spairdt,spairdd,spairda,spairdz, input) real(dp), intent(out) :: spair,spairdt,spairdd,spairda,spairdz type(inputs), intent(in) :: input - real(dp) :: a0,a1,a2,a3,b1,b2,c,d, gl,gldt + real(dp) :: a1,a2,a3,b1,b2,c,d, gl,gldt real(dp) :: xnum,xnumdt,xnumdd,xnumda,xnumdz, & xden,xdendt,xdendd,xdenda,xdendz diff --git a/num/make/makefile_base b/num/make/makefile_base index fc6e43232..32b1569c3 100644 --- a/num/make/makefile_base +++ b/num/make/makefile_base @@ -69,26 +69,21 @@ nodeps : $(.DEFAULT_GOAL) # # COMPULATION RULES -#COMPILE_LEGACY = $(filter-out -std=f2008, $(COMPILE_TO_TEST)) -COMPILE_LEGACY = $(filter-out -std=f2008, $(COMPILE_TO_DEPLOY)) -std=legacy +COMPILE = $(COMPILE_TO_DEPLOY) $(FCfixed) -COMPILE = $(COMPILE_LEGACY) $(FCfixed) - -COMPILE_FREE = $(COMPILE_LEGACY) $(FCfree) +COMPILE_FREE = $(COMPILE_TO_DEPLOY) $(FCfree) #COMPILE_XTRA = $(COMPILE_NO_CHECKS) $(FCfixed) -c COMPILE_XTRA = $(COMPILE_BASIC) $(FCopt) $(FCfixed) -c -COMPILE_LEGACY_XTRA = $(filter-out -std=f2008, $(COMPILE_XTRA)) -std=legacy - COMPILE_CMD = $(COMPILE) mod_bobyqa.o mod_newuoa.o mod_dop853.o mod_dopri5.o mod_dc_decsol.o mod_rosenbrock.o : %.o : %.f ifneq ($(QUIET),) - @echo COMPILE_LEGACY_XTRA $< - @$(COMPILE_LEGACY_XTRA) $< + @echo COMPILE_XTRA $< + @$(COMPILE_XTRA) $< else - $(COMPILE_LEGACY_XTRA) $< + $(COMPILE_XTRA) $< endif %.o : %.mod diff --git a/num/private/decomc.dek b/num/private/decomc.dek index 7b7ba0c1f..685ef4a59 100644 --- a/num/private/decomc.dek +++ b/num/private/decomc.dek @@ -5,24 +5,24 @@ & lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol) use mtx_lib,only:find_loc_in_sparse implicit none - !implicit real*8 (a-h,o-z) + !implicit real(dp) (a-h,o-z) interface #include "mtx_decsolc.dek" #include "mtx_decsolcs.dek" end interface + integer :: m1, m2, nm1, lde1, ijob + integer :: mle, mue, mbjac, mbb, mdiag, mdiff, mbdiag + integer :: nzmax, isparse, lcd, lrd, lid + integer :: ierr, ip2(nm1), n, ldjac, ldmas, mlmas, mumas integer :: ia(*), ja(nzmax) ! ia(n+1) when used; ia(2) when not. double precision :: sparse_jac(nzmax) double precision :: sar(nzmax), sai(nzmax) - complex*16, intent(inout), pointer :: cpar_decsol(:) ! (lcd) + complex(dp), intent(inout), pointer :: cpar_decsol(:) ! (lcd) real(dp), intent(inout), pointer :: rpar_decsol(:) ! (lrd) integer, intent(inout), pointer :: ipar_decsol(:) ! (lid) double precision :: fjac(ldjac,n), fmas(ldmas,nm1) double precision :: e2r(lde1,nm1), e2i(lde1,nm1) double precision :: br(n), bi(n), alphn, betan - integer :: ierr, ip2(nm1), n, ldjac, ldmas, mlmas, mumas - integer :: m1, m2, nm1, lde1, ijob - integer :: mle, mue, mbjac, mbb, mdiag, mdiff, mbdiag - integer :: nzmax, isparse, lcd, lrd, lid ! LOCALS integer :: i, j, k, jm1, mm, imle, ib, hint @@ -30,11 +30,11 @@ ierr = 0 goto (1,2,3,4,5,6,55,8,9,55,11,12,13,14,15), ijob -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 1 continue -c --- b=identity, jacobian a full matrix +! --- b=identity, jacobian a full matrix do j=1,n do i=1,n e2r(i,j)=-fjac(i,j) @@ -45,11 +45,11 @@ c --- b=identity, jacobian a full matrix end do call decsolc(0,n,lde1,e2r,e2i,n,n,br,bi,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 8 continue -c --- b=identity, jacobian a sparse matrix +! --- b=identity, jacobian a sparse matrix do j=1,nzmax sar(j) = -sparse_jac(j) end do @@ -66,11 +66,11 @@ c --- b=identity, jacobian a sparse matrix end do call decsolcs(0,n,nzmax,ia,ja,sar,sai,br,bi,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 11 continue -c --- b=identity, jacobian a full matrix, second order +! --- b=identity, jacobian a full matrix, second order do j=1,nm1 jm1=j+m1 do i=1,nm1 @@ -99,11 +99,11 @@ c --- b=identity, jacobian a full matrix, second order end do call decsolc(0,nm1,lde1,e2r,e2i,nm1,nm1,br,bi,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 2 continue -c --- b=identity, jacobian a banded matrix +! --- b=identity, jacobian a banded matrix do j=1,n do i=1,mbjac imle=i+mle @@ -115,11 +115,11 @@ c --- b=identity, jacobian a banded matrix end do call decsolc(0,n,lde1,e2r,e2i,mle,mue,br,bi,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 12 continue -c --- b=identity, jacobian a banded matrix, second order +! --- b=identity, jacobian a banded matrix, second order do j=1,nm1 jm1=j+m1 do i=1,mbjac @@ -149,11 +149,11 @@ c --- b=identity, jacobian a banded matrix, second order end do call decsolc(0,nm1,lde1,e2r,e2i,mle,mue,br,bi,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 3 continue -c --- b is a banded matrix, jacobian a full matrix +! --- b is a banded matrix, jacobian a full matrix do j=1,n do i=1,n e2r(i,j)=-fjac(i,j) @@ -169,11 +169,11 @@ c --- b is a banded matrix, jacobian a full matrix end do call decsolc(0,n,lde1,e2r,e2i,n,n,br,bi,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 9 continue -c --- b is a banded matrix, jacobian a sparse matrix +! --- b is a banded matrix, jacobian a sparse matrix do j=1,nzmax sar(j) = -sparse_jac(j) end do @@ -200,11 +200,11 @@ c --- b is a banded matrix, jacobian a sparse matrix call decsolcs(0,n,nzmax,ia,ja,sar,sai,br,bi,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) !write(*,*) 'decomc back decsolcs' return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 13 continue -c --- b is a banded matrix, jacobian a full matrix, second order +! --- b is a banded matrix, jacobian a full matrix, second order do j=1,nm1 jm1=j+m1 do i=1,nm1 @@ -218,11 +218,11 @@ c --- b is a banded matrix, jacobian a full matrix, second order end do end do goto 45 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 4 continue -c --- b is a banded matrix, jacobian a banded matrix +! --- b is a banded matrix, jacobian a banded matrix do j=1,n do i=1,mbjac imle=i+mle @@ -238,11 +238,11 @@ c --- b is a banded matrix, jacobian a banded matrix end do call decsolc(0,n,lde1,e2r,e2i,mle,mue,br,bi,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 14 continue -c --- b is a banded matrix, jacobian a banded matrix, second order +! --- b is a banded matrix, jacobian a banded matrix, second order do j=1,nm1 jm1=j+m1 do i=1,mbjac @@ -257,11 +257,11 @@ c --- b is a banded matrix, jacobian a banded matrix, second order end do end do goto 46 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 5 continue -c --- b is a full matrix, jacobian a full matrix +! --- b is a full matrix, jacobian a full matrix do j=1,n do i=1,n bb=fmas(i,j) @@ -271,11 +271,11 @@ c --- b is a full matrix, jacobian a full matrix end do call decsolc(0,n,lde1,e2r,e2i,n,n,br,bi,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 15 continue -c --- b is a full matrix, jacobian a full matrix, second order +! --- b is a full matrix, jacobian a full matrix, second order do j=1,nm1 jm1=j+m1 do i=1,nm1 @@ -284,22 +284,22 @@ c --- b is a full matrix, jacobian a full matrix, second order end do end do goto 45 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 6 continue -c --- b is a full matrix, jacobian a banded matrix -c --- this option is not provided +! --- b is a full matrix, jacobian a banded matrix +! --- this option is not provided return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 55 continue write(*,*) 'decomc: invalid ijob', ijob call mesa_error(__FILE__,__LINE__) ! decomc end subroutine decomc -c -c *********************************************************** +! +! *********************************************************** @@ -313,12 +313,16 @@ c *********************************************************** #include "mtx_decsolc.dek" #include "mtx_decsolcs.dek" end interface + integer :: m1, m2, nm1, lde1, ijob + integer :: mle, mue, mbjac, mbb, mdiag, mdiff, mbdiag + integer :: nzmax, isparse, lcd, lrd, lid + integer :: ierr, ip2(nm1), n, ldjac, ldmas, mlmas, mumas integer :: ia(:) ! (n+1) integer :: ja(:) ! (nzmax) real(dp) :: sparse_jac(:) ! (nzmax) real(dp) :: sar(:) ! (nzmax) real(dp) :: sai(:) ! (nzmax) - complex*16, intent(inout), pointer :: cpar_decsol(:) ! (lcd) + complex(dp), intent(inout), pointer :: cpar_decsol(:) ! (lcd) real(dp), intent(inout), pointer :: rpar_decsol(:) ! (lrd) integer, intent(inout), pointer :: ipar_decsol(:) ! (lid) @@ -328,109 +332,105 @@ c *********************************************************** double precision :: br(n), bi(n), alphn, betan - integer :: ierr, ip2(nm1), n, ldjac, ldmas, mlmas, mumas - integer :: m1, m2, nm1, lde1, ijob - integer :: mle, mue, mbjac, mbb, mdiag, mdiff, mbdiag - integer :: nzmax, isparse, lcd, lrd, lid goto (1,2,3,4,5,6,55,8,9,55,11,12,13,14,15), ijob -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 1 continue -c --- b=identity, jacobian a full matrix +! --- b=identity, jacobian a full matrix call decsolc(2,n,lde1,e2r,e2i,n,n,br,bi,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 8 continue -c --- b=identity, jacobian a sparse matrix +! --- b=identity, jacobian a sparse matrix call decsolcs(2,n,nzmax,ia,ja,sar,sai,br,bi,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 11 continue -c --- b=identity, jacobian a full matrix, second order +! --- b=identity, jacobian a full matrix, second order 45 continue call decsolc(2,nm1,lde1,e2r,e2i,nm1,nm1,br,bi,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 2 continue -c --- b=identity, jacobian a banded matrix +! --- b=identity, jacobian a banded matrix call decsolc(2,n,lde1,e2r,e2i,mle,mue,br,bi,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 12 continue -c --- b=identity, jacobian a banded matrix, second order +! --- b=identity, jacobian a banded matrix, second order 46 continue call decsolc(2,nm1,lde1,e2r,e2i,mle,mue,br,bi,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 3 continue -c --- b is a banded matrix, jacobian a full matrix +! --- b is a banded matrix, jacobian a full matrix call decsolc(2,n,lde1,e2r,e2i,n,n,br,bi,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 9 continue -c --- b is a banded matrix, jacobian a sparse matrix +! --- b is a banded matrix, jacobian a sparse matrix call decsolcs(2,n,nzmax,ia,ja,sar,sai,br,bi,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 13 continue -c --- b is a banded matrix, jacobian a full matrix, second order +! --- b is a banded matrix, jacobian a full matrix, second order goto 45 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 4 continue -c --- b is a banded matrix, jacobian a banded matrix +! --- b is a banded matrix, jacobian a banded matrix call decsolc(2,n,lde1,e2r,e2i,mle,mue,br,bi,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 14 continue -c --- b is a banded matrix, jacobian a banded matrix, second order +! --- b is a banded matrix, jacobian a banded matrix, second order goto 46 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 5 continue -c --- b is a full matrix, jacobian a full matrix +! --- b is a full matrix, jacobian a full matrix call decsolc(2,n,lde1,e2r,e2i,n,n,br,bi,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ierr) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 15 continue -c --- b is a full matrix, jacobian a full matrix, second order +! --- b is a full matrix, jacobian a full matrix, second order goto 45 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 6 continue -c --- b is a full matrix, jacobian a banded matrix -c --- this option is not provided +! --- b is a full matrix, jacobian a banded matrix +! --- this option is not provided return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 55 continue write(*,*) 'decsolc_done: invalid ijob', ijob call mesa_error(__FILE__,__LINE__) ! decsolc_done end subroutine decsolc_done -c -c *********************************************************** +! +! *********************************************************** diff --git a/num/private/decomr.dek b/num/private/decomr.dek index f9bde2a02..830d13929 100644 --- a/num/private/decomr.dek +++ b/num/private/decomr.dek @@ -6,7 +6,7 @@ & sparse_jac,nzmax,isparse,ia,ja,sa, & lrd,rpar_decsol,lid,ipar_decsol) use mtx_lib,only:find_loc_in_sparse - implicit none !real*8 (a-h,o-z) + implicit none !real(dp) (a-h,o-z) interface #include "mtx_decsol.dek" #include "mtx_decsols.dek" @@ -79,11 +79,11 @@ end if goto (1,2,3,4,5,6,55,8,9,55,11,12,13,14,15), ijob -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 1 continue -c --- b=identity, jacobian a full matrix +! --- b=identity, jacobian a full matrix ! do j=1,n ! do i=1,n ! write(*,'(a30,2i4,e26.16)') 'input fjac(i,j)', i, j, fjac(i,j) @@ -110,11 +110,11 @@ c --- b=identity, jacobian a full matrix ! end do ! write(*,*) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 8 continue -c --- b=identity, jacobian a sparse matrix +! --- b=identity, jacobian a sparse matrix do j=1,nzmax sa(j) = -sparse_jac(j) end do @@ -131,11 +131,11 @@ c --- b=identity, jacobian a sparse matrix call decsols(0,n,nzmax,ia,ja,sa,ak,lrd,rpar_decsol,lid,ipar_decsol,ier) !write(*,*) 'back decsols' return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 11 continue -c --- b=identity, jacobian a full matrix, second order +! --- b=identity, jacobian a full matrix, second order do j=1,nm1 jm1=j+m1 do i=1,nm1 @@ -155,11 +155,11 @@ c --- b=identity, jacobian a full matrix, second order end do call decsol(0,nm1,lde1,e1_1D,nm1,nm1,ak,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 2 continue -c --- b=identity, jacobian a banded matrix +! --- b=identity, jacobian a banded matrix do j=1,n do i=1,mbjac e1_2D(i+mle,j)=-fjac(i,j) @@ -168,11 +168,11 @@ c --- b=identity, jacobian a banded matrix end do call decsol(0,n,lde1,e1_1D,mle,mue,ak,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 12 continue -c --- b=identity, jacobian a banded matrix, second order +! --- b=identity, jacobian a banded matrix, second order do j=1,nm1 jm1=j+m1 do i=1,mbjac @@ -208,11 +208,11 @@ c --- b=identity, jacobian a banded matrix, second order call decsol(0,nm1,lde1,e1_1D,mle,mue,ak,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 3 continue -c --- b is a banded matrix, jacobian a full matrix +! --- b is a banded matrix, jacobian a full matrix do j=1,n do i=1,n e1_2D(i,j)=-fjac(i,j) @@ -223,11 +223,11 @@ c --- b is a banded matrix, jacobian a full matrix end do call decsol(0,n,lde1,e1_1D,n,n,ak,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 9 continue -c --- b is a banded matrix, jacobian a sparse matrix +! --- b is a banded matrix, jacobian a sparse matrix do j=1,nzmax sa(j) = -sparse_jac(j) end do @@ -251,11 +251,11 @@ c --- b is a banded matrix, jacobian a sparse matrix call decsols(0,n,nzmax,ia,ja,sa,ak,lrd,rpar_decsol,lid,ipar_decsol,ier) !write(*,*) 'decomr back decsols' return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 13 continue -c --- b is a banded matrix, jacobian a full matrix, second order +! --- b is a banded matrix, jacobian a full matrix, second order do j=1,nm1 jm1=j+m1 do i=1,nm1 @@ -266,11 +266,11 @@ c --- b is a banded matrix, jacobian a full matrix, second order end do end do goto 45 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 4 continue -c --- b is a banded matrix, jacobian a banded matrix +! --- b is a banded matrix, jacobian a banded matrix do j=1,n do i=1,mbjac e1_2D(i+mle,j)=-fjac(i,j) @@ -282,11 +282,11 @@ c --- b is a banded matrix, jacobian a banded matrix end do call decsol(0,n,lde1,e1_1D,mle,mue,ak,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 14 continue -c --- b is a banded matrix, jacobian a banded matrix, second order +! --- b is a banded matrix, jacobian a banded matrix, second order do j=1,nm1 jm1=j+m1 do i=1,mbjac @@ -310,11 +310,11 @@ c --- b is a banded matrix, jacobian a banded matrix, second order goto 46 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 5 continue -c --- b is a full matrix, jacobian a full matrix +! --- b is a full matrix, jacobian a full matrix do j=1,n do i=1,n e1_2D(i,j)=fmas(i,j)*fac1-fjac(i,j) @@ -322,11 +322,11 @@ c --- b is a full matrix, jacobian a full matrix end do call decsol(0,n,lde1,e1_1D,n,n,ak,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 15 continue -c --- b is a full matrix, jacobian a full matrix, second order +! --- b is a full matrix, jacobian a full matrix, second order do j=1,nm1 jm1=j+m1 do i=1,nm1 @@ -334,19 +334,19 @@ c --- b is a full matrix, jacobian a full matrix, second order end do end do goto 45 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 6 continue -c --- b is a full matrix, jacobian a banded matrix -c --- this option is not provided +! --- b is a full matrix, jacobian a banded matrix +! --- this option is not provided return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 55 continue write(*,*) 'decomr: invalid ijob', ijob call mesa_error(__FILE__,__LINE__) ! decomr end subroutine decomr -c -c *********************************************************** +! +! *********************************************************** diff --git a/num/private/decsol_done.dek b/num/private/decsol_done.dek index ded364dc5..baf222c4f 100644 --- a/num/private/decsol_done.dek +++ b/num/private/decsol_done.dek @@ -39,102 +39,102 @@ end if goto (1,2,3,4,5,6,55,8,9,55,11,12,13,14,15), ijob -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 1 continue -c --- b=identity, jacobian a full matrix +! --- b=identity, jacobian a full matrix call decsol(2,n,lde1,e1_1D,n,n,ak,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 8 continue -c --- b=identity, jacobian a sparse matrix +! --- b=identity, jacobian a sparse matrix !write(*,*) 'decsol_done call decsols' call decsols(2,n,nzmax,ia,ja,sa,ak,lrd,rpar_decsol,lid,ipar_decsol,ier) !write(*,*) 'back decsols' return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 11 continue -c --- b=identity, jacobian a full matrix, second order +! --- b=identity, jacobian a full matrix, second order call decsol(2,nm1,lde1,e1_1D,nm1,nm1,ak,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 2 continue -c --- b=identity, jacobian a banded matrix +! --- b=identity, jacobian a banded matrix call decsol(2,n,lde1,e1_1D,mle,mue,ak,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 12 continue -c --- b=identity, jacobian a banded matrix, second order +! --- b=identity, jacobian a banded matrix, second order call decsol(2,nm1,lde1,e1_1D,mle,mue,ak,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 3 continue -c --- b is a banded matrix, jacobian a full matrix +! --- b is a banded matrix, jacobian a full matrix call decsol(2,n,lde1,e1_1D,n,n,ak,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 9 continue -c --- b is a banded matrix, jacobian a sparse matrix +! --- b is a banded matrix, jacobian a sparse matrix call decsols(2,n,nzmax,ia,ja,sa,ak,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 13 continue -c --- b is a banded matrix, jacobian a full matrix, second order +! --- b is a banded matrix, jacobian a full matrix, second order goto 5 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 4 continue -c --- b is a banded matrix, jacobian a banded matrix +! --- b is a banded matrix, jacobian a banded matrix call decsol(2,n,lde1,e1_1D,mle,mue,ak,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 14 continue -c --- b is a banded matrix, jacobian a banded matrix, second order +! --- b is a banded matrix, jacobian a banded matrix, second order goto 12 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 5 continue -c --- b is a full matrix, jacobian a full matrix +! --- b is a full matrix, jacobian a full matrix call decsol(2,n,lde1,e1_1D,n,n,ak,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 15 continue -c --- b is a full matrix, jacobian a full matrix, second order +! --- b is a full matrix, jacobian a full matrix, second order goto 5 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 6 continue -c --- b is a full matrix, jacobian a banded matrix -c --- this option is not provided +! --- b is a full matrix, jacobian a banded matrix +! --- this option is not provided return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 55 continue write(*,*) 'decsol_done: invalid ijob', ijob call mesa_error(__FILE__,__LINE__) ! decsol_done end subroutine decsol_done -c -c *********************************************************** +! +! *********************************************************** diff --git a/num/private/estrad.dek b/num/private/estrad.dek index 00f01f0fb..a64e3e991 100644 --- a/num/private/estrad.dek +++ b/num/private/estrad.dek @@ -11,6 +11,10 @@ #include "mtx_decsol.dek" #include "mtx_decsols.dek" end interface + integer, pointer :: ip1(:) ! (nm1) + integer :: n, iphes(n), nerror, ldjac, mljac, mujac, ldmas, mlmas, mumas + integer :: nfcn, ijob, m1, m2, nm1, lde1, lrpar, lipar, ier, mle, mue + integer :: mbjac, mbb, mdiag, mdiff, mbdiag, nzmax, isparse, lrd, lid integer :: ia(:) ! (n+1) integer :: ja(:) ! (nzmax) double precision :: sa(nzmax) @@ -19,10 +23,6 @@ integer, intent(inout), pointer :: ipar(:) ! (lipar) real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) - integer, pointer :: ip1(:) ! (nm1) - integer :: iphes(n), n, nerror, ldjac, mljac, mujac, ldmas, mlmas, mumas - integer :: nfcn, ijob, m1, m2, nm1, lde1, lrpar, lipar, ier, mle, mue - integer :: mbjac, mbb, mdiag, mdiff, mbdiag, nzmax, isparse, lrd, lid double precision :: fjac(ldjac,n), fmas(ldmas,nm1) double precision, pointer :: e1_1D(:) double precision :: x, scal(n), y0(n), y(n) @@ -34,7 +34,7 @@ double precision :: hee1, hee2, hee3, sum, sum1 integer :: i, mm, j, k, im1 real(dp), pointer :: e1(:,:) - real(dp), pointer, dimension(:) :: p1, p2, p3 + real(dp), pointer, dimension(:) :: p1 e1(1:lde1,1:nm1) => e1_1D(1:lde1*nm1) p1(1:n) => cont(m1+1:m1+n) @@ -46,27 +46,27 @@ mm=m1/m2 goto (1,2,3,4,5,6,55,8,9,55,11,12,13,14,15), ijob -c +! 1 continue -c ------ b=identity, jacobian a full matrix +! ------ b=identity, jacobian a full matrix do i=1,n f2(i)=hee1*z1(i)+hee2*z2(i)+hee3*z3(i) cont(i)=f2(i)+y0(i) end do call decsol(1,n,lde1,e1_1D,n,n,cont,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) goto 77 -c +! 8 continue -c ------ b=identity, jacobian a sparse matrix +! ------ b=identity, jacobian a sparse matrix do i=1,n f2(i)=hee1*z1(i)+hee2*z2(i)+hee3*z3(i) cont(i)=f2(i)+y0(i) end do call decsols(1,n,nzmax,ia,ja,sa,cont,lrd,rpar_decsol,lid,ipar_decsol,ier) goto 77 -c +! 11 continue -c ------ b=identity, jacobian a full matrix, second order +! ------ b=identity, jacobian a full matrix, second order do i=1,n f2(i)=hee1*z1(i)+hee2*z2(i)+hee3*z3(i) cont(i)=f2(i)+y0(i) @@ -87,18 +87,18 @@ c ------ b=identity, jacobian a full matrix, second order cont(i)=(cont(i)+cont(m2+i))/fac1 end do goto 77 -c +! 2 continue -c ------ b=identity, jacobian a banded matrix +! ------ b=identity, jacobian a banded matrix do i=1,n f2(i)=hee1*z1(i)+hee2*z2(i)+hee3*z3(i) cont(i)=f2(i)+y0(i) end do call decsol(1,n,lde1,e1_1D,mle,mue,cont,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) goto 77 -c +! 12 continue -c ------ b=identity, jacobian a banded matrix, second order +! ------ b=identity, jacobian a banded matrix, second order do i=1,n f2(i)=hee1*z1(i)+hee2*z2(i)+hee3*z3(i) cont(i)=f2(i)+y0(i) @@ -119,9 +119,9 @@ c ------ b=identity, jacobian a banded matrix, second order cont(i)=(cont(i)+cont(m2+i))/fac1 end do goto 77 -c +! 3 continue -c ------ b is a banded matrix, jacobian a full matrix +! ------ b is a banded matrix, jacobian a full matrix do i=1,n f1(i)=hee1*z1(i)+hee2*z2(i)+hee3*z3(i) end do @@ -135,9 +135,9 @@ c ------ b is a banded matrix, jacobian a full matrix end do call decsol(1,n,lde1,e1_1D,n,n,cont,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) goto 77 -c +! 9 continue -c ------ b is a banded matrix, jacobian a sparse matrix +! ------ b is a banded matrix, jacobian a sparse matrix do i=1,n f1(i)=hee1*z1(i)+hee2*z2(i)+hee3*z3(i) end do @@ -151,9 +151,9 @@ c ------ b is a banded matrix, jacobian a sparse matrix end do call decsols(1,n,nzmax,ia,ja,sa,z1,lrd,rpar_decsol,lid,ipar_decsol,ier) goto 77 -c +! 13 continue -c ------ b is a banded matrix, jacobian a full matrix, second order +! ------ b is a banded matrix, jacobian a full matrix, second order do i=1,m1 f2(i)=hee1*z1(i)+hee2*z2(i)+hee3*z3(i) cont(i)=f2(i)+y0(i) @@ -171,9 +171,9 @@ c ------ b is a banded matrix, jacobian a full matrix, second order cont(im1)=sum+y0(im1) end do goto 48 -c +! 4 continue -c ------ b is a banded matrix, jacobian a banded matrix +! ------ b is a banded matrix, jacobian a banded matrix do i=1,n f1(i)=hee1*z1(i)+hee2*z2(i)+hee3*z3(i) end do @@ -187,9 +187,9 @@ c ------ b is a banded matrix, jacobian a banded matrix end do call decsol(1,n,lde1,e1_1D,mle,mue,cont,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) goto 77 -c +! 14 continue -c ------ b is a banded matrix, jacobian a banded matrix, second order +! ------ b is a banded matrix, jacobian a banded matrix, second order do i=1,m1 f2(i)=hee1*z1(i)+hee2*z2(i)+hee3*z3(i) cont(i)=f2(i)+y0(i) @@ -207,9 +207,9 @@ c ------ b is a banded matrix, jacobian a banded matrix, second order cont(im1)=sum+y0(im1) end do goto 45 -c +! 5 continue -c ------ b is a full matrix, jacobian a full matrix +! ------ b is a full matrix, jacobian a full matrix do i=1,n f1(i)=hee1*z1(i)+hee2*z2(i)+hee3*z3(i) end do @@ -223,9 +223,9 @@ c ------ b is a full matrix, jacobian a full matrix end do call decsol(1,n,lde1,e1_1D,n,n,cont,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) goto 77 -c +! 15 continue -c ------ b is a banded matrix, jacobian a full matrix, second order +! ------ b is a banded matrix, jacobian a full matrix, second order do i=1,m1 f2(i)=hee1*z1(i)+hee2*z2(i)+hee3*z3(i) cont(i)=f2(i)+y0(i) @@ -243,21 +243,21 @@ c ------ b is a banded matrix, jacobian a full matrix, second order cont(im1)=sum+y0(im1) end do goto 48 -c +! 6 continue -c ------ b is a full matrix, jacobian a banded matrix -c ------ this option is not provided +! ------ b is a full matrix, jacobian a banded matrix +! ------ this option is not provided return -c -c -------------------------------------- -c +! +! -------------------------------------- +! 77 continue err=0.d0 do i=1,n err=err+(cont(i)/scal(i))**2 end do err=max(sqrt(err/n),1.d-10) -c +! if (err.lt.1.d0) return if (first.or.reject) then do i=1,n @@ -270,11 +270,11 @@ c cont(i)=f1(i)+f2(i) end do goto (31,32,31,32,31,32,55,55,33,55,41,42,41,42,41), ijob -c ------ full matrix option +! ------ full matrix option 31 continue call decsol(1,n,lde1,e1_1D,n,n,cont,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) goto 88 -c ------ full matrix option, second order +! ------ full matrix option, second order 41 continue do j=1,m2 sum1=0.d0 @@ -291,11 +291,11 @@ c ------ full matrix option, second order cont(i)=(cont(i)+cont(m2+i))/fac1 end do goto 88 -c ------ banded matrix option +! ------ banded matrix option 32 continue call decsol(1,n,lde1,e1_1D,mle,mue,cont,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) goto 88 -c ------ banded matrix option, second order +! ------ banded matrix option, second order 42 continue do j=1,m2 sum1=0.d0 @@ -312,11 +312,11 @@ c ------ banded matrix option, second order cont(i)=(cont(i)+cont(m2+i))/fac1 end do goto 88 -c ------ sparse matrix option +! ------ sparse matrix option 33 continue call decsols(1,n,nzmax,ia,ja,sa,cont,lrd,rpar_decsol,lid,ipar_decsol,ier) goto 88 -c ----------------------------------- +! ----------------------------------- 88 continue err=0.d0 do i=1,nerror @@ -325,7 +325,7 @@ c ----------------------------------- err=max(sqrt(err/nerror),1.d-10) end if return -c ----------------------------------------------------------- +! ----------------------------------------------------------- 55 continue write(*,*) 'estrad: invalid ijob', ijob call mesa_error(__FILE__,__LINE__) ! estrad diff --git a/num/private/mod_bobyqa.f b/num/private/mod_bobyqa.f index 632b5d2cb..4a8c07c1c 100644 --- a/num/private/mod_bobyqa.f +++ b/num/private/mod_bobyqa.f @@ -4,14 +4,14 @@ module mod_bobyqa contains - SUBROUTINE do_BOBYQA (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, - 1 MAXFUN,W,CALFUN,max_valid_value) + SUBROUTINE do_BOBYQA (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT,MAXFUN,W,CALFUN,max_valid_value) IMPLICIT REAL(dp) (A-H,O-Z) + integer :: N, NPT, IPRINT, MAXFUN DIMENSION X(:),XL(:),XU(:),W(*) interface #include "num_bobyqa_proc.dek" end interface - real*8, intent(in) :: max_valid_value + real(dp), intent(in) :: max_valid_value ! This subroutine seeks the least value of a function of many variables, ! by applying a trust region method that forms quadratic models by @@ -57,10 +57,9 @@ SUBROUTINE do_BOBYQA (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, ! Return if the value of NPT is unacceptable. ! NP=N+1 - IF (NPT .LT. N+2 .OR. NPT .GT. ((N+2)*NP)/2) THEN + IF (NPT < N+2 .OR. NPT > ((N+2)*NP)/2) THEN PRINT 10 - 10 FORMAT (/4X,'Return from BOBYQA because NPT is not in', - 1 ' the required interval') + 10 FORMAT (/4X,'Return from BOBYQA because NPT is not in the required interval') GO TO 40 END IF ! @@ -95,40 +94,39 @@ SUBROUTINE do_BOBYQA (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, ! components of X that become within distance RHOBEG from their bounds. ! ZERO=0.0D0 - DO 30 J=1,N - TEMP=XU(J)-XL(J) - IF (TEMP .LT. RHOBEG+RHOBEG) THEN - PRINT 20 - 20 FORMAT (/4X,'Return from BOBYQA because one of the', - 1 ' differences XU(I)-XL(I)'/6X,' is less than 2*RHOBEG.') - GO TO 40 - END IF - JSL=ISL+J-1 - JSU=JSL+N - W(JSL)=XL(J)-X(J) - W(JSU)=XU(J)-X(J) - IF (W(JSL) .GE. -RHOBEG) THEN - IF (W(JSL) .GE. ZERO) THEN - X(J)=XL(J) - W(JSL)=ZERO - W(JSU)=TEMP - ELSE - X(J)=XL(J)+RHOBEG - W(JSL)=-RHOBEG - W(JSU)=DMAX1(XU(J)-X(J),RHOBEG) - END IF - ELSE IF (W(JSU) .LE. RHOBEG) THEN - IF (W(JSU) .LE. ZERO) THEN - X(J)=XU(J) - W(JSL)=-TEMP - W(JSU)=ZERO - ELSE - X(J)=XU(J)-RHOBEG - W(JSL)=DMIN1(XL(J)-X(J),-RHOBEG) - W(JSU)=RHOBEG - END IF - END IF - 30 CONTINUE + DO J=1,N + TEMP=XU(J)-XL(J) + IF (TEMP < RHOBEG+RHOBEG) THEN + PRINT 20 + 20 FORMAT (/4X,'Return from BOBYQA because one of the differences XU(I)-XL(I)'/6X,' is less than 2*RHOBEG.') + GO TO 40 + END IF + JSL=ISL+J-1 + JSU=JSL+N + W(JSL)=XL(J)-X(J) + W(JSU)=XU(J)-X(J) + IF (W(JSL) >= -RHOBEG) THEN + IF (W(JSL) >= ZERO) THEN + X(J)=XL(J) + W(JSL)=ZERO + W(JSU)=TEMP + ELSE + X(J)=XL(J)+RHOBEG + W(JSL)=-RHOBEG + W(JSU)=DMAX1(XU(J)-X(J),RHOBEG) + END IF + ELSE IF (W(JSU) <= RHOBEG) THEN + IF (W(JSU) <= ZERO) THEN + X(J)=XU(J) + W(JSL)=-TEMP + W(JSU)=ZERO + ELSE + X(J)=XU(J)-RHOBEG + W(JSL)=DMIN1(XL(J)-X(J),-RHOBEG) + W(JSU)=RHOBEG + END IF + END IF + END DO ! ! Make the call of BOBYQB. ! @@ -143,14 +141,15 @@ END SUBROUTINE do_BOBYQA SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, 1 MAXFUN,XBASE,XPT,FVAL,XOPT,GOPT,HQ,PQ,BMAT,ZMAT,NDIM, 2 SL,SU,XNEW,XALT,D,VLAG,W,CALFUN,max_valid_value) - IMPLICIT REAL*8 (A-H,O-Z) + IMPLICIT real(dp) (A-H,O-Z) + integer :: N, NPT, IPRINT, MAXFUN, NDIM DIMENSION X(:),XL(:),XU(:),XBASE(*),XPT(NPT,*),FVAL(*), 1 XOPT(*),GOPT(*),HQ(*),PQ(*),BMAT(NDIM,*),ZMAT(NPT,*), 2 SL(*),SU(*),XNEW(*),XALT(*),D(*),VLAG(*),W(*) interface #include "num_bobyqa_proc.dek" end interface - real*8, intent(in) :: max_valid_value + real(dp), intent(in) :: max_valid_value logical :: do_replace ! @@ -208,12 +207,13 @@ SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, CALL PRELIM (N,NPT,X,XL,XU,RHOBEG,IPRINT,MAXFUN,XBASE,XPT, 1 FVAL,GOPT,HQ,PQ,BMAT,ZMAT,NDIM,SL,SU,NF,KOPT,CALFUN) XOPTSQ=ZERO - DO 10 I=1,N - XOPT(I)=XPT(KOPT,I) - 10 XOPTSQ=XOPTSQ+XOPT(I)**2 + DO I=1,N + XOPT(I)=XPT(KOPT,I) + XOPTSQ=XOPTSQ+XOPT(I)**2 + END DO FSAVE=FVAL(1) - IF (NF .LT. NPT) THEN - IF (IPRINT .GT. 0) PRINT 390 + IF (NF < NPT) THEN + IF (IPRINT > 0) PRINT 390 GOTO 720 END IF KBASE=1 @@ -232,21 +232,26 @@ SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, ! Update GOPT if necessary before the first iteration and after each ! call of RESCUE that makes a call of CALFUN. ! - 20 IF (KOPT .NE. KBASE) THEN + 20 IF (KOPT /= KBASE) THEN IH=0 - DO 30 J=1,N - DO 30 I=1,J - IH=IH+1 - IF (I .LT. J) GOPT(J)=GOPT(J)+HQ(IH)*XOPT(I) - 30 GOPT(I)=GOPT(I)+HQ(IH)*XOPT(J) - IF (NF .GT. NPT) THEN - DO 50 K=1,NPT - TEMP=ZERO - DO 40 J=1,N - 40 TEMP=TEMP+XPT(K,J)*XOPT(J) - TEMP=PQ(K)*TEMP - DO 50 I=1,N - 50 GOPT(I)=GOPT(I)+TEMP*XPT(K,I) + DO J=1,N + DO I=1,J + IH=IH+1 + IF (I < J) GOPT(J)=GOPT(J)+HQ(IH)*XOPT(I) + GOPT(I)=GOPT(I)+HQ(IH)*XOPT(J) + END DO + END DO + IF (NF > NPT) THEN + DO K=1,NPT + TEMP=ZERO + DO J=1,N + TEMP=TEMP+XPT(K,J)*XOPT(J) + END DO + TEMP=PQ(K)*TEMP + DO I=1,N + GOPT(I)=GOPT(I)+TEMP*XPT(K,I) + END DO + END DO END IF END IF ! @@ -260,10 +265,10 @@ SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, 60 CALL TRSBOX (N,NPT,XPT,XOPT,GOPT,HQ,PQ,SL,SU,DELTA,XNEW,D, 1 W,W(NP),W(NP+N),W(NP+2*N),W(NP+3*N),DSQ,CRVMIN) DNORM=DMIN1(DELTA,DSQRT(DSQ)) - IF (DNORM .LT. HALF*RHO) THEN + IF (DNORM < HALF*RHO) THEN NTRITS=-1 DISTSQ=(TEN*RHO)**2 - IF (NF .LE. NFSAV+2) GOTO 650 + IF (NF <= NFSAV+2) GOTO 650 ! ! The following choice between labels 650 and 680 depends on whether or ! not our work with the current RHO seems to be complete. Either RHO is @@ -273,21 +278,21 @@ SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, ! ERRBIG=DMAX1(DIFFA,DIFFB,DIFFC) FRHOSQ=0.125D0*RHO*RHO - IF (CRVMIN .GT. ZERO .AND. ERRBIG .GT. FRHOSQ*CRVMIN) - 1 GOTO 650 + IF (CRVMIN > ZERO .AND. ERRBIG > FRHOSQ*CRVMIN) GOTO 650 BDTOL=ERRBIG/RHO - DO 80 J=1,N - BDTEST=BDTOL - IF (XNEW(J) .EQ. SL(J)) BDTEST=W(J) - IF (XNEW(J) .EQ. SU(J)) BDTEST=-W(J) - IF (BDTEST .LT. BDTOL) THEN - CURV=HQ((J+J*J)/2) - DO 70 K=1,NPT - 70 CURV=CURV+PQ(K)*XPT(K,J)**2 - BDTEST=BDTEST+HALF*CURV*RHO - IF (BDTEST .LT. BDTOL) GOTO 650 - END IF - 80 CONTINUE + DO J=1,N + BDTEST=BDTOL + IF (XNEW(J) == SL(J)) BDTEST=W(J) + IF (XNEW(J) == SU(J)) BDTEST=-W(J) + IF (BDTEST < BDTOL) THEN + CURV=HQ((J+J*J)/2) + DO K=1,NPT + CURV=CURV+PQ(K)*XPT(K,J)**2 + END DO + BDTEST=BDTEST+HALF*CURV*RHO + IF (BDTEST < BDTOL) GOTO 650 + END IF + END DO GOTO 680 END IF NTRITS=NTRITS+1 @@ -298,67 +303,82 @@ SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, ! derivatives of the current model, beginning with the changes to BMAT ! that do not depend on ZMAT. VLAG is used temporarily for working space. ! - 90 IF (DSQ .LE. 1.0D-3*XOPTSQ) THEN + 90 IF (DSQ <= 1.0D-3*XOPTSQ) THEN FRACSQ=0.25D0*XOPTSQ SUMPQ=ZERO - DO 110 K=1,NPT - SUMPQ=SUMPQ+PQ(K) - SUM=-HALF*XOPTSQ - DO 100 I=1,N - 100 SUM=SUM+XPT(K,I)*XOPT(I) - W(NPT+K)=SUM - TEMP=FRACSQ-HALF*SUM - DO 110 I=1,N - W(I)=BMAT(K,I) - VLAG(I)=SUM*XPT(K,I)+TEMP*XOPT(I) - IP=NPT+I - DO 110 J=1,I - 110 BMAT(IP,J)=BMAT(IP,J)+W(I)*VLAG(J)+VLAG(I)*W(J) + DO K=1,NPT + SUMPQ=SUMPQ+PQ(K) + SUM=-HALF*XOPTSQ + DO I=1,N + SUM=SUM+XPT(K,I)*XOPT(I) + END DO + W(NPT+K)=SUM + TEMP=FRACSQ-HALF*SUM + DO I=1,N + W(I)=BMAT(K,I) + VLAG(I)=SUM*XPT(K,I)+TEMP*XOPT(I) + IP=NPT+I + DO J=1,I + BMAT(IP,J)=BMAT(IP,J)+W(I)*VLAG(J)+VLAG(I)*W(J) + END DO + END DO + END DO ! ! Then the revisions of BMAT that depend on ZMAT are calculated. ! - DO 150 JJ=1,NPTM - SUMZ=ZERO - SUMW=ZERO - DO 120 K=1,NPT - SUMZ=SUMZ+ZMAT(K,JJ) - VLAG(K)=W(NPT+K)*ZMAT(K,JJ) - 120 SUMW=SUMW+VLAG(K) - DO 140 J=1,N - SUM=(FRACSQ*SUMZ-HALF*SUMW)*XOPT(J) - DO 130 K=1,NPT - 130 SUM=SUM+VLAG(K)*XPT(K,J) - W(J)=SUM - DO 140 K=1,NPT - 140 BMAT(K,J)=BMAT(K,J)+SUM*ZMAT(K,JJ) - DO 150 I=1,N - IP=I+NPT - TEMP=W(I) - DO 150 J=1,I - 150 BMAT(IP,J)=BMAT(IP,J)+TEMP*W(J) + DO JJ=1,NPTM + SUMZ=ZERO + SUMW=ZERO + DO K=1,NPT + SUMZ=SUMZ+ZMAT(K,JJ) + VLAG(K)=W(NPT+K)*ZMAT(K,JJ) + SUMW=SUMW+VLAG(K) + END DO + DO J=1,N + SUM=(FRACSQ*SUMZ-HALF*SUMW)*XOPT(J) + DO K=1,NPT + SUM=SUM+VLAG(K)*XPT(K,J) + END DO + W(J)=SUM + DO K=1,NPT + BMAT(K,J)=BMAT(K,J)+SUM*ZMAT(K,JJ) + END DO + END DO + DO I=1,N + IP=I+NPT + TEMP=W(I) + DO J=1,I + BMAT(IP,J)=BMAT(IP,J)+TEMP*W(J) + END DO + END DO + END DO ! ! The following instructions complete the shift, including the changes ! to the second derivative parameters of the quadratic model. ! IH=0 - DO 170 J=1,N + DO J=1,N W(J)=-HALF*SUMPQ*XOPT(J) - DO 160 K=1,NPT - W(J)=W(J)+PQ(K)*XPT(K,J) - 160 XPT(K,J)=XPT(K,J)-XOPT(J) - DO 170 I=1,J - IH=IH+1 - HQ(IH)=HQ(IH)+W(I)*XOPT(J)+XOPT(I)*W(J) - 170 BMAT(NPT+I,J)=BMAT(NPT+J,I) - DO 180 I=1,N - XBASE(I)=XBASE(I)+XOPT(I) - XNEW(I)=XNEW(I)-XOPT(I) - SL(I)=SL(I)-XOPT(I) - SU(I)=SU(I)-XOPT(I) - 180 XOPT(I)=ZERO + DO K=1,NPT + W(J)=W(J)+PQ(K)*XPT(K,J) + XPT(K,J)=XPT(K,J)-XOPT(J) + END DO + DO I=1,J + IH=IH+1 + HQ(IH)=HQ(IH)+W(I)*XOPT(J)+XOPT(I)*W(J) + BMAT(NPT+I,J)=BMAT(NPT+J,I) + END DO + END DO + DO I=1,N + XBASE(I)=XBASE(I)+XOPT(I) + XNEW(I)=XNEW(I)-XOPT(I) + SL(I)=SL(I)-XOPT(I) + SU(I)=SU(I)-XOPT(I) + XOPT(I)=ZERO + END DO XOPTSQ=ZERO END IF - IF (NTRITS .EQ. 0) GOTO 210 + IF (NTRITS == 0) GOTO 210 GOTO 230 ! ! XBASE is also moved to XOPT by a call of RESCUE. This calculation is @@ -381,22 +401,23 @@ SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, ! leads to a trust region iteration as does the branch to label 60. ! XOPTSQ=ZERO - IF (KOPT .NE. KBASE) THEN - DO 200 I=1,N - XOPT(I)=XPT(KOPT,I) - 200 XOPTSQ=XOPTSQ+XOPT(I)**2 + IF (KOPT /= KBASE) THEN + DO I=1,N + XOPT(I)=XPT(KOPT,I) + XOPTSQ=XOPTSQ+XOPT(I)**2 + END DO END IF - IF (NF .LT. 0) THEN + IF (NF < 0) THEN NF=MAXFUN - IF (IPRINT .GT. 0) PRINT 390 + IF (IPRINT > 0) PRINT 390 GOTO 720 END IF NRESC=NF - IF (NFSAV .LT. NF) THEN + IF (NFSAV < NF) THEN NFSAV=NF GOTO 20 END IF - IF (NTRITS .GT. 0) GOTO 60 + IF (NTRITS > 0) GOTO 60 ! ! Pick two alternative vectors of variables, relative to XBASE, that ! are suitable as new positions of the KNEW-th interpolation point. @@ -411,47 +432,56 @@ SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, ! 210 CALL ALTMOV (N,NPT,XPT,XOPT,BMAT,ZMAT,NDIM,SL,SU,KOPT, 1 KNEW,ADELT,XNEW,XALT,ALPHA,CAUCHY,W,W(NP),W(NDIM+1)) - DO 220 I=1,N - 220 D(I)=XNEW(I)-XOPT(I) + DO I=1,N + D(I)=XNEW(I)-XOPT(I) + END DO ! ! Calculate VLAG and BETA for the current choice of D. The scalar ! product of D with XPT(K,.) is going to be held in W(NPT+K) for ! use when VQUAD is calculated. ! - 230 DO 250 K=1,NPT - SUMA=ZERO - SUMB=ZERO - SUM=ZERO - DO 240 J=1,N - SUMA=SUMA+XPT(K,J)*D(J) - SUMB=SUMB+XPT(K,J)*XOPT(J) - 240 SUM=SUM+BMAT(K,J)*D(J) - W(K)=SUMA*(HALF*SUMA+SUMB) - VLAG(K)=SUM - 250 W(NPT+K)=SUMA + 230 DO K=1,NPT + SUMA=ZERO + SUMB=ZERO + SUM=ZERO + DO J=1,N + SUMA=SUMA+XPT(K,J)*D(J) + SUMB=SUMB+XPT(K,J)*XOPT(J) + SUM=SUM+BMAT(K,J)*D(J) + END DO + W(K)=SUMA*(HALF*SUMA+SUMB) + VLAG(K)=SUM + W(NPT+K)=SUMA + END DO BETA=ZERO - DO 270 JJ=1,NPTM - SUM=ZERO - DO 260 K=1,NPT - 260 SUM=SUM+ZMAT(K,JJ)*W(K) - BETA=BETA-SUM*SUM - DO 270 K=1,NPT - 270 VLAG(K)=VLAG(K)+SUM*ZMAT(K,JJ) + DO JJ=1,NPTM + SUM=ZERO + DO K=1,NPT + SUM=SUM+ZMAT(K,JJ)*W(K) + END DO + BETA=BETA-SUM*SUM + DO K=1,NPT + VLAG(K)=VLAG(K)+SUM*ZMAT(K,JJ) + END DO + END DO DSQ=ZERO BSUM=ZERO DX=ZERO - DO 300 J=1,N + DO J=1,N DSQ=DSQ+D(J)**2 SUM=ZERO - DO 280 K=1,NPT - 280 SUM=SUM+W(K)*BMAT(K,J) + DO K=1,NPT + SUM=SUM+W(K)*BMAT(K,J) + END DO BSUM=BSUM+SUM*D(J) JP=NPT+J - DO 290 I=1,N - 290 SUM=SUM+BMAT(JP,I)*D(I) + DO I=1,N + SUM=SUM+BMAT(JP,I)*D(I) + END DO VLAG(JP)=SUM BSUM=BSUM+SUM*D(J) - 300 DX=DX+D(J)*XOPT(J) + DX=DX+D(J)*XOPT(J) + END DO BETA=DX*DX+DSQ*(XOPTSQ+DX+DX+HALF*DSQ)+BETA-BSUM VLAG(KOPT)=VLAG(KOPT)+ONE ! @@ -459,20 +489,20 @@ SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, ! the step D of ALTMOV by a Cauchy step. Then RESCUE may be called if ! rounding errors have damaged the chosen denominator. ! - IF (NTRITS .EQ. 0) THEN + IF (NTRITS == 0) THEN DENOM=VLAG(KNEW)**2+ALPHA*BETA - IF (DENOM .LT. CAUCHY .AND. CAUCHY .GT. ZERO) THEN - DO 310 I=1,N - XNEW(I)=XALT(I) - 310 D(I)=XNEW(I)-XOPT(I) + IF (DENOM < CAUCHY .AND. CAUCHY > ZERO) THEN + DO I=1,N + XNEW(I)=XALT(I) + D(I)=XNEW(I)-XOPT(I) + END DO CAUCHY=ZERO GO TO 230 END IF - IF (DENOM .LE. HALF*VLAG(KNEW)**2) THEN - IF (NF .GT. NRESC) GOTO 190 - IF (IPRINT .GT. 0) PRINT 320 - 320 FORMAT (/5X,'Return from BOBYQA because of much', - 1 ' cancellation in a denominator.') + IF (DENOM <= HALF*VLAG(KNEW)**2) THEN + IF (NF > NRESC) GOTO 190 + IF (IPRINT > 0) PRINT 320 + 320 FORMAT (/5X,'Return from BOBYQA because of much cancellation in a denominator.') GOTO 720 END IF ! @@ -487,26 +517,28 @@ SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, SCADEN=ZERO BIGLSQ=ZERO KNEW=0 - DO 350 K=1,NPT - IF (K .EQ. KOPT) GOTO 350 - HDIAG=ZERO - DO 330 JJ=1,NPTM - 330 HDIAG=HDIAG+ZMAT(K,JJ)**2 - DEN=BETA*HDIAG+VLAG(K)**2 - DISTSQ=ZERO - DO 340 J=1,N - 340 DISTSQ=DISTSQ+(XPT(K,J)-XOPT(J))**2 - TEMP=DMAX1(ONE,(DISTSQ/DELSQ)**2) - IF (TEMP*DEN .GT. SCADEN) THEN - SCADEN=TEMP*DEN - KNEW=K - DENOM=DEN - END IF - BIGLSQ=DMAX1(BIGLSQ,TEMP*VLAG(K)**2) - 350 CONTINUE - IF (SCADEN .LE. HALF*BIGLSQ) THEN - IF (NF .GT. NRESC) GOTO 190 - IF (IPRINT .GT. 0) PRINT 320 + DO K=1,NPT + IF (K == KOPT) CYCLE + HDIAG=ZERO + DO JJ=1,NPTM + HDIAG=HDIAG+ZMAT(K,JJ)**2 + END DO + DEN=BETA*HDIAG+VLAG(K)**2 + DISTSQ=ZERO + DO J=1,N + DISTSQ=DISTSQ+(XPT(K,J)-XOPT(J))**2 + END DO + TEMP=DMAX1(ONE,(DISTSQ/DELSQ)**2) + IF (TEMP*DEN > SCADEN) THEN + SCADEN=TEMP*DEN + KNEW=K + DENOM=DEN + END IF + BIGLSQ=DMAX1(BIGLSQ,TEMP*VLAG(K)**2) + END DO + IF (SCADEN <= HALF*BIGLSQ) THEN + IF (NF > NRESC) GOTO 190 + IF (IPRINT > 0) PRINT 320 GOTO 720 END IF END IF @@ -518,25 +550,24 @@ SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, ! Calculate the value of the objective function at XBASE+XNEW, unless ! the limit on the number of calculations of F has been reached. ! - 360 DO 380 I=1,N - X(I)=DMIN1(DMAX1(XL(I),XBASE(I)+XNEW(I)),XU(I)) - IF (XNEW(I) .EQ. SL(I)) X(I)=XL(I) - IF (XNEW(I) .EQ. SU(I)) X(I)=XU(I) - 380 CONTINUE - IF (NF .GE. MAXFUN) THEN - IF (IPRINT .GT. 0) PRINT 390 - 390 FORMAT (/4X,'Return from BOBYQA because CALFUN has been', - 1 ' called MAXFUN times.') + 360 DO I=1,N + X(I)=DMIN1(DMAX1(XL(I),XBASE(I)+XNEW(I)),XU(I)) + IF (XNEW(I) == SL(I)) X(I)=XL(I) + IF (XNEW(I) == SU(I)) X(I)=XU(I) + END DO + IF (NF >= MAXFUN) THEN + IF (IPRINT > 0) PRINT 390 + 390 FORMAT (/4X,'Return from BOBYQA because CALFUN has been called MAXFUN times.') GOTO 720 END IF NF=NF+1 CALL CALFUN (N,X,F) - IF (IPRINT .EQ. 3) THEN + IF (IPRINT == 3) THEN PRINT 400, NF,F,(X(I),I=1,N) 400 FORMAT (/4X,'Function number',I6,' F =',1PD18.10, 1 ' The corresponding X is:'/(2X,5D15.6)) END IF - IF (NTRITS .EQ. -1) THEN + IF (NTRITS == -1) THEN FSAVE=F GOTO 720 END IF @@ -547,65 +578,71 @@ SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, FOPT=FVAL(KOPT) VQUAD=ZERO IH=0 - DO 410 J=1,N - VQUAD=VQUAD+D(J)*GOPT(J) - DO 410 I=1,J - IH=IH+1 - TEMP=D(I)*D(J) - IF (I .EQ. J) TEMP=HALF*TEMP - 410 VQUAD=VQUAD+HQ(IH)*TEMP - DO 420 K=1,NPT - 420 VQUAD=VQUAD+HALF*PQ(K)*W(NPT+K)**2 + DO J=1,N + VQUAD=VQUAD+D(J)*GOPT(J) + DO I=1,J + IH=IH+1 + TEMP=D(I)*D(J) + IF (I == J) TEMP=HALF*TEMP + VQUAD=VQUAD+HQ(IH)*TEMP + END DO + END DO + DO K=1,NPT + VQUAD=VQUAD+HALF*PQ(K)*W(NPT+K)**2 + END DO DIFF=F-FOPT-VQUAD DIFFC=DIFFB DIFFB=DIFFA DIFFA=DABS(DIFF) - IF (DNORM .GT. RHO) NFSAV=NF + IF (DNORM > RHO) NFSAV=NF ! ! Pick the next value of DELTA after a trust region step. ! - IF (NTRITS .GT. 0) THEN - IF (VQUAD .GE. ZERO) THEN - IF (IPRINT .GT. 0) PRINT 430 + IF (NTRITS > 0) THEN + IF (VQUAD >= ZERO) THEN + IF (IPRINT > 0) PRINT 430 430 FORMAT (/4X,'Return from BOBYQA because a trust', 1 ' region step has failed to reduce Q.') GOTO 720 END IF RATIO=(F-FOPT)/VQUAD - IF (RATIO .LE. TENTH) THEN + IF (RATIO <= TENTH) THEN DELTA=DMIN1(HALF*DELTA,DNORM) ELSE IF (RATIO. LE. 0.7D0) THEN DELTA=DMAX1(HALF*DELTA,DNORM) ELSE DELTA=DMAX1(HALF*DELTA,DNORM+DNORM) END IF - IF (DELTA .LE. 1.5D0*RHO) DELTA=RHO + IF (DELTA <= 1.5D0*RHO) DELTA=RHO ! ! Recalculate KNEW and DENOM if the new F is less than FOPT. ! - IF (F .LT. FOPT) THEN + IF (F < FOPT) THEN KSAV=KNEW DENSAV=DENOM DELSQ=DELTA*DELTA SCADEN=ZERO BIGLSQ=ZERO KNEW=0 - DO 460 K=1,NPT - HDIAG=ZERO - DO 440 JJ=1,NPTM - 440 HDIAG=HDIAG+ZMAT(K,JJ)**2 - DEN=BETA*HDIAG+VLAG(K)**2 - DISTSQ=ZERO - DO 450 J=1,N - 450 DISTSQ=DISTSQ+(XPT(K,J)-XNEW(J))**2 - TEMP=DMAX1(ONE,(DISTSQ/DELSQ)**2) - IF (TEMP*DEN .GT. SCADEN) THEN - SCADEN=TEMP*DEN - KNEW=K - DENOM=DEN - END IF - 460 BIGLSQ=DMAX1(BIGLSQ,TEMP*VLAG(K)**2) - IF (SCADEN .LE. HALF*BIGLSQ) THEN + DO K=1,NPT + HDIAG=ZERO + DO JJ=1,NPTM + HDIAG=HDIAG+ZMAT(K,JJ)**2 + END DO + DEN=BETA*HDIAG+VLAG(K)**2 + DISTSQ=ZERO + DO J=1,N + DISTSQ=DISTSQ+(XPT(K,J)-XNEW(J))**2 + END DO + TEMP=DMAX1(ONE,(DISTSQ/DELSQ)**2) + IF (TEMP*DEN > SCADEN) THEN + SCADEN=TEMP*DEN + KNEW=K + DENOM=DEN + END IF + BIGLSQ=DMAX1(BIGLSQ,TEMP*VLAG(K)**2) + END DO + IF (SCADEN <= HALF*BIGLSQ) THEN KNEW=KSAV DENOM=DENSAV END IF @@ -619,102 +656,125 @@ SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, IH=0 PQOLD=PQ(KNEW) PQ(KNEW)=ZERO - DO 470 I=1,N - TEMP=PQOLD*XPT(KNEW,I) - DO 470 J=1,I - IH=IH+1 - 470 HQ(IH)=HQ(IH)+TEMP*XPT(KNEW,J) - DO 480 JJ=1,NPTM - TEMP=DIFF*ZMAT(KNEW,JJ) - DO 480 K=1,NPT - 480 PQ(K)=PQ(K)+TEMP*ZMAT(K,JJ) + DO I=1,N + TEMP=PQOLD*XPT(KNEW,I) + DO J=1,I + IH=IH+1 + HQ(IH)=HQ(IH)+TEMP*XPT(KNEW,J) + END DO + END DO + DO JJ=1,NPTM + TEMP=DIFF*ZMAT(KNEW,JJ) + DO K=1,NPT + PQ(K)=PQ(K)+TEMP*ZMAT(K,JJ) + END DO + END DO ! ! Include the new interpolation point, and make the changes to GOPT at ! the old XOPT that are caused by the updating of the quadratic model. ! FVAL(KNEW)=F - DO 490 I=1,N - XPT(KNEW,I)=XNEW(I) - 490 W(I)=BMAT(KNEW,I) - DO 520 K=1,NPT - SUMA=ZERO - DO 500 JJ=1,NPTM - 500 SUMA=SUMA+ZMAT(KNEW,JJ)*ZMAT(K,JJ) - SUMB=ZERO - DO 510 J=1,N - 510 SUMB=SUMB+XPT(K,J)*XOPT(J) - TEMP=SUMA*SUMB - DO 520 I=1,N - 520 W(I)=W(I)+TEMP*XPT(K,I) - DO 530 I=1,N - 530 GOPT(I)=GOPT(I)+DIFF*W(I) + DO I=1,N + XPT(KNEW,I)=XNEW(I) + W(I)=BMAT(KNEW,I) + END DO + DO K=1,NPT + SUMA=ZERO + DO JJ=1,NPTM + SUMA=SUMA+ZMAT(KNEW,JJ)*ZMAT(K,JJ) + END DO + SUMB=ZERO + DO J=1,N + SUMB=SUMB+XPT(K,J)*XOPT(J) + END DO + TEMP=SUMA*SUMB + DO I=1,N + W(I)=W(I)+TEMP*XPT(K,I) + END DO + END DO + DO I=1,N + GOPT(I)=GOPT(I)+DIFF*W(I) + END DO ! ! Update XOPT, GOPT and KOPT if the new calculated F is less than FOPT. ! - IF (F .LT. FOPT) THEN + IF (F < FOPT) THEN KOPT=KNEW XOPTSQ=ZERO IH=0 - DO 540 J=1,N - XOPT(J)=XNEW(J) - XOPTSQ=XOPTSQ+XOPT(J)**2 - DO 540 I=1,J - IH=IH+1 - IF (I .LT. J) GOPT(J)=GOPT(J)+HQ(IH)*D(I) - 540 GOPT(I)=GOPT(I)+HQ(IH)*D(J) - DO 560 K=1,NPT - TEMP=ZERO - DO 550 J=1,N - 550 TEMP=TEMP+XPT(K,J)*D(J) - TEMP=PQ(K)*TEMP - DO 560 I=1,N - 560 GOPT(I)=GOPT(I)+TEMP*XPT(K,I) + DO J=1,N + XOPT(J)=XNEW(J) + XOPTSQ=XOPTSQ+XOPT(J)**2 + DO I=1,J + IH=IH+1 + IF (I < J) GOPT(J)=GOPT(J)+HQ(IH)*D(I) + GOPT(I)=GOPT(I)+HQ(IH)*D(J) + END DO + END DO + DO K=1,NPT + TEMP=ZERO + DO J=1,N + TEMP=TEMP+XPT(K,J)*D(J) + END DO + TEMP=PQ(K)*TEMP + DO I=1,N + GOPT(I)=GOPT(I)+TEMP*XPT(K,I) + END DO + END DO END IF ! ! Calculate the parameters of the least Frobenius norm interpolant to ! the current data, the gradient of this interpolant at XOPT being put ! into VLAG(NPT+I), I=1,2,...,N. ! - IF (NTRITS .GT. 0) THEN - DO 570 K=1,NPT - VLAG(K)=FVAL(K)-FVAL(KOPT) - 570 W(K)=ZERO - DO 590 J=1,NPTM - SUM=ZERO - DO 580 K=1,NPT - 580 SUM=SUM+ZMAT(K,J)*VLAG(K) - DO 590 K=1,NPT - 590 W(K)=W(K)+SUM*ZMAT(K,J) - DO 610 K=1,NPT - SUM=ZERO - DO 600 J=1,N - 600 SUM=SUM+XPT(K,J)*XOPT(J) - W(K+NPT)=W(K) - 610 W(K)=SUM*W(K) + IF (NTRITS > 0) THEN + DO K=1,NPT + VLAG(K)=FVAL(K)-FVAL(KOPT) + W(K)=ZERO + END DO + DO J=1,NPTM + SUM=ZERO + DO K=1,NPT + SUM=SUM+ZMAT(K,J)*VLAG(K) + END DO + END DO + DO K=1,NPT + W(K)=W(K)+SUM*ZMAT(K,J) + END DO + DO K=1,NPT + SUM=ZERO + DO J=1,N + SUM=SUM+XPT(K,J)*XOPT(J) + END DO + W(K+NPT)=W(K) + W(K)=SUM*W(K) + END DO GQSQ=ZERO GISQ=ZERO - DO 630 I=1,N - SUM=ZERO - DO 620 K=1,NPT - 620 SUM=SUM+BMAT(K,I)*VLAG(K)+XPT(K,I)*W(K) - IF (XOPT(I) .EQ. SL(I)) THEN - GQSQ=GQSQ+DMIN1(ZERO,GOPT(I))**2 - GISQ=GISQ+DMIN1(ZERO,SUM)**2 - ELSE IF (XOPT(I) .EQ. SU(I)) THEN - GQSQ=GQSQ+DMAX1(ZERO,GOPT(I))**2 - GISQ=GISQ+DMAX1(ZERO,SUM)**2 - ELSE - GQSQ=GQSQ+GOPT(I)**2 - GISQ=GISQ+SUM*SUM - END IF - 630 VLAG(NPT+I)=SUM + DO I=1,N + SUM=ZERO + DO K=1,NPT + SUM=SUM+BMAT(K,I)*VLAG(K)+XPT(K,I)*W(K) + END DO + IF (XOPT(I) == SL(I)) THEN + GQSQ=GQSQ+DMIN1(ZERO,GOPT(I))**2 + GISQ=GISQ+DMIN1(ZERO,SUM)**2 + ELSE IF (XOPT(I) == SU(I)) THEN + GQSQ=GQSQ+DMAX1(ZERO,GOPT(I))**2 + GISQ=GISQ+DMAX1(ZERO,SUM)**2 + ELSE + GQSQ=GQSQ+GOPT(I)**2 + GISQ=GISQ+SUM*SUM + END IF + VLAG(NPT+I)=SUM + END DO ! ! Test whether to replace the new quadratic model by the least Frobenius ! norm interpolant, making the replacement if the test is satisfied. ! ITEST=ITEST+1 - IF (GQSQ .LT. TEN*GISQ) ITEST=0 - do_replace = (ITEST .GE. 3) + IF (GQSQ < TEN*GISQ) ITEST=0 + do_replace = (ITEST >= 3) if (.not. do_replace) then ! check for "invalid" value do k=1,npt if (fval(k) > max_valid_value) then @@ -726,12 +786,12 @@ SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, end if IF (do_replace) THEN !stop 'bobyqa: do_replace' - DO 640 I=1,MAX0(NPT,NH) - IF (I .LE. N) GOPT(I)=VLAG(NPT+I) - IF (I .LE. NPT) PQ(I)=W(NPT+I) - IF (I .LE. NH) HQ(I)=ZERO - ITEST=0 - 640 CONTINUE + DO I=1,MAX0(NPT,NH) + IF (I <= N) GOPT(I)=VLAG(NPT+I) + IF (I <= NPT) PQ(I)=W(NPT+I) + IF (I <= NH) HQ(I)=ZERO + ITEST=0 + END DO END IF END IF ! @@ -739,23 +799,24 @@ SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, ! branch for another trust region calculation. The case NTRITS=0 occurs ! when the new interpolation point was reached by an alternative step. ! - IF (NTRITS .EQ. 0) GOTO 60 - IF (F .LE. FOPT+TENTH*VQUAD) GOTO 60 + IF (NTRITS == 0) GOTO 60 + IF (F <= FOPT+TENTH*VQUAD) GOTO 60 ! ! Alternatively, find out if the interpolation points are close enough ! to the best point so far. ! DISTSQ=DMAX1((TWO*DELTA)**2,(TEN*RHO)**2) 650 KNEW=0 - DO 670 K=1,NPT - SUM=ZERO - DO 660 J=1,N - 660 SUM=SUM+(XPT(K,J)-XOPT(J))**2 - IF (SUM .GT. DISTSQ) THEN - KNEW=K - DISTSQ=SUM - END IF - 670 CONTINUE + DO K=1,NPT + SUM=ZERO + DO J=1,N + SUM=SUM+(XPT(K,J)-XOPT(J))**2 + END DO + IF (SUM > DISTSQ) THEN + KNEW=K + DISTSQ=SUM + END IF + END DO ! ! If KNEW is positive, then ALTMOV finds alternative new positions for ! the KNEW-th interpolation point within distance ADELT of XOPT. It is @@ -763,37 +824,37 @@ SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, ! another trust region iteration, unless the calculations with the ! current RHO are complete. ! - IF (KNEW .GT. 0) THEN + IF (KNEW > 0) THEN DIST=DSQRT(DISTSQ) - IF (NTRITS .EQ. -1) THEN + IF (NTRITS == -1) THEN DELTA=DMIN1(TENTH*DELTA,HALF*DIST) - IF (DELTA .LE. 1.5D0*RHO) DELTA=RHO + IF (DELTA <= 1.5D0*RHO) DELTA=RHO END IF NTRITS=0 ADELT=DMAX1(DMIN1(TENTH*DIST,DELTA),RHO) DSQ=ADELT*ADELT GOTO 90 END IF - IF (NTRITS .EQ. -1) GOTO 680 - IF (RATIO .GT. ZERO) GOTO 60 - IF (DMAX1(DELTA,DNORM) .GT. RHO) GOTO 60 + IF (NTRITS == -1) GOTO 680 + IF (RATIO > ZERO) GOTO 60 + IF (DMAX1(DELTA,DNORM) > RHO) GOTO 60 ! ! The calculations with the current value of RHO are complete. Pick the ! next values of RHO and DELTA. ! - 680 IF (RHO .GT. RHOEND) THEN + 680 IF (RHO > RHOEND) THEN DELTA=HALF*RHO RATIO=RHO/RHOEND - IF (RATIO .LE. 16.0D0) THEN + IF (RATIO <= 16.0D0) THEN RHO=RHOEND - ELSE IF (RATIO .LE. 250.0D0) THEN + ELSE IF (RATIO <= 250.0D0) THEN RHO=DSQRT(RATIO)*RHOEND ELSE RHO=TENTH*RHO END IF DELTA=DMAX1(DELTA,RHO) - IF (IPRINT .GE. 2) THEN - IF (IPRINT .GE. 3) PRINT 690 + IF (IPRINT >= 2) THEN + IF (IPRINT >= 3) PRINT 690 690 FORMAT (5X) PRINT 700, RHO,NF 700 FORMAT (/4X,'New RHO =',1PD11.4,5X,'Number of', @@ -810,19 +871,18 @@ SUBROUTINE BOBYQB (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT, ! Return from the calculation, after another Newton-Raphson step, if ! it is too short to have been tried before. ! - IF (NTRITS .EQ. -1) GOTO 360 - 720 IF (FVAL(KOPT) .LE. FSAVE) THEN - DO 730 I=1,N - X(I)=DMIN1(DMAX1(XL(I),XBASE(I)+XOPT(I)),XU(I)) - IF (XOPT(I) .EQ. SL(I)) X(I)=XL(I) - IF (XOPT(I) .EQ. SU(I)) X(I)=XU(I) - 730 CONTINUE + IF (NTRITS == -1) GOTO 360 + 720 IF (FVAL(KOPT) <= FSAVE) THEN + DO I=1,N + X(I)=DMIN1(DMAX1(XL(I),XBASE(I)+XOPT(I)),XU(I)) + IF (XOPT(I) == SL(I)) X(I)=XL(I) + IF (XOPT(I) == SU(I)) X(I)=XU(I) + END DO F=FVAL(KOPT) END IF - IF (IPRINT .GE. 1) THEN + IF (IPRINT >= 1) THEN PRINT 740, NF - 740 FORMAT (/4X,'At the return from BOBYQA',5X, - 1 'Number of function values =',I6) + 740 FORMAT (/4X,'At the return from BOBYQA',5X,'Number of function values =',I6) PRINT 710, F,(X(I),I=1,N) END IF RETURN @@ -831,7 +891,8 @@ END SUBROUTINE BOBYQB SUBROUTINE ALTMOV (N,NPT,XPT,XOPT,BMAT,ZMAT,NDIM,SL,SU,KOPT, 1 KNEW,ADELT,XNEW,XALT,ALPHA,CAUCHY,GLAG,HCOL,W) - IMPLICIT REAL*8 (A-H,O-Z) + IMPLICIT real(dp) (A-H,O-Z) + integer :: N, NPT, NDIM, KOPT, KNEW DIMENSION XPT(NPT,*),XOPT(*),BMAT(NDIM,*),ZMAT(NPT,*),SL(*), 1 SU(*),XNEW(*),XALT(*),GLAG(*),HCOL(*),W(*) ! @@ -869,26 +930,33 @@ SUBROUTINE ALTMOV (N,NPT,XPT,XOPT,BMAT,ZMAT,NDIM,SL,SU,KOPT, ONE=1.0D0 ZERO=0.0D0 CONST=ONE+DSQRT(2.0D0) - DO 10 K=1,NPT - 10 HCOL(K)=ZERO - DO 20 J=1,NPT-N-1 - TEMP=ZMAT(KNEW,J) - DO 20 K=1,NPT - 20 HCOL(K)=HCOL(K)+TEMP*ZMAT(K,J) + DO K=1,NPT + HCOL(K)=ZERO + END DO + DO J=1,NPT-N-1 + TEMP=ZMAT(KNEW,J) + DO K=1,NPT + HCOL(K)=HCOL(K)+TEMP*ZMAT(K,J) + END DO + END DO ALPHA=HCOL(KNEW) HA=HALF*ALPHA ! ! Calculate the gradient of the KNEW-th Lagrange function at XOPT. ! - DO 30 I=1,N - 30 GLAG(I)=BMAT(KNEW,I) - DO 50 K=1,NPT - TEMP=ZERO - DO 40 J=1,N - 40 TEMP=TEMP+XPT(K,J)*XOPT(J) - TEMP=HCOL(K)*TEMP - DO 50 I=1,N - 50 GLAG(I)=GLAG(I)+TEMP*XPT(K,I) + DO I=1,N + GLAG(I)=BMAT(KNEW,I) + END DO + DO K=1,NPT + TEMP=ZERO + DO J=1,N + TEMP=TEMP+XPT(K,J)*XOPT(J) + END DO + TEMP=HCOL(K)*TEMP + DO I=1,N + GLAG(I)=GLAG(I)+TEMP*XPT(K,I) + END DO + END DO ! ! Search for a large denominator along the straight lines through XOPT ! and another interpolation point. SLBD and SUBD will be lower and upper @@ -897,112 +965,114 @@ SUBROUTINE ALTMOV (N,NPT,XPT,XOPT,BMAT,ZMAT,NDIM,SL,SU,KOPT, ! will be set to the largest admissible value of PREDSQ that occurs. ! PRESAV=ZERO - DO 80 K=1,NPT - IF (K .EQ. KOPT) GOTO 80 - DDERIV=ZERO - DISTSQ=ZERO - DO 60 I=1,N - TEMP=XPT(K,I)-XOPT(I) - DDERIV=DDERIV+GLAG(I)*TEMP - 60 DISTSQ=DISTSQ+TEMP*TEMP - SUBD=ADELT/DSQRT(DISTSQ) - SLBD=-SUBD - ILBD=0 - IUBD=0 - SUMIN=DMIN1(ONE,SUBD) + DO K=1,NPT + IF (K == KOPT) CYCLE + DDERIV=ZERO + DISTSQ=ZERO + DO I=1,N + TEMP=XPT(K,I)-XOPT(I) + DDERIV=DDERIV+GLAG(I)*TEMP + DISTSQ=DISTSQ+TEMP*TEMP + END DO + SUBD=ADELT/DSQRT(DISTSQ) + SLBD=-SUBD + ILBD=0 + IUBD=0 + SUMIN=DMIN1(ONE,SUBD) ! ! Revise SLBD and SUBD if necessary because of the bounds in SL and SU. ! - DO 70 I=1,N - TEMP=XPT(K,I)-XOPT(I) - IF (TEMP .GT. ZERO) THEN - IF (SLBD*TEMP .LT. SL(I)-XOPT(I)) THEN - SLBD=(SL(I)-XOPT(I))/TEMP - ILBD=-I - END IF - IF (SUBD*TEMP .GT. SU(I)-XOPT(I)) THEN - SUBD=DMAX1(SUMIN,(SU(I)-XOPT(I))/TEMP) - IUBD=I - END IF - ELSE IF (TEMP .LT. ZERO) THEN - IF (SLBD*TEMP .GT. SU(I)-XOPT(I)) THEN - SLBD=(SU(I)-XOPT(I))/TEMP - ILBD=I - END IF - IF (SUBD*TEMP .LT. SL(I)-XOPT(I)) THEN - SUBD=DMAX1(SUMIN,(SL(I)-XOPT(I))/TEMP) - IUBD=-I - END IF - END IF - 70 CONTINUE + DO I=1,N + TEMP=XPT(K,I)-XOPT(I) + IF (TEMP > ZERO) THEN + IF (SLBD*TEMP < SL(I)-XOPT(I)) THEN + SLBD=(SL(I)-XOPT(I))/TEMP + ILBD=-I + END IF + IF (SUBD*TEMP > SU(I)-XOPT(I)) THEN + SUBD=DMAX1(SUMIN,(SU(I)-XOPT(I))/TEMP) + IUBD=I + END IF + ELSE IF (TEMP < ZERO) THEN + IF (SLBD*TEMP > SU(I)-XOPT(I)) THEN + SLBD=(SU(I)-XOPT(I))/TEMP + ILBD=I + END IF + IF (SUBD*TEMP < SL(I)-XOPT(I)) THEN + SUBD=DMAX1(SUMIN,(SL(I)-XOPT(I))/TEMP) + IUBD=-I + END IF + END IF + END DO ! ! Seek a large modulus of the KNEW-th Lagrange function when the index ! of the other interpolation point on the line through XOPT is KNEW. ! - IF (K .EQ. KNEW) THEN - DIFF=DDERIV-ONE - STEP=SLBD - VLAG=SLBD*(DDERIV-SLBD*DIFF) - ISBD=ILBD - TEMP=SUBD*(DDERIV-SUBD*DIFF) - IF (DABS(TEMP) .GT. DABS(VLAG)) THEN - STEP=SUBD - VLAG=TEMP - ISBD=IUBD - END IF - TEMPD=HALF*DDERIV - TEMPA=TEMPD-DIFF*SLBD - TEMPB=TEMPD-DIFF*SUBD - IF (TEMPA*TEMPB .LT. ZERO) THEN - TEMP=TEMPD*TEMPD/DIFF - IF (DABS(TEMP) .GT. DABS(VLAG)) THEN - STEP=TEMPD/DIFF - VLAG=TEMP - ISBD=0 - END IF - END IF + IF (K == KNEW) THEN + DIFF=DDERIV-ONE + STEP=SLBD + VLAG=SLBD*(DDERIV-SLBD*DIFF) + ISBD=ILBD + TEMP=SUBD*(DDERIV-SUBD*DIFF) + IF (DABS(TEMP) > DABS(VLAG)) THEN + STEP=SUBD + VLAG=TEMP + ISBD=IUBD + END IF + TEMPD=HALF*DDERIV + TEMPA=TEMPD-DIFF*SLBD + TEMPB=TEMPD-DIFF*SUBD + IF (TEMPA*TEMPB < ZERO) THEN + TEMP=TEMPD*TEMPD/DIFF + IF (DABS(TEMP) > DABS(VLAG)) THEN + STEP=TEMPD/DIFF + VLAG=TEMP + ISBD=0 + END IF + END IF ! ! Search along each of the other lines through XOPT and another point. ! - ELSE - STEP=SLBD - VLAG=SLBD*(ONE-SLBD) - ISBD=ILBD - TEMP=SUBD*(ONE-SUBD) - IF (DABS(TEMP) .GT. DABS(VLAG)) THEN - STEP=SUBD - VLAG=TEMP - ISBD=IUBD - END IF - IF (SUBD .GT. HALF) THEN - IF (DABS(VLAG) .LT. 0.25D0) THEN - STEP=HALF - VLAG=0.25D0 - ISBD=0 - END IF - END IF - VLAG=VLAG*DDERIV - END IF + ELSE + STEP=SLBD + VLAG=SLBD*(ONE-SLBD) + ISBD=ILBD + TEMP=SUBD*(ONE-SUBD) + IF (DABS(TEMP) > DABS(VLAG)) THEN + STEP=SUBD + VLAG=TEMP + ISBD=IUBD + END IF + IF (SUBD > HALF) THEN + IF (DABS(VLAG) < 0.25D0) THEN + STEP=HALF + VLAG=0.25D0 + ISBD=0 + END IF + END IF + VLAG=VLAG*DDERIV + END IF ! ! Calculate PREDSQ for the current line search and maintain PRESAV. ! - TEMP=STEP*(ONE-STEP)*DISTSQ - PREDSQ=VLAG*VLAG*(VLAG*VLAG+HA*TEMP*TEMP) - IF (PREDSQ .GT. PRESAV) THEN - PRESAV=PREDSQ - KSAV=K - STPSAV=STEP - IBDSAV=ISBD - END IF - 80 CONTINUE + TEMP=STEP*(ONE-STEP)*DISTSQ + PREDSQ=VLAG*VLAG*(VLAG*VLAG+HA*TEMP*TEMP) + IF (PREDSQ > PRESAV) THEN + PRESAV=PREDSQ + KSAV=K + STPSAV=STEP + IBDSAV=ISBD + END IF + END DO ! ! Construct XNEW in a way that satisfies the bound constraints exactly. ! - DO 90 I=1,N - TEMP=XOPT(I)+STPSAV*(XPT(KSAV,I)-XOPT(I)) - 90 XNEW(I)=DMAX1(SL(I),DMIN1(SU(I),TEMP)) - IF (IBDSAV .LT. 0) XNEW(-IBDSAV)=SL(-IBDSAV) - IF (IBDSAV .GT. 0) XNEW(IBDSAV)=SU(IBDSAV) + DO I=1,N + TEMP=XOPT(I)+STPSAV*(XPT(KSAV,I)-XOPT(I)) + XNEW(I)=DMAX1(SL(I),DMIN1(SU(I),TEMP)) + END DO + IF (IBDSAV < 0) XNEW(-IBDSAV)=SL(-IBDSAV) + IF (IBDSAV > 0) XNEW(IBDSAV)=SU(IBDSAV) ! ! Prepare for the iterative method that assembles the constrained Cauchy ! step in W. The sum of squares of the fixed components of W is formed in @@ -1012,16 +1082,16 @@ SUBROUTINE ALTMOV (N,NPT,XPT,XOPT,BMAT,ZMAT,NDIM,SL,SU,KOPT, IFLAG=0 100 WFIXSQ=ZERO GGFREE=ZERO - DO 110 I=1,N - W(I)=ZERO - TEMPA=DMIN1(XOPT(I)-SL(I),GLAG(I)) - TEMPB=DMAX1(XOPT(I)-SU(I),GLAG(I)) - IF (TEMPA .GT. ZERO .OR. TEMPB .LT. ZERO) THEN - W(I)=BIGSTP - GGFREE=GGFREE+GLAG(I)**2 - END IF - 110 CONTINUE - IF (GGFREE .EQ. ZERO) THEN + DO I=1,N + W(I)=ZERO + TEMPA=DMIN1(XOPT(I)-SL(I),GLAG(I)) + TEMPB=DMAX1(XOPT(I)-SU(I),GLAG(I)) + IF (TEMPA > ZERO .OR. TEMPB < ZERO) THEN + W(I)=BIGSTP + GGFREE=GGFREE+GLAG(I)**2 + END IF + END DO + IF (GGFREE == ZERO) THEN CAUCHY=ZERO GOTO 200 END IF @@ -1029,43 +1099,44 @@ SUBROUTINE ALTMOV (N,NPT,XPT,XOPT,BMAT,ZMAT,NDIM,SL,SU,KOPT, ! Investigate whether more components of W can be fixed. ! 120 TEMP=ADELT*ADELT-WFIXSQ - IF (TEMP .GT. ZERO) THEN + IF (TEMP > ZERO) THEN WSQSAV=WFIXSQ STEP=DSQRT(TEMP/GGFREE) GGFREE=ZERO - DO 130 I=1,N - IF (W(I) .EQ. BIGSTP) THEN - TEMP=XOPT(I)-STEP*GLAG(I) - IF (TEMP .LE. SL(I)) THEN - W(I)=SL(I)-XOPT(I) - WFIXSQ=WFIXSQ+W(I)**2 - ELSE IF (TEMP .GE. SU(I)) THEN - W(I)=SU(I)-XOPT(I) - WFIXSQ=WFIXSQ+W(I)**2 - ELSE - GGFREE=GGFREE+GLAG(I)**2 - END IF - END IF - 130 CONTINUE - IF (WFIXSQ .GT. WSQSAV .AND. GGFREE .GT. ZERO) GOTO 120 + DO I=1,N + IF (W(I) == BIGSTP) THEN + TEMP=XOPT(I)-STEP*GLAG(I) + IF (TEMP <= SL(I)) THEN + W(I)=SL(I)-XOPT(I) + WFIXSQ=WFIXSQ+W(I)**2 + ELSE IF (TEMP >= SU(I)) THEN + W(I)=SU(I)-XOPT(I) + WFIXSQ=WFIXSQ+W(I)**2 + ELSE + GGFREE=GGFREE+GLAG(I)**2 + END IF + END IF + END DO + IF (WFIXSQ > WSQSAV .AND. GGFREE > ZERO) GOTO 120 END IF ! ! Set the remaining free components of W and all components of XALT, ! except that W may be scaled later. ! GW=ZERO - DO 140 I=1,N - IF (W(I) .EQ. BIGSTP) THEN - W(I)=-STEP*GLAG(I) - XALT(I)=DMAX1(SL(I),DMIN1(SU(I),XOPT(I)+W(I))) - ELSE IF (W(I) .EQ. ZERO) THEN - XALT(I)=XOPT(I) - ELSE IF (GLAG(I) .GT. ZERO) THEN - XALT(I)=SL(I) - ELSE - XALT(I)=SU(I) - END IF - 140 GW=GW+GLAG(I)*W(I) + DO I=1,N + IF (W(I) == BIGSTP) THEN + W(I)=-STEP*GLAG(I) + XALT(I)=DMAX1(SL(I),DMIN1(SU(I),XOPT(I)+W(I))) + ELSE IF (W(I) == ZERO) THEN + XALT(I)=XOPT(I) + ELSE IF (GLAG(I) > ZERO) THEN + XALT(I)=SL(I) + ELSE + XALT(I)=SU(I) + END IF + GW=GW+GLAG(I)*W(I) + END DO ! ! Set CURV to the curvature of the KNEW-th Lagrange function along W. ! Scale W by a factor less than one if that can reduce the modulus of @@ -1073,17 +1144,20 @@ SUBROUTINE ALTMOV (N,NPT,XPT,XOPT,BMAT,ZMAT,NDIM,SL,SU,KOPT, ! the square of this function. ! CURV=ZERO - DO 160 K=1,NPT - TEMP=ZERO - DO 150 J=1,N - 150 TEMP=TEMP+XPT(K,J)*W(J) - 160 CURV=CURV+HCOL(K)*TEMP*TEMP - IF (IFLAG .EQ. 1) CURV=-CURV - IF (CURV .GT. -GW .AND. CURV .LT. -CONST*GW) THEN + DO K=1,NPT + TEMP=ZERO + DO J=1,N + TEMP=TEMP+XPT(K,J)*W(J) + END DO + CURV=CURV+HCOL(K)*TEMP*TEMP + END DO + IF (IFLAG == 1) CURV=-CURV + IF (CURV > -GW .AND. CURV < -CONST*GW) THEN SCALE=-GW/CURV - DO 170 I=1,N - TEMP=XOPT(I)+SCALE*W(I) - 170 XALT(I)=DMAX1(SL(I),DMIN1(SU(I),TEMP)) + DO I=1,N + TEMP=XOPT(I)+SCALE*W(I) + XALT(I)=DMAX1(SL(I),DMIN1(SU(I),TEMP)) + END DO CAUCHY=(HALF*GW*SCALE)**2 ELSE CAUCHY=(GW+HALF*CURV)**2 @@ -1093,17 +1167,19 @@ SUBROUTINE ALTMOV (N,NPT,XPT,XOPT,BMAT,ZMAT,NDIM,SL,SU,KOPT, ! the sign of GLAG. Thus two XALT vectors become available. The one that ! is chosen is the one that gives the larger value of CAUCHY. ! - IF (IFLAG .EQ. 0) THEN - DO 180 I=1,N - GLAG(I)=-GLAG(I) - 180 W(N+I)=XALT(I) + IF (IFLAG == 0) THEN + DO I=1,N + GLAG(I)=-GLAG(I) + W(N+I)=XALT(I) + END DO CSAVE=CAUCHY IFLAG=1 GOTO 100 END IF - IF (CSAVE .GT. CAUCHY) THEN - DO 190 I=1,N - 190 XALT(I)=W(N+I) + IF (CSAVE > CAUCHY) THEN + DO I=1,N + XALT(I)=W(N+I) + END DO CAUCHY=CSAVE END IF 200 RETURN @@ -1112,7 +1188,7 @@ END SUBROUTINE ALTMOV SUBROUTINE PRELIM (N,NPT,X,XL,XU,RHOBEG,IPRINT,MAXFUN,XBASE, 1 XPT,FVAL,GOPT,HQ,PQ,BMAT,ZMAT,NDIM,SL,SU,NF,KOPT,CALFUN) - IMPLICIT REAL*8 (A-H,O-Z) + IMPLICIT real(dp) (A-H,O-Z) DIMENSION X(:),XL(:),XU(:),XBASE(*),XPT(NPT,*),FVAL(*),GOPT(*), 1 HQ(*),PQ(*),BMAT(NDIM,*),ZMAT(NPT,*),SL(*),SU(*) interface @@ -1148,18 +1224,24 @@ SUBROUTINE PRELIM (N,NPT,X,XL,XU,RHOBEG,IPRINT,MAXFUN,XBASE, ! Set XBASE to the initial vector of variables, and set the initial ! elements of XPT, BMAT, HQ, PQ and ZMAT to zero. ! - DO 20 J=1,N - XBASE(J)=X(J) - DO 10 K=1,NPT - 10 XPT(K,J)=ZERO - DO 20 I=1,NDIM - 20 BMAT(I,J)=ZERO - DO 30 IH=1,(N*NP)/2 - 30 HQ(IH)=ZERO - DO 40 K=1,NPT - PQ(K)=ZERO - DO 40 J=1,NPT-NP - 40 ZMAT(K,J)=ZERO + DO J=1,N + XBASE(J)=X(J) + DO K=1,NPT + XPT(K,J)=ZERO + END DO + DO I=1,NDIM + BMAT(I,J)=ZERO + END DO + END DO + DO IH=1,(N*NP)/2 + HQ(IH)=ZERO + END DO + DO K=1,NPT + PQ(K)=ZERO + DO J=1,NPT-NP + ZMAT(K,J)=ZERO + END DO + END DO ! ! Begin the initialization procedure. NF becomes one more than the number ! of function values so far. The coordinates of the displacement of the @@ -1169,23 +1251,23 @@ SUBROUTINE PRELIM (N,NPT,X,XL,XU,RHOBEG,IPRINT,MAXFUN,XBASE, 50 NFM=NF NFX=NF-N NF=NF+1 - IF (NFM .LE. 2*N) THEN - IF (NFM .GE. 1 .AND. NFM .LE. N) THEN + IF (NFM <= 2*N) THEN + IF (NFM >= 1 .AND. NFM <= N) THEN STEPA=RHOBEG - IF (SU(NFM) .EQ. ZERO) STEPA=-STEPA + IF (SU(NFM) == ZERO) STEPA=-STEPA XPT(NF,NFM)=STEPA - ELSE IF (NFM .GT. N) THEN + ELSE IF (NFM > N) THEN STEPA=XPT(NF-N,NFX) STEPB=-RHOBEG - IF (SL(NFX) .EQ. ZERO) STEPB=DMIN1(TWO*RHOBEG,SU(NFX)) - IF (SU(NFX) .EQ. ZERO) STEPB=DMAX1(-TWO*RHOBEG,SL(NFX)) + IF (SL(NFX) == ZERO) STEPB=DMIN1(TWO*RHOBEG,SU(NFX)) + IF (SU(NFX) == ZERO) STEPB=DMAX1(-TWO*RHOBEG,SL(NFX)) XPT(NF,NFX)=STEPB END IF ELSE ITEMP=(NFM-NP)/N JPT=NFM-ITEMP*N-N IPT=JPT+ITEMP - IF (IPT .GT. N) THEN + IF (IPT > N) THEN ITEMP=JPT JPT=IPT-N IPT=ITEMP @@ -1197,23 +1279,22 @@ SUBROUTINE PRELIM (N,NPT,X,XL,XU,RHOBEG,IPRINT,MAXFUN,XBASE, ! Calculate the next value of F. The least function value so far and ! its index are required. ! - DO 60 J=1,N - X(J)=DMIN1(DMAX1(XL(J),XBASE(J)+XPT(NF,J)),XU(J)) - IF (XPT(NF,J) .EQ. SL(J)) X(J)=XL(J) - IF (XPT(NF,J) .EQ. SU(J)) X(J)=XU(J) - 60 CONTINUE + DO J=1,N + X(J)=DMIN1(DMAX1(XL(J),XBASE(J)+XPT(NF,J)),XU(J)) + IF (XPT(NF,J) == SL(J)) X(J)=XL(J) + IF (XPT(NF,J) == SU(J)) X(J)=XU(J) + END DO CALL CALFUN (N,X,F) - IF (IPRINT .EQ. 3) THEN - PRINT 70, NF,F,(X(I),I=1,N) - 70 FORMAT (/4X,'Function number',I6,' F =',1PD18.10, - 1 ' The corresponding X is:'/(2X,5D15.6)) + IF (IPRINT == 3) THEN + PRINT 70, NF,F,(X(I),I=1,N) + 70 FORMAT (/4X,'Function number',I6,' F =',1PD18.10,' The corresponding X is:'/(2X,5D15.6)) END IF FVAL(NF)=F - IF (NF .EQ. 1) THEN - FBEG=F - KOPT=1 - ELSE IF (F .LT. FVAL(KOPT)) THEN - KOPT=NF + IF (NF == 1) THEN + FBEG=F + KOPT=1 + ELSE IF (F < FVAL(KOPT)) THEN + KOPT=NF END IF ! ! Set the nonzero initial elements of BMAT and the quadratic model in the @@ -1222,25 +1303,25 @@ SUBROUTINE PRELIM (N,NPT,X,XL,XU,RHOBEG,IPRINT,MAXFUN,XBASE, ! order that the function value at the first of them contributes to the ! off-diagonal second derivative terms of the initial quadratic model. ! - IF (NF .LE. 2*N+1) THEN - IF (NF .GE. 2 .AND. NF .LE. N+1) THEN + IF (NF <= 2*N+1) THEN + IF (NF >= 2 .AND. NF <= N+1) THEN GOPT(NFM)=(F-FBEG)/STEPA - IF (NPT .LT. NF+N) THEN + IF (NPT < NF+N) THEN BMAT(1,NFM)=-ONE/STEPA BMAT(NF,NFM)=ONE/STEPA BMAT(NPT+NFM,NFM)=-HALF*RHOSQ END IF - ELSE IF (NF .GE. N+2) THEN + ELSE IF (NF >= N+2) THEN IH=(NFX*(NFX+1))/2 TEMP=(F-FBEG)/STEPB DIFF=STEPB-STEPA HQ(IH)=TWO*(TEMP-GOPT(NFX))/DIFF GOPT(NFX)=(GOPT(NFX)*STEPB-TEMP*STEPA)/DIFF - IF (STEPA*STEPB .LT. ZERO) THEN - IF (F .LT. FVAL(NF-N)) THEN + IF (STEPA*STEPB < ZERO) THEN + IF (F < FVAL(NF-N)) THEN FVAL(NF)=FVAL(NF-N) FVAL(NF-N)=F - IF (KOPT .EQ. NF) KOPT=NF-N + IF (KOPT == NF) KOPT=NF-N XPT(NF-N,NFX)=STEPB XPT(NF,NFX)=STEPA END IF @@ -1265,7 +1346,7 @@ SUBROUTINE PRELIM (N,NPT,X,XL,XU,RHOBEG,IPRINT,MAXFUN,XBASE, TEMP=XPT(NF,IPT)*XPT(NF,JPT) HQ(IH)=(FBEG-FVAL(IPT+1)-FVAL(JPT+1)+F)/TEMP END IF - IF (NF .LT. NPT .AND. NF .LT. MAXFUN) GOTO 50 + IF (NF < NPT .AND. NF < MAXFUN) GOTO 50 RETURN END SUBROUTINE PRELIM @@ -1273,7 +1354,7 @@ END SUBROUTINE PRELIM SUBROUTINE RESCUE (N,NPT,XL,XU,IPRINT,MAXFUN,XBASE,XPT, 1 FVAL,XOPT,GOPT,HQ,PQ,BMAT,ZMAT,NDIM,SL,SU,NF,DELTA, 2 KOPT,VLAG,PTSAUX,PTSID,W,CALFUN) - IMPLICIT REAL*8 (A-H,O-Z) + IMPLICIT real(dp) (A-H,O-Z) DIMENSION XL(:),XU(:),XBASE(*),XPT(NPT,*),FVAL(*),XOPT(*), 1 GOPT(*),HQ(*),PQ(*),BMAT(NDIM,*),ZMAT(NPT,*),SL(*),SU(*), 2 VLAG(*),PTSAUX(2,*),PTSID(*),W(*) @@ -1322,7 +1403,7 @@ SUBROUTINE RESCUE (N,NPT,XL,XU,IPRINT,MAXFUN,XBASE,XPT, ONE=1.0D0 ZERO=0.0D0 NP=N+1 - SFRAC=HALF/DFLOAT(NP) + SFRAC=HALF/DBLE(NP) NPTM=NPT-NP ! ! Shift the interpolation points so that XOPT becomes the origin, and set @@ -1334,49 +1415,57 @@ SUBROUTINE RESCUE (N,NPT,XL,XU,IPRINT,MAXFUN,XBASE,XPT, ! SUMPQ=ZERO WINC=ZERO - DO 20 K=1,NPT - DISTSQ=ZERO - DO 10 J=1,N - XPT(K,J)=XPT(K,J)-XOPT(J) - 10 DISTSQ=DISTSQ+XPT(K,J)**2 - SUMPQ=SUMPQ+PQ(K) - W(NDIM+K)=DISTSQ - WINC=DMAX1(WINC,DISTSQ) - DO 20 J=1,NPTM - 20 ZMAT(K,J)=ZERO + DO K=1,NPT + DISTSQ=ZERO + DO J=1,N + XPT(K,J)=XPT(K,J)-XOPT(J) + DISTSQ=DISTSQ+XPT(K,J)**2 + END DO + SUMPQ=SUMPQ+PQ(K) + W(NDIM+K)=DISTSQ + WINC=DMAX1(WINC,DISTSQ) + DO J=1,NPTM + ZMAT(K,J)=ZERO + END DO + END DO ! ! Update HQ so that HQ and PQ define the second derivatives of the model ! after XBASE has been shifted to the trust region centre. ! IH=0 - DO 40 J=1,N - W(J)=HALF*SUMPQ*XOPT(J) - DO 30 K=1,NPT - 30 W(J)=W(J)+PQ(K)*XPT(K,J) - DO 40 I=1,J - IH=IH+1 - 40 HQ(IH)=HQ(IH)+W(I)*XOPT(J)+W(J)*XOPT(I) + DO J=1,N + W(J)=HALF*SUMPQ*XOPT(J) + DO K=1,NPT + W(J)=W(J)+PQ(K)*XPT(K,J) + END DO + DO I=1,J + IH=IH+1 + HQ(IH)=HQ(IH)+W(I)*XOPT(J)+W(J)*XOPT(I) + END DO + END DO ! ! Shift XBASE, SL, SU and XOPT. Set the elements of BMAT to zero, and ! also set the elements of PTSAUX. ! - DO 50 J=1,N - XBASE(J)=XBASE(J)+XOPT(J) - SL(J)=SL(J)-XOPT(J) - SU(J)=SU(J)-XOPT(J) - XOPT(J)=ZERO - PTSAUX(1,J)=DMIN1(DELTA,SU(J)) - PTSAUX(2,J)=DMAX1(-DELTA,SL(J)) - IF (PTSAUX(1,J)+PTSAUX(2,J) .LT. ZERO) THEN - TEMP=PTSAUX(1,J) - PTSAUX(1,J)=PTSAUX(2,J) - PTSAUX(2,J)=TEMP - END IF - IF (DABS(PTSAUX(2,J)) .LT. HALF*DABS(PTSAUX(1,J))) THEN - PTSAUX(2,J)=HALF*PTSAUX(1,J) - END IF - DO 50 I=1,NDIM - 50 BMAT(I,J)=ZERO + DO J=1,N + XBASE(J)=XBASE(J)+XOPT(J) + SL(J)=SL(J)-XOPT(J) + SU(J)=SU(J)-XOPT(J) + XOPT(J)=ZERO + PTSAUX(1,J)=DMIN1(DELTA,SU(J)) + PTSAUX(2,J)=DMAX1(-DELTA,SL(J)) + IF (PTSAUX(1,J)+PTSAUX(2,J) < ZERO) THEN + TEMP=PTSAUX(1,J) + PTSAUX(1,J)=PTSAUX(2,J) + PTSAUX(2,J)=TEMP + END IF + IF (DABS(PTSAUX(2,J)) < HALF*DABS(PTSAUX(1,J))) THEN + PTSAUX(2,J)=HALF*PTSAUX(1,J) + END IF + DO I=1,NDIM + BMAT(I,J)=ZERO + END DO + END DO FBASE=FVAL(KOPT) ! ! Set the identifiers of the artificial interpolation points that are @@ -1384,40 +1473,41 @@ SUBROUTINE RESCUE (N,NPT,XL,XU,IPRINT,MAXFUN,XBASE,XPT, ! nonzero elements of BMAT and ZMAT. ! PTSID(1)=SFRAC - DO 60 J=1,N - JP=J+1 - JPN=JP+N - PTSID(JP)=DFLOAT(J)+SFRAC - IF (JPN .LE. NPT) THEN - PTSID(JPN)=DFLOAT(J)/DFLOAT(NP)+SFRAC - TEMP=ONE/(PTSAUX(1,J)-PTSAUX(2,J)) - BMAT(JP,J)=-TEMP+ONE/PTSAUX(1,J) - BMAT(JPN,J)=TEMP+ONE/PTSAUX(2,J) - BMAT(1,J)=-BMAT(JP,J)-BMAT(JPN,J) - ZMAT(1,J)=DSQRT(2.0D0)/DABS(PTSAUX(1,J)*PTSAUX(2,J)) - ZMAT(JP,J)=ZMAT(1,J)*PTSAUX(2,J)*TEMP - ZMAT(JPN,J)=-ZMAT(1,J)*PTSAUX(1,J)*TEMP - ELSE - BMAT(1,J)=-ONE/PTSAUX(1,J) - BMAT(JP,J)=ONE/PTSAUX(1,J) - BMAT(J+NPT,J)=-HALF*PTSAUX(1,J)**2 - END IF - 60 CONTINUE + DO J=1,N + JP=J+1 + JPN=JP+N + PTSID(JP)=DBLE(J)+SFRAC + IF (JPN <= NPT) THEN + PTSID(JPN)=DBLE(J)/DBLE(NP)+SFRAC + TEMP=ONE/(PTSAUX(1,J)-PTSAUX(2,J)) + BMAT(JP,J)=-TEMP+ONE/PTSAUX(1,J) + BMAT(JPN,J)=TEMP+ONE/PTSAUX(2,J) + BMAT(1,J)=-BMAT(JP,J)-BMAT(JPN,J) + ZMAT(1,J)=DSQRT(2.0D0)/DABS(PTSAUX(1,J)*PTSAUX(2,J)) + ZMAT(JP,J)=ZMAT(1,J)*PTSAUX(2,J)*TEMP + ZMAT(JPN,J)=-ZMAT(1,J)*PTSAUX(1,J)*TEMP + ELSE + BMAT(1,J)=-ONE/PTSAUX(1,J) + BMAT(JP,J)=ONE/PTSAUX(1,J) + BMAT(J+NPT,J)=-HALF*PTSAUX(1,J)**2 + END IF + END DO ! ! Set any remaining identifiers with their nonzero elements of ZMAT. ! - IF (NPT .GE. N+NP) THEN - DO 70 K=2*NP,NPT - IW=(DFLOAT(K-NP)-HALF)/DFLOAT(N) - IP=K-NP-IW*N - IQ=IP+IW - IF (IQ .GT. N) IQ=IQ-N - PTSID(K)=DFLOAT(IP)+DFLOAT(IQ)/DFLOAT(NP)+SFRAC - TEMP=ONE/(PTSAUX(1,IP)*PTSAUX(1,IQ)) - ZMAT(1,K-NP)=TEMP - ZMAT(IP+1,K-NP)=-TEMP - ZMAT(IQ+1,K-NP)=-TEMP - 70 ZMAT(K,K-NP)=TEMP + IF (NPT >= N+NP) THEN + DO K=2*NP,NPT + IW=(DBLE(K-NP)-HALF)/DBLE(N) + IP=K-NP-IW*N + IQ=IP+IW + IF (IQ > N) IQ=IQ-N + PTSID(K)=DBLE(IP)+DBLE(IQ)/DBLE(NP)+SFRAC + TEMP=ONE/(PTSAUX(1,IP)*PTSAUX(1,IQ)) + ZMAT(1,K-NP)=TEMP + ZMAT(IP+1,K-NP)=-TEMP + ZMAT(IQ+1,K-NP)=-TEMP + ZMAT(K,K-NP)=TEMP + END DO END IF NREM=NPT KOLD=1 @@ -1426,19 +1516,21 @@ SUBROUTINE RESCUE (N,NPT,XL,XU,IPRINT,MAXFUN,XBASE,XPT, ! Reorder the provisional points in the way that exchanges PTSID(KOLD) ! with PTSID(KNEW). ! - 80 DO 90 J=1,N - TEMP=BMAT(KOLD,J) - BMAT(KOLD,J)=BMAT(KNEW,J) - 90 BMAT(KNEW,J)=TEMP - DO 100 J=1,NPTM - TEMP=ZMAT(KOLD,J) - ZMAT(KOLD,J)=ZMAT(KNEW,J) - 100 ZMAT(KNEW,J)=TEMP + 80 DO J=1,N + TEMP=BMAT(KOLD,J) + BMAT(KOLD,J)=BMAT(KNEW,J) + BMAT(KNEW,J)=TEMP + END DO + DO J=1,NPTM + TEMP=ZMAT(KOLD,J) + ZMAT(KOLD,J)=ZMAT(KNEW,J) + ZMAT(KNEW,J)=TEMP + END DO PTSID(KOLD)=PTSID(KNEW) PTSID(KNEW)=ZERO W(NDIM+KNEW)=ZERO NREM=NREM-1 - IF (KNEW .NE. KOPT) THEN + IF (KNEW /= KOPT) THEN TEMP=VLAG(KOLD) VLAG(KOLD)=VLAG(KNEW) VLAG(KNEW)=TEMP @@ -1449,9 +1541,10 @@ SUBROUTINE RESCUE (N,NPT,XL,XU,IPRINT,MAXFUN,XBASE,XPT, ! The nonnegative values of W(NDIM+K) are required in the search below. ! CALL UPDATE (N,NPT,BMAT,ZMAT,NDIM,VLAG,BETA,DENOM,KNEW,W) - IF (NREM .EQ. 0) GOTO 350 - DO 110 K=1,NPT - 110 W(NDIM+K)=DABS(W(NDIM+K)) + IF (NREM == 0) GOTO 350 + DO K=1,NPT + W(NDIM+K)=DABS(W(NDIM+K)) + END DO END IF ! ! Pick the index KNEW of an original interpolation point that has not @@ -1459,68 +1552,79 @@ SUBROUTINE RESCUE (N,NPT,XL,XU,IPRINT,MAXFUN,XBASE,XPT, ! attention to the closeness to XOPT and to previous tries with KNEW. ! 120 DSQMIN=ZERO - DO 130 K=1,NPT - IF (W(NDIM+K) .GT. ZERO) THEN - IF (DSQMIN .EQ. ZERO .OR. W(NDIM+K) .LT. DSQMIN) THEN - KNEW=K - DSQMIN=W(NDIM+K) - END IF - END IF - 130 CONTINUE - IF (DSQMIN .EQ. ZERO) GOTO 260 + DO K=1,NPT + IF (W(NDIM+K) > ZERO) THEN + IF (DSQMIN == ZERO .OR. W(NDIM+K) < DSQMIN) THEN + KNEW=K + DSQMIN=W(NDIM+K) + END IF + END IF + END DO + IF (DSQMIN == ZERO) GOTO 260 ! ! Form the W-vector of the chosen original interpolation point. ! - DO 140 J=1,N - 140 W(NPT+J)=XPT(KNEW,J) - DO 160 K=1,NPT + DO J=1,N + W(NPT+J)=XPT(KNEW,J) + END DO + DO K=1,NPT SUM=ZERO - IF (K .EQ. KOPT) THEN + IF (K == KOPT) THEN CONTINUE - ELSE IF (PTSID(K) .EQ. ZERO) THEN - DO 150 J=1,N - 150 SUM=SUM+W(NPT+J)*XPT(K,J) + ELSE IF (PTSID(K) == ZERO) THEN + DO J=1,N + SUM=SUM+W(NPT+J)*XPT(K,J) + END DO ELSE IP=PTSID(K) - IF (IP .GT. 0) SUM=W(NPT+IP)*PTSAUX(1,IP) - IQ=DFLOAT(NP)*PTSID(K)-DFLOAT(IP*NP) - IF (IQ .GT. 0) THEN + IF (IP > 0) SUM=W(NPT+IP)*PTSAUX(1,IP) + IQ=DBLE(NP)*PTSID(K)-DBLE(IP*NP) + IF (IQ > 0) THEN IW=1 - IF (IP .EQ. 0) IW=2 + IF (IP == 0) IW=2 SUM=SUM+W(NPT+IQ)*PTSAUX(IW,IQ) END IF END IF - 160 W(K)=HALF*SUM*SUM + W(K)=HALF*SUM*SUM + END DO ! ! Calculate VLAG and BETA for the required updating of the H matrix if ! XPT(KNEW,.) is reinstated in the set of interpolation points. ! - DO 180 K=1,NPT - SUM=ZERO - DO 170 J=1,N - 170 SUM=SUM+BMAT(K,J)*W(NPT+J) - 180 VLAG(K)=SUM + DO K=1,NPT + SUM=ZERO + DO J=1,N + SUM=SUM+BMAT(K,J)*W(NPT+J) + END DO + VLAG(K)=SUM + END DO BETA=ZERO - DO 200 J=1,NPTM - SUM=ZERO - DO 190 K=1,NPT - 190 SUM=SUM+ZMAT(K,J)*W(K) - BETA=BETA-SUM*SUM - DO 200 K=1,NPT - 200 VLAG(K)=VLAG(K)+SUM*ZMAT(K,J) + DO J=1,NPTM + SUM=ZERO + DO K=1,NPT + SUM=SUM+ZMAT(K,J)*W(K) + END DO + BETA=BETA-SUM*SUM + DO K=1,NPT + VLAG(K)=VLAG(K)+SUM*ZMAT(K,J) + END DO + END DO BSUM=ZERO DISTSQ=ZERO - DO 230 J=1,N - SUM=ZERO - DO 210 K=1,NPT - 210 SUM=SUM+BMAT(K,J)*W(K) - JP=J+NPT - BSUM=BSUM+SUM*W(JP) - DO 220 IP=NPT+1,NDIM - 220 SUM=SUM+BMAT(IP,J)*W(IP) - BSUM=BSUM+SUM*W(JP) - VLAG(JP)=SUM - 230 DISTSQ=DISTSQ+XPT(KNEW,J)**2 + DO J=1,N + SUM=ZERO + DO K=1,NPT + SUM=SUM+BMAT(K,J)*W(K) + END DO + JP=J+NPT + BSUM=BSUM+SUM*W(JP) + DO IP=NPT+1,NDIM + SUM=SUM+BMAT(IP,J)*W(IP) + END DO + BSUM=BSUM+SUM*W(JP) + VLAG(JP)=SUM + DISTSQ=DISTSQ+XPT(KNEW,J)**2 + END DO BETA=HALF*DISTSQ*DISTSQ+BETA-BSUM VLAG(KOPT)=VLAG(KOPT)+ONE ! @@ -1531,19 +1635,21 @@ SUBROUTINE RESCUE (N,NPT,XL,XU,IPRINT,MAXFUN,XBASE,XPT, ! DENOM=ZERO VLMXSQ=ZERO - DO 250 K=1,NPT - IF (PTSID(K) .NE. ZERO) THEN - HDIAG=ZERO - DO 240 J=1,NPTM - 240 HDIAG=HDIAG+ZMAT(K,J)**2 - DEN=BETA*HDIAG+VLAG(K)**2 - IF (DEN .GT. DENOM) THEN - KOLD=K - DENOM=DEN - END IF - END IF - 250 VLMXSQ=DMAX1(VLMXSQ,VLAG(K)**2) - IF (DENOM .LE. 1.0D-2*VLMXSQ) THEN + DO K=1,NPT + IF (PTSID(K) /= ZERO) THEN + HDIAG=ZERO + DO J=1,NPTM + HDIAG=HDIAG+ZMAT(K,J)**2 + END DO + DEN=BETA*HDIAG+VLAG(K)**2 + IF (DEN > DENOM) THEN + KOLD=K + DENOM=DEN + END IF + END IF + VLMXSQ=DMAX1(VLMXSQ,VLAG(K)**2) + END DO + IF (DENOM <= 1.0D-2*VLMXSQ) THEN W(NDIM+KNEW)=-W(NDIM+KNEW)-WINC GOTO 120 END IF @@ -1557,112 +1663,116 @@ SUBROUTINE RESCUE (N,NPT,XL,XU,IPRINT,MAXFUN,XBASE,XPT, ! by putting the new point in XPT(KPT,.) and by setting PQ(KPT) to zero, ! except that a RETURN occurs if MAXFUN prohibits another value of F. ! - 260 DO 340 KPT=1,NPT - IF (PTSID(KPT) .EQ. ZERO) GOTO 340 - IF (NF .GE. MAXFUN) THEN - NF=-1 - GOTO 350 - END IF - IH=0 - DO 270 J=1,N - W(J)=XPT(KPT,J) - XPT(KPT,J)=ZERO - TEMP=PQ(KPT)*W(J) - DO 270 I=1,J - IH=IH+1 - 270 HQ(IH)=HQ(IH)+TEMP*W(I) - PQ(KPT)=ZERO - IP=PTSID(KPT) - IQ=DFLOAT(NP)*PTSID(KPT)-DFLOAT(IP*NP) - IF (IP .GT. 0) THEN - XP=PTSAUX(1,IP) - XPT(KPT,IP)=XP - END IF - IF (IQ .GT. 0) THEN - XQ=PTSAUX(1,IQ) - IF (IP .EQ. 0) XQ=PTSAUX(2,IQ) - XPT(KPT,IQ)=XQ - END IF + 260 DO KPT=1,NPT + IF (PTSID(KPT) == ZERO) CYCLE + IF (NF >= MAXFUN) THEN + NF=-1 + GOTO 350 + END IF + IH=0 + DO J=1,N + W(J)=XPT(KPT,J) + XPT(KPT,J)=ZERO + TEMP=PQ(KPT)*W(J) + DO I=1,J + IH=IH+1 + HQ(IH)=HQ(IH)+TEMP*W(I) + END DO + END DO + PQ(KPT)=ZERO + IP=PTSID(KPT) + IQ=DBLE(NP)*PTSID(KPT)-DBLE(IP*NP) + IF (IP > 0) THEN + XP=PTSAUX(1,IP) + XPT(KPT,IP)=XP + END IF + IF (IQ > 0) THEN + XQ=PTSAUX(1,IQ) + IF (IP == 0) XQ=PTSAUX(2,IQ) + XPT(KPT,IQ)=XQ + END IF ! ! Set VQUAD to the value of the current model at the new point. ! - VQUAD=FBASE - IF (IP .GT. 0) THEN - IHP=(IP+IP*IP)/2 - VQUAD=VQUAD+XP*(GOPT(IP)+HALF*XP*HQ(IHP)) - END IF - IF (IQ .GT. 0) THEN - IHQ=(IQ+IQ*IQ)/2 - VQUAD=VQUAD+XQ*(GOPT(IQ)+HALF*XQ*HQ(IHQ)) - IF (IP .GT. 0) THEN - IW=MAX0(IHP,IHQ)-IABS(IP-IQ) - VQUAD=VQUAD+XP*XQ*HQ(IW) - END IF - END IF - DO 280 K=1,NPT - TEMP=ZERO - IF (IP .GT. 0) TEMP=TEMP+XP*XPT(K,IP) - IF (IQ .GT. 0) TEMP=TEMP+XQ*XPT(K,IQ) - 280 VQUAD=VQUAD+HALF*PQ(K)*TEMP*TEMP + VQUAD=FBASE + IF (IP > 0) THEN + IHP=(IP+IP*IP)/2 + VQUAD=VQUAD+XP*(GOPT(IP)+HALF*XP*HQ(IHP)) + END IF + IF (IQ > 0) THEN + IHQ=(IQ+IQ*IQ)/2 + VQUAD=VQUAD+XQ*(GOPT(IQ)+HALF*XQ*HQ(IHQ)) + IF (IP > 0) THEN + IW=MAX0(IHP,IHQ)-IABS(IP-IQ) + VQUAD=VQUAD+XP*XQ*HQ(IW) + END IF + END IF + DO K=1,NPT + TEMP=ZERO + IF (IP > 0) TEMP=TEMP+XP*XPT(K,IP) + IF (IQ > 0) TEMP=TEMP+XQ*XPT(K,IQ) + VQUAD=VQUAD+HALF*PQ(K)*TEMP*TEMP + END DO ! ! Calculate F at the new interpolation point, and set DIFF to the factor ! that is going to multiply the KPT-th Lagrange function when the model ! is updated to provide interpolation to the new function value. ! - DO 290 I=1,N - W(I)=DMIN1(DMAX1(XL(I),XBASE(I)+XPT(KPT,I)),XU(I)) - IF (XPT(KPT,I) .EQ. SL(I)) W(I)=XL(I) - IF (XPT(KPT,I) .EQ. SU(I)) W(I)=XU(I) - 290 CONTINUE - NF=NF+1 - CALL CALFUN (N,W,F) - IF (IPRINT .EQ. 3) THEN - PRINT 300, NF,F,(W(I),I=1,N) - 300 FORMAT (/4X,'Function number',I6,' F =',1PD18.10, - 1 ' The corresponding X is:'/(2X,5D15.6)) - END IF - FVAL(KPT)=F - IF (F .LT. FVAL(KOPT)) KOPT=KPT - DIFF=F-VQUAD + DO I=1,N + W(I)=DMIN1(DMAX1(XL(I),XBASE(I)+XPT(KPT,I)),XU(I)) + IF (XPT(KPT,I) == SL(I)) W(I)=XL(I) + IF (XPT(KPT,I) == SU(I)) W(I)=XU(I) + END DO + NF=NF+1 + CALL CALFUN (N,W,F) + IF (IPRINT == 3) THEN + PRINT 300, NF,F,(W(I),I=1,N) + 300 FORMAT (/4X,'Function number',I6,' F =',1PD18.10,' The corresponding X is:'/(2X,5D15.6)) + END IF + FVAL(KPT)=F + IF (F < FVAL(KOPT)) KOPT=KPT + DIFF=F-VQUAD ! ! Update the quadratic model. The RETURN from the subroutine occurs when ! all the new interpolation points are included in the model. ! - DO 310 I=1,N - 310 GOPT(I)=GOPT(I)+DIFF*BMAT(KPT,I) - DO 330 K=1,NPT - SUM=ZERO - DO 320 J=1,NPTM - 320 SUM=SUM+ZMAT(K,J)*ZMAT(KPT,J) - TEMP=DIFF*SUM - IF (PTSID(K) .EQ. ZERO) THEN - PQ(K)=PQ(K)+TEMP - ELSE - IP=PTSID(K) - IQ=DFLOAT(NP)*PTSID(K)-DFLOAT(IP*NP) - IHQ=(IQ*IQ+IQ)/2 - IF (IP .EQ. 0) THEN - HQ(IHQ)=HQ(IHQ)+TEMP*PTSAUX(2,IQ)**2 - ELSE - IHP=(IP*IP+IP)/2 - HQ(IHP)=HQ(IHP)+TEMP*PTSAUX(1,IP)**2 - IF (IQ .GT. 0) THEN - HQ(IHQ)=HQ(IHQ)+TEMP*PTSAUX(1,IQ)**2 - IW=MAX0(IHP,IHQ)-IABS(IQ-IP) - HQ(IW)=HQ(IW)+TEMP*PTSAUX(1,IP)*PTSAUX(1,IQ) - END IF - END IF - END IF - 330 CONTINUE - PTSID(KPT)=ZERO - 340 CONTINUE + DO I=1,N + GOPT(I)=GOPT(I)+DIFF*BMAT(KPT,I) + END DO + DO K=1,NPT + SUM=ZERO + DO J=1,NPTM + SUM=SUM+ZMAT(K,J)*ZMAT(KPT,J) + END DO + TEMP=DIFF*SUM + IF (PTSID(K) == ZERO) THEN + PQ(K)=PQ(K)+TEMP + ELSE + IP=PTSID(K) + IQ=DBLE(NP)*PTSID(K)-DBLE(IP*NP) + IHQ=(IQ*IQ+IQ)/2 + IF (IP == 0) THEN + HQ(IHQ)=HQ(IHQ)+TEMP*PTSAUX(2,IQ)**2 + ELSE + IHP=(IP*IP+IP)/2 + HQ(IHP)=HQ(IHP)+TEMP*PTSAUX(1,IP)**2 + IF (IQ > 0) THEN + HQ(IHQ)=HQ(IHQ)+TEMP*PTSAUX(1,IQ)**2 + IW=MAX0(IHP,IHQ)-IABS(IQ-IP) + HQ(IW)=HQ(IW)+TEMP*PTSAUX(1,IP)*PTSAUX(1,IQ) + END IF + END IF + END IF + END DO + PTSID(KPT)=ZERO + END DO 350 RETURN END SUBROUTINE RESCUE SUBROUTINE TRSBOX (N,NPT,XPT,XOPT,GOPT,HQ,PQ,SL,SU,DELTA, 1 XNEW,D,GNEW,XBDI,S,HS,HRED,DSQ,CRVMIN) - IMPLICIT REAL*8 (A-H,O-Z) + IMPLICIT real(dp) (A-H,O-Z) DIMENSION XPT(NPT,*),XOPT(*),GOPT(*),HQ(*),PQ(*),SL(*),SU(*), 1 XNEW(*),D(*),GNEW(*),XBDI(*),S(*),HS(*),HRED(*) ! @@ -1721,16 +1831,17 @@ SUBROUTINE TRSBOX (N,NPT,XPT,XOPT,GOPT,HQ,PQ,SL,SU,DELTA, ITERC=0 NACT=0 SQSTP=ZERO - DO 10 I=1,N - XBDI(I)=ZERO - IF (XOPT(I) .LE. SL(I)) THEN - IF (GOPT(I) .GE. ZERO) XBDI(I)=ONEMIN - ELSE IF (XOPT(I) .GE. SU(I)) THEN - IF (GOPT(I) .LE. ZERO) XBDI(I)=ONE - END IF - IF (XBDI(I) .NE. ZERO) NACT=NACT+1 - D(I)=ZERO - 10 GNEW(I)=GOPT(I) + DO I=1,N + XBDI(I)=ZERO + IF (XOPT(I) <= SL(I)) THEN + IF (GOPT(I) >= ZERO) XBDI(I)=ONEMIN + ELSE IF (XOPT(I) >= SU(I)) THEN + IF (GOPT(I) <= ZERO) XBDI(I)=ONE + END IF + IF (XBDI(I) /= ZERO) NACT=NACT+1 + D(I)=ZERO + GNEW(I)=GOPT(I) + END DO DELSQ=DELTA*DELTA QRED=ZERO CRVMIN=ONEMIN @@ -1743,21 +1854,22 @@ SUBROUTINE TRSBOX (N,NPT,XPT,XOPT,GOPT,HQ,PQ,SL,SU,DELTA, ! 20 BETA=ZERO 30 STEPSQ=ZERO - DO 40 I=1,N - IF (XBDI(I) .NE. ZERO) THEN - S(I)=ZERO - ELSE IF (BETA .EQ. ZERO) THEN - S(I)=-GNEW(I) - ELSE - S(I)=BETA*S(I)-GNEW(I) - END IF - 40 STEPSQ=STEPSQ+S(I)**2 - IF (STEPSQ .EQ. ZERO) GOTO 190 - IF (BETA .EQ. ZERO) THEN + DO I=1,N + IF (XBDI(I) /= ZERO) THEN + S(I)=ZERO + ELSE IF (BETA == ZERO) THEN + S(I)=-GNEW(I) + ELSE + S(I)=BETA*S(I)-GNEW(I) + END IF + STEPSQ=STEPSQ+S(I)**2 + END DO + IF (STEPSQ == ZERO) GOTO 190 + IF (BETA == ZERO) THEN GREDSQ=STEPSQ ITERMAX=ITERC+N-NACT END IF - IF (GREDSQ*DELSQ .LE. 1.0D-4*QRED*QRED) GO TO 190 + IF (GREDSQ*DELSQ <= 1.0D-4*QRED*QRED) GO TO 190 ! ! Multiply the search direction by the second derivative matrix of Q and ! calculate some scalars for the choice of steplength. Then set BLEN to @@ -1768,22 +1880,22 @@ SUBROUTINE TRSBOX (N,NPT,XPT,XOPT,GOPT,HQ,PQ,SL,SU,DELTA, 50 RESID=DELSQ DS=ZERO SHS=ZERO - DO 60 I=1,N - IF (XBDI(I) .EQ. ZERO) THEN - RESID=RESID-D(I)**2 - DS=DS+S(I)*D(I) - SHS=SHS+S(I)*HS(I) - END IF - 60 CONTINUE - IF (RESID .LE. ZERO) GOTO 90 + DO I=1,N + IF (XBDI(I) == ZERO) THEN + RESID=RESID-D(I)**2 + DS=DS+S(I)*D(I) + SHS=SHS+S(I)*HS(I) + END IF + END DO + IF (RESID <= ZERO) GOTO 90 TEMP=DSQRT(STEPSQ*RESID+DS*DS) - IF (DS .LT. ZERO) THEN + IF (DS < ZERO) THEN BLEN=(TEMP-DS)/STEPSQ ELSE BLEN=RESID/(TEMP+DS) END IF STPLEN=BLEN - IF (SHS .GT. ZERO) THEN + IF (SHS > ZERO) THEN STPLEN=DMIN1(BLEN,GREDSQ/SHS) END IF @@ -1792,58 +1904,59 @@ SUBROUTINE TRSBOX (N,NPT,XPT,XOPT,GOPT,HQ,PQ,SL,SU,DELTA, ! letting IACT be the index of the new constrained variable. ! IACT=0 - DO 70 I=1,N - IF (S(I) .NE. ZERO) THEN - XSUM=XOPT(I)+D(I) - IF (S(I) .GT. ZERO) THEN - TEMP=(SU(I)-XSUM)/S(I) - ELSE - TEMP=(SL(I)-XSUM)/S(I) - END IF - IF (TEMP .LT. STPLEN) THEN - STPLEN=TEMP - IACT=I - END IF - END IF - 70 CONTINUE + DO I=1,N + IF (S(I) /= ZERO) THEN + XSUM=XOPT(I)+D(I) + IF (S(I) > ZERO) THEN + TEMP=(SU(I)-XSUM)/S(I) + ELSE + TEMP=(SL(I)-XSUM)/S(I) + END IF + IF (TEMP < STPLEN) THEN + STPLEN=TEMP + IACT=I + END IF + END IF + END DO ! ! Update CRVMIN, GNEW and D. Set SDEC to the decrease that occurs in Q. ! SDEC=ZERO - IF (STPLEN .GT. ZERO) THEN + IF (STPLEN > ZERO) THEN ITERC=ITERC+1 TEMP=SHS/STEPSQ - IF (IACT .EQ. 0 .AND. TEMP .GT. ZERO) THEN + IF (IACT == 0 .AND. TEMP > ZERO) THEN CRVMIN=DMIN1(CRVMIN,TEMP) - IF (CRVMIN .EQ. ONEMIN) CRVMIN=TEMP + IF (CRVMIN == ONEMIN) CRVMIN=TEMP END IF GGSAV=GREDSQ GREDSQ=ZERO - DO 80 I=1,N - GNEW(I)=GNEW(I)+STPLEN*HS(I) - IF (XBDI(I) .EQ. ZERO) GREDSQ=GREDSQ+GNEW(I)**2 - 80 D(I)=D(I)+STPLEN*S(I) + DO I=1,N + GNEW(I)=GNEW(I)+STPLEN*HS(I) + IF (XBDI(I) == ZERO) GREDSQ=GREDSQ+GNEW(I)**2 + D(I)=D(I)+STPLEN*S(I) + END DO SDEC=DMAX1(STPLEN*(GGSAV-HALF*STPLEN*SHS),ZERO) QRED=QRED+SDEC END IF ! ! Restart the conjugate gradient method if it has hit a new bound. ! - IF (IACT .GT. 0) THEN + IF (IACT > 0) THEN NACT=NACT+1 XBDI(IACT)=ONE - IF (S(IACT) .LT. ZERO) XBDI(IACT)=ONEMIN + IF (S(IACT) < ZERO) XBDI(IACT)=ONEMIN DELSQ=DELSQ-D(IACT)**2 - IF (DELSQ .LE. ZERO) GOTO 90 + IF (DELSQ <= ZERO) GOTO 90 GOTO 20 END IF ! ! If STPLEN is less than BLEN, then either apply another conjugate ! gradient iteration or RETURN. ! - IF (STPLEN .LT. BLEN) THEN - IF (ITERC .EQ. ITERMAX) GOTO 190 - IF (SDEC .LE. 0.01D0*QRED) GOTO 190 + IF (STPLEN < BLEN) THEN + IF (ITERC == ITERMAX) GOTO 190 + IF (SDEC <= 0.01D0*QRED) GOTO 190 BETA=GREDSQ/GGSAV GOTO 30 END IF @@ -1853,20 +1966,20 @@ SUBROUTINE TRSBOX (N,NPT,XPT,XOPT,GOPT,HQ,PQ,SL,SU,DELTA, ! and by multiplying the reduced D by the second derivative matrix of ! Q, where S holds the reduced D in the call of GGMULT. ! - 100 IF (NACT .GE. N-1) GOTO 190 + 100 IF (NACT >= N-1) GOTO 190 DREDSQ=ZERO DREDG=ZERO GREDSQ=ZERO - DO 110 I=1,N - IF (XBDI(I) .EQ. ZERO) THEN - DREDSQ=DREDSQ+D(I)**2 - DREDG=DREDG+D(I)*GNEW(I) - GREDSQ=GREDSQ+GNEW(I)**2 - S(I)=D(I) - ELSE - S(I)=ZERO - END IF - 110 CONTINUE + DO I=1,N + IF (XBDI(I) == ZERO) THEN + DREDSQ=DREDSQ+D(I)**2 + DREDG=DREDG+D(I)*GNEW(I) + GREDSQ=GREDSQ+GNEW(I)**2 + S(I)=D(I) + ELSE + S(I)=ZERO + END IF + END DO ITCSAV=ITERC GOTO 210 ! @@ -1875,15 +1988,15 @@ SUBROUTINE TRSBOX (N,NPT,XPT,XOPT,GOPT,HQ,PQ,SL,SU,DELTA, ! 120 ITERC=ITERC+1 TEMP=GREDSQ*DREDSQ-DREDG*DREDG - IF (TEMP .LE. 1.0D-4*QRED*QRED) GOTO 190 + IF (TEMP <= 1.0D-4*QRED*QRED) GOTO 190 TEMP=DSQRT(TEMP) - DO 130 I=1,N - IF (XBDI(I) .EQ. ZERO) THEN - S(I)=(DREDG*D(I)-DREDSQ*GNEW(I))/TEMP - ELSE - S(I)=ZERO - END IF - 130 CONTINUE + DO I=1,N + IF (XBDI(I) == ZERO) THEN + S(I)=(DREDG*D(I)-DREDSQ*GNEW(I))/TEMP + ELSE + S(I)=ZERO + END IF + END DO SREDG=-TEMP ! ! By considering the simple bounds on the variables, calculate an upper @@ -1893,41 +2006,41 @@ SUBROUTINE TRSBOX (N,NPT,XPT,XOPT,GOPT,HQ,PQ,SL,SU,DELTA, ! ANGBD=ONE IACT=0 - DO 140 I=1,N - IF (XBDI(I) .EQ. ZERO) THEN - TEMPA=XOPT(I)+D(I)-SL(I) - TEMPB=SU(I)-XOPT(I)-D(I) - IF (TEMPA .LE. ZERO) THEN - NACT=NACT+1 - XBDI(I)=ONEMIN - GOTO 100 - ELSE IF (TEMPB .LE. ZERO) THEN - NACT=NACT+1 - XBDI(I)=ONE - GOTO 100 - END IF - RATIO=ONE - SSQ=D(I)**2+S(I)**2 - TEMP=SSQ-(XOPT(I)-SL(I))**2 - IF (TEMP .GT. ZERO) THEN - TEMP=DSQRT(TEMP)-S(I) - IF (ANGBD*TEMP .GT. TEMPA) THEN - ANGBD=TEMPA/TEMP - IACT=I - XSAV=ONEMIN - END IF - END IF - TEMP=SSQ-(SU(I)-XOPT(I))**2 - IF (TEMP .GT. ZERO) THEN - TEMP=DSQRT(TEMP)+S(I) - IF (ANGBD*TEMP .GT. TEMPB) THEN - ANGBD=TEMPB/TEMP - IACT=I - XSAV=ONE - END IF - END IF - END IF - 140 CONTINUE + DO I=1,N + IF (XBDI(I) == ZERO) THEN + TEMPA=XOPT(I)+D(I)-SL(I) + TEMPB=SU(I)-XOPT(I)-D(I) + IF (TEMPA <= ZERO) THEN + NACT=NACT+1 + XBDI(I)=ONEMIN + GOTO 100 + ELSE IF (TEMPB <= ZERO) THEN + NACT=NACT+1 + XBDI(I)=ONE + GOTO 100 + END IF + RATIO=ONE + SSQ=D(I)**2+S(I)**2 + TEMP=SSQ-(XOPT(I)-SL(I))**2 + IF (TEMP > ZERO) THEN + TEMP=DSQRT(TEMP)-S(I) + IF (ANGBD*TEMP > TEMPA) THEN + ANGBD=TEMPA/TEMP + IACT=I + XSAV=ONEMIN + END IF + END IF + TEMP=SSQ-(SU(I)-XOPT(I))**2 + IF (TEMP > ZERO) THEN + TEMP=DSQRT(TEMP)+S(I) + IF (ANGBD*TEMP > TEMPB) THEN + ANGBD=TEMPB/TEMP + IACT=I + XSAV=ONE + END IF + END IF + END IF + END DO ! ! Calculate HHD and some curvatures for the alternative iteration. ! @@ -1935,13 +2048,13 @@ SUBROUTINE TRSBOX (N,NPT,XPT,XOPT,GOPT,HQ,PQ,SL,SU,DELTA, 150 SHS=ZERO DHS=ZERO DHD=ZERO - DO 160 I=1,N - IF (XBDI(I) .EQ. ZERO) THEN - SHS=SHS+S(I)*HS(I) - DHS=DHS+D(I)*HS(I) - DHD=DHD+D(I)*HRED(I) - END IF - 160 CONTINUE + DO I=1,N + IF (XBDI(I) == ZERO) THEN + SHS=SHS+S(I)*HS(I) + DHS=DHS+D(I)*HS(I) + DHD=DHD+D(I)*HRED(I) + END IF + END DO ! ! Seek the greatest reduction in Q for a range of equally spaced values ! of ANGT in [0,ANGBD], where ANGT is the tangent of half the angle of @@ -1951,33 +2064,34 @@ SUBROUTINE TRSBOX (N,NPT,XPT,XOPT,GOPT,HQ,PQ,SL,SU,DELTA, ISAV=0 REDSAV=ZERO IU=17.0D0*ANGBD+3.1D0 - DO 170 I=1,IU - ANGT=ANGBD*DFLOAT(I)/DFLOAT(IU) - STH=(ANGT+ANGT)/(ONE+ANGT*ANGT) - TEMP=SHS+ANGT*(ANGT*DHD-DHS-DHS) - REDNEW=STH*(ANGT*DREDG-SREDG-HALF*STH*TEMP) - IF (REDNEW .GT. REDMAX) THEN - REDMAX=REDNEW - ISAV=I - RDPREV=REDSAV - ELSE IF (I .EQ. ISAV+1) THEN - RDNEXT=REDNEW - END IF - 170 REDSAV=REDNEW + DO I=1,IU + ANGT=ANGBD*DBLE(I)/DBLE(IU) + STH=(ANGT+ANGT)/(ONE+ANGT*ANGT) + TEMP=SHS+ANGT*(ANGT*DHD-DHS-DHS) + REDNEW=STH*(ANGT*DREDG-SREDG-HALF*STH*TEMP) + IF (REDNEW > REDMAX) THEN + REDMAX=REDNEW + ISAV=I + RDPREV=REDSAV + ELSE IF (I == ISAV+1) THEN + RDNEXT=REDNEW + END IF + REDSAV=REDNEW + END DO ! ! Return if the reduction is zero. Otherwise, set the sine and cosine ! of the angle of the alternative iteration, and calculate SDEC. ! - IF (ISAV .EQ. 0) GOTO 190 - IF (ISAV .LT. IU) THEN + IF (ISAV == 0) GOTO 190 + IF (ISAV < IU) THEN TEMP=(RDNEXT-RDPREV)/(REDMAX+REDMAX-RDPREV-RDNEXT) - ANGT=ANGBD*(DFLOAT(ISAV)+HALF*TEMP)/DFLOAT(IU) + ANGT=ANGBD*(DBLE(ISAV)+HALF*TEMP)/DBLE(IU) END IF CTH=(ONE-ANGT*ANGT)/(ONE+ANGT*ANGT) STH=(ANGT+ANGT)/(ONE+ANGT*ANGT) TEMP=SHS+ANGT*(ANGT*DHD-DHS-DHS) SDEC=STH*(ANGT*DREDG-SREDG-HALF*STH*TEMP) - IF (SDEC .LE. ZERO) GOTO 190 + IF (SDEC <= ZERO) GOTO 190 ! ! Update GNEW, D and HRED. If the angle of the alternative iteration ! is restricted by a bound on a free variable, that variable is fixed @@ -1985,16 +2099,17 @@ SUBROUTINE TRSBOX (N,NPT,XPT,XOPT,GOPT,HQ,PQ,SL,SU,DELTA, ! DREDG=ZERO GREDSQ=ZERO - DO 180 I=1,N - GNEW(I)=GNEW(I)+(CTH-ONE)*HRED(I)+STH*HS(I) - IF (XBDI(I) .EQ. ZERO) THEN - D(I)=CTH*D(I)+STH*S(I) - DREDG=DREDG+D(I)*GNEW(I) - GREDSQ=GREDSQ+GNEW(I)**2 - END IF - 180 HRED(I)=CTH*HRED(I)+STH*HS(I) + DO I=1,N + GNEW(I)=GNEW(I)+(CTH-ONE)*HRED(I)+STH*HS(I) + IF (XBDI(I) == ZERO) THEN + D(I)=CTH*D(I)+STH*S(I) + DREDG=DREDG+D(I)*GNEW(I) + GREDSQ=GREDSQ+GNEW(I)**2 + END IF + HRED(I)=CTH*HRED(I)+STH*HS(I) + END DO QRED=QRED+SDEC - IF (IACT .GT. 0 .AND. ISAV .EQ. IU) THEN + IF (IACT > 0 .AND. ISAV == IU) THEN NACT=NACT+1 XBDI(IACT)=XSAV GOTO 100 @@ -2003,14 +2118,15 @@ SUBROUTINE TRSBOX (N,NPT,XPT,XOPT,GOPT,HQ,PQ,SL,SU,DELTA, ! If SDEC is sufficiently small, then RETURN after setting XNEW to ! XOPT+D, giving careful attention to the bounds. ! - IF (SDEC .GT. 0.01D0*QRED) GOTO 120 + IF (SDEC > 0.01D0*QRED) GOTO 120 190 DSQ=ZERO - DO 200 I=1,N - XNEW(I)=DMAX1(DMIN1(XOPT(I)+D(I),SU(I)),SL(I)) - IF (XBDI(I) .EQ. ONEMIN) XNEW(I)=SL(I) - IF (XBDI(I) .EQ. ONE) XNEW(I)=SU(I) - D(I)=XNEW(I)-XOPT(I) - 200 DSQ=DSQ+D(I)**2 + DO I=1,N + XNEW(I)=DMAX1(DMIN1(XOPT(I)+D(I),SU(I)),SL(I)) + IF (XBDI(I) == ONEMIN) XNEW(I)=SL(I) + IF (XBDI(I) == ONE) XNEW(I)=SU(I) + D(I)=XNEW(I)-XOPT(I) + DSQ=DSQ+D(I)**2 + END DO RETURN ! The following instructions multiply the current S-vector by the second @@ -2019,33 +2135,37 @@ SUBROUTINE TRSBOX (N,NPT,XPT,XOPT,GOPT,HQ,PQ,SL,SU,DELTA, ! they can be regarded as an external subroutine. ! 210 IH=0 - DO 220 J=1,N - HS(J)=ZERO - DO 220 I=1,J - IH=IH+1 - IF (I .LT. J) HS(J)=HS(J)+HQ(IH)*S(I) - 220 HS(I)=HS(I)+HQ(IH)*S(J) - DO 250 K=1,NPT - IF (PQ(K) .NE. ZERO) THEN - TEMP=ZERO - DO 230 J=1,N - 230 TEMP=TEMP+XPT(K,J)*S(J) - TEMP=TEMP*PQ(K) - DO 240 I=1,N - 240 HS(I)=HS(I)+TEMP*XPT(K,I) - END IF - 250 CONTINUE - IF (CRVMIN .NE. ZERO) GOTO 50 - IF (ITERC .GT. ITCSAV) GOTO 150 - DO 260 I=1,N - 260 HRED(I)=HS(I) + DO J=1,N + HS(J)=ZERO + DO I=1,J + IH=IH+1 + IF (I < J) HS(J)=HS(J)+HQ(IH)*S(I) + HS(I)=HS(I)+HQ(IH)*S(J) + END DO + END DO + DO K=1,NPT + IF (PQ(K) /= ZERO) THEN + TEMP=ZERO + DO J=1,N + TEMP=TEMP+XPT(K,J)*S(J) + END DO + TEMP=TEMP*PQ(K) + DO I=1,N + HS(I)=HS(I)+TEMP*XPT(K,I) + END DO + END IF + END DO + IF (CRVMIN /= ZERO) GOTO 50 + IF (ITERC > ITCSAV) GOTO 150 + DO I=1,N + HRED(I)=HS(I) + END DO GOTO 120 END SUBROUTINE TRSBOX - SUBROUTINE UPDATE (N,NPT,BMAT,ZMAT,NDIM,VLAG,BETA,DENOM, - 1 KNEW,W) - IMPLICIT REAL*8 (A-H,O-Z) + SUBROUTINE UPDATE (N,NPT,BMAT,ZMAT,NDIM,VLAG,BETA,DENOM,KNEW,W) + IMPLICIT real(dp) (A-H,O-Z) DIMENSION BMAT(NDIM,*),ZMAT(NPT,*),VLAG(*),W(*) ! ! The arrays BMAT and ZMAT are updated, as required by the new position @@ -2063,33 +2183,36 @@ SUBROUTINE UPDATE (N,NPT,BMAT,ZMAT,NDIM,VLAG,BETA,DENOM, ZERO=0.0D0 NPTM=NPT-N-1 ZTEST=ZERO - DO 10 K=1,NPT - DO 10 J=1,NPTM - 10 ZTEST=DMAX1(ZTEST,DABS(ZMAT(K,J))) + DO K=1,NPT + DO J=1,NPTM + ZTEST=DMAX1(ZTEST,DABS(ZMAT(K,J))) + END DO + END DO ZTEST=1.0D-20*ZTEST ! ! Apply the rotations that put zeros in the KNEW-th row of ZMAT. ! JL=1 - DO 30 J=2,NPTM - IF (DABS(ZMAT(KNEW,J)) .GT. ZTEST) THEN - TEMP=DSQRT(ZMAT(KNEW,1)**2+ZMAT(KNEW,J)**2) - TEMPA=ZMAT(KNEW,1)/TEMP - TEMPB=ZMAT(KNEW,J)/TEMP - DO 20 I=1,NPT - TEMP=TEMPA*ZMAT(I,1)+TEMPB*ZMAT(I,J) - ZMAT(I,J)=TEMPA*ZMAT(I,J)-TEMPB*ZMAT(I,1) - 20 ZMAT(I,1)=TEMP - END IF - ZMAT(KNEW,J)=ZERO - 30 CONTINUE + DO J=2,NPTM + IF (DABS(ZMAT(KNEW,J)) > ZTEST) THEN + TEMP=DSQRT(ZMAT(KNEW,1)**2+ZMAT(KNEW,J)**2) + TEMPA=ZMAT(KNEW,1)/TEMP + TEMPB=ZMAT(KNEW,J)/TEMP + DO I=1,NPT + TEMP=TEMPA*ZMAT(I,1)+TEMPB*ZMAT(I,J) + ZMAT(I,J)=TEMPA*ZMAT(I,J)-TEMPB*ZMAT(I,1) + ZMAT(I,1)=TEMP + END DO + END IF + ZMAT(KNEW,J)=ZERO + END DO ! Put the first NPT components of the KNEW-th column of HLAG into W, ! and calculate the parameters of the updating formula. - DO 40 I=1,NPT - W(I)=ZMAT(KNEW,1)*ZMAT(I,1) - 40 CONTINUE + DO I=1,NPT + W(I)=ZMAT(KNEW,1)*ZMAT(I,1) + END DO ALPHA=W(KNEW) TAU=VLAG(KNEW) VLAG(KNEW)=VLAG(KNEW)-ONE @@ -2099,20 +2222,22 @@ SUBROUTINE UPDATE (N,NPT,BMAT,ZMAT,NDIM,VLAG,BETA,DENOM, TEMP=DSQRT(DENOM) TEMPB=ZMAT(KNEW,1)/TEMP TEMPA=TAU/TEMP - DO 50 I=1,NPT - 50 ZMAT(I,1)=TEMPA*ZMAT(I,1)-TEMPB*VLAG(I) + DO I=1,NPT + ZMAT(I,1)=TEMPA*ZMAT(I,1)-TEMPB*VLAG(I) + END DO ! Finally, update the matrix BMAT. - DO 60 J=1,N - JP=NPT+J - W(JP)=BMAT(KNEW,J) - TEMPA=(ALPHA*VLAG(JP)-TAU*W(JP))/DENOM - TEMPB=(-BETA*W(JP)-TAU*VLAG(JP))/DENOM - DO 60 I=1,JP - BMAT(I,J)=BMAT(I,J)+TEMPA*VLAG(I)+TEMPB*W(I) - IF (I .GT. NPT) BMAT(JP,I-NPT)=BMAT(I,J) - 60 CONTINUE + DO J=1,N + JP=NPT+J + W(JP)=BMAT(KNEW,J) + TEMPA=(ALPHA*VLAG(JP)-TAU*W(JP))/DENOM + TEMPB=(-BETA*W(JP)-TAU*VLAG(JP))/DENOM + DO I=1,JP + BMAT(I,J)=BMAT(I,J)+TEMPA*VLAG(I)+TEMPB*W(I) + IF (I > NPT) BMAT(JP,I-NPT)=BMAT(I,J) + END DO + END DO RETURN END SUBROUTINE UPDATE diff --git a/num/private/mod_brent.f90 b/num/private/mod_brent.f90 index 333c700fa..864e629b8 100644 --- a/num/private/mod_brent.f90 +++ b/num/private/mod_brent.f90 @@ -510,7 +510,7 @@ end function eval_local_min - real*8 function eval_brent_safe_zero ( a, b, machep, t, epsy, f, fa_in, fb_in, lrpar, rpar, lipar, ipar, ierr ) + real(dp) function eval_brent_safe_zero ( a, b, machep, t, epsy, f, fa_in, fb_in, lrpar, rpar, lipar, ipar, ierr ) !*****************************************************************************80 ! diff --git a/num/private/mod_dop853.f b/num/private/mod_dop853.f index 852f77161..690ca36a0 100644 --- a/num/private/mod_dop853.f +++ b/num/private/mod_dop853.f @@ -32,9 +32,9 @@ subroutine do_dop853( & n,fcn,x,y,xend,h,max_step_size,max_steps, & rtol,atol,itol,solout,iout,work,lwork,iwork,liwork, & lrpar,rpar,lipar,ipar,lout,idid) -c *** *** *** *** *** *** *** *** *** *** *** *** *** -c declarations -c *** *** *** *** *** *** *** *** *** *** *** *** *** +! *** *** *** *** *** *** *** *** *** *** *** *** *** +! declarations +! *** *** *** *** *** *** *** *** *** *** *** *** *** implicit real(dp) (a-h,o-z) integer, intent(in) :: n ! the dimension of the system interface @@ -56,112 +56,112 @@ subroutine do_dop853( integer, intent(out) :: idid logical arret -c *** *** *** *** *** *** *** -c setting the parameters -c *** *** *** *** *** *** *** +! *** *** *** *** *** *** *** +! setting the parameters +! *** *** *** *** *** *** *** nfcn=0 nstep=0 naccpt=0 nrejct=0 arret=.false. -c -------- nmax , the maximal number of steps ----- - if(max_steps.eq.0)then +! -------- nmax , the maximal number of steps ----- + if(max_steps == 0)then nmax=100000 else nmax=max_steps - if(nmax.le.0)then - if (lout.gt.0) write(lout,*) + if(nmax <= 0)then + if (lout >0) write(lout,*) & ' wrong input max_steps=',max_steps arret=.true. end if end if -c -------- meth coefficients of the method - if(iwork(2).eq.0)then +! -------- meth coefficients of the method + if(iwork(2) == 0)then meth=1 else meth=iwork(2) - if(meth.le.0.or.meth.ge.4)then - if (lout.gt.0) write(lout,*) + if(meth <= 0.or.meth >= 4)then + if (lout >0) write(lout,*) & ' curious input iwork(2)=',iwork(2) arret=.true. end if end if -c -------- nstiff parameter for stiffness detection +! -------- nstiff parameter for stiffness detection nstiff=iwork(4) - if (nstiff.eq.0) nstiff=1000 - if (nstiff.lt.0) nstiff=nmax+10 -c -------- nrdens number of dense output components + if (nstiff == 0) nstiff=1000 + if (nstiff <0) nstiff=nmax+10 +! -------- nrdens number of dense output components nrdens=iwork(5) - if(nrdens.lt.0.or.nrdens.gt.n)then - if (lout.gt.0) write(lout,*) + if(nrdens <0.or.nrdens >n)then + if (lout >0) write(lout,*) & ' curious input iwork(5)=',iwork(5) arret=.true. else - if(nrdens.gt.0.and.iout.lt.2)then - if (lout.gt.0) write(lout,*) + if(nrdens >0.and.iout <2)then + if (lout >0) write(lout,*) & ' warning: put iout=2 for dense output ' end if - if (nrdens.eq.n) then + if (nrdens == n) then do i=1,nrdens iwork(i+20)=i end do end if end if -c -------- uround smallest number satisfying 1.d0+uround>1.d0 - if(work(1).eq.0.d0)then +! -------- uround smallest number satisfying 1.d0+uround>1.d0 + if(work(1) == 0.d0)then uround=2.3d-16 else uround=work(1) - if(uround.le.1.d-35.or.uround.ge.1.d0)then - if (lout.gt.0) write(lout,*) + if(uround <= 1.d-35.or.uround >= 1.d0)then + if (lout >0) write(lout,*) & ' which machine do you have? your uround was:',work(1) arret=.true. end if end if -c ------- safety factor ------------- - if(work(2).eq.0.d0)then +! ------- safety factor ------------- + if(work(2) == 0.d0)then safe=0.9d0 else safe=work(2) - if(safe.ge.1.d0.or.safe.le.1.d-4)then - if (lout.gt.0) write(lout,*) + if(safe >= 1.d0.or.safe <= 1.d-4)then + if (lout >0) write(lout,*) & ' curious input for safety factor work(2)=',work(2) arret=.true. end if end if -c ------- fac1,fac2 parameters for step size selection - if(work(3).eq.0.d0)then +! ------- fac1,fac2 parameters for step size selection + if(work(3) == 0.d0)then fac1=0.333d0 else fac1=work(3) end if - if(work(4).eq.0.d0)then + if(work(4) == 0.d0)then fac2=6.d0 else fac2=work(4) end if -c --------- beta for step control stabilization ----------- - if(work(5).eq.0.d0)then +! --------- beta for step control stabilization ----------- + if(work(5) == 0.d0)then beta=0.0d0 else - if(work(5).lt.0.d0)then + if(work(5) <0.d0)then beta=0.d0 else beta=work(5) - if(beta.gt.0.2d0)then - if (lout.gt.0) write(lout,*) + if(beta >0.2d0)then + if (lout >0) write(lout,*) & ' curious input for beta: work(5)=',work(5) arret=.true. end if end if end if -c -------- maximal step size - if(max_step_size.eq.0.d0)then +! -------- maximal step size + if(max_step_size == 0.d0)then hmax=xend-x else hmax=max_step_size end if -c ------- prepare the entry-points for the arrays in work ----- +! ------- prepare the entry-points for the arrays in work ----- iek1=21 iek2=iek1+n iek3=iek2+n @@ -174,26 +174,26 @@ subroutine do_dop853( iek10=iek9+n iey1=iek10+n ieco=iey1+n -c ------ total storage requirement ----------- +! ------ total storage requirement ----------- istore=ieco+(3+8*nrdens)-1 - if(istore.gt.lwork)then - if (lout.gt.0) write(lout,*) + if(istore >lwork)then + if (lout >0) write(lout,*) & ' insufficient storage for work, min. lwork=',istore arret=.true. end if icomp=21 istore=icomp+nrdens-1 - if(istore.gt.liwork)then - if (lout.gt.0) write(lout,*) + if(istore >liwork)then + if (lout >0) write(lout,*) & ' insufficient storage for iwork, min. liwork=',istore arret=.true. end if -c -------- when a fail has occured, we return with idid=-1 +! -------- when a fail has occured, we return with idid=-1 if (arret) then idid=-1 return end if -c -------- call to core integrator ------------ +! -------- call to core integrator ------------ call dp86co(n,fcn,x,y,xend,hmax,h,rtol,atol,itol,lout, & solout,iout,idid,nmax,uround,meth,nstiff,safe,beta,fac1,fac2, & work(iek1),work(iek2),work(iek3),work(iek4),work(iek5), @@ -205,25 +205,26 @@ subroutine do_dop853( iwork(18)=nstep iwork(19)=naccpt iwork(20)=nrejct -c ----------- return ----------- +! ----------- return ----------- return end subroutine do_dop853 +! c -c -c -c ----- ... and here is the core integrator ---------- -c +! +! ----- ... and here is the core integrator ---------- +! subroutine dp86co(n,fcn,x,y,xend,hmax,h,rtol,atol,itol,lout, & solout,iout,idid,nmax,uround,meth,nstiff,safe,beta,fac1,fac2, & k1,k2,k3,k4,k5,k6,k7,k8,k9,k10,y1,rwork,icomp,nrd,lrpar,rpar,lipar,ipar, & nfcn,nstep,naccpt,nrejct) -c ---------------------------------------------------------- -c core integrator for dop853 -c parameters same as in dop853 with workspace added -c ---------------------------------------------------------- -c declarations -c ---------------------------------------------------------- +! ---------------------------------------------------------- +! core integrator for dop853 +! parameters same as in dop853 with workspace added +! ---------------------------------------------------------- +! declarations +! ---------------------------------------------------------- implicit real(dp) (a-h,o-z) + integer :: n, itol, lout, iout, idid, nmax, meth parameter ( & c2 = 0.526001519587677318785587544488d-01, & c3 = 0.789002279381515978178381316732d-01, @@ -408,15 +409,15 @@ subroutine dp86co(n,fcn,x,y,xend,hmax,h,rtol,atol,itol,lout, real(dp), pointer :: cont(:) cont => rwork(3:3+8*nrd) -c *** *** *** *** *** *** *** -c initialisations -c *** *** *** *** *** *** *** +! *** *** *** *** *** *** *** +! initialisations +! *** *** *** *** *** *** *** facold=1.d-4 expo1=1.d0/8.d0-beta*0.2d0 facc1=1.d0/fac1 facc2=1.d0/fac2 posneg=sign(1.d0,xend-x) -c --- initial preparations +! --- initial preparations atoli=atol(1) rtoli=rtol(1) last=.false. @@ -428,21 +429,21 @@ subroutine dp86co(n,fcn,x,y,xend,hmax,h,rtol,atol,itol,lout, if (ierr /= 0) then; idid=-5; return; end if hmax=abs(hmax) iord=8 - if (h.eq.0.d0) h=hinit(n,fcn,x,y,xend,posneg,k1,k2,k3,iord, + if (h == 0.d0) h=hinit(n,fcn,x,y,xend,posneg,k1,k2,k3,iord, & hmax,atol,rtol,itol,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; idid=-5; return; end if nfcn=nfcn+2 reject=.false. xold=x irtrn=1 - if (iout.ge.1) then + if (iout >= 1) then hout=1.d0 rwork(1) = xold rwork(2) = hout iwork(1) = nrd iwork(2:nrd+1) = icomp(1:nrd) - do 662 j=1,nrd + do j=1,nrd i=icomp(j) cont(j)=y(i) cont(j+nrd)=0 @@ -452,142 +453,156 @@ subroutine dp86co(n,fcn,x,y,xend,hmax,h,rtol,atol,itol,lout, cont(j+nrd*5)=0 cont(j+nrd*6)=0 cont(j+nrd*7)=0 - 662 continue + end do call solout(naccpt+1,xold,x,n,y,rwork,iwork,contd8,lrpar,rpar,lipar,ipar,irtrn) - if (irtrn.lt.0) goto 79 + if (irtrn <0) goto 79 end if -c --- basic integration step +! --- basic integration step 1 continue - if (nstep.gt.nmax) goto 78 - if (0.1d0*abs(h).le.abs(x)*uround)goto 77 - if ((x+1.01d0*h-xend)*posneg.gt.0.d0) then + if (nstep >nmax) goto 78 + if (0.1d0*abs(h) <= abs(x)*uround)goto 77 + if ((x+1.01d0*h-xend)*posneg >0.d0) then h=xend-x last=.true. end if nstep=nstep+1 -c --- the twelve stages - if (irtrn.ge.2) then +! --- the twelve stages + if (irtrn >= 2) then call fcn(n,x,h,y,k1,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if end if - do 22 i=1,n - 22 y1(i)=y(i)+h*a21*k1(i) + do i=1,n + y1(i)=y(i)+h*a21*k1(i) + end do call fcn(n,x+c2*h,h,y1,k2,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - do 23 i=1,n - 23 y1(i)=y(i)+h*(a31*k1(i)+a32*k2(i)) + do i=1,n + y1(i)=y(i)+h*(a31*k1(i)+a32*k2(i)) + end do call fcn(n,x+c3*h,h,y1,k3,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - do 24 i=1,n - 24 y1(i)=y(i)+h*(a41*k1(i)+a43*k3(i)) + do i=1,n + y1(i)=y(i)+h*(a41*k1(i)+a43*k3(i)) + end do call fcn(n,x+c4*h,h,y1,k4,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - do 25 i=1,n - 25 y1(i)=y(i)+h*(a51*k1(i)+a53*k3(i)+a54*k4(i)) + do i=1,n + y1(i)=y(i)+h*(a51*k1(i)+a53*k3(i)+a54*k4(i)) + end do call fcn(n,x+c5*h,h,y1,k5,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - do 26 i=1,n - 26 y1(i)=y(i)+h*(a61*k1(i)+a64*k4(i)+a65*k5(i)) + do i=1,n + y1(i)=y(i)+h*(a61*k1(i)+a64*k4(i)+a65*k5(i)) + end do call fcn(n,x+c6*h,h,y1,k6,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - do 27 i=1,n - 27 y1(i)=y(i)+h*(a71*k1(i)+a74*k4(i)+a75*k5(i)+a76*k6(i)) + do i=1,n + y1(i)=y(i)+h*(a71*k1(i)+a74*k4(i)+a75*k5(i)+a76*k6(i)) + end do call fcn(n,x+c7*h,h,y1,k7,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - do 28 i=1,n - 28 y1(i)=y(i)+h*(a81*k1(i)+a84*k4(i)+a85*k5(i)+a86*k6(i)+a87*k7(i)) + do i=1,n + y1(i)=y(i)+h*(a81*k1(i)+a84*k4(i)+a85*k5(i)+a86*k6(i)+a87*k7(i)) + end do call fcn(n,x+c8*h,h,y1,k8,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - do 29 i=1,n - 29 y1(i)=y(i)+h*(a91*k1(i)+a94*k4(i)+a95*k5(i)+a96*k6(i)+a97*k7(i) - & +a98*k8(i)) + do i=1,n + y1(i)=y(i)+h*(a91*k1(i)+a94*k4(i)+a95*k5(i)+a96*k6(i)+a97*k7(i) + & +a98*k8(i)) + end do call fcn(n,x+c9*h,h,y1,k9,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - do 30 i=1,n - 30 y1(i)=y(i)+h*(a101*k1(i)+a104*k4(i)+a105*k5(i)+a106*k6(i) - & +a107*k7(i)+a108*k8(i)+a109*k9(i)) + do i=1,n + y1(i)=y(i)+h*(a101*k1(i)+a104*k4(i)+a105*k5(i)+a106*k6(i) + & +a107*k7(i)+a108*k8(i)+a109*k9(i)) + end do call fcn(n,x+c10*h,h,y1,k10,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - do 31 i=1,n - 31 y1(i)=y(i)+h*(a111*k1(i)+a114*k4(i)+a115*k5(i)+a116*k6(i) - & +a117*k7(i)+a118*k8(i)+a119*k9(i)+a1110*k10(i)) + do i=1,n + y1(i)=y(i)+h*(a111*k1(i)+a114*k4(i)+a115*k5(i)+a116*k6(i) + & +a117*k7(i)+a118*k8(i)+a119*k9(i)+a1110*k10(i)) + end do call fcn(n,x+c11*h,h,y1,k2,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if xph=x+h - do 32 i=1,n - 32 y1(i)=y(i)+h*(a121*k1(i)+a124*k4(i)+a125*k5(i)+a126*k6(i) - & +a127*k7(i)+a128*k8(i)+a129*k9(i)+a1210*k10(i)+a1211*k2(i)) + do i=1,n + y1(i)=y(i)+h*(a121*k1(i)+a124*k4(i)+a125*k5(i)+a126*k6(i) + & +a127*k7(i)+a128*k8(i)+a129*k9(i)+a1210*k10(i)+a1211*k2(i)) + end do call fcn(n,xph,h,y1,k3,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if nfcn=nfcn+11 - do 35 i=1,n - k4(i)=b1*k1(i)+b6*k6(i)+b7*k7(i)+b8*k8(i)+b9*k9(i) - & +b10*k10(i)+b11*k2(i)+b12*k3(i) - 35 k5(i)=y(i)+h*k4(i) -c --- error estimation + do i=1,n + k4(i)=b1*k1(i)+b6*k6(i)+b7*k7(i)+b8*k8(i)+b9*k9(i) + & +b10*k10(i)+b11*k2(i)+b12*k3(i) + k5(i)=y(i)+h*k4(i) + end do +! --- error estimation err=0.d0 err2=0.d0 - if (itol.eq.0) then - do 41 i=1,n - sk=atoli+rtoli*max(abs(y(i)),abs(k5(i))) - erri=k4(i)-bhh1*k1(i)-bhh2*k9(i)-bhh3*k3(i) - err2=err2+(erri/sk)**2 - erri=er1*k1(i)+er6*k6(i)+er7*k7(i)+er8*k8(i)+er9*k9(i) - & +er10*k10(i)+er11*k2(i)+er12*k3(i) - 41 err=err+(erri/sk)**2 + if (itol == 0) then + do i=1,n + sk=atoli+rtoli*max(abs(y(i)),abs(k5(i))) + erri=k4(i)-bhh1*k1(i)-bhh2*k9(i)-bhh3*k3(i) + err2=err2+(erri/sk)**2 + erri=er1*k1(i)+er6*k6(i)+er7*k7(i)+er8*k8(i)+er9*k9(i) + & +er10*k10(i)+er11*k2(i)+er12*k3(i) + err=err+(erri/sk)**2 + end do else - do 42 i=1,n - sk=atol(i)+rtol(i)*max(abs(y(i)),abs(k5(i))) - erri=k4(i)-bhh1*k1(i)-bhh2*k9(i)-bhh3*k3(i) - err2=err2+(erri/sk)**2 - erri=er1*k1(i)+er6*k6(i)+er7*k7(i)+er8*k8(i)+er9*k9(i) - & +er10*k10(i)+er11*k2(i)+er12*k3(i) - 42 err=err+(erri/sk)**2 + do i=1,n + sk=atol(i)+rtol(i)*max(abs(y(i)),abs(k5(i))) + erri=k4(i)-bhh1*k1(i)-bhh2*k9(i)-bhh3*k3(i) + err2=err2+(erri/sk)**2 + erri=er1*k1(i)+er6*k6(i)+er7*k7(i)+er8*k8(i)+er9*k9(i) + & +er10*k10(i)+er11*k2(i)+er12*k3(i) + err=err+(erri/sk)**2 + end do end if deno=err+0.01d0*err2 - if (deno.le.0.d0) deno=1.d0 + if (deno <= 0.d0) deno=1.d0 err=abs(h)*err*sqrt(1.d0/(n*deno)) -c --- computation of hnew +! --- computation of hnew fac11=pow(err,expo1) -c --- lund-stabilization +! --- lund-stabilization fac=fac11/pow(facold,beta) -c --- we require fac1 <= hnew/h <= fac2 +! --- we require fac1 <= hnew/h <= fac2 fac=max(facc2,min(facc1,fac/safe)) - hnew=h/fac - if(err.le.1.d0)then -c --- step is accepted + hnew=h/fac + if(err <= 1.d0)then +! --- step is accepted facold=max(err,1.0d-4) naccpt=naccpt+1 call fcn(n,xph,h,k5,k4,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if nfcn=nfcn+1 -c ------- stiffness detection - if (mod(naccpt,nstiff).eq.0.or.iasti.gt.0) then +! ------- stiffness detection + if (mod(naccpt,nstiff) == 0.or.iasti >0) then stnum=0.d0 stden=0.d0 - do 64 i=1,n + do i=1,n stnum=stnum+(k4(i)-k3(i))**2 stden=stden+(k5(i)-y1(i))**2 - 64 continue - if (stden.gt.0.d0) hlamb=abs(h)*sqrt(stnum/stden) - if (hlamb.gt.6.1d0) then + end do + if (stden >0.d0) hlamb=abs(h)*sqrt(stnum/stden) + if (hlamb >6.1d0) then nonsti=0 iasti=iasti+1 - if (iasti.eq.15) then - if (lout.gt.0) write (lout,*) + if (iasti == 15) then + if (lout >0) write (lout,*) & ' the problem seems to become stiff at x = ',x - if (lout.lt.0) goto 76 + if (lout <0) goto 76 end if else nonsti=nonsti+1 - if (nonsti.eq.6) iasti=0 + if (nonsti == 6) iasti=0 end if end if -c ------- final preparation for dense output - if (iout.ge.2) then -c ---- save the first function evaluations - do 62 j=1,nrd +! ------- final preparation for dense output + if (iout >= 2) then +! ---- save the first function evaluations + do j=1,nrd i=icomp(j) cont(j)=y(i) ydiff=k5(i)-y(i) @@ -603,29 +618,32 @@ subroutine dp86co(n,fcn,x,y,xend,hmax,h,rtol,atol,itol,lout, & +d69*k9(i)+d610*k10(i)+d611*k2(i)+d612*k3(i) cont(j+nrd*7)=d71*k1(i)+d76*k6(i)+d77*k7(i)+d78*k8(i) & +d79*k9(i)+d710*k10(i)+d711*k2(i)+d712*k3(i) - 62 continue -c --- the next three function evaluations - do 51 i=1,n - 51 y1(i)=y(i)+h*(a141*k1(i)+a147*k7(i)+a148*k8(i) + end do +! --- the next three function evaluations + do i=1,n + y1(i)=y(i)+h*(a141*k1(i)+a147*k7(i)+a148*k8(i) & +a149*k9(i)+a1410*k10(i)+a1411*k2(i)+a1412*k3(i) & +a1413*k4(i)) + end do call fcn(n,x+c14*h,h,y1,k10,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - do 52 i=1,n - 52 y1(i)=y(i)+h*(a151*k1(i)+a156*k6(i)+a157*k7(i) + do i=1,n + y1(i)=y(i)+h*(a151*k1(i)+a156*k6(i)+a157*k7(i) & +a158*k8(i)+a1511*k2(i)+a1512*k3(i)+a1513*k4(i) & +a1514*k10(i)) + end do call fcn(n,x+c15*h,h,y1,k2,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - do 53 i=1,n - 53 y1(i)=y(i)+h*(a161*k1(i)+a166*k6(i)+a167*k7(i) + do i=1,n + y1(i)=y(i)+h*(a161*k1(i)+a166*k6(i)+a167*k7(i) & +a168*k8(i)+a169*k9(i)+a1613*k4(i)+a1614*k10(i) & +a1615*k2(i)) + end do call fcn(n,x+c16*h,h,y1,k3,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if nfcn=nfcn+3 -c --- final preparation - do 63 j=1,nrd +! --- final preparation + do j=1,nrd i=icomp(j) cont(j+nrd*4)=h*(cont(j+nrd*4)+d413*k4(i)+d414*k10(i) & +d415*k2(i)+d416*k3(i)) @@ -635,67 +653,68 @@ subroutine dp86co(n,fcn,x,y,xend,hmax,h,rtol,atol,itol,lout, & +d615*k2(i)+d616*k3(i)) cont(j+nrd*7)=h*(cont(j+nrd*7)+d713*k4(i)+d714*k10(i) & +d715*k2(i)+d716*k3(i)) - 63 continue + end do hout=h end if - do 67 i=1,n - k1(i)=k4(i) - 67 y(i)=k5(i) + do i=1,n + k1(i)=k4(i) + y(i)=k5(i) + end do xold=x x=xph - if (iout.ge.1) then + if (iout >= 1) then rwork(1) = xold rwork(2) = hout iwork(1) = nrd iwork(2:nrd+1) = icomp(1:nrd) call solout(naccpt+1,xold,x,n,y,rwork,iwork,contd8,lrpar,rpar,lipar,ipar,irtrn) - if (irtrn.lt.0) goto 79 + if (irtrn <0) goto 79 end if -c ------- normal exit +! ------- normal exit if (last) then h=hnew idid=1 return end if - if(abs(hnew).gt.hmax)hnew=posneg*hmax + if(abs(hnew) >hmax)hnew=posneg*hmax if(reject)hnew=posneg*min(abs(hnew),abs(h)) reject=.false. else -c --- step is rejected +! --- step is rejected hnew=h/min(facc1,fac11/safe) reject=.true. - if(naccpt.ge.1)nrejct=nrejct+1 + if(naccpt >= 1)nrejct=nrejct+1 last=.false. end if h=hnew goto 1 -c --- fail exit +! --- fail exit 76 continue idid=-4 return 77 continue - if (lout.gt.0) write(lout,979) x - if (lout.gt.0) write(lout,*)' step size too small, h=',h + if (lout >0) write(lout,979) x + if (lout >0) write(lout,*)' step size too small, h=',h idid=-3 return 78 continue - if (lout.gt.0) write(lout,979) x - if (lout.gt.0) write(lout,*) + if (lout >0) write(lout,979) x + if (lout >0) write(lout,*) & ' more than nmax =',nmax,'steps are needed' idid=-2 return 79 continue - !if (lout.gt.0) write(lout,979) x + !if (lout >0) write(lout,979) x 979 format(' exit of dop853 at x=',e18.4) idid=2 return end subroutine dp86co -c +! function hinit(n,fcn,x,y,xend,posneg,f0,f1,y1,iord, & hmax,atol,rtol,itol,lrpar,rpar,lipar,ipar,ierr) -c ---------------------------------------------------------- -c ---- computation of an initial step size guess -c ---------------------------------------------------------- +! ---------------------------------------------------------- +! ---- computation of an initial step size guess +! ---------------------------------------------------------- implicit real(dp) (a-h,o-z) real(dp), intent(inout) :: x @@ -715,53 +734,58 @@ function hinit(n,fcn,x,y,xend,posneg,f0,f1,y1,iord, #include "num_fcn.dek" end interface -c ---- compute a first guess for explicit euler as -c ---- h = 0.01 * norm (y0) / norm (f0) -c ---- the increment for explicit euler is small -c ---- compared to the solution +! ---- compute a first guess for explicit euler as +! ---- h = 0.01 * norm (y0) / norm (f0) +! ---- the increment for explicit euler is small +! ---- compared to the solution dnf=0.0d0 dny=0.0d0 atoli=atol(1) rtoli=rtol(1) - if (itol.eq.0) then - do 10 i=1,n - sk=atoli+rtoli*abs(y(i)) - dnf=dnf+(f0(i)/sk)**2 - 10 dny=dny+(y(i)/sk)**2 + if (itol == 0) then + do i=1,n + sk=atoli+rtoli*abs(y(i)) + dnf=dnf+(f0(i)/sk)**2 + dny=dny+(y(i)/sk)**2 + end do else - do 11 i=1,n - sk=atol(i)+rtol(i)*abs(y(i)) - dnf=dnf+(f0(i)/sk)**2 - 11 dny=dny+(y(i)/sk)**2 + do i=1,n + sk=atol(i)+rtol(i)*abs(y(i)) + dnf=dnf+(f0(i)/sk)**2 + dny=dny+(y(i)/sk)**2 + end do end if - if (dnf.le.1.d-10.or.dny.le.1.d-10) then + if (dnf <= 1.d-10.or.dny <= 1.d-10) then h=1.0d-6 else h=sqrt(dny/dnf)*0.01d0 end if h=min(h,hmax) h=sign(h,posneg) -c ---- perform an explicit euler step - do 12 i=1,n - 12 y1(i)=y(i)+h*f0(i) +! ---- perform an explicit euler step + do i=1,n + y1(i)=y(i)+h*f0(i) + end do call fcn(n,x+h,h,y1,f1,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; idid=-5; return; end if -c ---- estimate the second derivative of the solution +! ---- estimate the second derivative of the solution der2=0.0d0 - if (itol.eq.0) then - do 15 i=1,n - sk=atoli+rtoli*abs(y(i)) - 15 der2=der2+((f1(i)-f0(i))/sk)**2 + if (itol == 0) then + do i=1,n + sk=atoli+rtoli*abs(y(i)) + der2=der2+((f1(i)-f0(i))/sk)**2 + end do else - do 16 i=1,n - sk=atol(i)+rtol(i)*abs(y(i)) - 16 der2=der2+((f1(i)-f0(i))/sk)**2 + do i=1,n + sk=atol(i)+rtol(i)*abs(y(i)) + der2=der2+((f1(i)-f0(i))/sk)**2 + end do end if der2=sqrt(der2)/h -c ---- step size is computed such that -c ---- h**iord * max ( norm (f0), norm (der2)) = 0.01 +! ---- step size is computed such that +! ---- h**iord * max ( norm (f0), norm (der2)) = 0.01 der12=max(abs(der2),sqrt(dnf)) - if (der12.le.1.d-15) then + if (der12 <= 1.d-15) then h1=max(1.0d-6,abs(h)*1.0d-3) else h1=pow(0.01d0/der12,1.d0/iord) @@ -770,10 +794,9 @@ function hinit(n,fcn,x,y,xend,posneg,f0,f1,y1,iord, hinit=sign(h,posneg) return end function hinit -c - + real(dp) function contd8(ii,x,rwork,iwork,ierr) ! ---------------------------------------------------------- ! this function can be used for continuous output in connection @@ -800,11 +823,11 @@ real(dp) function contd8(ii,x,rwork,iwork,ierr) ! ----- compute place of ii-th component i=0 do j=1,nd - if (icomp(j).eq.ii) then + if (icomp(j) == ii) then i=j; exit end if end do - if (i.eq.0) then + if (i == 0) then contd8 = 0 ierr = -1 return @@ -819,3 +842,4 @@ end function contd8 end module mod_dop853 + diff --git a/num/private/mod_dopri5.f b/num/private/mod_dopri5.f index ada926d97..97bd6ae7c 100644 --- a/num/private/mod_dopri5.f +++ b/num/private/mod_dopri5.f @@ -24,7 +24,9 @@ ! *********************************************************************** module mod_dopri5 use const_def, only: dp - use math_lib + use math_lib + + implicit none contains @@ -32,10 +34,9 @@ subroutine do_dopri5( & n,fcn,x,y,xend,h,max_step_size,max_steps, & rtol,atol,itol,solout,iout,work,lwork,iwork,liwork, & lrpar,rpar,lipar,ipar,lout,idid) -c *** *** *** *** *** *** *** *** *** *** *** *** *** -c declarations -c *** *** *** *** *** *** *** *** *** *** *** *** *** - implicit real(dp) (a-h,o-z) +! *** *** *** *** *** *** *** *** *** *** *** *** *** +! declarations +! *** *** *** *** *** *** *** *** *** *** *** *** *** integer, intent(in) :: n ! the dimension of the system interface #include "num_fcn.dek" @@ -54,113 +55,118 @@ subroutine do_dopri5( real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) integer, intent(in) :: lout integer, intent(out) :: idid + integer :: nfcn, nstep, naccpt, nrejct, i, icomp, ieco + integer :: iek1, iek2, iek3, iek4, iek5, iek6 + integer :: iey1, ieys, istore, nmax, meth, nstiff, nrdens + real(dp) :: beta, fac1, fac2, hmax, safe, uround logical arret -c *** *** *** *** *** *** *** -c setting the parameters -c *** *** *** *** *** *** *** +! *** *** *** *** *** *** *** +! setting the parameters +! *** *** *** *** *** *** *** nfcn=0 nstep=0 naccpt=0 nrejct=0 arret=.false. -c -------- nmax , the maximal number of steps ----- - if(max_steps.eq.0)then +! -------- nmax , the maximal number of steps ----- + if (max_steps == 0 ) then nmax=100000 else nmax=max_steps - if(nmax.le.0)then - if (lout.gt.0) write(lout,*) + if (nmax <= 0 ) then + if (lout > 0) write(lout,*) & ' wrong input max_steps=',max_steps arret=.true. end if end if -c -------- meth coefficients of the method - if(iwork(2).eq.0)then +! -------- meth coefficients of the method + if (iwork(2) == 0 ) then meth=1 else meth=iwork(2) - if(meth.le.0.or.meth.ge.4)then - if (lout.gt.0) write(lout,*) + if (meth <= 0.or.meth >= 4 ) then + if (lout > 0) write(lout,*) & ' curious input iwork(2)=',iwork(2) arret=.true. end if end if -c -------- nstiff parameter for stiffness detection +! -------- nstiff parameter for stiffness detection nstiff=iwork(4) - if (nstiff.eq.0) nstiff=1000 - if (nstiff.lt.0) nstiff=nmax+10 -c -------- nrdens number of dense output components + if (nstiff == 0) nstiff=1000 + if (nstiff < 0) nstiff=nmax+10 +! -------- nrdens number of dense output components nrdens=iwork(5) - if(nrdens.lt.0.or.nrdens.gt.n)then - if (lout.gt.0) write(lout,*) + if (nrdens < 0.or.nrdens > n ) then + if (lout > 0) write(lout,*) & ' curious input iwork(5)=',iwork(5) arret=.true. else - if(nrdens.gt.0.and.iout.lt.2)then - if (lout.gt.0) write(lout,*) + if (nrdens > 0.and.iout < 2 ) then + if (lout > 0) write(lout,*) & ' warning: put iout=2 for dense output ' end if - if (nrdens.eq.n) then - do 16 i=1,nrdens - 16 iwork(20+i)=i + if (nrdens == n) then + do i=1,nrdens + iwork(20+i)=i + end do end if end if -c -------- uround smallest number satisfying 1.d0+uround>1.d0 - if(work(1).eq.0.d0)then +! -------- uround smallest number satisfying 1.d0+uround>1.d0 + if (work(1) == 0.d0 ) then uround=2.3d-16 else uround=work(1) - if(uround.le.1.d-35.or.uround.ge.1.d0)then - if (lout.gt.0) write(lout,*) + if (uround <= 1.d-35.or.uround >= 1.d0 ) then + if (lout > 0) write(lout,*) & ' which machine do you have? your uround was:',work(1) arret=.true. end if end if -c ------- safety factor ------------- - if(work(2).eq.0.d0)then +! ------- safety factor ------------- + if (work(2) == 0.d0 ) then safe=0.9d0 else safe=work(2) - if(safe.ge.1.d0.or.safe.le.1.d-4)then - if (lout.gt.0) write(lout,*) + if (safe >= 1.d0.or.safe <= 1.d-4 ) then + if (lout > 0) write(lout,*) & ' curious input for safety factor work(2)=',work(2) arret=.true. end if end if -c ------- fac1,fac2 parameters for step size selection - if(work(3).eq.0.d0)then +! ------- fac1,fac2 parameters for step size selection + if (work(3) == 0.d0 ) then fac1=0.2d0 else fac1=work(3) end if - if(work(4).eq.0.d0)then + if (work(4) == 0.d0 ) then fac2=10.d0 else fac2=work(4) end if -c --------- beta for step control stabilization ----------- - if(work(5).eq.0.d0)then +! --------- beta for step control stabilization ----------- + if (work(5) == 0.d0 ) then beta=0.04d0 else - if(work(5).lt.0.d0)then + if (work(5) < 0.d0 ) then beta=0.d0 else beta=work(5) - if(beta.gt.0.2d0)then - if (lout.gt.0) write(lout,*) + if (beta > 0.2d0 ) then + if (lout > 0) write(lout,*) & ' curious input for beta: work(5)=',work(5) arret=.true. end if end if end if -c -------- maximal step size - if(max_step_size.eq.0.d0)then +! -------- maximal step size + if (max_step_size == 0.d0 ) then hmax=xend-x else hmax=max_step_size end if -c ------- prepare the entry-points for the arrays in work ----- +! ------- prepare the entry-points for the arrays in work ----- iey1=21 iek1=iey1+n iek2=iek1+n @@ -170,26 +176,26 @@ subroutine do_dopri5( iek6=iek5+n ieys=iek6+n ieco=ieys+n -c ------ total storage requirement ----------- +! ------ total storage requirement ----------- istore=ieys+(3+5*nrdens)-1 - if(istore.gt.lwork)then - if (lout.gt.0) write(lout,*) + if (istore > lwork ) then + if (lout > 0) write(lout,*) & ' insufficient storage for work, min. lwork=',istore arret=.true. end if icomp=21 istore=icomp+nrdens-1 - if(istore.gt.liwork)then - if (lout.gt.0) write(lout,*) + if (istore > liwork ) then + if (lout > 0) write(lout,*) & ' insufficient storage for iwork, min. liwork=',istore arret=.true. end if -c ------ when a fail has occured, we return with idid=-1 +! ------ when a fail has occured, we return with idid=-1 if (arret) then idid=-1 return end if -c -------- call to core integrator ------------ +! -------- call to core integrator ------------ call dopcor(n,fcn,x,y,xend,hmax,h,rtol,atol,itol,lout, & solout,iout,idid,nmax,uround,meth,nstiff,safe,beta,fac1,fac2, & work(iey1),work(iek1),work(iek2),work(iek3),work(iek4), @@ -200,33 +206,43 @@ subroutine do_dopri5( iwork(18)=nstep iwork(19)=naccpt iwork(20)=nrejct -c ----------- return ----------- +! ----------- return ----------- return end subroutine do_dopri5 +! c -c -c -c ----- ... and here is the core integrator ---------- -c +! +! ----- ... and here is the core integrator ---------- +! subroutine dopcor(n,fcn,x,y,xend,hmax,h,rtol,atol,itol,lout, & solout,iout,idid,nmax,uround,meth,nstiff,safe,beta,fac1,fac2, & y1,k1,k2,k3,k4,k5,k6,ysti,rwork,icomp,nrd,lrpar,rpar,lipar,ipar, & nfcn,nstep,naccpt,nrejct) -c ---------------------------------------------------------- -c core integrator for dopri5 -c parameters same as in dopri5 with workspace added -c ---------------------------------------------------------- -c declarations -c ---------------------------------------------------------- - implicit real(dp) (a-h,o-z) - - real(dp) k1(n),k2(n),k3(n),k4(n),k5(n),k6(n) - dimension y(n),y1(n),ysti(n),atol(*),rtol(*) - dimension icomp(nrd),iwork(nrd+1) +! ---------------------------------------------------------- +! core integrator for dopri5 +! parameters same as in dopri5 with workspace added +! ---------------------------------------------------------- +! declarations +! ---------------------------------------------------------- + integer :: n, nrd, itol, lout, iout, idid, nmax, meth + real(dp) :: x, xold, xend, hmax, h, uround, safe + real(dp) :: beta, fac1, fac2 + real(dp) :: k1(n),k2(n),k3(n),k4(n),k5(n),k6(n) + real(dp) :: y(n),y1(n),ysti(n),atol(*),rtol(*) + integer :: icomp(nrd), iwork(nrd+1) + integer :: lrpar, lipar, nfcn, nstep, naccpt, nrejct, nstiff logical reject,last integer, intent(inout), pointer :: ipar(:) ! (lipar) real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) + real(dp) :: c2,c3,c4,c5 + real(dp) :: e1,e3,e4,e5,e6,e7 + real(dp) :: a21,a31,a32,a41,a42,a43,a51,a52,a53,a54 + real(dp) :: a61,a62,a63,a64,a65,a71,a73,a74,a75,a76 + real(dp) :: d1,d3,d4,d5,d6,d7 + real(dp) :: atoli, expo1, facc1, facc2, facold, hlamb, hout, nonsti, posneg, bspl, rtoli + integer :: i, iasti, ierr, iord, irtrn, j !common /condo5/xold,hout + real(dp) :: err, fac, fac11, hnew, sk, stden, stnum, xph, yd0, ydiff interface #include "num_fcn.dek" @@ -238,10 +254,10 @@ subroutine dopcor(n,fcn,x,y,xend,hmax,h,rtol,atol,itol,lout, cont => rwork(3:3+5*nrd) -c *** *** *** *** *** *** *** -c initialisations -c *** *** *** *** *** *** *** - if (meth.eq.1) call cdopri(c2,c3,c4,c5,e1,e3,e4,e5,e6,e7, +! *** *** *** *** *** *** *** +! initializations +! *** *** *** *** *** *** *** + if (meth == 1) call cdopri(c2,c3,c4,c5,e1,e3,e4,e5,e6,e7, & a21,a31,a32,a41,a42,a43,a51,a52,a53,a54, & a61,a62,a63,a64,a65,a71,a73,a74,a75,a76, & d1,d3,d4,d5,d6,d7) @@ -251,7 +267,7 @@ subroutine dopcor(n,fcn,x,y,xend,hmax,h,rtol,atol,itol,lout, facc2=1.d0/fac2 posneg=sign(1.d0,xend-x) nonsti=0 -c --- initial preparations +! --- initial preparations atoli=atol(1) rtoli=rtol(1) last=.false. @@ -261,13 +277,13 @@ subroutine dopcor(n,fcn,x,y,xend,hmax,h,rtol,atol,itol,lout, if (ierr /= 0) then; idid=-5; return; end if hmax=abs(hmax) iord=5 - if (h.eq.0.d0) h=hinit(n,fcn,x,y,xend,posneg,k1,k2,k3,iord, + if (h == 0.d0) h=hinit(n,fcn,x,y,xend,posneg,k1,k2,k3,iord, & hmax,atol,rtol,itol,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; idid=-5; return; end if nfcn=nfcn+2 reject=.false. xold=x - if (iout.ne.0) then + if (iout /= 0) then irtrn=1 hout=h rwork(1) = xold @@ -275,133 +291,143 @@ subroutine dopcor(n,fcn,x,y,xend,hmax,h,rtol,atol,itol,lout, iwork(1) = nrd iwork(2:nrd+1) = icomp(1:nrd) - if (iout.ge.2) then - do 443 j=1,nrd - i=icomp(j) - cont(j)=y(i) - cont(nrd+j)=0 - cont(2*nrd+j)=0 - cont(3*nrd+j)=0 - 443 continue + if (iout >= 2) then + do j=1,nrd + i=icomp(j) + cont(j)=y(i) + cont(nrd+j)=0 + cont(2*nrd+j)=0 + cont(3*nrd+j)=0 + end do end if call solout(naccpt+1,xold,x,n,y,rwork,iwork,contd5,lrpar,rpar,lipar,ipar,irtrn) - if (irtrn.lt.0) goto 79 + if (irtrn < 0) goto 79 else irtrn=0 end if -c --- basic integration step +! --- basic integration step 1 continue - if (nstep.gt.nmax) goto 78 - if (0.1d0*abs(h).le.abs(x)*uround)goto 77 - if ((x+1.01d0*h-xend)*posneg.gt.0.d0) then + if (nstep > nmax) goto 78 + if (0.1d0*abs(h) <= abs(x)*uround)goto 77 + if ((x+1.01d0*h-xend)*posneg > 0.d0) then h=xend-x last=.true. end if nstep=nstep+1 -c --- the first 6 stages - if (irtrn.ge.2) then +! --- the first 6 stages + if (irtrn >= 2) then call fcn(n,x,h,y,k1,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if end if - do 22 i=1,n - 22 y1(i)=y(i)+h*a21*k1(i) + do i=1,n + y1(i)=y(i)+h*a21*k1(i) + end do call fcn(n,x+c2*h,h,y1,k2,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - do 23 i=1,n - 23 y1(i)=y(i)+h*(a31*k1(i)+a32*k2(i)) + do i=1,n + y1(i)=y(i)+h*(a31*k1(i)+a32*k2(i)) + end do call fcn(n,x+c3*h,h,y1,k3,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - do 24 i=1,n - 24 y1(i)=y(i)+h*(a41*k1(i)+a42*k2(i)+a43*k3(i)) + do i=1,n + y1(i)=y(i)+h*(a41*k1(i)+a42*k2(i)+a43*k3(i)) + end do call fcn(n,x+c4*h,h,y1,k4,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - do 25 i=1,n - 25 y1(i)=y(i)+h*(a51*k1(i)+a52*k2(i)+a53*k3(i)+a54*k4(i)) + do i=1,n + y1(i)=y(i)+h*(a51*k1(i)+a52*k2(i)+a53*k3(i)+a54*k4(i)) + end do call fcn(n,x+c5*h,h,y1,k5,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - do 26 i=1,n - 26 ysti(i)=y(i)+h*(a61*k1(i)+a62*k2(i)+a63*k3(i)+a64*k4(i)+a65*k5(i)) + do i=1,n + ysti(i)=y(i)+h*(a61*k1(i)+a62*k2(i)+a63*k3(i)+a64*k4(i)+a65*k5(i)) + end do xph=x+h call fcn(n,xph,h,ysti,k6,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - do 27 i=1,n - 27 y1(i)=y(i)+h*(a71*k1(i)+a73*k3(i)+a74*k4(i)+a75*k5(i)+a76*k6(i)) + do i=1,n + y1(i)=y(i)+h*(a71*k1(i)+a73*k3(i)+a74*k4(i)+a75*k5(i)+a76*k6(i)) + end do call fcn(n,xph,h,y1,k2,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; hnew=h/facc1; h=hnew; goto 1; end if - if (iout.ge.2) then - do 40 j=1,nrd - i=icomp(j) - cont(4*nrd+j)=h*(d1*k1(i)+d3*k3(i)+d4*k4(i)+d5*k5(i) - & +d6*k6(i)+d7*k2(i)) - 40 continue + if (iout >= 2) then + do j=1,nrd + i=icomp(j) + cont(4*nrd+j)=h*(d1*k1(i)+d3*k3(i)+d4*k4(i)+d5*k5(i) + & +d6*k6(i)+d7*k2(i)) + end do end if - do 28 i=1,n - 28 k4(i)=(e1*k1(i)+e3*k3(i)+e4*k4(i)+e5*k5(i)+e6*k6(i)+e7*k2(i))*h + do i=1,n + k4(i)=(e1*k1(i)+e3*k3(i)+e4*k4(i)+e5*k5(i)+e6*k6(i)+e7*k2(i))*h + end do nfcn=nfcn+6 -c --- error estimation +! --- error estimation err=0.d0 - if (itol.eq.0) then - do 41 i=1,n - sk=atoli+rtoli*max(abs(y(i)),abs(y1(i))) - 41 err=err+pow2(k4(i)/sk) + if (itol == 0) then + do i=1,n + sk=atoli+rtoli*max(abs(y(i)),abs(y1(i))) + err=err+pow2(k4(i)/sk) + end do else - do 42 i=1,n - sk=atol(i)+rtol(i)*max(abs(y(i)),abs(y1(i))) - 42 err=err+pow2(k4(i)/sk) + do i=1,n + sk=atol(i)+rtol(i)*max(abs(y(i)),abs(y1(i))) + err=err+pow2(k4(i)/sk) + end do end if err=sqrt(err/n) -c --- computation of hnew +! --- computation of hnew fac11=pow(err,expo1) -c --- lund-stabilization +! --- lund-stabilization fac=fac11/pow(facold,beta) -c --- we require fac1 <= hnew/h <= fac2 +! --- we require fac1 <= hnew/h <= fac2 fac=max(facc2,min(facc1,fac/safe)) - hnew=h/fac - if(err.le.1.d0)then -c --- step is accepted + hnew=h/fac + if (err <= 1.d0 ) then +! --- step is accepted facold=max(err,1.0d-4) naccpt=naccpt+1 -c ------- stiffness detection - if (mod(naccpt,nstiff).eq.0.or.iasti.gt.0) then +! ------- stiffness detection + if (mod(naccpt,nstiff) == 0.or.iasti > 0) then stnum=0.d0 stden=0.d0 - do 64 i=1,n + do i=1,n stnum=stnum+pow2(k2(i)-k6(i)) stden=stden+pow2(y1(i)-ysti(i)) - 64 continue - if (stden.gt.0.d0) hlamb=h*sqrt(stnum/stden) - if (hlamb.gt.3.25d0) then + end do + if (stden > 0.d0) hlamb=h*sqrt(stnum/stden) + if (hlamb > 3.25d0) then nonsti=0 iasti=iasti+1 - if (iasti.eq.15) then - if (lout.gt.0) write (lout,*) + if (iasti == 15) then + if (lout > 0) write (lout,*) & ' the problem seems to become stiff at x = ',x - if (lout.lt.0) goto 76 + if (lout < 0) goto 76 end if else nonsti=nonsti+1 - if (nonsti.eq.6) iasti=0 + if (nonsti == 6) iasti=0 end if end if - if (iout.ge.2) then - do 43 j=1,nrd - i=icomp(j) - yd0=y(i) - ydiff=y1(i)-yd0 - bspl=h*k1(i)-ydiff - cont(j)=y(i) - cont(nrd+j)=ydiff - cont(2*nrd+j)=bspl - cont(3*nrd+j)=-h*k2(i)+ydiff-bspl - 43 continue + if (iout >= 2) then + do j=1,nrd + i=icomp(j) + yd0=y(i) + ydiff=y1(i)-yd0 + bspl=h*k1(i)-ydiff + cont(j)=y(i) + cont(nrd+j)=ydiff + cont(2*nrd+j)=bspl + cont(3*nrd+j)=-h*k2(i)+ydiff-bspl + end do end if - do 44 i=1,n - k1(i)=k2(i) - 44 y(i)=y1(i) + do i=1,n + k1(i)=k2(i) + y(i)=y1(i) + end do xold=x x=xph - if (iout.ne.0) then + if (iout /= 0) then irtrn=1 hout=h rwork(1) = xold @@ -409,110 +435,119 @@ subroutine dopcor(n,fcn,x,y,xend,hmax,h,rtol,atol,itol,lout, iwork(1) = nrd iwork(2:nrd+1) = icomp(1:nrd) call solout(naccpt+1,xold,x,n,y,rwork,iwork,contd5,lrpar,rpar,lipar,ipar,irtrn) - if (irtrn.lt.0) goto 79 + if (irtrn < 0) goto 79 end if -c ------- normal exit +! ------- normal exit if (last) then h=hnew idid=1 return end if - if(abs(hnew).gt.hmax)hnew=posneg*hmax - if(reject)hnew=posneg*min(abs(hnew),abs(h)) + if (abs(hnew) > hmax)hnew=posneg*hmax + if (reject)hnew=posneg*min(abs(hnew),abs(h)) reject=.false. else -c --- step is rejected +! --- step is rejected hnew=h/min(facc1,fac11/safe) reject=.true. - if(naccpt.ge.1)nrejct=nrejct+1 + if (naccpt >= 1)nrejct=nrejct+1 last=.false. end if h=hnew goto 1 -c --- fail exit +! --- fail exit 76 continue idid=-4 return 77 continue - if (lout.gt.0) write(lout,979)x - if (lout.gt.0) write(lout,*)' step size too small, h=',h + if (lout > 0) write(lout,979)x + if (lout > 0) write(lout,*)' step size too small, h=',h idid=-3 return 78 continue - if (lout.gt.0) write(lout,979)x - if (lout.gt.0) write(lout,*) + if (lout > 0) write(lout,979)x + if (lout > 0) write(lout,*) & ' more than nmax =',nmax,'steps are needed' idid=-2 return 79 continue - !if (lout.gt.0) write(lout,979)x + !if (lout > 0) write(lout,979)x 979 format(' exit of dopri5 at x=',e18.4) idid=2 return end subroutine dopcor -c - function hinit(n,fcn,x,y,xend,posneg,f0,f1,y1,iord, - & hmax,atol,rtol,itol,lrpar,rpar,lipar,ipar,ierr) -c ---------------------------------------------------------- -c ---- computation of an initial step size guess -c ---------------------------------------------------------- - implicit real(dp) (a-h,o-z) +! + real(dp) function hinit(n,fcn,x,y,xend,posneg,f0,f1,y1,iord, + & hmax,atol,rtol,itol,lrpar,rpar,lipar,ipar,ierr) +! ---------------------------------------------------------- +! ---- computation of an initial step size guess +! ---------------------------------------------------------- + integer, intent(in) :: n + real(dp) :: x dimension y(n),y1(n),f0(n),f1(n),atol(*),rtol(*) integer, intent(in) :: lrpar, lipar integer, intent(inout), pointer :: ipar(:) ! (lipar) real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) + real(dp) :: y, xend, posneg, f0, f1, y1, hmax, atol, rtol, atoli + real(dp) :: der2, der12, dnf, dny, h, h1, rtoli, sk + integer :: i, iord, itol, ierr, idid interface #include "num_fcn.dek" end interface -c ---- compute a first guess for explicit euler as -c ---- h = 0.01 * norm (y0) / norm (f0) -c ---- the increment for explicit euler is small -c ---- compared to the solution +! ---- compute a first guess for explicit euler as +! ---- h = 0.01 * norm (y0) / norm (f0) +! ---- the increment for explicit euler is small +! ---- compared to the solution dnf=0.0d0 dny=0.0d0 atoli=atol(1) rtoli=rtol(1) - if (itol.eq.0) then - do 10 i=1,n - sk=atoli+rtoli*abs(y(i)) - dnf=dnf+pow2(f0(i)/sk) - 10 dny=dny+pow2(y(i)/sk) + if (itol == 0) then + do i=1,n + sk=atoli+rtoli*abs(y(i)) + dnf=dnf+pow2(f0(i)/sk) + dny=dny+pow2(y(i)/sk) + end do else - do 11 i=1,n - sk=atol(i)+rtol(i)*abs(y(i)) - dnf=dnf+pow2(f0(i)/sk) - 11 dny=dny+pow2(y(i)/sk) + do i=1,n + sk=atol(i)+rtol(i)*abs(y(i)) + dnf=dnf+pow2(f0(i)/sk) + dny=dny+pow2(y(i)/sk) + end do end if - if (dnf.le.1.d-10.or.dny.le.1.d-10) then + if (dnf <= 1.d-10.or.dny <= 1.d-10) then h=1.0d-6 else h=sqrt(dny/dnf)*0.01d0 end if h=min(h,hmax) h=sign(h,posneg) -c ---- perform an explicit euler step - do 12 i=1,n - 12 y1(i)=y(i)+h*f0(i) +! ---- perform an explicit euler step + do i=1,n + y1(i)=y(i)+h*f0(i) + end do call fcn(n,x+h,h,y1,f1,lrpar,rpar,lipar,ipar,ierr) if (ierr /= 0) then; idid=-5; return; end if -c ---- estimate the second derivative of the solution +! ---- estimate the second derivative of the solution der2=0.0d0 - if (itol.eq.0) then - do 15 i=1,n - sk=atoli+rtoli*abs(y(i)) - 15 der2=der2+pow2((f1(i)-f0(i))/sk) + if (itol == 0) then + do i=1,n + sk=atoli+rtoli*abs(y(i)) + der2=der2+pow2((f1(i)-f0(i))/sk) + end do else - do 16 i=1,n - sk=atol(i)+rtol(i)*abs(y(i)) - 16 der2=der2+pow2((f1(i)-f0(i))/sk) + do i=1,n + sk=atol(i)+rtol(i)*abs(y(i)) + der2=der2+pow2((f1(i)-f0(i))/sk) + end do end if der2=sqrt(der2)/h -c ---- step size is computed such that -c ---- h**iord * max ( norm (f0), norm (der2)) = 0.01 +! ---- step size is computed such that +! ---- h**iord * max ( norm (f0), norm (der2)) = 0.01 der12=max(abs(der2),sqrt(dnf)) - if (der12.le.1.d-15) then + if (der12 <= 1.d-15) then h1=max(1.0d-6,abs(h)*1.0d-3) else h1=pow(0.01d0/der12,1.d0/iord) @@ -521,7 +556,7 @@ function hinit(n,fcn,x,y,xend,posneg,f0,f1,y1,iord, hinit=sign(h,posneg) return end function hinit -c +! real(dp) function contd5(ii,x,rwork,iwork,ierr) ! ---------------------------------------------------------- @@ -535,7 +570,7 @@ real(dp) function contd5(ii,x,rwork,iwork,ierr) integer, intent(inout), target :: iwork(*) integer, intent(out) :: ierr - real(dp) :: xold, h, s, s1 + real(dp) :: xold, h, theta, theta1 integer :: nd, i, j real(dp), pointer :: con(:) integer, pointer :: icomp(:) @@ -549,12 +584,12 @@ real(dp) function contd5(ii,x,rwork,iwork,ierr) h = rwork(2) con => rwork(3:2+5*nd) -c ----- compute place of ii-th component +! ----- compute place of ii-th component i=0 - do 5 j=1,nd - if (icomp(j).eq.ii) i=j - 5 continue - if (i.eq.0) then + do j=1,nd + if (icomp(j) == ii) i=j + end do + if (i == 0) then contd5 = 0 ierr = -1 return @@ -565,7 +600,7 @@ real(dp) function contd5(ii,x,rwork,iwork,ierr) contd5=con(i)+theta*(con(nd+i)+theta1*(con(2*nd+i)+theta* & (con(3*nd+i)+theta1*con(4*nd+i)))) end function contd5 -c +! subroutine cdopri(c2,c3,c4,c5,e1,e3,e4,e5,e6,e7, & a21,a31,a32,a41,a42,a43,a51,a52,a53,a54, @@ -574,7 +609,15 @@ subroutine cdopri(c2,c3,c4,c5,e1,e3,e4,e5,e6,e7, ! ---------------------------------------------------------- ! runge-kutta coefficients of dormand and prince (1980) ! ---------------------------------------------------------- - implicit real(dp) (a-h,o-z) + real(dp) :: c2, c3, c4, c5 + real(dp) :: a21 + real(dp) :: a31, a32 + real(dp) :: a41, a42, a43 + real(dp) :: a51, a52, a53, a54 + real(dp) :: a61, a62, a63, a64, a65 + real(dp) :: a71, a72, a73, a74, a75, a76 + real(dp) :: e1, e2, e3, e4, e5, e6, e7 + real(dp) :: d1, d3, d4, d5, d6, d7 c2=0.2d0 c3=0.3d0 c4=0.8d0 @@ -605,7 +648,7 @@ subroutine cdopri(c2,c3,c4,c5,e1,e3,e4,e5,e6,e7, e5=-17253.d0/339200.d0 e6=22.d0/525.d0 e7=-1.d0/40.d0 -c ---- dense output of shampine (1986) +! ---- dense output of shampine (1986) d1=-12715105075.d0/11282082432.d0 d3=87487479700.d0/32700410799.d0 d4=-10690763975.d0/1880347072.d0 @@ -617,5 +660,3 @@ end subroutine cdopri end module mod_dopri5 - - diff --git a/num/private/mod_newton.f b/num/private/mod_newton.f index caf5a891d..8438d818a 100644 --- a/num/private/mod_newton.f +++ b/num/private/mod_newton.f @@ -154,10 +154,8 @@ subroutine do_newton_wrapper( real(dp), pointer :: AF_copy(:) ! =(ldAF, neq) ! for sparse - integer :: n, nzmax, need_lrd, need_lid, lfil, maxits, iout - real(dp) :: eps, droptol + integer :: n, nzmax, need_lrd, need_lid - real(dp) :: sparse_nzmax_factor integer(8) :: test_time0, test_time1, clock_rate logical :: do_test_timing @@ -351,21 +349,19 @@ subroutine do_newton( real(dp) :: > coeff, f, slope, residual_norm, max_residual, corr_norm_min, resid_norm_min, correction_factor, > residual_norm_save, corr_norm_min_save, resid_norm_min_save, correction_factor_save, - > correction_norm, corr_norm_initial, max_correction, slope_extra, + > correction_norm, max_correction, > tol_max_correction, tol_residual_norm, tol_abs_slope_min, tol_corr_resid_product, > min_corr_coeff, tol_max_residual, max_corr_min, max_resid_min - integer :: iiter, max_tries, ndiag, zone, idiag, tiny_corr_cnt, ldA, i, j, k, info, + integer :: iiter, max_tries, ndiag, zone, idiag, tiny_corr_cnt, ldA, i, k, info, > last_jac_iter, max_iterations_for_jacobian, force_iter_value, > max_iter_for_enforce_resid_tol, max_iter_for_resid_tol2, max_iter_for_resid_tol3, > caller_id - integer(8) :: test_time0, test_time1, time0, time1, clock_rate + integer(8) :: time0, time1, clock_rate character (len=256) :: err_msg - logical :: first_try, dbg_msg, passed_tol_tests, - > overlay_AF, do_mtx_timing, do_test_timing, doing_extra + logical :: first_try, dbg_msg, passed_tol_tests, overlay_AF, do_mtx_timing, doing_extra integer, parameter :: num_tol_msgs = 15 character (len=32) :: tol_msg(num_tol_msgs) character (len=64) :: message - real(dp), pointer, dimension(:) :: p1_1, p1_2 ! set pointers to 1D data real(dp), pointer, dimension(:,:) :: x, xold, equ, xscale ! (nvar,nz) @@ -869,12 +865,11 @@ subroutine adjust_correction( integer, intent(inout) :: ipar(:) ! (lipar) integer, intent(out) :: ierr - integer :: i, j, k, iter, k_max_corr, i_max_corr - character (len=256) :: message + integer :: i, k, iter logical :: first_time - real(dp) :: a1, alam, alam2, alamin, a2, disc, f2, tmp1, - > rhs1, rhs2, temp, test, tmplam, max_corr, fold, min_corr_coeff - real(dp) :: frac, f_target + real(dp) :: a1, alam, alam2, a2, disc, f2, tmp1, + > rhs1, rhs2, tmplam, fold, min_corr_coeff + real(dp) :: f_target logical :: skip_eval_f real(dp), parameter :: alf = 1d-2 ! ensures sufficient decrease in f @@ -1056,8 +1051,7 @@ end subroutine apply_coeff logical function solve_equ() - integer :: nrhs, ldafb, ldb, ldx, lda, i, j, n, sprs_nz - real(dp) :: ferr, berr + integer :: nrhs, ldafb, ldb, ldx, lda, i, n, sprs_nz include 'formats' @@ -1137,7 +1131,7 @@ end subroutine factor_mtx subroutine solve_mtx(n, ldafb, sprs_nz) integer, intent(in) :: n, ldafb, sprs_nz character(1) :: trans - integer :: info_solve, info_dealloc, i, j + integer :: info_solve, info_dealloc info = 0; info_solve=0; info_dealloc=0 trans = 'N' if (matrix_type == block_tridiag_dble_matrix_type) then @@ -1177,7 +1171,6 @@ logical function do_enter_setmatrix( integer, intent(inout) :: ipar(:) ! (lipar) integer, intent(out) :: ierr logical :: need_solver_to_eval_jacobian - integer :: i, j, k include 'formats' need_solver_to_eval_jacobian = .true. call enter_setmatrix(iiter, @@ -1197,9 +1190,9 @@ subroutine setmatrix(neq, x, dx, xscale, xsave, dxsave, lrpar, rpar, lipar, ipar integer, intent(inout) :: ipar(:) ! (lipar) integer, intent(out) :: ierr - integer :: i, j, ii, jj, k, kk, ij, ik, ivar, jvar, iz, jz, jzz, ideb, ifin + integer :: i, j, ii, k, kk, ij, ik, ivar, ideb, ifin integer, dimension(nvar) :: nskip, gskip, dskip - real(dp) :: dscale, partial + real(dp) :: partial logical :: need_solver_to_eval_jacobian include 'formats' @@ -1425,7 +1418,7 @@ subroutine newton_core_dump(x, dx, xold) ! increment vector from previous vector of primaries. real(dp), dimension(:,:) :: xold ! xold = x-dx. xold is kept constant; x and dx change. - integer :: i, j, k + integer :: j, k 1 format(a20, i16) ! integers 2 format(a20, 1pe26.16) ! reals @@ -1481,7 +1474,6 @@ subroutine pointers(ierr) integer, intent(out) :: ierr integer :: i, j - character (len=256) :: err_msg ierr = 0 i = num_work_params+1 @@ -1582,7 +1574,7 @@ end subroutine pointers real(dp) function eval_slope(nvar, nz, grad_f, B) integer, intent(in) :: nvar, nz real(dp), intent(in), dimension(:,:) :: grad_f, B - integer :: k, i + integer :: i eval_slope = 0 do i=1,nvar eval_slope = eval_slope + dot_product(grad_f(i,1:nz),B(i,1:nz)) @@ -1594,7 +1586,7 @@ real(dp) function eval_f(nvar, nz, equ) integer, intent(in) :: nvar, nz real(dp), intent(in), dimension(:,:) :: equ integer :: k, i - real*8 :: q + real(dp) :: q include 'formats' eval_f = 0 do k = 1, nz @@ -1618,7 +1610,7 @@ subroutine get_newton_work_sizes( integer, intent(out) :: lwork, liwork integer, intent(out) :: ierr - integer :: i, ndiag, ldAF, neq + integer :: ndiag, ldAF, neq include 'formats' diff --git a/num/private/mod_newuoa.f b/num/private/mod_newuoa.f index d1b2bf095..8a2d6678b 100644 --- a/num/private/mod_newuoa.f +++ b/num/private/mod_newuoa.f @@ -5,16 +5,13 @@ module mod_newuoa contains - - - SUBROUTINE do_newuoa (N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,W, - > CALFUN,max_valid_value) - IMPLICIT REAL*8 (A-H,O-Z) + SUBROUTINE do_newuoa(N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,W,CALFUN,max_valid_value) + IMPLICIT real(dp) (A-H,O-Z) DIMENSION X(*),W(*) interface #include "num_newuoa_proc.dek" end interface - real*8, intent(in) :: max_valid_value + real(dp), intent(in) :: max_valid_value ! ! This subroutine seeks the least value of a function of many variables, ! by a trust region method that forms quadratic models by interpolation. @@ -51,10 +48,9 @@ SUBROUTINE do_newuoa (N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,W, ! NP=N+1 NPTM=NPT-NP - IF (NPT .LT. N+2 .OR. NPT .GT. ((N+2)*NP)/2) THEN + IF (NPT < N+2 .OR. NPT > ((N+2)*NP)/2) THEN PRINT 10 - 10 FORMAT (/4X,'Return from NEWUOA because NPT is not in', - 1 ' the required interval') + 10 FORMAT (/4X,'Return from NEWUOA because NPT is not in the required interval') GO TO 20 END IF NDIM=NPT+N @@ -86,11 +82,11 @@ END subroutine do_newuoa SUBROUTINE NEWUOB (N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,XBASE, 1 XOPT,XNEW,XPT,FVAL,GQ,HQ,PQ,BMAT,ZMAT,NDIM,D,VLAG,W, 1 CALFUN,max_valid_value) - IMPLICIT REAL*8 (A-H,O-Z) + IMPLICIT real(dp) (A-H,O-Z) interface #include "num_newuoa_proc.dek" end interface - real*8, intent(in) :: max_valid_value + real(dp), intent(in) :: max_valid_value logical :: do_replace DIMENSION X(*),XBASE(*),XOPT(*),XNEW(*),XPT(NPT,*),FVAL(*), 1 GQ(*),HQ(*),PQ(*),BMAT(NDIM,*),ZMAT(NPT,*),D(*),VLAG(*),W(*) @@ -133,18 +129,24 @@ SUBROUTINE NEWUOB (N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,XBASE, ! ! Set the initial elements of XPT, BMAT, HQ, PQ and ZMAT to zero. ! - DO 20 J=1,N - XBASE(J)=X(J) - DO 10 K=1,NPT - 10 XPT(K,J)=ZERO - DO 20 I=1,NDIM - 20 BMAT(I,J)=ZERO - DO 30 IH=1,NH - 30 HQ(IH)=ZERO - DO 40 K=1,NPT - PQ(K)=ZERO - DO 40 J=1,NPTM - 40 ZMAT(K,J)=ZERO + DO J=1,N + XBASE(J)=X(J) + DO K=1,NPT + XPT(K,J)=ZERO + END DO + DO I=1,NDIM + BMAT(I,J)=ZERO + END DO + END DO + DO IH=1,NH + HQ(IH)=ZERO + END DO + DO K=1,NPT + PQ(K)=ZERO + DO J=1,NPTM + ZMAT(K,J)=ZERO + END DO + END DO ! ! Begin the initialization procedure. NF becomes one more than the number ! of function values so far. The coordinates of the displacement of the @@ -157,25 +159,25 @@ SUBROUTINE NEWUOB (N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,XBASE, 50 NFM=NF NFMM=NF-N NF=NF+1 - IF (NFM .LE. 2*N) THEN - IF (NFM .GE. 1 .AND. NFM .LE. N) THEN + IF (NFM <= 2*N) THEN + IF (NFM >= 1 .AND. NFM <= N) THEN XPT(NF,NFM)=RHOBEG - ELSE IF (NFM .GT. N) THEN + ELSE IF (NFM > N) THEN XPT(NF,NFMM)=-RHOBEG END IF ELSE ITEMP=(NFMM-1)/N JPT=NFM-ITEMP*N-N IPT=JPT+ITEMP - IF (IPT .GT. N) THEN + IF (IPT > N) THEN ITEMP=JPT JPT=IPT-N IPT=ITEMP END IF XIPT=RHOBEG - IF (FVAL(IPT+NP) .LT. FVAL(IPT+1)) XIPT=-XIPT + IF (FVAL(IPT+NP) < FVAL(IPT+1)) XIPT=-XIPT XJPT=RHOBEG - IF (FVAL(JPT+NP) .LT. FVAL(JPT+1)) XJPT=-XJPT + IF (FVAL(JPT+NP) < FVAL(JPT+1)) XJPT=-XJPT XPT(NF,IPT)=XIPT XPT(NF,JPT)=XJPT END IF @@ -184,15 +186,16 @@ SUBROUTINE NEWUOB (N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,XBASE, ! after this calculation. The least function value so far and its index ! are required. ! - DO 60 J=1,N - 60 X(J)=XPT(NF,J)+XBASE(J) + DO J=1,N + X(J)=XPT(NF,J)+XBASE(J) + END DO GOTO 310 70 FVAL(NF)=F - IF (NF .EQ. 1) THEN + IF (NF == 1) THEN FBEG=F FOPT=F KOPT=1 - ELSE IF (F .LT. FOPT) THEN + ELSE IF (F < FOPT) THEN FOPT=F KOPT=NF END IF @@ -200,15 +203,15 @@ SUBROUTINE NEWUOB (N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,XBASE, ! Set the nonzero initial elements of BMAT and the quadratic model in ! the cases when NF is at most 2*N+1. ! - IF (NFM .LE. 2*N) THEN - IF (NFM .GE. 1 .AND. NFM .LE. N) THEN + IF (NFM <= 2*N) THEN + IF (NFM >= 1 .AND. NFM <= N) THEN GQ(NFM)=(F-FBEG)/RHOBEG - IF (NPT .LT. NF+N) THEN + IF (NPT < NF+N) THEN BMAT(1,NFM)=-ONE/RHOBEG BMAT(NF,NFM)=ONE/RHOBEG BMAT(NPT+NFM,NFM)=-HALF*RHOSQ END IF - ELSE IF (NFM .GT. N) THEN + ELSE IF (NFM > N) THEN BMAT(NF-N,NFMM)=HALF/RHOBEG BMAT(NF,NFMM)=-HALF/RHOBEG ZMAT(1,NFMM)=-RECIQ-RECIQ @@ -225,15 +228,15 @@ SUBROUTINE NEWUOB (N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,XBASE, ! ELSE IH=(IPT*(IPT-1))/2+JPT - IF (XIPT .LT. ZERO) IPT=IPT+N - IF (XJPT .LT. ZERO) JPT=JPT+N + IF (XIPT < ZERO) IPT=IPT+N + IF (XJPT < ZERO) JPT=JPT+N ZMAT(1,NFMM)=RECIP ZMAT(NF,NFMM)=RECIP ZMAT(IPT+1,NFMM)=-RECIP ZMAT(JPT+1,NFMM)=-RECIP HQ(IH)=(FBEG-FVAL(IPT+1)-FVAL(JPT+1)+F)/(XIPT*XJPT) END IF - IF (NF .LT. NPT) GOTO 50 + IF (NF < NPT) GOTO 50 ! ! Begin the iterative procedure, because the initial model is complete. ! @@ -244,93 +247,109 @@ SUBROUTINE NEWUOB (N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,XBASE, DIFFB=ZERO ITEST=0 XOPTSQ=ZERO - DO 80 I=1,N - XOPT(I)=XPT(KOPT,I) - 80 XOPTSQ=XOPTSQ+XOPT(I)**2 + DO I=1,N + XOPT(I)=XPT(KOPT,I) + XOPTSQ=XOPTSQ+XOPT(I)**2 + END DO 90 NFSAV=NF ! ! Generate the next trust region step and test its length. Set KNEW ! to -1 if the purpose of the next F will be to improve the model. ! 100 KNEW=0 - CALL TRSAPP (N,NPT,XOPT,XPT,GQ,HQ,PQ,DELTA,D,W,W(NP), - 1 W(NP+N),W(NP+2*N),CRVMIN) + CALL TRSAPP (N,NPT,XOPT,XPT,GQ,HQ,PQ,DELTA,D,W,W(NP),W(NP+N),W(NP+2*N),CRVMIN) DSQ=ZERO - DO 110 I=1,N - 110 DSQ=DSQ+D(I)**2 + DO I=1,N + DSQ=DSQ+D(I)**2 + END DO DNORM=DMIN1(DELTA,DSQRT(DSQ)) - IF (DNORM .LT. HALF*RHO) THEN + IF (DNORM < HALF*RHO) THEN KNEW=-1 DELTA=TENTH*DELTA RATIO=-1.0D0 - IF (DELTA .LE. 1.5D0*RHO) DELTA=RHO - IF (NF .LE. NFSAV+2) GOTO 460 + IF (DELTA <= 1.5D0*RHO) DELTA=RHO + IF (NF <= NFSAV+2) GOTO 460 TEMP=0.125D0*CRVMIN*RHO*RHO - IF (TEMP .LE. DMAX1(DIFFA,DIFFB,DIFFC)) GOTO 460 + IF (TEMP <= DMAX1(DIFFA,DIFFB,DIFFC)) GOTO 460 GOTO 490 END IF ! ! Shift XBASE if XOPT may be too far from XBASE. First make the changes ! to BMAT that do not depend on ZMAT. ! - 120 IF (DSQ .LE. 1.0D-3*XOPTSQ) THEN + 120 IF (DSQ <= 1.0D-3*XOPTSQ) THEN TEMPQ=0.25D0*XOPTSQ - DO 140 K=1,NPT - SUM=ZERO - DO 130 I=1,N - 130 SUM=SUM+XPT(K,I)*XOPT(I) - TEMP=PQ(K)*SUM - SUM=SUM-HALF*XOPTSQ - W(NPT+K)=SUM - DO 140 I=1,N - GQ(I)=GQ(I)+TEMP*XPT(K,I) - XPT(K,I)=XPT(K,I)-HALF*XOPT(I) - VLAG(I)=BMAT(K,I) - W(I)=SUM*XPT(K,I)+TEMPQ*XOPT(I) - IP=NPT+I - DO 140 J=1,I - 140 BMAT(IP,J)=BMAT(IP,J)+VLAG(I)*W(J)+W(I)*VLAG(J) + DO K=1,NPT + SUM=ZERO + DO I=1,N + SUM=SUM+XPT(K,I)*XOPT(I) + END DO + TEMP=PQ(K)*SUM + SUM=SUM-HALF*XOPTSQ + W(NPT+K)=SUM + DO I=1,N + GQ(I)=GQ(I)+TEMP*XPT(K,I) + XPT(K,I)=XPT(K,I)-HALF*XOPT(I) + VLAG(I)=BMAT(K,I) + W(I)=SUM*XPT(K,I)+TEMPQ*XOPT(I) + IP=NPT+I + DO J=1,I + BMAT(IP,J)=BMAT(IP,J)+VLAG(I)*W(J)+W(I)*VLAG(J) + END DO + END DO + END DO ! ! Then the revisions of BMAT that depend on ZMAT are calculated. ! - DO 180 K=1,NPTM - SUMZ=ZERO - DO 150 I=1,NPT - SUMZ=SUMZ+ZMAT(I,K) - 150 W(I)=W(NPT+I)*ZMAT(I,K) - DO 170 J=1,N - SUM=TEMPQ*SUMZ*XOPT(J) - DO 160 I=1,NPT - 160 SUM=SUM+W(I)*XPT(I,J) - VLAG(J)=SUM - IF (K .LT. IDZ) SUM=-SUM - DO 170 I=1,NPT - 170 BMAT(I,J)=BMAT(I,J)+SUM*ZMAT(I,K) - DO 180 I=1,N - IP=I+NPT - TEMP=VLAG(I) - IF (K .LT. IDZ) TEMP=-TEMP - DO 180 J=1,I - 180 BMAT(IP,J)=BMAT(IP,J)+TEMP*VLAG(J) + DO K=1,NPTM + SUMZ=ZERO + DO I=1,NPT + SUMZ=SUMZ+ZMAT(I,K) + W(I)=W(NPT+I)*ZMAT(I,K) + END DO + DO J=1,N + SUM=TEMPQ*SUMZ*XOPT(J) + DO I=1,NPT + SUM=SUM+W(I)*XPT(I,J) + END DO + VLAG(J)=SUM + IF (K < IDZ) SUM=-SUM + DO I=1,NPT + BMAT(I,J)=BMAT(I,J)+SUM*ZMAT(I,K) + END DO + END DO + DO I=1,N + IP=I+NPT + TEMP=VLAG(I) + IF (K < IDZ) TEMP=-TEMP + DO J=1,I + BMAT(IP,J)=BMAT(IP,J)+TEMP*VLAG(J) + END DO + END DO + END DO ! ! The following instructions complete the shift of XBASE, including ! the changes to the parameters of the quadratic model. ! IH=0 - DO 200 J=1,N - W(J)=ZERO - DO 190 K=1,NPT - W(J)=W(J)+PQ(K)*XPT(K,J) - 190 XPT(K,J)=XPT(K,J)-HALF*XOPT(J) - DO 200 I=1,J - IH=IH+1 - IF (I .LT. J) GQ(J)=GQ(J)+HQ(IH)*XOPT(I) - GQ(I)=GQ(I)+HQ(IH)*XOPT(J) - HQ(IH)=HQ(IH)+W(I)*XOPT(J)+XOPT(I)*W(J) - 200 BMAT(NPT+I,J)=BMAT(NPT+J,I) - DO 210 J=1,N - XBASE(J)=XBASE(J)+XOPT(J) - 210 XOPT(J)=ZERO + DO J=1,N + W(J)=ZERO + DO K=1,NPT + W(J)=W(J)+PQ(K)*XPT(K,J) + XPT(K,J)=XPT(K,J)-HALF*XOPT(J) + END DO + DO I=1,J + IH=IH+1 + IF (I < J) GQ(J)=GQ(J)+HQ(IH)*XOPT(I) + GQ(I)=GQ(I)+HQ(IH)*XOPT(J) + HQ(IH)=HQ(IH)+W(I)*XOPT(J)+XOPT(I)*W(J) + BMAT(NPT+I,J)=BMAT(NPT+J,I) + END DO + END DO + DO J=1,N + XBASE(J)=XBASE(J)+XOPT(J) + XOPT(J)=ZERO + END DO XOPTSQ=ZERO END IF ! @@ -338,50 +357,57 @@ SUBROUTINE NEWUOB (N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,XBASE, ! may be made later, if the choice of D by BIGLAG causes substantial ! cancellation in DENOM. ! - IF (KNEW .GT. 0) THEN - CALL BIGLAG (N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KNEW,DSTEP, - 1 D,ALPHA,VLAG,VLAG(NPT+1),W,W(NP),W(NP+N)) + IF (KNEW > 0) THEN + CALL BIGLAG (N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KNEW,DSTEP,D,ALPHA,VLAG,VLAG(NPT+1),W,W(NP),W(NP+N)) END IF ! ! Calculate VLAG and BETA for the current choice of D. The first NPT ! components of W_check will be held in W. ! - DO 230 K=1,NPT - SUMA=ZERO - SUMB=ZERO - SUM=ZERO - DO 220 J=1,N - SUMA=SUMA+XPT(K,J)*D(J) - SUMB=SUMB+XPT(K,J)*XOPT(J) - 220 SUM=SUM+BMAT(K,J)*D(J) - W(K)=SUMA*(HALF*SUMA+SUMB) - 230 VLAG(K)=SUM + DO K=1,NPT + SUMA=ZERO + SUMB=ZERO + SUM=ZERO + DO J=1,N + SUMA=SUMA+XPT(K,J)*D(J) + SUMB=SUMB+XPT(K,J)*XOPT(J) + SUM=SUM+BMAT(K,J)*D(J) + END DO + W(K)=SUMA*(HALF*SUMA+SUMB) + VLAG(K)=SUM + END DO BETA=ZERO - DO 250 K=1,NPTM - SUM=ZERO - DO 240 I=1,NPT - 240 SUM=SUM+ZMAT(I,K)*W(I) - IF (K .LT. IDZ) THEN - BETA=BETA+SUM*SUM - SUM=-SUM - ELSE - BETA=BETA-SUM*SUM - END IF - DO 250 I=1,NPT - 250 VLAG(I)=VLAG(I)+SUM*ZMAT(I,K) + DO K=1,NPTM + SUM=ZERO + DO I=1,NPT + SUM=SUM+ZMAT(I,K)*W(I) + END DO + IF (K < IDZ) THEN + BETA=BETA+SUM*SUM + SUM=-SUM + ELSE + BETA=BETA-SUM*SUM + END IF + DO I=1,NPT + VLAG(I)=VLAG(I)+SUM*ZMAT(I,K) + END DO + END DO BSUM=ZERO DX=ZERO - DO 280 J=1,N - SUM=ZERO - DO 260 I=1,NPT - 260 SUM=SUM+W(I)*BMAT(I,J) - BSUM=BSUM+SUM*D(J) - JP=NPT+J - DO 270 K=1,N - 270 SUM=SUM+BMAT(JP,K)*D(K) - VLAG(JP)=SUM - BSUM=BSUM+SUM*D(J) - 280 DX=DX+D(J)*XOPT(J) + DO J=1,N + SUM=ZERO + DO I=1,NPT + SUM=SUM+W(I)*BMAT(I,J) + END DO + BSUM=BSUM+SUM*D(J) + JP=NPT+J + DO K=1,N + SUM=SUM+BMAT(JP,K)*D(K) + END DO + VLAG(JP)=SUM + BSUM=BSUM+SUM*D(J) + DX=DX+D(J)*XOPT(J) + END DO BETA=DX*DX+DSQ*(XOPTSQ+DX+DX+HALF*DSQ)+BETA-BSUM VLAG(KOPT)=VLAG(KOPT)+ONE ! @@ -389,9 +415,9 @@ SUBROUTINE NEWUOB (N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,XBASE, ! then BIGDEN calculates an alternative model step, XNEW being used for ! working space. ! - IF (KNEW .GT. 0) THEN + IF (KNEW > 0) THEN TEMP=ONE+ALPHA*BETA/VLAG(KNEW)**2 - IF (DABS(TEMP) .LE. 0.8D0) THEN + IF (DABS(TEMP) <= 0.8D0) THEN CALL BIGDEN (N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KOPT, 1 KNEW,D,W,VLAG,BETA,XNEW,W(NDIM+1),W(6*NDIM+1)) END IF @@ -399,105 +425,109 @@ SUBROUTINE NEWUOB (N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,XBASE, ! ! Calculate the next value of the objective function. ! - 290 DO 300 I=1,N - XNEW(I)=XOPT(I)+D(I) - 300 X(I)=XBASE(I)+XNEW(I) + 290 DO I=1,N + XNEW(I)=XOPT(I)+D(I) + X(I)=XBASE(I)+XNEW(I) + END DO NF=NF+1 - 310 IF (NF .GT. NFTEST) THEN + 310 IF (NF > NFTEST) THEN NF=NF-1 - IF (IPRINT .GT. 0) PRINT 320 - 320 FORMAT (/4X,'Return from NEWUOA because CALFUN has been', - 1 ' called MAXFUN times.') + IF (IPRINT > 0) PRINT 320 + 320 FORMAT (/4X,'Return from NEWUOA because CALFUN has been called MAXFUN times.') GOTO 530 END IF CALL CALFUN (N,X,F) - IF (IPRINT .EQ. 3) THEN - PRINT 330, NF,F,(X(I),I=1,N) - 330 FORMAT (/4X,'Function number',I6,' F =',1PD18.10, - 1 ' The corresponding X is:'/(2X,5D15.6)) + IF (IPRINT == 3) THEN + PRINT 330, NF,F,(X(I),I=1,N) + 330 FORMAT (/4X,'Function number',I6,' F =',1PD18.10,' The corresponding X is:'/(2X,5D15.6)) END IF - IF (NF .LE. NPT) GOTO 70 - IF (KNEW .EQ. -1) GOTO 530 + IF (NF <= NPT) GOTO 70 + IF (KNEW == -1) GOTO 530 ! ! Use the quadratic model to predict the change in F due to the step D, ! and set DIFF to the error of this prediction. ! VQUAD=ZERO IH=0 - DO 340 J=1,N - VQUAD=VQUAD+D(J)*GQ(J) - DO 340 I=1,J - IH=IH+1 - TEMP=D(I)*XNEW(J)+D(J)*XOPT(I) - IF (I .EQ. J) TEMP=HALF*TEMP - 340 VQUAD=VQUAD+TEMP*HQ(IH) - DO 350 K=1,NPT - 350 VQUAD=VQUAD+PQ(K)*W(K) + DO J=1,N + VQUAD=VQUAD+D(J)*GQ(J) + DO I=1,J + IH=IH+1 + TEMP=D(I)*XNEW(J)+D(J)*XOPT(I) + IF (I == J) TEMP=HALF*TEMP + VQUAD=VQUAD+TEMP*HQ(IH) + END DO + END DO + DO K=1,NPT + VQUAD=VQUAD+PQ(K)*W(K) + END DO DIFF=F-FOPT-VQUAD DIFFC=DIFFB DIFFB=DIFFA DIFFA=DABS(DIFF) - IF (DNORM .GT. RHO) NFSAV=NF + IF (DNORM > RHO) NFSAV=NF ! ! Update FOPT and XOPT if the new F is the least value of the objective ! function so far. The branch when KNEW is positive occurs if D is not ! a trust region step. ! FSAVE=FOPT - IF (F .LT. FOPT) THEN - FOPT=F - XOPTSQ=ZERO - DO 360 I=1,N - XOPT(I)=XNEW(I) - 360 XOPTSQ=XOPTSQ+XOPT(I)**2 + IF (F < FOPT) THEN + FOPT=F + XOPTSQ=ZERO + DO I=1,N + XOPT(I)=XNEW(I) + XOPTSQ=XOPTSQ+XOPT(I)**2 + END DO END IF KSAVE=KNEW - IF (KNEW .GT. 0) GOTO 410 + IF (KNEW > 0) GOTO 410 ! ! Pick the next value of DELTA after a trust region step. ! - IF (VQUAD .GE. ZERO) THEN - IF (IPRINT .GT. 0) PRINT 370 - 370 FORMAT (/4X,'Return from NEWUOA because a trust', - 1 ' region step has failed to reduce Q.') + IF (VQUAD >= ZERO) THEN + IF (IPRINT > 0) PRINT 370 + 370 FORMAT (/4X,'Return from NEWUOA because a trust region step has failed to reduce Q.') GOTO 530 END IF RATIO=(F-FSAVE)/VQUAD - IF (RATIO .LE. TENTH) THEN + IF (RATIO <= TENTH) THEN DELTA=HALF*DNORM ELSE IF (RATIO. LE. 0.7D0) THEN DELTA=DMAX1(HALF*DELTA,DNORM) ELSE DELTA=DMAX1(HALF*DELTA,DNORM+DNORM) END IF - IF (DELTA .LE. 1.5D0*RHO) DELTA=RHO + IF (DELTA <= 1.5D0*RHO) DELTA=RHO ! ! Set KNEW to the index of the next interpolation point to be deleted. ! RHOSQ=DMAX1(TENTH*DELTA,RHO)**2 KTEMP=0 DETRAT=ZERO - IF (F .GE. FSAVE) THEN + IF (F >= FSAVE) THEN KTEMP=KOPT DETRAT=ONE END IF - DO 400 K=1,NPT - HDIAG=ZERO - DO 380 J=1,NPTM - TEMP=ONE - IF (J .LT. IDZ) TEMP=-ONE - 380 HDIAG=HDIAG+TEMP*ZMAT(K,J)**2 - TEMP=DABS(BETA*HDIAG+VLAG(K)**2) - DISTSQ=ZERO - DO 390 J=1,N - 390 DISTSQ=DISTSQ+(XPT(K,J)-XOPT(J))**2 - IF (DISTSQ .GT. RHOSQ) TEMP=TEMP*(DISTSQ/RHOSQ)*(DISTSQ/RHOSQ)*(DISTSQ/RHOSQ) - IF (TEMP .GT. DETRAT .AND. K .NE. KTEMP) THEN - DETRAT=TEMP - KNEW=K - END IF - 400 CONTINUE - IF (KNEW .EQ. 0) GOTO 460 + DO K=1,NPT + HDIAG=ZERO + DO J=1,NPTM + TEMP=ONE + IF (J < IDZ) TEMP=-ONE + HDIAG=HDIAG+TEMP*ZMAT(K,J)**2 + END DO + TEMP=DABS(BETA*HDIAG+VLAG(K)**2) + DISTSQ=ZERO + DO J=1,N + DISTSQ=DISTSQ+(XPT(K,J)-XOPT(J))**2 + END DO + IF (DISTSQ > RHOSQ) TEMP=TEMP*(DISTSQ/RHOSQ)*(DISTSQ/RHOSQ)*(DISTSQ/RHOSQ) + IF (TEMP > DETRAT .AND. K /= KTEMP) THEN + DETRAT=TEMP + KNEW=K + END IF + END DO + IF (KNEW == 0) GOTO 460 ! ! Update BMAT, ZMAT and IDZ, so that the KNEW-th interpolation point ! can be moved. Begin the updating of the quadratic model, starting @@ -506,51 +536,59 @@ SUBROUTINE NEWUOB (N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,XBASE, 410 CALL UPDATE (N,NPT,BMAT,ZMAT,IDZ,NDIM,VLAG,BETA,KNEW,W) FVAL(KNEW)=F IH=0 - DO 420 I=1,N - TEMP=PQ(KNEW)*XPT(KNEW,I) - DO 420 J=1,I - IH=IH+1 - 420 HQ(IH)=HQ(IH)+TEMP*XPT(KNEW,J) + DO I=1,N + TEMP=PQ(KNEW)*XPT(KNEW,I) + DO J=1,I + IH=IH+1 + HQ(IH)=HQ(IH)+TEMP*XPT(KNEW,J) + END DO + END DO PQ(KNEW)=ZERO ! ! Update the other second derivative parameters, and then the gradient ! vector of the model. Also include the new interpolation point. ! - DO 440 J=1,NPTM - TEMP=DIFF*ZMAT(KNEW,J) - IF (J .LT. IDZ) TEMP=-TEMP - DO 440 K=1,NPT - 440 PQ(K)=PQ(K)+TEMP*ZMAT(K,J) + DO J=1,NPTM + TEMP=DIFF*ZMAT(KNEW,J) + IF (J < IDZ) TEMP=-TEMP + DO K=1,NPT + PQ(K)=PQ(K)+TEMP*ZMAT(K,J) + END DO + END DO GQSQ=ZERO - DO 450 I=1,N - GQ(I)=GQ(I)+DIFF*BMAT(KNEW,I) - GQSQ=GQSQ+GQ(I)**2 - 450 XPT(KNEW,I)=XNEW(I) + DO I=1,N + GQ(I)=GQ(I)+DIFF*BMAT(KNEW,I) + GQSQ=GQSQ+GQ(I)**2 + XPT(KNEW,I)=XNEW(I) + END DO ! ! If a trust region step makes a small change to the objective function, ! then calculate the gradient of the least Frobenius norm interpolant at ! XBASE, and store it in W, using VLAG for a vector of right hand sides. ! - IF (KSAVE .EQ. 0 .AND. DELTA .EQ. RHO) THEN - IF (DABS(RATIO) .GT. 1.0D-2) THEN + IF (KSAVE == 0 .AND. DELTA == RHO) THEN + IF (DABS(RATIO) > 1.0D-2) THEN ITEST=0 ELSE - DO 700 K=1,NPT - 700 VLAG(K)=FVAL(K)-FVAL(KOPT) + DO K=1,NPT + VLAG(K)=FVAL(K)-FVAL(KOPT) + END DO GISQ=ZERO - DO 720 I=1,N - SUM=ZERO - DO 710 K=1,NPT - 710 SUM=SUM+BMAT(K,I)*VLAG(K) - GISQ=GISQ+SUM*SUM - 720 W(I)=SUM + DO I=1,N + SUM=ZERO + DO K=1,NPT + SUM=SUM+BMAT(K,I)*VLAG(K) + END DO + GISQ=GISQ+SUM*SUM + W(I)=SUM + END DO ! ! Test whether to replace the new quadratic model by the least Frobenius ! norm interpolant, making the replacement if the test is satisfied. ! ITEST=ITEST+1 - IF (GQSQ .LT. 1.0D2*GISQ) ITEST=0 - do_replace = (ITEST .GE. 3) + IF (GQSQ < 1.0D2*GISQ) ITEST=0 + do_replace = (ITEST >= 3) if (.not. do_replace) then ! check for "invalid" value do k=1,npt if (fval(k) > max_valid_value) then @@ -561,81 +599,86 @@ SUBROUTINE NEWUOB (N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,XBASE, end do end if IF (do_replace) THEN - DO 730 I=1,N - 730 GQ(I)=W(I) - DO 740 IH=1,NH - 740 HQ(IH)=ZERO - DO 760 J=1,NPTM - W(J)=ZERO - DO 750 K=1,NPT - 750 W(J)=W(J)+VLAG(K)*ZMAT(K,J) - 760 IF (J .LT. IDZ) W(J)=-W(J) - DO 770 K=1,NPT - PQ(K)=ZERO - DO 770 J=1,NPTM - 770 PQ(K)=PQ(K)+ZMAT(K,J)*W(J) + DO I=1,N + GQ(I)=W(I) + END DO + DO IH=1,NH + HQ(IH)=ZERO + END DO + DO J=1,NPTM + W(J)=ZERO + DO K=1,NPT + W(J)=W(J)+VLAG(K)*ZMAT(K,J) + END DO + IF (J < IDZ) W(J)=-W(J) + END DO + DO K=1,NPT + PQ(K)=ZERO + DO J=1,NPTM + PQ(K)=PQ(K)+ZMAT(K,J)*W(J) + END DO + END DO ITEST=0 END IF END IF END IF - IF (F .LT. FSAVE) KOPT=KNEW + IF (F < FSAVE) KOPT=KNEW ! ! If a trust region step has provided a sufficient decrease in F, then ! branch for another trust region calculation. The case KSAVE>0 occurs ! when the new function value was calculated by a model step. ! - IF (F .LE. FSAVE+TENTH*VQUAD) GOTO 100 - IF (KSAVE .GT. 0) GOTO 100 + IF (F <= FSAVE+TENTH*VQUAD) GOTO 100 + IF (KSAVE > 0) GOTO 100 ! ! Alternatively, find out if the interpolation points are close enough ! to the best point so far. ! KNEW=0 460 DISTSQ=4.0D0*DELTA*DELTA - DO 480 K=1,NPT - SUM=ZERO - DO 470 J=1,N - 470 SUM=SUM+(XPT(K,J)-XOPT(J))**2 - IF (SUM .GT. DISTSQ) THEN - KNEW=K - DISTSQ=SUM - END IF - 480 CONTINUE + DO K=1,NPT + SUM=ZERO + DO J=1,N + SUM=SUM+(XPT(K,J)-XOPT(J))**2 + END DO + IF (SUM > DISTSQ) THEN + KNEW=K + DISTSQ=SUM + END IF + END DO ! ! If KNEW is positive, then set DSTEP, and branch back for the next ! iteration, which will generate a "model step". ! - IF (KNEW .GT. 0) THEN + IF (KNEW > 0) THEN DSTEP=DMAX1(DMIN1(TENTH*DSQRT(DISTSQ),HALF*DELTA),RHO) DSQ=DSTEP*DSTEP GOTO 120 END IF - IF (RATIO .GT. ZERO) GOTO 100 - IF (DMAX1(DELTA,DNORM) .GT. RHO) GOTO 100 + IF (RATIO > ZERO) GOTO 100 + IF (DMAX1(DELTA,DNORM) > RHO) GOTO 100 ! ! The calculations with the current value of RHO are complete. Pick the ! next values of RHO and DELTA. ! - 490 IF (RHO .GT. RHOEND) THEN + 490 IF (RHO > RHOEND) THEN DELTA=HALF*RHO RATIO=RHO/RHOEND - IF (RATIO .LE. 16.0D0) THEN + IF (RATIO <= 16.0D0) THEN RHO=RHOEND - ELSE IF (RATIO .LE. 250.0D0) THEN + ELSE IF (RATIO <= 250.0D0) THEN RHO=DSQRT(RATIO)*RHOEND ELSE RHO=TENTH*RHO END IF DELTA=DMAX1(DELTA,RHO) - IF (IPRINT .GE. 2) THEN - IF (IPRINT .GE. 3) PRINT 500 + IF (IPRINT >= 2) THEN + IF (IPRINT >= 3) PRINT 500 500 FORMAT (5X) PRINT 510, RHO,NF - 510 FORMAT (/4X,'New RHO =',1PD11.4,5X,'Number of', - 1 ' function values =',I6) + 510 FORMAT (/4X,'New RHO =',1PD11.4,5X,'Number of function values =',I6) PRINT 520, FOPT,(XBASE(I)+XOPT(I),I=1,N) - 520 FORMAT (4X,'Least value of F =',1PD23.15,9X, - 1 'The corresponding X is:'/(2X,5D15.6)) + 520 FORMAT (4X,'Least value of F =',1PD23.15,9X,'The corresponding X is:'/(2X,5D15.6)) END IF GOTO 90 END IF @@ -643,24 +686,23 @@ SUBROUTINE NEWUOB (N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,XBASE, ! Return from the calculation, after another Newton-Raphson step, if ! it is too short to have been tried before. ! - IF (KNEW .EQ. -1) GOTO 290 - 530 IF (FOPT .LE. F) THEN - DO 540 I=1,N - 540 X(I)=XBASE(I)+XOPT(I) + IF (KNEW == -1) GOTO 290 + 530 IF (FOPT <= F) THEN + DO I=1,N + X(I)=XBASE(I)+XOPT(I) + END DO F=FOPT END IF - IF (IPRINT .GE. 1) THEN + IF (IPRINT >= 1) THEN PRINT 550, NF - 550 FORMAT (/4X,'At the return from NEWUOA',5X, - 1 'Number of function values =',I6) + 550 FORMAT (/4X,'At the return from NEWUOA',5X,'Number of function values =',I6) PRINT 520, F,(X(I),I=1,N) END IF RETURN END SUBROUTINE NEWUOB - SUBROUTINE BIGDEN (N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KOPT, - 1 KNEW,D,W,VLAG,BETA,S,WVEC,PROD) - IMPLICIT REAL*8 (A-H,O-Z) + SUBROUTINE BIGDEN(N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KOPT,KNEW,D,W,VLAG,BETA,S,WVEC,PROD) + IMPLICIT real(dp) (A-H,O-Z) DIMENSION XOPT(*),XPT(NPT,*),BMAT(NDIM,*),ZMAT(NPT,*),D(*), 1 W(*),VLAG(*),S(*),WVEC(NDIM,*),PROD(NDIM,*) DIMENSION DEN(9),DENEX(9),PAR(9) @@ -701,13 +743,16 @@ SUBROUTINE BIGDEN (N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KOPT, ! Store the first NPT elements of the KNEW-th column of H in W(N+1) ! to W(N+NPT). ! - DO 10 K=1,NPT - 10 W(N+K)=ZERO - DO 20 J=1,NPTM - TEMP=ZMAT(KNEW,J) - IF (J .LT. IDZ) TEMP=-TEMP - DO 20 K=1,NPT - 20 W(N+K)=W(N+K)+TEMP*ZMAT(K,J) + DO K=1,NPT + W(N+K)=ZERO + END DO + DO J=1,NPTM + TEMP=ZMAT(KNEW,J) + IF (J < IDZ) TEMP=-TEMP + DO K=1,NPT + W(N+K)=W(N+K)+TEMP*ZMAT(K,J) + END DO + END DO ALPHA=W(N+KNEW) ! ! The initial search direction D is taken from the last call of BIGLAG, @@ -719,33 +764,36 @@ SUBROUTINE BIGDEN (N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KOPT, DS=ZERO SS=ZERO XOPTSQ=ZERO - DO 30 I=1,N - DD=DD+D(I)**2 - S(I)=XPT(KNEW,I)-XOPT(I) - DS=DS+D(I)*S(I) - SS=SS+S(I)**2 - 30 XOPTSQ=XOPTSQ+XOPT(I)**2 - IF (DS*DS .GT. 0.99D0*DD*SS) THEN + DO I=1,N + DD=DD+D(I)**2 + S(I)=XPT(KNEW,I)-XOPT(I) + DS=DS+D(I)*S(I) + SS=SS+S(I)**2 + XOPTSQ=XOPTSQ+XOPT(I)**2 + END DO + IF (DS*DS > 0.99D0*DD*SS) THEN KSAV=KNEW DTEST=DS*DS/SS - DO 50 K=1,NPT - IF (K .NE. KOPT) THEN - DSTEMP=ZERO - SSTEMP=ZERO - DO 40 I=1,N - DIFF=XPT(K,I)-XOPT(I) - DSTEMP=DSTEMP+D(I)*DIFF - 40 SSTEMP=SSTEMP+DIFF*DIFF - IF (DSTEMP*DSTEMP/SSTEMP .LT. DTEST) THEN - KSAV=K - DTEST=DSTEMP*DSTEMP/SSTEMP - DS=DSTEMP - SS=SSTEMP - END IF - END IF - 50 CONTINUE - DO 60 I=1,N - 60 S(I)=XPT(KSAV,I)-XOPT(I) + DO K=1,NPT + IF (K /= KOPT) THEN + DSTEMP=ZERO + SSTEMP=ZERO + DO I=1,N + DIFF=XPT(K,I)-XOPT(I) + DSTEMP=DSTEMP+D(I)*DIFF + SSTEMP=SSTEMP+DIFF*DIFF + END DO + IF (DSTEMP*DSTEMP/SSTEMP < DTEST) THEN + KSAV=K + DTEST=DSTEMP*DSTEMP/SSTEMP + DS=DSTEMP + SS=SSTEMP + END IF + END IF + END DO + DO I=1,N + S(I)=XPT(KSAV,I)-XOPT(I) + END DO END IF SSDEN=DD*SS-DS*DS ITERC=0 @@ -758,10 +806,11 @@ SUBROUTINE BIGDEN (N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KOPT, TEMP=ONE/DSQRT(SSDEN) XOPTD=ZERO XOPTS=ZERO - DO 80 I=1,N - S(I)=TEMP*(DD*S(I)-DS*D(I)) - XOPTD=XOPTD+XOPT(I)*D(I) - 80 XOPTS=XOPTS+XOPT(I)*S(I) + DO I=1,N + S(I)=TEMP*(DD*S(I)-DS*D(I)) + XOPTD=XOPTD+XOPT(I)*D(I) + XOPTS=XOPTS+XOPT(I)*S(I) + END DO ! ! Set the coefficients of the first two terms of BETA. ! @@ -772,92 +821,108 @@ SUBROUTINE BIGDEN (N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KOPT, DEN(3)=TWO*XOPTS*DD DEN(4)=TEMPA-TEMPB DEN(5)=XOPTD*XOPTS - DO 90 I=6,9 - 90 DEN(I)=ZERO + DO I=6,9 + DEN(I)=ZERO + END DO ! ! Put the coefficients of Wcheck in WVEC. ! - DO 110 K=1,NPT - TEMPA=ZERO - TEMPB=ZERO - TEMPC=ZERO - DO 100 I=1,N - TEMPA=TEMPA+XPT(K,I)*D(I) - TEMPB=TEMPB+XPT(K,I)*S(I) - 100 TEMPC=TEMPC+XPT(K,I)*XOPT(I) - WVEC(K,1)=QUART*(TEMPA*TEMPA+TEMPB*TEMPB) - WVEC(K,2)=TEMPA*TEMPC - WVEC(K,3)=TEMPB*TEMPC - WVEC(K,4)=QUART*(TEMPA*TEMPA-TEMPB*TEMPB) - 110 WVEC(K,5)=HALF*TEMPA*TEMPB - DO 120 I=1,N - IP=I+NPT - WVEC(IP,1)=ZERO - WVEC(IP,2)=D(I) - WVEC(IP,3)=S(I) - WVEC(IP,4)=ZERO - 120 WVEC(IP,5)=ZERO + DO K=1,NPT + TEMPA=ZERO + TEMPB=ZERO + TEMPC=ZERO + DO I=1,N + TEMPA=TEMPA+XPT(K,I)*D(I) + TEMPB=TEMPB+XPT(K,I)*S(I) + TEMPC=TEMPC+XPT(K,I)*XOPT(I) + END DO + WVEC(K,1)=QUART*(TEMPA*TEMPA+TEMPB*TEMPB) + WVEC(K,2)=TEMPA*TEMPC + WVEC(K,3)=TEMPB*TEMPC + WVEC(K,4)=QUART*(TEMPA*TEMPA-TEMPB*TEMPB) + WVEC(K,5)=HALF*TEMPA*TEMPB + END DO + DO I=1,N + IP=I+NPT + WVEC(IP,1)=ZERO + WVEC(IP,2)=D(I) + WVEC(IP,3)=S(I) + WVEC(IP,4)=ZERO + WVEC(IP,5)=ZERO + END DO ! ! Put the coefficents of THETA*Wcheck in PROD. ! - DO 190 JC=1,5 - NW=NPT - IF (JC .EQ. 2 .OR. JC .EQ. 3) NW=NDIM - DO 130 K=1,NPT - 130 PROD(K,JC)=ZERO - DO 150 J=1,NPTM - SUM=ZERO - DO 140 K=1,NPT - 140 SUM=SUM+ZMAT(K,J)*WVEC(K,JC) - IF (J .LT. IDZ) SUM=-SUM - DO 150 K=1,NPT - 150 PROD(K,JC)=PROD(K,JC)+SUM*ZMAT(K,J) - IF (NW .EQ. NDIM) THEN - DO 170 K=1,NPT - SUM=ZERO - DO 160 J=1,N - 160 SUM=SUM+BMAT(K,J)*WVEC(NPT+J,JC) - 170 PROD(K,JC)=PROD(K,JC)+SUM - END IF - DO 190 J=1,N - SUM=ZERO - DO 180 I=1,NW - 180 SUM=SUM+BMAT(I,J)*WVEC(I,JC) - 190 PROD(NPT+J,JC)=SUM + DO JC=1,5 + NW=NPT + IF (JC == 2 .OR. JC == 3) NW=NDIM + DO K=1,NPT + PROD(K,JC)=ZERO + END DO + DO J=1,NPTM + SUM=ZERO + DO K=1,NPT + SUM=SUM+ZMAT(K,J)*WVEC(K,JC) + END DO + IF (J < IDZ) SUM=-SUM + DO K=1,NPT + PROD(K,JC)=PROD(K,JC)+SUM*ZMAT(K,J) + END DO + END DO + IF (NW == NDIM) THEN + DO K=1,NPT + SUM=ZERO + DO J=1,N + SUM=SUM+BMAT(K,J)*WVEC(NPT+J,JC) + END DO + PROD(K,JC)=PROD(K,JC)+SUM + END DO + END IF + DO J=1,N + SUM=ZERO + DO I=1,NW + SUM=SUM+BMAT(I,J)*WVEC(I,JC) + END DO + PROD(NPT+J,JC)=SUM + END DO + END DO ! ! Include in DEN the part of BETA that depends on THETA. ! - DO 210 K=1,NDIM - SUM=ZERO - DO 200 I=1,5 - PAR(I)=HALF*PROD(K,I)*WVEC(K,I) - 200 SUM=SUM+PAR(I) - DEN(1)=DEN(1)-PAR(1)-SUM - TEMPA=PROD(K,1)*WVEC(K,2)+PROD(K,2)*WVEC(K,1) - TEMPB=PROD(K,2)*WVEC(K,4)+PROD(K,4)*WVEC(K,2) - TEMPC=PROD(K,3)*WVEC(K,5)+PROD(K,5)*WVEC(K,3) - DEN(2)=DEN(2)-TEMPA-HALF*(TEMPB+TEMPC) - DEN(6)=DEN(6)-HALF*(TEMPB-TEMPC) - TEMPA=PROD(K,1)*WVEC(K,3)+PROD(K,3)*WVEC(K,1) - TEMPB=PROD(K,2)*WVEC(K,5)+PROD(K,5)*WVEC(K,2) - TEMPC=PROD(K,3)*WVEC(K,4)+PROD(K,4)*WVEC(K,3) - DEN(3)=DEN(3)-TEMPA-HALF*(TEMPB-TEMPC) - DEN(7)=DEN(7)-HALF*(TEMPB+TEMPC) - TEMPA=PROD(K,1)*WVEC(K,4)+PROD(K,4)*WVEC(K,1) - DEN(4)=DEN(4)-TEMPA-PAR(2)+PAR(3) - TEMPA=PROD(K,1)*WVEC(K,5)+PROD(K,5)*WVEC(K,1) - TEMPB=PROD(K,2)*WVEC(K,3)+PROD(K,3)*WVEC(K,2) - DEN(5)=DEN(5)-TEMPA-HALF*TEMPB - DEN(8)=DEN(8)-PAR(4)+PAR(5) - TEMPA=PROD(K,4)*WVEC(K,5)+PROD(K,5)*WVEC(K,4) - 210 DEN(9)=DEN(9)-HALF*TEMPA + DO K=1,NDIM + SUM=ZERO + DO I=1,5 + PAR(I)=HALF*PROD(K,I)*WVEC(K,I) + SUM=SUM+PAR(I) + END DO + DEN(1)=DEN(1)-PAR(1)-SUM + TEMPA=PROD(K,1)*WVEC(K,2)+PROD(K,2)*WVEC(K,1) + TEMPB=PROD(K,2)*WVEC(K,4)+PROD(K,4)*WVEC(K,2) + TEMPC=PROD(K,3)*WVEC(K,5)+PROD(K,5)*WVEC(K,3) + DEN(2)=DEN(2)-TEMPA-HALF*(TEMPB+TEMPC) + DEN(6)=DEN(6)-HALF*(TEMPB-TEMPC) + TEMPA=PROD(K,1)*WVEC(K,3)+PROD(K,3)*WVEC(K,1) + TEMPB=PROD(K,2)*WVEC(K,5)+PROD(K,5)*WVEC(K,2) + TEMPC=PROD(K,3)*WVEC(K,4)+PROD(K,4)*WVEC(K,3) + DEN(3)=DEN(3)-TEMPA-HALF*(TEMPB-TEMPC) + DEN(7)=DEN(7)-HALF*(TEMPB+TEMPC) + TEMPA=PROD(K,1)*WVEC(K,4)+PROD(K,4)*WVEC(K,1) + DEN(4)=DEN(4)-TEMPA-PAR(2)+PAR(3) + TEMPA=PROD(K,1)*WVEC(K,5)+PROD(K,5)*WVEC(K,1) + TEMPB=PROD(K,2)*WVEC(K,3)+PROD(K,3)*WVEC(K,2) + DEN(5)=DEN(5)-TEMPA-HALF*TEMPB + DEN(8)=DEN(8)-PAR(4)+PAR(5) + TEMPA=PROD(K,4)*WVEC(K,5)+PROD(K,5)*WVEC(K,4) + DEN(9)=DEN(9)-HALF*TEMPA + END DO ! ! Extend DEN so that it holds all the coefficients of DENOM. ! SUM=ZERO - DO 220 I=1,5 - PAR(I)=HALF*PROD(KNEW,I)**2 - 220 SUM=SUM+PAR(I) + DO I=1,5 + PAR(I)=HALF*PROD(KNEW,I)**2 + SUM=SUM+PAR(I) + END DO DENEX(1)=ALPHA*DEN(1)+PAR(1)+SUM TEMPA=TWO*PROD(KNEW,1)*PROD(KNEW,2) TEMPB=PROD(KNEW,2)*PROD(KNEW,4) @@ -883,104 +948,117 @@ SUBROUTINE BIGDEN (N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KOPT, DENMAX=SUM ISAVE=0 IU=49 - TEMP=TWOPI/DFLOAT(IU+1) + TEMP=TWOPI/DBLE(IU+1) PAR(1)=ONE - DO 250 I=1,IU - ANGLE=DFLOAT(I)*TEMP - PAR(2)=cos(ANGLE) - PAR(3)=sin(ANGLE) - DO 230 J=4,8,2 - PAR(J)=PAR(2)*PAR(J-2)-PAR(3)*PAR(J-1) - 230 PAR(J+1)=PAR(2)*PAR(J-1)+PAR(3)*PAR(J-2) - SUMOLD=SUM - SUM=ZERO - DO 240 J=1,9 - 240 SUM=SUM+DENEX(J)*PAR(J) - IF (DABS(SUM) .GT. DABS(DENMAX)) THEN - DENMAX=SUM - ISAVE=I - TEMPA=SUMOLD - ELSE IF (I .EQ. ISAVE+1) THEN - TEMPB=SUM - END IF - 250 CONTINUE - IF (ISAVE .EQ. 0) TEMPA=SUM - IF (ISAVE .EQ. IU) TEMPB=DENOLD + DO I=1,IU + ANGLE=DBLE(I)*TEMP + PAR(2)=cos(ANGLE) + PAR(3)=sin(ANGLE) + DO J=4,8,2 + PAR(J)=PAR(2)*PAR(J-2)-PAR(3)*PAR(J-1) + PAR(J+1)=PAR(2)*PAR(J-1)+PAR(3)*PAR(J-2) + END DO + SUMOLD=SUM + SUM=ZERO + DO J=1,9 + SUM=SUM+DENEX(J)*PAR(J) + END DO + IF (DABS(SUM) > DABS(DENMAX)) THEN + DENMAX=SUM + ISAVE=I + TEMPA=SUMOLD + ELSE IF (I == ISAVE+1) THEN + TEMPB=SUM + END IF + END DO + IF (ISAVE == 0) TEMPA=SUM + IF (ISAVE == IU) TEMPB=DENOLD STEP=ZERO - IF (TEMPA .NE. TEMPB) THEN + IF (TEMPA /= TEMPB) THEN TEMPA=TEMPA-DENMAX TEMPB=TEMPB-DENMAX STEP=HALF*(TEMPA-TEMPB)/(TEMPA+TEMPB) END IF - ANGLE=TEMP*(DFLOAT(ISAVE)+STEP) + ANGLE=TEMP*(DBLE(ISAVE)+STEP) ! ! Calculate the new parameters of the denominator, the new VLAG vector ! and the new D. Then test for convergence. ! PAR(2)=cos(ANGLE) PAR(3)=sin(ANGLE) - DO 260 J=4,8,2 - PAR(J)=PAR(2)*PAR(J-2)-PAR(3)*PAR(J-1) - 260 PAR(J+1)=PAR(2)*PAR(J-1)+PAR(3)*PAR(J-2) + DO J=4,8,2 + PAR(J)=PAR(2)*PAR(J-2)-PAR(3)*PAR(J-1) + PAR(J+1)=PAR(2)*PAR(J-1)+PAR(3)*PAR(J-2) + END DO BETA=ZERO DENMAX=ZERO - DO 270 J=1,9 - BETA=BETA+DEN(J)*PAR(J) - 270 DENMAX=DENMAX+DENEX(J)*PAR(J) - DO 280 K=1,NDIM - VLAG(K)=ZERO - DO 280 J=1,5 - 280 VLAG(K)=VLAG(K)+PROD(K,J)*PAR(J) + DO J=1,9 + BETA=BETA+DEN(J)*PAR(J) + DENMAX=DENMAX+DENEX(J)*PAR(J) + END DO + DO K=1,NDIM + VLAG(K)=ZERO + DO J=1,5 + VLAG(K)=VLAG(K)+PROD(K,J)*PAR(J) + END DO + END DO TAU=VLAG(KNEW) DD=ZERO TEMPA=ZERO TEMPB=ZERO - DO 290 I=1,N - D(I)=PAR(2)*D(I)+PAR(3)*S(I) - W(I)=XOPT(I)+D(I) - DD=DD+D(I)**2 - TEMPA=TEMPA+D(I)*W(I) - 290 TEMPB=TEMPB+W(I)*W(I) - IF (ITERC .GE. N) GOTO 340 - IF (ITERC .GT. 1) DENSAV=DMAX1(DENSAV,DENOLD) - IF (DABS(DENMAX) .LE. 1.1D0*DABS(DENSAV)) GOTO 340 + DO I=1,N + D(I)=PAR(2)*D(I)+PAR(3)*S(I) + W(I)=XOPT(I)+D(I) + DD=DD+D(I)**2 + TEMPA=TEMPA+D(I)*W(I) + TEMPB=TEMPB+W(I)*W(I) + END DO + IF (ITERC >= N) GOTO 340 + IF (ITERC > 1) DENSAV=DMAX1(DENSAV,DENOLD) + IF (DABS(DENMAX) <= 1.1D0*DABS(DENSAV)) GOTO 340 DENSAV=DENMAX ! ! Set S to half the gradient of the denominator with respect to D. ! Then branch for the next iteration. ! - DO 300 I=1,N - TEMP=TEMPA*XOPT(I)+TEMPB*D(I)-VLAG(NPT+I) - 300 S(I)=TAU*BMAT(KNEW,I)+ALPHA*TEMP - DO 320 K=1,NPT - SUM=ZERO - DO 310 J=1,N - 310 SUM=SUM+XPT(K,J)*W(J) - TEMP=(TAU*W(N+K)-ALPHA*VLAG(K))*SUM - DO 320 I=1,N - 320 S(I)=S(I)+TEMP*XPT(K,I) + DO I=1,N + TEMP=TEMPA*XOPT(I)+TEMPB*D(I)-VLAG(NPT+I) + S(I)=TAU*BMAT(KNEW,I)+ALPHA*TEMP + END DO + DO K=1,NPT + SUM=ZERO + DO J=1,N + SUM=SUM+XPT(K,J)*W(J) + END DO + TEMP=(TAU*W(N+K)-ALPHA*VLAG(K))*SUM + DO I=1,N + S(I)=S(I)+TEMP*XPT(K,I) + END DO + END DO SS=ZERO DS=ZERO - DO 330 I=1,N - SS=SS+S(I)**2 - 330 DS=DS+D(I)*S(I) + DO I=1,N + SS=SS+S(I)**2 + DS=DS+D(I)*S(I) + END DO SSDEN=DD*SS-DS*DS - IF (SSDEN .GE. 1.0D-8*DD*SS) GOTO 70 + IF (SSDEN >= 1.0D-8*DD*SS) GOTO 70 ! ! Set the vector W before the RETURN from the subroutine. ! - 340 DO 350 K=1,NDIM + 340 DO K=1,NDIM W(K)=ZERO - DO 350 J=1,5 - 350 W(K)=W(K)+WVEC(K,J)*PAR(J) + DO J=1,5 + W(K)=W(K)+WVEC(K,J)*PAR(J) + END DO + END DO VLAG(KOPT)=VLAG(KOPT)+ONE RETURN END SUBROUTINE BIGDEN - SUBROUTINE BIGLAG (N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KNEW, - 1 DELTA,D,ALPHA,HCOL,GC,GD,S,W) - IMPLICIT REAL*8 (A-H,O-Z) + SUBROUTINE BIGLAG (N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KNEW,DELTA,D,ALPHA,HCOL,GC,GD,S,W) + IMPLICIT real(dp) (A-H,O-Z) DIMENSION XOPT(*),XPT(NPT,*),BMAT(NDIM,*),ZMAT(NPT,*),D(*), 1 HCOL(*),GC(*),GD(*),S(*),W(*) ! @@ -998,7 +1076,7 @@ SUBROUTINE BIGLAG (N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KNEW, ! HCOL, GC, GD, S and W will be used for working space. ! ! The step D is calculated in a way that attempts to maximize the modulus -! of LFUNC(XOPT+D), subject to the bound ||D|| .LE. DELTA, where LFUNC is +! of LFUNC(XOPT+D), subject to the bound ||D|| <= DELTA, where LFUNC is ! the KNEW-th Lagrange function. ! ! Set some constants. @@ -1014,35 +1092,42 @@ SUBROUTINE BIGLAG (N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KNEW, ! KNEW-th column of H. ! ITERC=0 - DO 10 K=1,NPT - 10 HCOL(K)=ZERO - DO 20 J=1,NPTM - TEMP=ZMAT(KNEW,J) - IF (J .LT. IDZ) TEMP=-TEMP - DO 20 K=1,NPT - 20 HCOL(K)=HCOL(K)+TEMP*ZMAT(K,J) + DO K=1,NPT + HCOL(K)=ZERO + END DO + DO J=1,NPTM + TEMP=ZMAT(KNEW,J) + IF (J < IDZ) TEMP=-TEMP + DO K=1,NPT + HCOL(K)=HCOL(K)+TEMP*ZMAT(K,J) + END DO + END DO ALPHA=HCOL(KNEW) ! ! Set the unscaled initial direction D. Form the gradient of LFUNC at ! XOPT, and multiply D by the second derivative matrix of LFUNC. ! DD=ZERO - DO 30 I=1,N - D(I)=XPT(KNEW,I)-XOPT(I) - GC(I)=BMAT(KNEW,I) - GD(I)=ZERO - 30 DD=DD+D(I)**2 - DO 50 K=1,NPT - TEMP=ZERO - SUM=ZERO - DO 40 J=1,N - TEMP=TEMP+XPT(K,J)*XOPT(J) - 40 SUM=SUM+XPT(K,J)*D(J) - TEMP=HCOL(K)*TEMP - SUM=HCOL(K)*SUM - DO 50 I=1,N - GC(I)=GC(I)+TEMP*XPT(K,I) - 50 GD(I)=GD(I)+SUM*XPT(K,I) + DO I=1,N + D(I)=XPT(KNEW,I)-XOPT(I) + GC(I)=BMAT(KNEW,I) + GD(I)=ZERO + DD=DD+D(I)**2 + END DO + DO K=1,NPT + TEMP=ZERO + SUM=ZERO + DO J=1,N + TEMP=TEMP+XPT(K,J)*XOPT(J) + SUM=SUM+XPT(K,J)*D(J) + END DO + TEMP=HCOL(K)*TEMP + SUM=HCOL(K)*SUM + DO I=1,N + GC(I)=GC(I)+TEMP*XPT(K,I) + GD(I)=GD(I)+SUM*XPT(K,I) + END DO + END DO ! ! Scale D and GD, with a sign change if required. Set S to another ! vector in the initial two dimensional subspace. @@ -1050,20 +1135,22 @@ SUBROUTINE BIGLAG (N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KNEW, GG=ZERO SP=ZERO DHD=ZERO - DO 60 I=1,N - GG=GG+GC(I)**2 - SP=SP+D(I)*GC(I) - 60 DHD=DHD+D(I)*GD(I) + DO I=1,N + GG=GG+GC(I)**2 + SP=SP+D(I)*GC(I) + DHD=DHD+D(I)*GD(I) + END DO SCALE=DELTA/DSQRT(DD) - IF (SP*DHD .LT. ZERO) SCALE=-SCALE + IF (SP*DHD < ZERO) SCALE=-SCALE TEMP=ZERO - IF (SP*SP .GT. 0.99D0*DD*GG) TEMP=ONE + IF (SP*SP > 0.99D0*DD*GG) TEMP=ONE TAU=SCALE*(DABS(SP)+HALF*SCALE*DABS(DHD)) - IF (GG*DELSQ .LT. 0.01D0*TAU*TAU) TEMP=ONE - DO 70 I=1,N - D(I)=SCALE*D(I) - GD(I)=SCALE*GD(I) - 70 S(I)=GC(I)+TEMP*GD(I) + IF (GG*DELSQ < 0.01D0*TAU*TAU) TEMP=ONE + DO I=1,N + D(I)=SCALE*D(I) + GD(I)=SCALE*GD(I) + S(I)=GC(I)+TEMP*GD(I) + END DO ! ! Begin the iteration by overwriting S with a vector that has the ! required length and direction, except that termination occurs if @@ -1073,38 +1160,44 @@ SUBROUTINE BIGLAG (N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KNEW, DD=ZERO SP=ZERO SS=ZERO - DO 90 I=1,N - DD=DD+D(I)**2 - SP=SP+D(I)*S(I) - 90 SS=SS+S(I)**2 + DO I=1,N + DD=DD+D(I)**2 + SP=SP+D(I)*S(I) + SS=SS+S(I)**2 + END DO TEMP=DD*SS-SP*SP - IF (TEMP .LE. 1.0D-8*DD*SS) GOTO 160 + IF (TEMP <= 1.0D-8*DD*SS) GOTO 160 DENOM=DSQRT(TEMP) - DO 100 I=1,N - S(I)=(DD*S(I)-SP*D(I))/DENOM - 100 W(I)=ZERO + DO I=1,N + S(I)=(DD*S(I)-SP*D(I))/DENOM + W(I)=ZERO + END DO ! ! Calculate the coefficients of the objective function on the circle, ! beginning with the multiplication of S by the second derivative matrix. ! - DO 120 K=1,NPT - SUM=ZERO - DO 110 J=1,N - 110 SUM=SUM+XPT(K,J)*S(J) - SUM=HCOL(K)*SUM - DO 120 I=1,N - 120 W(I)=W(I)+SUM*XPT(K,I) + DO K=1,NPT + SUM=ZERO + DO J=1,N + SUM=SUM+XPT(K,J)*S(J) + END DO + SUM=HCOL(K)*SUM + DO I=1,N + W(I)=W(I)+SUM*XPT(K,I) + END DO + END DO CF1=ZERO CF2=ZERO CF3=ZERO CF4=ZERO CF5=ZERO - DO 130 I=1,N - CF1=CF1+S(I)*W(I) - CF2=CF2+D(I)*GC(I) - CF3=CF3+S(I)*GC(I) - CF4=CF4+D(I)*GD(I) - 130 CF5=CF5+S(I)*GD(I) + DO I=1,N + CF1=CF1+S(I)*W(I) + CF2=CF2+D(I)*GC(I) + CF3=CF3+S(I)*GC(I) + CF4=CF4+D(I)*GD(I) + CF5=CF5+S(I)*GD(I) + END DO CF1=HALF*CF1 CF4=HALF*CF4-CF1 ! @@ -1115,47 +1208,48 @@ SUBROUTINE BIGLAG (N,NPT,XOPT,XPT,BMAT,ZMAT,IDZ,NDIM,KNEW, TAUOLD=TAUBEG ISAVE=0 IU=49 - TEMP=TWOPI/DFLOAT(IU+1) - DO 140 I=1,IU - ANGLE=DFLOAT(I)*TEMP - CTH=cos(ANGLE) - STH=sin(ANGLE) - TAU=CF1+(CF2+CF4*CTH)*CTH+(CF3+CF5*CTH)*STH - IF (DABS(TAU) .GT. DABS(TAUMAX)) THEN - TAUMAX=TAU - ISAVE=I - TEMPA=TAUOLD - ELSE IF (I .EQ. ISAVE+1) THEN - TEMPB=TAU - END IF - 140 TAUOLD=TAU - IF (ISAVE .EQ. 0) TEMPA=TAU - IF (ISAVE .EQ. IU) TEMPB=TAUBEG + TEMP=TWOPI/DBLE(IU+1) + DO I=1,IU + ANGLE=DBLE(I)*TEMP + CTH=cos(ANGLE) + STH=sin(ANGLE) + TAU=CF1+(CF2+CF4*CTH)*CTH+(CF3+CF5*CTH)*STH + IF (DABS(TAU) > DABS(TAUMAX)) THEN + TAUMAX=TAU + ISAVE=I + TEMPA=TAUOLD + ELSE IF (I == ISAVE+1) THEN + TEMPB=TAU + END IF + TAUOLD=TAU + END DO + IF (ISAVE == 0) TEMPA=TAU + IF (ISAVE == IU) TEMPB=TAUBEG STEP=ZERO - IF (TEMPA .NE. TEMPB) THEN + IF (TEMPA /= TEMPB) THEN TEMPA=TEMPA-TAUMAX TEMPB=TEMPB-TAUMAX STEP=HALF*(TEMPA-TEMPB)/(TEMPA+TEMPB) END IF - ANGLE=TEMP*(DFLOAT(ISAVE)+STEP) + ANGLE=TEMP*(DBLE(ISAVE)+STEP) ! ! Calculate the new D and GD. Then test for convergence. ! CTH=cos(ANGLE) STH=sin(ANGLE) TAU=CF1+(CF2+CF4*CTH)*CTH+(CF3+CF5*CTH)*STH - DO 150 I=1,N - D(I)=CTH*D(I)+STH*S(I) - GD(I)=CTH*GD(I)+STH*W(I) - 150 S(I)=GC(I)+GD(I) - IF (DABS(TAU) .LE. 1.1D0*DABS(TAUBEG)) GOTO 160 - IF (ITERC .LT. N) GOTO 80 + DO I=1,N + D(I)=CTH*D(I)+STH*S(I) + GD(I)=CTH*GD(I)+STH*W(I) + S(I)=GC(I)+GD(I) + END DO + IF (DABS(TAU) <= 1.1D0*DABS(TAUBEG)) GOTO 160 + IF (ITERC < N) GOTO 80 160 RETURN END SUBROUTINE BIGLAG - SUBROUTINE TRSAPP (N,NPT,XOPT,XPT,GQ,HQ,PQ,DELTA,STEP, - 1 D,G,HD,HS,CRVMIN) - IMPLICIT REAL*8 (A-H,O-Z) + SUBROUTINE TRSAPP (N,NPT,XOPT,XPT,GQ,HQ,PQ,DELTA,STEP,D,G,HD,HS,CRVMIN) + IMPLICIT real(dp) (A-H,O-Z) DIMENSION XOPT(*),XPT(NPT,*),GQ(*),HQ(*),PQ(*),STEP(*), 1 D(*),G(*),HD(*),HS(*) ! @@ -1184,22 +1278,24 @@ SUBROUTINE TRSAPP (N,NPT,XOPT,XPT,GQ,HQ,PQ,DELTA,STEP, ITERC=0 ITERMAX=N ITERSW=ITERMAX - DO 10 I=1,N - 10 D(I)=XOPT(I) + DO I=1,N + D(I)=XOPT(I) + END DO GOTO 170 ! ! Prepare for the first line search. ! 20 QRED=ZERO DD=ZERO - DO 30 I=1,N - STEP(I)=ZERO - HS(I)=ZERO - G(I)=GQ(I)+HD(I) - D(I)=-G(I) - 30 DD=DD+D(I)**2 + DO I=1,N + STEP(I)=ZERO + HS(I)=ZERO + G(I)=GQ(I)+HD(I) + D(I)=-G(I) + DD=DD+D(I)**2 + END DO CRVMIN=ZERO - IF (DD .EQ. ZERO) GOTO 160 + IF (DD == ZERO) GOTO 160 DS=ZERO SS=ZERO GG=DD @@ -1212,15 +1308,16 @@ SUBROUTINE TRSAPP (N,NPT,XOPT,XPT,GQ,HQ,PQ,DELTA,STEP, BSTEP=TEMP/(DS+DSQRT(DS*DS+DD*TEMP)) GOTO 170 50 DHD=ZERO - DO 60 J=1,N - 60 DHD=DHD+D(J)*HD(J) + DO J=1,N + DHD=DHD+D(J)*HD(J) + END DO ! ! Update CRVMIN and set the step-length ALPHA. ! ALPHA=BSTEP - IF (DHD .GT. ZERO) THEN + IF (DHD > ZERO) THEN TEMP=DHD/DD - IF (ITERC .EQ. 1) CRVMIN=TEMP + IF (ITERC == 1) CRVMIN=TEMP CRVMIN=DMIN1(CRVMIN,TEMP) ALPHA=DMIN1(ALPHA,GG/DHD) END IF @@ -1231,43 +1328,46 @@ SUBROUTINE TRSAPP (N,NPT,XOPT,XPT,GQ,HQ,PQ,DELTA,STEP, ! GGSAV=GG GG=ZERO - DO 70 I=1,N - STEP(I)=STEP(I)+ALPHA*D(I) - HS(I)=HS(I)+ALPHA*HD(I) - 70 GG=GG+(G(I)+HS(I))**2 + DO I=1,N + STEP(I)=STEP(I)+ALPHA*D(I) + HS(I)=HS(I)+ALPHA*HD(I) + GG=GG+(G(I)+HS(I))**2 + END DO ! ! Begin another conjugate direction iteration if required. ! - IF (ALPHA .LT. BSTEP) THEN - IF (QADD .LE. 0.01D0*QRED) GOTO 160 - IF (GG .LE. 1.0D-4*GGBEG) GOTO 160 - IF (ITERC .EQ. ITERMAX) GOTO 160 + IF (ALPHA < BSTEP) THEN + IF (QADD <= 0.01D0*QRED) GOTO 160 + IF (GG <= 1.0D-4*GGBEG) GOTO 160 + IF (ITERC == ITERMAX) GOTO 160 TEMP=GG/GGSAV DD=ZERO DS=ZERO SS=ZERO - DO 80 I=1,N - D(I)=TEMP*D(I)-G(I)-HS(I) - DD=DD+D(I)**2 - DS=DS+D(I)*STEP(I) - 80 SS=SS+STEP(I)**2 - IF (DS .LE. ZERO) GOTO 160 - IF (SS .LT. DELSQ) GOTO 40 + DO I=1,N + D(I)=TEMP*D(I)-G(I)-HS(I) + DD=DD+D(I)**2 + DS=DS+D(I)*STEP(I) + SS=SS+STEP(I)**2 + END DO + IF (DS <= ZERO) GOTO 160 + IF (SS < DELSQ) GOTO 40 END IF CRVMIN=ZERO ITERSW=ITERC ! ! Test whether an alternative iteration is required. ! - 90 IF (GG .LE. 1.0D-4*GGBEG) GOTO 160 + 90 IF (GG <= 1.0D-4*GGBEG) GOTO 160 SG=ZERO SHS=ZERO - DO 100 I=1,N - SG=SG+STEP(I)*G(I) - 100 SHS=SHS+STEP(I)*HS(I) + DO I=1,N + SG=SG+STEP(I)*G(I) + SHS=SHS+STEP(I)*HS(I) + END DO SGK=SG+SHS ANGTEST=SGK/DSQRT(GG*DELSQ) - IF (ANGTEST .LE. -0.99D0) GOTO 160 + IF (ANGTEST <= -0.99D0) GOTO 160 ! ! Begin the alternative iteration by calculating D and HD and some ! scalar products. @@ -1276,16 +1376,18 @@ SUBROUTINE TRSAPP (N,NPT,XOPT,XPT,GQ,HQ,PQ,DELTA,STEP, TEMP=DSQRT(DELSQ*GG-SGK*SGK) TEMPA=DELSQ/TEMP TEMPB=SGK/TEMP - DO 110 I=1,N - 110 D(I)=TEMPA*(G(I)+HS(I))-TEMPB*STEP(I) + DO I=1,N + D(I)=TEMPA*(G(I)+HS(I))-TEMPB*STEP(I) + END DO GOTO 170 120 DG=ZERO DHD=ZERO DHS=ZERO - DO 130 I=1,N - DG=DG+D(I)*G(I) - DHD=DHD+HD(I)*D(I) - 130 DHS=DHS+HD(I)*STEP(I) + DO I=1,N + DG=DG+D(I)*G(I) + DHD=DHD+HD(I)*D(I) + DHS=DHS+HD(I)*STEP(I) + END DO ! ! Seek the value of the angle that minimizes Q. ! @@ -1295,29 +1397,30 @@ SUBROUTINE TRSAPP (N,NPT,XOPT,XPT,GQ,HQ,PQ,DELTA,STEP, QMIN=QBEG ISAVE=0 IU=49 - TEMP=TWOPI/DFLOAT(IU+1) - DO 140 I=1,IU - ANGLE=DFLOAT(I)*TEMP - CTH=cos(ANGLE) - STH=sin(ANGLE) - QNEW=(SG+CF*CTH)*CTH+(DG+DHS*CTH)*STH - IF (QNEW .LT. QMIN) THEN - QMIN=QNEW - ISAVE=I - TEMPA=QSAV - ELSE IF (I .EQ. ISAVE+1) THEN - TEMPB=QNEW - END IF - 140 QSAV=QNEW - IF (ISAVE .EQ. ZERO) TEMPA=QNEW - IF (ISAVE .EQ. IU) TEMPB=QBEG + TEMP=TWOPI/DBLE(IU+1) + DO I=1,IU + ANGLE=DBLE(I)*TEMP + CTH=cos(ANGLE) + STH=sin(ANGLE) + QNEW=(SG+CF*CTH)*CTH+(DG+DHS*CTH)*STH + IF (QNEW < QMIN) THEN + QMIN=QNEW + ISAVE=I + TEMPA=QSAV + ELSE IF (I == ISAVE+1) THEN + TEMPB=QNEW + END IF + QSAV=QNEW + END DO + IF (ISAVE == ZERO) TEMPA=QNEW + IF (ISAVE == IU) TEMPB=QBEG ANGLE=ZERO - IF (TEMPA .NE. TEMPB) THEN + IF (TEMPA /= TEMPB) THEN TEMPA=TEMPA-QMIN TEMPB=TEMPB-QMIN ANGLE=HALF*(TEMPA-TEMPB)/(TEMPA+TEMPB) END IF - ANGLE=TEMP*(DFLOAT(ISAVE)+ANGLE) + ANGLE=TEMP*(DBLE(ISAVE)+ANGLE) ! ! Calculate the new STEP and HS. Then test for convergence. ! @@ -1325,13 +1428,14 @@ SUBROUTINE TRSAPP (N,NPT,XOPT,XPT,GQ,HQ,PQ,DELTA,STEP, STH=sin(ANGLE) REDUC=QBEG-(SG+CF*CTH)*CTH-(DG+DHS*CTH)*STH GG=ZERO - DO 150 I=1,N - STEP(I)=CTH*STEP(I)+STH*D(I) - HS(I)=CTH*HS(I)+STH*HD(I) - 150 GG=GG+(G(I)+HS(I))**2 + DO I=1,N + STEP(I)=CTH*STEP(I)+STH*D(I) + HS(I)=CTH*HS(I)+STH*HD(I) + GG=GG+(G(I)+HS(I))**2 + END DO QRED=QRED+REDUC RATIO=REDUC/QRED - IF (ITERC .LT. ITERMAX .AND. RATIO .GT. 0.01D0) GOTO 90 + IF (ITERC < ITERMAX .AND. RATIO > 0.01D0) GOTO 90 160 RETURN ! ! The following instructions act as a subroutine for setting the vector @@ -1339,28 +1443,34 @@ SUBROUTINE TRSAPP (N,NPT,XOPT,XPT,GQ,HQ,PQ,DELTA,STEP, ! They are called from three different places, which are distinguished ! by the value of ITERC. ! - 170 DO 180 I=1,N - 180 HD(I)=ZERO - DO 200 K=1,NPT - TEMP=ZERO - DO 190 J=1,N - 190 TEMP=TEMP+XPT(K,J)*D(J) - TEMP=TEMP*PQ(K) - DO 200 I=1,N - 200 HD(I)=HD(I)+TEMP*XPT(K,I) + 170 DO I=1,N + HD(I)=ZERO + END DO + DO K=1,NPT + TEMP=ZERO + DO J=1,N + TEMP=TEMP+XPT(K,J)*D(J) + END DO + TEMP=TEMP*PQ(K) + DO I=1,N + HD(I)=HD(I)+TEMP*XPT(K,I) + END DO + END DO IH=0 - DO 210 J=1,N - DO 210 I=1,J - IH=IH+1 - IF (I .LT. J) HD(J)=HD(J)+HQ(IH)*D(I) - 210 HD(I)=HD(I)+HQ(IH)*D(J) - IF (ITERC .EQ. 0) GOTO 20 - IF (ITERC .LE. ITERSW) GOTO 50 + DO J=1,N + DO I=1,J + IH=IH+1 + IF (I < J) HD(J)=HD(J)+HQ(IH)*D(I) + HD(I)=HD(I)+HQ(IH)*D(J) + END DO + END DO + IF (ITERC == 0) GOTO 20 + IF (ITERC <= ITERSW) GOTO 50 GOTO 120 END SUBROUTINE TRSAPP SUBROUTINE UPDATE (N,NPT,BMAT,ZMAT,IDZ,NDIM,VLAG,BETA,KNEW,W) - IMPLICIT REAL*8 (A-H,O-Z) + IMPLICIT real(dp) (A-H,O-Z) DIMENSION BMAT(NDIM,*),ZMAT(NPT,*),VLAG(*),W(*) ! ! The arrays BMAT and ZMAT with IDZ are updated, in order to shift the @@ -1378,31 +1488,32 @@ SUBROUTINE UPDATE (N,NPT,BMAT,ZMAT,IDZ,NDIM,VLAG,BETA,KNEW,W) ! Apply the rotations that put zeros in the KNEW-th row of ZMAT. ! JL=1 - DO 20 J=2,NPTM - IF (J .EQ. IDZ) THEN - JL=IDZ - ELSE IF (ZMAT(KNEW,J) .NE. ZERO) THEN - TEMP=DSQRT(ZMAT(KNEW,JL)**2+ZMAT(KNEW,J)**2) - TEMPA=ZMAT(KNEW,JL)/TEMP - TEMPB=ZMAT(KNEW,J)/TEMP - DO 10 I=1,NPT - TEMP=TEMPA*ZMAT(I,JL)+TEMPB*ZMAT(I,J) - ZMAT(I,J)=TEMPA*ZMAT(I,J)-TEMPB*ZMAT(I,JL) - 10 ZMAT(I,JL)=TEMP - ZMAT(KNEW,J)=ZERO - END IF - 20 CONTINUE + DO J=2,NPTM + IF (J == IDZ) THEN + JL=IDZ + ELSE IF (ZMAT(KNEW,J) /= ZERO) THEN + TEMP=DSQRT(ZMAT(KNEW,JL)**2+ZMAT(KNEW,J)**2) + TEMPA=ZMAT(KNEW,JL)/TEMP + TEMPB=ZMAT(KNEW,J)/TEMP + DO I=1,NPT + TEMP=TEMPA*ZMAT(I,JL)+TEMPB*ZMAT(I,J) + ZMAT(I,J)=TEMPA*ZMAT(I,J)-TEMPB*ZMAT(I,JL) + ZMAT(I,JL)=TEMP + END DO + ZMAT(KNEW,J)=ZERO + END IF + END DO ! ! Put the first NPT components of the KNEW-th column of HLAG into W, ! and calculate the parameters of the updating formula. ! TEMPA=ZMAT(KNEW,1) - IF (IDZ .GE. 2) TEMPA=-TEMPA - IF (JL .GT. 1) TEMPB=ZMAT(KNEW,JL) - DO 30 I=1,NPT - W(I)=TEMPA*ZMAT(I,1) - IF (JL .GT. 1) W(I)=W(I)+TEMPB*ZMAT(I,JL) - 30 CONTINUE + IF (IDZ >= 2) TEMPA=-TEMPA + IF (JL > 1) TEMPB=ZMAT(KNEW,JL) + DO I=1,NPT + W(I)=TEMPA*ZMAT(I,1) + IF (JL > 1) W(I)=W(I)+TEMPB*ZMAT(I,JL) + END DO ALPHA=W(KNEW) TAU=VLAG(KNEW) TAUSQ=TAU*TAU @@ -1414,20 +1525,21 @@ SUBROUTINE UPDATE (N,NPT,BMAT,ZMAT,IDZ,NDIM,VLAG,BETA,KNEW,W) ! then the first column of ZMAT will be exchanged with another one later. ! IFLAG=0 - IF (JL .EQ. 1) THEN + IF (JL == 1) THEN TEMP=DSQRT(DABS(DENOM)) TEMPB=TEMPA/TEMP TEMPA=TAU/TEMP - DO 40 I=1,NPT - 40 ZMAT(I,1)=TEMPA*ZMAT(I,1)-TEMPB*VLAG(I) - IF (IDZ .EQ. 1 .AND. TEMP .LT. ZERO) IDZ=2 - IF (IDZ .GE. 2 .AND. TEMP .GE. ZERO) IFLAG=1 + DO I=1,NPT + ZMAT(I,1)=TEMPA*ZMAT(I,1)-TEMPB*VLAG(I) + END DO + IF (IDZ == 1 .AND. TEMP < ZERO) IDZ=2 + IF (IDZ >= 2 .AND. TEMP >= ZERO) IFLAG=1 ELSE ! ! Complete the updating of ZMAT in the alternative case. ! JA=1 - IF (BETA .GE. ZERO) JA=JL + IF (BETA >= ZERO) JA=JL JB=JL+1-JA TEMP=ZMAT(KNEW,JB)/DENOM TEMPA=TEMP*BETA @@ -1435,41 +1547,42 @@ SUBROUTINE UPDATE (N,NPT,BMAT,ZMAT,IDZ,NDIM,VLAG,BETA,KNEW,W) TEMP=ZMAT(KNEW,JA) SCALA=ONE/DSQRT(DABS(BETA)*TEMP*TEMP+TAUSQ) SCALB=SCALA*DSQRT(DABS(DENOM)) - DO 50 I=1,NPT - ZMAT(I,JA)=SCALA*(TAU*ZMAT(I,JA)-TEMP*VLAG(I)) - 50 ZMAT(I,JB)=SCALB*(ZMAT(I,JB)-TEMPA*W(I)-TEMPB*VLAG(I)) - IF (DENOM .LE. ZERO) THEN - IF (BETA .LT. ZERO) IDZ=IDZ+1 - IF (BETA .GE. ZERO) IFLAG=1 + DO I=1,NPT + ZMAT(I,JA)=SCALA*(TAU*ZMAT(I,JA)-TEMP*VLAG(I)) + ZMAT(I,JB)=SCALB*(ZMAT(I,JB)-TEMPA*W(I)-TEMPB*VLAG(I)) + END DO + IF (DENOM <= ZERO) THEN + IF (BETA < ZERO) IDZ=IDZ+1 + IF (BETA >= ZERO) IFLAG=1 END IF END IF ! ! IDZ is reduced in the following case, and usually the first column ! of ZMAT is exchanged with a later one. ! - IF (IFLAG .EQ. 1) THEN + IF (IFLAG == 1) THEN IDZ=IDZ-1 - DO 60 I=1,NPT - TEMP=ZMAT(I,1) - ZMAT(I,1)=ZMAT(I,IDZ) - 60 ZMAT(I,IDZ)=TEMP + DO I=1,NPT + TEMP=ZMAT(I,1) + ZMAT(I,1)=ZMAT(I,IDZ) + ZMAT(I,IDZ)=TEMP + END DO END IF ! ! Finally, update the matrix BMAT. ! - DO 70 J=1,N - JP=NPT+J - W(JP)=BMAT(KNEW,J) - TEMPA=(ALPHA*VLAG(JP)-TAU*W(JP))/DENOM - TEMPB=(-BETA*W(JP)-TAU*VLAG(JP))/DENOM - DO 70 I=1,JP - BMAT(I,J)=BMAT(I,J)+TEMPA*VLAG(I)+TEMPB*W(I) - IF (I .GT. NPT) BMAT(JP,I-NPT)=BMAT(I,J) - 70 CONTINUE + DO J=1,N + JP=NPT+J + W(JP)=BMAT(KNEW,J) + TEMPA=(ALPHA*VLAG(JP)-TAU*W(JP))/DENOM + TEMPB=(-BETA*W(JP)-TAU*VLAG(JP))/DENOM + DO I=1,JP + BMAT(I,J)=BMAT(I,J)+TEMPA*VLAG(I)+TEMPB*W(I) + IF (I > NPT) BMAT(JP,I-NPT)=BMAT(I,J) + END DO + END DO RETURN END SUBROUTINE UPDATE - end module mod_newuoa - diff --git a/num/private/mod_rosenbrock.f b/num/private/mod_rosenbrock.f index 83d61797b..277e22b60 100644 --- a/num/private/mod_rosenbrock.f +++ b/num/private/mod_rosenbrock.f @@ -341,7 +341,7 @@ subroutine coeffs (ns,ra,rc,rd,ros_d,ros_m,ros_e,ros_alpha, real(dp), intent(inout) :: ros_alpha(ns), ros_gamma(ns) integer, intent(out) :: ros_elo logical, intent(out) :: no_aux_in_error, ros_newf(ns) - character*12, intent(out) :: ros_name + character (len=12), intent(out) :: ros_name end subroutine coeffs end interface #include "rodas_args.dek" @@ -351,6 +351,10 @@ end subroutine coeffs real(dp), intent(in) :: y_min, y_max real(dp), pointer, dimension(:) :: p1, p2, p3, p4, p5 integer, pointer, dimension(:) :: ip1 + integer :: i, iedy, iedy1, iecon, ieak + integer :: ieia, iefx, iee, iemas, iejac, ieja, ieip, ieynew, iesj, iesa, ierr + integer :: ijob, lde, ldjac, ldmas, ldmas2, m1, m2, meth + integer :: nm1, njac, nfcn, nerror, ndec, naccpt, nsol, nstep, nmax, nrejct mljac = mljac_in; mujac = mujac_in ! *** *** *** *** *** *** *** ! setting the parameters @@ -638,6 +642,8 @@ subroutine roscor( ! declarations ! ---------------------------------------------------------- implicit real(dp) (a-h,o-z) + integer :: n, itol, ijac, isparse, mljac, mujac, idfx, mlmas, mumas, iout, idid, nmax, meth, ijob, + & ldjac, lde, ldmas, m1, m2, nm1, nerror, nfcn, njac, nstep, naccpt, nrejct, ndec, nsol, lout interface real(dp) function contro(i,x,rwork,iwork,ierr) use const_def, only: dp @@ -656,7 +662,7 @@ subroutine coeffs (ns,ra,rc,rd,ros_d,ros_m,ros_e,ros_alpha, real(dp), intent(inout) :: ros_alpha(ns), ros_gamma(ns) integer, intent(out) :: ros_elo logical, intent(out) :: no_aux_in_error, ros_newf(ns) - character*12, intent(out) :: ros_name + character (len=12), intent(out) :: ros_name end subroutine coeffs #include "num_solout.dek" #include "num_mas.dek" @@ -682,7 +688,7 @@ end subroutine coeffs real(dp) :: ros_alpha(ns), ros_gamma(ns) integer :: ros_elo logical :: ros_newf(ns) - character*12 :: ros_name + character (len=12) :: ros_name ! args integer, intent(inout), pointer :: ipar(:) ! (lipar) @@ -694,7 +700,7 @@ end subroutine coeffs dimension fx(n),fjac(ldjac,n),fmas(ldmas,nm1),atol(*),rtol(*) - integer iwork(2) + integer :: iwork(2) real(dp), target :: rwork(2+5*n) real(dp), intent(inout), pointer :: rpar_decsol(:) ! (lrd) integer, intent(inout), pointer :: ipar_decsol(:) ! (lid) @@ -708,8 +714,12 @@ end subroutine coeffs logical reject,autnms,implct,banded,last,pred,not_stage1,no_aux_in_error,need_free real(dp), pointer :: cont(:), dy2(:) real(dp) :: hprev, rd32 - integer :: i, j - + integer :: i, j, k, l, j1, is + integer :: lrc, lbeg, lend, irtrn + integer :: mbb, mbdiag, mbjac, md, mdiag, mdiff, mle, mm, mue, mujacj, mujacp + integer :: nsing, nn, nn2, nn3, nn4 + integer :: ierr, ier + real(dp), pointer :: ak(:,:), e(:,:), p1(:) ak(1:n,1:ns) => ak1(1:n*ns) e(1:lde,1:nm1) => e1(1:lde*nm1) @@ -1087,7 +1097,7 @@ end subroutine coeffs ! --- step is accepted naccpt=naccpt+1 if (pred) then -c --- predictive controller of gustafsson +! --- predictive controller of gustafsson if (naccpt.gt.1) then facgus=(hacc/h)*pow(err**2/erracc,eloi)/safe facgus=max(fac2,min(fac1,facgus)) @@ -1230,7 +1240,7 @@ subroutine ros2_coeffs (ns,ra,rc,rd,ros_d,ros_m,ros_e,ros_alpha, real(dp), intent(inout) :: ros_alpha(ns), ros_gamma(ns) integer, intent(out) :: ros_elo logical, intent(out) :: no_aux_in_error, ros_newf(ns) - character*12, intent(out) :: ros_name + character (len=12), intent(out) :: ros_name real(dp) :: g no_aux_in_error = .true. @@ -1286,7 +1296,7 @@ subroutine rose2_coeffs (ns,ra,rc,rd,ros_d,ros_m,ros_e,ros_alpha, real(dp), intent(inout) :: ros_alpha(ns), ros_gamma(ns) integer, intent(out) :: ros_elo logical, intent(out) :: no_aux_in_error, ros_newf(ns) - character*12, intent(out) :: ros_name + character (len=12), intent(out) :: ros_name real(dp) :: g, e32 real(dp), parameter :: sqrt2 = 1.4142135623731d0 ! sqrt(2d0) no_aux_in_error = .true. @@ -1362,7 +1372,7 @@ subroutine ros3p_coeffs (ns,ra,rc,rd,ros_d,ros_m,ros_e,ros_alpha, real(dp), intent(inout) :: ros_alpha(ns), ros_gamma(ns) integer, intent(out) :: ros_elo logical, intent(out) :: no_aux_in_error, ros_newf(ns) - character*12, intent(out) :: ros_name + character (len=12), intent(out) :: ros_name no_aux_in_error = .true. !~~~> name of the method ros_name = 'ros3p' @@ -1425,7 +1435,7 @@ subroutine ros3pl_coeffs (ns,ra,rc,rd,ros_d,ros_m,ros_e,ros_alpha, real(dp), intent(inout) :: ros_alpha(ns), ros_gamma(ns) integer, intent(out) :: ros_elo logical, intent(out) :: no_aux_in_error, ros_newf(ns) - character*12, intent(out) :: ros_name + character (len=12), intent(out) :: ros_name no_aux_in_error = .true. !~~~> name of the method ros_name = 'ros3pl' @@ -1509,7 +1519,7 @@ subroutine rodas3_coeffs (ns,ra,rc,rd,ros_d,ros_m,ros_e,ros_alpha, real(dp), intent(inout) :: ros_alpha(ns), ros_gamma(ns) integer, intent(out) :: ros_elo logical, intent(out) :: no_aux_in_error, ros_newf(ns) - character*12, intent(out) :: ros_name + character (len=12), intent(out) :: ros_name ra = 0 rc = 0 rd = 0 @@ -1587,7 +1597,7 @@ subroutine rodas4_coeffs (ns,ra,rc,rd,ros_d,ros_m,ros_e,ros_alpha, real(dp), intent(inout) :: ros_alpha(ns), ros_gamma(ns) integer, intent(out) :: ros_elo logical, intent(out) :: no_aux_in_error, ros_newf(ns) - character*12, intent(out) :: ros_name + character (len=12), intent(out) :: ros_name no_aux_in_error = .false. rd = 0 @@ -1705,7 +1715,7 @@ subroutine rodasp_coeffs (ns,ra,rc,rd,ros_d,ros_m,ros_e,ros_alpha, real(dp), intent(inout) :: ros_alpha(ns), ros_gamma(ns) integer, intent(out) :: ros_elo logical, intent(out) :: no_aux_in_error, ros_newf(ns) - character*12, intent(out) :: ros_name + character (len=12), intent(out) :: ros_name no_aux_in_error = .false. rd = 0 !~~~> name of the method diff --git a/num/private/mod_simplex.f90 b/num/private/mod_simplex.f90 index 979ea4dab..eeb9d061f 100644 --- a/num/private/mod_simplex.f90 +++ b/num/private/mod_simplex.f90 @@ -65,9 +65,9 @@ subroutine do_simplex( & num_fcn_calls_for_ars, num_accepted_for_ars, ierr real(dp), dimension(n) :: c, x_reflect, x_expand, x_contract, x_ars - real(dp) :: f_reflect, f_expand, f_contract, f_ars, rand01, dist, min_dist, & - dx, term1, xmid, weight, sum_weight, term_val_x - integer :: h, s, l, i, j, k, iter, min_k + real(dp) :: f_reflect, f_expand, f_contract, f_ars, & + term1, weight, sum_weight, term_val_x + integer :: h, s, l, i, j logical, parameter :: dbg = .false. diff --git a/num/private/slvrad.dek b/num/private/slvrad.dek index 2c6ab7678..53c2e9373 100644 --- a/num/private/slvrad.dek +++ b/num/private/slvrad.dek @@ -11,19 +11,19 @@ #include "mtx_decsolc.dek" #include"mtx_decsolcs.dek" end interface + integer :: ldjac, mljac, mujac, ldmas, mlmas, mumas, m1, m2, nm1, lde1, ier, ijob + integer :: n, mle, mue, mbjac, mbb, mdiag, mdiff, mbdiag, nzmax, isparse, lcd, lrd, lid + integer :: iphes(n) integer :: ia(:) ! (n+1) integer :: ja(:) ! (nzmax) double precision :: sa(nzmax), sar(nzmax), sai(nzmax) - complex*16, intent(inout), pointer :: cpar_decsol(:) ! (lcd) + complex(dp), intent(inout), pointer :: cpar_decsol(:) ! (lcd) real(dp), intent(inout), pointer :: rpar_decsol(:) ! (lrd) integer, intent(inout), pointer :: ipar_decsol(:) ! (lid) double precision :: fjac(ldjac,n), fmas(ldmas,nm1), fac1, alphn, betan double precision, pointer :: e1_1D(:) double precision :: e2r(lde1,nm1), e2i(lde1,nm1), cont(n) double precision, pointer, dimension(:) :: z1, z2, z3, f1, f2, f3 ! (n) - integer :: ldjac, mljac, mujac, ldmas, mlmas, mumas, m1, m2, nm1, lde1, ier, ijob - integer :: n, mle, mue, mbjac, mbb, mdiag, mdiff, mbdiag, nzmax, isparse, lcd, lrd, lid - integer :: iphes(n) integer, pointer, dimension(:) :: ip1, ip2 ! (nm1) @@ -40,11 +40,11 @@ goto (1,2,3,4,5,6,55,8,9,55,11,12,13,13,15), ijob -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 1 continue -c --- b=identity, jacobian a full matrix +! --- b=identity, jacobian a full matrix do i=1,n s2=-f2(i) s3=-f3(i) @@ -55,11 +55,11 @@ c --- b=identity, jacobian a full matrix call decsol(1,n,lde1,e1_1D,n,n,z1,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) call decsolc(1,n,lde1,e2r,e2i,n,n,z2,z3,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 8 continue -c --- b=identity, jacobian a sparse matrix +! --- b=identity, jacobian a sparse matrix do i=1,n s2=-f2(i) s3=-f3(i) @@ -70,11 +70,11 @@ c --- b=identity, jacobian a sparse matrix call decsols(1,n,nzmax,ia,ja,sa,z1,lrd,rpar_decsol,lid,ipar_decsol,ier) call decsolcs(1,n,nzmax,ia,ja,sar,sai,z2,z3,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 11 continue -c --- b=identity, jacobian a full matrix, second order +! --- b=identity, jacobian a full matrix, second order do i=1,n s2=-f2(i) s3=-f3(i) @@ -115,11 +115,11 @@ c --- b=identity, jacobian a full matrix, second order z2(i)=(z2i*alphn+z3i*betan)/abno end do return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 2 continue -c --- b=identity, jacobian a banded matrix +! --- b=identity, jacobian a banded matrix do i=1,n s2=-f2(i) s3=-f3(i) @@ -130,11 +130,11 @@ c --- b=identity, jacobian a banded matrix call decsol(1,n,lde1,e1_1D,mle,mue,z1,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) call decsolc(1,n,lde1,e2r,e2i,mle,mue,z2,z3,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 12 continue -c --- b=identity, jacobian a banded matrix, second order +! --- b=identity, jacobian a banded matrix, second order do i=1,n s2=-f2(i) s3=-f3(i) @@ -167,11 +167,11 @@ c --- b=identity, jacobian a banded matrix, second order call decsol(1,nm1,lde1,e1_1D,mle,mue,p1,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) call decsolc(1,nm1,lde1,e2r,e2i,mle,mue,p2,p3,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier) goto 49 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 3 continue -c --- b is a banded matrix, jacobian a full matrix +! --- b is a banded matrix, jacobian a full matrix do i=1,n s1=0.0d0 s2=0.0d0 @@ -189,11 +189,11 @@ c --- b is a banded matrix, jacobian a full matrix call decsol(1,n,lde1,e1_1D,n,n,z1,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) call decsolc(1,n,lde1,e2r,e2i,n,n,z2,z3,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 9 continue -c --- b is a banded matrix, jacobian a sparse matrix +! --- b is a banded matrix, jacobian a sparse matrix do i=1,n s1=0.0d0 s2=0.0d0 @@ -214,11 +214,11 @@ c --- b is a banded matrix, jacobian a sparse matrix call decsolcs(1,n,nzmax,ia,ja,sar,sai,z2,z3,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier) !write(*,*) 'slvrad back decsols' return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 13 continue -c --- b is a banded matrix, jacobian a full matrix, second order +! --- b is a banded matrix, jacobian a full matrix, second order do i=1,m1 s2=-f2(i) s3=-f3(i) @@ -246,11 +246,11 @@ c --- b is a banded matrix, jacobian a full matrix, second order end do if (ijob.eq.14) goto 45 goto 48 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 4 continue -c --- b is a banded matrix, jacobian a banded matrix +! --- b is a banded matrix, jacobian a banded matrix do i=1,n s1=0.0d0 s2=0.0d0 @@ -268,11 +268,11 @@ c --- b is a banded matrix, jacobian a banded matrix call decsol(1,n,lde1,e1_1D,mle,mue,z1,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) call decsolc(1,n,lde1,e2r,e2i,mle,mue,z2,z3,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 5 continue -c --- b is a full matrix, jacobian a full matrix +! --- b is a full matrix, jacobian a full matrix do i=1,n s1=0.0d0 s2=0.0d0 @@ -290,11 +290,11 @@ c --- b is a full matrix, jacobian a full matrix call decsol(1,n,lde1,e1_1D,n,n,z1,ip1,lrd,rpar_decsol,lid,ipar_decsol,ier) call decsolc(1,n,lde1,e2r,e2i,n,n,z2,z3,ip2,lcd,cpar_decsol,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 15 continue -c --- b is a full matrix, jacobian a full matrix, second order +! --- b is a full matrix, jacobian a full matrix, second order do i=1,m1 s2=-f2(i) s3=-f3(i) @@ -319,16 +319,16 @@ c --- b is a full matrix, jacobian a full matrix, second order z3(im1)=z3(im1)+s3*alphn+s2*betan end do goto 48 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 6 continue -c --- b is a full matrix, jacobian a banded matrix -c --- this option is not provided +! --- b is a full matrix, jacobian a banded matrix +! --- this option is not provided return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 55 continue write(*,*) 'slvrad: invalid ijob', ijob call mesa_error(__FILE__,__LINE__) ! slvrad diff --git a/num/private/slvrod.dek b/num/private/slvrod.dek index 6da822033..8c9e8399e 100644 --- a/num/private/slvrod.dek +++ b/num/private/slvrod.dek @@ -1,5 +1,5 @@ -c *********************************************************** -c +! *********************************************************** +! subroutine slvrod(n,fjac,ldjac,mljac,mujac,fmas,ldmas,mlmas,mumas, & m1,m2,nm1,fac1,e_1D,lde,ip,dy,ak,fx,ynew,hd,ijob,not_stage1, & mle,mue,mbjac,mbb,mdiag,mdiff,mbdiag, @@ -32,16 +32,16 @@ c real(dp), pointer :: e_1D(:) ! =(lde,nm1) ! LOCALS - integer :: i, j, mm, k, jkm, im1 + integer :: i, j real(dp) :: sum - real(dp), pointer :: ptr(:), r1(:) + real(dp), pointer :: r1(:) real(dp), target, dimension(nvar*nz) :: x0_ary, b_ary, r_ary, Ax0_ary real(dp), pointer, dimension(:,:) :: ak2, x0, b, r, Ax0 real(dp), pointer, dimension(:,:,:) :: uf_lblk, uf_dblk, uf_ublk -c - if (hd.eq.0.d0) then - do i=1,n +! + if (hd == 0.d0) then + do i=1,n ak(i)=dy(i) end do else @@ -52,13 +52,13 @@ c ! write(*,*) 'slvrod ijob', ijob -c +! if (nvar > 0) then if (nvar*nz /= n) stop 'bad nvar*nz /= n' if (not_stage1) then - !do i=1,n + !do i=1,n ! write(*,*) 'in ak ynew', i, ak(i), ynew(i) !end do do i=1,n @@ -66,7 +66,7 @@ c end do end if - !do i=1,n + !do i=1,n ! write(*,*) 'in', i, ak(i) !end do @@ -87,7 +87,7 @@ c - !do i=1,n + !do i=1,n ! write(*,*) 'out', i, ak(i) !end do !write(*,*) @@ -114,7 +114,7 @@ c sum = sum + abs(r_ary(i)) end do - do i=1,n + do i=1,n write(*,*) 'res', i, r_ary(i) end do write(*,*) @@ -147,11 +147,11 @@ c end if goto (1,2,3,4,5,6,55,8,9,55,11,12,13,13,15), ijob -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 1 continue -c --- b=identity, jacobian a full matrix +! --- b=identity, jacobian a full matrix if (not_stage1) then do i=1,n ak(i)=ak(i)+ynew(i) @@ -166,11 +166,11 @@ c --- b=identity, jacobian a full matrix !write(*,*) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 8 continue -c --- b=identity, jacobian a sparse matrix +! --- b=identity, jacobian a sparse matrix if (not_stage1) then do i=1,n ak(i)=ak(i)+ynew(i) @@ -180,15 +180,15 @@ c --- b=identity, jacobian a sparse matrix call decsols(1,n,nzmax,ia,ja,sa,ak,lrd,rpar_decsol,lid,ipar_decsol,ier) !write(*,*) 'back decsols' return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 9 continue -c --- b is a banded matrix, jacobian a sparse matrix +! --- b is a banded matrix, jacobian a sparse matrix if (not_stage1) then - do i=1,n + do i=1,n sum=0.d0 - do j=max(1,i-mlmas),min(n,i+mumas) + do j=max(1,i-mlmas),min(n,i+mumas) sum=sum+fmas(i-j+mbdiag,j)*ynew(j) end do ak(i)=ak(i)+sum @@ -196,11 +196,11 @@ c --- b is a banded matrix, jacobian a sparse matrix end if call decsols(1,n,nzmax,ia,ja,sa,ak,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 11 continue -c --- b=identity, jacobian a full matrix, second order +! --- b=identity, jacobian a full matrix, second order write(*,*) 'SLVROD: second order not supported' call mesa_error(__FILE__,__LINE__) ! if (not_stage1) then @@ -226,13 +226,13 @@ c --- b=identity, jacobian a full matrix, second order ! ak(i)=(ak(i)+ak(m2+i))/fac1 ! end do ! return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 2 continue -c --- b=identity, jacobian a banded matrix +! --- b=identity, jacobian a banded matrix if (not_stage1) then - !do i=1,n + !do i=1,n ! write(*,*) 'in ak ynew', i, ak(i), ynew(i) !end do do i=1,n @@ -240,22 +240,22 @@ c --- b=identity, jacobian a banded matrix end do end if - !do i=1,n + !do i=1,n ! write(*,*) 'in', i, ak(i) !end do call decsol(1,n,lde,e_1D,mle,mue,ak,ip,lrd,rpar_decsol,lid,ipar_decsol,ier) - !do i=1,n + !do i=1,n ! write(*,*) 'out', i, ak(i) !end do !write(*,*) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 12 continue -c --- b=identity, jacobian a banded matrix, second order +! --- b=identity, jacobian a banded matrix, second order write(*,*) 'SLVROD: second order not supported' call mesa_error(__FILE__,__LINE__) ! if (not_stage1) then @@ -281,15 +281,15 @@ c --- b=identity, jacobian a banded matrix, second order ! ak(i)=(ak(i)+ak(m2+i))/fac1 ! end do ! return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 3 continue -c --- b is a banded matrix, jacobian a full matrix +! --- b is a banded matrix, jacobian a full matrix if (not_stage1) then - do i=1,n + do i=1,n sum=0.d0 - do j=max(1,i-mlmas),min(n,i+mumas) + do j=max(1,i-mlmas),min(n,i+mumas) sum=sum+fmas(i-j+mbdiag,j)*ynew(j) end do ak(i)=ak(i)+sum @@ -297,11 +297,11 @@ c --- b is a banded matrix, jacobian a full matrix end if call decsol(1,n,lde,e_1D,n,n,ak,ip,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 13 continue -c --- b is a banded matrix, jacobian a full matrix, second order +! --- b is a banded matrix, jacobian a full matrix, second order write(*,*) 'SLVROD: second order not supported' call mesa_error(__FILE__,__LINE__) ! if (not_stage1) then @@ -317,13 +317,13 @@ c --- b is a banded matrix, jacobian a full matrix, second order ! ak(im1)=ak(im1)+sum ! end do ! end if -! if (ijob.eq.14) goto 45 +! if (ijob == 14) goto 45 ! goto 48 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 4 continue -c --- b is a banded matrix, jacobian a banded matrix +! --- b is a banded matrix, jacobian a banded matrix if (not_stage1) then do i=1,n sum=0.d0 @@ -335,11 +335,11 @@ c --- b is a banded matrix, jacobian a banded matrix end if call decsol(1,n,lde,e_1D,mle,mue,ak,ip,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 5 continue -c --- b is a full matrix, jacobian a full matrix +! --- b is a full matrix, jacobian a full matrix if (not_stage1) then do i=1,n sum=0.d0 @@ -351,11 +351,11 @@ c --- b is a full matrix, jacobian a full matrix end if call decsol(1,n,lde,e_1D,n,n,ak,ip,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 15 continue -c --- b is a full matrix, jacobian a full matrix, second order +! --- b is a full matrix, jacobian a full matrix, second order write(*,*) 'SLVROD: second order not supported' call mesa_error(__FILE__,__LINE__) ! if (not_stage1) then @@ -372,29 +372,31 @@ c --- b is a full matrix, jacobian a full matrix, second order ! end do ! end if ! goto 48 -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 6 continue -c --- b is a full matrix, jacobian a banded matrix -c --- this option is not provided +! --- b is a full matrix, jacobian a banded matrix +! --- this option is not provided if (not_stage1) then - do 624 i=1,n + do i=1,n sum=0.d0 - do 623 j=1,n - 623 sum=sum+fmas(i,j)*ynew(j) - 624 ak(i)=ak(i)+sum + do j=1,n + sum=sum+fmas(i,j)*ynew(j) + end do + ak(i)=ak(i)+sum + end do call decsol(1,n,lde,e_1D,mle,mue,ak,ip,lrd,rpar_decsol,lid,ipar_decsol,ier) end if return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 55 continue write(*,*) 'slvrod: invalid ijob', ijob call mesa_error(__FILE__,__LINE__) ! slvrod end subroutine slvrod -c -c end of subroutine slvrod -c +! +! end of subroutine slvrod +! c diff --git a/num/private/slvseu.dek b/num/private/slvseu.dek index 2ac17c7e3..3407581c5 100644 --- a/num/private/slvseu.dek +++ b/num/private/slvseu.dek @@ -1,6 +1,6 @@ c -c *********************************************************** -c +! *********************************************************** +! subroutine slvseu(n,fjac,ldjac,mljac,mujac,fmas,ldmas,mlmas,mumas, & m1,m2,nm1,fac1,e,lde,ip,iphes,del,ijob, & mle,mue,mbjac,mbb,mdiag,mdiff,mbdiag, @@ -8,7 +8,7 @@ c & caller_id, nvar, nz, lblk, dblk, ublk, & nzmax,isparse,ia,ja,sa, & lrd,rpar_decsol,lid,ipar_decsol,ier) - implicit real*8 (a-h,o-z) + implicit real(dp) (a-h,o-z) interface #include "mtx_decsol.dek" #include"mtx_decsols.dek" @@ -28,8 +28,8 @@ c integer, pointer :: ip(:) ! (nm1) dimension fjac(ldjac,n),fmas(ldmas,nm1) dimension iphes(n) -c common/linal/mle,mue,mbjac,mbb,mdiag,mdiff,mbdiag -c +! common/linal/mle,mue,mbjac,mbb,mdiag,mdiff,mbdiag +! ier = 0 if (nvar > 0) then @@ -39,11 +39,11 @@ c end if goto (1,2,1,2,1,55,55,8,8,55,11,12,11,12,11), ijob -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 1 continue -c --- b=identity, jacobian a full matrix +! --- b=identity, jacobian a full matrix ! write(*,*) 'rhs(1)', del(1) ! write(*,*) 'rhs(2)', del(2) @@ -52,25 +52,25 @@ c --- b=identity, jacobian a full matrix ! write(*,*) 'del(2)', del(2) ! write(*,*) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 2 continue -c --- b=identity, jacobian a banded matrix +! --- b=identity, jacobian a banded matrix call decsol(1,n,lde,e,mle,mue,del,ip,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 8 continue -c --- b=identity, jacobian a sparse matrix +! --- b=identity, jacobian a sparse matrix call decsols(1,n,nzmax,ia,ja,sa,del,lrd,rpar_decsol,lid,ipar_decsol,ier) return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 11 continue -c --- b=identity, jacobian a full matrix, second order +! --- b=identity, jacobian a full matrix, second order mm=m1/m2 do j=1,m2 sum=0.d0 @@ -89,11 +89,11 @@ c --- b=identity, jacobian a full matrix, second order del(i)=(del(i)+del(m2+i))/fac1 end do return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 12 continue -c --- b=identity, jacobian a banded matrix, second order +! --- b=identity, jacobian a banded matrix, second order mm=m1/m2 do j=1,m2 sum=0.d0 @@ -112,13 +112,13 @@ c --- b=identity, jacobian a banded matrix, second order del(i)=(del(i)+del(m2+i))/fac1 end do return -c -c ----------------------------------------------------------- -c +! +! ----------------------------------------------------------- +! 55 continue write(*,*) 'slvseu: invalid ijob', ijob call mesa_error(__FILE__,__LINE__) ! slvseu end subroutine slvseu -c -c end of subroutine slvseu -c +! +! end of subroutine slvseu +! diff --git a/num/public/num_dfridr.dek b/num/public/num_dfridr.dek index 443709e61..2aa97a4d6 100644 --- a/num/public/num_dfridr.dek +++ b/num/public/num_dfridr.dek @@ -15,7 +15,7 @@ end interface integer, parameter :: ntab = 20 integer :: i,j - real(dp) :: x,errt,fac,hh,a(ntab,ntab),xdum,ydum + real(dp) :: errt,fac,hh,a(ntab,ntab) real(dp), parameter :: con2=2d0, con=sqrt(con2), big=1d50, safe=2d0 include 'formats' dfridr = 0d0 diff --git a/num/public/num_lib.f b/num/public/num_lib.f index f9cc1a41e..3462c7ff7 100644 --- a/num/public/num_lib.f +++ b/num/public/num_lib.f @@ -567,7 +567,7 @@ subroutine find_max_quadratic(x1, y1, x2, y2, x3, y3, xmax, ymax, ierr) real(dp), intent(in) :: x1, y1, x2, y2, x3, y3 real(dp), intent(out) :: xmax, ymax integer, intent(out) :: ierr - real(dp) :: a, b, c, s2, denom, dx1, dx2, dxmax + real(dp) :: a, b, c, dx1, dx2, dxmax ierr = 0; xmax = 0; ymax = 0 dx1 = x2 - x1 dx2 = x3 - x2 diff --git a/num/public/num_rodas3.dek b/num/public/num_rodas3.dek index eea72bb5a..3cff1a7ca 100644 --- a/num/public/num_rodas3.dek +++ b/num/public/num_rodas3.dek @@ -295,7 +295,7 @@ subroutine rodas3_work_sizes(n, nzmax, imas, mljac, mujac, mlmas, mumas, liwork, lwork) integer, intent(in) :: n, nzmax, mljac, mujac, mlmas, mumas, imas integer, intent(out) :: liwork, lwork - integer :: ljac, lmas, km, km2, le1 + integer :: ljac, lmas, le1 if (mljac == n) then ljac = n diff --git a/num/public/num_rodas4.dek b/num/public/num_rodas4.dek index 5a4458445..7030ff8ce 100644 --- a/num/public/num_rodas4.dek +++ b/num/public/num_rodas4.dek @@ -292,7 +292,7 @@ subroutine rodas4_work_sizes(n, nzmax, imas, mljac, mujac, mlmas, mumas, liwork, lwork) integer, intent(in) :: n, nzmax, mljac, mujac, mlmas, mumas, imas integer, intent(out) :: liwork, lwork - integer :: ljac, lmas, km, km2, le1 + integer :: ljac, lmas, le1 if (mljac == n) then ljac = n diff --git a/num/public/num_rodasp.dek b/num/public/num_rodasp.dek index c95386d8e..046928a1d 100644 --- a/num/public/num_rodasp.dek +++ b/num/public/num_rodasp.dek @@ -295,7 +295,7 @@ subroutine rodasp_work_sizes(n, nzmax, imas, mljac, mujac, mlmas, mumas, liwork, lwork) integer, intent(in) :: n, nzmax, mljac, mujac, mlmas, mumas, imas integer, intent(out) :: liwork, lwork - integer :: ljac, lmas, km, km2, le1 + integer :: ljac, lmas, le1 if (mljac == n) then ljac = n diff --git a/num/public/num_ros2.dek b/num/public/num_ros2.dek index 15292323c..28995390a 100644 --- a/num/public/num_ros2.dek +++ b/num/public/num_ros2.dek @@ -289,7 +289,7 @@ subroutine ros2_work_sizes(n, nzmax, imas, mljac, mujac, mlmas, mumas, liwork, lwork) integer, intent(in) :: n, nzmax, mljac, mujac, mlmas, mumas, imas integer, intent(out) :: liwork, lwork - integer :: ljac, lmas, km, km2, le1 + integer :: ljac, lmas, le1 if (mljac == n) then ljac = n diff --git a/num/public/num_ros3p.dek b/num/public/num_ros3p.dek index 0622d143a..388a790fd 100644 --- a/num/public/num_ros3p.dek +++ b/num/public/num_ros3p.dek @@ -295,7 +295,7 @@ subroutine ros3p_work_sizes(n, nzmax, imas, mljac, mujac, mlmas, mumas, liwork, lwork) integer, intent(in) :: n, nzmax, mljac, mujac, mlmas, mumas, imas integer, intent(out) :: liwork, lwork - integer :: ljac, lmas, km, km2, le1 + integer :: ljac, lmas, le1 if (mljac == n) then ljac = n diff --git a/num/public/num_ros3pl.dek b/num/public/num_ros3pl.dek index 2c99f69fb..e8d2f8ce0 100644 --- a/num/public/num_ros3pl.dek +++ b/num/public/num_ros3pl.dek @@ -295,7 +295,7 @@ subroutine ros3pl_work_sizes(n, nzmax, imas, mljac, mujac, mlmas, mumas, liwork, lwork) integer, intent(in) :: n, nzmax, mljac, mujac, mlmas, mumas, imas integer, intent(out) :: liwork, lwork - integer :: ljac, lmas, km, km2, le1 + integer :: ljac, lmas, le1 if (mljac == n) then ljac = n diff --git a/num/public/num_rose2.dek b/num/public/num_rose2.dek index 649e05f28..4e0a3a4ea 100644 --- a/num/public/num_rose2.dek +++ b/num/public/num_rose2.dek @@ -292,7 +292,7 @@ subroutine rose2_work_sizes(n, nzmax, imas, mljac, mujac, mlmas, mumas, liwork, lwork) integer, intent(in) :: n, nzmax, mljac, mujac, mlmas, mumas, imas integer, intent(out) :: liwork, lwork - integer :: ljac, lmas, km, km2, le1 + integer :: ljac, lmas, le1 if (mljac == n) then ljac = n diff --git a/num/test/make/makefile_base b/num/test/make/makefile_base index 0e379c86c..5ab88af39 100644 --- a/num/test/make/makefile_base +++ b/num/test/make/makefile_base @@ -77,42 +77,20 @@ nodeps : $(.DEFAULT_GOAL) # # COMPILATION RULES -COMPILE_NC = $(FC) $(FCbasic) $(FCopenmp) $(FCstatic) $(FCopt) $(FCfixed) $(TEST_INCLUDES) -c - -COMPILE_LEGACY_NC = $(filter-out -std=f2008, $(COMPILE_NC)) -std=legacy -TEST_COMPILE_LEGACY = $(filter-out -std=f2008, $(TEST_COMPILE)) -std=legacy - -test_brent.o test_simplex.o : %.o : %.f -ifneq ($(QUIET),) - @echo TEST_COMPILE_LEGACY $< - @$(TEST_COMPILE_LEGACY) $(FCfree) $< -else - $(TEST_COMPILE_LEGACY) $(FCfree) $< -endif - -test_bobyqa.o test_newuoa.o : %.o : %.f -ifneq ($(QUIET),) - @echo TEST_COMPILE_LEGACY $< - @$(TEST_COMPILE_LEGACY) $(FCfixed) $< -else - $(TEST_COMPILE_LEGACY) $(FCfixed) $< -endif - -bari_vdpol.o bari_vdpol3.o bari_vdpol_x.o bari_vdpol3_x.o bari_medakzo.o bari_hires.o \ - bari_pollu.o bari_rober.o bari_beam.o bari_chemakzo.o : %.o : %.f +%.o : %.f ifneq ($(QUIET),) - @echo COMPILE_LEGACY_NC $< - @$(COMPILE_LEGACY_NC) $< + @echo TEST_COMPILE fixed $< + @$(TEST_COMPILE) $(FCfixed) -fimplicit-none $< else - $(COMPILE_LEGACY_NC) $< + $(TEST_COMPILE) $(FCfixed)-fimplicit-none $< endif -%.o: %.f +%.o: %.f90 ifneq ($(QUIET),) - @echo TEST_COMPILE_LEGACY $< - @$(TEST_COMPILE_LEGACY) $(FCfree) $< + @echo TEST_COMPILE free $< + @$(TEST_COMPILE) $(FCfree) -fimplicit-none $< else - $(TEST_COMPILE_LEGACY) $(FCfree) $< + $(TEST_COMPILE) $(FCfree) -fimplicit-none $< endif ################################################################# @@ -122,6 +100,7 @@ endif SRC_PATH = $(TEST_SRC_DIR) vpath %.f $(SRC_PATH) +vpath %.f90 $(SRC_PATH) vpath %.mod $(LOCAL_LIB_DIR):$(MESA_DIR)/include diff --git a/num/test/src/bari_beam.f b/num/test/src/bari_beam.f index da21ceeb6..54017da05 100644 --- a/num/test/src/bari_beam.f +++ b/num/test/src/bari_beam.f @@ -1,222 +1,233 @@ -c----------------------------------------------------------------------- -c----------------------------------------------------------------------- -c -c This file is part of the Test Set for IVP solvers -c http://www.dm.uniba.it/~testset/ -c -c Beam (ODE case) -c ODE of dimension 80 -c -c DISCLAIMER: see -c http://www.dm.uniba.it/~testset/disclaimer.php -c -c The most recent version of this source file can be found at -c http://www.dm.uniba.it/~testset/src/problems/beam.f -c -c This is revision -c $Id: beam.F,v 1.2 2006/10/02 10:29:13 testset Exp $ -c -c----------------------------------------------------------------------- +! ---------------------------------------------------------------------- +! ---------------------------------------------------------------------- +! +! This file is part of the Test Set for IVP solvers +! http://www.dm.uniba.it/~testset/ +! +! Beam (ODE case) +! ODE of dimension 80 +! +! DISCLAIMER: see +! http://www.dm.uniba.it/~testset/disclaimer.php +! +! The most recent version of this source file can be found at +! http://www.dm.uniba.it/~testset/src/problems/beam.f +! +! This is revision +! $Id: beam.F,v 1.2 2006/10/02 10:29:13 testset Exp $ +! +! ---------------------------------------------------------------------- subroutine beam_init(neqn,y,yprime,consis) - integer neqn - double precision y(neqn),yprime(neqn) - logical consis + use const_def, only: dp + integer :: neqn + real(dp) :: y(neqn),yprime(neqn) + logical :: consis - integer i + integer :: i - do 10 i=1,neqn + do i=1,neqn y(i) = 0d0 - 10 continue + end do return end -c----------------------------------------------------------------------- +! ---------------------------------------------------------------------- subroutine beam_feval(nvar,t,th,df,ierr,rpar,ipar) + use const_def, only: dp use math_lib - IMPLICIT REAL*8 (A-H,O-Z) - integer ierr,ipar(*) - integer, parameter :: N=40, NN=2*N, NCOM=N, NSQ=N*N, NQUATR=NSQ*NSQ, NNCOM=NN - double precision rpar(*), an, deltas + IMPLICIT real(dp) (A-H,O-Z) + integer ierr,nvar,i,ipar(*) + integer, parameter :: N=40, NN=2*N, NSQ=N*N, NQUATR=NSQ*NSQ + real(dp) rpar(*), an, deltas DIMENSION DF(NN),TH(150),U(150),V(150),W(150) DIMENSION ALPHA(150),BETA(150),STH(150),CTH(150) -C --- SET DEFAULT VALUES +! --- SET DEFAULT VALUES if (nvar /= nn) stop 'bad nvar for beam_feval' AN=N DELTAS=1.0D+0/AN -C ----- CALCUL DES TH(I) ET DES SIN ET COS ------------- - DO 22 I=2,N - THDIFF=TH(I)-TH(I-1) - STH(I)=sin(THDIFF) - 22 CTH(I)=cos(THDIFF) -C -------- CALCUL DU COTE DROIT DU SYSTEME LINEAIRE ----- - IF(T.GT.3.14159265358979324D0)THEN -C --------- CASE T GREATER PI ------------ -C ---------- I=1 ------------ +! ----- CALCUL DES TH(I) ET DES SIN ET COS ------------- + DO I=2,N + THDIFF=TH(I)-TH(I-1) + STH(I)=sin(THDIFF) + CTH(I)=cos(THDIFF) + END DO +! -------- CALCUL DU COTE DROIT DU SYSTEME LINEAIRE ----- + IF(T > 3.14159265358979324D0)THEN +! --------- CASE T GREATER PI ------------ +! ---------- I=1 ------------ TERM1=(-3.D0*TH(1)+TH(2))*NQUATR V(1)=TERM1 -C -------- I=2,..,N-1 ----------- - DO 32 I=2,N-1 - TERM1=(TH(I-1)-2.D0*TH(I)+TH(I+1))*NQUATR - 32 V(I)=TERM1 -C ----------- I=N ------------- +! -------- I=2,..,N-1 ----------- + DO I=2,N-1 + TERM1=(TH(I-1)-2.D0*TH(I)+TH(I+1))*NQUATR + V(I)=TERM1 + END DO +! ----------- I=N ------------- TERM1=(TH(N-1)-TH(N))*NQUATR V(N)=TERM1 ELSE -C --------- CASE T LESS EQUAL PI ------------ +! --------- CASE T LESS EQUAL PI ------------ FABS=1.5D0*sin(T)*sin(T) FX=-FABS FY= FABS -C ---------- I=1 ------------ +! ---------- I=1 ------------ TERM1=(-3.D0*TH(1)+TH(2))*NQUATR TERM2=NSQ*(FY*cos(TH(1))-FX*sin(TH(1))) V(1)=TERM1+TERM2 -C -------- I=2,..,N-1 ----------- - DO 34 I=2,N-1 - TERM1=(TH(I-1)-2.D0*TH(I)+TH(I+1))*NQUATR - TERM2=NSQ*(FY*cos(TH(I))-FX*sin(TH(I))) - 34 V(I)=TERM1+TERM2 -C ----------- I=N ------------- +! -------- I=2,..,N-1 ----------- + DO I=2,N-1 + TERM1=(TH(I-1)-2.D0*TH(I)+TH(I+1))*NQUATR + TERM2=NSQ*(FY*cos(TH(I))-FX*sin(TH(I))) + V(I)=TERM1+TERM2 + END DO +! ----------- I=N ------------- TERM1=(TH(N-1)-TH(N))*NQUATR TERM2=NSQ*(FY*cos(TH(N))-FX*sin(TH(N))) V(N)=TERM1+TERM2 END IF -C -------- COMPUTE PRODUCT DV=W ------------ +! -------- COMPUTE PRODUCT DV=W ------------ W(1)=STH(2)*V(2) - DO 43 I=2,N-1 - 43 W(I)=-STH(I)*V(I-1)+STH(I+1)*V(I+1) + DO I=2,N-1 + W(I)=-STH(I)*V(I-1)+STH(I+1)*V(I+1) + END DO W(N)=-STH(N)*V(N-1) -C -------- TERME 3 ----------------- - DO 435 I=1,N - 435 W(I)=W(I)+TH(N+I)*TH(N+I) -C ------- SOLVE SYSTEM CW=W --------- +! -------- TERME 3 ----------------- + DO I=1,N + W(I)=W(I)+TH(N+I)*TH(N+I) + END DO +! ------- SOLVE SYSTEM CW=W --------- ALPHA(1)=1.D0 - DO 44 I=2,N - ALPHA(I)=2.D0 - 44 BETA(I-1)=-CTH(I) + DO I=2,N + ALPHA(I)=2.D0 + BETA(I-1)=-CTH(I) + END DO ALPHA(N)=3.D0 - DO 45 I=N-1,1,-1 - Q=BETA(I)/ALPHA(I+1) - W(I)=W(I)-W(I+1)*Q - 45 ALPHA(I)=ALPHA(I)-BETA(I)*Q + DO I=N-1,1,-1 + Q=BETA(I)/ALPHA(I+1) + W(I)=W(I)-W(I+1)*Q + ALPHA(I)=ALPHA(I)-BETA(I)*Q + END DO W(1)=W(1)/ALPHA(1) - DO 46 I=2,N - 46 W(I)=(W(I)-BETA(I-1)*W(I-1))/ALPHA(I) -C -------- COMPUTE U=CV+DW --------- + DO I=2,N + W(I)=(W(I)-BETA(I-1)*W(I-1))/ALPHA(I) + END DO +! -------- COMPUTE U=CV+DW --------- U(1)=V(1)-CTH(2)*V(2)+STH(2)*W(2) - DO 47 I=2,N-1 - 47 U(I)=2.D0*V(I)-CTH(I)*V(I-1)-CTH(I+1)*V(I+1) - & -STH(I)*W(I-1)+STH(I+1)*W(I+1) + DO I=2,N-1 + U(I)=2.D0*V(I)-CTH(I)*V(I-1)-CTH(I+1)*V(I+1) + & -STH(I)*W(I-1)+STH(I+1)*W(I+1) + END DO U(N)=3.D0*V(N)-CTH(N)*V(N-1)-STH(N)*W(N-1) -C -------- PUT DERIVATIVES IN RIGHT PLACE ------------- - DO 54 I=1,N - DF(I)=TH(N+I) - 54 DF(N+I)=U(I) +! -------- PUT DERIVATIVES IN RIGHT PLACE ------------- + DO I=1,N + DF(I)=TH(N+I) + DF(N+I)=U(I) + END DO RETURN END -c----------------------------------------------------------------------- +! ---------------------------------------------------------------------- subroutine beam_jeval(ldim,neqn,t,y,yprime,dfdy,ierr,rpar,ipar) + use const_def, only: dp integer ldim,neqn,ierr,ipar(*) - double precision t,y(neqn),yprime(neqn),dfdy(ldim,neqn),rpar(*) -c -c dummy subroutine -c + real(dp) t,y(neqn),yprime(neqn),dfdy(ldim,neqn),rpar(*) +! +! dummy subroutine +! + return end -c----------------------------------------------------------------------- +! ---------------------------------------------------------------------- subroutine beam_solut(neqn,t,y) + use const_def, only: dp integer neqn - double precision t,y(neqn) -c -c -c computed using double precision RADAU on an -c Alphaserver DS20E, with a 667 MHz EV67 processor. -c -c uround = 1.01d-19 -c rtol = atol = h0 = 1.1d-18 -c -c - y( 1) = -0.5792366591285007D-002 - y( 2) = -0.1695298550721735D-001 - y( 3) = -0.2769103312973094D-001 - y( 4) = -0.3800815655879158D-001 - y( 5) = -0.4790616859743763D-001 - y( 6) = -0.5738710435274594D-001 - y( 7) = -0.6645327313454617D-001 - y( 8) = -0.7510730581979037D-001 - y( 9) = -0.8335219765414992D-001 - y( 10) = -0.9119134654647947D-001 - y( 11) = -0.9862858700132091D-001 - y( 12) = -0.1056682200378002D+000 - y( 13) = -0.1123150395409595D+000 - y( 14) = -0.1185743552727245D+000 - y( 15) = -0.1244520128755561D+000 - y( 16) = -0.1299544113264161D+000 - y( 17) = -0.1350885180610398D+000 - y( 18) = -0.1398618819194422D+000 - y( 19) = -0.1442826441015242D+000 - y( 20) = -0.1483595472463012D+000 - y( 21) = -0.1521019429001447D+000 - y( 22) = -0.1555197978061129D+000 - y( 23) = -0.1586236993420229D+000 - y( 24) = -0.1614248603702127D+000 - y( 25) = -0.1639351238193223D+000 - y( 26) = -0.1661669673440852D+000 - y( 27) = -0.1681335081778558D+000 - y( 28) = -0.1698485080602243D+000 - y( 29) = -0.1713263782440888D+000 - y( 30) = -0.1725821847462537D+000 - y( 31) = -0.1736316537975654D+000 - y( 32) = -0.1744911773840049D+000 - y( 33) = -0.1751778187863392D+000 - y( 34) = -0.1757093178712902D+000 - y( 35) = -0.1761040960228576D+000 - y( 36) = -0.1763812607175549D+000 - y( 37) = -0.1765606097564671D+000 - y( 38) = -0.1766626352260565D+000 - y( 39) = -0.1767085270807460D+000 - y( 40) = -0.1767201761075488D+000 - y( 41) = 0.3747362681329794D-001 - y( 42) = 0.1099117880217593D+000 - y( 43) = 0.1798360474312799D+000 - y( 44) = 0.2472427305442391D+000 - y( 45) = 0.3121293820596567D+000 - y( 46) = 0.3744947377019500D+000 - y( 47) = 0.4343386073492798D+000 - y( 48) = 0.4916620354601748D+000 - y( 49) = 0.5464677854586807D+000 - y( 50) = 0.5987609702624270D+000 - y( 51) = 0.6485493611110740D+000 - y( 52) = 0.6958435169132503D+000 - y( 53) = 0.7406572668520808D+000 - y( 54) = 0.7830081747813241D+000 - y( 55) = 0.8229176659201515D+000 - y( 56) = 0.8604110305190560D+000 - y( 57) = 0.8955175502377805D+000 - y( 58) = 0.9282708263127953D+000 - y( 59) = 0.9587089334522034D+000 - y( 60) = 0.9868747821728363D+000 - y( 61) = 0.1012816579961883D+001 - y( 62) = 0.1036587736679858D+001 - y( 63) = 0.1058246826481355D+001 - y( 64) = 0.1077857811433353D+001 - y( 65) = 0.1095490222005369D+001 - y( 66) = 0.1111219164294898D+001 - y( 67) = 0.1125125269286501D+001 - y( 68) = 0.1137294526609229D+001 - y( 69) = 0.1147818025153607D+001 - y( 70) = 0.1156792132004482D+001 - y( 71) = 0.1164318845130183D+001 - y( 72) = 0.1170505992596124D+001 - y( 73) = 0.1175467424299550D+001 - y( 74) = 0.1179323003228859D+001 - y( 75) = 0.1182198586299667D+001 - y( 76) = 0.1184226111223146D+001 - y( 77) = 0.1185543909805575D+001 - y( 78) = 0.1186297084203716D+001 - y( 79) = 0.1186637618908127D+001 - y( 80) = 0.1186724615113034D+001 - + real(dp) t,y(neqn) +! computed using real(dp) RADAU on an +! Alphaserver DS20E, with a 667 MHz EV67 processor. +! +! uround = 1.01d-19 +! rtol = atol = h0 = 1.1d-18 + y( 1) = -0.5792366591285007D-002 + y( 2) = -0.1695298550721735D-001 + y( 3) = -0.2769103312973094D-001 + y( 4) = -0.3800815655879158D-001 + y( 5) = -0.4790616859743763D-001 + y( 6) = -0.5738710435274594D-001 + y( 7) = -0.6645327313454617D-001 + y( 8) = -0.7510730581979037D-001 + y( 9) = -0.8335219765414992D-001 + y(10) = -0.9119134654647947D-001 + y(11) = -0.9862858700132091D-001 + y(12) = -0.1056682200378002D+000 + y(13) = -0.1123150395409595D+000 + y(14) = -0.1185743552727245D+000 + y(15) = -0.1244520128755561D+000 + y(16) = -0.1299544113264161D+000 + y(17) = -0.1350885180610398D+000 + y(18) = -0.1398618819194422D+000 + y(19) = -0.1442826441015242D+000 + y(20) = -0.1483595472463012D+000 + y(21) = -0.1521019429001447D+000 + y(22) = -0.1555197978061129D+000 + y(23) = -0.1586236993420229D+000 + y(24) = -0.1614248603702127D+000 + y(25) = -0.1639351238193223D+000 + y(26) = -0.1661669673440852D+000 + y(27) = -0.1681335081778558D+000 + y(28) = -0.1698485080602243D+000 + y(29) = -0.1713263782440888D+000 + y(30) = -0.1725821847462537D+000 + y(31) = -0.1736316537975654D+000 + y(32) = -0.1744911773840049D+000 + y(33) = -0.1751778187863392D+000 + y(34) = -0.1757093178712902D+000 + y(35) = -0.1761040960228576D+000 + y(36) = -0.1763812607175549D+000 + y(37) = -0.1765606097564671D+000 + y(38) = -0.1766626352260565D+000 + y(39) = -0.1767085270807460D+000 + y(40) = -0.1767201761075488D+000 + y(41) = 0.3747362681329794D-001 + y(42) = 0.1099117880217593D+000 + y(43) = 0.1798360474312799D+000 + y(44) = 0.2472427305442391D+000 + y(45) = 0.3121293820596567D+000 + y(46) = 0.3744947377019500D+000 + y(47) = 0.4343386073492798D+000 + y(48) = 0.4916620354601748D+000 + y(49) = 0.5464677854586807D+000 + y(50) = 0.5987609702624270D+000 + y(51) = 0.6485493611110740D+000 + y(52) = 0.6958435169132503D+000 + y(53) = 0.7406572668520808D+000 + y(54) = 0.7830081747813241D+000 + y(55) = 0.8229176659201515D+000 + y(56) = 0.8604110305190560D+000 + y(57) = 0.8955175502377805D+000 + y(58) = 0.9282708263127953D+000 + y(59) = 0.9587089334522034D+000 + y(60) = 0.9868747821728363D+000 + y(61) = 0.1012816579961883D+001 + y(62) = 0.1036587736679858D+001 + y(63) = 0.1058246826481355D+001 + y(64) = 0.1077857811433353D+001 + y(65) = 0.1095490222005369D+001 + y(66) = 0.1111219164294898D+001 + y(67) = 0.1125125269286501D+001 + y(68) = 0.1137294526609229D+001 + y(69) = 0.1147818025153607D+001 + y(70) = 0.1156792132004482D+001 + y(71) = 0.1164318845130183D+001 + y(72) = 0.1170505992596124D+001 + y(73) = 0.1175467424299550D+001 + y(74) = 0.1179323003228859D+001 + y(75) = 0.1182198586299667D+001 + y(76) = 0.1184226111223146D+001 + y(77) = 0.1185543909805575D+001 + y(78) = 0.1186297084203716D+001 + y(79) = 0.1186637618908127D+001 + y(80) = 0.1186724615113034D+001 + return end diff --git a/num/test/src/bari_chemakzo.f b/num/test/src/bari_chemakzo.f index 3097b5e35..1ac603198 100644 --- a/num/test/src/bari_chemakzo.f +++ b/num/test/src/bari_chemakzo.f @@ -56,7 +56,7 @@ subroutine chemakzo_init(neqn,y,yprime,consis) integer ierr,ipar(0) double precision rpar(0) - double precision k1,k2,k3,k4,kbig,kla,ks + double precision ks parameter ( + ks =115.83d0 +) diff --git a/num/test/src/bari_vdpol.f b/num/test/src/bari_vdpol.f index 9735abf56..fb36ec291 100644 --- a/num/test/src/bari_vdpol.f +++ b/num/test/src/bari_vdpol.f @@ -40,8 +40,6 @@ subroutine vdpol_jeval(ldim,neqn,t,y,yprime,dfdy,ierr,rpar,ipar) integer ldim,neqn,ierr,ipar(*) double precision t,y(neqn),yprime(neqn),dfdy(ldim,neqn),rpar(*) - integer i,j - dfdy(1,1) = 0d0 dfdy(1,2) = 1d0 dfdy(2,1) = (-2.0d0*y(1)*y(2)-1d0)/1.0d-3 diff --git a/num/test/src/sample_ode_solver.f b/num/test/src/sample_ode_solver.f90 similarity index 99% rename from num/test/src/sample_ode_solver.f rename to num/test/src/sample_ode_solver.f90 index 0685d52eb..c0cee48f1 100644 --- a/num/test/src/sample_ode_solver.f +++ b/num/test/src/sample_ode_solver.f90 @@ -233,7 +233,6 @@ subroutine vdpol_jacob(n, x, h, y, f, dfdy, ld_dfdy, lrpar, rpar, lipar, ipar, i integer, intent(inout), pointer :: ipar(:) ! (lipar) real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) integer, intent(out) :: ierr - integer :: nz, i, j ierr = 0 dfdy(1, 1) = 0d0 dfdy(1, 2) = 1d0 diff --git a/num/test/src/test_beam.f b/num/test/src/test_beam.f90 similarity index 99% rename from num/test/src/test_beam.f rename to num/test/src/test_beam.f90 index 517dd1e46..7cef7ee4e 100644 --- a/num/test/src/test_beam.f +++ b/num/test/src/test_beam.f90 @@ -33,7 +33,6 @@ subroutine beam_jacob(n,x,h,y,f,dfdy,ld_dfdy,lrpar,rpar,lipar,ipar,ierr) real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) real(dp) :: yprime(n) integer, intent(out) :: ierr - integer :: nz, i, j ierr = 0 ipar(i_njac) = ipar(i_njac) + 1 call beam_jeval(ld_dfdy,n,x,y,yprime,dfdy,ierr,rpar,ipar) diff --git a/num/test/src/test_bobyqa.f b/num/test/src/test_bobyqa.f deleted file mode 100644 index 38097cbdd..000000000 --- a/num/test/src/test_bobyqa.f +++ /dev/null @@ -1,85 +0,0 @@ - module test_bobyqa - - use num_def - use num_lib - - integer :: nfcn - - contains - - subroutine do_test_bobyqa - IMPLICIT REAL*8 (A-H,O-Z) - DIMENSION X(100),XL(100),XU(100),W(10000) - real*8, parameter :: max_valid_value = 1d99 - include 'formats' - BDL=-1.0D0 - BDU=1.0D0 - IPRINT=0 - MAXFUN=5000 - RHOEND=1.0D-6 - DO 30 N=2,6,2 - nfcn = 0 - NPT=2*N+1 - DO 10 I=1,N - XL(I)=BDL - XU(I)=BDU - 10 X(I)=DFLOAT(I)/DFLOAT(N+1) - RHOBEG=0.2D0*X(1) - PRINT 20, N,NPT - 20 FORMAT (4X,'test BOBYQA with N =',I2,' and NPT =',I3) - CALL BOBYQA (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT,MAXFUN,W,CALFUN,max_valid_value) - call calfun(n,x,f) - !write(*,2) 'f', nfcn, f - if (abs(f) > 1d-10) write(*,*) 'failed in test of BOBYQA: min f', f - 30 CONTINUE - END subroutine do_test_bobyqa - - - - subroutine calfun(n,x,f) - use const_def, only: dp - integer, intent(in) :: n - real(dp), intent(in) :: x(*) - real(dp), intent(out) :: f - - real(dp) :: Y(10,10) - nfcn = nfcn + 1 - DO 10 J=1,N - Y(1,J)=1.0D0 - 10 Y(2,J)=2.0D0*X(J)-1.0D0 - DO 20 I=2,N - DO 20 J=1,N - 20 Y(I+1,J)=2.0D0*Y(2,J)*Y(I,J)-Y(I-1,J) - F=0.0D0 - NP=N+1 - IW=1 - DO 40 I=1,NP - SUM=0.0D0 - DO 30 J=1,N - 30 SUM=SUM+Y(I,J) - SUM=SUM/DFLOAT(N) - IF (IW .GT. 0) SUM=SUM+1.0D0/DFLOAT(I*I-2*I) - IW=-IW - 40 F=F+SUM*SUM - RETURN - END SUBROUTINE CALFUN - - - SUBROUTINE xCALFUN (N,X,F) - implicit none - integer, intent(in) :: n - real(dp), intent(in) :: x(*) - real(dp), intent(out) :: f - integer :: i, j - real(dp) :: temp - F=0.0D0 - DO 10 I=4,N,2 - DO 10 J=2,I-2,2 - TEMP=(X(I-1)-X(J-1))**2+(X(I)-X(J))**2 - TEMP=DMAX1(TEMP,1.0D-6) - 10 F=F+1.0D0/DSQRT(TEMP) - RETURN - END SUBROUTINE xCALFUN - - - end module test_bobyqa diff --git a/num/test/src/test_bobyqa.f90 b/num/test/src/test_bobyqa.f90 new file mode 100644 index 000000000..63a6883a7 --- /dev/null +++ b/num/test/src/test_bobyqa.f90 @@ -0,0 +1,93 @@ +module test_bobyqa + + use num_def + use num_lib + + implicit none + + integer :: nfcn + +contains + + subroutine do_test_bobyqa + real(dp), dimension(100) :: X, XL, XU + real(dp), dimension(10000) :: W + real(dp), parameter :: max_valid_value = 1d99 + real(dp), parameter :: BDL = -1.0d0 + real(dp), parameter :: BDU = 1.0d0 + real(dp) :: f, RHOBEG, RHOend + integer :: I, IPRINT, N, MAXFUN, NPT + include 'formats' + IPRINT = 0 + MAXFUN = 5000 + RHOend = 1.0D-6 + do N = 2, 6, 2 + nfcn = 0 + NPT = 2*N + 1 + do I = 1, N + XL(I) = BDL + XU(I) = BDU + X(I) = DBLE(I)/DBLE(N + 1) + end do + RHOBEG = 0.2D0*X(1) + write (*, '(4X,A,I2,A,I3)') 'test BOBYQA with N =', N, ' and NPT =', NPT + call BOBYQA(N, NPT, X, XL, XU, RHOBEG, RHOend, IPRINT, MAXFUN, W, CALFUN, max_valid_value) + call calfun(n, x, f) + !write(*,2) 'f', nfcn, f + if (abs(f) > 1d-10) write (*, *) 'failed in test of BOBYQA: min f', f + end do + end subroutine do_test_bobyqa + + subroutine calfun(n, x, f) + use const_def, only: dp + integer, intent(in) :: n + real(dp), intent(in) :: x(*) + real(dp), intent(out) :: f + integer :: i, j, iw, np + real(dp) :: sum + + real(dp) :: Y(10, 10) + nfcn = nfcn + 1 + do J = 1, N + Y(1, J) = 1.0D0 + Y(2, J) = 2.0D0*X(J) - 1.0D0 + end do + do I = 2, N + do J = 1, N + Y(I + 1, J) = 2.0D0*Y(2, J)*Y(I, J) - Y(I - 1, J) + end do + end do + F = 0.0D0 + NP = N + 1 + IW = 1 + do I = 1, NP + SUM = 0.0D0 + do J = 1, N + SUM = SUM + Y(I, J) + end do + SUM = SUM/DBLE(N) + IF (IW .GT. 0) SUM = SUM + 1.0D0/DBLE(I*I - 2*I) + IW = -IW + F = F + SUM*SUM + end do + RETURN + end subroutine CALFUN + + subroutine xCALFUN(N, X, F) + integer, intent(in) :: n + real(dp), intent(in) :: x(*) + real(dp), intent(out) :: f + integer :: i, j + real(dp) :: temp + F = 0.0D0 + do I = 4, N, 2 + do J = 2, I - 2, 2 + TEMP = (X(I - 1) - X(J - 1))**2 + (X(I) - X(J))**2 + TEMP = DMAX1(TEMP, 1.0D-6) + F = F + 1.0D0/DSQRT(TEMP) + end do + end do + RETURN + end subroutine xCALFUN + +end module test_bobyqa diff --git a/num/test/src/test_brent.f b/num/test/src/test_brent.f90 similarity index 81% rename from num/test/src/test_brent.f rename to num/test/src/test_brent.f90 index 4e940aa49..16f5a80bd 100644 --- a/num/test/src/test_brent.f +++ b/num/test/src/test_brent.f90 @@ -4,6 +4,7 @@ module test_brent use num_lib use math_lib use utils_lib, only: mesa_error + use const_def, only: dp implicit none @@ -45,14 +46,13 @@ subroutine test_global_min_all ! implicit none - real ( kind = 8 ) a - real ( kind = 8 ) b - real ( kind = 8 ) c - real ( kind = 8 ) e - real ( kind = 8 ) m - real ( kind = 8 ) machep - real ( kind = 8 ) t - real ( kind = 8 ) z + real(dp) a + real(dp) b + real(dp) c + real(dp) e + real(dp) m + real(dp) machep + real(dp) t write ( *, '(a)' ) ' ' write ( *, '(a)' ) 'TEST_GLOMIN_ALL' @@ -134,18 +134,19 @@ end subroutine test_global_min_all subroutine test_glomin_one ( a, b, c, m, machep, e, t, f, title ) - real*8, intent(in) :: a, b, c, m, machep, e, t + real(dp), intent(in) :: a, b, c, m, machep, e, t interface - real*8 function f(x) - real*8, intent(in) :: x + real(dp) function f(x) + use const_def, only: dp + real(dp), intent(in) :: x end function f end interface - real ( kind = 8 ) fa - real ( kind = 8 ) fb - real ( kind = 8 ) fx + real (dp) fa + real (dp) fb + real (dp) fx character ( len = * ) title - real ( kind = 8 ) x + real (dp) x integer :: max_tries, ierr include 'formats' @@ -168,28 +169,28 @@ end function f end subroutine test_glomin_one - real*8 function h_01 ( x ) - real*8, intent(in) :: x + real(dp) function h_01 ( x ) + real(dp), intent(in) :: x h_01 = 2.0D+00 - x end function h_01 - real*8 function h_02 ( x ) - real*8, intent(in) :: x + real(dp) function h_02 ( x ) + real(dp), intent(in) :: x h_02 = x * x end function h_02 - real*8 function h_03 ( x ) - real*8, intent(in) :: x + real(dp) function h_03 ( x ) + real(dp), intent(in) :: x h_03 = x * x * ( x + 1.0D+00 ) end function h_03 - real*8 function h_04 ( x ) - real*8, intent(in) :: x + real(dp) function h_04 ( x ) + real(dp), intent(in) :: x h_04 = ( x + sin ( x ) ) * exp( - x * x ) end function h_04 - real*8 function h_05 ( x ) - real*8, intent(in) :: x + real(dp) function h_05 ( x ) + real(dp), intent(in) :: x h_05 = ( x - sin ( x ) ) * exp( - x * x ) end function h_05 @@ -214,12 +215,10 @@ subroutine test_local_min_all ! implicit none - real ( kind = 8 ) a - real ( kind = 8 ) b - real ( kind = 8 ) eps - real ( kind = 8 ) r8_epsilon - real ( kind = 8 ) t - real ( kind = 8 ) z + real(dp) a + real(dp) b + real(dp) eps + real(dp) t write ( *, '(a)' ) ' ' write ( *, '(a)' ) 'TEST_LOCAL_MIN_ALL' @@ -284,31 +283,32 @@ subroutine test_local_min_one ( a, b, eps, t, f, title ) ! ! Parameters: ! - ! Input, real ( kind = 8 ) A, B, the endpoints of the interval. + ! Input, real(dp) A, B, the endpoints of the interval. ! - ! Input, real ( kind = 8 ) EPS, a positive relative error tolerance. + ! Input, real(dp) EPS, a positive relative error tolerance. ! - ! Input, real ( kind = 8 ) T, a positive absolute error tolerance. + ! Input, real(dp) T, a positive absolute error tolerance. ! - ! Input, external real ( kind = 8 ) F, the name of a user-supplied + ! Input, external real(dp) F, the name of a user-supplied ! function, of the form "FUNCTION F ( X )", which evaluates the ! function whose local minimum is being sought. ! ! Input, character ( LEN = * ) TITLE, a title for the problem. ! implicit none - real*8, intent(in) :: a, b, eps, t + real(dp), intent(in) :: a, b, eps, t interface - real*8 function f(x) - real*8, intent(in) :: x + real(dp) function f(x) + use const_def, only: dp + real(dp), intent(in) :: x end function f end interface character (len=*) :: title - real ( kind = 8 ) fa - real ( kind = 8 ) fb - real ( kind = 8 ) fx - real ( kind = 8 ) x + real (dp) fa + real (dp) fb + real (dp) fx + real (dp) x integer :: max_tries, ierr include 'formats' @@ -330,33 +330,33 @@ end function f return end subroutine test_local_min_one - real*8 function g_01 ( x ) - real*8, intent(in) :: x + real(dp) function g_01 ( x ) + real(dp), intent(in) :: x g_01 = ( x - 2.0D+00 ) * ( x - 2.0D+00 ) + 1.0D+00 end function g_01 - real*8 function g_02 ( x ) - real*8, intent(in) :: x + real(dp) function g_02 ( x ) + real(dp), intent(in) :: x g_02 = x * x + exp( - x ) end function g_02 - real*8 function g_03 ( x ) - real*8, intent(in) :: x + real(dp) function g_03 ( x ) + real(dp), intent(in) :: x g_03 = ( ( x * x + 2.0D+00 ) * x + 1.0D+00 ) * x + 3.0D+00 end function g_03 - real*8 function g_04 ( x ) - real*8, intent(in) :: x + real(dp) function g_04 ( x ) + real(dp), intent(in) :: x g_04 = exp( x ) + 0.01D+00 / x end function g_04 - real*8 function g_05 ( x ) - real*8, intent(in) :: x + real(dp) function g_05 ( x ) + real(dp), intent(in) :: x g_05 = exp( x ) - 2.0D+00 * x + 0.01D+00 / x - 0.000001D+00 / x / x end function g_05 - real*8 function f_01 ( x, dfdx, lrpar, rpar, lipar, ipar, ierr ) + real(dp) function f_01 ( x, dfdx, lrpar, rpar, lipar, ipar, ierr ) integer, intent(in) :: lrpar, lipar real(dp), intent(in) :: x real(dp), intent(out) :: dfdx @@ -368,7 +368,7 @@ real*8 function f_01 ( x, dfdx, lrpar, rpar, lipar, ipar, ierr ) dfdx = 0 end function f_01 - real*8 function f_02 ( x, dfdx, lrpar, rpar, lipar, ipar, ierr ) + real(dp) function f_02 ( x, dfdx, lrpar, rpar, lipar, ipar, ierr ) integer, intent(in) :: lrpar, lipar real(dp), intent(in) :: x real(dp), intent(out) :: dfdx @@ -380,7 +380,7 @@ real*8 function f_02 ( x, dfdx, lrpar, rpar, lipar, ipar, ierr ) dfdx = 0 end function f_02 - real*8 function f_03 ( x, dfdx, lrpar, rpar, lipar, ipar, ierr ) + real(dp) function f_03 ( x, dfdx, lrpar, rpar, lipar, ipar, ierr ) integer, intent(in) :: lrpar, lipar real(dp), intent(in) :: x real(dp), intent(out) :: dfdx @@ -392,7 +392,7 @@ real*8 function f_03 ( x, dfdx, lrpar, rpar, lipar, ipar, ierr ) dfdx = 0 end function f_03 - real*8 function f_04 ( x, dfdx, lrpar, rpar, lipar, ipar, ierr ) + real(dp) function f_04 ( x, dfdx, lrpar, rpar, lipar, ipar, ierr ) integer, intent(in) :: lrpar, lipar real(dp), intent(in) :: x real(dp), intent(out) :: dfdx @@ -404,7 +404,7 @@ real*8 function f_04 ( x, dfdx, lrpar, rpar, lipar, ipar, ierr ) dfdx = 0 end function f_04 - real*8 function f_05 ( x, dfdx, lrpar, rpar, lipar, ipar, ierr ) + real(dp) function f_05 ( x, dfdx, lrpar, rpar, lipar, ipar, ierr ) integer, intent(in) :: lrpar, lipar real(dp), intent(in) :: x real(dp), intent(out) :: dfdx @@ -437,12 +437,10 @@ subroutine test_brent_zero ( ) ! implicit none - real ( kind = 8 ) a - real ( kind = 8 ) b - real ( kind = 8 ) machep - real ( kind = 8 ) r8_epsilon - real ( kind = 8 ) t - real ( kind = 8 ) z + real(dp) a + real(dp) b + real(dp) machep + real(dp) t machep = epsilon ( machep ) t = machep @@ -502,15 +500,15 @@ subroutine test_zero_one ( a, b, machep, t, f, title ) ! ! Parameters: ! - ! Input, real ( kind = 8 ) A, B, the two endpoints of the change of sign + ! Input, real(dp) A, B, the two endpoints of the change of sign ! interval. ! - ! Input, real ( kind = 8 ) MACHEP, an estimate for the relative machine + ! Input, real(dp) MACHEP, an estimate for the relative machine ! precision. ! - ! Input, real ( kind = 8 ) T, a positive error tolerance. + ! Input, real(dp) T, a positive error tolerance. ! - ! Input, external real ( kind = 8 ) F, the name of a user-supplied + ! Input, external real(dp) F, the name of a user-supplied ! function, of the form "FUNCTION F ( X )", which evaluates the ! function whose zero is being sought. ! @@ -522,16 +520,16 @@ subroutine test_zero_one ( a, b, machep, t, f, title ) include 'num_root_fcn.dek' ! f provides function values end interface - real ( kind = 8 ) a - real ( kind = 8 ) b - real ( kind = 8 ) fa - real ( kind = 8 ) fb - real ( kind = 8 ) fz - real ( kind = 8 ) machep - real ( kind = 8 ) t + real(dp) a + real(dp) b + real(dp) fa + real(dp) fb + real(dp) fz + real(dp) machep + real(dp) t character ( len = * ) title - real ( kind = 8 ) z - real ( kind = 8 ) dfdx + real(dp) z + real(dp) dfdx integer, parameter :: lrpar = 0, lipar = 0 integer :: ierr @@ -566,10 +564,6 @@ subroutine test_zero_one ( a, b, machep, t, f, title ) return end subroutine test_zero_one - - - - - + end module test_brent diff --git a/num/test/src/test_chemakzo.f b/num/test/src/test_chemakzo.f90 similarity index 98% rename from num/test/src/test_chemakzo.f rename to num/test/src/test_chemakzo.f90 index e712dc541..c1208c4c0 100644 --- a/num/test/src/test_chemakzo.f +++ b/num/test/src/test_chemakzo.f90 @@ -33,7 +33,6 @@ subroutine chemakzo_jacob(n,x,h,y,f,dfdy,ld_dfdy,lrpar,rpar,lipar,ipar,ierr) real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) real(dp) :: yprime(n) integer, intent(out) :: ierr - integer :: nz, i, j ierr = 0 ipar(i_njac) = ipar(i_njac) + 1 call chemakzo_jeval(ld_dfdy,n,x,y,yprime,dfdy,ierr,rpar,ipar) @@ -160,7 +159,7 @@ subroutine do_test_chemakzo(which_solver,which_decsol,m_band,numerical_jacobian, logical :: consis integer, parameter :: ndisc = 0 real(dp) :: h0, t(0:ndisc+1), atol(1), rtol(1) - integer :: i, mujac, mljac, matrix_type_spec, ierr, imas, mlmas, mumas, m1, m2, itol, nstep + integer :: mujac, mljac, matrix_type_spec, ierr, imas, mlmas, mumas, m1, m2, itol, nstep real(dp), target :: rpar_ary(lrpar) integer, target :: ipar_ary(lipar) real(dp), pointer :: rpar(:) diff --git a/num/test/src/test_diffusion.f b/num/test/src/test_diffusion.f90 similarity index 98% rename from num/test/src/test_diffusion.f rename to num/test/src/test_diffusion.f90 index 7ab244a04..0518f0310 100644 --- a/num/test/src/test_diffusion.f +++ b/num/test/src/test_diffusion.f90 @@ -30,7 +30,7 @@ subroutine diffusion_op(n,x,h,y,f,dfdy,ld_dfdy,lrpar,rpar,lipar,ipar,ierr) integer, intent(out) :: ierr real(dp) :: sig1, sig2 - integer :: i, j + integer :: i ierr = 0 f = 0; dfdy=0 @@ -89,7 +89,6 @@ subroutine diffusion_jacob(n,x,h,y,f,dfdy,ld_dfdy,lrpar,rpar,lipar,ipar,ierr) real(dp), intent(inout) :: f(:), dfdy(:,:) integer, intent(inout), pointer :: ipar(:) ! (lipar) real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) - real(dp) :: yprime(n) integer, intent(out) :: ierr include 'formats' ierr = 0 @@ -182,7 +181,7 @@ subroutine do_test_diffusion(which_solver,which_decsol,numerical_jacobian,show_a real(dp), target :: y_ary(n) real(dp), pointer :: y(:) real(dp) :: result(n_soln), soln(n_soln), h0, atol(1), rtol(1), t(0:ndisc+1) - integer :: i, j, k, matrix_type_spec, ierr, imas, mlmas, mumas, m1, m2, itol + integer :: i, k, matrix_type_spec, ierr, imas, mlmas, mumas, m1, m2, itol real(dp), target :: rpar_ary(lrpar) integer, target :: ipar_ary(lipar) real(dp), pointer :: rpar(:) diff --git a/num/test/src/test_int_support.f b/num/test/src/test_int_support.f90 similarity index 95% rename from num/test/src/test_int_support.f rename to num/test/src/test_int_support.f90 index f8d2edf98..d63f73dc0 100644 --- a/num/test/src/test_int_support.f +++ b/num/test/src/test_int_support.f90 @@ -46,10 +46,9 @@ subroutine do_test_stiff_int( & real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) integer, intent(out) :: ierr - integer :: i, k, nsteps, lout, iout, idid, ijac, max_cols_exptrap, & - max_steps, xnstp, nfcn, njac, naccept, nreject, ndec, nsol, nrdens, & - nzmax, lrd, lid, nrow, ncol, ndns, ndim, lfil, maxits, isparse, liwork, lwork - real(dp) :: h, droptol, eps, max_step_size, y_min, y_max + integer :: i, lout, iout, idid, ijac, max_cols_exptrap, max_steps, nrdens, & + nzmax, lrd, lid, isparse, liwork, lwork + real(dp) :: h, eps, max_step_size, y_min, y_max integer, pointer :: iwork(:) !(liwork) real(dp), pointer :: work(:) !(lwork) diff --git a/num/test/src/test_integrate.f b/num/test/src/test_integrate.f90 similarity index 100% rename from num/test/src/test_integrate.f rename to num/test/src/test_integrate.f90 diff --git a/num/test/src/test_medakzo.f b/num/test/src/test_medakzo.f deleted file mode 100644 index 6929b9535..000000000 --- a/num/test/src/test_medakzo.f +++ /dev/null @@ -1,417 +0,0 @@ - module test_medakzo - use num_def - use num_lib - use mtx_lib - use mtx_def - use test_int_support, only: i_nfcn, i_njac - use utils_lib, only: mesa_error - - implicit none - - integer :: mljac, mujac - - contains - - - subroutine medakzo_feval_for_blk_dble(neqn,t,y,yprime,f,ierr,rpar,ipar) - integer neqn,ierr,ipar(:) - double precision t,y(:),yprime(:),f(:),rpar(:) - - integer N,i,j - double precision zeta,dzeta,dzeta2,k,c,phi,alpha,beta,gama,dum - parameter(k=100d0,c=4d0) - - include 'formats' - - N = neqn/2 - dzeta = 1d0/dble(N) - dzeta2 = dzeta*dzeta - dum = (dzeta-1d0)*(dzeta-1d0)/c - alpha = 2d0*(dzeta-1d0)*dum/c - beta = dum*dum - - if (t.le.5d0) then - phi = 2d0 - else - phi = 0d0 - endif - - f(1) = (phi-2d0*y(1)+y(3))*beta/dzeta2+alpha*(y(3)-phi)/(2d0*dzeta)-k*y(1)*y(2) - f(2) = -k*y(1)*y(2) - - do 10 j=2,N-1 - i = 2*j-1 - zeta = j*dzeta - dum = (zeta-1d0)*(zeta-1d0)/c - alpha = 2d0*(zeta-1d0)*dum/c - beta = dum*dum - gama = (y(i-2)-2d0*y(i)+y(i+2))*beta/dzeta2+alpha*(y(i+2)-y(i-2))/(2d0*dzeta) - f(i) = gama-k*y(i)*y(i+1) - i = 2*j - f(i) = -k*y(i)*y(i-1) - 10 continue - - f(2*N-1) = -k*y(2*N-1)*y(2*N) - f(2*N) = -k*y(2*N-1)*y(2*N) - - return - end subroutine medakzo_feval_for_blk_dble - - - subroutine medakzo_jeval_for_blk_dble(ldim,neqn,t,y,yprime,dfdy,ierr,rpar,ipar) - integer ldim,neqn,ierr,ipar(:) - double precision t,y(:),yprime(:),dfdy(:,:),rpar(:) - - integer N,i,j - double precision zeta,dzeta,dzeta2,alpha,beta,k,c,dum,bz - parameter(k=100d0,c=4d0) - - do 20 j=1,neqn - do 10 i=1,5 - dfdy(i,j) = 0d0 - 10 continue - 20 continue - - N = neqn/2 - dzeta = 1d0/dble(N) - dzeta2 = dzeta*dzeta - dum = (dzeta-1d0)*(dzeta-1d0)/c - alpha = 2d0*(dzeta-1d0)*dum/c - beta = dum*dum - - dfdy(3,1) = -beta*2d0/dzeta2-k*y(2) - dfdy(1,3) = beta/dzeta2+alpha/(2d0*dzeta) - dfdy(2,2) = -k*y(1) - dfdy(4,1) = -k*y(2) - dfdy(3,2) = -k*y(1) - - do 30 j=2,N-1 - i = 2*j-1 - zeta = j*dzeta - dum = (zeta-1d0)*(zeta-1d0)/c - alpha = 2d0*(zeta-1d0)*dum/c - beta = dum*dum - bz = beta/dzeta2 - dfdy(5,i-2) = bz-alpha/(2d0*dzeta) - dfdy(3,i) = -2d0*bz-k*y(i+1) - dfdy(1,i+2) = bz+alpha/(2d0*dzeta) - dfdy(2,i+1) = -k*y(i) - i = 2*j - dfdy(4,i-1) = -k*y(i) - dfdy(3,i) = -k*y(i-1) - 30 continue - - dfdy(3,2*N-1) = -k*y(2*N) - dfdy(2,2*N) = -k*y(2*N-1) - dfdy(4,2*N-1) = -k*y(2*N) - dfdy(3,2*N) = -k*y(2*N-1) - - return - end subroutine medakzo_jeval_for_blk_dble - - - subroutine medakzo_fcn_blk_dble(n,caller_id,nvar,nz,x,h,y,f,lrpar,rpar,lipar,ipar,ierr) - use const_def, only: dp - integer, intent(in) :: n, caller_id, nvar, nz, lrpar, lipar - real(dp), intent(in) :: x,h - real(dp), intent(inout), pointer :: y(:) ! (n) - real(dp), intent(inout), pointer :: f(:) ! (n) ! dy/dx - integer, intent(inout), pointer :: ipar(:) ! (lipar) - real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) - integer, intent(out) :: ierr - real(dp), target :: yprime_ary(n) - real(dp), pointer :: yprime(:) - ierr = 0 - ipar(i_nfcn) = ipar(i_nfcn) + 1 - yprime => yprime_ary - call medakzo_feval_for_blk_dble(n,x,y,yprime,f,ierr,rpar,ipar) - end subroutine medakzo_fcn_blk_dble - - - subroutine medakzo_derivs(n, x, h, vars, dvars_dx, lrpar, rpar, lipar, ipar, ierr) - integer, intent(in) :: n, lrpar, lipar - real(dp), intent(in) :: x,h - real(dp), intent(inout) :: vars(:) ! (n) - real(dp), intent(inout) :: dvars_dx(:) ! (n) - integer, intent(inout), pointer :: ipar(:) ! (lipar) - real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) - real(dp) :: yprime(n) - integer, intent(out) :: ierr - include 'formats' - ierr = 0 - ipar(i_nfcn) = ipar(i_nfcn) + 1 - call medakzo_feval(n,x,vars,yprime,dvars_dx,ierr,rpar,ipar) - end subroutine medakzo_derivs - - - subroutine medakzo_jac_blk_dble(n,caller_id,nvar,nz,x,h,y,f,lblk1,dblk1,ublk1,lrpar,rpar,lipar,ipar,ierr) - use const_def,only: dp - integer,intent(in) :: n,caller_id,nvar,nz,lrpar,lipar - real(dp),intent(in) :: x,h - real(dp),intent(inout), pointer :: y(:) ! (n) - real(dp),intent(inout), pointer :: f(:) ! (n) ! dy/dx - real(dp),dimension(:),pointer,intent(inout) :: lblk1,dblk1,ublk1 ! =(nvar,nvar,nz) - integer,intent(inout),pointer :: ipar(:) ! (lipar) - real(dp),intent(inout),pointer :: rpar(:) ! (lrpar) - integer,intent(out) :: ierr - - real(dp),dimension(:,:,:),pointer :: lblk,dblk,ublk ! =(nvar,nvar,nz) - integer, parameter :: ld_dfdy = 5 ! for medakzo - real(dp), target :: dfdy1(ld_dfdy*n) - real(dp), pointer :: dfdy(:,:) - !real(dp), pointer :: banded(:,:,:) - integer :: i, k - ierr = 0 - dfdy(1:ld_dfdy,1:n) => dfdy1(1:ld_dfdy*n) - - ierr = 0 - ipar(i_njac) = ipar(i_njac) + 1 - call medakzo_jeval_for_blk_dble(ld_dfdy,n,x,y,f,dfdy,ierr,rpar,ipar) - if (ierr == 0) call medakzo_fcn_blk_dble(n,caller_id,nvar,nz,x,h,y,f,lrpar,rpar,lipar,ipar,ierr) - - !banded(1:ld_dfdy,1:nvar,1:nz) => dfdy1(1:ld_dfdy*n) - lblk(1:nvar,1:nvar,1:nz) => lblk1(1:nvar*nvar*nz) - dblk(1:nvar,1:nvar,1:nz) => dblk1(1:nvar*nvar*nz) - ublk(1:nvar,1:nvar,1:nz) => ublk1(1:nvar*nvar*nz) - - ! convert from banded to block tridiagonal - ! lblk(:,:,1) is not used; ublk(:,:,nz) is not used. - k = 1 - dblk(1,1,k) = dfdy(3,1) ! partial of f(1,k) wrt var(1,k) dfdy(3,i) - dblk(1,2,k) = dfdy(2,2) ! partial of f(1,k) wrt var(2,k) dfdy(2,i+1) - dblk(2,1,k) = dfdy(4,1) ! partial of f(2,k) wrt var(1,k) dfdy(4,i) - dblk(2,2,k) = dfdy(3,2) ! partial of f(2,k) wrt var(2,k) dfdy(3,i+1) - ublk(1,1,k) = dfdy(1,3) ! partial of f(1,k) wrt var(1,k+1) dfdy(1,i+2) - -!dfdy(1,i+2) partial of f(1,k) wrt var(1,k+1) -!dfdy(2,i+1) partial of f(1,k) wrt var(2,k) -!dfdy(3,i) partial of f(1,k) wrt var(1,k) -!dfdy(3,i+1) partial of f(2,k) wrt var(2,k) -!dfdy(4,i) partial of f(2,k) wrt var(1,k) -!dfdy(5,i-2) partial of f(1,k) wrt var(1,k-1) - - do k=2,nz-1 - i = 2*k-1 - ! set lblk - lblk(1,1,k) = dfdy(5,i-2) ! partial of f(1,k) wrt var(1,k-1) - lblk(1,2,k) = 0 ! partial of f(1,k) wrt var(2,k-1) - lblk(2,1,k) = 0 ! partial of f(2,k) wrt var(1,k-1) - lblk(2,2,k) = 0 ! partial of f(2,k) wrt var(2,k-1) - ! set dblk - dblk(1,1,k) = dfdy(3,i) ! partial of f(1,k) wrt var(1,k) dfdy(3,i) - dblk(1,2,k) = dfdy(2,i+1) ! partial of f(1,k) wrt var(2,k) dfdy(2,i+1) - dblk(2,1,k) = dfdy(4,i) ! partial of f(2,k) wrt var(1,k) dfdy(4,i) - dblk(2,2,k) = dfdy(3,i+1) ! partial of f(2,k) wrt var(2,k) dfdy(3,i+1) - ! set ublk - ublk(1,1,k) = dfdy(1,i+2) ! partial of f(1,k) wrt var(1,k+1) dfdy(1,i+2) - ublk(2,1,k) = 0 ! partial of f(2,k) wrt var(1,k+1) - ublk(1,2,k) = 0 ! partial of f(1,k) wrt var(2,k+1) - ublk(2,2,k) = 0 ! partial of f(2,k) wrt var(2,k+1) - end do - - k = nz - i = 2*k-1 - dblk(1,1,k) = dfdy(3,i) ! partial of f(1,k) wrt var(1,k) - dblk(1,2,k) = dfdy(2,i+1) ! partial of f(1,k) wrt var(2,k) - dblk(2,1,k) = dfdy(4,i) ! partial of f(2,k) wrt var(1,k) - dblk(2,2,k) = dfdy(3,i+1) ! partial of f(2,k) wrt var(2,k) - - end subroutine medakzo_jac_blk_dble - - - subroutine medakzo_jacob(n,x,h,y,f,dfdy,ld_dfdy,lrpar,rpar,lipar,ipar,ierr) - integer, intent(in) :: n, ld_dfdy, lrpar, lipar - real(dp), intent(in) :: x, h - real(dp), intent(inout) :: y(:) - real(dp), intent(inout) :: f(:), dfdy(:,:) - integer, intent(inout), pointer :: ipar(:) ! (lipar) - real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) - real(dp) :: yprime(n) - integer, intent(out) :: ierr - integer :: nz, i, j - include 'formats' - ierr = 0 - ipar(i_njac) = ipar(i_njac) + 1 - call medakzo_jeval(ld_dfdy,n,x,y,yprime,dfdy,ierr,rpar,ipar) - if (ierr == 0) call medakzo_derivs(n, x, h, y, f, lrpar,rpar,lipar,ipar, ierr) - !write(*,*) - !write(*,2)'medakzo_jacob', ipar(i_njac), x, y(1), dfdy(3,1:2) - end subroutine medakzo_jacob - - - subroutine medakzo_sjac(n,x,h,y,f,nzmax,ia,ja,values,lrpar,rpar,lipar,ipar,ierr) - ! sparse jacobian. format either compressed row or compressed column. - use mtx_lib,only:band_to_row_sparse_with_diag,band_to_col_sparse_with_diag,mtx_rcond_banded - use test_int_support,only:ipar_sparse_format - integer, intent(in) :: n, nzmax, lrpar, lipar - real(dp), intent(in) :: x, h - real(dp), intent(inout) :: y(:) ! (n) - real(dp), intent(inout) :: f(:) ! (n) ! dy/dx - integer, intent(inout) :: ia(:) ! (n+1) - integer, intent(inout) :: ja(:) ! (nzmax) - real(dp), intent(inout) :: values(:) ! (nzmax) - integer, intent(inout), pointer :: ipar(:) ! (lipar) - real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) - integer, intent(out) :: ierr ! nonzero means terminate integration - - real(dp) :: dfdy(n,n) - integer :: ld_dfdy, nz - ld_dfdy = n - ierr = 0 - call medakzo_jacob(n,x,h,y,f,dfdy,ld_dfdy,lrpar,rpar,lipar,ipar,ierr) - if (ierr /= 0) return - if (ipar(ipar_sparse_format) == 0) then - call band_to_row_sparse_with_diag(n,mljac,mujac,dfdy,ld_dfdy,nzmax,nz,ia,ja,values,ierr) - else - call band_to_col_sparse_with_diag(n,mljac,mujac,dfdy,ld_dfdy,nzmax,nz,ia,ja,values,ierr) - end if - end subroutine medakzo_sjac - - - subroutine do_test_medakzo(which_solver,which_decsol,numerical_jacobian,show_all,quiet) - use test_support,only:show_results,show_statistics,check_results - use test_int_support,only:do_test_stiff_int - integer, intent(in) :: which_solver,which_decsol - logical, intent(in) :: numerical_jacobian,show_all,quiet - - integer, parameter :: nvar = 2, nz = 200 - integer, parameter :: n = nvar*nz ! the number of variables in the "medakzo" system of ODEs - real(dp), target :: y_ary(n), yprime(n), yexact(n) - real(dp), pointer :: y(:) - integer, parameter :: lrpar = 1, lipar = 3, iout=1 - logical :: consis - integer, parameter :: ndisc = 1, n_soln=11 - real(dp) :: result(n_soln), soln(n_soln), h0, t(0:ndisc+1), atol(1), rtol(1) - integer :: i, j, k, matrix_type_spec, ierr, imas, mlmas, mumas, m1, m2, itol, nstep - real(dp), target :: rpar_ary(lrpar) - integer, target :: ipar_ary(lipar) - real(dp), pointer :: rpar(:) - integer, pointer :: ipar(:) - integer :: caller_id, nvar_blk_dble, nz_blk_dble - real(dp), dimension(:), pointer :: lblk, dblk, ublk ! =(nvar,nvar,nz) - real(dp), dimension(:), pointer :: uf_lblk, uf_dblk, uf_ublk ! =(nvar,nvar,nz) - logical, parameter :: dbg = .false. - - include 'formats' - - rpar => rpar_ary - ipar => ipar_ary - y => y_ary - - if (.not. quiet) write(*,*) 'medakzo' - - nullify(lblk, dblk, ublk, uf_lblk, uf_dblk, uf_ublk) - caller_id = 0 - nvar_blk_dble = 0 - nz_blk_dble = 0 - - t(0) = 0d0 - if (dbg) then - t(1) = 0.05d0 - t(2) = 0.20d0 - else - t(1) = 5d0 - t(2) = 20d0 - end if - - itol = 0 ! scalar tolerances - rtol = 1d-6 - atol = 1d-6 - h0 = 1d-9 ! initial step size - - matrix_type_spec = banded_matrix_type - mljac = 2 - mujac = 2 - - imas = 0 - mlmas = 0 - mumas = 0 - - m1 = 0 - m2 = 0 - - call medakzo_init(n,y,yprime,consis) - nstep=0 - - if (nvar_blk_dble == 0) then - call do_test_stiff_int(which_solver,which_decsol,numerical_jacobian, & - medakzo_derivs,medakzo_jacob,medakzo_sjac,medakzo_solout,iout, & - null_fcn_blk_dble,null_jac_blk_dble, & - caller_id,nvar_blk_dble,nz_blk_dble,lblk,dblk,ublk,uf_lblk,uf_dblk,uf_ublk, & - n,ndisc,mljac,mujac,matrix_type_spec,null_mas,imas,mlmas,mumas,m1,m2, & - t,rtol,atol,itol,h0,y,nstep,lrpar,rpar,lipar,ipar,quiet,ierr) - else - call do_test_stiff_int(which_solver,which_decsol,numerical_jacobian, & - null_fcn,null_jac,null_sjac,medakzo_solout,iout, & - medakzo_fcn_blk_dble,medakzo_jac_blk_dble, & - caller_id,nvar_blk_dble,nz_blk_dble,lblk,dblk,ublk,uf_lblk,uf_dblk,uf_ublk, & - n,ndisc,mljac,mujac,matrix_type_spec,null_mas,imas,mlmas,mumas,m1,m2, & - t,rtol,atol,itol,h0,y,nstep,lrpar,rpar,lipar,ipar,quiet,ierr) - end if - if (ierr /= 0) then - write(*,*) 'test_medakzo ierr', ierr - call mesa_error(__FILE__,__LINE__) - end if - - call medakzo_solut(n,0d0,yexact) - j = 1 - do k = 1, n/2, max(1,(n/2-1)/11) - if (j > n_soln) exit - result(j) = y(1+2*(k-1)) - soln(j) = yexact(1+2*(k-1)) - j = j+1 - end do - - if (.not. dbg) then - call check_results(n,y,yexact,rtol(1)*50,ierr) - if (ierr /= 0) then - write(*,*) 'check results ierr', ierr - !call mesa_error(__FILE__,__LINE__) ! do_test_medakzo - end if - end if - - if (quiet) return - - call show_results(n_soln,result,soln,show_all) - call show_statistics(ipar(i_nfcn),ipar(i_njac),nstep,show_all) - - end subroutine do_test_medakzo - - - subroutine medakzo_solout(nr,xold,x,n,y,rwork,iwork,interp_y,lrpar,rpar,lipar,ipar,irtrn) - ! nr is the step number. - ! x is the current x value; xold is the previous x value. - ! y is the current y value. - ! irtrn negative means terminate integration. - ! rwork and iwork hold info for - integer, intent(in) :: nr, n, lrpar, lipar - real(dp), intent(in) :: xold, x - real(dp), intent(inout) :: y(:) ! (n) - real(dp), intent(inout), target :: rwork(*) - integer, intent(inout), target :: iwork(*) - integer, intent(inout), pointer :: ipar(:) ! (lipar) - real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) - interface - ! this subroutine can be called from your solout routine. - ! it computes interpolated values for y components during the just completed step. - real(dp) function interp_y(i,s,rwork,iwork,ierr) - use const_def, only: dp - integer, intent(in) :: i ! result is interpolated approximation of y(i) at x=s. - real(dp), intent(in) :: s ! interpolation x value (between xold and x). - real(dp), intent(inout), target :: rwork(*) - integer, intent(inout), target :: iwork(*) - integer, intent(out) :: ierr - end function interp_y - end interface - integer, intent(out) :: irtrn - real(dp) :: xout, y1, y2 - integer :: ierr - include 'formats' - !if (mod(nr,10) == 0) write(*,2) 'step', nr, x, y(1:2) - !if (nr >= 100) stop - ierr = 0 - irtrn = 0 - end subroutine medakzo_solout - - - end module test_medakzo diff --git a/num/test/src/test_medakzo.f90 b/num/test/src/test_medakzo.f90 new file mode 100644 index 000000000..9176fae49 --- /dev/null +++ b/num/test/src/test_medakzo.f90 @@ -0,0 +1,405 @@ +module test_medakzo + use num_def + use num_lib + use mtx_lib + use mtx_def + use test_int_support, only: i_nfcn, i_njac + use utils_lib, only: mesa_error + + implicit none + + integer :: mljac, mujac + +contains + + subroutine medakzo_feval_for_blk_dble(neqn, t, y, yprime, f, ierr, rpar, ipar) + integer neqn, ierr, ipar(:) + double precision t, y(:), yprime(:), f(:), rpar(:) + + integer N, i, j + double precision zeta, dzeta, dzeta2, k, c, phi, alpha, beta, gama, dum + parameter(k=100d0, c=4d0) + + include 'formats' + + N = neqn/2 + dzeta = 1d0/dble(N) + dzeta2 = dzeta*dzeta + dum = (dzeta - 1d0)*(dzeta - 1d0)/c + alpha = 2d0*(dzeta - 1d0)*dum/c + beta = dum*dum + + if (t .le. 5d0) then + phi = 2d0 + else + phi = 0d0 + end if + + f(1) = (phi - 2d0*y(1) + y(3))*beta/dzeta2 + alpha*(y(3) - phi)/(2d0*dzeta) - k*y(1)*y(2) + f(2) = -k*y(1)*y(2) + + do j = 2, N - 1 + i = 2*j - 1 + zeta = j*dzeta + dum = (zeta - 1d0)*(zeta - 1d0)/c + alpha = 2d0*(zeta - 1d0)*dum/c + beta = dum*dum + gama = (y(i - 2) - 2d0*y(i) + y(i + 2))*beta/dzeta2 + alpha*(y(i + 2) - y(i - 2))/(2d0*dzeta) + f(i) = gama - k*y(i)*y(i + 1) + i = 2*j + f(i) = -k*y(i)*y(i - 1) + end do + + f(2*N - 1) = -k*y(2*N - 1)*y(2*N) + f(2*N) = -k*y(2*N - 1)*y(2*N) + + return + end subroutine medakzo_feval_for_blk_dble + + subroutine medakzo_jeval_for_blk_dble(ldim, neqn, t, y, yprime, dfdy, ierr, rpar, ipar) + integer ldim, neqn, ierr, ipar(:) + double precision t, y(:), yprime(:), dfdy(:, :), rpar(:) + + integer N, i, j + double precision zeta, dzeta, dzeta2, alpha, beta, k, c, dum, bz + parameter(k=100d0, c=4d0) + + do j = 1, neqn + do i = 1, 5 + dfdy(i, j) = 0d0 + end do + end do + + N = neqn/2 + dzeta = 1d0/dble(N) + dzeta2 = dzeta*dzeta + dum = (dzeta - 1d0)*(dzeta - 1d0)/c + alpha = 2d0*(dzeta - 1d0)*dum/c + beta = dum*dum + + dfdy(3, 1) = -beta*2d0/dzeta2 - k*y(2) + dfdy(1, 3) = beta/dzeta2 + alpha/(2d0*dzeta) + dfdy(2, 2) = -k*y(1) + dfdy(4, 1) = -k*y(2) + dfdy(3, 2) = -k*y(1) + + do j = 2, N - 1 + i = 2*j - 1 + zeta = j*dzeta + dum = (zeta - 1d0)*(zeta - 1d0)/c + alpha = 2d0*(zeta - 1d0)*dum/c + beta = dum*dum + bz = beta/dzeta2 + dfdy(5, i - 2) = bz - alpha/(2d0*dzeta) + dfdy(3, i) = -2d0*bz - k*y(i + 1) + dfdy(1, i + 2) = bz + alpha/(2d0*dzeta) + dfdy(2, i + 1) = -k*y(i) + i = 2*j + dfdy(4, i - 1) = -k*y(i) + dfdy(3, i) = -k*y(i - 1) + end do + + dfdy(3, 2*N - 1) = -k*y(2*N) + dfdy(2, 2*N) = -k*y(2*N - 1) + dfdy(4, 2*N - 1) = -k*y(2*N) + dfdy(3, 2*N) = -k*y(2*N - 1) + + return + end subroutine medakzo_jeval_for_blk_dble + + subroutine medakzo_fcn_blk_dble(n, caller_id, nvar, nz, x, h, y, f, lrpar, rpar, lipar, ipar, ierr) + use const_def, only: dp + integer, intent(in) :: n, caller_id, nvar, nz, lrpar, lipar + real(dp), intent(in) :: x, h + real(dp), intent(inout), pointer :: y(:) ! (n) + real(dp), intent(inout), pointer :: f(:) ! (n) ! dy/dx + integer, intent(inout), pointer :: ipar(:) ! (lipar) + real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) + integer, intent(out) :: ierr + real(dp), target :: yprime_ary(n) + real(dp), pointer :: yprime(:) + ierr = 0 + ipar(i_nfcn) = ipar(i_nfcn) + 1 + yprime => yprime_ary + call medakzo_feval_for_blk_dble(n, x, y, yprime, f, ierr, rpar, ipar) + end subroutine medakzo_fcn_blk_dble + + subroutine medakzo_derivs(n, x, h, vars, dvars_dx, lrpar, rpar, lipar, ipar, ierr) + integer, intent(in) :: n, lrpar, lipar + real(dp), intent(in) :: x, h + real(dp), intent(inout) :: vars(:) ! (n) + real(dp), intent(inout) :: dvars_dx(:) ! (n) + integer, intent(inout), pointer :: ipar(:) ! (lipar) + real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) + real(dp) :: yprime(n) + integer, intent(out) :: ierr + include 'formats' + ierr = 0 + ipar(i_nfcn) = ipar(i_nfcn) + 1 + call medakzo_feval(n, x, vars, yprime, dvars_dx, ierr, rpar, ipar) + end subroutine medakzo_derivs + + subroutine medakzo_jac_blk_dble(n, caller_id, nvar, nz, x, h, y, f, lblk1, dblk1, ublk1, lrpar, rpar, lipar, ipar, ierr) + use const_def, only: dp + integer, intent(in) :: n, caller_id, nvar, nz, lrpar, lipar + real(dp), intent(in) :: x, h + real(dp), intent(inout), pointer :: y(:) ! (n) + real(dp), intent(inout), pointer :: f(:) ! (n) ! dy/dx + real(dp), dimension(:), pointer, intent(inout) :: lblk1, dblk1, ublk1 ! =(nvar,nvar,nz) + integer, intent(inout), pointer :: ipar(:) ! (lipar) + real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) + integer, intent(out) :: ierr + + real(dp), dimension(:, :, :), pointer :: lblk, dblk, ublk ! =(nvar,nvar,nz) + integer, parameter :: ld_dfdy = 5 ! for medakzo + real(dp), target :: dfdy1(ld_dfdy*n) + real(dp), pointer :: dfdy(:, :) + !real(dp), pointer :: banded(:,:,:) + integer :: i, k + ierr = 0 + dfdy(1:ld_dfdy, 1:n) => dfdy1(1:ld_dfdy*n) + + ierr = 0 + ipar(i_njac) = ipar(i_njac) + 1 + call medakzo_jeval_for_blk_dble(ld_dfdy, n, x, y, f, dfdy, ierr, rpar, ipar) + if (ierr == 0) call medakzo_fcn_blk_dble(n, caller_id, nvar, nz, x, h, y, f, lrpar, rpar, lipar, ipar, ierr) + + !banded(1:ld_dfdy,1:nvar,1:nz) => dfdy1(1:ld_dfdy*n) + lblk(1:nvar, 1:nvar, 1:nz) => lblk1(1:nvar*nvar*nz) + dblk(1:nvar, 1:nvar, 1:nz) => dblk1(1:nvar*nvar*nz) + ublk(1:nvar, 1:nvar, 1:nz) => ublk1(1:nvar*nvar*nz) + + ! convert from banded to block tridiagonal + ! lblk(:,:,1) is not used; ublk(:,:,nz) is not used. + k = 1 + dblk(1, 1, k) = dfdy(3, 1) ! partial of f(1,k) wrt var(1,k) dfdy(3,i) + dblk(1, 2, k) = dfdy(2, 2) ! partial of f(1,k) wrt var(2,k) dfdy(2,i+1) + dblk(2, 1, k) = dfdy(4, 1) ! partial of f(2,k) wrt var(1,k) dfdy(4,i) + dblk(2, 2, k) = dfdy(3, 2) ! partial of f(2,k) wrt var(2,k) dfdy(3,i+1) + ublk(1, 1, k) = dfdy(1, 3) ! partial of f(1,k) wrt var(1,k+1) dfdy(1,i+2) + +!dfdy(1,i+2) partial of f(1,k) wrt var(1,k+1) +!dfdy(2,i+1) partial of f(1,k) wrt var(2,k) +!dfdy(3,i) partial of f(1,k) wrt var(1,k) +!dfdy(3,i+1) partial of f(2,k) wrt var(2,k) +!dfdy(4,i) partial of f(2,k) wrt var(1,k) +!dfdy(5,i-2) partial of f(1,k) wrt var(1,k-1) + + do k = 2, nz - 1 + i = 2*k - 1 + ! set lblk + lblk(1, 1, k) = dfdy(5, i - 2) ! partial of f(1,k) wrt var(1,k-1) + lblk(1, 2, k) = 0 ! partial of f(1,k) wrt var(2,k-1) + lblk(2, 1, k) = 0 ! partial of f(2,k) wrt var(1,k-1) + lblk(2, 2, k) = 0 ! partial of f(2,k) wrt var(2,k-1) + ! set dblk + dblk(1, 1, k) = dfdy(3, i) ! partial of f(1,k) wrt var(1,k) dfdy(3,i) + dblk(1, 2, k) = dfdy(2, i + 1) ! partial of f(1,k) wrt var(2,k) dfdy(2,i+1) + dblk(2, 1, k) = dfdy(4, i) ! partial of f(2,k) wrt var(1,k) dfdy(4,i) + dblk(2, 2, k) = dfdy(3, i + 1) ! partial of f(2,k) wrt var(2,k) dfdy(3,i+1) + ! set ublk + ublk(1, 1, k) = dfdy(1, i + 2) ! partial of f(1,k) wrt var(1,k+1) dfdy(1,i+2) + ublk(2, 1, k) = 0 ! partial of f(2,k) wrt var(1,k+1) + ublk(1, 2, k) = 0 ! partial of f(1,k) wrt var(2,k+1) + ublk(2, 2, k) = 0 ! partial of f(2,k) wrt var(2,k+1) + end do + + k = nz + i = 2*k - 1 + dblk(1, 1, k) = dfdy(3, i) ! partial of f(1,k) wrt var(1,k) + dblk(1, 2, k) = dfdy(2, i + 1) ! partial of f(1,k) wrt var(2,k) + dblk(2, 1, k) = dfdy(4, i) ! partial of f(2,k) wrt var(1,k) + dblk(2, 2, k) = dfdy(3, i + 1) ! partial of f(2,k) wrt var(2,k) + + end subroutine medakzo_jac_blk_dble + + subroutine medakzo_jacob(n, x, h, y, f, dfdy, ld_dfdy, lrpar, rpar, lipar, ipar, ierr) + integer, intent(in) :: n, ld_dfdy, lrpar, lipar + real(dp), intent(in) :: x, h + real(dp), intent(inout) :: y(:) + real(dp), intent(inout) :: f(:), dfdy(:, :) + integer, intent(inout), pointer :: ipar(:) ! (lipar) + real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) + real(dp) :: yprime(n) + integer, intent(out) :: ierr + include 'formats' + ierr = 0 + ipar(i_njac) = ipar(i_njac) + 1 + call medakzo_jeval(ld_dfdy, n, x, y, yprime, dfdy, ierr, rpar, ipar) + if (ierr == 0) call medakzo_derivs(n, x, h, y, f, lrpar, rpar, lipar, ipar, ierr) + !write(*,*) + !write(*,2)'medakzo_jacob', ipar(i_njac), x, y(1), dfdy(3,1:2) + end subroutine medakzo_jacob + + subroutine medakzo_sjac(n, x, h, y, f, nzmax, ia, ja, values, lrpar, rpar, lipar, ipar, ierr) + ! sparse jacobian. format either compressed row or compressed column. + use mtx_lib, only: band_to_row_sparse_with_diag, band_to_col_sparse_with_diag, mtx_rcond_banded + use test_int_support, only: ipar_sparse_format + integer, intent(in) :: n, nzmax, lrpar, lipar + real(dp), intent(in) :: x, h + real(dp), intent(inout) :: y(:) ! (n) + real(dp), intent(inout) :: f(:) ! (n) ! dy/dx + integer, intent(inout) :: ia(:) ! (n+1) + integer, intent(inout) :: ja(:) ! (nzmax) + real(dp), intent(inout) :: values(:) ! (nzmax) + integer, intent(inout), pointer :: ipar(:) ! (lipar) + real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) + integer, intent(out) :: ierr ! nonzero means terminate integration + + real(dp) :: dfdy(n, n) + integer :: ld_dfdy, nz + ld_dfdy = n + ierr = 0 + call medakzo_jacob(n, x, h, y, f, dfdy, ld_dfdy, lrpar, rpar, lipar, ipar, ierr) + if (ierr /= 0) return + if (ipar(ipar_sparse_format) == 0) then + call band_to_row_sparse_with_diag(n, mljac, mujac, dfdy, ld_dfdy, nzmax, nz, ia, ja, values, ierr) + else + call band_to_col_sparse_with_diag(n, mljac, mujac, dfdy, ld_dfdy, nzmax, nz, ia, ja, values, ierr) + end if + end subroutine medakzo_sjac + + subroutine do_test_medakzo(which_solver, which_decsol, numerical_jacobian, show_all, quiet) + use test_support, only: show_results, show_statistics, check_results + use test_int_support, only: do_test_stiff_int + integer, intent(in) :: which_solver, which_decsol + logical, intent(in) :: numerical_jacobian, show_all, quiet + + integer, parameter :: nvar = 2, nz = 200 + integer, parameter :: n = nvar*nz ! the number of variables in the "medakzo" system of ODEs + real(dp), target :: y_ary(n), yprime(n), yexact(n) + real(dp), pointer :: y(:) + integer, parameter :: lrpar = 1, lipar = 3, iout = 1 + logical :: consis + integer, parameter :: ndisc = 1, n_soln = 11 + real(dp) :: result(n_soln), soln(n_soln), h0, t(0:ndisc + 1), atol(1), rtol(1) + integer :: j, k, matrix_type_spec, ierr, imas, mlmas, mumas, m1, m2, itol, nstep + real(dp), target :: rpar_ary(lrpar) + integer, target :: ipar_ary(lipar) + real(dp), pointer :: rpar(:) + integer, pointer :: ipar(:) + integer :: caller_id, nvar_blk_dble, nz_blk_dble + real(dp), dimension(:), pointer :: lblk, dblk, ublk ! =(nvar,nvar,nz) + real(dp), dimension(:), pointer :: uf_lblk, uf_dblk, uf_ublk ! =(nvar,nvar,nz) + logical, parameter :: dbg = .false. + + include 'formats' + + rpar => rpar_ary + ipar => ipar_ary + y => y_ary + + if (.not. quiet) write (*, *) 'medakzo' + + nullify (lblk, dblk, ublk, uf_lblk, uf_dblk, uf_ublk) + caller_id = 0 + nvar_blk_dble = 0 + nz_blk_dble = 0 + + t(0) = 0d0 + if (dbg) then + t(1) = 0.05d0 + t(2) = 0.20d0 + else + t(1) = 5d0 + t(2) = 20d0 + end if + + itol = 0 ! scalar tolerances + rtol = 1d-6 + atol = 1d-6 + h0 = 1d-9 ! initial step size + + matrix_type_spec = banded_matrix_type + mljac = 2 + mujac = 2 + + imas = 0 + mlmas = 0 + mumas = 0 + + m1 = 0 + m2 = 0 + + call medakzo_init(n, y, yprime, consis) + nstep = 0 + + if (nvar_blk_dble == 0) then + call do_test_stiff_int(which_solver, which_decsol, numerical_jacobian, & + medakzo_derivs, medakzo_jacob, medakzo_sjac, medakzo_solout, iout, & + null_fcn_blk_dble, null_jac_blk_dble, & + caller_id, nvar_blk_dble, nz_blk_dble, lblk, dblk, ublk, uf_lblk, uf_dblk, uf_ublk, & + n, ndisc, mljac, mujac, matrix_type_spec, null_mas, imas, mlmas, mumas, m1, m2, & + t, rtol, atol, itol, h0, y, nstep, lrpar, rpar, lipar, ipar, quiet, ierr) + else + call do_test_stiff_int(which_solver, which_decsol, numerical_jacobian, & + null_fcn, null_jac, null_sjac, medakzo_solout, iout, & + medakzo_fcn_blk_dble, medakzo_jac_blk_dble, & + caller_id, nvar_blk_dble, nz_blk_dble, lblk, dblk, ublk, uf_lblk, uf_dblk, uf_ublk, & + n, ndisc, mljac, mujac, matrix_type_spec, null_mas, imas, mlmas, mumas, m1, m2, & + t, rtol, atol, itol, h0, y, nstep, lrpar, rpar, lipar, ipar, quiet, ierr) + end if + if (ierr /= 0) then + write (*, *) 'test_medakzo ierr', ierr + call mesa_error(__FILE__, __LINE__) + end if + + call medakzo_solut(n, 0d0, yexact) + j = 1 + do k = 1, n/2, max(1, (n/2 - 1)/11) + if (j > n_soln) exit + result(j) = y(1 + 2*(k - 1)) + soln(j) = yexact(1 + 2*(k - 1)) + j = j + 1 + end do + + if (.not. dbg) then + call check_results(n, y, yexact, rtol(1)*50, ierr) + if (ierr /= 0) then + write (*, *) 'check results ierr', ierr + !call mesa_error(__FILE__,__LINE__) ! do_test_medakzo + end if + end if + + if (quiet) return + + call show_results(n_soln, result, soln, show_all) + call show_statistics(ipar(i_nfcn), ipar(i_njac), nstep, show_all) + + end subroutine do_test_medakzo + + subroutine medakzo_solout(nr, xold, x, n, y, rwork, iwork, interp_y, lrpar, rpar, lipar, ipar, irtrn) + ! nr is the step number. + ! x is the current x value; xold is the previous x value. + ! y is the current y value. + ! irtrn negative means terminate integration. + ! rwork and iwork hold info for + integer, intent(in) :: nr, n, lrpar, lipar + real(dp), intent(in) :: xold, x + real(dp), intent(inout) :: y(:) ! (n) + real(dp), intent(inout), target :: rwork(*) + integer, intent(inout), target :: iwork(*) + integer, intent(inout), pointer :: ipar(:) ! (lipar) + real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) + interface + ! this subroutine can be called from your solout routine. + ! it computes interpolated values for y components during the just completed step. + real(dp) function interp_y(i, s, rwork, iwork, ierr) + use const_def, only: dp + integer, intent(in) :: i ! result is interpolated approximation of y(i) at x=s. + real(dp), intent(in) :: s ! interpolation x value (between xold and x). + real(dp), intent(inout), target :: rwork(*) + integer, intent(inout), target :: iwork(*) + integer, intent(out) :: ierr + end function interp_y + end interface + integer, intent(out) :: irtrn + integer :: ierr + include 'formats' + !if (mod(nr,10) == 0) write(*,2) 'step', nr, x, y(1:2) + !if (nr >= 100) stop + ierr = 0 + irtrn = 0 + end subroutine medakzo_solout + +end module test_medakzo diff --git a/num/test/src/test_newton.f b/num/test/src/test_newton.f90 similarity index 99% rename from num/test/src/test_newton.f rename to num/test/src/test_newton.f90 index 5eb655626..09cd4a954 100644 --- a/num/test/src/test_newton.f +++ b/num/test/src/test_newton.f90 @@ -107,7 +107,6 @@ end subroutine do_test_newton subroutine do_1step_diffuse( & do_numerical_jacobian, which_decsol, & dt, kappa, nz, nvar, concentration, fluxes, delx, ierr) - integer i logical, intent(in) :: do_numerical_jacobian integer, intent(in) :: which_decsol integer, intent(in) :: nz, nvar @@ -455,7 +454,6 @@ subroutine exit_setmatrix( & real(dp), intent(inout) :: rpar(:) ! (lrpar) integer, intent(inout) :: ipar(:) ! (lipar) integer, intent(out) :: ierr - integer :: i, j if (dbg) write(*, '(a, /)') 'exit_setmatrix' ierr = 0 end subroutine exit_setmatrix @@ -481,7 +479,7 @@ subroutine diffusion_set_xscale(nvar, nz, xold, xscale, lrpar, rpar, lipar, ipar real(dp), intent(inout) :: rpar(:) ! (lrpar) integer, intent(inout) :: ipar(:) ! (lipar) integer, intent(out) :: ierr - real(dp), parameter :: xscale_min = 1d0 + ! real(dp), parameter :: xscale_min = 1d0 xscale = 1.d0 ! max(xscale_min, abs(xold)) ierr = 0 end subroutine diffusion_set_xscale diff --git a/num/test/src/test_newuoa.f b/num/test/src/test_newuoa.f deleted file mode 100644 index ea3ac2c43..000000000 --- a/num/test/src/test_newuoa.f +++ /dev/null @@ -1,68 +0,0 @@ - module test_newuoa - - use num_def - use num_lib - - integer :: nfcn - - contains - - subroutine do_test_newuoa - -! -! The Chebyquad test problem (Fletcher, 1965) for N = 2,4,6 and 8, -! with NPT = 2N+1. -! - IMPLICIT REAL*8 (A-H,O-Z) - DIMENSION X(10),W(10000) - real*8, parameter :: max_valid_value = 1d99 - include 'formats' - IPRINT=0 - MAXFUN=5000 - RHOEND=1.0D-6 - DO 30 N=2,6,2 - nfcn = 0 - NPT=2*N+1 - DO 10 I=1,N - 10 X(I)=DFLOAT(I)/DFLOAT(N+1) - RHOBEG=0.2D0*X(1) - PRINT 20, N,NPT - 20 FORMAT (4X,'test NEWUOA with N =',I2,' and NPT =',I3) - CALL NEWUOA (N,NPT,X,RHOBEG,RHOEND,IPRINT,MAXFUN,W,CALFUN,max_valid_value) - call calfun(n,x,f) - !write(*,2) 'f', nfcn, f - if (abs(f) > 1d-10) write(*,*) 'failed in test of newuoa: min f', f - 30 CONTINUE - END subroutine do_test_newuoa - - - - subroutine calfun(n,x,f) - use const_def, only: dp - integer, intent(in) :: n - real(dp), intent(in) :: x(*) - real(dp), intent(out) :: f - - real(dp) :: Y(10,10) - nfcn = nfcn + 1 - DO 10 J=1,N - Y(1,J)=1.0D0 - 10 Y(2,J)=2.0D0*X(J)-1.0D0 - DO 20 I=2,N - DO 20 J=1,N - 20 Y(I+1,J)=2.0D0*Y(2,J)*Y(I,J)-Y(I-1,J) - F=0.0D0 - NP=N+1 - IW=1 - DO 40 I=1,NP - SUM=0.0D0 - DO 30 J=1,N - 30 SUM=SUM+Y(I,J) - SUM=SUM/DFLOAT(N) - IF (IW .GT. 0) SUM=SUM+1.0D0/DFLOAT(I*I-2*I) - IW=-IW - 40 F=F+SUM*SUM - RETURN - END SUBROUTINE CALFUN - - end module test_newuoa diff --git a/num/test/src/test_newuoa.f90 b/num/test/src/test_newuoa.f90 new file mode 100644 index 000000000..83644227d --- /dev/null +++ b/num/test/src/test_newuoa.f90 @@ -0,0 +1,76 @@ +module test_newuoa + + use num_def + use num_lib + use const_def, only: dp + + implicit none + + integer :: nfcn + +contains + + subroutine do_test_newuoa + +! The Chebyquad test problem (Fletcher, 1965) for N = 2,4,6 and 8, +! with NPT = 2N+1. +! + real(dp), dimension(10) :: X + real(dp), dimension(10000) :: W + real(dp), parameter :: max_valid_value = 1d99 + real(dp) :: f, RHOBEG, RHOend + integer :: IPRINT, I, N, NPT, MAXFUN + include 'formats' + IPRINT = 0 + MAXFUN = 5000 + RHOend = 1.0D-6 + do N = 2, 6, 2 + nfcn = 0 + NPT = 2*N + 1 + do I = 1, N + X(I) = DBLE(I)/DBLE(N + 1) + end do + RHOBEG = 0.2D0*X(1) + write (*, '(4X,A,I2,A,I3)') 'test NEWUOA with N =', N, ' and NPT =', NPT + call NEWUOA(N, NPT, X, RHOBEG, RHOend, IPRINT, MAXFUN, W, CALFUN, max_valid_value) + call calfun(n, x, f) + !write(*,2) 'f', nfcn, f + if (abs(f) > 1d-10) write (*, *) 'failed in test of newuoa: min f', f + end do + end subroutine do_test_newuoa + + subroutine calfun(n, x, f) + use const_def, only: dp + integer, intent(in) :: n + real(dp), intent(in) :: x(*) + real(dp), intent(out) :: f + + integer :: I, J, IW, NP + real(dp) :: Y(10, 10), sum + nfcn = nfcn + 1 + do J = 1, N + Y(1, J) = 1.0D0 + Y(2, J) = 2.0D0*X(J) - 1.0D0 + end do + do I = 2, N + do J = 1, N + Y(I + 1, J) = 2.0D0*Y(2, J)*Y(I, J) - Y(I - 1, J) + end do + end do + F = 0.0D0 + NP = N + 1 + IW = 1 + do I = 1, NP + SUM = 0.0D0 + do J = 1, N + SUM = SUM + Y(I, J) + end do + SUM = SUM/DBLE(N) + IF (IW > 0) SUM = SUM + 1.0D0/DBLE(I*I - 2*I) + IW = -IW + F = F + SUM*SUM + end do + return + end subroutine CALFUN + +end module test_newuoa diff --git a/num/test/src/test_num.f b/num/test/src/test_num.f90 similarity index 98% rename from num/test/src/test_num.f rename to num/test/src/test_num.f90 index abb6f39d9..8ef99706e 100644 --- a/num/test/src/test_num.f +++ b/num/test/src/test_num.f90 @@ -33,7 +33,7 @@ program test_num logical, parameter :: show_all = .false. ! false for releases - integer :: i, j, k, solver, decsol, omp_get_thread_num, ierr + integer :: i, decsol, ierr logical :: do_numerical_jacobian, m_band, j_band, quiet character (len=32) :: my_mesa_dir diff --git a/num/test/src/test_pollu.f b/num/test/src/test_pollu.f90 similarity index 100% rename from num/test/src/test_pollu.f rename to num/test/src/test_pollu.f90 diff --git a/num/test/src/test_simplex.f b/num/test/src/test_simplex.f90 similarity index 99% rename from num/test/src/test_simplex.f rename to num/test/src/test_simplex.f90 index ac5a763fd..c6acce704 100644 --- a/num/test/src/test_simplex.f +++ b/num/test/src/test_simplex.f90 @@ -47,7 +47,7 @@ subroutine test1_simplex( & real(dp), pointer :: rpar(:) ! (lrpar) integer :: num_iters, num_fcn_calls, & num_fcn_calls_for_ars, num_accepted_for_ars, ierr - integer :: seed, i, j, k + integer :: seed real(dp) :: alpha, beta, gamma, delta include 'formats' diff --git a/num/test/src/test_support.f b/num/test/src/test_support.f90 similarity index 96% rename from num/test/src/test_support.f rename to num/test/src/test_support.f90 index 169160e5a..bbfc23f6c 100644 --- a/num/test/src/test_support.f +++ b/num/test/src/test_support.f90 @@ -96,7 +96,7 @@ end function f subroutine test_root_with_brackets integer, parameter :: lrpar=0, lipar=0 - real(dp) :: x, dfdx, y + real(dp) :: x, dfdx real(dp) :: x1, x3 ! bounds for x ! values of f at x1 and x3 must have opposite sign ! return value for safe_root will be bracketed by x1 and x3 @@ -105,7 +105,7 @@ subroutine test_root_with_brackets real(dp) :: epsx, epsy ! stop seaching when x is determined to within epsx ! or when abs(f(x)) is less than epsy - integer :: i, ierr + integer :: ierr real(dp) :: expected_root = 0.74800611d0 real(dp), target :: rpar_ary(lrpar) integer, target :: ipar_ary(lipar) @@ -259,7 +259,6 @@ end function interp_y ! --- prints solution at equidistant output-points ! --- by using "contd8", the continuous collocation solution real(dp) :: xout, y1, y2 - integer, parameter :: iprint = 6 integer :: ierr xout = rpar(2) irtrn = 1 @@ -296,13 +295,11 @@ subroutine test_dopri(do_853,show_all) real(dp) :: atol(1) ! absolute error tolerance(s) real(dp) :: x ! starting value for the interval of integration real(dp) :: xend ! ending value for the interval of integration - real(dp) :: expect(nv), yprime(nv) - character (len=64) :: str - character (len=256) :: dir, fname + real(dp) :: expect(nv) integer, parameter :: lrpar = 2, lipar = 1, nrdens = nv integer, parameter :: liwork = nrdens+100, lwork = 11*nv+8*nrdens+100 - real(dp) :: max_abs_yp2, h, max_step_size - integer :: io_unit, i, lout, iout, idid, itol, j + real(dp) :: h, max_step_size + integer :: lout, iout, idid, itol, j integer :: check_liwork, check_lwork, max_steps, ierr real(dp), target :: y_ary(nv) real(dp), pointer :: y(:) @@ -422,7 +419,7 @@ subroutine test_binary_search write(*,*) 'binary_search, increasing values' loc = -1 - val = [0d0, dble(n/3)**2 +2, vec(n)+1d0] + val = [0d0, FLOOR(n/3d0)**2+2d0, vec(n)+1d0] do k=1,3 loc(k) = binary_search(n, vec, 0, val(k)) if(loc(k) == 0 .and. val(k) < vec(1))then @@ -472,7 +469,7 @@ subroutine test_qsort use const_def integer, parameter :: n = 100 integer :: ord(n), i - real*8 :: a(n) + real(dp) :: a(n) include 'formats' write(*,*) write(*,*) 'qsort into increasing order' @@ -487,14 +484,14 @@ subroutine test_qsort end subroutine test_qsort - real*8 function g(x) result(y) - real*8, intent(in) :: x + real(dp) function g(x) result(y) + real(dp), intent(in) :: x y = (x-3)*(x-8) end function g subroutine test_find0_quadratic - real*8 :: xx1, yy1, xx2, yy2, xx3, yy3, x, y + real(dp) :: xx1, yy1, xx2, yy2, xx3, yy3, x, y integer :: ierr include 'formats' write(*,*) 'test_find0_quadratic' @@ -530,7 +527,7 @@ end subroutine test_find0_quadratic subroutine test_find_max_quadratic - real*8 :: x1, y1, x2, y2, x3, y3, dx1, dx2, xmax, ymax + real(dp) :: x1, y1, x2, y2, x3, y3, dx1, dx2, xmax, ymax integer :: ierr include 'formats' write(*,*) 'test_find_max_quadratic' diff --git a/num/test/src/test_vdpol.f b/num/test/src/test_vdpol.f90 similarity index 98% rename from num/test/src/test_vdpol.f rename to num/test/src/test_vdpol.f90 index a197fc3c7..7b576fbe7 100644 --- a/num/test/src/test_vdpol.f +++ b/num/test/src/test_vdpol.f90 @@ -75,7 +75,6 @@ subroutine vdpol_jac_blk_dble(n,caller_id,nvar,nz,x,h,y,f,lblk1,dblk1,ublk1,lrpa integer, parameter :: ld_dfdy = 2 ! for vdpol real(dp), target :: dfdy1(ld_dfdy*n) real(dp), pointer :: dfdy(:,:) - integer :: i, k include 'formats' ierr = 0 dfdy(1:ld_dfdy,1:n) => dfdy1(1:ld_dfdy*n) @@ -101,7 +100,6 @@ subroutine vdpol_jacob(n,x,h,y,f,dfdy,ld_dfdy,lrpar,rpar,lipar,ipar,ierr) real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) real(dp) :: yprime(n) integer, intent(out) :: ierr - integer :: nz, i, j ierr = 0 ipar(i_njac) = ipar(i_njac) + 1 call vdpol_jeval(ld_dfdy,n,x,y,yprime,dfdy,ierr,rpar,ipar) @@ -224,7 +222,7 @@ subroutine do_test_vdpol(which_solver,which_decsol,numerical_jacobian,show_all,q logical :: consis integer, parameter :: ndisc = 0 real(dp) :: h0, t(0:ndisc+1), atol(1), rtol(1) - integer :: i, mujac, mljac, matrix_type_spec, ierr, imas, mlmas, mumas, m1, m2, itol, iout, nstep + integer :: mujac, mljac, matrix_type_spec, ierr, imas, mlmas, mumas, m1, m2, itol, iout, nstep real(dp), target :: rpar_ary(lrpar) integer, target :: ipar_ary(lipar) real(dp), pointer :: rpar(:) diff --git a/rates/private/eval_ecapture.f90 b/rates/private/eval_ecapture.f90 index eab01f27c..a296b7d3f 100644 --- a/rates/private/eval_ecapture.f90 +++ b/rates/private/eval_ecapture.f90 @@ -61,7 +61,7 @@ subroutine do_eval_ecapture_reaction_info( & logical, parameter :: dbg = .false. - integer :: i, ir, in, out, j, lhs, rhs + integer :: i, ir, j, lhs, rhs integer :: offset, ntrans, lo, hi integer :: offset_lhs, nstates_lhs, lo_lhs, hi_lhs integer :: offset_rhs, nstates_rhs, lo_rhs, hi_rhs diff --git a/rates/private/eval_weak.f90 b/rates/private/eval_weak.f90 index 8667833b5..e3574b8ed 100644 --- a/rates/private/eval_weak.f90 +++ b/rates/private/eval_weak.f90 @@ -153,7 +153,7 @@ subroutine do_eval_weaklib_reaction_info( & real(dp) :: T, T9, YeRho, lYeRho integer :: i, ir, in, out, rxn_idx logical :: neg - real(dp) :: decay, capture, Qx, Qn, conv, mue, d_mue_dlnRho, d_mue_dlnT + real(dp) :: Qx, conv, mue, d_mue_dlnRho, d_mue_dlnT character(len=iso_name_length) :: weak_lhs, weak_rhs integer, parameter :: nwork = pm_work_size diff --git a/rates/private/load_weak.f90 b/rates/private/load_weak.f90 index ad561324e..0b3978172 100644 --- a/rates/private/load_weak.f90 +++ b/rates/private/load_weak.f90 @@ -590,7 +590,7 @@ subroutine load_user_weak_tables(ierr) subroutine read_hd5_file - use hdf5io_lib + use forum_m, only: hdf5io_t, OPEN_FILE_RO character (len=256) :: filename type(hdf5io_t) :: hi @@ -642,8 +642,7 @@ end subroutine read_hd5_file subroutine extend - integer :: i, n - type(weaklib_rate_table) :: table + integer :: n type(table_c), dimension(:), allocatable :: tmp_weak_reactions_tables diff --git a/rates/private/ratelib.f90 b/rates/private/ratelib.f90 index bfce96e76..bfb7549c6 100644 --- a/rates/private/ratelib.f90 +++ b/rates/private/ratelib.f90 @@ -92,12 +92,12 @@ subroutine rate_pp_fxt(tf, temp, fr, rr) if (tf% t9 .le. 3d0) then aa = 4.01d-15 * tf% t9i23 * exp(-3.380d0*tf% t9i13) bb = 1.0d0 + 0.123d0*tf% t913 + 1.09d0*tf% t923 + 0.938d0*tf% t9 - term = aa * bb + term = aa * bb else - term = 1.1581136d-15 + term = 1.1581136d-15 end if - fr = term - rr = 0.0d0 + fr = term + rr = 0.0d0 end subroutine rate_pp_fxt @@ -159,12 +159,12 @@ subroutine rate_pep_fxt(tf, temp, fr, rr) if ((tf% T9) <= 3d0) then aa = 1.36d-20 * (tf% T9i76) * exp(-3.380d0*(tf% T9i13)) bb = (1.0d0 - 0.729d0*(tf% T913) + 9.82d0*(tf% T923)) - term = aa * bb + term = aa * bb else - term = 7.3824387d-21 + term = 7.3824387d-21 end if - fr = term - rr = 0.0d0 + fr = term + rr = 0.0d0 end subroutine rate_pep_fxt @@ -197,11 +197,11 @@ subroutine rate_dpg_fxt(tf, temp, fr, rr) fr = 0; rr = 0; return end if - aa = 2.24d+03 * tf% t9i23 * exp(-3.720d0*tf% t9i13) - bb = 1.0d0 + 0.112d0*tf% t913 + 3.38d0*tf% t923 + 2.65d0*tf% t9 - term = aa * bb + aa = 2.24d+03 * tf% t9i23 * exp(-3.720d0*tf% t9i13) + bb = 1.0d0 + 0.112d0*tf% t913 + 3.38d0*tf% t923 + 2.65d0*tf% t9 + term = aa * bb fr = term - rev = 1.63d+10 * tf% t932 * exp(-63.750d0*tf% t9i) + rev = 1.63d+10 * tf% t932 * exp(-63.750d0*tf% t9i) rr = rev * term !if (temp > 3.1d6 .and. temp < 3.2d6) write(*,1) 'rates dpg', fr, temp end subroutine rate_dpg_fxt @@ -211,7 +211,7 @@ subroutine rate_dpg_nacre(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, rev, drevdt, aa, daa, bb, dbb + real(dp) term, rev if (tf% t9 < lowT9pp_cutoff) then fr = 0; rr = 0; return @@ -290,7 +290,7 @@ subroutine rate_png_fxt(tf, temp, fr, rr) ! dtermdt = 4.4d4 * daa fr = term - rev = 4.71d+09 * (tf% T932) * exp(-25.82d0*(tf% T9i)) + rev = 4.71d+09 * (tf% T932) * exp(-25.82d0*(tf% T9i)) rr = rev * term end subroutine rate_png_fxt @@ -339,12 +339,12 @@ subroutine rate_hep_fxt(tf, temp, fr, rr) if ((tf% T9) <= 3d0) then aa = 8.78d-13 * (tf% T9i23) * exp(-6.141d0*(tf% T9i13)) - term = aa + term = aa else - term = 5.9733434d-15 + term = 5.9733434d-15 end if - fr = term - rr = 0.0d0 + fr = term + rr = 0.0d0 end subroutine rate_hep_fxt @@ -395,7 +395,6 @@ subroutine rate_he3he3_jina(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, rev ! he3 he3 h1 h1 he4 call jina_reaclib_2_3(ihe3, ihe3, ih1, ih1, ihe4, tf, fr, rr, 'rate_he3he3_jina') end subroutine rate_he3he3_jina @@ -542,14 +541,14 @@ subroutine rate_tripalf_nacre(tf, temp, fr, rr) bb = 0 end if else - bb = 3.44d-16*(1 + 0.0158d0*pow(tf% T9,-0.65d0)) + bb = 3.44d-16*(1 + 0.0158d0*pow(tf% T9,-0.65d0)) end if - term = r2abe * rbeac * bb + term = r2abe * rbeac * bb call rnacre_rev(tf, & ! a0 T932 exp(-a1/T9) 2.003d20, 84.415d0, & ! a0, a1 rev) - fr = term - rr = rev * term + fr = term + rr = rev * term end subroutine rate_tripalf_nacre @@ -558,9 +557,9 @@ subroutine rate_tripalf_fxt(tf, temp, fr, rr) real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, rev, drevdt, r2abe, dr2abedt, rbeac, & - drbeacdt, aa, daa, bb, dbb, cc, dcc, dd, ddd, ee, dee, & - ff, dff, xx, dxx, yy, dyy, zz, dzz, uu, vv, f1, df1, rc28, & + real(dp) term, rev, r2abe, rbeac, & + aa, bb, cc, dd, ee, ff, & + xx, yy, zz, uu, vv, f1, rc28, & q1, q2 parameter (rc28 = 0.1d0, & q1 = 1.0d0/0.009604d0, & @@ -597,7 +596,7 @@ subroutine rate_tripalf_fxt(tf, temp, fr, rr) ! high temperature rate if ((tf% t9).gt.0.08d0) then - term = 2.90d-16 * r2abe * rbeac + xx + term = 2.90d-16 * r2abe * rbeac + xx ! low temperature rate @@ -637,9 +636,9 @@ subroutine rate_he3ng_fxt(tf, temp, fr, rr) end if ! he3(n, g)he4 - term = 6.62d0 * (1.0d0 + 905.0d0*(tf% T9)) + term = 6.62d0 * (1.0d0 + 905.0d0*(tf% T9)) fr = term - rev = 2.61d+10 * (tf% T932) * exp(-238.81d0*(tf% T9i)) + rev = 2.61d+10 * (tf% T932) * exp(-238.81d0*(tf% T9i)) rr = rev * term end subroutine rate_he3ng_fxt @@ -702,21 +701,21 @@ subroutine rate_be7em_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, bb, dbb + real(dp) term, aa, bb if (tf% t9 < lowT9pp_cutoff) then fr = 0; rr = 0; return end if if (tf% T9 <= 3d0 .and. tf% T9 >= 1d-3) then - aa = 0.0027d0*(tf% T9i) * exp(2.515d-3*(tf% T9i)) - bb = 1.0d0 - 0.537d0*(tf% T913) + 3.86d0*(tf% T923) + aa - term = 1.34d-10 * (tf% T9i12) * bb + aa = 0.0027d0*(tf% T9i) * exp(2.515d-3*(tf% T9i)) + bb = 1.0d0 - 0.537d0*(tf% T913) + 3.86d0*(tf% T923) + aa + term = 1.34d-10 * (tf% T9i12) * bb else - term = 0.0d0 + term = 0.0d0 endif - fr = term - rr = 0.0d0 + fr = term + rr = 0.0d0 end subroutine rate_be7em_fxt @@ -740,7 +739,7 @@ subroutine rate_be7pg_nacre(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, rev, aa, bb, cc + real(dp) term, rev ! a0 T9i23 exp(-a1 T9i13 - (T9*a2)^2) ! * (1 + b0 T9 + b1 T92 + b2 T93 + b3 T94 + b4 T95) ! + c0 T9i32 exp(-c1/T9) @@ -901,9 +900,7 @@ subroutine rate_c12ag_fxt(tf, temp, fr, rr) real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, rev, drevdt, aa, daa, bb, dbb, cc, dcc, & - dd, ddd, ee, dee, ff, dff, gg, dgg, hh, dhh, f1, df1, f2, df2, & - zz, q1, termE1, dtermE1, termE2, dtermE2, termRes, dtermRes + real(dp) term, rev, aa, bb, cc, dd, ee, ff, gg, hh, f1, f2, zz, q1 parameter (q1 = 1.0d0/12.222016d0) if (tf% t9 < lowT9_cutoff) then @@ -922,12 +919,12 @@ subroutine rate_c12ag_fxt(tf, temp, fr, rr) f1 = cc*zz zz = 1.0d0/ee f2 = ff*zz - term = 1.04d8*f1 + 1.76d8*f2 + gg + hh + term = 1.04d8*f1 + 1.76d8*f2 + gg + hh ! 1.7 times cf88 value - term = 1.7d0 * term - rev = 5.13d10 * (tf% t932) * exp(-83.111d0*(tf% t9i)) - fr = term - rr = rev * term + term = 1.7d0 * term + rev = 5.13d10 * (tf% t932) * exp(-83.111d0*(tf% t9i)) + fr = term + rr = rev * term end subroutine rate_c12ag_fxt @@ -948,16 +945,16 @@ subroutine rate_c12ag_nacre(tf, temp, fr, rr) aa = 6.66d7 * (tf% T9i2) * exp(-32.123d0*(tf% T9i13) - (tf% T92)/(4.6d0*4.6d0)) bb = 1 + 2.54d0*(tf% T9) + 1.04d0*(tf% T92) - 0.226d0*(tf% T93) if (bb < 0) bb = 0 - cc = 1.39d3 * (tf% T9i32) * exp(-28.930d0*(tf% T9i)) - termE1 = aa * bb + cc + cc = 1.39d3 * (tf% T9i32) * exp(-28.930d0*(tf% T9i)) + termE1 = aa * bb + cc aa = 6.56d7 * (tf% T9i2) * exp(-32.123d0*(tf% T9i13) - (tf% T92)/(1.3d0*1.3d0)) bb = 1 + 9.23d0*(tf% T9) - 13.7d0*(tf% T92) + 7.4d0*(tf% T93) - termE2 = aa * bb - termRes = 19.2d0 * (tf% T92) * exp(-26.9d0*(tf% T9i)) + termE2 = aa * bb + termRes = 19.2d0 * (tf% T92) * exp(-26.9d0*(tf% T9i)) term = termE1 + termE2 + termRes - rev = 5.132d10 * (tf% T932) * exp(-83.109d0*(tf% T9i)) - fr = term - rr = rev * term + rev = 5.132d10 * (tf% T932) * exp(-83.109d0*(tf% T9i)) + fr = term + rr = rev * term end subroutine rate_c12ag_nacre @@ -981,10 +978,10 @@ subroutine rate_c12ag_kunz(tf, temp, fr, rr) cc = a4 * (tf% T9i2) * exp(-a6*(tf% T9i13)) dd = 1 / pow(1 + a5*(tf% T9i23),2) ee = a9tilda * (tf% T9i13) * exp(-a11*(tf% T9i13)) - term = aa*bb + cc*dd + ee - rev = 5.132d10 * (tf% T932) * exp(-83.109d0*(tf% T9i)) - fr = term - rr = rev * term + term = aa*bb + cc*dd + ee + rev = 5.132d10 * (tf% T932) * exp(-83.109d0*(tf% T9i)) + fr = term + rr = rev * term end subroutine rate_c12ag_kunz @@ -1436,10 +1433,10 @@ subroutine rate_c13an_fxt(tf, temp, fr, rr) ee = 1.41d+06 * (tf% T9i32) * exp(-11.873d0*(tf% T9i)) ff = 2.0d+09 * (tf% T9i32) * exp(-20.409d0*(tf% T9i)) gg = 2.92d+09 * (tf% T9i32) * exp(-29.283d0*(tf% T9i)) - term = cc + dd + ee + ff + gg - fr = term - rev = 5.79d+00 * exp(-25.711d0*(tf% T9i)) - rr = rev * term + term = cc + dd + ee + ff + gg + fr = term + rev = 5.79d+00 * exp(-25.711d0*(tf% T9i)) + rr = rev * term end subroutine rate_c13an_fxt @@ -1528,10 +1525,10 @@ subroutine rate_n14pg_fxt(tf, temp, fr, rr) cc = aa * bb dd = 2.37d+03 * (tf% T9i32) * exp(-3.011d0*(tf% T9i)) ee = 2.19d+04 * exp(-12.530d0*(tf% T9i)) - term = cc + dd + ee - rev = 2.70d+10 * (tf% T932) * exp(-84.678d0*(tf% T9i)) - fr = term - rr = rev * term + term = cc + dd + ee + rev = 2.70d+10 * (tf% T932) * exp(-84.678d0*(tf% T9i)) + fr = term + rr = rev * term end subroutine rate_n14pg_fxt @@ -1622,10 +1619,10 @@ subroutine rate_o14ap_fxt(tf, temp, fr, rr) dd = 3.31d+04 * (tf% T9i32) * exp(-11.733d0*(tf% T9i)) ee = 1.79d+07 * (tf% T9i32) * exp(-22.609d0*(tf% T9i)) ff = 9.00d+03 * (tf% T9113) * exp(-12.517d0*(tf% T9i)) - term = cc + dd + ee + ff - fr = term - rev = 4.93d-01*exp(-13.820d0*(tf% T9i)) - rr = rev * term + term = cc + dd + ee + ff + fr = term + rev = 4.93d-01*exp(-13.820d0*(tf% T9i)) + rr = rev * term end subroutine rate_o14ap_fxt @@ -1681,10 +1678,10 @@ subroutine rate_o15ag_fxt(tf, temp, fr, rr) ff = dd*ee gg = 3.95d-1 * (tf% T9i32) * exp(-5.849d0*(tf% T9i)) hh = 1.90d+1 * pow((tf% T9),2.85d0) * exp(-7.356d0*(tf% T9i) - (tf% T92)*q3) - term = cc + ff + gg + hh - fr = term - rev = 5.54d+10 * (tf% T932) * exp(-40.957d0*(tf% T9i)) - rr = rev * term + term = cc + ff + gg + hh + fr = term + rev = 5.54d+10 * (tf% T932) * exp(-40.957d0*(tf% T9i)) + rr = rev * term end subroutine rate_o15ag_fxt @@ -1711,15 +1708,15 @@ subroutine rate_o16pg_nacre(tf, temp, fr, rr) fr = 0; rr = 0; return end if - aa = 7.37d7 * pow((tf% T9),-0.82d0) * exp(-16.696d0*(tf% T9i13)) + aa = 7.37d7 * pow((tf% T9),-0.82d0) * exp(-16.696d0*(tf% T9i13)) bbm1 = 202d0 * exp(-70.348d0*(tf% T9i) - 0.161d0*(tf% T9)) bb = 1 + bbm1 - term = aa * bb + term = aa * bb call rnacre_rev(tf, & ! a0 T932 exp(-a1/T9) 3.037d9, 6.966d0, & ! a0, a1 rev) - fr = term - rr = rev * term + fr = term + rr = rev * term end subroutine rate_o16pg_nacre @@ -1910,8 +1907,8 @@ subroutine rate_o16o16npad(tf, temp, & b32p = 1.0d0 - b32d - b32a - b32n ! o16(o16, n)s31 - term = aa * b32n - fr1 = term + term = aa * b32n + fr1 = term rev = 0.0d0 if ((tf% T9) .gt. 0.1d0) then rev = 5.92d0 * exp(-16.8038228d0*(tf% T9i)) @@ -1919,8 +1916,8 @@ subroutine rate_o16o16npad(tf, temp, & rr1 = rev * term ! o16(o16, p)p31 - term = aa * b32p - fr2 = term + term = aa * b32p + fr2 = term rev = 0.0d0 if ((tf% T9) .gt. 0.1d0) then rev = 5.92d0*exp(-89.0788286d0*(tf% T9i)) @@ -1928,8 +1925,8 @@ subroutine rate_o16o16npad(tf, temp, & rr2 = rev * term ! o16(o16, a)si28 - term = aa * b32a - fr3 = term + term = aa * b32a + fr3 = term rev = 0.0d0 if ((tf% T9) .gt. 0.1d0) then rev = 3.46d0*exp(-111.3137212d0*(tf% T9i)) @@ -1937,8 +1934,8 @@ subroutine rate_o16o16npad(tf, temp, & rr3 = rev * term ! o16(o16, d)p30 - term = aa * b32d - fr4 = term + term = aa * b32d + fr4 = term rev = 0.0d0 if ((tf% T9) .gt. 0.1d0) then rev = 0.984d0*exp(27.9908982d0*(tf% T9i)) @@ -2103,10 +2100,10 @@ subroutine rate_f18pa_wk82(tf, temp, fr, rr) dd = 8.1d-05 * (tf% T9i32) * exp(-1.05d0*(tf% T9i)) ee = 8.9d-04 * (tf% T9i32) * exp(-1.51d0*(tf% T9i)) ff = 3.0d+05 * (tf% T9i32) * exp(-4.29d0*(tf% T9i)) - term = aa + bb + cc + dd + ee + ff - fr = term - rev = 4.93d-01 * exp(-33.433d0*(tf% T9i)) - rr = rev * term + term = aa + bb + cc + dd + ee + ff + fr = term + rev = 4.93d-01 * exp(-33.433d0*(tf% T9i)) + rr = rev * term end subroutine rate_f18pa_wk82 @@ -2158,9 +2155,9 @@ subroutine rate_f19pa_nacre(tf, temp, fr, rr) 3.27d7, -0.193d0, 6.587d0, & ! e0, e1, e2 gs) dd = 7.30d8 * pow(tf% T9,-0.201d0) * exp(-16.249d0*(tf% T9i)) - gs = gs + dd + gs = gs + dd bb = 0.755d0 * exp(-1.755d0*(tf% T9i) - 0.174d0*(tf% T9)) - term = gs * (1 + bb) + term = gs * (1 + bb) call rnacre_rev(tf, & ! a0 T932 exp(-a1/T9) 6.538d-1, 94.154d0, & ! a0, a1 rev) @@ -2244,10 +2241,10 @@ subroutine rate_ne18ap_fxt(tf, temp, fr, rr) cc = (tf% T923) * bb dd = pow(aa,oneth) ee = (tf% T9i13) * dd - term = c1*exp(c3 - c4*ee)/cc - fr = term - rev = 0.0d0 - rr = 0.0d0 + term = c1*exp(c3 - c4*ee)/cc + fr = term + rev = 0.0d0 + rr = 0.0d0 end subroutine rate_ne18ap_fxt subroutine rate_ne18ap_jina(tf, temp, fr, rr) ! jina reaclib @@ -2296,10 +2293,10 @@ subroutine rate_ne19pg_fxt(tf, temp, fr, rr) + 2.80d0*(tf% T943) + 1.07d0*(tf% T953) ff = dd*ee gg = 8.45d+3 * (tf% T9i54) * exp(-7.64d0*(tf% T9i)) - term = cc + ff + gg - fr = term - rev = 7.39d+09 * (tf% T932) * exp(-25.519d0*(tf% T9i)) - rr = rev * term + term = cc + ff + gg + fr = term + rev = 7.39d+09 * (tf% T932) * exp(-25.519d0*(tf% T9i)) + rr = rev * term end subroutine rate_ne19pg_fxt @@ -2324,7 +2321,7 @@ subroutine rate_ne20pg_nacre(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, rev, aa, bb, cc, dd, ff, gg, zz, gs + real(dp) term, rev, aa, bb, gs if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return @@ -2342,10 +2339,10 @@ subroutine rate_ne20pg_nacre(tf, temp, fr, rr) if (bb > 1) then ! guard against rate going negative bb = 1 end if - term = gs * (1 - bb) - rev = 4.637d9 * (tf% T932) * exp(-28.214d0*(tf% T9i)) - fr = term - rr = rev * term + term = gs * (1 - bb) + rev = 4.637d9 * (tf% T932) * exp(-28.214d0*(tf% T9i)) + fr = term + rr = rev * term end subroutine rate_ne20pg_nacre @@ -2363,7 +2360,6 @@ subroutine rate_ne20ap_jina(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) :: fr1, rr1 include 'formats' ! he4 ne20 p na23 ha04rv -2.37900d+00 call jina_reaclib_2_2(ih1, ina23, ihe4, ine20, tf, rr, fr, 'rate_ne20ap_jina') @@ -2419,7 +2415,6 @@ subroutine rate_na23pg_jina(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) :: fr1 rr = 0 ! p na23 mg24 ha04r 1.16910d+01 call jina_reaclib_2_1(ih1, ina23, img24, tf, fr, rr, 'rate_na23pg_jina') @@ -2433,8 +2428,7 @@ subroutine rate_mg24ag_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, bb, dbb, cc, dcc, dd, ddd, ee, dee, & - ff, dff, gg, dgg, hh, hhi, rev, drevdt, rc121 + real(dp) :: term, aa, bb, cc, dd, ee, ff, gg, hh, hhi, rev, rc121 parameter (rc121 = 0.1d0) if (tf% t9 < lowT9_cutoff) then @@ -2450,9 +2444,9 @@ subroutine rate_mg24ag_fxt(tf, temp, fr, rr) gg = 5.0d0*exp(-15.882d0*(tf% T9i)) hh = 1.0d0 + gg hhi = 1.0d0/hh - term = (aa + bb + cc + dd + ee + ff) * hhi + term = (aa + bb + cc + dd + ee + ff) * hhi fr = term - rev = 6.27d+10 * (tf% T932) * exp(-115.862d0*(tf% T9i)) + rev = 6.27d+10 * (tf% T932) * exp(-115.862d0*(tf% T9i)) rr = rev * term end subroutine rate_mg24ag_fxt @@ -2475,9 +2469,8 @@ subroutine rate_mg24ap_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, bb, dbb, cc, dcc, dd, ddd, ee, dee, & - ff, dff, gg, dgg, term1, dterm1, term2, dterm2, & - rev, drevdt, rc148, q1 + real(dp) term, aa, bb, cc, dd, ee, ff, gg, & + term1, term2, rev, rc148, q1 parameter (rc148 = 0.1d0, & q1 = 1.0d0/0.024649d0) @@ -2497,8 +2490,8 @@ subroutine rate_mg24ap_fxt(tf, temp, fr, rr) ee = oneth*exp(-9.792d0*(tf% T9i)) ff = twoth * exp(-11.773d0*(tf% T9i)) gg = 1.0d0 + ee + ff - term = (term1 + term2)/gg - rev = 1.81d0 * exp(-18.572d0*(tf% T9i)) + term = (term1 + term2)/gg + rev = 1.81d0 * exp(-18.572d0*(tf% T9i)) fr = rev * term rr = term end subroutine rate_mg24ap_fxt @@ -2508,7 +2501,6 @@ subroutine rate_mg24ap_jina(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) :: fr1 rr = 0 ! he4 mg24 p al27 il01rv -1.60060d+00 call jina_reaclib_2_2(ih1, ial27, ihe4, img24, tf, rr, fr, 'rate_mg24ap_jina') @@ -2535,17 +2527,16 @@ subroutine rate_al27pg_c96(tf, temp, fr, rr) ee = 4.29d+01 * (tf% T9i32) * exp(-3.273d0*(tf% T9i)) ff = 1.34d+02 * (tf% T9i32) * exp(-3.654d0*(tf% T9i)) gg = 1.77d+04 * pow(tf% T9, 0.53d0) * exp(-4.588d0*(tf% T9i)) - term = aa + bb + cc + dd + ee + ff + gg - fr = term - rev = 1.13d+11 * (tf% T932) * exp(-134.434d0*(tf% T9i)) - rr = rev * term + term = aa + bb + cc + dd + ee + ff + gg + fr = term + rev = 1.13d+11 * (tf% T932) * exp(-134.434d0*(tf% T9i)) + rr = rev * term end subroutine rate_al27pg_c96 subroutine rate_al27pg_jina(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) :: fr1 ! p al27 si28 il01r 1.15860d+01 call jina_reaclib_2_1(ih1, ial27, isi28, tf, fr, rr, 'rate_al27pg_jina') end subroutine rate_al27pg_jina @@ -2569,7 +2560,7 @@ subroutine rate_si28ag_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 include 'formats' @@ -2581,9 +2572,9 @@ subroutine rate_si28ag_fxt(tf, temp, fr, rr) z2 = z*z z3 = z2*z aa = 1.0d0 + 6.340d-2*z + 2.541d-3*z2 - 2.900d-4*z3 - term = 4.82d+22 * (tf% T9i23) * exp(-61.015d0*(tf% T9i13) * aa) + term = 4.82d+22 * (tf% T9i23) * exp(-61.015d0*(tf% T9i13) * aa) fr = term - rev = 6.461d+10 * (tf% T932) * exp(-80.643d0*(tf% T9i)) + rev = 6.461d+10 * (tf% T932) * exp(-80.643d0*(tf% T9i)) rr = rev * term !if (abs(temp - 3.0097470376051402D+09) < 1d2) then @@ -2602,7 +2593,7 @@ subroutine rate_si28ap_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return @@ -2612,8 +2603,8 @@ subroutine rate_si28ap_fxt(tf, temp, fr, rr) z2 = z*z z3 = z2*z aa = 1.0d0 + 2.798d-3*z + 2.763d-3*z2 - 2.341d-4*z3 - term = 4.16d+13 * (tf% T9i23) * exp(-25.631d0*(tf% T9i13) * aa) - rev = 0.5825d0 * exp(-22.224d0*(tf% T9i)) + term = 4.16d+13 * (tf% T9i23) * exp(-25.631d0*(tf% T9i13) * aa) + rev = 0.5825d0 * exp(-22.224d0*(tf% T9i)) fr = rev * term rr = term end subroutine rate_si28ap_fxt @@ -2623,7 +2614,6 @@ subroutine rate_si28ap_jina(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) :: fr1 ! he4 si28 p p31 il01rv -1.91710d+00 call jina_reaclib_2_2(ih1, ip31, ihe4, isi28, tf, rr, fr, 'rate_si28ap_jina') end subroutine rate_si28ap_jina @@ -2640,7 +2630,7 @@ subroutine rate_p31pg_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 include 'formats' if (tf% t9 < lowT9_cutoff) then @@ -2651,9 +2641,9 @@ subroutine rate_p31pg_fxt(tf, temp, fr, rr) z2 = z*z z3 = z2*z aa = 1.0d0 + 1.928d-1*z - 1.540d-2*z2 + 6.444d-4*z3 - term = 1.08d+16 * (tf% T9i23) * exp(-27.042d0*(tf% T9i13) * aa) + term = 1.08d+16 * (tf% T9i23) * exp(-27.042d0*(tf% T9i13) * aa) fr = term - rev = 3.764d+10 * (tf% T932) * exp(-102.865d0*(tf% T9i)) + rev = 3.764d+10 * (tf% T932) * exp(-102.865d0*(tf% T9i)) rr = rev * term end subroutine rate_p31pg_fxt @@ -2689,7 +2679,7 @@ subroutine rate_s32ag_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return @@ -2699,9 +2689,9 @@ subroutine rate_s32ag_fxt(tf, temp, fr, rr) z2 = z*z z3 = z2*z aa = 1.0d0 + 4.913d-2*z + 4.637d-3*z2 - 4.067d-4*z3 - term = 1.16d+24 * (tf% T9i23) * exp(-66.690d0*(tf% T9i13) * aa) + term = 1.16d+24 * (tf% T9i23) * exp(-66.690d0*(tf% T9i13) * aa) fr = term - rev = 6.616d+10 * (tf% T932) * exp(-77.080d0*(tf% T9i)) + rev = 6.616d+10 * (tf% T932) * exp(-77.080d0*(tf% T9i)) rr = rev * term end subroutine rate_s32ag_fxt @@ -2715,7 +2705,7 @@ subroutine rate_s32ap_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return @@ -2725,8 +2715,8 @@ subroutine rate_s32ap_fxt(tf, temp, fr, rr) z2 = z*z z3 = z2*z aa = 1.0d0 + 1.041d-1*z - 1.368d-2*z2 + 6.969d-4*z3 - term = 1.27d+16 * (tf% T9i23) * exp(-31.044d0*(tf% T9i13) * aa) - rev = 1.144d0 * exp(-21.643d0*(tf% T9i)) + term = 1.27d+16 * (tf% T9i23) * exp(-31.044d0*(tf% T9i13) * aa) + rev = 1.144d0 * exp(-21.643d0*(tf% T9i)) fr = rev * term rr = term end subroutine rate_s32ap_fxt @@ -2752,16 +2742,16 @@ subroutine rate_cl35pg_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt + real(dp) term, aa, rev if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return end if aa = 1.0d0 + 1.761d-1*(tf% T9) - 1.322d-2*(tf% T92) + 5.245d-4*(tf% T93) - term = 4.48d+16 * (tf% T9i23) * exp(-29.483d0*(tf% T9i13) * aa) + term = 4.48d+16 * (tf% T9i23) * exp(-29.483d0*(tf% T9i13) * aa) fr = term - rev = 7.568d+10*(tf% T932)*exp(-98.722d0*(tf% T9i)) + rev = 7.568d+10*(tf% T932)*exp(-98.722d0*(tf% T9i)) rr = rev * term end subroutine rate_cl35pg_fxt @@ -2795,20 +2785,20 @@ subroutine rate_ar36ag_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return end if - - z = min((tf% T9), 10.0d0) - z2 = z*z - z3 = z2*z - aa = 1.0d0 + 1.458d-1*z - 1.069d-2*z2 + 3.790d-4*z3 - term = 2.81d+30 * (tf% T9i23) * exp(-78.271d0*(tf% T9i13) * aa) - fr = term - rev = 6.740d+10 * (tf% T932) * exp(-81.711d0*(tf% T9i)) - rr = rev * term + + z = min((tf% T9), 10.0d0) + z2 = z*z + z3 = z2*z + aa = 1.0d0 + 1.458d-1*z - 1.069d-2*z2 + 3.790d-4*z3 + term = 2.81d+30 * (tf% T9i23) * exp(-78.271d0*(tf% T9i13) * aa) + fr = term + rev = 6.740d+10 * (tf% T932) * exp(-81.711d0*(tf% T9i)) + rr = rev * term end subroutine rate_ar36ag_fxt ! rar36ga, ar36(g,a)s32 @@ -2820,20 +2810,20 @@ subroutine rate_ar36ap_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return end if - z = min((tf% T9), 10.0d0) - z2 = z*z - z3 = z2*z - aa = 1.0d0 + 4.826d-3*z - 5.534d-3*z2 + 4.021d-4*z3 - term = 2.76d+13 * (tf% T9i23) * exp(-34.922d0*(tf% T9i13) * aa) - rev = 1.128d0*exp(-14.959d0*(tf% T9i)) - fr = rev * term - rr = term + z = min((tf% T9), 10.0d0) + z2 = z*z + z3 = z2*z + aa = 1.0d0 + 4.826d-3*z - 5.534d-3*z2 + 4.021d-4*z3 + term = 2.76d+13 * (tf% T9i23) * exp(-34.922d0*(tf% T9i13) * aa) + rev = 1.128d0*exp(-14.959d0*(tf% T9i)) + fr = rev * term + rr = term end subroutine rate_ar36ap_fxt @@ -2856,20 +2846,20 @@ subroutine rate_k39pg_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return end if - z = min((tf% T9), 10.0d0) - z2 = z*z - z3 = z2*z - aa = 1.0d0 + 1.622d-1*z - 1.119d-2*z2 + 3.910d-4*z3 - term = 4.09d+16 * (tf% T9i23) * exp(-31.727d0*(tf% T9i13) * aa) - fr = term - rev = 7.600d+10 * (tf% T932) * exp(-96.657d0*(tf% T9i)) - rr = rev * term + z = min((tf% T9), 10.0d0) + z2 = z*z + z3 = z2*z + aa = 1.0d0 + 1.622d-1*z - 1.119d-2*z2 + 3.910d-4*z3 + term = 4.09d+16 * (tf% T9i23) * exp(-31.727d0*(tf% T9i13) * aa) + fr = term + rev = 7.600d+10 * (tf% T932) * exp(-96.657d0*(tf% T9i)) + rr = rev * term end subroutine rate_k39pg_fxt @@ -2903,20 +2893,20 @@ subroutine rate_ca40ag_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return end if - z = min((tf% T9), 10.0d0) - z2 = z*z - z3 = z2*z - aa = 1.0d0 + 1.650d-2*z + 5.973d-3*z2 - 3.889d-04*z3 - term = 4.66d+24 * (tf% T9i23) * exp(-76.435d0*(tf% T9i13) * aa) - fr = term - rev = 6.843d+10 * (tf% T932) * exp(-59.510d0*(tf% T9i)) - rr = rev * term + z = min((tf% T9), 10.0d0) + z2 = z*z + z3 = z2*z + aa = 1.0d0 + 1.650d-2*z + 5.973d-3*z2 - 3.889d-04*z3 + term = 4.66d+24 * (tf% T9i23) * exp(-76.435d0*(tf% T9i13) * aa) + fr = term + rev = 6.843d+10 * (tf% T932) * exp(-59.510d0*(tf% T9i)) + rr = rev * term end subroutine rate_ca40ag_fxt @@ -2929,7 +2919,7 @@ subroutine rate_ca40ap_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return @@ -2939,8 +2929,8 @@ subroutine rate_ca40ap_fxt(tf, temp, fr, rr) z2 = z*z z3 = z2*z aa = 1.0d0 - 1.206d-2*z + 7.753d-3*z2 - 5.071d-4*z3 - term = 4.54d+14 * (tf% T9i23) * exp(-32.177d0*(tf% T9i13) * aa) - rev = 2.229d0 * exp(-40.966d0*(tf% T9i)) + term = 4.54d+14 * (tf% T9i23) * exp(-32.177d0*(tf% T9i13) * aa) + rev = 2.229d0 * exp(-40.966d0*(tf% T9i)) fr = rev * term rr = term end subroutine rate_ca40ap_fxt @@ -2969,7 +2959,7 @@ subroutine rate_sc43pg_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return @@ -2979,9 +2969,9 @@ subroutine rate_sc43pg_fxt(tf, temp, fr, rr) z2 = z*z z3 = z2*z aa = 1.0d0 + 1.023d-1*z - 2.242d-3*z2 - 5.463d-5*z3 - term = 3.85d+16 * (tf% T9i23) * exp(-33.234d0*(tf% T9i13) * aa) + term = 3.85d+16 * (tf% T9i23) * exp(-33.234d0*(tf% T9i13) * aa) fr = term - rev = 1.525d+11 * (tf% T932) * exp(-100.475d0*(tf% T9i)) + rev = 1.525d+11 * (tf% T932) * exp(-100.475d0*(tf% T9i)) rr = rev * term end subroutine rate_sc43pg_fxt @@ -3017,20 +3007,20 @@ subroutine rate_ti44ag_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return end if - z = min((tf% T9), 10.0d0) - z2 = z*z - z3 = z2*z - aa = 1.0d0 + 1.066d-1*z - 1.102d-2*z2 + 5.324d-4*z3 - term = 1.37d+26 * (tf% T9i23) * exp(-81.227d0*(tf% T9i13) * aa) - fr = term - rev = 6.928d+10*(tf% T932)*exp(-89.289d0*(tf% T9i)) - rr = rev * term + z = min((tf% T9), 10.0d0) + z2 = z*z + z3 = z2*z + aa = 1.0d0 + 1.066d-1*z - 1.102d-2*z2 + 5.324d-4*z3 + term = 1.37d+26 * (tf% T9i23) * exp(-81.227d0*(tf% T9i13) * aa) + fr = term + rev = 6.928d+10*(tf% T932)*exp(-89.289d0*(tf% T9i)) + rr = rev * term end subroutine rate_ti44ag_fxt @@ -3043,20 +3033,20 @@ subroutine rate_ti44ap_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return end if - z = min((tf% T9), 10.0d0) - z2 = z*z - z3 = z2*z - aa = 1.0d0 + 2.655d-2*z - 3.947d-3*z2 + 2.522d-4*z3 - term = 6.54d+20 * (tf% T9i23) * exp(-66.678d0*(tf% T9i13) * aa) - rev = 1.104d0 * exp(-4.723d0*(tf% T9i)) - fr = rev * term - rr = term + z = min((tf% T9), 10.0d0) + z2 = z*z + z3 = z2*z + aa = 1.0d0 + 2.655d-2*z - 3.947d-3*z2 + 2.522d-4*z3 + term = 6.54d+20 * (tf% T9i23) * exp(-66.678d0*(tf% T9i13) * aa) + rev = 1.104d0 * exp(-4.723d0*(tf% T9i)) + fr = rev * term + rr = term end subroutine rate_ti44ap_fxt @@ -3081,20 +3071,20 @@ subroutine rate_v47pg_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return end if - z = min((tf% T9), 10.0d0) - z2 = z*z - z3 = z2*z - aa = 1.0d0 + 9.979d-2*z - 2.269d-3*z2 - 6.662d-5*z3 - term = 2.05d+17 * (tf% T9i23) * exp(-35.568d0*(tf% T9i13) * aa) - fr = term - rev = 7.649d+10*(tf% T932)*exp(-93.999d0*(tf% T9i)) - rr = rev * term + z = min((tf% T9), 10.0d0) + z2 = z*z + z3 = z2*z + aa = 1.0d0 + 9.979d-2*z - 2.269d-3*z2 - 6.662d-5*z3 + term = 2.05d+17 * (tf% T9i23) * exp(-35.568d0*(tf% T9i13) * aa) + fr = term + rev = 7.649d+10*(tf% T932)*exp(-93.999d0*(tf% T9i)) + rr = rev * term end subroutine rate_v47pg_fxt @@ -3129,20 +3119,20 @@ subroutine rate_cr48ag_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return end if - z = min((tf% T9), 10.0d0) - z2 = z*z - z3 = z2*z - aa = 1.0d0 + 6.325d-2*z - 5.671d-3*z2 + 2.848d-4*z3 - term = 1.04d+23 * (tf% T9i23) * exp(-81.420d0*(tf% T9i13) * aa) - fr = term - rev = 7.001d+10 * (tf% T932) * exp(-92.177d0*(tf% T9i)) - rr = rev * term + z = min((tf% T9), 10.0d0) + z2 = z*z + z3 = z2*z + aa = 1.0d0 + 6.325d-2*z - 5.671d-3*z2 + 2.848d-4*z3 + term = 1.04d+23 * (tf% T9i23) * exp(-81.420d0*(tf% T9i13) * aa) + fr = term + rev = 7.001d+10 * (tf% T932) * exp(-92.177d0*(tf% T9i)) + rr = rev * term end subroutine rate_cr48ag_fxt @@ -3155,7 +3145,7 @@ subroutine rate_cr48ap_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return @@ -3165,9 +3155,9 @@ subroutine rate_cr48ap_fxt(tf, temp, fr, rr) z2 = z*z z3 = z2*z aa = 1.0d0 + 1.384d-2*z + 1.081d-3*z2 - 5.933d-5*z3 - term = 1.83d+26 * (tf% T9i23) * exp(-86.741d0*(tf% T9i13) * aa) + term = 1.83d+26 * (tf% T9i23) * exp(-86.741d0*(tf% T9i13) * aa) fr = term - rev = 0.6087d0*exp(-6.510d0*(tf% T9i)) + rev = 0.6087d0*exp(-6.510d0*(tf% T9i)) rr = rev * term end subroutine rate_cr48ap_fxt @@ -3193,7 +3183,7 @@ subroutine rate_mn51pg_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return @@ -3203,9 +3193,9 @@ subroutine rate_mn51pg_fxt(tf, temp, fr, rr) z2 = z*z z3 = z2*z aa = 1.0d0 + 8.922d-2*z - 1.256d-3*z2 - 9.453d-5*z3 - term = 3.77d+17 * (tf% T9i23) * exp(-37.516d0*(tf% T9i13) * aa) + term = 3.77d+17 * (tf% T9i23) * exp(-37.516d0*(tf% T9i13) * aa) fr = term - rev = 1.150d+11*(tf% T932)*exp(-85.667d0*(tf% T9i)) + rev = 1.150d+11*(tf% T932)*exp(-85.667d0*(tf% T9i)) rr = rev * term end subroutine rate_mn51pg_fxt @@ -3229,7 +3219,7 @@ subroutine rate_fe52ag_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return @@ -3239,9 +3229,9 @@ subroutine rate_fe52ag_fxt(tf, temp, fr, rr) z2 = z*z z3 = z2*z aa = 1.0d0 + 7.846d-2*z - 7.430d-3*z2 + 3.723d-4*z3 - term = 1.05d+27 * (tf% T9i23) * exp(-91.674d0*(tf% T9i13) * aa) + term = 1.05d+27 * (tf% T9i23) * exp(-91.674d0*(tf% T9i13) * aa) fr = term - rev = 7.064d+10*(tf% T932)*exp(-92.850d0*(tf% T9i)) + rev = 7.064d+10*(tf% T932)*exp(-92.850d0*(tf% T9i)) rr = rev * term end subroutine rate_fe52ag_fxt @@ -3255,7 +3245,7 @@ subroutine rate_fe52ap_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return @@ -3265,9 +3255,9 @@ subroutine rate_fe52ap_fxt(tf, temp, fr, rr) z2 = z*z z3 = z2*z aa = 1.0d0 + 1.367d-2*z + 7.428d-4*z2 - 3.050d-5*z3 - term = 1.30d+27 * (tf% T9i23) * exp(-91.674d0*(tf% T9i13) * aa) + term = 1.30d+27 * (tf% T9i23) * exp(-91.674d0*(tf% T9i13) * aa) fr = term - rev = 0.4597d0*exp(-9.470d0*(tf% T9i)) + rev = 0.4597d0*exp(-9.470d0*(tf% T9i)) rr = rev * term end subroutine rate_fe52ap_fxt @@ -3290,17 +3280,17 @@ subroutine rate_fe52ng_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, rev, drevdt, tq2 + real(dp) term, rev, tq2 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return end if ! fe52(n, g)fe53 - tq2 = (tf% T9) - 0.348d0 - term = 9.604d+05 * exp(-0.0626d0*tq2) + tq2 = (tf% T9) - 0.348d0 + term = 9.604d+05 * exp(-0.0626d0*tq2) fr = term - rev = 2.43d+09 * (tf% T932) * exp(-123.951d0*(tf% T9i)) + rev = 2.43d+09 * (tf% T932) * exp(-123.951d0*(tf% T9i)) rr = rev * term end subroutine rate_fe52ng_fxt @@ -3309,7 +3299,7 @@ subroutine rate_fe53ng_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, rev, drevdt, tq1, tq10, dtq10, tq2 + real(dp) term, rev, tq1, tq10, tq2 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return @@ -3319,9 +3309,9 @@ subroutine rate_fe53ng_fxt(tf, temp, fr, rr) tq1 = (tf% T9)/0.348d0 tq10 = pow(tq1, 0.10d0) tq2 = (tf% T9) - 0.348d0 - term = 1.817d+06 * tq10 * exp(-0.06319d0*tq2) + term = 1.817d+06 * tq10 * exp(-0.06319d0*tq2) fr = term - rev = 1.56d+11 * (tf% T932) * exp(-155.284d0*(tf% T9i)) + rev = 1.56d+11 * (tf% T932) * exp(-155.284d0*(tf% T9i)) rr = rev * term end subroutine rate_fe53ng_fxt @@ -3339,7 +3329,7 @@ subroutine rate_fe54pg_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, rev, drevdt, aa, daa, z, z2, z3 + real(dp) term, rev, aa, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return @@ -3350,9 +3340,9 @@ subroutine rate_fe54pg_fxt(tf, temp, fr, rr) z2 = z*z z3 = z2*z aa = 1.0d0 + 9.593d-2*z - 3.445d-3*z2 + 8.594d-5*z3 - term = 4.51d+17 * (tf% T9i23) * exp(-38.483d0*(tf% T9i13) * aa) + term = 4.51d+17 * (tf% T9i23) * exp(-38.483d0*(tf% T9i13) * aa) fr = term - rev = 2.400d+09 * (tf% T932) * exp(-58.605d0*(tf% T9i)) + rev = 2.400d+09 * (tf% T932) * exp(-58.605d0*(tf% T9i)) rr = rev * term end subroutine rate_fe54pg_fxt @@ -3402,20 +3392,20 @@ subroutine rate_co55pg_fxt(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) term, dtermdt, aa, daa, rev, drevdt, z, z2, z3 + real(dp) term, aa, rev, z, z2, z3 if (tf% t9 < lowT9_cutoff) then fr = 0; rr = 0; return end if - z = min((tf% T9), 10.0d0) - z2 = z*z - z3 = z2*z - aa = 1.0d0 + 9.894d-2*z - 3.131d-3*z2 - 2.160d-5*z3 - term = 1.21d+18 * (tf% T9i23) * exp(-39.604d0*(tf% T9i13) * aa) - fr = term - rev = 1.537d+11*(tf% T932)*exp(-83.382d0*(tf% T9i)) - rr = rev * term + z = min((tf% T9), 10.0d0) + z2 = z*z + z3 = z2*z + aa = 1.0d0 + 9.894d-2*z - 3.131d-3*z2 - 2.160d-5*z3 + term = 1.21d+18 * (tf% T9i23) * exp(-39.604d0*(tf% T9i13) * aa) + fr = term + rev = 1.537d+11*(tf% T932)*exp(-83.382d0*(tf% T9i)) + rr = rev * term end subroutine rate_co55pg_fxt @@ -3434,7 +3424,6 @@ subroutine rate_v44pg_jina(tf, temp, fr, rr) type (T_Factors) :: tf real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr - real(dp) :: fr1 ! p v44 cr45 rath 3.10000d+00 call jina_reaclib_2_1(ih1, iv44, icr45, tf, fr, rr, 'rate_v44pg_jina') end subroutine rate_v44pg_jina @@ -3691,8 +3680,8 @@ subroutine rnacre( & type (T_Factors) :: tf real(dp), intent(in) :: a0, a1, a2, b0, b1, b2, b3, b4, & c0, c1, d0, d1, e0, e1, e2 - real(dp), intent(out) :: term - real(dp) :: aa, daa, bb, dbb, cc, dcc, dd, ddd, ee, dee + real(dp), intent(out) :: term + real(dp) :: aa, bb, cc, dd, ee aa = a0 * (tf% T9i23) * exp(-a1*(tf% T9i13) - (tf% T92)*(a2*a2)) bb = 1 + b0*(tf% T9) + b1*(tf% T92) + b2*(tf% T93) + b3*(tf% T94) + b4*(tf% T95) if (bb < 0) then @@ -3701,7 +3690,7 @@ subroutine rnacre( & cc = c0 * (tf% T9i32) * exp(-c1*(tf% T9i)) dd = d0 * (tf% T9i32) * exp(-d1*(tf% T9i)) ee = e0 * pow(tf% T9,e1) * exp(-e2*(tf% T9i)) - term = aa * bb + cc + dd + ee + term = aa * bb + cc + dd + ee end subroutine rnacre @@ -4165,9 +4154,8 @@ subroutine reaclib_rate( & integer, intent(in) :: num_out, nuclides_out(:) real(dp), intent(in) :: T9 real(dp), intent(out) :: lambda, rlambda - integer, intent(out) :: ierr + integer, intent(out) :: ierr character (len=max_id_length) :: handle - integer :: lo, hi, i integer :: iso_ids(num_in+num_out) include 'formats' ierr = 0 @@ -4183,9 +4171,9 @@ subroutine reaclib_rate_for_handle(handle, T9, lambda, rlambda, ierr) character (len=*), intent(in) :: handle real(dp), intent(in) :: T9 real(dp), intent(out) :: lambda, rlambda - integer, intent(out) :: ierr - real(dp) :: dlambda_dlnT, drlambda_dlnT - integer :: lo, hi, i + integer, intent(out) :: ierr + real(dp) :: dlambda_dlnT, drlambda_dlnT + integer :: lo, hi logical, parameter :: forward_only = .false. include 'formats' ierr = 0 @@ -4206,7 +4194,7 @@ subroutine reaclib_rate_for_handle(handle, T9, lambda, rlambda, ierr) lo, hi, T9, reaclib_rates, chem_isos, forward_only, & lambda, dlambda_dlnT, & rlambda, drlambda_dlnT, & - ierr) + ierr) if (ierr /= 0) then write(*,'(a)') & 'reaclib_rate_for_handle: failed in reaclib_reaction_rates ' & @@ -4380,7 +4368,7 @@ subroutine mazurek(btemp,bden,y56,ye,rn56ec,sn56ec) ! sn56ec = ni56 neutrino loss rate ! declare - integer ifirst,jp,kp,jr,jd,ii,ik,ij,j,k + integer jp,kp,jr,jd,ii,ik,ij real(dp) rnt(2),rne(2,7),datn(2,6,7), & t9,r,rfm,rf0,rf1,rf2,dfacm,dfac0,dfac1,dfac2, & tfm,tf0,tf1,tf2,tfacm,tfac0,tfac1,tfac2 diff --git a/rates/private/rates_initialize.f90 b/rates/private/rates_initialize.f90 index 335a64e7e..c8438be47 100644 --- a/rates/private/rates_initialize.f90 +++ b/rates/private/rates_initialize.f90 @@ -40,7 +40,7 @@ subroutine finish_rates_def_init use reaclib_input, only: do_extract_rates use chem_def, only: nuclide_set, chem_isos, num_chem_isos, iso_name_length use chem_lib, only: generate_nuclide_set - integer :: i, ierr + integer :: ierr character(len=iso_name_length), pointer :: names(:) =>null() type(nuclide_set), pointer :: set(:) =>null() integer, pointer :: chem_id(:) =>null() @@ -77,7 +77,7 @@ subroutine do_add_reaction_for_handle(reaction_handle, ierr) integer, intent(out) :: ierr integer :: ir, num_in, num_out - integer :: j, particles_in, particles_out + integer :: particles_in, particles_out logical :: already_defined integer :: iso_ids(max_num_reaction_inputs+max_num_reaction_outputs) integer :: cin(max_num_reaction_inputs), cout(max_num_reaction_outputs) @@ -155,8 +155,8 @@ subroutine do_add_reaction_from_reaclib(reaction_handle, reverse_handle, indx, i integer, intent(in) :: indx ! index in reaclib rates integer, intent(out) :: ierr - integer :: i, ir, chapter, num_in, num_out, iso_in, iso_out - integer :: j, weak_j, particles_in, particles_out + integer :: i, ir, chapter, num_in, num_out + integer :: particles_in, particles_out logical :: weak, reverse, already_defined integer :: cin(max_num_reaction_inputs), cout(max_num_reaction_outputs) type (reaction_data), pointer :: r =>null() @@ -531,9 +531,9 @@ subroutine init_raw_rates_records(ierr) integer, intent(out) :: ierr type (rate_table_info), pointer :: ri =>null() - integer :: i, iounit, n, t, ir - character (len=256) :: line, dir, rate_name, rate_fname, filename, message - character (len=256) :: buffer, string + integer :: i, iounit, n, t + character (len=256) :: dir, rate_name, rate_fname, filename + character (len=256) :: buffer logical :: okay logical, parameter :: dbg = .false. @@ -680,10 +680,9 @@ subroutine read_reaction_parameters(reactionlist_filename, ierr) character (len=*), intent(in) :: reactionlist_filename integer, intent(out) :: ierr - character (len=256) :: line, filename, rname, cname, iname, str, message - integer :: iounit, len, i, j, jj, k, cnt, ir, ic, ii, ye, rho, n, num_reactions, new_max + character (len=256) :: line, filename, rname, cname + integer :: iounit, len, i, j, jj, k, cnt, ir, ic, ii, n, num_reactions character (len=maxlen_reaction_Info) :: info - real(dp) :: Q logical, parameter :: dbg = .false. include 'formats' @@ -1048,7 +1047,6 @@ end subroutine read_reaction_Info integer function read_iso() use chem_def, only: iso_name_length character (len=64) :: str - integer :: ierr str = line(i:j) read_iso = chem_get_iso_id(str) end function read_iso @@ -1078,7 +1076,6 @@ end function read_dbl logical function missing_dbl() character (len=64) :: str - integer :: ierr str = line(i:j) missing_dbl = (len_trim(str) == 0) end function missing_dbl diff --git a/rates/private/rates_support.f90 b/rates/private/rates_support.f90 index 3b2694f8e..9fc001279 100644 --- a/rates/private/rates_support.f90 +++ b/rates/private/rates_support.f90 @@ -49,7 +49,7 @@ subroutine do_get_raw_rates( & real(dp), intent(inout), dimension(:) :: rate_raw, rate_raw_dT, rate_raw_dRho integer, intent(out) :: ierr - integer :: imax, iat0, iat, ir, i, j, irho + integer :: imax, iat0, iat, ir, i, irho integer, parameter :: mp = 4 real(dp), allocatable :: dtab(:), ddtab(:) real(dp), pointer :: rattab_f(:,:,:) @@ -151,9 +151,8 @@ subroutine get_rates_from_table(r1, r2) use const_def, only: ln10 integer, intent(in) :: r1, r2 - integer :: i, k, cnt - real(dp) :: denom, am1, a00, ap1, ap2, cm1, c00, cp1, cp2, & - rate, dr_dT, dx, dt, old_rate, old_dr_dT + integer :: i, k + real(dp) :: dt include 'formats' @@ -201,7 +200,7 @@ subroutine do_make_rate_tables( & real(dp), pointer :: rattab_f1(:) integer, intent(out) :: ierr - integer :: i, j, operr, ir, num_to_add_to_cache,thread_num + integer :: i, j, operr, num_to_add_to_cache,thread_num real(dp) :: logT, btemp real(dp), pointer :: work1(:)=>null(), f1(:)=>null(), rattab_f(:,:,:)=>null() integer, pointer :: reaction_id(:) =>null() @@ -530,7 +529,7 @@ subroutine do_show_reaction_from_cache(cache_filename, ierr) integer :: version, nrattab, which real(dp) :: rattab_thi, rattab_tlo, rattab_tstp, rate, T8, logT - integer :: ios, ir, i, j, io_unit + integer :: ios, j, io_unit real(dp), parameter :: tiny = 1d-6 character (len=maxlen_reaction_Name) :: name diff --git a/rates/private/raw_rates.f90 b/rates/private/raw_rates.f90 index a9caa963e..bf327a8f8 100644 --- a/rates/private/raw_rates.f90 +++ b/rates/private/raw_rates.f90 @@ -815,7 +815,6 @@ subroutine eval_which_raw_rate( & real(dp), intent(in) :: temp real(dp), intent(out) :: fr, rr integer, intent(out) :: ierr - real(dp) :: fr1, rr1, alfa, beta include 'formats' ierr = 0 @@ -897,7 +896,7 @@ subroutine eval_table_reverse(ir, rir, tf, temp, fr, rr, ierr) integer, intent(out) :: ierr real(dp), dimension(1):: ln_lambda, lambda, dlambda_dlnT, & inv_lambda, dinv_lambda_dlnT - integer :: lo, hi, num_lambdas + integer :: lo, hi real(dp) :: fr_table include 'formats' ierr = 0 @@ -940,7 +939,6 @@ subroutine get_interp_table(f_name, nT8s, T8s_out, f1_out, ierr) integer, intent(out) :: ierr integer :: iounit, j, nvec - real(dp) :: tmp real(dp), pointer :: work(:)=> null() real(dp), pointer :: T8s(:)=> null() real(dp), pointer :: f1(:)=> null(), f(:,:)=> null() diff --git a/rates/private/reaclib_eval.f90 b/rates/private/reaclib_eval.f90 index f067c54f2..b4084987b 100644 --- a/rates/private/reaclib_eval.f90 +++ b/rates/private/reaclib_eval.f90 @@ -98,7 +98,7 @@ subroutine compute_some_lambdas( & type(reaction_data), intent(in) :: rates real(dp), dimension(:), intent(out) :: ln_lambda, lambda, dlambda_dlnT - real(dp) :: T9inv, logT, ln1 + real(dp) :: T9inv, ln1 real(dp), dimension(7) :: T9fac, dT9fac_dT9, dT9fac_dlnT integer :: i, j @@ -161,7 +161,7 @@ subroutine compute_some_inverse_lambdas( & real(dp), dimension(:), intent(out) :: inv_lambda, dinv_lambda_dlnT integer :: indx,indxp - integer :: rstart, rend, i, j + integer :: i, j real(dp), dimension(num_lambdas) :: A, Qratio, dQratio_dlnT real(dp) :: tfac, dtfac_dlnT, lnT9, T9i, dT9i_dlnT, ln1, fac1, dfac1_dlnT, dln1_dlnT,blurp diff --git a/rates/private/reaclib_input.f90 b/rates/private/reaclib_input.f90 index 57e6643c8..d434b7694 100644 --- a/rates/private/reaclib_input.f90 +++ b/rates/private/reaclib_input.f90 @@ -192,7 +192,7 @@ subroutine do_read_reaclib(ierr) subroutine read_reaclib_cache(io,ios) integer, intent(in) :: io integer, intent(out) :: ios - integer :: i,n + integer :: n ios = 0 read(io,iostat=ios) nreaclib if (ios /= 0) return @@ -211,7 +211,7 @@ end subroutine read_reaclib_cache subroutine write_reaclib_cache(io) integer, intent(in) :: io - integer :: i, n + integer :: n write(io) nreaclib n = nreaclib write(io) & @@ -230,7 +230,7 @@ end subroutine do_read_reaclib subroutine extract_rates_from_reaclib(reaclib,nreaclib,nuclides,rates,set,use_weaklib,ierr) use chem_def, only: & - nuclide_set, nuclide_not_found, del_Mp, del_Mn, & + nuclide_set, nuclide_not_found, & ipp, icno, i3alf, i_burn_c, i_burn_n, i_burn_o, i_burn_ne, i_burn_na, i_burn_mg, & i_burn_si, i_burn_s, i_burn_ar, i_burn_ca, i_burn_ti, i_burn_cr, i_burn_fe, icc, & ico, ioo, iphoto, iother @@ -247,7 +247,7 @@ subroutine extract_rates_from_reaclib(reaclib,nreaclib,nuclides,rates,set,use_we type(reaction_data) :: r ! temporary storage integer :: i,j,l,count,loc_count,nt,indx,cat, & weaklib_count,chapter,num_in,num_out,num_skip_for_weaklib,num_from_reaclib, & - max_lhs_Z, min_Z, i1, i2, cid_in, cid_out + max_lhs_Z, min_Z logical :: include_this_rate, already_included_from_weaklib, found_it, is_weak integer, dimension(max_species_per_reaction) :: pspecies character(len=max_id_length) :: handle @@ -662,7 +662,6 @@ end subroutine extract_rates_from_reaclib ! Fowler, Caughlan, Zimmerman, Annual Review Astro. Astrophys., 1975.12:69-112. eqn (1). real(dp) function neutrino_Q(b1, b2) - use chem_def, only: chem_isos real(dp), intent(in) :: b1, b2 real(dp) :: sum, sum2 sum = b2 - b1 - 0.782d0 - 1.022d0 diff --git a/rates/private/reaclib_support.f90 b/rates/private/reaclib_support.f90 index bb49404a1..2917d7887 100644 --- a/rates/private/reaclib_support.f90 +++ b/rates/private/reaclib_support.f90 @@ -704,7 +704,6 @@ end function two_two subroutine do_n_to_m(n,m) integer, intent(in) :: n, m ! each is either 1 or 2 - integer :: j in1 = 0; in2 = 0; out1 = 0; out2 = 0 if (.not. reverse) then in1 = pspecies(1) diff --git a/rates/private/screen5.f90 b/rates/private/screen5.f90 index cda687f3c..c0564d665 100644 --- a/rates/private/screen5.f90 +++ b/rates/private/screen5.f90 @@ -124,7 +124,7 @@ subroutine fxt_screen5(sc, zs13, zhat, zhat2, lzav, aznut, zs13inv, & tau12, tau12dt, alph12, alph12dt, alph12dd, & xlgfac, dxlgfacdt, dxlgfacdd, & gamp14, gamp14dt, gamp14dd, h12x, dh12xdt, dh12xdd, & - gamefx, gamefs, alfa, beta, temp, den, zbar, abar, z2bar,& + gamefx, gamefs, temp, den, zbar, abar, z2bar,& dgamma !..screening variables diff --git a/rates/private/screen_chugunov.f90 b/rates/private/screen_chugunov.f90 index 9cc9eb924..12d6402dd 100644 --- a/rates/private/screen_chugunov.f90 +++ b/rates/private/screen_chugunov.f90 @@ -101,15 +101,15 @@ subroutine eval_screen_chugunov(sc, z1, z2, a1, a2, screen, dscreendt, dscreendd real(dp) :: a_e !< electron sphere radius real(dp) :: a_b !< bohr radius real(dp) :: rs !< ion sphere radius normalised to bohr radius - real(dp) :: m1, m2 !< ion masses - real(dp) :: n1, n2 !< number density of ions of types 1 and 2 + !real(dp) :: m1, m2 !< ion masses + !real(dp) :: n1, n2 !< number density of ions of types 1 and 2 real(dp) :: ntot, dntotdd !< total number density of these ions - real(dp) :: s !< evaluated sigmoid function + !real(dp) :: s !< evaluated sigmoid function real(dp) :: mav !< average ion mass real(dp) :: A, B, C, U, dAdt, dAdd, dBdt, dBdd, dCdt, dCdd real(dp) :: temp, rho, abar, zbar, rr - real(dp) :: alpha, dalphadgam, dbetadgam, dalphadh0, dbetadh0, dalphadtn,dbetadtn - real(dp) :: tk, dtkdt, dtkdd, dtk2_dtp2dd + real(dp) :: alpha, dalphadgam, dbetadgam, dalphadtn,dbetadtn + real(dp) :: tk, dtkdt, dtkdd ! check whether both reactants are charged ions diff --git a/rates/private/suzuki_tables.f90 b/rates/private/suzuki_tables.f90 index ecbbc8b9c..482c32f56 100644 --- a/rates/private/suzuki_tables.f90 +++ b/rates/private/suzuki_tables.f90 @@ -98,14 +98,13 @@ subroutine interpolate_suzuki_table(table, T9, lYeRho, & real(dp), intent(out) :: Qneu, dQneu_dlnT, dQneu_dlnRho integer, intent(out) :: ierr - integer :: ix, jy ! target cell in the spline data - real(dp) :: x0, xget, x1 ! x0 <= xget <= x1; x0 = xs(ix), x1 = xs(ix+1) - real(dp) :: y0, yget, y1 ! y0 <= yget <= y1; y0 = ys(jy), y1 = ys(jy+1) + integer :: ix, jy ! target cell in the spline data + real(dp) :: x0, x1 ! x0 <= xget <= x1; x0 = xs(ix), x1 = xs(ix+1) + real(dp) :: y0, y1 ! y0 <= yget <= y1; y0 = ys(jy), y1 = ys(jy+1) real(dp) :: logT real(dp) :: delta_logT, dlogT, dlYeRho, delta_lYeRho, y_alfa, y_beta, x_alfa, x_beta - integer :: ilogT, ilYeRho real(dp) :: ldecay, d_ldecay_dlogT, d_ldecay_dlYeRho, & lcapture, d_lcapture_dlogT, d_lcapture_dlYeRho, & @@ -233,8 +232,7 @@ subroutine interpolate_suzuki_table(table, T9, lYeRho, & contains subroutine find_location ! set ix, jy; x is logT; y is lYeRho - integer i, j - real(dp) :: del + integer :: i, j include 'formats' ! x0 <= logT <= x1 ix = table % num_T-1 ! since weak_num_logT is small, just do a linear search @@ -351,7 +349,7 @@ end subroutine interpolate_suzuki_table subroutine private_load_suzuki_tables(ierr) use utils_lib - use hdf5io_lib + use forum_m, only: hdf5io_t, OPEN_FILE_RO use chem_lib, only: chem_get_iso_id use chem_def, only: iso_name_length @@ -365,8 +363,6 @@ subroutine private_load_suzuki_tables(ierr) integer :: num_suzuki_reactions integer :: i - character(len=2*iso_name_length+1) :: key - logical, parameter :: dbg = .false. if (dbg) write(*,*) 'private_load_suzuki_tables' diff --git a/rates/private/weaklib_tables.f90 b/rates/private/weaklib_tables.f90 index 80a9e3de4..eb763b4a4 100644 --- a/rates/private/weaklib_tables.f90 +++ b/rates/private/weaklib_tables.f90 @@ -56,7 +56,6 @@ module weaklib_tables function new_weaklib_rate_table(T9s, lYeRhos) real(dp), intent(in), dimension(:) :: T9s, lYeRhos type(weaklib_rate_table) :: new_weaklib_rate_table - integer :: N new_weaklib_rate_table% num_T9 = size(T9s) allocate(new_weaklib_rate_table% T9s(new_weaklib_rate_table% num_T9)) @@ -206,7 +205,6 @@ subroutine interpolate_weaklib_table(table, T9, lYeRho, & real(dp) :: yp, ypi, yp2, ypi2, cy, cyi, hy2, cyd, cydi, hy, hyi real(dp) :: delta_T9, dT9, dlYeRho, delta_lYeRho, y_alfa, y_beta, x_alfa, x_beta - integer :: iT9, ilYeRho real(dp) :: ldecay, d_ldecay_dT9, d_ldecay_dlYeRho, & lcapture, d_lcapture_dT9, d_lcapture_dlYeRho, & @@ -275,8 +273,7 @@ subroutine interpolate_weaklib_table(table, T9, lYeRho, & contains subroutine find_location ! set ix, jy; x is T9; y is lYeRho - integer i, j - real(dp) :: del + integer :: i, j include 'formats' ! x0 <= T9 <= x1 ix = table % num_T9-1 ! since weak_num_T9 is small, just do a linear search @@ -302,8 +299,6 @@ subroutine find_location ! set ix, jy; x is T9; y is lYeRho end subroutine find_location subroutine setup_for_bicubic_interpolations - integer i, j - real(dp) :: del include 'formats' diff --git a/rates/public/rates_def.f90 b/rates/public/rates_def.f90 index 82497746c..7f5e2c82a 100644 --- a/rates/public/rates_def.f90 +++ b/rates/public/rates_def.f90 @@ -928,7 +928,7 @@ subroutine create_skip_warnings_dict(ierr) use utils_def integer, intent(out) :: ierr - integer :: iounit, n, i, t, id, read_int + integer :: iounit, n, i, t character (len=256) :: buffer, string, filename, list_filename ierr = 0 @@ -1006,7 +1006,6 @@ end function reaclib_reverse subroutine weaklib_init(ierr) use const_def, only: mesa_data_dir integer, intent(out) :: ierr - integer :: i ierr = 0 weak_data_dir = trim(mesa_data_dir) // '/rates_data' nullify(weak_reactions_dict) @@ -1044,8 +1043,6 @@ end subroutine free_weak_info subroutine ecapture_init(ierr) - use const_def, only: mesa_data_dir - integer, intent(out) :: ierr ierr = 0 @@ -1149,8 +1146,7 @@ end subroutine free_reaction_data subroutine do_start_rates_def_init(ierr) use math_lib - integer, intent(out) :: ierr - integer :: i + integer, intent(out) :: ierr ierr = 0 call set_rattab_range(5.30102999566398d0, 10.301029995664d0) @@ -1193,7 +1189,6 @@ integer function get_rates_reaction_id(reaction_name) result(value) use utils_lib, only: integer_dict_lookup character (len=*), intent(in) :: reaction_name integer :: ierr - integer :: indx ierr = 0 call integer_dict_lookup(reaction_names_dict, reaction_name, value, ierr) if (ierr /= 0) value = 0 diff --git a/rates/public/rates_lib.f90 b/rates/public/rates_lib.f90 index 1ad47eaae..8cad1e0ae 100644 --- a/rates/public/rates_lib.f90 +++ b/rates/public/rates_lib.f90 @@ -370,7 +370,6 @@ end subroutine rates_two_to_one_coeffs_for_reverse_factor ! i.e., A + B -> C exothermic subroutine rates_two_to_one_reverse_factor( & Q, T9, T932, iso_A, iso_B, iso_C, rev, d_rev_dT, ierr) ! A + B <-> C - use chem_def, only: chem_isos use math_lib real(dp), intent(in) :: Q, T9, T932 integer, intent(in) :: iso_A, iso_B, iso_C @@ -417,7 +416,6 @@ end subroutine rates_two_to_two_coeffs_for_reverse_factor ! i.e., A + B -> C + D exothermic subroutine rates_two_to_two_reverse_factor( & Q, T9, iso_A, iso_B, iso_C, iso_D, rev, d_rev_dT, ierr) ! A + B <-> C + D - use chem_def, only: chem_isos use math_lib real(dp), intent(in) :: Q, T9 integer, intent(in) :: iso_A, iso_B, iso_C, iso_D diff --git a/rates/test/src/test_ecapture.f90 b/rates/test/src/test_ecapture.f90 index 34ce68fdb..9d9e9bbdd 100644 --- a/rates/test/src/test_ecapture.f90 +++ b/rates/test/src/test_ecapture.f90 @@ -152,12 +152,12 @@ subroutine do_test_special_weak(use_special) logical, intent(in) :: use_special - real(dp) :: Rho, T, Pgas, log10Rho, log10T + real(dp) :: Rho, T, log10Rho, log10T real(dp), dimension(num_eos_basic_results) :: res, d_dlnd, d_dlnT real(dp), dimension(num_eos_d_dxa_results, species) :: d_dxa integer :: ierr - integer :: i, ir, nr + integer :: i, nr integer, pointer :: ids(:), reaction_ids(:) type(Coulomb_Info), pointer :: cc @@ -165,9 +165,8 @@ subroutine do_test_special_weak(use_special) lambda, dlambda_dlnT, dlambda_dlnRho, & Q, dQ_dlnT, dQ_dlnRho, & Qneu, dQneu_dlnT, dQneu_dlnRho - real(dp) :: lntwo, logT, T9, dT9, dlnT, YeRho, & - ye, logRho, dlogRho, eta, d_eta_dlnT, d_eta_dlnRho, & - Prad, energy, entropy + real(dp) :: logT, T9, YeRho, & + ye, logRho, eta, d_eta_dlnT, d_eta_dlnRho character(len=iso_name_length), dimension(2) :: weak_lhs, weak_rhs allocate(cc) @@ -271,7 +270,7 @@ subroutine Init_Composition use chem_def use chem_lib - real(dp) :: frac, dabar_dx(species), dzbar_dx(species), & + real(dp) :: dabar_dx(species), dzbar_dx(species), & sumx, xh, xhe, xz, mass_correction, dmc_dx(species) allocate(net_iso(num_chem_isos), chem_id(species), stat=ierr) diff --git a/rates/test/src/test_rates.f90 b/rates/test/src/test_rates.f90 index 3e795eeaa..bb4b7670d 100644 --- a/rates/test/src/test_rates.f90 +++ b/rates/test/src/test_rates.f90 @@ -41,8 +41,7 @@ module test_rates_support subroutine setup use chem_def - integer :: ierr, iso_A, iso_B, iso_C, iso_D - real(dp) :: W_A, W_B, W_C, W_D, a, b, g_A, g_B, g_C, g_D, Q + integer :: ierr character (len=32) :: my_mesa_dir include 'formats' @@ -91,8 +90,8 @@ subroutine do_test_rates() integer :: ierr type (T_Factors), target :: tf_rec type (T_Factors), pointer :: tf - real(dp) :: logT, temp, raw_rate - integer :: i, t,ir + real(dp) :: logT, temp + integer :: i, t integer :: nrates_to_eval integer, allocatable :: irs(:) @@ -163,7 +162,7 @@ subroutine test1 type (T_Factors), target :: tf_rec type (T_Factors), pointer :: tf real(dp) :: logT, temp, raw_rate, raw_rate1, raw_rate2 - integer :: i, ir + integer :: ir logical, parameter :: dbg = .false. include 'formats' @@ -246,7 +245,7 @@ subroutine do_test_rate_table type (T_Factors), target :: tf_rec type (T_Factors), pointer :: tf real(dp) :: logT, temp, raw_rate - integer :: i, ir + integer :: ir logical, parameter :: dbg = .false. include 'formats' diff --git a/rates/test/src/test_screen.f90 b/rates/test/src/test_screen.f90 index 2533bf7bb..cb880a7a2 100644 --- a/rates/test/src/test_screen.f90 +++ b/rates/test/src/test_screen.f90 @@ -42,16 +42,14 @@ subroutine do_test_screen use math_lib integer, parameter :: num_isos = 8, max_z_to_cache = 12 - integer :: chem_id(num_isos), i1, i2, jscr, ierr + integer :: chem_id(num_isos), i1, i2, ierr integer, pointer :: net_iso(:) real(dp) :: xin(num_isos), y(num_isos), iso_z(num_isos), xz, abar, zbar, z2bar, z53bar, ye, sumx, & dabar_dx(num_isos), dzbar_dx(num_isos), temp, den, logT, logRho, & sc1a, sc1adt, sc1add, xh, xhe, dmc_dx(num_isos), iso_z158(num_isos) type (Screen_Info) :: sc - real(dp) :: zg1, zg2, zg3, zg4 real(dp) :: zs13, zhat, zhat2, lzav, aznut, zs13inv, mass_correction!approx_abar, approx_zbar - integer :: screening_mode, i - character(len=256) :: scr_option_str + integer :: i integer :: h1, he3, he4, c12, n14, o16, ne20, mg24 character (len=32) :: my_mesa_dir diff --git a/rates/test/src/test_weak.f90 b/rates/test/src/test_weak.f90 index 2ff2d7968..39d69d1e0 100644 --- a/rates/test/src/test_weak.f90 +++ b/rates/test/src/test_weak.f90 @@ -47,13 +47,11 @@ subroutine do_test_weak lambda, dlambda_dlnT, dlambda_dlnRho, & Q, dQ_dlnT, dQ_dlnRho, & Qneu, dQneu_dlnT, dQneu_dlnRho - real(dp) :: logT, T, T9, dT9, dlnT, YeRho, & - ye, rho, logRho, dlogRho, eta, d_eta_dlnT, d_eta_dlnRho + real(dp) :: logT, T, T9, YeRho, & + ye, rho, logRho, eta, d_eta_dlnT, d_eta_dlnRho character(len=iso_name_length) :: weak_lhs, weak_rhs character(len=2*iso_name_length+1) :: key - real(dp) :: abar, zbar, z2bar - real(dp) :: dvardx, dvardx_0, dx_0, err, var_0, xdum logical :: doing_d_dlnd diff --git a/release b/release index a69bf3098..ac58efbaf 100755 --- a/release +++ b/release @@ -1,15 +1,32 @@ #!/bin/bash VERSION="$1" +echo "Preparing to release MESA version ${VERSION}" -if [[ ! -n ${VERSION}} ]]; then - echo 'Please specify version number' +if [[ ! -n ${VERSION} ]]; then + echo "Error: Please specify version number. E.g. r2X.YY.Z or r2X.YY.Z-rcA" exit 1 fi +if [[ ! ${VERSION} == r* ]]; then + echo "Error: Version number must start with 'r'. E.g. r2X.YY.Z or r2X.YY.Z-rcA" + exit 1 +fi + +# check that the changelog has been updated +if ! grep -q "Changes in ${VERSION}" docs/source/changelog.rst; then + echo "Error: Please update the changelog by moving 'Changes in main' to a new section called 'Changes in ${VERSION}' and add a new 'Changes in main' section at the top of the file following 'changelog_template.rst'. Make sure this change is commited in the 'main' development branch of MESA." + exit 1 +fi + +# strip the r and hypen from version number to create a PEP440 standard tag +TAG=${VERSION:1} +TAG=${TAG//-} +echo "The associated (PEP440) tag version ${VERSION} is: ${TAG}" + cd ${MESA_DIR} || exit 1 -# Do the work in a sperate branch +# Do the work in a seperate branch git checkout -b release/${VERSION} # Add version_number file @@ -21,16 +38,28 @@ sed -i "s/PROJECT_NUMBER\ \ \ .*/PROJECT_NUMBER\ \ \ \ \ \ \ \ \ =\ ${VERSION}/" git add Doxyfile # Update docs/source/conf.py -sed -i 's/release\ =.*/release\ =\ '"'${VERSION}'"'/' docs/source/conf.py -sed -i 's/version\ =.*/version\ =\ '"'${VERSION}'"'/' docs/source/conf.py +sed -i 's/release\ =.*/release\ =\ '"'${TAG}'"'/' docs/source/conf.py +sed -i 's/version\ =.*/version\ =\ '"'${TAG}'"'/' docs/source/conf.py git add docs/source/conf.py +# Update docs/source/changelog.rst +PATTERN1="This section describes changes present in the development" +PATTERN2="Before releasing a new version of MESA" +if grep -q "$PATTERN1" docs/source/changelog.rst; then + if grep -q "$PATTERN2" docs/source/changelog.rst; then + sed -i "/$PATTERN1/,/$PATTERN2/d" docs/source/changelog.rst + fi +fi + +git add docs/source/changelog.rst + +# Commit and tag the changes git commit -a -m "Release: ${VERSION}" -git tag ${VERSION} +git tag ${TAG} # Make the archive -git archive --prefix=mesa-${VERSION}/ --format=zip ${VERSION} > mesa-${VERSION}.zip +git archive --prefix=mesa-${VERSION}/ --format=zip ${TAG} > mesa-${VERSION}.zip echo "Now check the archive builds before pushing the changes" @@ -38,5 +67,5 @@ exit 0 # Cleanup when testing git checkout main -git tag -d ${VERSION} +git tag -d ${TAG} git branch -D release/${VERSION} diff --git a/sample/src/sample.f90 b/sample/src/sample.f90 index 343be6249..9c7f74d02 100644 --- a/sample/src/sample.f90 +++ b/sample/src/sample.f90 @@ -9,7 +9,7 @@ ! by the Free Software Foundation; either version 2 of the License, or ! (at your option) any later version. ! -! MESA is distributed in the hope that it will be useful, +! MESA 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 Library General Public License for more details. @@ -20,208 +20,200 @@ ! ! *********************************************************************** - program sample_eos +program sample_eos + use eos_def + use eos_lib + use chem_def + use chem_lib + use const_lib + use math_lib + + implicit none + + real(dp) :: X, Z, Y, abar, zbar, z2bar, z53bar, ye + integer, parameter :: species = 7 + integer, parameter :: h1 = 1, he4 = 2, c12 = 3, n14 = 4, o16 = 5, ne20 = 6, mg24 = 7 + integer, pointer, dimension(:) :: net_iso, chem_id + real(dp) :: xa(species) + character(len=256) :: my_mesa_dir + + call Sample + +contains + + subroutine Sample + + integer :: handle + real(dp) :: Rho, T, Pgas, log10Rho, log10T + real(dp) :: dlnRho_dlnPgas_const_T, dlnRho_dlnT_const_Pgas + real(dp), dimension(num_eos_basic_results) :: res, d_dlnd, d_dlnT + real(dp), dimension(num_eos_d_dxa_results, species) :: d_dxa + integer :: ierr + character(len=*), parameter :: fmt1 = "(a20, 3x, e20.12)" + + ierr = 0 + + my_mesa_dir = '..' ! if empty string, uses environment variable MESA_DIR + call const_init(my_mesa_dir, ierr) + if (ierr /= 0) then + write (*, *) 'const_init failed' + call mesa_error(__FILE__, __LINE__) + end if + + call math_init() + + call chem_init('isotopes.data', ierr) + if (ierr /= 0) then + write (*, *) 'failed in chem_init' + call mesa_error(__FILE__, __LINE__) + end if + + ! allocate and initialize the eos tables + call Setup_eos(handle) + + allocate (net_iso(num_chem_isos), chem_id(species), stat=ierr) + if (ierr /= 0) call mesa_error(__FILE__, __LINE__, 'allocate failed') + X = 0.70_dp + Z = 0.02_dp + call Init_Composition + + Rho = 1.3519d2 + log10T = 8.15_dp + T = exp10(log10T) + + ! get a set of results for given temperature and density + call eosDT_get( & + handle, & + species, chem_id, net_iso, xa, & + Rho, log10(Rho), T, log10T, & + res, d_dlnd, d_dlnT, & + d_dxa, ierr) + + Pgas = exp(res(i_lnPgas)) + + ! the indices for the results are defined in eos_def.f + write (*, '(A)') + write (*, fmt1) 'temperature', T + write (*, fmt1) 'density', Rho + write (*, fmt1) 'logT', log10T + write (*, fmt1) 'logRho', log10(Rho) + write (*, '(A)') + write (*, fmt1) 'Z', Z + write (*, fmt1) 'X', X + write (*, fmt1) 'abar', abar + write (*, fmt1) 'zbar', zbar + write (*, '(A)') + write (*, fmt1) 'Pgas', Pgas + write (*, fmt1) 'logPgas', res(i_lnPgas)/ln10 + write (*, fmt1) 'grad_ad', res(i_grad_ad) + write (*, fmt1) 'c_P', res(i_Cp) + write (*, '(A)') + + call eosPT_get( & + handle, & + species, chem_id, net_iso, xa, & + Pgas, log10(Pgas), T, log10(T), & + Rho, log10Rho, dlnRho_dlnPgas_const_T, dlnRho_dlnT_const_Pgas, & + res, d_dlnd, d_dlnT, d_dxa, ierr) + + ! the indices for the results are defined in eos_def.f + write (*, '(A)') + write (*, fmt1) 'temperature', T + write (*, fmt1) 'Pgas', Pgas + write (*, fmt1) 'logT', log10(T) + write (*, fmt1) 'logPgas', res(i_lnPgas)/ln10 + write (*, '(A)') + write (*, fmt1) 'Z', Z + write (*, fmt1) 'X', X + write (*, fmt1) 'abar', abar + write (*, fmt1) 'zbar', zbar + write (*, '(A)') + write (*, fmt1) 'density', Rho + write (*, fmt1) 'logRho', log10Rho + write (*, fmt1) 'grad_ad', res(i_grad_ad) + write (*, fmt1) 'c_P', res(i_Cp) + write (*, '(A)') + + ! deallocate the eos tables + call Shutdown_eos(handle) + + deallocate (net_iso, chem_id) + + if (ierr /= 0) then + write (*, *) 'bad result from eos_get' + call mesa_error(__FILE__, __LINE__) + end if + + end subroutine Sample + + subroutine Setup_eos(handle) + ! allocate and load the eos tables use eos_def use eos_lib - use chem_def + integer, intent(out) :: handle + + integer :: ierr + logical, parameter :: use_cache = .true. + + call eos_init('', use_cache, ierr) + if (ierr /= 0) then + write (*, *) 'eos_init failed in Setup_eos' + call mesa_error(__FILE__, __LINE__) + end if + + write (*, *) 'loading eos tables' + + handle = alloc_eos_handle(ierr) + if (ierr /= 0) then + write (*, *) 'failed trying to allocate eos handle' + call mesa_error(__FILE__, __LINE__) + end if + + end subroutine Setup_eos + + subroutine Shutdown_eos(handle) + use eos_def + use eos_lib + integer, intent(in) :: handle + call free_eos_handle(handle) + call eos_shutdown + end subroutine Shutdown_eos + + subroutine Init_Composition use chem_lib - use const_lib - use math_lib - - implicit none - - real(dp) :: X, Z, Y, abar, zbar, z2bar, z53bar, ye - integer, parameter :: species = 7 - integer, parameter :: h1=1, he4=2, c12=3, n14=4, o16=5, ne20=6, mg24=7 - integer, pointer, dimension(:) :: net_iso, chem_id - real(dp) :: xa(species) - character (len=256) :: my_mesa_dir - - - call Sample - - contains - - subroutine Sample - - integer :: handle - real(dp) :: Rho, T, Pgas, log10Rho, log10T, Prad, energy, entropy - real(dp) :: dlnRho_dlnPgas_const_T, dlnRho_dlnT_const_Pgas, d_dlnRho_const_T, d_dlnT_const_Rho - real(dp), dimension(num_eos_basic_results) :: res, d_dlnd, d_dlnT, d_dabar, d_dzbar - real(dp), dimension(num_eos_d_dxa_results, species) :: d_dxa - integer :: ierr - - ierr = 0 - - my_mesa_dir = '..' ! if empty string, uses environment variable MESA_DIR - call const_init(my_mesa_dir,ierr) - if (ierr /= 0) then - write(*,*) 'const_init failed' - call mesa_error(__FILE__,__LINE__) - end if - - call math_init() - - call chem_init('isotopes.data', ierr) - if (ierr /= 0) then - write(*,*) 'failed in chem_init' - call mesa_error(__FILE__,__LINE__) - end if - - ! allocate and initialize the eos tables - call Setup_eos(handle) - - allocate(net_iso(num_chem_isos), chem_id(species), stat=ierr) - if (ierr /= 0) call mesa_error(__FILE__,__LINE__,'allocate failed') - X = 0.70_dp - Z = 0.02_dp - call Init_Composition - - Rho = 1.3519d2 - log10T = 8.15_dp - T = exp10(log10T) - - ! get a set of results for given temperature and density - call eosDT_get( & - handle, & - species, chem_id, net_iso, xa, & - Rho, log10(Rho), T, log10T, & - res, d_dlnd, d_dlnT, & - d_dxa, ierr) - - - 1 format(a20,3x,e20.12) - - Pgas = exp(res(i_lnPgas)) - - ! the indices for the results are defined in eos_def.f - write(*,'(A)') - write(*,1) 'temperature', T - write(*,1) 'density', Rho - write(*,1) 'logT', log10T - write(*,1) 'logRho', log10(Rho) - write(*,'(A)') - write(*,1) 'Z', Z - write(*,1) 'X', X - write(*,1) 'abar', abar - write(*,1) 'zbar', zbar - write(*,'(A)') - write(*,1) 'Pgas', Pgas - write(*,1) 'logPgas', res(i_lnPgas)/ln10 - write(*,1) 'grad_ad', res(i_grad_ad) - write(*,1) 'c_P', res(i_Cp) - write(*,'(A)') - - call eosPT_get( & - handle, & - species, chem_id, net_iso, xa, & - Pgas, log10(Pgas), T, log10(T), & - Rho, log10Rho, dlnRho_dlnPgas_const_T, dlnRho_dlnT_const_Pgas, & - res, d_dlnd, d_dlnT, d_dxa, ierr) - - ! the indices for the results are defined in eos_def.f - write(*,'(A)') - write(*,1) 'temperature', T - write(*,1) 'Pgas', Pgas - write(*,1) 'logT', log10(T) - write(*,1) 'logPgas', res(i_lnPgas)/ln10 - write(*,'(A)') - write(*,1) 'Z', Z - write(*,1) 'X', X - write(*,1) 'abar', abar - write(*,1) 'zbar', zbar - write(*,'(A)') - write(*,1) 'density', Rho - write(*,1) 'logRho', log10Rho - write(*,1) 'grad_ad', res(i_grad_ad) - write(*,1) 'c_P', res(i_Cp) - write(*,'(A)') - - ! deallocate the eos tables - call Shutdown_eos(handle) - - deallocate(net_iso, chem_id) - - if (ierr /= 0) then - write(*,*) 'bad result from eos_get' - call mesa_error(__FILE__,__LINE__) - end if - - end subroutine Sample - - - subroutine Setup_eos(handle) - ! allocate and load the eos tables - use eos_def - use eos_lib - integer, intent(out) :: handle - - integer :: ierr - logical, parameter :: use_cache = .true. - - call eos_init('', use_cache, ierr) - if (ierr /= 0) then - write(*,*) 'eos_init failed in Setup_eos' - call mesa_error(__FILE__,__LINE__) - end if - - write(*,*) 'loading eos tables' - - handle = alloc_eos_handle(ierr) - if (ierr /= 0) then - write(*,*) 'failed trying to allocate eos handle' - call mesa_error(__FILE__,__LINE__) - end if - - end subroutine Setup_eos - - - subroutine Shutdown_eos(handle) - use eos_def - use eos_lib - integer, intent(in) :: handle - call free_eos_handle(handle) - call eos_shutdown - end subroutine Shutdown_eos - - - subroutine Init_Composition - use chem_lib - - real(dp), parameter :: Zfrac_C = 0.173312d0 - real(dp), parameter :: Zfrac_N = 0.053177d0 - real(dp), parameter :: Zfrac_O = 0.482398d0 - real(dp), parameter :: Zfrac_Ne = 0.098675d0 - - real(dp) :: frac, dabar_dx(species), dzbar_dx(species), & - sumx, xh, xhe, xz, mass_correction, dmc_dx(species) - - net_iso(:) = 0 - - chem_id(h1) = ih1; net_iso(ih1) = h1 - chem_id(he4) = ihe4; net_iso(ihe4) = he4 - chem_id(c12) = ic12; net_iso(ic12) = c12 - chem_id(n14) = in14; net_iso(in14) = n14 - chem_id(o16) = io16; net_iso(io16) = o16 - chem_id(ne20) = ine20; net_iso(ine20) = ne20 - chem_id(mg24) = img24; net_iso(img24) = mg24 - - Y = 1 - (X + Z) - - xa(h1) = X - xa(he4) = Y - xa(c12) = Z * Zfrac_C - xa(n14) = Z * Zfrac_N - xa(o16) = Z * Zfrac_O - xa(ne20) = Z * Zfrac_Ne - xa(species) = 1 - sum(xa(1:species-1)) - - call composition_info( & - species, chem_id, xa, xh, xhe, xz, abar, zbar, z2bar, z53bar, ye, & - mass_correction, sumx, dabar_dx, dzbar_dx, dmc_dx) - - end subroutine Init_Composition - - - end + real(dp), parameter :: Zfrac_C = 0.173312d0 + real(dp), parameter :: Zfrac_N = 0.053177d0 + real(dp), parameter :: Zfrac_O = 0.482398d0 + real(dp), parameter :: Zfrac_Ne = 0.098675d0 + + real(dp) :: dabar_dx(species), dzbar_dx(species), & + sumx, xh, xhe, xz, mass_correction, dmc_dx(species) + + net_iso(:) = 0 + + chem_id(h1) = ih1; net_iso(ih1) = h1 + chem_id(he4) = ihe4; net_iso(ihe4) = he4 + chem_id(c12) = ic12; net_iso(ic12) = c12 + chem_id(n14) = in14; net_iso(in14) = n14 + chem_id(o16) = io16; net_iso(io16) = o16 + chem_id(ne20) = ine20; net_iso(ine20) = ne20 + chem_id(mg24) = img24; net_iso(img24) = mg24 + + Y = 1 - (X + Z) + + xa(h1) = X + xa(he4) = Y + xa(c12) = Z*Zfrac_C + xa(n14) = Z*Zfrac_N + xa(o16) = Z*Zfrac_O + xa(ne20) = Z*Zfrac_Ne + xa(species) = 1 - sum(xa(1:species - 1)) + + call composition_info( & + species, chem_id, xa, xh, xhe, xz, abar, zbar, z2bar, z53bar, ye, & + mass_correction, sumx, dabar_dx, dzbar_dx, dmc_dx) + + end subroutine Init_Composition + +end diff --git a/scripts/shmesa/shmesa b/scripts/shmesa/shmesa index 3c31e80f4..fc2b5e596 100755 --- a/scripts/shmesa/shmesa +++ b/scripts/shmesa/shmesa @@ -113,28 +113,26 @@ shmesa_change () { # Create a backup of the inlist before making any changes backup_copy "$filename" "${filename}.bak" - - local ESCAPE="s#[^^]#[&]#g; s#\^#\\^#g" # sed escape string - # iterate through parameter,value pairs in the supplied input + while [[ -n $1 && -n $2 ]]; do local param=$1 local newval=$2 shift 2 - local escapedParam=$(sed "$ESCAPE" <<< "$param") - local search="^\s*\!*\s*$escapedParam\s*=.+$" + local search="^\s*\!*\s*\b${param}\b\s*=.*$" local replace=" $param = $newval" # Check if the parameter is present in the inlist - if ! grep -q "$param" "$filename"; then + if ! grep -qw "$param" "$filename"; then echo "Error: Parameter '$param' not found in the inlist '$filename'." backup_restore "$filename" return 1 fi # Update its value - sed -r -i -e "s#$search#$replace#g" "$filename" + perl -i -pe "s/$search/$replace/" "$filename" done + } @@ -162,20 +160,17 @@ shmesa_defaults () { cp "$MESA_DIR/star/defaults/history_columns.list" . fi - local ESCAPE="s#[^^]#[&]#g; s#\^#\\^#g" # sed escape string - # Uncomment the specified parameters while [[ -n $1 ]]; do local param=$1 shift - local escapedParam=$(sed "$ESCAPE" <<< "$param") - local search="^\s*\!*\s*$escapedParam\s*.+$" - local replace=" $param" + local search="^\s*\!${param}\b(\s*.*)?$" + local replace=" $param\$1" - if grep -q "$param" profile_columns.list || \ - grep -q "$param" history_columns.list; then - sed -r -i -e "s#$search#$replace#g" profile_columns.list - sed -r -i -e "s#$search#$replace#g" history_columns.list + if grep -q -w "$param" profile_columns.list; then + perl -i -pe "s/$search/$replace/g" profile_columns.list + elif grep -q -w "$param" history_columns.list; then + perl -i -pe "s/$search/$replace/g" history_columns.list else echo "Warning: Parameter '$param' not found in either profile_columns.list or history_columns.list." fi @@ -253,7 +248,7 @@ shmesa_zip () { echo "Warning: No inlist files found in the directory '$dir_to_zip'." fi - zip -r "$zip_name" "$dir_to_zip" -x "*/make/*mod" "*/make/*.o" "*.bak" "*star" "*binary" "*LOGS*" "*photos*" "*png*" "*.mesa_temp_cache" + zip -r "$zip_name" "$dir_to_zip" -x "*/make/*mod" "*/make/*.o" "*.bak" "star" "binary" "*LOGS*" "*photos*" "*png*" "*.mesa_temp_cache" } @@ -274,10 +269,10 @@ shmesa_extras () { echo "Cannot find $MESA_DIR/include/standard_run_star_extras.inc" return 1 fi - contents=$(sed 's:|:\\|:g' "$MESA_DIR/include/standard_run_star_extras.inc" | sed -z 's:\n:\\n:g') + contents=$(perl -pe 's/:/\\:/g; s/\n/\\n/g' "$MESA_DIR/include/standard_run_star_extras.inc") backup_copy "$rse" "$rse".bak - sed -i "s| include 'standard_run_star_extras.inc'|$contents|" $rse + perl -i -pe "s| include 'standard_run_star_extras.inc'|$contents|g" "$rse" } @@ -346,7 +341,7 @@ shmesa_test () { pgstar_flag .false. && \ shmesa change inlist_project \ initial_mass 1.2 \ - Z 0.01 \ + initial_z 0.01 \ Zbase 0.01)" # shmesa defaults diff --git a/scripts/stash.py b/scripts/stash.py index 06363af26..b141130af 100755 --- a/scripts/stash.py +++ b/scripts/stash.py @@ -1,93 +1,109 @@ #!/usr/bin/python from datetime import datetime -from shutil import copytree, copyfile, ignore_patterns +from shutil import copytree, copyfile from glob import glob from os.path import isfile, getmtime from os import remove, removedirs import argparse -parser = argparse.ArgumentParser(description='Store a MESA experiment.') -parser.add_argument('-p', metavar='p', type=str, default=None, help='Specifies the starting photo.') -parser.add_argument('-N', metavar='N', type=int, default=5, help='The first N and last N photos by modified-time will be stashed.') -parser.add_argument('-m', metavar='m', type=str, default='', help='Notes about the experiment.') -parser.add_argument('--png', action='store_true', help='Stash png files. If specified png files will be stashed and then removed from the working directory.') +parser = argparse.ArgumentParser(description="Store a MESA experiment.") +parser.add_argument( + "-p", metavar="p", type=str, default=None, help="Specifies the starting photo." +) +parser.add_argument( + "-N", + metavar="N", + type=int, + default=5, + help="The first N and last N photos by modified-time will be stashed.", +) +parser.add_argument( + "-m", metavar="m", type=str, default="", help="Notes about the experiment." +) +parser.add_argument( + "--png", + action="store_true", + help="Stash png files. If specified png files will be stashed and then removed from the working directory.", +) args = parser.parse_args() # Name the experiment now = datetime.now() -time = now.strftime('%Y_%m_%d_%H_%M_%S') -experiment_name = 'experiment_' + time -experiment_folder = 'experiments/'+experiment_name +time = now.strftime("%Y_%m_%d_%H_%M_%S") +experiment_name = "experiment_" + time +experiment_folder = "experiments/" + experiment_name copied_pngs = [] + # Stash everything that isn't a png, movie, photo, or compiled binary file. def ignore(path, names): - global copied_pngs + global copied_pngs - if './experiments' in path or './photos' in path or '__pycachce__' in path: - return names - ig = set() + if "./experiments" in path or "./photos" in path or "__pycachce__" in path: + return names + ig = set() - if not args.png: - # Ignore png's - ig.update(n for n in names if n[-4:] == '.png') - else: - # Note which png's were copied so we can remove them later. - copied_pngs = copied_pngs + list(path + '/' + n for n in names if n[-4:] == '.png') + if not args.png: + # Ignore png's + ig.update(n for n in names if n[-4:] == ".png") + else: + # Note which png's were copied so we can remove them later. + copied_pngs = copied_pngs + list( + path + "/" + n for n in names if n[-4:] == ".png" + ) - ig.update(n for n in names if n[-4:] == '.mov') - ig.update(n for n in names if n[-2:] == '.o') - ig.update(n for n in names if n[-4:] == '.mod' and path == './make') - ig.update(n for n in names if n[-5:] == '.smod') - ig.update(n for n in names if n == 'star') - ig.update(n for n in names if n == 'stash.py') - return ig + ig.update(n for n in names if n[-4:] == ".mov") + ig.update(n for n in names if n[-2:] == ".o") + ig.update(n for n in names if n[-4:] == ".mod" and path == "./make") + ig.update(n for n in names if n[-5:] == ".smod") + ig.update(n for n in names if n == "star") + ig.update(n for n in names if n == "stash.py") + return ig -copytree('./', experiment_folder, ignore=ignore) +copytree("./", experiment_folder, ignore=ignore) # Stash the first N photos and the last N photos by last-modified time. N = args.N -photo_dir = glob('photos/*') +photo_dir = glob("photos/*") photos = list(photo for photo in photo_dir if isfile(photo)) photo_times = list(getmtime(photo) for photo in photos) photos_and_times = zip(*(photos, photo_times)) sorted_photos = sorted(photos_and_times, key=lambda x: x[1]) sorted_photos = list(photo[0] for photo in sorted_photos) -ending_photo = sorted_photos[-1].lstrip('./photos/') +ending_photo = sorted_photos[-1].lstrip("./photos/") to_stash = list(set(sorted_photos[:N] + sorted_photos[-N:])) # Stash the starting photo, if specified if args.p is not None: - to_stash.append('photos/' + args.p) - to_stash = list(set(to_stash)) + to_stash.append("photos/" + args.p) + to_stash = list(set(to_stash)) for photo in to_stash: - copyfile(photo, experiment_folder + '/' + photo) + copyfile(photo, experiment_folder + "/" + photo) # Record experiment notes -with open('experiments/' + experiment_name + '.md','w') as log: - log.write('## ' + experiment_name + '\n') - if args.p is not None: - log.write('- Starting photo: ' + args.p + '\n') - log.write('- Ending photo: ' + ending_photo + '\n') - if args.m != '': - log.write(args.m + '\n') - log.write('\n') +with open("experiments/" + experiment_name + ".md", "w") as log: + log.write("## " + experiment_name + "\n") + if args.p is not None: + log.write("- Starting photo: " + args.p + "\n") + log.write("- Ending photo: " + ending_photo + "\n") + if args.m != "": + log.write(args.m + "\n") + log.write("\n") # Remove contents of LOGS -log_files = glob('LOGS/*') +log_files = glob("LOGS/*") for f in log_files: - if isfile(f): - remove(f) + if isfile(f): + remove(f) # If we stashed png's, remove those from the main directory. for f in copied_pngs: - remove(f) + remove(f) # Remove empty experiments directory from the new experiment -removedirs(experiment_folder + '/experiments') - -print('Stashed ' + experiment_name + '.') +removedirs(experiment_folder + "/experiments") +print("Stashed " + experiment_name + ".") diff --git a/star/defaults/FORMAT b/star/defaults/FORMAT index 38fa95f60..02a87603f 100644 --- a/star/defaults/FORMAT +++ b/star/defaults/FORMAT @@ -3,7 +3,7 @@ ! ============================== ! This document defines a format for MESA defaults files. - ! Because these files are compiled, documenation must be in commments. + ! Because these files are compiled, documentation must be in comments. ! After leading spaces and ! are stripped, this file should be valid ! reStructuredText (reST) so that it can rendered in the Sphinx docs. ! This file is written in the format it describes. diff --git a/star/defaults/controls.defaults b/star/defaults/controls.defaults index a70af6f1a..24b0915b9 100644 --- a/star/defaults/controls.defaults +++ b/star/defaults/controls.defaults @@ -542,7 +542,7 @@ ! Format originally defined for the GONG solar model project. A ! definition was given in 2005 for the `CoRoT/ESTA project`_ and ! `GONG itself `_. - ! MESA's implementation largely follows this subsequent + ! MESA's implementation largely follows this subsequent ! `2015 definition `_. ! ``'OSC'`` @@ -673,7 +673,7 @@ ! format_for_OSC_data ! ~~~~~~~~~~~~~~~~~~~ - ! float format for ``'OSC'`` data format + ! float format for ``'OSC'`` data format ! :: @@ -1338,7 +1338,7 @@ ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! envelope_fraction_left = (star_mass - he_core_mass)/(initial_mass - he_core_mass) - + ! Stop when ``envelope_fraction_left`` < this limit. ! :: @@ -1350,7 +1350,7 @@ ! ~~~~~~~~~~~~~~~~ ! xmstar = mstar - M_center - + ! stop when xmstar in grams is < this. <= 0 means no limit. ! :: @@ -1362,7 +1362,7 @@ ! ~~~~~~~~~~~~~~~~ ! xmstar = mstar - M_center - + ! stop when xmstar in grams is > this. <= 0 means no limit. ! :: @@ -1802,7 +1802,7 @@ ! fe_core_infall_mass ! ~~~~~~~~~~~~~~~~~~~ - ! Amount of mass to check if collapsing, the smaller this is the closer the velocity minima will be to ``fe_core_infall`` but there will be a greater chance of a + ! Amount of mass to check if collapsing, the smaller this is the closer the velocity minima will be to ``fe_core_infall`` but there will be a greater chance of a ! transistent velocity spike causing the model to prematurely exit. In solar masses @@ -1821,7 +1821,7 @@ ! non_fe_core_infall_mass ! ~~~~~~~~~~~~~~~~~~~~~~~ - ! Amount of mass to check if collapsing, the smaller this is the closer the velocity minima will be to ``non_fe_core_infall`` but there will be a greater chance of a + ! Amount of mass to check if collapsing, the smaller this is the closer the velocity minima will be to ``non_fe_core_infall`` but there will be a greater chance of a ! transistent velocity spike causing the model to prematurely exit. In solar masses @@ -1916,8 +1916,8 @@ ! :: stop_near_zams = .false. - - + + ! stop_at_phase_PreMS ! ~~~~~~~~~~~~~~~~~~~ ! stop_at_phase_ZAMS @@ -1945,10 +1945,14 @@ ! stop_at_phase_WDCS ! ~~~~~~~~~~~~~~~~~~ - ! if true, when phase of evolution reaches this point. + ! if true, terminate model when phase of evolution reaches this point. + ! Definitions for stop_at_phase_* can be found in + ! $MESA_DIR/star/private/star_utils.f90 inside the + ! subroutine ``set_phase_of_evolution`` + ! :: ! :: - + stop_at_phase_PreMS = .false. stop_at_phase_ZAMS = .false. stop_at_phase_IAMS = .false. @@ -1962,7 +1966,7 @@ stop_at_phase_O_Burn = .false. stop_at_phase_Si_Burn = .false. stop_at_phase_WDCS = .false. - + ! Lnuc_div_L_upper_limit ! ~~~~~~~~~~~~~~~~~~~~~~ @@ -2252,7 +2256,7 @@ ! If false, then stick to the usual definition -- P/(g*rho). ! If true, use min of the usual and sound speed * hydro time scale, sqrt(P/G)/rho. - ! Note that the 'TDC' ``MLT_option`` does not respect the ``alt_scale_height`` option, and continues to use ``h = P / rho g`` + ! Note that the 'TDC' ``MLT_option`` does not respect the ``alt_scale_height`` option, and continues to use ``h = P / rho g`` ! even if that flag is set. ! :: @@ -2301,6 +2305,15 @@ ! Note that TDC does not respect the ``alt_scale_height`` option, and continues to use ``h = P / rho g`` ! even if that flag is set. + ! We caution that combining different mixing models in a stellar evolution + ! calculation might lead to physically inconsistent solutions, + ! because the different models have been developed separately, + ! and their underlying assumptions might not be compatible with each other. + ! Examples include combining the newly implemented time-dependent local limit + ! convection model ``TDC`` with an overshooting model, or combining ``TDC`` + ! with other models for chemical composition gradients + ! (predictive mixing or convective premixing), rotation, etc. (MESA VI) + ! :: MLT_option = 'TDC' @@ -2368,7 +2381,6 @@ ! :: mlt_make_surface_no_mixing = .false. - ! T_mix_limit @@ -3108,7 +3120,7 @@ RSP_nz_outer = 40 RSP_T_anchor = 11d3 RSP_T_inner = 2d6 - RSP_testing = .false. + RSP_testing = .false. ! :: @@ -3355,7 +3367,7 @@ ! Mixing coefficients are multiplied by this factor. ! The ``mix_factor`` is applied in subroutine ``get_convection_sigmas`` in ``star/private/mix_info.f90`` -- ! the lagrangian diffusion coefficient sigma(k) at cell boundary k is set to - ! ``mix_factor*D*(4*pi*r(k)^2*rho_face(k))^2``. + ! ``mix_factor*D*(4*pi*r(k)^2*rho_face(k))^2``. ! Note that the value of D is not changed -- it is just used as a term in calculating sigma. ! :: @@ -3991,7 +4003,7 @@ ! use_other_j_for_adjust_J_lost option to specify a specific angular momentum ! of removed material different from j_rot_surf - ! In order to prevent the algorithm from digging to deep to adjust J, + ! In order to prevent the algorithm from digging to deep to adjust J, ! there is a timestep limit adjust_J_q_limit ! :: @@ -4056,7 +4068,7 @@ ! When w_div_wc_flag is true, rather than a hard limit on w_div_wcrit ! we use w_div_wcrit_max2infinity, the resulting w_div_wc will match + ! In the limit of j_rot->infinity, the resulting w_div_wc will match ! w_div_wcrit_max, while nothing is done when w_div_wcrit_max`__. + ! Detailed discussion of this functionality can be found in |MESA VI|. + + ! :: + + do_starspots = .false. + + + ! fspot + ! ~~~~~ + + ! Filling Factor of starspots. Valid values between 0.0 and 1.0 (no spots to 100% coverage) + ! :: + + fspot = 0d0 + + + ! xspot + ! ~~~~~ + + ! Temperature contrast between the spotted and unspotted regions. + ! Valid values are between 1.0 (no contribution from magnetic pressure) and 0.5 + ! (half of the total pressure is due to magnetic pressure) + + ! :: + + xspot = 1d0 + + ! mass gain or loss ! ================= @@ -4647,10 +4698,9 @@ mass_change = 0d0 - ! mdot_omega_power ! ~~~~~~~~~~~~~~~~ - + ! Enhanced mass loss due to rotation ! as in Heger, Langer, and Woosley, 2000, ApJ, 528:368-396. @@ -7083,8 +7133,6 @@ dq_D_mix_zero_at_H_C_crossover = -1d0 - - ! diffusion_min_T_for_radaccel ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! diffusion_max_T_for_radaccel @@ -7295,12 +7343,12 @@ ! ~~~~~~~~~~~~~~~~~~~~~~~ ! Choice of appropriate option for the WD core mixture: - + ! + ``'CO'`` : carbon-oxygen phase separation using the two-component ! phase diagram of `Blouin & Daligault (2021a) `_. ! + ``'ONe'`` : oxygen-neon phase separation using the two-component ! phase diagram of `Blouin & Daligault (2021b) `_. - + ! :: phase_separation_option = 'CO' @@ -7331,7 +7379,7 @@ ! :: phase_separation_mixing_use_brunt = .true. - + ! eos controls ! ============ @@ -7486,7 +7534,7 @@ ! or use the faster method by allowing for a small tolerance on the mixture used for the computations of these variables (``'mombarg'``). ! :: - + op_mono_method = 'hu' ! emesh_data_for_op_mono_path @@ -7502,7 +7550,7 @@ ! and then unpack it in place with ``unxz -v OP_mono_master_grid_MESA_emesh.txt.xz`` ! :: - + emesh_data_for_op_mono_path = '' ! '' defaults to $MESA_OP_MONO_MASTER_GRID @@ -7709,14 +7757,10 @@ min_magnitude_brunt_B = -1d99 - - - ! structure equations ! =================== - ! energy_eqn_option ! ~~~~~~~~~~~~~~~~~ ! Available options are ``'dedt'`` or ``'eps_grav'``. @@ -7884,9 +7928,9 @@ ! :: velocity_q_upper_bound = 1d99 - + ! velocity_tau_lower_bound - ! ~~~~~~~~~~~~~~~~~~~~~~ + ! ~~~~~~~~~~~~~~~~~~~~~~~~ ! Local override for global ``v_flag``. ! If local tau < this bound, local ``v_flag`` is set false, @@ -8197,9 +8241,9 @@ ! :: use_dPrad_dm_form_of_T_gradient_eqn = .false. - use_gradT_actual_vs_gradT_MLT_for_T_gradient_eqn = .false. - - + use_gradT_actual_vs_gradT_MLT_for_T_gradient_eqn = .false. + + ! drag_coefficient ! ~~~~~~~~~~~~~~~~ ! min_q_for_drag @@ -8212,7 +8256,7 @@ ! burning in massive stars and AGB stars. ! Under certain circumstances we will not have drag in the surface k=1 zone - ! To force the drag term to be on in the outer zone you must enable one of the + ! To force the drag term to be on in the outer zone you must enable one of the ! following surface boundary conditions: ! ``use_momentum_outer_BC``, ``use_zero_Pgas_outer_BC``, or ``use_fixed_Psurf_outer_BC`` @@ -8230,7 +8274,7 @@ use_drag_energy = .true. drag_coefficient = 0d0 min_q_for_drag = 0d0 - + ! for hydro comparison tests (e.g., Sedov) @@ -8270,7 +8314,7 @@ ! Note that these parameters are not exactly the same ! as used by Paul Duffell. - ! His calibrated D is 2, where mesa has default D = 3 (see mesaIV paper). + ! His calibrated D is 2, where mesa has default D = 3 (see |MESA IV|). ! Users should try various values since the choice is not clear cut. ! :: @@ -8300,7 +8344,7 @@ RTI_m_full_boost = 4d0 RTI_m_no_boost = 5d0 - + ! retry_for_v_above_clight ! ~~~~~~~~~~~~~~~~~~~~~~~~ @@ -8311,7 +8355,7 @@ ! :: retry_for_v_above_clight = .true. - + ! solver controls ! =============== @@ -8518,7 +8562,6 @@ include_w_in_correction_limits = .true. - ! max_X_for_conv_timescale ! ~~~~~~~~~~~~~~~~~~~~~~~~ ! min_X_for_conv_timescale @@ -8533,7 +8576,7 @@ ! ~~~~~~~~~~~~~~~~~~~~~~~~ ! :: - + max_X_for_conv_timescale = 1d0 min_X_for_conv_timescale = 0d0 max_q_for_conv_timescale = 1d0 @@ -8682,7 +8725,7 @@ ! do_normalize_dqs_as_part_of_set_qs ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - + ! normalize_dqs destroys bit-for-bit read as inverse of write for models. ! ok for create pre ms etc., but not for read model ! create_pre_ms calls normalize_dqs even if this flag is false. @@ -8690,12 +8733,12 @@ ! :: do_normalize_dqs_as_part_of_set_qs = .false. - + ! use_DGESVX_in_bcyclic ! use_equilibration_in_DGESVX ! report_min_rcond_from_DGESXV - + ! FOR DEBUGGING ONLY. NOT FOR GENERAL USE. ! :: @@ -9183,7 +9226,7 @@ ! 'Lnuc_cat' delta_lgL_nuc_cat_limit ! 'Lnuc_H' delta_lgL_H_limit ! 'Lnuc_He' delta_lgL_He_limit - ! 'lgL_power_phot' delta_lgL_power_photo_limit + ! 'lgL_power_phot' delta_lgL_power_photo_limit ! 'Lnuc_z' delta_lgL_z_limit ! 'bad_X_sum' (solver found bad mass sum) ! 'dL/L' dL_div_L_limit @@ -9245,12 +9288,12 @@ ! time_delta_coeff - smaller forces smaller timesteps giving better time resolution. ! multiplier for all real number timestep limits and hard limits. ! does not apply to integer valued limits such as - + ! + solver_iters_timestep_limit ! + burn_steps_limit ! + diffusion_steps_limit ! + diffusion_iters_limit - + ! does not apply to varcontrol_target. ! analogous to mesh_delta_coeff for better spatial resolution. @@ -10321,7 +10364,7 @@ min_lgT_for_lgL_power_photo_limit = 9d0 lgL_power_photo_burn_min = 10d0 lgL_power_photo_drop_factor = 10 - + ! limits based on changes at photosphere @@ -10418,7 +10461,7 @@ ! ``abs_du_div_cs`` > ``min_abs_du_div_cs_for_dt_div_min_dr_div_cs_limit`` and ! and ! ``abs_u_div_cs`` > ``min_abs_u_div_cs_for_dt_div_min_dr_div_cs_limit`` - ! + ! ! allow focus on regions near shock face. ! :: @@ -10855,7 +10898,6 @@ delta_lg_XSi_cntr_hard_limit = -1 - ! delta_XH_cntr_limit ! ~~~~~~~~~~~~~~~~~~~ @@ -11014,9 +11056,9 @@ ! ~~~~~~~~~~~~~~~~~~ ! delta_XSi_drop_only ! ~~~~~~~~~~~~~~~~~~~ - - ! If true, then only limit drops in abundance. + + ! If true, then only limit drops in abundance. ! :: @@ -11097,7 +11139,7 @@ ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! hard_limit_for_rel_error_in_energy_conservation ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - + ! :: ! rel_error_in_energy_conservation = abs(error_in_energy_conservation/total_energy) @@ -11228,7 +11270,7 @@ solver_test_partials_write_eos_call_info = .false. solver_epsder_struct = 1d-5 solver_epsder_chem = 1d-5 - + energy_conservation_dump_model_number = -1 @@ -11465,7 +11507,7 @@ use_other_set_pgstar_controls = .false. use_other_accreting_state = .false. use_other_eval_i_rot = .false. - + ! :: use_other_export_pulse_data = .false. diff --git a/star/defaults/pgstar.defaults b/star/defaults/pgstar.defaults index 0aef908b5..6d58543ff 100644 --- a/star/defaults/pgstar.defaults +++ b/star/defaults/pgstar.defaults @@ -87,14 +87,24 @@ ! file_device ! ~~~~~~~~~~~ + + ! 'png' is Portable Network Graphics format + ! can also use: + ! 'ps' (in combination with file_extension = 'ps') for PostScript + ! or: + ! 'vcps' (in combination with file_extension = 'eps') for Encapsulated PostScript + + ! :: + + file_device = 'png' + ! file_extension ! ~~~~~~~~~~~~~~ - ! 'png' is Portable Network Graphics format; can also use 'pdf' + ! Can use: 'png', 'ps', or 'eps' with the appropriate file_device ! :: - file_device = 'png' file_extension = 'png' diff --git a/star/defaults/star_job.defaults b/star/defaults/star_job.defaults index a62891241..c6850e9f4 100644 --- a/star/defaults/star_job.defaults +++ b/star/defaults/star_job.defaults @@ -709,13 +709,14 @@ ! + ``GS98_zfracs = 3`` ! + ``L03_zfracs = 4`` ! + ``AGS05_zfracs = 5`` - ! + ``AGSS09_zfracs = 6`` + ! + ``AGSS09_photospheric_zfracs = 6`` ! + ``L09_zfracs = 7`` ! + ``A09_Prz_zfracs = 8`` - - ! for example, ``initial_zfracs = 3`` for ``GS98_zfracs`` - ! or set ``initial_zfracs = 0`` to use the special list of z fractions specified in controls - ! (i.e., ``z_fraction_li``, ``z_fraction_be``, ``z_fraction_b``, etc.) + ! + ``MB22_photospheric_zfracs = 9`` + ! + ``AAG21_photospheric_zfracs = 10`` + ! for example, ``initial_zfracs = 3`` for ``GS98_zfracs`` + ! or set ``initial_zfracs = 0`` to use the special list of z fractions specified in controls + ! (i.e., ``z_fraction_li``, ``z_fraction_be``, ``z_fraction_b``, etc.) ! :: @@ -1681,8 +1682,8 @@ ! rather than force you to stop the run near zams, change the inlist, and restart. ! The following will turn on rotation automatically. ! The working definition of "near zams" is - ! ``L_nuc_burn_total/L_phot >= Lnuc_div_L_upper_limit`` - ! ``Lnuc_div_L_upper_limit`` is in the controls part of the inlist. + ! ``L_nuc_burn_total/L_phot >= Lnuc_div_L_zams_limit`` + ! ``Lnuc_div_L_zams_limit`` is in the controls part of the inlist. ! The following apply when rotation is off and model satisfies the "near zams" test. ! Each turns on rotation and sets a step limit @@ -1752,8 +1753,8 @@ ! ``relax_initial_omega`` only applies at start of run, not for restarts. ! ``near_zams_relax``+omega applies when "near zams". ! The working definition of "near zams" is - ! ``L_nuc_burn_total/L_phot >= Lnuc_div_L_upper_limit`` - ! ``Lnuc_div_L_upper_limit`` is in the controls part of the inlist. + ! ``L_nuc_burn_total/L_phot >= Lnuc_div_L_zams_limit`` + ! ``Lnuc_div_L_zams_limit`` is in the controls part of the inlist. ! :: diff --git a/star/job/gyre_in_mesa_extras_finish_step.inc b/star/job/gyre_in_mesa_extras_finish_step.inc index f9bfc8e52..94c7f750d 100644 --- a/star/job/gyre_in_mesa_extras_finish_step.inc +++ b/star/job/gyre_in_mesa_extras_finish_step.inc @@ -54,7 +54,7 @@ return end if - call gyre_set_model(global_data, point_data, s%gyre_data_schema) + call set_model(global_data, point_data, s%gyre_data_schema) if (growth_lim > 0d0) then write(*, 100) 'model', 'order', 'freq (Hz)', & @@ -69,7 +69,7 @@ ipar(1) = s% id ipar(2) = 0 ! num_written - call gyre_get_modes(mode_l, process_mode_, ipar, rpar) + call get_modes(mode_l, process_mode_, ipar, rpar) s% ixtra3_array(1) = ipar(2) diff --git a/star/job/gyre_in_mesa_extras_set_velocities.inc b/star/job/gyre_in_mesa_extras_set_velocities.inc index fa704e400..2e7301709 100644 --- a/star/job/gyre_in_mesa_extras_set_velocities.inc +++ b/star/job/gyre_in_mesa_extras_set_velocities.inc @@ -10,7 +10,7 @@ subroutine gyre_in_mesa_extras_set_velocities(s,restart,ierr) use const_def use math_lib - use gyre_lib + use gyre_mesa_m use interp_1d_def, only: pm_work_size use interp_1d_lib, only: interpolate_vector_pm type (star_info), pointer :: s diff --git a/star/job/run_star_support.f90 b/star/job/run_star_support.f90 index 99026293f..b5d10038a 100644 --- a/star/job/run_star_support.f90 +++ b/star/job/run_star_support.f90 @@ -184,7 +184,7 @@ logical function do_evolve_one_step(s, dbg, ierr) result(continue_evolve_loop) logical :: first_try integer :: id - integer :: result, model_number, source, nsteps, j, ci, nz + integer :: result, model_number include 'formats' @@ -308,7 +308,6 @@ end subroutine extras_controls end interface integer :: id_from_read_star_job character (len=*) :: inlist_fname, restart_filename - character (len=512) :: temp_fname logical, intent(in) :: dbg integer, intent(in) :: binary_id integer, intent(out) :: id, ierr @@ -506,9 +505,8 @@ subroutine before_step_loop(id, ierr) integer, intent(in) :: id type (star_info), pointer :: s integer, intent(out) :: ierr - integer :: k, model_number, j - real(dp) :: gamma1_integral, integral_norm - integer :: num_DT, num_PT, num_FreeEOS + integer :: model_number, j + integer :: num_DT, num_FreeEOS 1 format(a35, 99(1pe26.16)) 2 format(a35, i7, 1pe26.16) @@ -1134,7 +1132,6 @@ end subroutine check_if_want_to_stop_warnings logical function stop_is_requested(s) type (star_info), pointer :: s - integer :: ierr logical :: file_exists stop_is_requested = .false. if (mod(s% model_number,100) /= 0) return @@ -1167,9 +1164,8 @@ subroutine show_times(id, s) real(dp) :: item_values(max_num_items) integer, target :: index_arry(max_num_items) integer, pointer :: index(:) - integer :: item_order(max_num_items) integer :: ierr, omp_num_threads, item_num, num_items, i, j - real(dp) :: total, misc, tmp + real(dp) :: total, tmp include 'formats' ierr = 0 omp_num_threads = utils_OMP_GET_MAX_THREADS() @@ -1257,8 +1253,7 @@ end subroutine save1 end subroutine show_times - subroutine do_saves( & - id, ierr) + subroutine do_saves(id, ierr) integer, intent(in) :: id type (star_info), pointer :: s @@ -1627,7 +1622,6 @@ subroutine do_star_job_controls_before(id, s, restart, ierr) logical, intent(in) :: restart integer, intent(out) :: ierr logical, parameter :: kap_use_cache = .true. - logical :: save_flag include 'formats' ierr = 0 @@ -1943,7 +1937,6 @@ subroutine extend_net(s, ierr) subroutine change_net(net_name) use const_def character (len=*), intent(in) :: net_name - integer :: j include 'formats' @@ -1994,8 +1987,8 @@ subroutine do_star_job_controls_after(id, s, restart, pgstar_ok, ierr) logical, intent(in) :: restart, pgstar_ok integer, intent(out) :: ierr - real(dp) :: log_m, log_lifetime, max_dt, max_timestep, minq, maxq - integer :: i, j, k, nzlo, nzhi, chem_id, chem_id1, chem_id2 + real(dp) :: log_m, log_lifetime, max_dt, max_timestep + integer :: i, j, nzlo, nzhi, chem_id, chem_id1, chem_id2 logical :: change_v, change_u include 'formats' @@ -2309,6 +2302,10 @@ subroutine do_star_job_controls_after(id, s, restart, pgstar_ok, ierr) write(*,1) 'metals L09' case (A09_Prz_zfracs) write(*,1) 'metals A09_Prz' + case (MB22_photospheric_zfracs) + write(*,1) 'metals MB22_photospheric' + case (AAG21_photospheric_zfracs) + write(*,1) 'metals AAG21_photospheric' case default write(*,2) 'unknown value for initial_zfracs', s% job% initial_zfracs end select @@ -2984,7 +2981,7 @@ subroutine do_relax_initial_entropy(ierr) integer :: num_pts, i, k, iounit ! these are needed to call eosPT_get real(dp) :: Rho, log10Rho, dlnRho_dlnPgas_const_T, dlnRho_dlnT_const_Pgas - real(dp) :: T, log10T + real(dp) :: log10T ! these are needed to call eosDT_get_T real(dp) :: T_guess_gas, T_guess_rad, logT_guess integer :: eos_calls diff --git a/star/make/makefile_base b/star/make/makefile_base index 9568ed966..4afdafa85 100644 --- a/star/make/makefile_base +++ b/star/make/makefile_base @@ -205,6 +205,7 @@ SRCS = \ star_solver.f90 \ struct_burn_mix.f90 \ winds.f90 \ + starspots.f90 \ gravity_darkening.f90 \ mass_utils.f90 \ eps_mdot.f90 \ diff --git a/star/other/other_accreting_state.f90 b/star/other/other_accreting_state.f90 index 9c9f72534..82f34a372 100644 --- a/star/other/other_accreting_state.f90 +++ b/star/other/other_accreting_state.f90 @@ -22,35 +22,30 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_accreting_state - ! consult star/other/README for general usage instructions - ! control name: use_other_accreting_state = .true. - ! procedure pointer: s% other_accreting_state => my_routine +module other_accreting_state - implicit none - - - contains - - ! Note that your routine will be called before many star variables have been set. - ! If you rely on these, you should call the star_set_vars_in_part1 routine from star_lib - ! to ensure that they are set. - subroutine null_other_accreting_state(id, total_specific_energy, accretion_pressure, accretion_density, ierr) - use star_def - integer, intent(in) :: id - real(dp), intent(out) :: total_specific_energy, accretion_pressure, accretion_density - integer, intent(out) :: ierr - total_specific_energy = 0d0 ! erg/g - accretion_pressure = 0d0 ! erg/cm^3 - accretion_density = 0d0 ! g/cm^3 - ierr = 0 - end subroutine null_other_accreting_state + ! consult star/other/README for general usage instructions + ! control name: use_other_accreting_state = .true. + ! procedure pointer: s% other_accreting_state => my_routine + implicit none + +contains + + ! Note that your routine will be called before many star variables have been set. + ! If you rely on these, you should call the star_set_vars_in_part1 routine from star_lib + ! to ensure that they are set. + subroutine null_other_accreting_state(id, total_specific_energy, accretion_pressure, accretion_density, ierr) + use star_def + integer, intent(in) :: id + real(dp), intent(out) :: total_specific_energy, accretion_pressure, accretion_density + integer, intent(out) :: ierr + total_specific_energy = 0d0 ! erg/g + accretion_pressure = 0d0 ! erg/cm^3 + accretion_density = 0d0 ! g/cm^3 + ierr = 0 + end subroutine null_other_accreting_state + +end module other_accreting_state - end module other_accreting_state - - - - diff --git a/star/other/other_adjust_mdot.f90 b/star/other/other_adjust_mdot.f90 index 51d4ea422..4182dd5ca 100644 --- a/star/other/other_adjust_mdot.f90 +++ b/star/other/other_adjust_mdot.f90 @@ -22,29 +22,24 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_adjust_mdot - ! consult star/other/README for general usage instructions - ! control name: use_other_adjust_mdot = .true. - ! procedure pointer: s% other_adjust_mdot => my_routine +module other_adjust_mdot + ! consult star/other/README for general usage instructions + ! control name: use_other_adjust_mdot = .true. + ! procedure pointer: s% other_adjust_mdot => my_routine - implicit none - - contains + implicit none - ! your routine will be called after winds and before mass adjustment - subroutine null_other_adjust_mdot(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - ierr = 0 - end subroutine null_other_adjust_mdot +contains + ! your routine will be called after winds and before mass adjustment + subroutine null_other_adjust_mdot(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + ierr = 0 + end subroutine null_other_adjust_mdot + +end module other_adjust_mdot - end module other_adjust_mdot - - - - diff --git a/star/other/other_adjust_mlt_gradt_fraction.f90 b/star/other/other_adjust_mlt_gradt_fraction.f90 index 23b1f6b76..2cae1dbb5 100644 --- a/star/other/other_adjust_mlt_gradt_fraction.f90 +++ b/star/other/other_adjust_mlt_gradt_fraction.f90 @@ -22,35 +22,25 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_adjust_mlt_gradT_fraction - ! consult star/other/README for general usage instructions - ! Note: there is no flag use_other_mlt_gradT_fraction - ! procedure pointer: s% other_adjust_mlt_gradT_fraction => my_routine +module other_adjust_mlt_gradT_fraction - implicit none - - - contains - - - - subroutine default_other_adjust_mlt_gradT_fraction(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - end subroutine default_other_adjust_mlt_gradT_fraction + ! consult star/other/README for general usage instructions + ! Note: there is no flag use_other_mlt_gradT_fraction + ! procedure pointer: s% other_adjust_mlt_gradT_fraction => my_routine + implicit none +contains - end module other_adjust_mlt_gradT_fraction - - - - + subroutine default_other_adjust_mlt_gradT_fraction(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + type(star_info), pointer :: s + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + end subroutine default_other_adjust_mlt_gradT_fraction + +end module other_adjust_mlt_gradT_fraction diff --git a/star/other/other_after_set_mixing_info.f90 b/star/other/other_after_set_mixing_info.f90 index 99d0af333..8a1ae41d1 100644 --- a/star/other/other_after_set_mixing_info.f90 +++ b/star/other/other_after_set_mixing_info.f90 @@ -22,26 +22,20 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_after_set_mixing_info - implicit none - - - contains - - - subroutine default_other_after_set_mixing_info(id, ierr) - use const_def, only: dp - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - ierr = 0 - end subroutine default_other_after_set_mixing_info +module other_after_set_mixing_info + implicit none + +contains + + subroutine default_other_after_set_mixing_info(id, ierr) + use const_def, only: dp + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + ierr = 0 + end subroutine default_other_after_set_mixing_info + +end module other_after_set_mixing_info - end module other_after_set_mixing_info - - - - diff --git a/star/other/other_after_solver_setmatrix.f90 b/star/other/other_after_solver_setmatrix.f90 index 1554f6002..e466416a1 100644 --- a/star/other/other_after_solver_setmatrix.f90 +++ b/star/other/other_after_solver_setmatrix.f90 @@ -22,23 +22,18 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_after_solver_setmatrix - implicit none - - - contains - - subroutine default_other_after_solver_setmatrix(id, ierr) - integer, intent(in) :: id - integer, intent(out) :: ierr - ierr = 0 - end subroutine default_other_after_solver_setmatrix +module other_after_solver_setmatrix + implicit none + +contains + + subroutine default_other_after_solver_setmatrix(id, ierr) + integer, intent(in) :: id + integer, intent(out) :: ierr + ierr = 0 + end subroutine default_other_after_solver_setmatrix + +end module other_after_solver_setmatrix - end module other_after_solver_setmatrix - - - - diff --git a/star/other/other_after_struct_burn_mix.f90 b/star/other/other_after_struct_burn_mix.f90 index cc6dbbbb9..9a3139768 100644 --- a/star/other/other_after_struct_burn_mix.f90 +++ b/star/other/other_after_struct_burn_mix.f90 @@ -22,33 +22,27 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_after_struct_burn_mix - - ! consult star/other/README for general usage instructions - ! control name: use_other_after_struct_burn_mix = .true. - ! procedure pointer: s% other_after_struct_burn_mix => my_routine - - - implicit none - - - contains - - ! your routine will be called after the standard struct_burn_mix routine - - subroutine null_other_after_struct_burn_mix(id, dt, res) - use const_def, only: dp - use star_def - integer, intent(in) :: id - real(dp), intent(in) :: dt - integer, intent(out) :: res ! keep_going, redo, retry, terminate - res = keep_going - end subroutine null_other_after_struct_burn_mix - - - end module other_after_struct_burn_mix - - - - + +module other_after_struct_burn_mix + + ! consult star/other/README for general usage instructions + ! control name: use_other_after_struct_burn_mix = .true. + ! procedure pointer: s% other_after_struct_burn_mix => my_routine + + implicit none + +contains + + ! your routine will be called after the standard struct_burn_mix routine + + subroutine null_other_after_struct_burn_mix(id, dt, res) + use const_def, only: dp + use star_def + integer, intent(in) :: id + real(dp), intent(in) :: dt + integer, intent(out) :: res ! keep_going, redo, retry, terminate + res = keep_going + end subroutine null_other_after_struct_burn_mix + +end module other_after_struct_burn_mix + diff --git a/star/other/other_alpha_mlt.f90 b/star/other/other_alpha_mlt.f90 index 946418350..49471d037 100644 --- a/star/other/other_alpha_mlt.f90 +++ b/star/other/other_alpha_mlt.f90 @@ -22,34 +22,26 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_alpha_mlt - ! consult star/other/README for general usage instructions - ! control name: use_other_alpha_mlt = .true. - ! procedure pointer: s% other_alpha_mlt => my_routine +module other_alpha_mlt - implicit none - - - contains - - - subroutine default_other_alpha_mlt(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - s% alpha_mlt(:) = s% mixing_length_alpha - end subroutine default_other_alpha_mlt + ! consult star/other/README for general usage instructions + ! control name: use_other_alpha_mlt = .true. + ! procedure pointer: s% other_alpha_mlt => my_routine + implicit none - end module other_alpha_mlt - - - - +contains + + subroutine default_other_alpha_mlt(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + type(star_info), pointer :: s + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + s%alpha_mlt(:) = s%mixing_length_alpha + end subroutine default_other_alpha_mlt + +end module other_alpha_mlt diff --git a/star/other/other_am_mixing.f90 b/star/other/other_am_mixing.f90 index 146c4e6f0..4c6303676 100644 --- a/star/other/other_am_mixing.f90 +++ b/star/other/other_am_mixing.f90 @@ -22,31 +22,27 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_am_mixing - - ! consult star/other/README for general usage instructions - ! control name: use_other_am_mixing = .true. - ! procedure pointer: s% other_am_mixing => my_routine - - implicit none - - contains - - ! for extra angular momentum mixing - ! you can revise vectors s% am_nu_omega(:) and s% am_nu_j(:) - - subroutine null_other_am_mixing(id, ierr) - use star_def - use const_def - integer, intent(in) :: id - integer, intent(out) :: ierr - ierr = 0 - end subroutine null_other_am_mixing - - - end module other_am_mixing - - - - + +module other_am_mixing + + ! consult star/other/README for general usage instructions + ! control name: use_other_am_mixing = .true. + ! procedure pointer: s% other_am_mixing => my_routine + + implicit none + +contains + + ! for extra angular momentum mixing + ! you can revise vectors s% am_nu_omega(:) and s% am_nu_j(:) + + subroutine null_other_am_mixing(id, ierr) + use star_def + use const_def + integer, intent(in) :: id + integer, intent(out) :: ierr + ierr = 0 + end subroutine null_other_am_mixing + +end module other_am_mixing + diff --git a/star/other/other_astero_freq_corr.f90 b/star/other/other_astero_freq_corr.f90 index 1c1e8b6f6..f336572bb 100644 --- a/star/other/other_astero_freq_corr.f90 +++ b/star/other/other_astero_freq_corr.f90 @@ -22,35 +22,28 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_astero_freq_corr - ! consult star/other/README for general usage instructions - ! control name: use_other_astero_freq_corr = .true. - ! procedure pointer: s% other_astero_freq_corr => my_routine +module other_astero_freq_corr - implicit none - - - contains - - - subroutine default_other_astero_freq_corr(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - ! see star/astero/src/astero_support.f, subroutine get_freq_corr. - ! note that your routine can use both astero_data and astero_support. - end subroutine default_other_astero_freq_corr + ! consult star/other/README for general usage instructions + ! control name: use_other_astero_freq_corr = .true. + ! procedure pointer: s% other_astero_freq_corr => my_routine + implicit none + +contains + + subroutine default_other_astero_freq_corr(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + type(star_info), pointer :: s + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + ! see star/astero/src/astero_support.f, subroutine get_freq_corr. + ! note that your routine can use both astero_data and astero_support. + end subroutine default_other_astero_freq_corr + +end module other_astero_freq_corr - end module other_astero_freq_corr - - - - diff --git a/star/other/other_before_struct_burn_mix.f90 b/star/other/other_before_struct_burn_mix.f90 index 91f76bf50..f3d62b721 100644 --- a/star/other/other_before_struct_burn_mix.f90 +++ b/star/other/other_before_struct_burn_mix.f90 @@ -22,33 +22,27 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_before_struct_burn_mix - - ! consult star/other/README for general usage instructions - ! control name: use_other_before_struct_burn_mix = .true. - ! procedure pointer: s% other_before_struct_burn_mix => my_routine - - - implicit none - - - contains - - ! your routine will be called before the standard struct_burn_mix routine - - subroutine null_other_before_struct_burn_mix(id, dt, res) - use const_def, only: dp - use star_def - integer, intent(in) :: id - real(dp), intent(in) :: dt - integer, intent(out) :: res ! keep_going, redo, retry, terminate - res = keep_going - end subroutine null_other_before_struct_burn_mix - - - end module other_before_struct_burn_mix - - - - + +module other_before_struct_burn_mix + + ! consult star/other/README for general usage instructions + ! control name: use_other_before_struct_burn_mix = .true. + ! procedure pointer: s% other_before_struct_burn_mix => my_routine + + implicit none + +contains + + ! your routine will be called before the standard struct_burn_mix routine + + subroutine null_other_before_struct_burn_mix(id, dt, res) + use const_def, only: dp + use star_def + integer, intent(in) :: id + real(dp), intent(in) :: dt + integer, intent(out) :: res ! keep_going, redo, retry, terminate + res = keep_going + end subroutine null_other_before_struct_burn_mix + +end module other_before_struct_burn_mix + diff --git a/star/other/other_brunt.f90 b/star/other/other_brunt.f90 index a8c1b2707..0b2f6bbbb 100644 --- a/star/other/other_brunt.f90 +++ b/star/other/other_brunt.f90 @@ -22,34 +22,27 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_brunt - ! consult star/other/README for general usage instructions - ! control name: use_other_brunt = .true. - ! procedure pointer: s% other_brunt => my_routine +module other_brunt - implicit none - - - contains - - - subroutine default_other_brunt(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - s% brunt_N2(1:s% nz) = 0 - end subroutine default_other_brunt + ! consult star/other/README for general usage instructions + ! control name: use_other_brunt = .true. + ! procedure pointer: s% other_brunt => my_routine + implicit none + +contains + + subroutine default_other_brunt(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + type(star_info), pointer :: s + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + s%brunt_N2(1:s%nz) = 0 + end subroutine default_other_brunt + +end module other_brunt - end module other_brunt - - - - diff --git a/star/other/other_brunt_smoothing.f90 b/star/other/other_brunt_smoothing.f90 index 04ba7e7fc..8f40107fc 100644 --- a/star/other/other_brunt_smoothing.f90 +++ b/star/other/other_brunt_smoothing.f90 @@ -22,31 +22,25 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_brunt_smoothing - ! consult star/other/README for general usage instructions - ! control name: use_other_brunt_smoothing = .true. - ! procedure pointer: s% other_brunt_smoothing => my_routine +module other_brunt_smoothing - implicit none - - - contains - - - subroutine null_other_brunt_smoothing(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - end subroutine null_other_brunt_smoothing + ! consult star/other/README for general usage instructions + ! control name: use_other_brunt_smoothing = .true. + ! procedure pointer: s% other_brunt_smoothing => my_routine + implicit none + +contains + + subroutine null_other_brunt_smoothing(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + !type(star_info), pointer :: s + !integer :: k + ierr = 0 + end subroutine null_other_brunt_smoothing + +end module other_brunt_smoothing - end module other_brunt_smoothing - - - - diff --git a/star/other/other_build_initial_model.f90 b/star/other/other_build_initial_model.f90 index cc37be68d..e20302425 100644 --- a/star/other/other_build_initial_model.f90 +++ b/star/other/other_build_initial_model.f90 @@ -22,33 +22,26 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_build_initial_model - ! consult star/other/README for general usage instructions - ! control name: use_other_build_initial_model = .true. - ! procedure pointer: s% other_build_initial_model => my_routine +module other_build_initial_model - implicit none - - - contains - - - subroutine default_other_build_initial_model(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - end subroutine default_other_build_initial_model + ! consult star/other/README for general usage instructions + ! control name: use_other_build_initial_model = .true. + ! procedure pointer: s% other_build_initial_model => my_routine + implicit none + +contains + + subroutine default_other_build_initial_model(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + type(star_info), pointer :: s + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + end subroutine default_other_build_initial_model + +end module other_build_initial_model - end module other_build_initial_model - - - - diff --git a/star/other/other_cgrav.f90 b/star/other/other_cgrav.f90 index eac292083..8cb128d10 100644 --- a/star/other/other_cgrav.f90 +++ b/star/other/other_cgrav.f90 @@ -22,37 +22,30 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_cgrav - ! consult star/other/README for general usage instructions - ! control name: use_other_cgrav = .true. - ! procedure pointer: s% other_cgrav => my_routine +module other_cgrav - ! note that other_cgrav only changes G in the stellar structure - ! the binary module is unaffected by changes in cgrav + ! consult star/other/README for general usage instructions + ! control name: use_other_cgrav = .true. + ! procedure pointer: s% other_cgrav => my_routine - implicit none + ! note that other_cgrav only changes G in the stellar structure + ! the binary module is unaffected by changes in cgrav - - contains - - - subroutine default_other_cgrav(id, ierr) - use star_def - use const_def, only: standard_cgrav - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - s% cgrav(:) = standard_cgrav - end subroutine default_other_cgrav + implicit none - end module other_cgrav - - - - +contains + + subroutine default_other_cgrav(id, ierr) + use star_def + use const_def, only: standard_cgrav + integer, intent(in) :: id + integer, intent(out) :: ierr + type(star_info), pointer :: s + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + s%cgrav(:) = standard_cgrav + end subroutine default_other_cgrav + +end module other_cgrav diff --git a/star/other/other_close_gaps.f90 b/star/other/other_close_gaps.f90 index 936ab7c63..6baabb384 100644 --- a/star/other/other_close_gaps.f90 +++ b/star/other/other_close_gaps.f90 @@ -22,31 +22,26 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_close_gaps - ! consult star/other/README for general usage instructions - ! control name: use_other_close_gaps = .true. - ! procedure pointer: s% other_close_gaps => my_routine - ! This also requires the control remove_mixing_glitches = .true. +module other_close_gaps - implicit none - - contains - - - subroutine null_other_close_gaps(id, mix_type, min_gap, ierr) - use star_def - integer, intent(in) :: id - integer, intent(in) :: mix_type - real(dp), intent(in) :: min_gap - integer, intent(out) :: ierr - ierr = 0 - end subroutine null_other_close_gaps + ! consult star/other/README for general usage instructions + ! control name: use_other_close_gaps = .true. + ! procedure pointer: s% other_close_gaps => my_routine + ! This also requires the control remove_mixing_glitches = .true. + implicit none + +contains + + subroutine null_other_close_gaps(id, mix_type, min_gap, ierr) + use star_def + integer, intent(in) :: id + integer, intent(in) :: mix_type + real(dp), intent(in) :: min_gap + integer, intent(out) :: ierr + ierr = 0 + end subroutine null_other_close_gaps + +end module other_close_gaps - end module other_close_gaps - - - - diff --git a/star/other/other_d_mix.f90 b/star/other/other_d_mix.f90 index 87f6be37b..7dd8ed1ae 100644 --- a/star/other/other_d_mix.f90 +++ b/star/other/other_d_mix.f90 @@ -22,28 +22,23 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_D_mix - ! consult star/other/README for general usage instructions - ! control name: use_other_D_mix = .true. - ! procedure pointer: s% other_D_mix => my_routine +module other_D_mix - implicit none - - contains - - - subroutine null_other_D_mix(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - ierr = 0 - end subroutine null_other_D_mix + ! consult star/other/README for general usage instructions + ! control name: use_other_D_mix = .true. + ! procedure pointer: s% other_D_mix => my_routine + implicit none + +contains + + subroutine null_other_D_mix(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + ierr = 0 + end subroutine null_other_D_mix + +end module other_D_mix - end module other_D_mix - - - - diff --git a/star/other/other_diffusion.f90 b/star/other/other_diffusion.f90 index 1e510b972..ca57e379c 100644 --- a/star/other/other_diffusion.f90 +++ b/star/other/other_diffusion.f90 @@ -22,37 +22,31 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_diffusion - ! consult star/other/README for general usage instructions - ! control name: use_other_diffusion = .true. - ! procedure pointer: s% other_diffusion => my_routine +module other_diffusion - implicit none - - - contains - - - subroutine null_other_diffusion(id, dt, ierr) - use star_def - integer, intent(in) :: id - real(dp), intent(in) :: dt - integer, intent(out) :: ierr - type (star_info), pointer :: s - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - !write(*,*) 'null_other_diffusion' - !write(*,*) 'associated(s% edv)', associated(s% edv) - s% edv(:,1:s% nz) = 0 - !write(*,*) 'done null_other_diffusion' - end subroutine null_other_diffusion + ! consult star/other/README for general usage instructions + ! control name: use_other_diffusion = .true. + ! procedure pointer: s% other_diffusion => my_routine + implicit none + +contains + + subroutine null_other_diffusion(id, dt, ierr) + use star_def + integer, intent(in) :: id + real(dp), intent(in) :: dt + integer, intent(out) :: ierr + type(star_info), pointer :: s + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + !write(*,*) 'null_other_diffusion' + !write(*,*) 'associated(s% edv)', associated(s% edv) + s%edv(:, 1:s%nz) = 0 + !write(*,*) 'done null_other_diffusion' + end subroutine null_other_diffusion + +end module other_diffusion - end module other_diffusion - - - - diff --git a/star/other/other_diffusion_coefficients.f90 b/star/other/other_diffusion_coefficients.f90 index 7a3068bdd..970049a62 100644 --- a/star/other/other_diffusion_coefficients.f90 +++ b/star/other/other_diffusion_coefficients.f90 @@ -22,55 +22,45 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_diffusion_coefficients - ! consult star/other/README for general usage instructions - ! control name: use_other_diffusion_coefficients = .true. - ! procedure pointer: s% other_diffusion_coefficients => my_routine +module other_diffusion_coefficients - implicit none - - - contains + ! consult star/other/README for general usage instructions + ! control name: use_other_diffusion_coefficients = .true. + ! procedure pointer: s% other_diffusion_coefficients => my_routine + implicit none +contains ! Compute atomic diffusion coefficients. -! The input parameters are +! The input parameters are ! rho density [gcm^-3] ! T temperature [K] -! m number of elements +! m number of elements ! A mass [amu], note element NN is electrons ! charge charge [e] -! na number density [cm^-3] +! na number density [cm^-3] ! The output are the resistance coefficients in Burgers equations K_ij, z_ij, z'_ij and z''_ij ! It is also possible to output diffusion coefficients D_ij and thermal diffusion coeffcient ! A_th used in Cowling&Chapman formalism, note Ath(m,i) is Ath_ei - - - + ! NOTE: the number of classes of isos = m-1; m is for electrons ! for j from 1 to m-1, you can get the chem id for class j by ! cid = chem_get_iso_id(s% diffusion_class_representative(j)) ! e.g., if the representative for class j is he4, then cid will = ihe4 (defined in chem_def) - - subroutine null_other_diffusion_coefficients( & - id, k, nc, m, rho, T, A, X, Z, C, charge, na, & - Ddiff, Kdiff, Zdiff, Zdiff1, Zdiff2, Ath) - use star_def - use const_def, only: dp - integer, intent(in) :: id, k, nc, m - real(dp), intent(in) :: rho, T, charge(m), na(m) - real(dp), intent(in), dimension(:) :: A, X, Z, C ! (m) - real(dp), intent(inout), dimension(m,m) :: & - Ddiff, Kdiff, Zdiff, Zdiff1, Zdiff2, Ath - end subroutine null_other_diffusion_coefficients + subroutine null_other_diffusion_coefficients( & + id, k, nc, m, rho, T, A, X, Z, C, charge, na, & + Ddiff, Kdiff, Zdiff, Zdiff1, Zdiff2, Ath) + use star_def + use const_def, only: dp + integer, intent(in) :: id, k, nc, m + real(dp), intent(in) :: rho, T, charge(m), na(m) + real(dp), intent(in), dimension(:) :: A, X, Z, C ! (m) + real(dp), intent(inout), dimension(m, m) :: & + Ddiff, Kdiff, Zdiff, Zdiff1, Zdiff2, Ath + end subroutine null_other_diffusion_coefficients +end module other_diffusion_coefficients - end module other_diffusion_coefficients - - - - diff --git a/star/other/other_diffusion_factor.f90 b/star/other/other_diffusion_factor.f90 index 2a239ce2e..4158a0722 100644 --- a/star/other/other_diffusion_factor.f90 +++ b/star/other/other_diffusion_factor.f90 @@ -22,41 +22,35 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_diffusion_factor - - ! consult star/other/README for general usage instructions - ! control name: use_other_diffusion_factor = .true. - ! procedure pointer: s% other_diffusion_factor => my_routine - - implicit none - - - contains - - - subroutine default_other_diffusion_factor(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k, num_classes - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - - if(s% diffusion_use_full_net) then - num_classes = s% species - else - num_classes = s% diffusion_num_classes - end if - - s% extra_diffusion_factor(1:num_classes, 1:s% nz) = 1d0 - end subroutine default_other_diffusion_factor - - - end module other_diffusion_factor - - - - + +module other_diffusion_factor + + ! consult star/other/README for general usage instructions + ! control name: use_other_diffusion_factor = .true. + ! procedure pointer: s% other_diffusion_factor => my_routine + + implicit none + +contains + + subroutine default_other_diffusion_factor(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + type(star_info), pointer :: s + integer :: num_classes + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + + if (s%diffusion_use_full_net) then + num_classes = s%species + else + num_classes = s%diffusion_num_classes + end if + + s%extra_diffusion_factor(1:num_classes, 1:s%nz) = 1d0 + end subroutine default_other_diffusion_factor + +end module other_diffusion_factor + diff --git a/star/other/other_energy.f90 b/star/other/other_energy.f90 index 445396675..3be28e45c 100644 --- a/star/other/other_energy.f90 +++ b/star/other/other_energy.f90 @@ -22,37 +22,30 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_energy - ! consult star/other/README for general usage instructions - ! control name: use_other_energy = .true. - ! procedure pointer: s% other_energy => my_routine +module other_energy - implicit none - - - contains - - - subroutine default_other_energy(id, ierr) - use star_def - use auto_diff - use const_def, only: Rsun - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - !s% extra_heat(:) = s% extra_power_source - ! note that extra_heat is type(auto_diff_real_star_order1) so includes partials. - end subroutine default_other_energy + ! consult star/other/README for general usage instructions + ! control name: use_other_energy = .true. + ! procedure pointer: s% other_energy => my_routine + implicit none + +contains + + subroutine default_other_energy(id, ierr) + use star_def + use auto_diff + use const_def, only: Rsun + integer, intent(in) :: id + integer, intent(out) :: ierr + type(star_info), pointer :: s + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + !s% extra_heat(:) = s% extra_power_source + ! note that extra_heat is type(auto_diff_real_star_order1) so includes partials. + end subroutine default_other_energy + +end module other_energy - end module other_energy - - - - diff --git a/star/other/other_energy_implicit.f90 b/star/other/other_energy_implicit.f90 index 60befb27b..090664c83 100644 --- a/star/other/other_energy_implicit.f90 +++ b/star/other/other_energy_implicit.f90 @@ -22,37 +22,31 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_energy_implicit - ! consult star/other/README for general usage instructions - ! control name: use_other_energy_implicit = .true. - ! procedure pointer: s% other_energy_implicit => my_routine +module other_energy_implicit - implicit none - - - contains - - - subroutine default_other_energy_implicit(id, ierr) - use star_def - use const_def, only: Rsun - use auto_diff - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k, nz - ierr = 0 - ! call star_ptr(id, s, ierr) - ! if (ierr /= 0) return - ! s% extra_heat(1:s%nz) = 1d0 ! erg/g/sec - ! note that extra_heat is type(auto_diff_real_star_order1) so includes partials. - end subroutine default_other_energy_implicit + ! consult star/other/README for general usage instructions + ! control name: use_other_energy_implicit = .true. + ! procedure pointer: s% other_energy_implicit => my_routine + implicit none + +contains + + subroutine default_other_energy_implicit(id, ierr) + use star_def + use const_def, only: Rsun + use auto_diff + integer, intent(in) :: id + integer, intent(out) :: ierr + !type(star_info), pointer :: s + !integer :: k, nz + ierr = 0 + ! call star_ptr(id, s, ierr) + ! if (ierr /= 0) return + ! s% extra_heat(1:s%nz) = 1d0 ! erg/g/sec + ! note that extra_heat is type(auto_diff_real_star_order1) so includes partials. + end subroutine default_other_energy_implicit + +end module other_energy_implicit - end module other_energy_implicit - - - - diff --git a/star/other/other_eps_grav.f90 b/star/other/other_eps_grav.f90 index eb81058c3..ad65609ae 100644 --- a/star/other/other_eps_grav.f90 +++ b/star/other/other_eps_grav.f90 @@ -22,39 +22,33 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_eps_grav - - ! consult star/other/README for general usage instructions - ! control name: use_other_eps_grav = .true. - ! procedure pointer: s% other_eps_grav => my_routine - - implicit none - - - contains - - - subroutine null_other_eps_grav(id, k, dt, ierr) - use star_def - integer, intent(in) :: id, k - real(dp), intent(in) :: dt - integer, intent(out) :: ierr - ierr = 0 - - ! NOTE: this is called after 1st doing the standard eps_grav calculation. - ! so if you decide you don't want to do anything special, just return. - - ! NOTE: need to set the auto_diff variable s% eps_grav_ad(k) - ! this is type(auto_diff_real_star_order1) so includes partials. - ! in addition to setting the value, - ! you must also set the partials, and there are lots of them. - - end subroutine null_other_eps_grav - - - end module other_eps_grav - - - - + +module other_eps_grav + + ! consult star/other/README for general usage instructions + ! control name: use_other_eps_grav = .true. + ! procedure pointer: s% other_eps_grav => my_routine + + implicit none + +contains + + subroutine null_other_eps_grav(id, k, dt, ierr) + use star_def + integer, intent(in) :: id, k + real(dp), intent(in) :: dt + integer, intent(out) :: ierr + ierr = 0 + + ! NOTE: this is called after 1st doing the standard eps_grav calculation. + ! so if you decide you don't want to do anything special, just return. + + ! NOTE: need to set the auto_diff variable s% eps_grav_ad(k) + ! this is type(auto_diff_real_star_order1) so includes partials. + ! in addition to setting the value, + ! you must also set the partials, and there are lots of them. + + end subroutine null_other_eps_grav + +end module other_eps_grav + diff --git a/star/other/other_eval_fp_ft.f90 b/star/other/other_eval_fp_ft.f90 index 6c55698aa..3e82ab480 100644 --- a/star/other/other_eval_fp_ft.f90 +++ b/star/other/other_eval_fp_ft.f90 @@ -22,41 +22,36 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_eval_fp_ft - - ! consult star/other/README for general usage instructions - ! control name: use_other_eval_fp_ft = .true. - ! procedure pointer: s% other_eval_fp_ft => my_routine - - implicit none - - - contains - - subroutine null_other_eval_fp_ft( & - id, nz, xm, r, rho, aw, ft, fp, r_polar, r_equatorial, report_ierr, ierr) - use num_lib - use star_utils - use auto_diff_support - use star_def - integer, intent(in) :: id - integer, intent(in) :: nz - real(dp), intent(in) :: aw(:), r(:), rho(:), xm(:) ! (nz) - type(auto_diff_real_star_order1), intent(out) :: ft(:), fp(:) ! (nz) - real(dp), intent(inout) :: r_polar(:), r_equatorial(:) ! (nz) - logical, intent(in) :: report_ierr - integer, intent(out) :: ierr - - write(*,*) 'no implementation for other_eval_fp_ft' - ! must set fp, ft, r_polar and r_equatorial - ierr = -1 - - end subroutine null_other_eval_fp_ft - - - end module other_eval_fp_ft - - - - + +module other_eval_fp_ft + + ! consult star/other/README for general usage instructions + ! control name: use_other_eval_fp_ft = .true. + ! procedure pointer: s% other_eval_fp_ft => my_routine + + implicit none + +contains + + subroutine null_other_eval_fp_ft( & + id, nz, xm, r, rho, aw, ft, fp, r_polar, r_equatorial, report_ierr, ierr) + use num_lib + use star_utils + use auto_diff_support + use star_def + integer, intent(in) :: id + integer, intent(in) :: nz + real(dp), intent(in) :: aw(:), r(:), rho(:), xm(:) ! (nz) + type(auto_diff_real_star_order1), intent(out) :: ft(:), fp(:) ! (nz) + real(dp), intent(inout) :: r_polar(:), r_equatorial(:) ! (nz) + logical, intent(in) :: report_ierr + integer, intent(out) :: ierr + + write (*, *) 'no implementation for other_eval_fp_ft' + ! must set fp, ft, r_polar and r_equatorial + ierr = -1 + + end subroutine null_other_eval_fp_ft + +end module other_eval_fp_ft + diff --git a/star/other/other_eval_i_rot.f90 b/star/other/other_eval_i_rot.f90 index bce503388..f8c78f656 100644 --- a/star/other/other_eval_i_rot.f90 +++ b/star/other/other_eval_i_rot.f90 @@ -22,35 +22,30 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_eval_i_rot - - ! consult star/other/README for general usage instructions - ! control name: use_other_eval_i_rot = .true. - ! procedure pointer: s% other_eval_i_rot => my_routine - - implicit none - - - contains - - subroutine null_other_eval_i_rot(id,k,r00,w_div_w_crit_roche, i_rot) - use star_def - use auto_diff_support - integer, intent(in) :: id, k - real(dp), intent(in) :: r00,w_div_w_crit_roche - type(auto_diff_real_star_order1), intent(out) :: i_rot - - i_rot = 0 - - write(*,*) 'no implementation for other_eval_i_rot' - stop - - end subroutine null_other_eval_i_rot - - - end module other_eval_i_rot - - - - + +module other_eval_i_rot + + ! consult star/other/README for general usage instructions + ! control name: use_other_eval_i_rot = .true. + ! procedure pointer: s% other_eval_i_rot => my_routine + + implicit none + +contains + + subroutine null_other_eval_i_rot(id, k, r00, w_div_w_crit_roche, i_rot) + use star_def + use auto_diff_support + integer, intent(in) :: id, k + real(dp), intent(in) :: r00, w_div_w_crit_roche + type(auto_diff_real_star_order1), intent(out) :: i_rot + + i_rot = 0 + + write (*, *) 'no implementation for other_eval_i_rot' + stop + + end subroutine null_other_eval_i_rot + +end module other_eval_i_rot + diff --git a/star/other/other_gradr_factor.f90 b/star/other/other_gradr_factor.f90 index f36911d38..8f20bad7e 100644 --- a/star/other/other_gradr_factor.f90 +++ b/star/other/other_gradr_factor.f90 @@ -22,36 +22,30 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_gradr_factor - ! consult star/other/README for general usage instructions - ! control name: use_other_gradr_factor = .true. - ! procedure pointer: s% other_gradr_factor => my_routine - - implicit none - - - contains - - - subroutine null_other_gradr_factor(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - do k = 1, s% nz - s% gradr_factor(k) = 1d0 - end do - end subroutine null_other_gradr_factor +module other_gradr_factor + ! consult star/other/README for general usage instructions + ! control name: use_other_gradr_factor = .true. + ! procedure pointer: s% other_gradr_factor => my_routine + + implicit none + +contains + + subroutine null_other_gradr_factor(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + type(star_info), pointer :: s + integer :: k + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + do k = 1, s%nz + s%gradr_factor(k) = 1d0 + end do + end subroutine null_other_gradr_factor + +end module other_gradr_factor - end module other_gradr_factor - - - - diff --git a/star/other/other_j_for_adjust_j_lost.f90 b/star/other/other_j_for_adjust_j_lost.f90 index 1d64dde2d..c573e21d2 100644 --- a/star/other/other_j_for_adjust_j_lost.f90 +++ b/star/other/other_j_for_adjust_j_lost.f90 @@ -22,35 +22,29 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_j_for_adjust_J_lost - - ! consult star/other/README for general usage instructions - ! control name: use_other_j_for_adjust_J_lost = .true. - ! procedure pointer: s% other_j_for_adjust_J_lost => my_routine - - - implicit none - - - contains - - ! your routine will be called after winds and before mass adjustment - - subroutine null_other_j_for_adjust_J_lost(id, starting_j_rot_surf, j_for_mass_loss, ierr) - use star_def - integer, intent(in) :: id - real(dp), intent(in) :: starting_j_rot_surf - real(dp), intent(out) :: j_for_mass_loss - integer, intent(out) :: ierr - write(*,*) 'no implementation for other_j_for_adjust_J_lost' - ierr = -1 - j_for_mass_loss = -1d99 - end subroutine null_other_j_for_adjust_J_lost - - - end module other_j_for_adjust_J_lost - - - - + +module other_j_for_adjust_J_lost + + ! consult star/other/README for general usage instructions + ! control name: use_other_j_for_adjust_J_lost = .true. + ! procedure pointer: s% other_j_for_adjust_J_lost => my_routine + + implicit none + +contains + + ! your routine will be called after winds and before mass adjustment + + subroutine null_other_j_for_adjust_J_lost(id, starting_j_rot_surf, j_for_mass_loss, ierr) + use star_def + integer, intent(in) :: id + real(dp), intent(in) :: starting_j_rot_surf + real(dp), intent(out) :: j_for_mass_loss + integer, intent(out) :: ierr + write (*, *) 'no implementation for other_j_for_adjust_J_lost' + ierr = -1 + j_for_mass_loss = -1d99 + end subroutine null_other_j_for_adjust_J_lost + +end module other_j_for_adjust_J_lost + diff --git a/star/other/other_kap.f90 b/star/other/other_kap.f90 index b245547f2..62b38ed60 100644 --- a/star/other/other_kap.f90 +++ b/star/other/other_kap.f90 @@ -22,105 +22,96 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_kap - ! consult star/other/README for general usage instructions - ! control name: use_other_kap = .true. - ! procedure pointers: s% other_kap_get => my_routine - ! (if using OP MONO) s% other_kap_get_op_mono => my_routine +module other_kap + ! consult star/other/README for general usage instructions + ! control name: use_other_kap = .true. + ! procedure pointers: s% other_kap_get => my_routine + ! (if using OP MONO) s% other_kap_get_op_mono => my_routine - implicit none - - - contains + implicit none +contains - subroutine null_other_kap_get( & - id, k, handle, species, chem_id, net_iso, xa, & - log10_rho, log10_T, & - lnfree_e, d_lnfree_e_dlnRho, d_lnfree_e_dlnT, & - eta, d_eta_dlnRho, d_eta_dlnT, & - kap_fracs, kap, dln_kap_dlnRho, dln_kap_dlnT, dln_kap_dxa, ierr) - use star_def - use kap_def, only: num_kap_fracs + subroutine null_other_kap_get( & + id, k, handle, species, chem_id, net_iso, xa, & + log10_rho, log10_T, & + lnfree_e, d_lnfree_e_dlnRho, d_lnfree_e_dlnT, & + eta, d_eta_dlnRho, d_eta_dlnT, & + kap_fracs, kap, dln_kap_dlnRho, dln_kap_dlnT, dln_kap_dxa, ierr) + use star_def + use kap_def, only: num_kap_fracs - ! INPUT - integer, intent(in) :: id ! star id if available; 0 otherwise - integer, intent(in) :: k ! cell number or 0 if not for a particular cell - integer, intent(in) :: handle ! from alloc_kap_handle - integer, intent(in) :: species - integer, pointer :: chem_id(:) ! maps species to chem id - ! index from 1 to species - ! value is between 1 and num_chem_isos - integer, pointer :: net_iso(:) ! maps chem id to species number - ! index from 1 to num_chem_isos (defined in chem_def) - ! value is 0 if the iso is not in the current net - ! else is value between 1 and number of species in current net - real(dp), intent(in) :: xa(:) ! mass fractions - real(dp), intent(in) :: log10_rho ! density - real(dp), intent(in) :: log10_T ! temperature - real(dp), intent(in) :: lnfree_e, d_lnfree_e_dlnRho, d_lnfree_e_dlnT - ! free_e := total combined number per nucleon of free electrons and positrons - real(dp), intent(in) :: eta, d_eta_dlnRho, d_eta_dlnT - ! eta := electron degeneracy parameter - - ! OUTPUT - real(dp), intent(out) :: kap_fracs(num_kap_fracs) - real(dp), intent(out) :: kap ! opacity - real(dp), intent(out) :: dln_kap_dlnRho ! partial derivative at constant T - real(dp), intent(out) :: dln_kap_dlnT ! partial derivative at constant Rho - real(dp), intent(out) :: dln_kap_dxa(:) ! partial derivative w.r.t. to species - integer, intent(out) :: ierr ! 0 means AOK. - - kap_fracs = 0; kap = 0; dln_kap_dlnRho = 0; dln_kap_dlnT = 0; dln_kap_dxa = 0 - - write(*,*) 'no implementation for other_kap_get' - ierr = -1 + ! INPUT + integer, intent(in) :: id ! star id if available; 0 otherwise + integer, intent(in) :: k ! cell number or 0 if not for a particular cell + integer, intent(in) :: handle ! from alloc_kap_handle + integer, intent(in) :: species + integer, pointer :: chem_id(:) ! maps species to chem id + ! index from 1 to species + ! value is between 1 and num_chem_isos + integer, pointer :: net_iso(:) ! maps chem id to species number + ! index from 1 to num_chem_isos (defined in chem_def) + ! value is 0 if the iso is not in the current net + ! else is value between 1 and number of species in current net + real(dp), intent(in) :: xa(:) ! mass fractions + real(dp), intent(in) :: log10_rho ! density + real(dp), intent(in) :: log10_T ! temperature + real(dp), intent(in) :: lnfree_e, d_lnfree_e_dlnRho, d_lnfree_e_dlnT + ! free_e := total combined number per nucleon of free electrons and positrons + real(dp), intent(in) :: eta, d_eta_dlnRho, d_eta_dlnT + ! eta := electron degeneracy parameter - end subroutine null_other_kap_get - - - subroutine null_other_kap_get_op_mono( & - handle, zbar, log10_rho, log10_T, & - ! args for op_mono - use_op_mono_alt_get_kap, & - nel, izzp, fap, fac, screening, umesh, semesh, ff, rs, & - ! output - kap, dlnkap_dlnRho, dlnkap_dlnT, ierr) - use star_def - integer, intent(in) :: handle ! from alloc_kap_handle - real(dp), intent(in) :: zbar ! average ionic charge (for electron conduction) - real(dp), intent(in) :: log10_rho ! the density - real(dp), intent(in) :: log10_T ! the temperature - ! args for op_mono_get_kap - logical, intent(in) :: use_op_mono_alt_get_kap - integer, intent(in) :: nel - integer, intent(in) :: izzp(:) ! (nel) - real(dp), intent(in) :: fap(:) ! (nel) number fractions of elements - real(dp), intent(in) :: fac(:) ! (nel) scale factors for element opacity - logical, intent(in) :: screening - ! work arrays - real, pointer :: umesh(:), semesh(:), ff(:,:,:,:), rs(:,:,:) - ! umesh(nptot) - ! umesh(nptot) - ! ff(nptot, ipe, 4, 4) - ! rs(nptot, 4, 4) - ! ss(nptot, nrad, 4, 4) - ! output - real(dp), intent(out) :: kap ! opacity - real(dp), intent(out) :: dlnkap_dlnRho ! partial derivative at constant T - real(dp), intent(out) :: dlnkap_dlnT ! partial derivative at constant Rho - integer, intent(out) :: ierr ! 0 means AOK. - kap = 0; dlnkap_dlnRho = 0; dlnkap_dlnT = 0 - ierr = -1 - end subroutine null_other_kap_get_op_mono - + ! OUTPUT + real(dp), intent(out) :: kap_fracs(num_kap_fracs) + real(dp), intent(out) :: kap ! opacity + real(dp), intent(out) :: dln_kap_dlnRho ! partial derivative at constant T + real(dp), intent(out) :: dln_kap_dlnT ! partial derivative at constant Rho + real(dp), intent(out) :: dln_kap_dxa(:) ! partial derivative w.r.t. to species + integer, intent(out) :: ierr ! 0 means AOK. + kap_fracs = 0; kap = 0; dln_kap_dlnRho = 0; dln_kap_dlnT = 0; dln_kap_dxa = 0 + + write (*, *) 'no implementation for other_kap_get' + ierr = -1 + + end subroutine null_other_kap_get + + subroutine null_other_kap_get_op_mono( & + handle, zbar, log10_rho, log10_T, & + ! args for op_mono + use_op_mono_alt_get_kap, & + nel, izzp, fap, fac, screening, umesh, semesh, ff, rs, & + ! output + kap, dlnkap_dlnRho, dlnkap_dlnT, ierr) + use star_def + integer, intent(in) :: handle ! from alloc_kap_handle + real(dp), intent(in) :: zbar ! average ionic charge (for electron conduction) + real(dp), intent(in) :: log10_rho ! the density + real(dp), intent(in) :: log10_T ! the temperature + ! args for op_mono_get_kap + logical, intent(in) :: use_op_mono_alt_get_kap + integer, intent(in) :: nel + integer, intent(in) :: izzp(:) ! (nel) + real(dp), intent(in) :: fap(:) ! (nel) number fractions of elements + real(dp), intent(in) :: fac(:) ! (nel) scale factors for element opacity + logical, intent(in) :: screening + ! work arrays + real, pointer :: umesh(:), semesh(:), ff(:, :, :, :), rs(:, :, :) + ! umesh(nptot) + ! umesh(nptot) + ! ff(nptot, ipe, 4, 4) + ! rs(nptot, 4, 4) + ! ss(nptot, nrad, 4, 4) + ! output + real(dp), intent(out) :: kap ! opacity + real(dp), intent(out) :: dlnkap_dlnRho ! partial derivative at constant T + real(dp), intent(out) :: dlnkap_dlnT ! partial derivative at constant Rho + integer, intent(out) :: ierr ! 0 means AOK. + kap = 0; dlnkap_dlnRho = 0; dlnkap_dlnT = 0 + ierr = -1 + end subroutine null_other_kap_get_op_mono + +end module other_kap - end module other_kap - - - - diff --git a/star/other/other_mesh_delta_coeff_factor.f90 b/star/other/other_mesh_delta_coeff_factor.f90 index 9b43f77bb..5366d152c 100644 --- a/star/other/other_mesh_delta_coeff_factor.f90 +++ b/star/other/other_mesh_delta_coeff_factor.f90 @@ -22,34 +22,26 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_mesh_delta_coeff_factor - ! consult star/other/README for general usage instructions - ! control name: use_other_mesh_delta_coeff_factor = .true. - ! procedure pointer: s% other_mesh_delta_coeff_factor => my_routine +module other_mesh_delta_coeff_factor + ! consult star/other/README for general usage instructions + ! control name: use_other_mesh_delta_coeff_factor = .true. + ! procedure pointer: s% other_mesh_delta_coeff_factor => my_routine - implicit none + implicit none - - contains - - - subroutine default_other_mesh_delta_coeff_factor(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - s% mesh_delta_coeff_factor(:) = 1d0 - end subroutine default_other_mesh_delta_coeff_factor +contains - end module other_mesh_delta_coeff_factor - - - - + subroutine default_other_mesh_delta_coeff_factor(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + type(star_info), pointer :: s + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + s%mesh_delta_coeff_factor(:) = 1d0 + end subroutine default_other_mesh_delta_coeff_factor + +end module other_mesh_delta_coeff_factor diff --git a/star/other/other_mesh_functions.f90 b/star/other/other_mesh_functions.f90 index e7d3f8458..b78a0b850 100644 --- a/star/other/other_mesh_functions.f90 +++ b/star/other/other_mesh_functions.f90 @@ -22,85 +22,75 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_mesh_functions - ! consult star/other/README for general usage instructions - ! control name: use_other_mesh_functions = .true. - ! procedure pointer: s% other_mesh_fcn_data => my_routine +module other_mesh_functions + ! consult star/other/README for general usage instructions + ! control name: use_other_mesh_functions = .true. + ! procedure pointer: s% other_mesh_fcn_data => my_routine - ! remember to set use_other_mesh_functions = .true. to enable this. - ! edit the extras_controls routine to set the procedure pointers - ! e.g., - ! s% how_many_other_mesh_fcns => how_many_my_other_mesh_fcns - ! s% other_mesh_fcn_data => my_other_mesh_fcn_data + ! remember to set use_other_mesh_functions = .true. to enable this. + ! edit the extras_controls routine to set the procedure pointers + ! e.g., + ! s% how_many_other_mesh_fcns => how_many_my_other_mesh_fcns + ! s% other_mesh_fcn_data => my_other_mesh_fcn_data - implicit none - - - contains - - - subroutine null_how_many_other_mesh_fcns(id, n) - integer, intent(in) :: id - integer, intent(out) :: n - n = 0 - end subroutine null_how_many_other_mesh_fcns - - - subroutine null_other_mesh_fcn_data( & - id, nfcns, names, gval_is_xa_function, vals1, ierr) - use const_def - integer, intent(in) :: id - integer, intent(in) :: nfcns - character (len=*) :: names(:) - logical, intent(out) :: gval_is_xa_function(:) ! (nfcns) - real(dp), pointer :: vals1(:) ! =(nz, nfcns) - integer, intent(out) :: ierr - gval_is_xa_function(1:nfcns) = .false. - ierr = 0 - end subroutine null_other_mesh_fcn_data + implicit none - - ! here is an example that adds a mesh function for log(opacity) - subroutine how_many_other_mesh_fcns(id, n) - integer, intent(in) :: id - integer, intent(out) :: n - n = 1 - end subroutine how_many_other_mesh_fcns - - - subroutine other_mesh_fcn_data( & - id, nfcns, names, gval_is_xa_function, vals1, ierr) - use star_def - use math_lib - use const_def - integer, intent(in) :: id - integer, intent(in) :: nfcns - character (len=*) :: names(:) - logical, intent(out) :: gval_is_xa_function(:) ! (nfcns) - real(dp), pointer :: vals1(:) ! =(nz, nfcns) - integer, intent(out) :: ierr - integer :: nz, k - real(dp), pointer :: vals(:,:) - real(dp), parameter :: weight = 20 - type (star_info), pointer :: s - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - names(1) = 'kap_function' - gval_is_xa_function(1) = .false. - nz = s% nz - vals(1:nz,1:nfcns) => vals1(1:nz*nfcns) - do k=1,nz - vals(k,1) = weight*log10(s% opacity(k)) - end do - end subroutine other_mesh_fcn_data +contains + subroutine null_how_many_other_mesh_fcns(id, n) + integer, intent(in) :: id + integer, intent(out) :: n + n = 0 + end subroutine null_how_many_other_mesh_fcns + + subroutine null_other_mesh_fcn_data( & + id, nfcns, names, gval_is_xa_function, vals1, ierr) + use const_def + integer, intent(in) :: id + integer, intent(in) :: nfcns + character(len=*) :: names(:) + logical, intent(out) :: gval_is_xa_function(:) ! (nfcns) + real(dp), pointer :: vals1(:) ! =(nz, nfcns) + integer, intent(out) :: ierr + gval_is_xa_function(1:nfcns) = .false. + ierr = 0 + end subroutine null_other_mesh_fcn_data + + ! here is an example that adds a mesh function for log(opacity) + subroutine how_many_other_mesh_fcns(id, n) + integer, intent(in) :: id + integer, intent(out) :: n + n = 1 + end subroutine how_many_other_mesh_fcns + + subroutine other_mesh_fcn_data( & + id, nfcns, names, gval_is_xa_function, vals1, ierr) + use star_def + use math_lib + use const_def + integer, intent(in) :: id + integer, intent(in) :: nfcns + character(len=*) :: names(:) + logical, intent(out) :: gval_is_xa_function(:) ! (nfcns) + real(dp), pointer :: vals1(:) ! =(nz, nfcns) + integer, intent(out) :: ierr + integer :: nz, k + real(dp), pointer :: vals(:, :) + real(dp), parameter :: weight = 20 + type(star_info), pointer :: s + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + names(1) = 'kap_function' + gval_is_xa_function(1) = .false. + nz = s%nz + vals(1:nz, 1:nfcns) => vals1(1:nz*nfcns) + do k = 1, nz + vals(k, 1) = weight*log10(s%opacity(k)) + end do + end subroutine other_mesh_fcn_data + +end module other_mesh_functions - end module other_mesh_functions - - - - diff --git a/star/other/other_mlt_results.f90 b/star/other/other_mlt_results.f90 index b804b5754..b1a1148ff 100644 --- a/star/other/other_mlt_results.f90 +++ b/star/other/other_mlt_results.f90 @@ -22,47 +22,40 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_mlt_results - ! consult star/other/README for general usage instructions - ! control name: use_other_mlt_results = .true. - ! procedure pointer: s% other_mlt_results => my_routine +module other_mlt_results + ! consult star/other/README for general usage instructions + ! control name: use_other_mlt_results = .true. + ! procedure pointer: s% other_mlt_results => my_routine - implicit none - - - contains - - - subroutine null_other_mlt_results(id, k, MLT_option, & ! NOTE: k=0 is a valid arg - r, L, T, P, opacity, rho, chiRho, chiT, Cp, gradr, grada, scale_height, & - iso, XH1, cgrav, m, gradL_composition_term, mixing_length_alpha, & - alpha_semiconvection, thermohaline_coeff, & - mixing_type, gradT, Y_face, conv_vel, D, Gamma, ierr) - use const_def, only: dp - use auto_diff - use star_def - integer, intent(in) :: id - integer, intent(in) :: k - character (len=*), intent(in) :: MLT_option - type(auto_diff_real_star_order1), intent(in) :: & - r, L, T, P, opacity, rho, chiRho, chiT, Cp, gradr, grada, scale_height - integer, intent(in) :: iso - real(dp), intent(in) :: & - XH1, cgrav, m, gradL_composition_term, & - mixing_length_alpha, alpha_semiconvection, thermohaline_coeff - integer, intent(out) :: mixing_type - type(auto_diff_real_star_order1), intent(out) :: & - gradT, Y_face, conv_vel, D, Gamma - integer, intent(out) :: ierr - ierr = 0 - end subroutine null_other_mlt_results + implicit none +contains + + subroutine null_other_mlt_results(id, k, MLT_option, & ! NOTE: k=0 is a valid arg + r, L, T, P, opacity, rho, chiRho, chiT, Cp, gradr, grada, scale_height, & + iso, XH1, cgrav, m, gradL_composition_term, mixing_length_alpha, & + alpha_semiconvection, thermohaline_coeff, & + mixing_type, gradT, Y_face, conv_vel, D, Gamma, ierr) + use const_def, only: dp + use auto_diff + use star_def + integer, intent(in) :: id + integer, intent(in) :: k + character(len=*), intent(in) :: MLT_option + type(auto_diff_real_star_order1), intent(in) :: & + r, L, T, P, opacity, rho, chiRho, chiT, Cp, gradr, grada, scale_height + integer, intent(in) :: iso + real(dp), intent(in) :: & + XH1, cgrav, m, gradL_composition_term, & + mixing_length_alpha, alpha_semiconvection, thermohaline_coeff + integer, intent(out) :: mixing_type + type(auto_diff_real_star_order1), intent(out) :: & + gradT, Y_face, conv_vel, D, Gamma + integer, intent(out) :: ierr + ierr = 0 + end subroutine null_other_mlt_results + +end module other_mlt_results - end module other_mlt_results - - - - diff --git a/star/other/other_momentum.f90 b/star/other/other_momentum.f90 index ebfefdae7..7b165aec2 100644 --- a/star/other/other_momentum.f90 +++ b/star/other/other_momentum.f90 @@ -22,37 +22,30 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_momentum - ! consult star/other/README for general usage instructions - ! control name: use_other_momentum = .true. - ! procedure pointer: s% other_momentum => my_routine +module other_momentum + ! consult star/other/README for general usage instructions + ! control name: use_other_momentum = .true. + ! procedure pointer: s% other_momentum => my_routine - implicit none - - - contains - - - subroutine default_other_momentum(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - do k = 1, s% nz - !s% extra_grav(k) = 0d0 ! this is added to -G*m/r^2 - end do - end subroutine default_other_momentum + implicit none +contains + + subroutine default_other_momentum(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + type(star_info), pointer :: s + integer :: k + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + do k = 1, s%nz + !s% extra_grav(k) = 0d0 ! this is added to -G*m/r^2 + end do + end subroutine default_other_momentum + +end module other_momentum - end module other_momentum - - - - diff --git a/star/other/other_momentum_implicit.f90 b/star/other/other_momentum_implicit.f90 index 27c509bce..b053feeb3 100644 --- a/star/other/other_momentum_implicit.f90 +++ b/star/other/other_momentum_implicit.f90 @@ -22,36 +22,28 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_momentum_implicit - ! consult star/other/README for general usage instructions - ! control name: use_other_momentum_implicit = .true. - ! procedure pointer: s% other_momentum_implicit => my_routine +module other_momentum_implicit + ! consult star/other/README for general usage instructions + ! control name: use_other_momentum_implicit = .true. + ! procedure pointer: s% other_momentum_implicit => my_routine - implicit none - - - contains - - - subroutine default_other_momentum_implicit(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - ! s% extra_grav(1:s%nz) = 0 ! this is added to -G*m/r^2 - ! note that extra_grav is type(auto_diff_real_star_order1) so includes partials. - end subroutine default_other_momentum_implicit + implicit none +contains + + subroutine default_other_momentum_implicit(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + type(star_info), pointer :: s + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + ! s% extra_grav(1:s%nz) = 0 ! this is added to -G*m/r^2 + ! note that extra_grav is type(auto_diff_real_star_order1) so includes partials. + end subroutine default_other_momentum_implicit + +end module other_momentum_implicit - end module other_momentum_implicit - - - - diff --git a/star/other/other_net_derivs.f90 b/star/other/other_net_derivs.f90 index 5f1a4c4fa..8addede7e 100644 --- a/star/other/other_net_derivs.f90 +++ b/star/other/other_net_derivs.f90 @@ -22,13 +22,13 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_net_derivs + +module other_net_derivs implicit none - ! set use_other_net_derivs = .true. in your controls namelist - + ! set use_other_net_derivs = .true. in your controls namelist + ! edit the extras_controls routine to set the procedure pointer ! other_net_derivs => my_net_derivs @@ -38,30 +38,26 @@ module other_net_derivs ! This hook only works with soft nets (so no approx networks) - contains - +contains - subroutine default_other_net_derivs(& + subroutine default_other_net_derivs( & n, dydt, eps_nuc_MeV, eta, ye, logtemp, temp, den, abar, zbar, & num_reactions, rate_factors, & symbolic, just_dydt, ierr) use net_def - + implicit none type(Net_Info) :: n - real(qp), pointer, intent(inout) :: dydt(:,:) + real(qp), pointer, intent(inout) :: dydt(:, :) real(qp), intent(out) :: eps_nuc_MeV(:) integer, intent(in) :: num_reactions real(dp), intent(in) ::eta, ye, logtemp, temp, den, abar, zbar, & - rate_factors(:) + rate_factors(:) logical, intent(in) :: symbolic, just_dydt integer, intent(out) :: ierr end subroutine default_other_net_derivs - end module other_net_derivs - - - - \ No newline at end of file +end module other_net_derivs + diff --git a/star/other/other_net_get.f90 b/star/other/other_net_get.f90 index 11ee6925c..efc6f018e 100644 --- a/star/other/other_net_get.f90 +++ b/star/other/other_net_get.f90 @@ -22,80 +22,74 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_net_get - ! consult star/other/README for general usage instructions - ! control name: use_other_net_get = .true. - ! procedure pointer: s% other_net_get => my_routine +module other_net_get - implicit none - - - contains - - - subroutine null_other_net_get( & - id, k, net_handle, just_dxdt, n, num_isos, num_reactions, & - x, temp, log10temp, rho, log10rho, & - abar, zbar, z2bar, ye, eta, d_eta_dlnT, d_eta_dlnRho, & - rate_factors, weak_rate_factor, & - reaction_Qs, reaction_neuQs, & - eps_nuc, d_eps_nuc_dRho, d_eps_nuc_dT, d_eps_nuc_dx, & - dxdt, d_dxdt_dRho, d_dxdt_dT, d_dxdt_dx, & - screening_mode, & - eps_nuc_categories, eps_neu_total, & - ierr) - use star_def - use net_lib, only: net_get - use net_def, only: Net_Info - integer, intent(in) :: id ! id for star - integer, intent(in) :: k ! cell number or 0 if not for a particular cell - integer, intent(in) :: net_handle - logical, intent(in) :: just_dxdt - type (Net_Info) :: n - integer, intent(in) :: num_isos - integer, intent(in) :: num_reactions - real(dp), intent(in) :: x(:) ! (num_isos) - real(dp), intent(in) :: temp, log10temp ! log10 of temp - real(dp), intent(in) :: rho, log10rho ! log10 of rho - real(dp), intent(in) :: abar ! mean number of nucleons per nucleus - real(dp), intent(in) :: zbar ! mean charge per nucleus - real(dp), intent(in) :: z2bar ! mean charge squared per nucleus - real(dp), intent(in) :: ye - real(dp), intent(in) :: eta, d_eta_dlnT, d_eta_dlnRho ! electron degeneracy from eos. - real(dp), intent(in), pointer :: rate_factors(:) ! (num_reactions) - real(dp), intent(in) :: weak_rate_factor - real(dp), pointer, intent(in) :: reaction_Qs(:) ! (rates_reaction_id_max) - real(dp), pointer, intent(in) :: reaction_neuQs(:) ! (rates_reaction_id_max) - real(dp), intent(out) :: eps_nuc ! ergs/g/s from burning after including losses to reaction neutrinos - real(dp), intent(out) :: d_eps_nuc_dT - real(dp), intent(out) :: d_eps_nuc_dRho - real(dp), intent(inout) :: d_eps_nuc_dx(:) ! (num_isos) - real(dp), intent(inout) :: dxdt(:) ! (num_isos) - real(dp), intent(inout) :: d_dxdt_dRho(:) ! (num_isos) - real(dp), intent(inout) :: d_dxdt_dT(:) ! (num_isos) - real(dp), intent(inout) :: d_dxdt_dx(:,:) ! (num_isos, num_isos) - real(dp), intent(inout) :: eps_nuc_categories(:) ! (num_categories) - real(dp), intent(out) :: eps_neu_total ! ergs/g/s neutrinos from weak reactions - integer, intent(in) :: screening_mode - integer, intent(out) :: ierr ! 0 means okay - call net_get( & - net_handle, just_dxdt, n, num_isos, num_reactions, & - x, temp, log10temp, rho, log10rho, & - abar, zbar, z2bar, ye, eta, d_eta_dlnT, d_eta_dlnRho, & - rate_factors, weak_rate_factor, & - reaction_Qs, reaction_neuQs, & - eps_nuc, d_eps_nuc_dRho, d_eps_nuc_dT, d_eps_nuc_dx, & - dxdt, d_dxdt_dRho, d_dxdt_dT, d_dxdt_dx, & - screening_mode, & - eps_nuc_categories, eps_neu_total, & - ierr) - end subroutine null_other_net_get + ! consult star/other/README for general usage instructions + ! control name: use_other_net_get = .true. + ! procedure pointer: s% other_net_get => my_routine + implicit none + +contains + + subroutine null_other_net_get( & + id, k, net_handle, just_dxdt, n, num_isos, num_reactions, & + x, temp, log10temp, rho, log10rho, & + abar, zbar, z2bar, ye, eta, d_eta_dlnT, d_eta_dlnRho, & + rate_factors, weak_rate_factor, & + reaction_Qs, reaction_neuQs, & + eps_nuc, d_eps_nuc_dRho, d_eps_nuc_dT, d_eps_nuc_dx, & + dxdt, d_dxdt_dRho, d_dxdt_dT, d_dxdt_dx, & + screening_mode, & + eps_nuc_categories, eps_neu_total, & + ierr) + use star_def + use net_lib, only: net_get + use net_def, only: Net_Info + integer, intent(in) :: id ! id for star + integer, intent(in) :: k ! cell number or 0 if not for a particular cell + integer, intent(in) :: net_handle + logical, intent(in) :: just_dxdt + type(Net_Info) :: n + integer, intent(in) :: num_isos + integer, intent(in) :: num_reactions + real(dp), intent(in) :: x(:) ! (num_isos) + real(dp), intent(in) :: temp, log10temp ! log10 of temp + real(dp), intent(in) :: rho, log10rho ! log10 of rho + real(dp), intent(in) :: abar ! mean number of nucleons per nucleus + real(dp), intent(in) :: zbar ! mean charge per nucleus + real(dp), intent(in) :: z2bar ! mean charge squared per nucleus + real(dp), intent(in) :: ye + real(dp), intent(in) :: eta, d_eta_dlnT, d_eta_dlnRho ! electron degeneracy from eos. + real(dp), intent(in), pointer :: rate_factors(:) ! (num_reactions) + real(dp), intent(in) :: weak_rate_factor + real(dp), pointer, intent(in) :: reaction_Qs(:) ! (rates_reaction_id_max) + real(dp), pointer, intent(in) :: reaction_neuQs(:) ! (rates_reaction_id_max) + real(dp), intent(out) :: eps_nuc ! ergs/g/s from burning after including losses to reaction neutrinos + real(dp), intent(out) :: d_eps_nuc_dT + real(dp), intent(out) :: d_eps_nuc_dRho + real(dp), intent(inout) :: d_eps_nuc_dx(:) ! (num_isos) + real(dp), intent(inout) :: dxdt(:) ! (num_isos) + real(dp), intent(inout) :: d_dxdt_dRho(:) ! (num_isos) + real(dp), intent(inout) :: d_dxdt_dT(:) ! (num_isos) + real(dp), intent(inout) :: d_dxdt_dx(:, :) ! (num_isos, num_isos) + real(dp), intent(inout) :: eps_nuc_categories(:) ! (num_categories) + real(dp), intent(out) :: eps_neu_total ! ergs/g/s neutrinos from weak reactions + integer, intent(in) :: screening_mode + integer, intent(out) :: ierr ! 0 means okay + call net_get( & + net_handle, just_dxdt, n, num_isos, num_reactions, & + x, temp, log10temp, rho, log10rho, & + abar, zbar, z2bar, ye, eta, d_eta_dlnT, d_eta_dlnRho, & + rate_factors, weak_rate_factor, & + reaction_Qs, reaction_neuQs, & + eps_nuc, d_eps_nuc_dRho, d_eps_nuc_dT, d_eps_nuc_dx, & + dxdt, d_dxdt_dRho, d_dxdt_dT, d_dxdt_dx, & + screening_mode, & + eps_nuc_categories, eps_neu_total, & + ierr) + end subroutine null_other_net_get + +end module other_net_get - end module other_net_get - - - - diff --git a/star/other/other_neu.f90 b/star/other/other_neu.f90 index 84d59cf48..ae7f4d23b 100644 --- a/star/other/other_neu.f90 +++ b/star/other/other_neu.f90 @@ -22,46 +22,40 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_neu - ! consult star/other/README for general usage instructions - ! control name: use_other_neu = .true. - ! procedure pointer: s% other_neu => my_routine +module other_neu - implicit none - - - contains - - - subroutine null_other_neu( & - id, k, T, log10_T, Rho, log10_Rho, abar, zbar, log10_Tlim, flags, & - loss, sources, ierr) - use star_def - use neu_lib, only: neu_get - use neu_def - integer, intent(in) :: id ! id for star - integer, intent(in) :: k ! cell number or 0 if not for a particular cell - real(dp), intent(in) :: T ! temperature - real(dp), intent(in) :: log10_T ! log10 of temperature - real(dp), intent(in) :: Rho ! density - real(dp), intent(in) :: log10_Rho ! log10 of density - real(dp), intent(in) :: abar ! mean atomic weight - real(dp), intent(in) :: zbar ! mean charge - real(dp), intent(in) :: log10_Tlim - logical, intent(inout) :: flags(num_neu_types) ! true if should include the type of loss - real(dp), intent(inout) :: loss(num_neu_rvs) ! total from all sources - real(dp), intent(inout) :: sources(num_neu_types, num_neu_rvs) - integer, intent(out) :: ierr - call neu_get( & - T, log10_T, Rho, log10_Rho, abar, zbar, log10_Tlim, flags, & - loss, sources, ierr) - end subroutine null_other_neu + ! consult star/other/README for general usage instructions + ! control name: use_other_neu = .true. + ! procedure pointer: s% other_neu => my_routine + implicit none + +contains + + subroutine null_other_neu( & + id, k, T, log10_T, Rho, log10_Rho, abar, zbar, log10_Tlim, flags, & + loss, sources, ierr) + use star_def + use neu_lib, only: neu_get + use neu_def + integer, intent(in) :: id ! id for star + integer, intent(in) :: k ! cell number or 0 if not for a particular cell + real(dp), intent(in) :: T ! temperature + real(dp), intent(in) :: log10_T ! log10 of temperature + real(dp), intent(in) :: Rho ! density + real(dp), intent(in) :: log10_Rho ! log10 of density + real(dp), intent(in) :: abar ! mean atomic weight + real(dp), intent(in) :: zbar ! mean charge + real(dp), intent(in) :: log10_Tlim + logical, intent(inout) :: flags(num_neu_types) ! true if should include the type of loss + real(dp), intent(inout) :: loss(num_neu_rvs) ! total from all sources + real(dp), intent(inout) :: sources(num_neu_types, num_neu_rvs) + integer, intent(out) :: ierr + call neu_get( & + T, log10_T, Rho, log10_Rho, abar, zbar, log10_Tlim, flags, & + loss, sources, ierr) + end subroutine null_other_neu + +end module other_neu - end module other_neu - - - - diff --git a/star/other/other_opacity_factor.f90 b/star/other/other_opacity_factor.f90 index b8bb97e2c..d84965dc7 100644 --- a/star/other/other_opacity_factor.f90 +++ b/star/other/other_opacity_factor.f90 @@ -22,34 +22,26 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_opacity_factor - ! consult star/other/README for general usage instructions - ! control name: use_other_opacity_factor = .true. - ! procedure pointer: s% other_opacity_factor => my_routine +module other_opacity_factor - implicit none - - - contains - - - subroutine default_other_opacity_factor(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - s% extra_opacity_factor(1:s% nz) = s% opacity_factor - end subroutine default_other_opacity_factor + ! consult star/other/README for general usage instructions + ! control name: use_other_opacity_factor = .true. + ! procedure pointer: s% other_opacity_factor => my_routine + implicit none - end module other_opacity_factor - - - - +contains + + subroutine default_other_opacity_factor(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + type(star_info), pointer :: s + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + s%extra_opacity_factor(1:s%nz) = s%opacity_factor + end subroutine default_other_opacity_factor + +end module other_opacity_factor diff --git a/star/other/other_overshooting_scheme.f90 b/star/other/other_overshooting_scheme.f90 index 0250fdb05..dafe6a8fc 100644 --- a/star/other/other_overshooting_scheme.f90 +++ b/star/other/other_overshooting_scheme.f90 @@ -22,37 +22,30 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_overshooting_scheme - ! consult star/other/README for general usage instructions - ! procedure pointer: s% other_overshooting_scheme => my_routine - ! note that this is enabled by setting s%overshooting_scheme = 'other' - ! so there is no use_other_overshooting_scheme flag. +module other_overshooting_scheme + ! consult star/other/README for general usage instructions + ! procedure pointer: s% other_overshooting_scheme => my_routine + ! note that this is enabled by setting s%overshooting_scheme = 'other' + ! so there is no use_other_overshooting_scheme flag. - implicit none - - contains - - subroutine null_other_overshooting_scheme(id, i, j, k_a, k_b, D, vc, ierr) - use star_def - integer, intent(in) :: id, i, j - integer, intent(out) :: k_a, k_b - real(dp), intent(out), dimension(:) :: D, vc - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - k_a = -1 - k_b = -1 - D = 0d0 - vc = 0d0 + implicit none - ierr = -1 - end subroutine null_other_overshooting_scheme +contains - end module other_overshooting_scheme - - - - + subroutine null_other_overshooting_scheme(id, i, j, k_a, k_b, D, vc, ierr) + use star_def + integer, intent(in) :: id, i, j + integer, intent(out) :: k_a, k_b + real(dp), intent(out), dimension(:) :: D, vc + integer, intent(out) :: ierr + k_a = -1 + k_b = -1 + D = 0d0 + vc = 0d0 + + ierr = -1 + end subroutine null_other_overshooting_scheme + +end module other_overshooting_scheme diff --git a/star/other/other_pgstar_plots.f90 b/star/other/other_pgstar_plots.f90 index 5bd1ff6f9..57efdd3ca 100644 --- a/star/other/other_pgstar_plots.f90 +++ b/star/other/other_pgstar_plots.f90 @@ -22,33 +22,26 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_pgstar_plots - - ! consult star/other/README for general usage instructions - ! control name: use_other_pgstar_plots = .true. - ! procedure pointer: s% other_pgstar_plots_info => my_routine - - - ! see star/other/sample_pgstar_plot.f90 - - implicit none - - - contains - - - ! default does nothing - subroutine null_other_pgstar_plots_info(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - ierr = 0 - end subroutine null_other_pgstar_plots_info - - - end module other_pgstar_plots - - - - + +module other_pgstar_plots + + ! consult star/other/README for general usage instructions + ! control name: use_other_pgstar_plots = .true. + ! procedure pointer: s% other_pgstar_plots_info => my_routine + + ! see star/other/sample_pgstar_plot.f90 + + implicit none + +contains + + ! default does nothing + subroutine null_other_pgstar_plots_info(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + ierr = 0 + end subroutine null_other_pgstar_plots_info + +end module other_pgstar_plots + diff --git a/star/other/other_photo_read.f90 b/star/other/other_photo_read.f90 index 790416a14..f98c519f1 100644 --- a/star/other/other_photo_read.f90 +++ b/star/other/other_photo_read.f90 @@ -22,31 +22,24 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_photo_read +module other_photo_read - implicit none + implicit none - ! note: there is no flag "use_other_photo_read". - ! the other routine is always called when a photo is read. - ! see private/model_in.f - - contains - + ! note: there is no flag "use_other_photo_read". + ! the other routine is always called when a photo is read. + ! see private/model_in.f - subroutine default_other_photo_read(id, iounit, ierr) - use star_def - integer, intent(in) :: id, iounit - integer, intent(out) :: ierr - ierr = 0 - !read(iounit,iostat=ierr) stuff - end subroutine default_other_photo_read +contains + subroutine default_other_photo_read(id, iounit, ierr) + use star_def + integer, intent(in) :: id, iounit + integer, intent(out) :: ierr + ierr = 0 + !read(iounit,iostat=ierr) stuff + end subroutine default_other_photo_read +end module other_photo_read - end module other_photo_read - - - - diff --git a/star/other/other_photo_write.f90 b/star/other/other_photo_write.f90 index ddb1531ca..785c3c133 100644 --- a/star/other/other_photo_write.f90 +++ b/star/other/other_photo_write.f90 @@ -22,30 +22,23 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_photo_write +module other_photo_write - use star_def + use star_def - implicit none + implicit none - ! note: there is no flag "use_other_photo_write". - ! the other routine is always called when a photo is written. - ! see private/model_out.f - - contains - + ! note: there is no flag "use_other_photo_write". + ! the other routine is always called when a photo is written. + ! see private/model_out.f - subroutine default_other_photo_write(id, iounit) - integer, intent(in) :: id, iounit - !write(iounit) stuff - end subroutine default_other_photo_write +contains + subroutine default_other_photo_write(id, iounit) + integer, intent(in) :: id, iounit + !write(iounit) stuff + end subroutine default_other_photo_write +end module other_photo_write - end module other_photo_write - - - - diff --git a/star/other/other_pressure.f90 b/star/other/other_pressure.f90 index 236fff2de..cb05d0efb 100644 --- a/star/other/other_pressure.f90 +++ b/star/other/other_pressure.f90 @@ -22,40 +22,33 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_pressure - ! consult star/other/README for general usage instructions - ! control name: use_other_pressure = .true. - ! procedure pointer: s% other_pressure => my_routine +module other_pressure + ! consult star/other/README for general usage instructions + ! control name: use_other_pressure = .true. + ! procedure pointer: s% other_pressure => my_routine - implicit none - - - contains - - - subroutine default_other_pressure(id, ierr) - use star_def - use auto_diff - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - do k=1,s%nz - s% extra_pressure(k) = 0d0 - end do - ! note that extra_pressure is type(auto_diff_real_star_order1) so includes partials. - return - end subroutine default_other_pressure + implicit none +contains + + subroutine default_other_pressure(id, ierr) + use star_def + use auto_diff + integer, intent(in) :: id + integer, intent(out) :: ierr + type(star_info), pointer :: s + integer :: k + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + do k = 1, s%nz + s%extra_pressure(k) = 0d0 + end do + ! note that extra_pressure is type(auto_diff_real_star_order1) so includes partials. + return + end subroutine default_other_pressure + +end module other_pressure - end module other_pressure - - - - diff --git a/star/other/other_rate_get.f90 b/star/other/other_rate_get.f90 index ab3d47d33..035a165a4 100644 --- a/star/other/other_rate_get.f90 +++ b/star/other/other_rate_get.f90 @@ -22,30 +22,29 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_rate + +module other_rate implicit none - ! set use_other_rate_get = .true. in your controls namelist - + ! set use_other_rate_get = .true. in your controls namelist + ! edit the extras_controls routine to set the procedure pointer ! other_rate_get => my_rate_get - ! This hook is primarily aimed at either modifying an existing mesa reaction or + ! This hook is primarily aimed at either modifying an existing mesa reaction or ! providing your own custom rate that depends only on temperature (density factors are handled elsewhere) ! This hook can only handle existing reactions. This is not the place to try and add a new reaction. ! This is also called early in the setup of MESA so there is no stellar structure yet ! Thus we call this multiple times (each with a different temperature) for each reaction. - ! Note this will effect the cached rate written to data/rates_data/cache + ! Note this will effect the cached rate written to data/rates_data/cache ! Becuase of this it will only get called if the rate does NOT already exist in your rates_cache ! I recommend you use the rates_cache_dir option to redirect your rates_cache when using this hook ! So you dont break your whole mesa install. - contains - +contains subroutine default_other_rate_get(ir, temp, tf, raw_rate, ierr) use rates_def @@ -53,22 +52,18 @@ subroutine default_other_rate_get(ir, temp, tf, raw_rate, ierr) implicit none integer :: ir ! Rate id - real(dp),intent(in) :: temp !< Temperature - type (T_Factors) :: tf !< Various temperature factors - real(dp),intent(inout) :: raw_rate !< Unscreened reaction_rate, note this will have the default mesa rate on entry + real(dp), intent(in) :: temp !< Temperature + type(T_Factors) :: tf !< Various temperature factors + real(dp), intent(inout) :: raw_rate !< Unscreened reaction_rate, note this will have the default mesa rate on entry integer, intent(out) :: ierr - + ierr = 0 if (trim(reaction_name(ir)) == 'r_c12_ag_o16') then - raw_rate = 1.0 * raw_rate + raw_rate = 1.0*raw_rate end if end subroutine default_other_rate_get - end module other_rate - - - - - \ No newline at end of file +end module other_rate + diff --git a/star/other/other_remove_surface.f90 b/star/other/other_remove_surface.f90 index 1dff670db..c68c06468 100644 --- a/star/other/other_remove_surface.f90 +++ b/star/other/other_remove_surface.f90 @@ -22,37 +22,30 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_remove_surface - - ! consult star/other/README for general usage instructions - ! control name: use_other_remove_surface = .true. - ! procedure pointer: s% other_remove_surface => my_routine - - - implicit none - - - contains - - - subroutine default_other_remove_surface(id, ierr, k) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - integer, intent(out) :: k - - type (star_info), pointer :: s - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - - k = 0 ! The cell to remove down to. - end subroutine default_other_remove_surface - - - end module other_remove_surface - - - - + +module other_remove_surface + + ! consult star/other/README for general usage instructions + ! control name: use_other_remove_surface = .true. + ! procedure pointer: s% other_remove_surface => my_routine + + implicit none + +contains + + subroutine default_other_remove_surface(id, ierr, k) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + integer, intent(out) :: k + + type(star_info), pointer :: s + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + + k = 0 ! The cell to remove down to. + end subroutine default_other_remove_surface + +end module other_remove_surface + diff --git a/star/other/other_rsp_build_model.f90 b/star/other/other_rsp_build_model.f90 index 15efdd97c..fc72ffba5 100644 --- a/star/other/other_rsp_build_model.f90 +++ b/star/other/other_rsp_build_model.f90 @@ -22,42 +22,36 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_rsp_build_model - - ! consult star/other/README for general usage instructions - ! control name: use_other_RSP_build_model = .true. - ! procedure pointer: s% other_rsp_build_model => my_routine - - - implicit none - - - contains - - ! here is a list of what this routine needs to set. - ! star arrays have been allocated but nothing else. - ! note that nz is set by RSP_nz. - - ! scalars - ! M_center, L_center, R_center, v_center - ! star_mass, mstar, xmstar, tau_factor, rsp_period - - ! vectors - ! m, dm, dm_bar, r, Vol, v, T, w, Fr, erad, L - ! don't need to set xh or xa - - subroutine null_other_rsp_build_model(id, ierr) - use star_def - integer, intent(in) :: id ! star id if available; 0 otherwise - integer, intent(out) :: ierr ! 0 means AOK. - write(*,*) 'no implementation for other_rsp_build_model' - ierr = -1 - end subroutine null_other_rsp_build_model - - - end module other_rsp_build_model - - - - + +module other_rsp_build_model + + ! consult star/other/README for general usage instructions + ! control name: use_other_RSP_build_model = .true. + ! procedure pointer: s% other_rsp_build_model => my_routine + + implicit none + +contains + + ! here is a list of what this routine needs to set. + ! star arrays have been allocated but nothing else. + ! note that nz is set by RSP_nz. + + ! scalars + ! M_center, L_center, R_center, v_center + ! star_mass, mstar, xmstar, tau_factor, rsp_period + + ! vectors + ! m, dm, dm_bar, r, Vol, v, T, w, Fr, erad, L + ! don't need to set xh or xa + + subroutine null_other_rsp_build_model(id, ierr) + use star_def + integer, intent(in) :: id ! star id if available; 0 otherwise + integer, intent(out) :: ierr ! 0 means AOK. + write (*, *) 'no implementation for other_rsp_build_model' + ierr = -1 + end subroutine null_other_rsp_build_model + +end module other_rsp_build_model + diff --git a/star/other/other_rsp_linear_analysis.f90 b/star/other/other_rsp_linear_analysis.f90 index 59b3e05c8..b06e190f6 100644 --- a/star/other/other_rsp_linear_analysis.f90 +++ b/star/other/other_rsp_linear_analysis.f90 @@ -22,37 +22,29 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_rsp_linear_analysis - ! consult star/other/README for general usage instructions - ! control name: use_other_RSP_linear_analysis = .true. - ! procedure pointer: s% other_rsp_linear_analysis => my_routine +module other_rsp_linear_analysis + ! consult star/other/README for general usage instructions + ! control name: use_other_RSP_linear_analysis = .true. + ! procedure pointer: s% other_rsp_linear_analysis => my_routine - use star_def + use star_def + + implicit none - implicit none - - - contains +contains + subroutine null_other_rsp_linear_analysis(id, restart, ierr) + use star_def + integer, intent(in) :: id ! star id if available; 0 otherwise + logical, intent(in) :: restart + integer, intent(out) :: ierr ! 0 means AOK. - subroutine null_other_rsp_linear_analysis(id, restart, ierr) - use star_def - integer, intent(in) :: id ! star id if available; 0 otherwise - logical, intent(in) :: restart - integer, intent(out) :: ierr ! 0 means AOK. - - write(*,*) 'no implementation for other_rsp_linear_analysis' - ierr = -1 + write (*, *) 'no implementation for other_rsp_linear_analysis' + ierr = -1 - end subroutine null_other_rsp_linear_analysis - + end subroutine null_other_rsp_linear_analysis +end module other_rsp_linear_analysis - end module other_rsp_linear_analysis - - - - diff --git a/star/other/other_screening.f90 b/star/other/other_screening.f90 index 1ecea2719..1149924eb 100644 --- a/star/other/other_screening.f90 +++ b/star/other/other_screening.f90 @@ -22,32 +22,31 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_screening + +module other_screening implicit none - ! set use_other_screening = .true. in your controls namelist - + ! set use_other_screening = .true. in your controls namelist + ! edit the extras_controls routine to set the procedure pointer ! other_screening => my_screening - contains - +contains subroutine default_other_screening(sc, z1, z2, a1, a2, screen, dscreendt, dscreendd, ierr) use rates_def implicit none - type (Screen_Info) :: sc ! See rates_def + type(Screen_Info) :: sc ! See rates_def ! This contains lots of useful things like temperature, density etc as well as some precomputed ! terms that are useful for screening calculations. The derived type is set in do_screen_set_context (screen.f90) - real(dp),intent(in) :: z1, z2 !< charge numbers of reactants - real(dp),intent(in) :: a1, a2 !< mass numbers of reactants - real(dp),intent(out) :: screen !< on return, screening factor for this reaction - real(dp),intent(out) :: dscreendt !< on return, temperature derivative of the screening factor - real(dp),intent(out) :: dscreendd !< on return, density derivative of the screening factor + real(dp), intent(in) :: z1, z2 !< charge numbers of reactants + real(dp), intent(in) :: a1, a2 !< mass numbers of reactants + real(dp), intent(out) :: screen !< on return, screening factor for this reaction + real(dp), intent(out) :: dscreendt !< on return, temperature derivative of the screening factor + real(dp), intent(out) :: dscreendd !< on return, density derivative of the screening factor integer, intent(out) :: ierr screen = 0d0 @@ -56,11 +55,5 @@ subroutine default_other_screening(sc, z1, z2, a1, a2, screen, dscreendt, dscree ierr = 0 end subroutine default_other_screening +end module other_screening - - end module other_screening - - - - - \ No newline at end of file diff --git a/star/other/other_set_pgstar_controls.f90 b/star/other/other_set_pgstar_controls.f90 index d252c1cc0..fd908a63f 100644 --- a/star/other/other_set_pgstar_controls.f90 +++ b/star/other/other_set_pgstar_controls.f90 @@ -22,33 +22,26 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_set_pgstar_controls - ! consult star/other/README for general usage instructions - ! control name: use_other_set_pgstar_controls = .true. - ! procedure pointer: s% other_set_pgstar_controls => my_routine +module other_set_pgstar_controls + ! consult star/other/README for general usage instructions + ! control name: use_other_set_pgstar_controls = .true. + ! procedure pointer: s% other_set_pgstar_controls => my_routine - implicit none - - - contains - - - subroutine default_other_set_pgstar_controls(id) - use star_def - integer, intent(in) :: id - type (star_info), pointer :: s - integer :: ierr - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - end subroutine default_other_set_pgstar_controls + implicit none +contains + + subroutine default_other_set_pgstar_controls(id) + use star_def + integer, intent(in) :: id + type(star_info), pointer :: s + integer :: ierr + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + end subroutine default_other_set_pgstar_controls + +end module other_set_pgstar_controls - end module other_set_pgstar_controls - - - - diff --git a/star/other/other_solver_monitor.f90 b/star/other/other_solver_monitor.f90 index e9e1e45b2..af511fdfa 100644 --- a/star/other/other_solver_monitor.f90 +++ b/star/other/other_solver_monitor.f90 @@ -22,41 +22,33 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_solver_monitor - ! consult star/other/README for general usage instructions - ! control name: use_other_solver_monitor = .true. - ! procedure pointer: s% other_solver_monitor => my_routine +module other_solver_monitor + ! consult star/other/README for general usage instructions + ! control name: use_other_solver_monitor = .true. + ! procedure pointer: s% other_solver_monitor => my_routine - implicit none - - - contains - - - subroutine default_other_solver_monitor( & - id, iter, passed_tol_tests, & - correction_norm, max_correction, & - residual_norm, max_residual, ierr) - use star_def - integer, intent(in) :: id, iter - ! iter is the number of the iteration we have just finished - logical, intent(in) :: passed_tol_tests - real(dp), intent(in) :: correction_norm, max_correction, & - residual_norm, max_residual - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - end subroutine default_other_solver_monitor + implicit none +contains + + subroutine default_other_solver_monitor( & + id, iter, passed_tol_tests, & + correction_norm, max_correction, & + residual_norm, max_residual, ierr) + use star_def + integer, intent(in) :: id, iter + ! iter is the number of the iteration we have just finished + logical, intent(in) :: passed_tol_tests + real(dp), intent(in) :: correction_norm, max_correction, & + residual_norm, max_residual + integer, intent(out) :: ierr + type(star_info), pointer :: s + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + end subroutine default_other_solver_monitor + +end module other_solver_monitor - end module other_solver_monitor - - - - diff --git a/star/other/other_split_burn.f90 b/star/other/other_split_burn.f90 index 6c8900362..7f09fbf9b 100644 --- a/star/other/other_split_burn.f90 +++ b/star/other/other_split_burn.f90 @@ -22,103 +22,94 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_split_burn - ! consult star/other/README for general usage instructions - ! control name: use_other_split_burn = .true. - ! procedure pointer: s% other_split_burn => my_routine - ! This also require op_split_burn = .true. as well as setting the other op_split_burn options +module other_split_burn - implicit none - - - contains - - - subroutine null_other_split_burn( & - id, k, net_handle, eos_handle, num_isos, num_reactions, t_start, t_end, starting_x, & - num_times_for_interpolation, times, log10Ts_f1, log10Rhos_f1, etas_f1, & - dxdt_source_term, rate_factors, & - weak_rate_factor, reaction_Qs, reaction_neuQs, & - screening_mode, & - stptry, max_steps, eps, odescal, & - use_pivoting, trace, dbg, burner_finish_substep, & - ! results - ending_x, eps_nuc_categories, avg_eps_nuc, eps_neu_total, & - nfcn, njac, nstep, naccpt, nrejct, ierr) - use star_def - use net_def - use chem_def, only: num_categories - - integer, intent(in) :: net_handle, eos_handle, id - integer, intent(in) :: num_isos - integer, intent(in) :: num_reactions - real(dp), intent(in) :: t_start, t_end, starting_x(:) ! (num_isos) - - integer, intent(in) :: num_times_for_interpolation - ! ending time is times(num_times); starting time is 0 - real(dp), pointer, intent(in) :: times(:) ! (num_times) - real(dp), pointer, intent(in) :: log10Ts_f1(:) ! =(4,numtimes) interpolant for log10T(time) - real(dp), pointer, intent(in) :: log10Rhos_f1(:) ! =(4,numtimes) interpolant for log10Rho(time) - real(dp), pointer, intent(in) :: etas_f1(:) ! =(4,numtimes) interpolant for eta(time) - real(dp), pointer, intent(in) :: dxdt_source_term(:) ! (num_isos) or null if no source term. - real(dp), intent(in), pointer :: rate_factors(:) ! (num_reactions) - real(dp), intent(in) :: weak_rate_factor - real(dp), pointer, intent(in) :: reaction_Qs(:) ! (rates_reaction_id_max) - real(dp), pointer, intent(in) :: reaction_neuQs(:) ! (rates_reaction_id_max) - integer, intent(in) :: screening_mode ! see screen_def - real(dp), intent(in) :: stptry ! try this for 1st step. 0 means try in 1 step. - integer, intent(in) :: max_steps ! maximal number of allowed steps. - real(dp), intent(in) :: eps, odescal ! tolerances. e.g., set both to 1d-6 - logical, intent(in) :: use_pivoting ! for matrix solves - logical, intent(in) :: trace, dbg - interface - include 'burner_finish_substep.inc' - end interface + ! consult star/other/README for general usage instructions + ! control name: use_other_split_burn = .true. + ! procedure pointer: s% other_split_burn => my_routine + ! This also require op_split_burn = .true. as well as setting the other op_split_burn options - ! These should be set for the output - real(dp), intent(inout) :: ending_x(:) ! (num_isos) - real(dp), intent(inout) :: eps_nuc_categories(:) ! (num_categories) - real(dp), intent(out) :: avg_eps_nuc, eps_neu_total - integer, intent(out) :: nfcn ! number of function evaluations - integer, intent(out) :: njac ! number of jacobian evaluations - integer, intent(out) :: nstep ! number of computed steps - integer, intent(out) :: naccpt ! number of accepted steps - integer, intent(out) :: nrejct ! number of rejected steps - integer, intent(out) :: ierr + implicit none - type (star_info), pointer :: s - integer,intent(in) :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return +contains + + subroutine null_other_split_burn( & + id, k, net_handle, eos_handle, num_isos, num_reactions, t_start, t_end, starting_x, & + num_times_for_interpolation, times, log10Ts_f1, log10Rhos_f1, etas_f1, & + dxdt_source_term, rate_factors, & + weak_rate_factor, reaction_Qs, reaction_neuQs, & + screening_mode, & + stptry, max_steps, eps, odescal, & + use_pivoting, trace, dbg, burner_finish_substep, & + ! results + ending_x, eps_nuc_categories, avg_eps_nuc, eps_neu_total, & + nfcn, njac, nstep, naccpt, nrejct, ierr) + use star_def + use net_def + use chem_def, only: num_categories + integer, intent(in) :: net_handle, eos_handle, id + integer, intent(in) :: num_isos + integer, intent(in) :: num_reactions + real(dp), intent(in) :: t_start, t_end, starting_x(:) ! (num_isos) - contains + integer, intent(in) :: num_times_for_interpolation + ! ending time is times(num_times); starting time is 0 + real(dp), pointer, intent(in) :: times(:) ! (num_times) + real(dp), pointer, intent(in) :: log10Ts_f1(:) ! =(4,numtimes) interpolant for log10T(time) + real(dp), pointer, intent(in) :: log10Rhos_f1(:) ! =(4,numtimes) interpolant for log10Rho(time) + real(dp), pointer, intent(in) :: etas_f1(:) ! =(4,numtimes) interpolant for eta(time) + real(dp), pointer, intent(in) :: dxdt_source_term(:) ! (num_isos) or null if no source term. + real(dp), intent(in), pointer :: rate_factors(:) ! (num_reactions) + real(dp), intent(in) :: weak_rate_factor + real(dp), pointer, intent(in) :: reaction_Qs(:) ! (rates_reaction_id_max) + real(dp), pointer, intent(in) :: reaction_neuQs(:) ! (rates_reaction_id_max) + integer, intent(in) :: screening_mode ! see screen_def + real(dp), intent(in) :: stptry ! try this for 1st step. 0 means try in 1 step. + integer, intent(in) :: max_steps ! maximal number of allowed steps. + real(dp), intent(in) :: eps, odescal ! tolerances. e.g., set both to 1d-6 + logical, intent(in) :: use_pivoting ! for matrix solves + logical, intent(in) :: trace, dbg + interface + include 'burner_finish_substep.inc' + end interface + ! These should be set for the output + real(dp), intent(inout) :: ending_x(:) ! (num_isos) + real(dp), intent(inout) :: eps_nuc_categories(:) ! (num_categories) + real(dp), intent(out) :: avg_eps_nuc, eps_neu_total + integer, intent(out) :: nfcn ! number of function evaluations + integer, intent(out) :: njac ! number of jacobian evaluations + integer, intent(out) :: nstep ! number of computed steps + integer, intent(out) :: naccpt ! number of accepted steps + integer, intent(out) :: nrejct ! number of rejected steps + integer, intent(out) :: ierr - subroutine my_burn_finish_substep(nstp, time, y, ierr) - use chem_def, only: category_name - integer,intent(in) :: nstp - real(dp), intent(in) :: time, y(:) - integer, intent(out) :: ierr - real(dp) :: frac, step_time - integer :: j, i - include 'formats' - ierr = 0 - ! This routine does nothing other than set ierr = 0, - ! Leave this empty if you dont want to do anything otherwise - ! Else replace the burn_finish_substep with this routine if - ! passing to net_1_zone_burn - end subroutine my_burn_finish_substep + type(star_info), pointer :: s + integer, intent(in) :: k + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + contains + + subroutine my_burn_finish_substep(nstp, time, y, ierr) + !use chem_def, only: category_name + integer, intent(in) :: nstp + real(dp), intent(in) :: time, y(:) + integer, intent(out) :: ierr + !real(dp) :: frac + !integer :: j, i + include 'formats' + ierr = 0 + ! This routine does nothing other than set ierr = 0, + ! Leave this empty if you dont want to do anything otherwise + ! Else replace the burn_finish_substep with this routine if + ! passing to net_1_zone_burn + end subroutine my_burn_finish_substep - end subroutine null_other_split_burn + end subroutine null_other_split_burn +end module other_split_burn - end module other_split_burn - - - - diff --git a/star/other/other_surface_pt.f90 b/star/other/other_surface_pt.f90 index 06bdb28be..8ca1561bd 100644 --- a/star/other/other_surface_pt.f90 +++ b/star/other/other_surface_pt.f90 @@ -22,56 +22,51 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_surface_PT - ! consult star/other/README for general usage instructions - ! control name: use_other_surface_PT = .true. - ! procedure pointer: s% other_surface_PT => my_routine +module other_surface_PT + ! consult star/other/README for general usage instructions + ! control name: use_other_surface_PT = .true. + ! procedure pointer: s% other_surface_PT => my_routine - implicit none - - contains - - ! star_utils:set_phot_info sets s% Teff before this is called - ! see hydro_vars:set_Teff_info_for_eqns - - subroutine null_other_surface_PT(id, & - skip_partials, & - lnT_surf, dlnT_dL, dlnT_dlnR, dlnT_dlnM, dlnT_dlnkap, & - lnP_surf, dlnP_dL, dlnP_dlnR, dlnP_dlnM, dlnP_dlnkap, ierr) - use const_def, only: dp - use star_def - !use star_lib, only: star_get_surf_PT - integer, intent(in) :: id - logical, intent(in) :: skip_partials - real(dp), intent(out) :: & - lnT_surf, dlnT_dL, dlnT_dlnR, dlnT_dlnM, dlnT_dlnkap, & - lnP_surf, dlnP_dL, dlnP_dlnR, dlnP_dlnM, dlnP_dlnkap - integer, intent(out) :: ierr - lnT_surf = 0 - dlnT_dL = 0 - dlnT_dlnR = 0 - dlnT_dlnM = 0 - dlnT_dlnkap = 0 - lnP_surf = 0 - dlnP_dL = 0 - dlnP_dlnR = 0 - dlnP_dlnM = 0 - dlnP_dlnkap = 0 - ierr = -1 - - !call star_get_surf_PT(id, & - ! skip_partials, & - ! Teff, lnT_surf, dlnT_dL, dlnT_dlnR, dlnT_dlnM, dlnT_dlnkap, & - ! lnP_surf, dlnP_dL, dlnP_dlnR, dlnP_dlnM, dlnP_dlnkap, ierr) - - end subroutine null_other_surface_PT + implicit none +contains - end module other_surface_PT - + ! star_utils:set_phot_info sets s% Teff before this is called + ! see hydro_vars:set_Teff_info_for_eqns + subroutine null_other_surface_PT(id, & + skip_partials, & + lnT_surf, dlnT_dL, dlnT_dlnR, dlnT_dlnM, dlnT_dlnkap, & + lnP_surf, dlnP_dL, dlnP_dlnR, dlnP_dlnM, dlnP_dlnkap, ierr) + use const_def, only: dp + use star_def + !use star_lib, only: star_get_surf_PT + integer, intent(in) :: id + logical, intent(in) :: skip_partials + real(dp), intent(out) :: & + lnT_surf, dlnT_dL, dlnT_dlnR, dlnT_dlnM, dlnT_dlnkap, & + lnP_surf, dlnP_dL, dlnP_dlnR, dlnP_dlnM, dlnP_dlnkap + integer, intent(out) :: ierr + lnT_surf = 0 + dlnT_dL = 0 + dlnT_dlnR = 0 + dlnT_dlnM = 0 + dlnT_dlnkap = 0 + lnP_surf = 0 + dlnP_dL = 0 + dlnP_dlnR = 0 + dlnP_dlnM = 0 + dlnP_dlnkap = 0 + ierr = -1 + !call star_get_surf_PT(id, & + ! skip_partials, & + ! Teff, lnT_surf, dlnT_dL, dlnT_dlnR, dlnT_dlnM, dlnT_dlnkap, & + ! lnP_surf, dlnP_dL, dlnP_dlnR, dlnP_dlnM, dlnP_dlnkap, ierr) + + end subroutine null_other_surface_PT + +end module other_surface_PT diff --git a/star/other/other_timestep_limit.f90 b/star/other/other_timestep_limit.f90 index 6394b19fa..6372f1dd2 100644 --- a/star/other/other_timestep_limit.f90 +++ b/star/other/other_timestep_limit.f90 @@ -22,30 +22,27 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_timestep_limit - ! consult star/other/README for general usage instructions - ! control name: use_other_timestep_limit = .true. - ! procedure pointer: s% other_timestep_limit => my_routine +module other_timestep_limit - implicit none - - contains - - integer function null_other_timestep_limit( & - id, skip_hard_limit, dt, dt_limit_ratio) - use const_def, only: dp - use star_def - integer, intent(in) :: id - logical, intent(in) :: skip_hard_limit - real(dp), intent(in) :: dt - real(dp), intent(inout) :: dt_limit_ratio - null_other_timestep_limit = keep_going - end function null_other_timestep_limit + ! consult star/other/README for general usage instructions + ! control name: use_other_timestep_limit = .true. + ! procedure pointer: s% other_timestep_limit => my_routine + + implicit none + +contains + + integer function null_other_timestep_limit( & + id, skip_hard_limit, dt, dt_limit_ratio) + use const_def, only: dp + use star_def + integer, intent(in) :: id + logical, intent(in) :: skip_hard_limit + real(dp), intent(in) :: dt + real(dp), intent(inout) :: dt_limit_ratio + null_other_timestep_limit = keep_going + end function null_other_timestep_limit + +end module other_timestep_limit - end module other_timestep_limit - - - - diff --git a/star/other/other_torque.f90 b/star/other/other_torque.f90 index cda94b120..4a6d550d1 100644 --- a/star/other/other_torque.f90 +++ b/star/other/other_torque.f90 @@ -22,36 +22,30 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_torque - ! consult star/other/README for general usage instructions - ! control name: use_other_torque = .true. - ! procedure pointer: s% other_torque => my_routine +module other_torque - implicit none - - - contains - - subroutine default_other_torque(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - ! note that can set extra_omegadot instead of extra_jdot if that is more convenient - ! set one or the other, not both. set the one you are not using to 0 as in the following line. - s% extra_jdot(:) = 0 - s% extra_omegadot(:) = 0 - end subroutine default_other_torque + ! consult star/other/README for general usage instructions + ! control name: use_other_torque = .true. + ! procedure pointer: s% other_torque => my_routine + implicit none + +contains + + subroutine default_other_torque(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + type(star_info), pointer :: s + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + ! note that can set extra_omegadot instead of extra_jdot if that is more convenient + ! set one or the other, not both. set the one you are not using to 0 as in the following line. + s%extra_jdot(:) = 0 + s%extra_omegadot(:) = 0 + end subroutine default_other_torque + +end module other_torque - end module other_torque - - - - diff --git a/star/other/other_torque_implicit.f90 b/star/other/other_torque_implicit.f90 index fb2a14351..5b0ebefb3 100644 --- a/star/other/other_torque_implicit.f90 +++ b/star/other/other_torque_implicit.f90 @@ -22,41 +22,34 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_torque_implicit - ! consult star/other/README for general usage instructions - ! control name: use_other_torque_implicit = .true. - ! procedure pointer: s% other_torque_implicit => my_routine +module other_torque_implicit - implicit none - - - contains - - - subroutine default_other_torque_implicit(id, ierr) - use star_def - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - integer :: k - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - s% extra_jdot(:) = 0 - s% extra_omegadot(:) = 0 - s% d_extra_jdot_domega_m1(:) = 0 - s% d_extra_omegadot_domega_m1(:) = 0 - s% d_extra_jdot_domega_00(:) = 0 - s% d_extra_omegadot_domega_00(:) = 0 - s% d_extra_jdot_domega_p1(:) = 0 - s% d_extra_omegadot_domega_p1(:) = 0 - end subroutine default_other_torque_implicit + ! consult star/other/README for general usage instructions + ! control name: use_other_torque_implicit = .true. + ! procedure pointer: s% other_torque_implicit => my_routine + implicit none + +contains + + subroutine default_other_torque_implicit(id, ierr) + use star_def + integer, intent(in) :: id + integer, intent(out) :: ierr + type(star_info), pointer :: s + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + s%extra_jdot(:) = 0 + s%extra_omegadot(:) = 0 + s%d_extra_jdot_domega_m1(:) = 0 + s%d_extra_omegadot_domega_m1(:) = 0 + s%d_extra_jdot_domega_00(:) = 0 + s%d_extra_omegadot_domega_00(:) = 0 + s%d_extra_jdot_domega_p1(:) = 0 + s%d_extra_omegadot_domega_p1(:) = 0 + end subroutine default_other_torque_implicit + +end module other_torque_implicit - end module other_torque_implicit - - - - diff --git a/star/other/other_wind.f90 b/star/other/other_wind.f90 index 583e26588..2576655fd 100644 --- a/star/other/other_wind.f90 +++ b/star/other/other_wind.f90 @@ -22,42 +22,36 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module other_wind - - ! consult star/other/README for general usage instructions - ! control name: use_other_wind = .true. - ! procedure pointer: s% other_wind => my_routine - - - ! you can add your own wind routine for use when wind scheme == 'other' - - implicit none - - - contains - - ! Note that your routine will be called before many star variables have been set. - ! If you rely on these, you should call the star_set_vars_in_part1 routine from star_lib - ! to ensure that they are set. - subroutine null_other_wind(id, Lsurf, Msurf, Rsurf, Tsurf, X, Y, Z, w, ierr) - use star_def - integer, intent(in) :: id - real(dp), intent(in) :: Lsurf, Msurf, Rsurf, Tsurf, X, Y, Z ! surface values (cgs) - ! NOTE: surface is outermost cell. not necessarily at photosphere. - ! NOTE: don't assume that vars are set at this point. - ! so if you want values other than those given as args, - ! you should use values from s% xh(:,:) and s% xa(:,:) only. - ! rather than things like s% Teff or s% lnT(:) which have not been set yet. - real(dp), intent(out) :: w ! wind in units of Msun/year (value is >= 0) - integer, intent(out) :: ierr - w = 0 - ierr = 0 - end subroutine null_other_wind - - - end module other_wind - - - - + +module other_wind + + ! consult star/other/README for general usage instructions + ! control name: use_other_wind = .true. + ! procedure pointer: s% other_wind => my_routine + + ! you can add your own wind routine for use when wind scheme == 'other' + + implicit none + +contains + + ! Note that your routine will be called before many star variables have been set. + ! If you rely on these, you should call the star_set_vars_in_part1 routine from star_lib + ! to ensure that they are set. + subroutine null_other_wind(id, Lsurf, Msurf, Rsurf, Tsurf, X, Y, Z, w, ierr) + use star_def + integer, intent(in) :: id + real(dp), intent(in) :: Lsurf, Msurf, Rsurf, Tsurf, X, Y, Z ! surface values (cgs) + ! NOTE: surface is outermost cell. not necessarily at photosphere. + ! NOTE: don't assume that vars are set at this point. + ! so if you want values other than those given as args, + ! you should use values from s% xh(:,:) and s% xa(:,:) only. + ! rather than things like s% Teff or s% lnT(:) which have not been set yet. + real(dp), intent(out) :: w ! wind in units of Msun/year (value is >= 0) + integer, intent(out) :: ierr + w = 0 + ierr = 0 + end subroutine null_other_wind + +end module other_wind + diff --git a/star/other/pgstar_decorator.f90 b/star/other/pgstar_decorator.f90 index e1f1dee36..f98f6a936 100644 --- a/star/other/pgstar_decorator.f90 +++ b/star/other/pgstar_decorator.f90 @@ -22,35 +22,33 @@ ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! *********************************************************************** - - module pgstar_decorator - - ! NOTE: remember to set X_use_decorator = .true. to enable this, - ! where X is the name of the pgstar plot - ! and set s% pg% X_pgstar_decorator => your_function in your - ! run_star_extras.f - - ! List of pgplot routines: http://www.astro.caltech.edu/~tjp/pgplot/annlist.html - - implicit none - - - contains - - - ! default does nothing - ! xmin, xmax, ymin, ymax: current plot boundary - ! plot_num: If a plot has multiple sub-panels, then this tells you which panel is being called - subroutine null_pgstar_decorator(id, xmin, xmax, ymin, ymax, plot_num, ierr) - use star_def - use const_def - integer, intent(in) :: id - !Not doubles - real,intent(in) :: xmin, xmax, ymin, ymax - integer, intent(in) :: plot_num - integer, intent(out) :: ierr - ierr = 0 - end subroutine null_pgstar_decorator + +module pgstar_decorator + + ! NOTE: remember to set X_use_decorator = .true. to enable this, + ! where X is the name of the pgstar plot + ! and set s% pg% X_pgstar_decorator => your_function in your + ! run_star_extras.f + + ! List of pgplot routines: http://www.astro.caltech.edu/~tjp/pgplot/annlist.html + + implicit none + +contains + + ! default does nothing + ! xmin, xmax, ymin, ymax: current plot boundary + ! plot_num: If a plot has multiple sub-panels, then this tells you which panel is being called + subroutine null_pgstar_decorator(id, xmin, xmax, ymin, ymax, plot_num, ierr) + use star_def + use const_def + integer, intent(in) :: id + !Not doubles + real, intent(in) :: xmin, xmax, ymin, ymax + integer, intent(in) :: plot_num + integer, intent(out) :: ierr + ierr = 0 + end subroutine null_pgstar_decorator ! Example function to add squares and some text to the abundance plot ! subroutine Abundance_pgstar_decorator(id, xmin, xmax, ymin, ymax, plot_num, ierr) @@ -58,36 +56,33 @@ end subroutine null_pgstar_decorator ! use const_def ! integer, intent(in) :: id ! !Not dp -! real,intent(in) :: xmin, xmax, ymin, ymax +! real,intent(in) :: xmin, xmax, ymin, ymax ! real :: xcenter,ycenter,dx,dy,a ! integer, intent(out) :: ierr ! integer :: i ! type (star_info), pointer :: s - + ! ierr = 0 ! call star_ptr(id, s, ierr) ! if (ierr /= 0) return - + ! dx=(xmax-xmin) ! dy=(ymax-ymin) - + ! xcenter=xmin+dx*0.5 ! ycenter=ymin+dy*0.5 - + ! call pgsci(clr_Coral) - + ! do i=1,4 ! a=(i/10.0) ! call pgline(5, (/xcenter-a*dx,xcenter-a*dx,xcenter+a*dx,xcenter+a*dx,xcenter-a*dx/),& ! (/ycenter-a*dy,ycenter+a*dy,ycenter+a*dy,ycenter-a*dy,ycenter-a*dy/)) ! end do - + ! call pgptxt(xcenter,ycenter, 0.0, 1.0, 'Some added text on this plot') - + ! end subroutine Abundance_pgstar_decorator - end module pgstar_decorator - - - - +end module pgstar_decorator + diff --git a/star/other/sample_pgstar_plot.f90 b/star/other/sample_pgstar_plot.f90 index 2ad2ea2c3..a8e5c8f98 100644 --- a/star/other/sample_pgstar_plot.f90 +++ b/star/other/sample_pgstar_plot.f90 @@ -23,422 +23,399 @@ ! ! *********************************************************************** - module sample_pgstar_plot - - ! you can add your own pgstar plots in addition to the standard ones. - ! don't edit this file - ! instead copy the contents to your src/run_star_extras file and edit that. - - ! edit the extras_controls routine to set s% other_pgstar_plots_info - ! s% other_pgstar_plots_info => my_pgstar_plots_info - - - use star_lib - use star_def - use math_lib - use star_pgstar - - implicit none - - - ! basics needed for every pgstar plot - logical :: my_win_flag, my_file_flag - integer :: my_file_interval - character (len=256) :: my_file_dir, my_file_prefix - real :: & - my_win_width, my_win_aspect_ratio, & - my_file_width, my_file_aspect_ratio - - ! optional extra controls - character (len=256) :: my_xaxis_by - real :: & - my_xmin, my_xmax, & - my_ymin_left, my_ymax_left, my_dymin_left, & - my_ymin_right, my_ymax_right, my_dymin_right - - - namelist /my_pgstar/ & - my_win_flag, my_file_flag, & - my_file_interval, & - my_file_dir, my_file_prefix, & - my_win_width, my_win_aspect_ratio, & - my_file_width, my_file_aspect_ratio, & - my_xaxis_by, my_xmin, my_xmax, & - my_ymin_left, my_ymax_left, my_dymin_left, & - my_ymin_right, my_ymax_right, my_dymin_right - - - contains - - - subroutine my_pgstar_plots_info(id, ierr) - integer, intent(in) :: id +module sample_pgstar_plot + + ! you can add your own pgstar plots in addition to the standard ones. + ! don't edit this file + ! instead copy the contents to your src/run_star_extras file and edit that. + + ! edit the extras_controls routine to set s% other_pgstar_plots_info + ! s% other_pgstar_plots_info => my_pgstar_plots_info + + use star_lib + use star_def + use math_lib + use star_pgstar + + implicit none + + ! basics needed for every pgstar plot + logical :: my_win_flag, my_file_flag + integer :: my_file_interval + character(len=256) :: my_file_dir, my_file_prefix + real :: & + my_win_width, my_win_aspect_ratio, & + my_file_width, my_file_aspect_ratio + + ! optional extra controls + character(len=256) :: my_xaxis_by + real :: & + my_xmin, my_xmax, & + my_ymin_left, my_ymax_left, my_dymin_left, & + my_ymin_right, my_ymax_right, my_dymin_right + + namelist /my_pgstar/ & + my_win_flag, my_file_flag, & + my_file_interval, & + my_file_dir, my_file_prefix, & + my_win_width, my_win_aspect_ratio, & + my_file_width, my_file_aspect_ratio, & + my_xaxis_by, my_xmin, my_xmax, & + my_ymin_left, my_ymax_left, my_dymin_left, & + my_ymin_right, my_ymax_right, my_dymin_right + +contains + + subroutine my_pgstar_plots_info(id, ierr) + integer, intent(in) :: id + integer, intent(out) :: ierr + + integer, parameter :: num_Other_plots = 1 ! can have up to max_num_Other_plots + integer :: i, plot_id + type(pgstar_win_file_data), pointer :: p + type(star_info), pointer :: s + + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + + call set_my_namelist_defaults + call read_my_pgstar_namelist('inlist_for_my_pgstar_plots', ierr) + if (ierr /= 0) return + + do i = 1, num_Other_plots + plot_id = i_Other + i - 1 + p => s%pg%pgstar_win_file_ptr(plot_id) + p%plot => my_plot + p%id = plot_id + p%name = 'My_Plot' + p%win_flag = my_win_flag + p%win_width = my_win_width + p%win_aspect_ratio = my_win_aspect_ratio + p%file_flag = my_file_flag + p%file_dir = my_file_dir + p%file_prefix = my_file_prefix + p%file_interval = my_file_interval + p%file_width = my_file_width + p%file_aspect_ratio = my_file_aspect_ratio + end do + + end subroutine my_pgstar_plots_info + + subroutine set_my_namelist_defaults + + my_win_flag = .false. + + my_win_width = 7 + my_win_aspect_ratio = 0.62 ! aspect_ratio = height/width + + my_xaxis_by = 'mass' ! same choices as for main window xaxis_by + my_xmin = -101 ! only used if > -100 + my_xmax = -101 ! only used if > -100 + + my_ymin_left = -101 ! only used if > -100 + my_ymax_left = -101 ! only used if > -100 + my_dymin_left = -101 ! only used if > -100 + + my_ymin_right = -101 ! only used if > -100 + my_ymax_right = -101 ! only used if > -100 + my_dymin_right = -101 ! only used if > -100 + + ! file output + my_file_flag = .false. + my_file_dir = 'pgstar_out' + my_file_prefix = 'profile' + my_file_interval = 5 ! output when mod(model_number,my_file_interval)==0 + my_file_width = -1 ! negative means use same value as for window + my_file_aspect_ratio = -1 ! negative means use same value as for window + + end subroutine set_my_namelist_defaults + + subroutine read_my_pgstar_namelist(filename, ierr) + use utils_lib + character(*), intent(in) :: filename + integer, intent(out) :: ierr + + integer :: unit + + ierr = 0 + + open (newunit=unit, file=trim(filename), action='read', delim='quote', status='old', iostat=ierr) + if (ierr /= 0) then + write (*, '(a)') 'Failed to open control namelist file '//trim(filename) + return + end if + read (unit, nml=my_pgstar, iostat=ierr) + close (unit) + + if (ierr /= 0) then + write (*, *) + write (*, *) + write (*, *) + write (*, *) + write (*, '(a)') & + 'Failed while trying to read control namelist file: '//trim(filename) + write (*, '(a)') & + 'Perhaps the following runtime error message will help you find the problem.' + write (*, *) + open (newunit=unit, file=trim(filename), action='read', delim='quote', status='old', iostat=ierr) + read (unit, nml=my_pgstar) + close (unit) + return + end if + + end subroutine read_my_pgstar_namelist + + subroutine my_plot(id, device_id, ierr) + integer, intent(in) :: id, device_id + integer, intent(out) :: ierr + + real :: winxmin, winxmax, winymin, winymax, label_scale + + type(star_info), pointer :: s + + ierr = 0 + call star_ptr(id, s, ierr) + if (ierr /= 0) return + + call pgslct(device_id) + call pgbbuf() + call pgeras() + + winxmin = 0.14 + winxmax = 0.85 + winymin = 0.13 + winymax = 0.92 + label_scale = 1.2 + + call do_my_plot(s, device_id, & + winxmin, winxmax, winymin, winymax, & + label_scale, ierr) + + call pgebuf() + + end subroutine my_plot + + subroutine do_my_plot(s, device_id, & + winxmin, winxmax, winymin, winymax, label_scale, ierr) + + use utils_lib + use const_def + + type(star_info), pointer :: s + integer, intent(in) :: device_id + real, intent(in) :: winxmin, winxmax, winymin, winymax, label_scale + integer, intent(out) :: ierr + + real :: xmargin + real :: xmin, xmax, xleft, xright, dx, ymin, ymax, ymin2, ymax2, dy + integer :: grid_min, grid_max, npts, nz + real, allocatable, dimension(:) :: xvec, yvec, yvec2, yvec3 + + logical :: dbg = .false. + + include 'formats' + ierr = 0 + xmargin = 0 + + nz = s%nz + allocate (xvec(nz), yvec(nz), yvec2(nz), yvec3(nz)) + + call set_pgstar_xaxis_bounds( & + s, my_xaxis_by, my_xmin, my_xmax, xmargin, & + xvec, xmin, xmax, xleft, xright, dx, & + grid_min, grid_max, npts, ierr) + if (ierr /= 0) return + + if (dbg) then + write (*, 1) 'my_xaxis_by '//trim(my_xaxis_by) + write (*, 1) 'my_xmin', my_xmin + write (*, 1) 'my_xmax', my_xmax + write (*, 2) 'grid_min', grid_min + write (*, 2) 'grid_max', grid_max + write (*, 1) 'xmin', xmin + write (*, 1) 'xmax', xmax + write (*, 1) 'xleft', xleft + write (*, 1) 'xright', xright + write (*, 1) 'dx', dx + end if + + call plot(ierr) + if (ierr /= 0) return + + deallocate (xvec, yvec, yvec2, yvec3) + + contains + + subroutine plot(ierr) + use rates_def, only: i_rate + use chem_def, only: ipp, icno integer, intent(out) :: ierr - - integer, parameter :: num_Other_plots = 1 ! can have up to max_num_Other_plots - integer :: i, plot_id - type (pgstar_win_file_data), pointer :: p - type (star_info), pointer :: s + integer :: lw, lw_sav, k + real :: default_ymax_left, default_ymin_left, & + default_ymax_right, default_ymin_right + character(len=128) :: str + + include 'formats' ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - - call set_my_namelist_defaults - call read_my_pgstar_namelist('inlist_for_my_pgstar_plots', ierr) + + call pgsave + + lw = 6 + call pgqlw(lw_sav) + + call pgsvp(winxmin, winxmax, winymin, winymax) + + ! title + call pgmtxt('T', 1.5, 0.5, 0.5, 'My Plot') + + call pgsch(label_scale) + write (str, '(i9)') s%model_number + call pgmtxt('T', 1.8, 0.9, 0.5, str) + + ! xlabel + call pgsci(1) + call pgsch(label_scale) + call show_pgstar_xaxis_by(s, my_xaxis_by, ierr) if (ierr /= 0) return - - do i = 1, num_Other_plots - plot_id = i_Other + i - 1 - p => s% pg% pgstar_win_file_ptr(plot_id) - p% plot => my_plot - p% id = plot_id - p% name = 'My_Plot' - p% win_flag = my_win_flag - p% win_width = my_win_width - p% win_aspect_ratio = my_win_aspect_ratio - p% file_flag = my_file_flag - p% file_dir = my_file_dir - p% file_prefix = my_file_prefix - p% file_interval = my_file_interval - p% file_width = my_file_width - p% file_aspect_ratio = my_file_aspect_ratio - end do - - end subroutine my_pgstar_plots_info - - - subroutine set_my_namelist_defaults - - my_win_flag = .false. - - my_win_width = 7 - my_win_aspect_ratio = 0.62 ! aspect_ratio = height/width - - my_xaxis_by = 'mass' ! same choices as for main window xaxis_by - my_xmin = -101 ! only used if > -100 - my_xmax = -101 ! only used if > -100 - - my_ymin_left = -101 ! only used if > -100 - my_ymax_left = -101 ! only used if > -100 - my_dymin_left = -101 ! only used if > -100 - - my_ymin_right = -101 ! only used if > -100 - my_ymax_right = -101 ! only used if > -100 - my_dymin_right = -101 ! only used if > -100 - - ! file output - my_file_flag = .false. - my_file_dir = 'pgstar_out' - my_file_prefix = 'profile' - my_file_interval = 5 ! output when mod(model_number,my_file_interval)==0 - my_file_width = -1 ! negative means use same value as for window - my_file_aspect_ratio = -1 ! negative means use same value as for window - - end subroutine set_my_namelist_defaults - - - subroutine read_my_pgstar_namelist(filename, ierr) - use utils_lib - character(*), intent(in) :: filename - integer, intent(out) :: ierr - integer :: unit - - ierr = 0 - - open(newunit=unit, file=trim(filename), action='read', delim='quote', status='old', iostat=ierr) - if (ierr /= 0) then - write(*,'(a)') 'Failed to open control namelist file '// trim(filename) - return + ! left axis + + default_ymax_left = 10 + default_ymin_left = -2 + + yvec = s%lnd(1:nz)/ln10 + yvec2 = s%lnT(1:nz)/ln10 + + if (my_ymax_left > -100) then + ymax = my_ymax_left + else + ymax = max(default_ymax_left, maxval(yvec(grid_min:grid_max))) + ymax2 = max(default_ymax_left, maxval(yvec2(grid_min:grid_max))) + if (ymax2 > ymax) ymax = ymax2 end if - read(unit, nml=my_pgstar, iostat=ierr) - close(unit) - - if (ierr /= 0) then - write(*, *) - write(*, *) - write(*, *) - write(*, *) - write(*, '(a)') & - 'Failed while trying to read control namelist file: ' // trim(filename) - write(*, '(a)') & - 'Perhaps the following runtime error message will help you find the problem.' - write(*, *) - open(newunit=unit, file=trim(filename), action='read', delim='quote', status='old', iostat=ierr) - read(unit, nml=my_pgstar) - close(unit) - return + + if (my_ymin_left > -100) then + ymin = my_ymin_left + else + ymin = max(default_ymin_left, minval(yvec(grid_min:grid_max))) + ymin2 = max(default_ymin_left, minval(yvec2(grid_min:grid_max))) + if (ymin2 < ymin) ymin = ymin2 end if - - end subroutine read_my_pgstar_namelist + dy = ymax - ymin + if (dy == 0) dy = 1 + if (my_dymin_left > -100) dy = my_dymin_left - subroutine my_plot(id, device_id, ierr) - integer, intent(in) :: id, device_id - integer, intent(out) :: ierr - - real :: winxmin, winxmax, winymin, winymax, label_scale + ymax = ymax + 0.1*dy + ymin = ymin - 0.1*dy - type (star_info), pointer :: s + if (dbg) then + write (*, 1) 'left axis xleft, xright', xleft, xright + write (*, 1) 'left axis ymin, ymax, dy', ymin, ymax, dy + end if + + call pgswin(xleft, xright, ymin, ymax) + call pgscf(1) + call pgsci(1) + call pgsch(label_scale) + call pgbox('', 0.0, 0, 'BNSTV', 0.0, 0) + + call pgsci(clr_Teal) + call pgsch(label_scale) + call pgmtxt('L', 3.6, 0.5, 0.5, 'log density (g cm\u-3\d)') + call pgslw(lw) + call pgline(npts, xvec(grid_min:grid_max), yvec(grid_min:grid_max)) + call pgslw(lw_sav) + + call pgsci(clr_Coral) + call pgmtxt('L', 5.3, 0.5, 0.5, 'log T (K)') + call pgslw(lw) + call pgline(npts, xvec(grid_min:grid_max), yvec2(grid_min:grid_max)) + call pgslw(lw_sav) + + ! right axis + + lw = 8 + + default_ymax_right = 0 + default_ymin_right = -10 + + do k = 1, nz + yvec(k) = safe_log10(s%eps_nuc_categories(ipp, k)) + yvec2(k) = safe_log10(s%eps_nuc_categories(icno, k)) + end do + + if (my_ymax_right > -100) then + ymax = my_ymax_right + else + ymax = max(default_ymax_right, maxval(yvec(grid_min:grid_max))) + ymax2 = max(default_ymax_right, maxval(yvec2(grid_min:grid_max))) + if (ymax2 > ymax) ymax = ymax2 + end if + if (my_ymin_right > -100) then + ymin = my_ymin_right + else + ymin = max(default_ymin_right, minval(yvec(grid_min:grid_max))) + ymin2 = max(default_ymin_right, minval(yvec2(grid_min:grid_max))) + if (ymin2 < ymin) ymin = ymin2 + end if + + dy = ymax - ymin + if (dy == 0) dy = 1 + if (my_dymin_right > -100) dy = my_dymin_right + + ymax = ymax + 0.1*dy + ymin = ymin - 0.1*dy - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - - call pgslct(device_id) - call pgbbuf() - call pgeras() - - winxmin = 0.14 - winxmax = 0.85 - winymin = 0.13 - winymax = 0.92 - label_scale = 1.2 - - call do_my_plot(s, device_id, & - winxmin, winxmax, winymin, winymax, & - label_scale, ierr) - - call pgebuf() - - end subroutine my_plot - - - subroutine do_my_plot(s, device_id, & - winxmin, winxmax, winymin, winymax, label_scale, ierr) - - use utils_lib - use const_def - - type (star_info), pointer :: s - integer, intent(in) :: device_id - real, intent(in) :: winxmin, winxmax, winymin, winymax, label_scale - integer, intent(out) :: ierr - - real :: windy, xmargin - real :: xmin, xmax, xleft, xright, dx, tmp, ymin, ymax, ymin2, ymax2, dy - integer :: grid_min, grid_max, npts, nz - real, allocatable, dimension(:) :: xvec, yvec, yvec2, yvec3 - - logical :: dbg = .false. - - include 'formats' - ierr = 0 - xmargin = 0 - - nz = s% nz - allocate (xvec(nz), yvec(nz), yvec2(nz), yvec3(nz)) - - call set_pgstar_xaxis_bounds( & - s, my_xaxis_by, my_xmin, my_xmax, xmargin, & - xvec, xmin, xmax, xleft, xright, dx, & - grid_min, grid_max, npts, ierr) - if (ierr /= 0) return - if (dbg) then - write(*,1) 'my_xaxis_by ' // trim(my_xaxis_by) - write(*,1) 'my_xmin', my_xmin - write(*,1) 'my_xmax', my_xmax - write(*,2) 'grid_min', grid_min - write(*,2) 'grid_max', grid_max - write(*,1) 'xmin', xmin - write(*,1) 'xmax', xmax - write(*,1) 'xleft', xleft - write(*,1) 'xright', xright - write(*,1) 'dx', dx + write (*, 1) 'right axis xleft, xright', xleft, xright + write (*, 1) 'right axis ymin, ymax, dy', ymin, ymax, dy end if - call plot(ierr) - if (ierr /= 0) return + call pgswin(xleft, xright, ymin, ymax) + + call pgscf(1) + call pgsci(1) + call pgsch(label_scale) + call pgbox('BCNST', 0.0, 0, 'CMSTV', 0.0, 0) + + call pgsci(clr_FireBrick) + call pgmtxt('R', 5.6, 0.5, 0.5, 'log eps PP (erg g\u-1\d s\u-1\d)') + call pgslw(lw) + call pgline(npts, xvec(grid_min:grid_max), yvec2(grid_min:grid_max)) + call pgslw(lw_sav) + + call pgsci(clr_RoyalBlue) + call pgmtxt('R', 3.9, 0.5, 0.5, 'log eps CNO (erg g\u-1\d s\u-1\d)') + call pgslw(lw) + call pgline(npts, xvec(grid_min:grid_max), yvec(grid_min:grid_max)) + call pgslw(lw_sav) + + call pgunsa - deallocate(xvec, yvec, yvec2, yvec3) - - - contains - - - subroutine plot(ierr) - use rates_def, only: i_rate - use chem_def, only: ipp, icno - integer, intent(out) :: ierr - - integer :: lw, lw_sav, k - real :: ybot, eps, & - default_ymax_left, default_ymin_left, & - default_ymax_right, default_ymin_right - character (len=128) :: str - - include 'formats' - ierr = 0 - - call pgsave - - lw = 6 - call pgqlw(lw_sav) - - call pgsvp(winxmin, winxmax, winymin, winymax) - - ! title - call pgmtxt('T',1.5,0.5,0.5,'My Plot') - - call pgsch(label_scale) - write(str,'(i9)') s% model_number - call pgmtxt('T',1.8,0.9,0.5,str) - - ! xlabel - call pgsci(1) - call pgsch(label_scale) - call show_pgstar_xaxis_by(s,my_xaxis_by,ierr) - if (ierr /= 0) return - - - ! left axis - - default_ymax_left = 10 - default_ymin_left = -2 - - yvec = s% lnd(1:nz)/ln10 - yvec2 = s% lnT(1:nz)/ln10 - - if (my_ymax_left > -100) then - ymax = my_ymax_left - else - ymax = max(default_ymax_left,maxval(yvec(grid_min:grid_max))) - ymax2 = max(default_ymax_left,maxval(yvec2(grid_min:grid_max))) - if (ymax2 > ymax) ymax = ymax2 - end if - - if (my_ymin_left > -100) then - ymin = my_ymin_left - else - ymin = max(default_ymin_left,minval(yvec(grid_min:grid_max))) - ymin2 = max(default_ymin_left,minval(yvec2(grid_min:grid_max))) - if (ymin2 < ymin) ymin = ymin2 - end if - - dy = ymax-ymin - if (dy == 0) dy = 1 - if (my_dymin_left > -100) dy = my_dymin_left - - ymax = ymax + 0.1*dy - ymin = ymin - 0.1*dy - - if (dbg) then - write(*,1) 'left axis xleft, xright', xleft, xright - write(*,1) 'left axis ymin, ymax, dy', ymin, ymax, dy - end if - - call pgswin(xleft, xright, ymin, ymax) - call pgscf(1) - call pgsci(1) - call pgsch(label_scale) - call pgbox('',0.0,0,'BNSTV',0.0,0) - - call pgsci(clr_Teal) - call pgsch(label_scale) - call pgmtxt('L',3.6,0.5,0.5,'log density (g cm\u-3\d)') - call pgslw(lw) - call pgline(npts, xvec(grid_min:grid_max), yvec(grid_min:grid_max)) - call pgslw(lw_sav) - - call pgsci(clr_Coral) - call pgmtxt('L',5.3,0.5,0.5,'log T (K)') - call pgslw(lw) - call pgline(npts, xvec(grid_min:grid_max), yvec2(grid_min:grid_max)) - call pgslw(lw_sav) - - - ! right axis - - lw = 8 - - default_ymax_right = 0 - default_ymin_right = -10 - - do k=1,nz - yvec(k) = safe_log10(s% eps_nuc_categories(ipp,k)) - yvec2(k) = safe_log10(s% eps_nuc_categories(icno,k)) - end do - - if (my_ymax_right > -100) then - ymax = my_ymax_right - else - ymax = max(default_ymax_right,maxval(yvec(grid_min:grid_max))) - ymax2 = max(default_ymax_right,maxval(yvec2(grid_min:grid_max))) - if (ymax2 > ymax) ymax = ymax2 - end if - if (my_ymin_right > -100) then - ymin = my_ymin_right - else - ymin = max(default_ymin_right,minval(yvec(grid_min:grid_max))) - ymin2 = max(default_ymin_right,minval(yvec2(grid_min:grid_max))) - if (ymin2 < ymin) ymin = ymin2 - end if - - dy = ymax-ymin - if (dy == 0) dy = 1 - if (my_dymin_right > -100) dy = my_dymin_right - - ymax = ymax + 0.1*dy - ymin = ymin - 0.1*dy - - if (dbg) then - write(*,1) 'right axis xleft, xright', xleft, xright - write(*,1) 'right axis ymin, ymax, dy', ymin, ymax, dy - end if - - call pgswin(xleft, xright, ymin, ymax) - - call pgscf(1) - call pgsci(1) - call pgsch(label_scale) - call pgbox('BCNST',0.0,0,'CMSTV',0.0,0) - - call pgsci(clr_FireBrick) - call pgmtxt('R',5.6,0.5,0.5,'log eps PP (erg g\u-1\d s\u-1\d)') - call pgslw(lw) - call pgline(npts, xvec(grid_min:grid_max), yvec2(grid_min:grid_max)) - call pgslw(lw_sav) - - call pgsci(clr_RoyalBlue) - call pgmtxt('R',3.9,0.5,0.5,'log eps CNO (erg g\u-1\d s\u-1\d)') - call pgslw(lw) - call pgline(npts, xvec(grid_min:grid_max), yvec(grid_min:grid_max)) - call pgslw(lw_sav) - - call pgunsa - - end subroutine plot - - - end subroutine do_my_plot - - - - - - - end module sample_pgstar_plot - - + end subroutine plot + + end subroutine do_my_plot + +end module sample_pgstar_plot ! inlist_for_my_pgstar_plots ! remove the leading !'s to use this - !&my_pgstar ! ! my_win_flag = .true. ! ! my_win_width = 7 ! my_win_aspect_ratio = 0.62 ! aspect_ratio = height/width -! +! ! my_xaxis_by = 'mass' ! same choices as for main window xaxis_by ! my_xmin = -101 ! only used if > -100 ! my_xmax = -101 ! only used if > -100 -! +! ! ! file output ! my_file_flag = .false. ! my_file_dir = 'pgstar_out' @@ -449,4 +426,4 @@ end module sample_pgstar_plot ! ! !/ ! end of my_pgstar namelist - + diff --git a/star/private/adjust_mass.f90 b/star/private/adjust_mass.f90 index 0623c2a05..42365ac4b 100644 --- a/star/private/adjust_mass.f90 +++ b/star/private/adjust_mass.f90 @@ -149,7 +149,7 @@ subroutine update_radius(s) ! Intermediates integer j, nz - real(dp) r_new, vol00, volp1, cell_vol + real(dp) r_new, vol00, volp1, cell_vol nz = s%nz @@ -186,12 +186,11 @@ subroutine do_adjust_mass(s, species, ierr) integer, intent(out) :: ierr real(dp) :: & - dt, delta_m, old_mstar, new_mstar, old_J, new_J, factor, total, & - frac, env_mass, mmax, alfa, new_xmstar, old_xmstar, removed, & + dt, delta_m, old_mstar, new_mstar, total, & + frac, env_mass, mmax, new_xmstar, old_xmstar, removed, & q_for_just_added, xq_for_CpT_absMdot_div_L, sum_dq, dm, sumx - real(dp), dimension(species) :: & - xaccrete, mtot_init, mtot_final + real(dp), dimension(species) :: xaccrete, mtot_init real(dp), dimension(:), allocatable :: & rxm_old, rxm_new, old_cell_mass, new_cell_mass, & oldloc, newloc, oldval, newval, xm_old, xm_new, & @@ -537,7 +536,7 @@ real(dp) function angular_momentum_removed(ierr) result(J) ! when call this, s% j_rot is still for old mass integer, intent(out) :: ierr integer :: k - real(dp) :: r2, dmm1, dm00, dm, dm_sum, dm_lost + real(dp) :: dmm1, dm00, dm, dm_sum, dm_lost include 'formats' ierr = 0 J = 0 @@ -608,7 +607,7 @@ subroutine do_work_arrays(alloc_flag, ierr) call work_array(s, alloc_flag, crit, & work, nz*pm_work_size, nz_alloc_extra, 'adjust_mass work', ierr) if (ierr /= 0) return - end subroutine do_work_arrays + end subroutine do_work_arrays end subroutine do_adjust_mass @@ -621,12 +620,12 @@ subroutine revise_q_and_dq( & real(dp), intent(in) :: old_xmstar, new_xmstar, delta_m integer, intent(out) :: k_const_mass, ierr - integer :: k, kA, kB, j00, jp1, k_check - real(dp) :: lnTlim_A, lnTlim_B, sumdq, sumdq1, sumdq2, sumdq3, & - min_xq_const_mass, min_q_for_kB, mold_o_mnew, lnTmax, lnT_A, lnT_B, & + integer :: k, kA, kB, j00, jp1 + real(dp) :: lnTlim_A, lnTlim_B, sumdq, & + mold_o_mnew, lnTmax, lnT_A, lnT_B, & xqA, xqB_old, xqB_new, qfrac, frac, dqacc real(dp) :: xq(nz) - real(qp) :: qfrac_qp, frac_qp, mold_o_mnew_qp, q1, q2, q3, q4 + real(qp) :: qfrac_qp, frac_qp, mold_o_mnew_qp, q1, q2 real(qp) :: adjust_mass_outer_frac, adjust_mass_mid_frac, adjust_mass_inner_frac integer, parameter :: min_kA = 5 logical :: dbg, flag @@ -889,7 +888,6 @@ subroutine set1_xa(s, k, nz, species, xa_old, xaccrete, & old_cell_xbdy, new_cell_xbdy, mmax, old_cell_mass, new_cell_mass, ierr) ! set new values for s% xa(:,k) use num_lib, only: binary_search - use chem_def, only: chem_isos type (star_info), pointer :: s integer, intent(in) :: k, nz, species real(dp), intent(in) :: mmax @@ -1139,11 +1137,10 @@ subroutine set_omega_adjust_mass( & old_xout, new_xout, old_dmbar, new_dmbar, old_j_rot, extra_work integer, intent(out) :: ierr - integer :: k, k0, op_err, old_k, new_k, k_uniform + integer :: k, k0, op_err logical :: okay - real(dp) :: old_j_tot, new_j_tot, goal_total_added, actual_total_added, & - f, jtot_bdy, goal_total, bdy_j, bdy_total, inner_total, outer_total, & - msum, isum, jsum, omega_uniform + real(dp) :: old_j_tot, goal_total_added, actual_total_added, & + goal_total, bdy_j, bdy_total, inner_total, outer_total include 'formats' @@ -1249,7 +1246,7 @@ subroutine set1_irot(s, k, k_below_just_added, jrot_known) ! using lnR_for_d_dt_ integer, intent(in) :: k, k_below_just_added logical, intent(in) :: jrot_known - real(dp) :: r00, r003, ri, ro, rp13, rm13 + real(dp) :: r00 real(dp) :: w_div_wcrit_roche r00 = get_r_from_xh(s,k) @@ -1284,7 +1281,7 @@ subroutine set1_omega(s, k, k_below_just_added, nz, & real(dp) :: xm_outer, xm_inner, j_tot, xm0, xm1, new_point_dmbar, & dm_sum, dm - integer :: kk, k_outer, j + integer :: kk, k_outer integer, parameter :: k_dbg = -1 diff --git a/star/private/adjust_mesh.f90 b/star/private/adjust_mesh.f90 index ae6989c76..b143cfb4d 100644 --- a/star/private/adjust_mesh.f90 +++ b/star/private/adjust_mesh.f90 @@ -59,7 +59,7 @@ integer function remesh(s) num_gvals, j, cid, cid_max, unchanged, split, merged, revised type (star_info), target :: copy_info type (star_info), pointer :: c, prv - real(dp) :: delta_coeff, LH, sum_L_other, sum_L_other_limit, A_max, & + real(dp) :: delta_coeff, sum_L_other, sum_L_other_limit, A_max, & mesh_max_allowed_ratio, tmp, J_tot1, J_tot2, center_logT, alfa, beta, & d_dlnR00, d_dlnRp1, d_dv00, d_dvp1 real(dp), pointer, dimension(:) :: & @@ -71,7 +71,6 @@ integer function remesh(s) character (len=32) :: gval_names(max_allowed_gvals) logical, dimension(max_allowed_gvals) :: & gval_is_xa_function, gval_is_logT_function - logical :: changed_mesh logical, parameter :: dbg = .false. real(dp), parameter :: max_sum_abs = 10d0 @@ -528,7 +527,7 @@ integer function remesh(s) subroutine set_types_of_new_cells(cell_type, ierr) integer, pointer :: cell_type(:) integer, intent(out) :: ierr - integer :: k, k_old, k_old_prev, new_type + integer :: k, k_old, new_type include 'formats' ierr = 0 diff --git a/star/private/adjust_mesh_split_merge.f90 b/star/private/adjust_mesh_split_merge.f90 index 7a6d68ce4..9b97c0e3d 100644 --- a/star/private/adjust_mesh_split_merge.f90 +++ b/star/private/adjust_mesh_split_merge.f90 @@ -86,20 +86,19 @@ end function remesh_split_merge subroutine amr(s,ierr) - use chem_def, only: ih1 use hydro_rotation, only: w_div_w_roche_jrot, update1_i_rot_from_xh use star_utils, only: get_r_from_xh type (star_info), pointer :: s integer, intent(out) :: ierr - real(dp) :: TooBig, TooSmall, MaxTooBig, MaxTooSmall, dr, minE - real(dp) :: grad_xa(s% species), cell_time, test_dr, new_xa(s% species), & + real(dp) :: TooBig, TooSmall, MaxTooBig, MaxTooSmall + real(dp) :: grad_xa(s% species), new_xa(s% species), & tau_center, r00 - integer :: iTooBig, iTooSmall, iter, k, k0, species, & - nz, i_h1, num_split, num_merge, nz_old + integer :: iTooBig, iTooSmall, iter, k, species, & + nz, num_split, num_merge, nz_old include 'formats' species = s% species nz_old = s% nz - ierr = 0 + ierr = 0 num_split = 0 num_merge = 0 MaxTooSmall = s% split_merge_amr_MaxShort @@ -254,13 +253,13 @@ subroutine biggest_smallest( & real(dp), intent(out) :: TooBig, TooSmall integer, intent(out) :: iTooBig, iTooSmall real(dp) :: & - oversize_ratio, undersize_ratio, abs_du_div_cs, outer_fraction, & + oversize_ratio, undersize_ratio, abs_du_div_cs, & xmin, xmax, dx_actual, xR, xL, dq_min, dq_max, dx_baseline, & outer_dx_baseline, inner_dx_baseline, inner_outer_q, r_core_cm, & target_dr_core, target_dlnR_envelope, target_dlnR_core, target_dr_envelope logical :: hydrid_zoning, flipped_hydrid_zoning, log_zoning, logtau_zoning, & du_div_cs_limit_flag - integer :: nz, nz_baseline, k, kmin, nz_r_core + integer :: nz, nz_baseline, k, nz_r_core real(dp), pointer :: v(:), r_for_v(:) include 'formats' @@ -270,7 +269,7 @@ subroutine biggest_smallest( & flipped_hydrid_zoning = s% split_merge_amr_flipped_hybrid_zoning log_zoning = s% split_merge_amr_log_zoning logtau_zoning = s% split_merge_amr_logtau_zoning - nz_baseline = s% split_merge_amr_nz_baseline + nz_baseline = s% split_merge_amr_nz_baseline nz_r_core = s% split_merge_amr_nz_r_core if (s% split_merge_amr_mesh_delta_coeff /= 1d0) then nz_baseline = int(dble(nz_baseline)/s% split_merge_amr_mesh_delta_coeff) @@ -484,24 +483,21 @@ subroutine do_merge(s, i_merge, species, new_xa, ierr) real(dp), intent(inout) :: new_xa(species) integer, intent(out) :: ierr logical :: merge_center - integer :: i, ip, i0, im, k, q, nz, qi_max, qim_max, op_err - real(dp) :: max_lgT_diff, max_lgrho_diff + integer :: i, ip, i0, im, q, nz, qi_max, qim_max real(dp) :: & - rR, rL, drR, drL, rC, rho, P, v, & - dm, dm_i, dm_ip, m_old, star_PE0, star_PE1, & - cell_mom, cell_ie, cell_etrb, min_IE, d_IE, d_KE, d_Esum, & + drR, drL, v, & + dm, dm_i, dm_ip, star_PE0, star_PE1, & + cell_ie, cell_etrb, & Esum_i, KE_i, PE_i, IE_i, Etrb_i, & Esum_ip, KE_ip, PE_ip, IE_ip, Etrb_ip, & - Esum, KE, PE, IE, Esum1, KE1, PE1, IE1, & - Etot0, KEtot0, PEtot0, IEtot0, & - Etot1, KEtot1, PEtot1, IEtot1, & - vt_i, vt_ip, j_rot_new, j_rot_p1_new, J_old, & + KE, & + j_rot_new, j_rot_p1_new, J_old, & dmbar_old, dmbar_p1_old, dmbar_p2_old, & dmbar_new, dmbar_p1_new include 'formats' ierr = 0 - s% need_to_setvars = .true. + s% need_to_setvars = .true. star_PE0 = get_star_PE(s) nz = s% nz @@ -525,7 +521,7 @@ subroutine do_merge(s, i_merge, species, new_xa, ierr) end if end if - merge_center = (i == nz) + merge_center = (i == nz) if (merge_center) i = i-1 ip = i+1 if (s% split_merge_amr_avoid_repeated_remesh .and. & @@ -700,7 +696,7 @@ subroutine revise_star_radius(s, star_PE0, star_PE1) type (star_info), pointer :: s real(dp), intent(in) :: star_PE0, star_PE1 integer :: k - real(dp) :: frac, r, star_PE, new_frac + real(dp) :: frac include 'formats' if (star_PE1 == 0d0 .or. star_PE0 == star_PE1) return frac = star_PE1/star_PE0 @@ -821,24 +817,22 @@ subroutine do_split(s, i_split, species, tau_center, grad_xa, new_xa, ierr) real(dp) :: tau_center, grad_xa(species), new_xa(species) integer, intent(out) :: ierr integer :: i, ip, j, jp, q, nz, nz_old, & - iR, iC, iL, imin, imax, op_err + iR, iC, iL real(dp) :: & cell_Esum_old, cell_KE_old, cell_PE_old, cell_IE_old, cell_Etrb_old, & rho_RR, rho_iR, rR, rL, dr, dr_old, rC, dV, dVR, dVL, dM, dML, dMR, rho, & v, v2, energy, v2_R, energy_R, rho_R, v2_C, energy_C, rho_C, v2_L, energy_L, rho_L, & dLeft, dRght, dCntr, grad_rho, grad_energy, grad_v2, & - sumx, sumxp, new_xaL, new_xaR, star_PE0, star_PE1, got_cell_Esum, & - got_cell_Esum_R, got_cell_KE_R, got_cell_PE_R, got_cell_IE_R, & - got_cell_Esum_L, got_cell_KE_L, got_cell_PE_L, got_cell_IE_L, & + sumx, sumxp, new_xaL, new_xaR, star_PE0, star_PE1, & grad_alpha, f, new_alphaL, new_alphaR, v_R, v_C, v_L, min_dm, & mlt_vcL, mlt_vcR, tauL, tauR, etrb, etrb_L, etrb_C, etrb_R, grad_etrb, & j_rot_new, dmbar_old, dmbar_p1_old, dmbar_new, dmbar_p1_new, dmbar_p2_new, J_old - logical :: okay, done, use_new_grad_rho + logical :: done, use_new_grad_rho include 'formats' ierr = 0 star_PE0 = get_star_PE(s) - s% need_to_setvars = .true. + s% need_to_setvars = .true. nz = s% nz s% num_hydro_splits = s% num_hydro_splits + 1 done = .false. @@ -891,7 +885,7 @@ subroutine do_split(s, i_split, species, tau_center, grad_xa, new_xa, ierr) write(*,2) 'tauR', i, tauR write(*,2) 'nz', nz call mesa_error(__FILE__,__LINE__,'do_split') - !$omp end critical (adjust_mesh_split_merge_crit1) + !$omp end critical (adjust_mesh_split_merge_crit1) end if dr = rR - rL @@ -980,7 +974,7 @@ subroutine do_split(s, i_split, species, tau_center, grad_xa, new_xa, ierr) v_R = s% u(iR) v2_R = v_R*v_R v_C = s% u(iC) - v2_C = v_C*v_C + v2_C = v_C*v_C v_L = s% u(iL) v2_L = v_L*v_L if ((v_L - v_C)*(v_C - v_R) <= 0) then ! not strictly monotonic velocities @@ -1111,7 +1105,7 @@ subroutine do_split(s, i_split, species, tau_center, grad_xa, new_xa, ierr) write(*,2) 'rho_L', iC, rho_L write(*,'(A)') call mesa_error(__FILE__,__LINE__,'failed in do_split extrapolation of density from above') - !$omp end critical (adjust_mesh_split_merge_crit2) + !$omp end critical (adjust_mesh_split_merge_crit2) end if end if @@ -1332,7 +1326,7 @@ subroutine update_xh_eos_and_kap(s,i,species,new_xa,ierr) integer, intent(in) :: i, species real(dp) :: new_xa(species) integer, intent(out) :: ierr - real(dp) :: rho, logRho, new_lnT, revised_energy, xsum + real(dp) :: rho, logRho, new_lnT, revised_energy integer :: q include 'formats' ierr = 0 @@ -1399,7 +1393,6 @@ end function get1_grad real(dp) function total_KE(s) type (star_info), pointer :: s integer :: k - real(dp) :: v0, v1 include 'formats' total_KE = 0 if (s% u_flag) then @@ -1437,7 +1430,7 @@ end function total_PE real(dp) function total_IE(s) type (star_info), pointer :: s integer :: k - real(dp) :: specific_ie, egas + real(dp) :: specific_ie total_IE = 0 do k=1,s% nz specific_ie = s% energy(k) diff --git a/star/private/adjust_mesh_support.f90 b/star/private/adjust_mesh_support.f90 index e02006591..6f94bbf5e 100644 --- a/star/private/adjust_mesh_support.f90 +++ b/star/private/adjust_mesh_support.f90 @@ -56,11 +56,11 @@ subroutine get_gval_info( & logical, intent(out), dimension(max_allowed_gvals) :: & gval_is_xa_function, gval_is_logT_function - integer :: j, k, other_ierr + integer :: j, k logical, parameter :: dbg = .false. real(dp), allocatable, dimension(:) :: src real(dp) :: eps_min_for_delta, & - dlog_eps_dlogP_full_off, dlog_eps_dlogP_full_on, alfa_czb + dlog_eps_dlogP_full_off, dlog_eps_dlogP_full_on real(dp), dimension(:,:), pointer :: gvals gvals(1:nz,1:num_gvals) => gvals1(1:nz*num_gvals) @@ -290,7 +290,7 @@ function blend_coef(coef_start, alfa) result(coef) ! 0.5 < alfa < 1 : linear (coeff_start -> 1) beta = 2d0 * (alfa - 0.5d0) - if (beta .lt. 0d0) then + if (beta < 0d0) then coef = coef_start else coef = coef_start*(1d0 - beta) + beta diff --git a/star/private/adjust_xyz.f90 b/star/private/adjust_xyz.f90 index 411fcaad0..7929e8981 100644 --- a/star/private/adjust_xyz.f90 +++ b/star/private/adjust_xyz.f90 @@ -160,7 +160,6 @@ subroutine do_xa(nz, xh, xa_startv) real(dp), pointer :: xa_new(:,:) real(dp), parameter :: max_sum_abs = 10d0 real(dp), parameter :: xsum_tol = 1d-2 - integer :: k, i allocate(xa_new(species, nz + nz_alloc_extra), stat=ierr) if (ierr /= 0) return call set_x_new( & @@ -251,10 +250,10 @@ subroutine set_new_abundances( & old_chem_id(old_num_isos), old_net_iso(num_chem_isos) integer, intent(out) :: ierr - real(dp) :: & + real(dp) :: & total_neut, total_h, total_he, total_c, total_n, total_o, & total_ne, total_mg, total_si, total_s, total_ar, total_ca, & - total_fe, total_co, total_ni, other, & + total_fe, total_co, other, & old_total_neut, old_total_h, old_total_he, old_total_c, old_total_n, old_total_o, & old_total_ne, old_total_mg, old_total_si, old_total_s, old_total_ar, old_total_ca, & old_total_fe, old_total_co, old_total_ni, old_other, & @@ -643,8 +642,7 @@ subroutine set_y(s, y, nzlo, nzhi, ierr) real(dp), intent(in) :: y integer, intent(out) :: ierr - real(dp) :: xh1, xhe3, xhe4, z, ratio, desired_xh1, desired_xhe4, & - new_xh1, new_xhe3, new_xhe4, new_z, new_ratio + real(dp) :: xh1, xhe3, xhe4, z, ratio, desired_xh1, desired_xhe4 include 'formats' ierr = 0 @@ -865,7 +863,7 @@ subroutine set_composition(id, nzlo, nzhi, num_species, xa_new, ierr) end if if (abs(1d0-sum(xa_new(1:species))) > 1d-6) then ierr = -1 - s% retry_message = 'set_composition requires new mass fractions to add to 1.' + s% retry_message = 'set_composition requires new mass fractions to add to 1' if (s% report_ierr) write(*, *) s% retry_message return end if @@ -921,7 +919,7 @@ subroutine get_xa_for_accretion(s, xa, ierr) end do if (abs(1d0 - sum(xa(1:species))) > 1d-2) then write(*,'(a)') & - 'get_xa_for_accretion: accretion species mass fractions do not add to 1.0' + 'get_xa_for_accretion: accretion species mass fractions do not add to 1' write(*,1) 'sum(xa(1:species))', sum(xa(1:species)) do j=1,s% num_accretion_species write(*,2) trim(s% accretion_species_id(j)), j, xa(j) @@ -1013,6 +1011,10 @@ subroutine get_xa_for_standard_metals( & zfrac(:) = L09_element_zfrac(:) case (A09_Prz_zfracs) zfrac(:) = A09_Prz_zfrac(:) + case (MB22_photospheric_zfracs) + zfrac(:) = MB22_photospheric_element_zfrac(:) + case (AAG21_photospheric_zfracs) + zfrac(:) = AAG21_photospheric_element_zfrac(:) case (Custom_zfracs) ! use non-standard values given in controls zfrac(:) = 0 zfrac(e_li) = s% z_fraction_li diff --git a/star/private/alloc.f90 b/star/private/alloc.f90 index 045906812..93ef72e0c 100644 --- a/star/private/alloc.f90 +++ b/star/private/alloc.f90 @@ -82,7 +82,6 @@ module alloc integer :: num_allocs, num_deallocs - contains @@ -469,8 +468,7 @@ subroutine star_info_arrays(s, c_in, action_in, ierr) integer, intent(in) :: action_in integer, intent(out) :: ierr - integer :: nz, species, num_reactions, & - nvar, nvar_hydro, nvar_chem, sz_new, psz_new, action + integer :: nz, species, num_reactions, nvar, nvar_hydro, nvar_chem, sz_new, action type (star_info), pointer :: c character (len=128) :: null_str @@ -508,7 +506,7 @@ subroutine star_info_arrays(s, c_in, action_in, ierr) if (action /= do_fill_arrays_with_NaNs) then ! these arrays must not be filled with NaNs - ! because they contain the inputs to the step + ! because they contain the inputs to the step call do2(s% xh, c% xh, nvar_hydro, 'xh') if (failed('xh')) exit call do2(s% xa, c% xa, species, 'xa') @@ -526,7 +524,7 @@ subroutine star_info_arrays(s, c_in, action_in, ierr) call do1(s% omega, c% omega) if (failed('omega')) exit call do1(s% j_rot, c% j_rot) - if (failed('j_rot')) exit + if (failed('j_rot')) exit call do1(s% mlt_vc, c% mlt_vc) if (failed('mlt_vc')) exit call do1(s% conv_vel, c% conv_vel) @@ -573,7 +571,7 @@ subroutine star_info_arrays(s, c_in, action_in, ierr) call do1(s% r_polar, c% r_polar) if (failed('r_polar')) exit call do1(s% r_equatorial, c% r_equatorial) - if (failed('r_equatorial')) exit + if (failed('r_equatorial')) exit call do1(s% lnd, c% lnd) if (failed('lnd')) exit @@ -769,7 +767,7 @@ subroutine star_info_arrays(s, c_in, action_in, ierr) if (failed('dr_div_csound')) exit call do1(s% ergs_error, c% ergs_error) - if (failed('ergs_error')) exit + if (failed('ergs_error')) exit call do1(s% gradr_factor, c% gradr_factor) if (failed('gradr_factor')) exit call do1(s% adjust_mlt_gradT_fraction, c% adjust_mlt_gradT_fraction) @@ -1416,7 +1414,6 @@ subroutine star_info_arrays(s, c_in, action_in, ierr) subroutine do1_ad(ptr, other) type(auto_diff_real_star_order1), dimension(:), pointer :: ptr, other - type(auto_diff_real_star_order1), dimension(:), pointer :: tmp if (action == do_fill_arrays_with_NaNs) then call fill_ad_with_NaNs(ptr,1,-1) else if (action == do_copy_pointers_and_resize) then @@ -1444,7 +1441,6 @@ end subroutine do1_ad subroutine do1(ptr, other) real(dp), dimension(:), pointer :: ptr, other - real(dp), dimension(:), pointer :: tmp if (action == do_fill_arrays_with_NaNs) then call fill_with_NaNs(ptr) else if (action == do_copy_pointers_and_resize) then @@ -1475,7 +1471,6 @@ end subroutine do1 subroutine do1_neq(ptr, other) real(dp), dimension(:), pointer :: ptr, other - real(dp), dimension(:), pointer :: tmp if (action == do_fill_arrays_with_NaNs) then call fill_with_NaNs(ptr) else if (action == do_copy_pointers_and_resize) then @@ -1504,7 +1499,6 @@ end subroutine do1_neq subroutine do1_integer(ptr, other) integer, dimension(:), pointer :: ptr, other - integer, dimension(:), pointer :: tmp if (action == do_copy_pointers_and_resize) then ptr => other if (nz <= size(ptr,dim=1)) return @@ -1522,7 +1516,6 @@ end subroutine do1_integer subroutine do2_integer(ptr, other, sz1) integer, dimension(:,:), pointer :: ptr, other integer, intent(in) :: sz1 - real(dp), dimension(:,:), pointer :: tmp if (action == do_copy_pointers_and_resize) then ptr => other if (sz1 == size(ptr, dim=1) .and. nz <= size(ptr, dim=2)) return @@ -1539,7 +1532,6 @@ end subroutine do2_integer subroutine do1_logical(ptr, other) logical, dimension(:), pointer :: ptr, other - logical, dimension(:), pointer :: tmp if (action == do_copy_pointers_and_resize) then ptr => other if (nz <= size(ptr,dim=1)) return @@ -1558,7 +1550,6 @@ subroutine do2(ptr, other, sz1, str) real(dp), dimension(:,:), pointer :: ptr, other integer, intent(in) :: sz1 character (len=*), intent(in) :: str - real(dp), dimension(:,:), pointer :: tmp include 'formats' if (action == do_fill_arrays_with_NaNs) then call fill_with_NaNs_2d(ptr) @@ -1589,7 +1580,6 @@ end subroutine do2 subroutine do3(ptr, other, sz1, sz2) real(dp), dimension(:,:,:), pointer :: ptr, other integer, intent(in) :: sz1, sz2 - real(dp), dimension(:,:,:), pointer :: tmp if (action == do_fill_arrays_with_NaNs) then call fill_with_NaNs_3d(ptr) elseif (action == do_copy_pointers_and_resize) then @@ -1622,7 +1612,6 @@ end subroutine do3 subroutine do2_quad(ptr, other, sz1) real(qp), dimension(:,:), pointer :: ptr, other integer, intent(in) :: sz1 - real(qp), dimension(:,:), pointer :: tmp if (action == do_copy_pointers_and_resize) then ptr => other if (sz1 == size(ptr, dim=1) .and. nz <= size(ptr, dim=2)) return @@ -1889,7 +1878,6 @@ subroutine do2D_quad(s, ptr, sz1, sz2, action, ierr) integer, intent(in) :: sz1, sz2, action integer, intent(out) :: ierr real(qp), dimension(:,:), pointer :: ptr2 - real(qp) :: nan integer :: old_sz2, j, i ierr = 0 select case(action) @@ -2968,7 +2956,6 @@ subroutine return_integer_work_array(s, ptr) logical function return1(itry) integer, intent(in) :: itry - integer, pointer :: p(:) if (associated(int_work_pointers(itry)% p)) then return1 = .false. return @@ -3073,7 +3060,6 @@ subroutine return_logical_work_array(s, ptr) logical function return1(itry) integer, intent(in) :: itry - logical, pointer :: p(:) if (associated(logical_work_pointers(itry)% p)) then return1 = .false. return @@ -3088,8 +3074,6 @@ end subroutine return_logical_work_array subroutine shutdown_alloc () - integer :: i - call free_work_arrays() end subroutine shutdown_alloc @@ -3230,8 +3214,4 @@ subroutine non_crit_return_work_array(s, ptr, str) end subroutine non_crit_return_work_array - - end module alloc - - diff --git a/star/private/atm_support.f90 b/star/private/atm_support.f90 index 1e301da28..ea96af6a2 100644 --- a/star/private/atm_support.f90 +++ b/star/private/atm_support.f90 @@ -73,9 +73,6 @@ subroutine get_atm_PT( & integer, intent(out) :: ierr real(dp) :: kap - real(dp) :: tau - real(dp) :: r_surf - real(dp) :: L_surf if (is_bad(tau_surf)) then write(*,*) 'tau_surf', tau_surf @@ -517,7 +514,6 @@ subroutine get_table( & real(dp) :: dlnP_dlnM_b real(dp) :: dlnP_dlnkap_b real(dp) :: kap_a - real(dp) :: tau_b include 'formats' @@ -1256,8 +1252,6 @@ subroutine eos_proc( & real(dp) :: Pgas real(dp) :: rho, gamma, energy real(dp) :: logRho, logRho_guess - real(dp) :: dlnRho_dlnPgas - real(dp) :: dlnRho_dlnT real(dp) :: dres_dxa(num_eos_basic_results,s% species) T = exp(lnT) diff --git a/star/private/auto_diff_support.f90 b/star/private/auto_diff_support.f90 index 42bfab3f6..a6e685e72 100644 --- a/star/private/auto_diff_support.f90 +++ b/star/private/auto_diff_support.f90 @@ -339,7 +339,7 @@ function wrap_w_m1(s, k) result(w_m1) if (k > 1) then w_m1 % val = s%w(k-1) w_m1 % d1Array(i_w_m1) = 1d0 - end if + end if end function wrap_w_m1 function wrap_w_00(s, k) result(w_00) @@ -1058,7 +1058,7 @@ function wrap_opt_time_center_r_p1(s, k) result(r_tc) r_tc = 0.5d0*(r_tc + s% r_center) end if end if - end function wrap_opt_time_center_r_p1 + end function wrap_opt_time_center_r_p1 function wrap_opt_time_center_v_m1(s, k) result(v_tc) type (star_info), pointer :: s @@ -1075,7 +1075,7 @@ function wrap_opt_time_center_v_m1(s, k) result(v_tc) if (s% using_velocity_time_centering) & v_tc = 0.5d0*(v_tc + s% u_face_start(k-1)) end if - end function wrap_opt_time_center_v_m1 + end function wrap_opt_time_center_v_m1 function wrap_opt_time_center_v_00(s, k) result(v_tc) type (star_info), pointer :: s @@ -1091,7 +1091,7 @@ function wrap_opt_time_center_v_00(s, k) result(v_tc) if (s% using_velocity_time_centering) & v_tc = 0.5d0*(v_tc + s% u_face_start(k)) end if - end function wrap_opt_time_center_v_00 + end function wrap_opt_time_center_v_00 function wrap_opt_time_center_v_p1(s, k) result(v_tc) type (star_info), pointer :: s @@ -1184,7 +1184,7 @@ function wrap_w_div_wc_m1(s, k) result(w_div_wc_m1) if (k > 1) then w_div_wc_m1 % val = s% w_div_w_crit_roche(k-1) w_div_wc_m1 % d1Array(i_w_div_wc_m1) = 1d0 - end if + end if end function wrap_w_div_wc_m1 function wrap_w_div_wc_00(s, k) result(w_div_wc_00) @@ -1216,7 +1216,7 @@ function wrap_jrot_m1(s, k) result(jrot_m1) if (k > 1) then jrot_m1 % val = s% j_rot(k-1) jrot_m1 % d1Array(i_jrot_m1) = 1d0 - end if + end if end function wrap_jrot_m1 function wrap_jrot_00(s, k) result(jrot_00) @@ -1248,7 +1248,7 @@ function wrap_omega_m1(s, k) result(omega_m1) jrot_m1 = wrap_jrot_m1(s,k) if (k > 1) then omega_m1 = jrot_m1/shift_m1(s% i_rot(k-1)) - end if + end if end function wrap_omega_m1 function wrap_omega_00(s, k) result(omega_00) @@ -1279,7 +1279,7 @@ function wrap_xtra1_m1(s, k) result(xtra1_m1) if (k > 1) then xtra1_m1 % val = 0d0 xtra1_m1 % d1Array(i_xtra1_m1) = 1d0 - end if + end if end function wrap_xtra1_m1 function wrap_xtra1_00(s, k) result(xtra1_00) @@ -1311,7 +1311,7 @@ function wrap_xtra2_m1(s, k) result(xtra2_m1) if (k > 1) then xtra2_m1 % val = 0d0 xtra2_m1 % d1Array(i_xtra2_m1) = 1d0 - end if + end if end function wrap_xtra2_m1 function wrap_xtra2_00(s, k) result(xtra2_00) diff --git a/star/private/brunt.f90 b/star/private/brunt.f90 index fe44ab861..533dada65 100644 --- a/star/private/brunt.f90 +++ b/star/private/brunt.f90 @@ -37,7 +37,6 @@ module brunt logical, parameter :: dbg = .false. - contains @@ -50,7 +49,7 @@ subroutine do_brunt_B(s,nzlo,nzhi,ierr) type (star_info), pointer :: s integer, intent(in) :: nzlo, nzhi integer, intent(out) :: ierr - integer :: nz, k, i + integer :: nz, k real(dp), allocatable, dimension(:) :: smoothing_array include 'formats' @@ -126,7 +125,7 @@ subroutine do_brunt_N2(s,nzlo,nzhi,ierr) real(dp), allocatable, dimension(:) :: & rho_P_chiT_chiRho, rho_P_chiT_chiRho_face - integer :: nz, k, i + integer :: nz, k include 'formats' @@ -200,8 +199,7 @@ subroutine do_brunt_B_MHM_form(s, nzlo, nzhi, ierr) real(dp), allocatable, dimension(:) :: T_face, rho_face, chiT_face, chiRho_face - real(dp) :: brunt_B - integer :: nz, species, k, i, op_err + integer :: nz, species, k, op_err logical, parameter :: dbg = .false. include 'formats' @@ -344,4 +342,3 @@ end subroutine get_brunt_B end module brunt - diff --git a/star/private/conv_premix.f90 b/star/private/conv_premix.f90 index 6095e18a6..4b3baa8ba 100644 --- a/star/private/conv_premix.f90 +++ b/star/private/conv_premix.f90 @@ -687,7 +687,7 @@ subroutine init_zone_info_ (s, zi) call set_penetration_velocities_(s, zi(i)) - ! Set burn types and initial average abundances + ! Set burn types and initial average abundances call set_burn_data_(s, zi(i)) call set_abund_data_(s, zi(i)) diff --git a/star/private/create_initial_model.f90 b/star/private/create_initial_model.f90 index 53a87db68..d281067cb 100644 --- a/star/private/create_initial_model.f90 +++ b/star/private/create_initial_model.f90 @@ -40,7 +40,6 @@ module create_initial_model real(dp) :: X, Z, Y, G, abar, zbar, z2bar, z53bar, ye real (dp) :: Tmin,eps,R_try - integer, parameter :: max_species=1000 real(dp) :: xa(max_species) integer, pointer, dimension(:) :: net_iso, chem_id @@ -76,7 +75,6 @@ subroutine get_create_star_ptr(id,cs,ierr) end subroutine get_create_star_ptr - subroutine build_initial_model(s, ierr) use chem_lib, only: basic_composition_info, chem_Xsol use adjust_xyz, only: get_xa_for_standard_metals @@ -88,7 +86,7 @@ subroutine build_initial_model(s, ierr) integer :: initial_zfracs, i_lum, i, j, k, itry, max_try, id0, id1, id2 real(dp) :: M, R, initial_y, initial_h1, initial_h2, initial_he3, initial_he4, & - S0, Pc0, rhoc0, e0(2), S1, Pc1, e1(2), S2, Pc2, e2(2), det, dPc, dS, safefac, & + S0, Pc0, e0(2), S1, Pc1, e1(2), S2, Pc2, e2(2), det, dPc, dS, safefac, & initial_z, xsol_he3, xsol_he4, mass_correction, mat(2,2), minv(2,2), sumx type (create_star_info), pointer :: cs @@ -255,13 +253,13 @@ subroutine build_initial_model(s, ierr) end subroutine build_initial_model - ! output !errvec(1)=(mass-M)/M !errvec(2)=(radius-R)/R subroutine PSerrfunc(id,Pcguess,Sguess,M,R,errvec) integer, intent(in) :: id - real(dp) :: Pcguess,Sguess,M,R,errvec(2) + real(dp), intent(in) :: Pcguess,Sguess,M,R + real(dp), intent(out) :: errvec(2) integer :: ierr real(dp) :: rhoc,Tc,Pc,S @@ -334,11 +332,11 @@ subroutine PSerrfunc(id,Pcguess,Sguess,M,R,errvec) ! 4th order rk step dy1=dydP*d_P - call derivs(cs,P+dP/2d0,S,y+dy1/2d0,dydP) + call derivs(cs,P+d_P/2d0,S,y+dy1/2d0,dydP) dy2=dydP*d_P - call derivs(cs,P+dP/2d0,S,y+dy2/2d0,dydP) + call derivs(cs,P+d_P/2d0,S,y+dy2/2d0,dydP) dy3=dydP*d_P - call derivs(cs,P+dP,S,y+dy3,dydP) + call derivs(cs,P+d_P,S,y+dy3,dydP) dy4=dydP*d_P y=y+dy1/6.d0+dy2/3.d0+dy3/3.d0+dy4/6.d0 P=P+d_P @@ -401,7 +399,6 @@ subroutine PSerrfunc(id,Pcguess,Sguess,M,R,errvec) end subroutine PSerrfunc - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -411,7 +408,8 @@ end subroutine PSerrfunc subroutine derivs(cs,P,S,y,dydP) type (create_star_info), pointer :: cs - real(dp) :: P,S,y(3),dydP(3) + real(dp), intent(in) :: P,S,y(3) + real(dp), intent(out) :: dydP(3) real(dp) :: r,m,T,rho,intdmT r=y(1) @@ -433,7 +431,8 @@ subroutine get_kap_from_rhoT(cs,logrho,logT,kap) use kap_def, only: num_kap_fracs use kap_lib type (create_star_info), pointer :: cs - real(dp) :: logrho,logT,kap + real(dp), intent(in) :: logrho,logT + real(dp), intent(out) :: kap real(dp) :: lnfree_e, d_lnfree_e_dlnRho, d_lnfree_e_dlnT real(dp) :: eta, d_eta_dlnRho, d_eta_dlnT real(dp) :: dlnkap_dlnRho, dlnkap_dlnT @@ -473,7 +472,8 @@ subroutine get_TRho_from_PS(cs,P,S,T,rho) use eos_lib use eos_def type (create_star_info), pointer :: cs - real(dp) :: P,S,T,rho + real(dp), intent(in) :: P,S + real(dp), intent(out) :: T,rho real(dp) :: logT_result,log10Rho,dlnRho_dlnPgas_const_T,dlnRho_dlnT_const_Pgas real(dp), dimension(num_eos_basic_results) :: & diff --git a/star/private/ctrls_io.f90 b/star/private/ctrls_io.f90 index dafa6cced..140e1aaec 100644 --- a/star/private/ctrls_io.f90 +++ b/star/private/ctrls_io.f90 @@ -175,7 +175,7 @@ module ctrls_io RSP_relax_initial_model, RSP_trace_RSP_build_model, & RSP_GREKM_avg_abs_limit, RSP_GREKM_avg_abs_frac_new, RSP_kap_density_factor, RSP_map_columns_filename, & RSP_relax_alfap_before_alfat, RSP_max_outer_dm_tries, RSP_max_inner_scale_tries, RSP_T_anchor_tolerance, & - ! mass gain or loss + ! mass gain or loss mass_change, mass_change_full_on_dt, mass_change_full_off_dt, trace_dt_control_mass_change, & min_wind, max_wind, use_accreted_material_j, accreted_material_j, D_omega_mixing_rate, & D_omega_mixing_across_convection_boundary, max_q_for_D_omega_zero_in_convection_region, nu_omega_mixing_rate, & @@ -451,7 +451,7 @@ module ctrls_io delta_dX_div_X_cntr_min, delta_dX_div_X_cntr_max, delta_dX_div_X_cntr_limit, delta_dX_div_X_cntr_hard_limit, & delta_dX_div_X_drop_only, delta_lg_XH_drop_only, & delta_lg_XHe_drop_only, delta_lg_XC_drop_only, delta_lg_XNe_drop_only, delta_lg_XO_drop_only, delta_lg_XSi_drop_only, & - delta_XH_drop_only, delta_XHe_drop_only, delta_XC_drop_only, delta_XNe_drop_only, delta_XO_drop_only, delta_XSi_drop_only, & + delta_XH_drop_only, delta_XHe_drop_only, delta_XC_drop_only, delta_XNe_drop_only, delta_XO_drop_only, delta_XSi_drop_only, & delta_lg_XH_cntr_min, delta_lg_XH_cntr_max, delta_lg_XH_cntr_limit, delta_lg_XH_cntr_hard_limit, & delta_lg_XHe_cntr_min, delta_lg_XHe_cntr_max, delta_lg_XHe_cntr_limit, delta_lg_XHe_cntr_hard_limit, & delta_lg_XC_cntr_min, delta_lg_XC_cntr_max, delta_lg_XC_cntr_limit, delta_lg_XC_cntr_hard_limit, & @@ -490,6 +490,9 @@ module ctrls_io atm_build_tau_outer, atm_build_dlogtau, atm_build_errtol, & use_T_tau_gradr_factor, & + + ! starspots + do_starspots, fspot, xspot, & ! extra heat near surface to model irradiation irradiation_flux, column_depth_for_irradiation, & @@ -636,7 +639,6 @@ recursive subroutine read_controls_file(s, filename, level, ierr) integer, intent(in) :: level integer, intent(out) :: ierr logical, dimension(max_extra_inlists) :: read_extra - character (len=strlen) :: message character (len=strlen), dimension(max_extra_inlists) :: extra integer :: unit, i @@ -1285,6 +1287,11 @@ subroutine store_controls(s, ierr) s% use_T_tau_gradr_factor = use_T_tau_gradr_factor + ! starspots + s% do_starspots = do_starspots + s% fspot = fspot + s% xspot = xspot + ! extra heat near surface to model irradiation s% irradiation_flux = irradiation_flux s% column_depth_for_irradiation = column_depth_for_irradiation @@ -2966,6 +2973,11 @@ subroutine set_controls_for_writing(s, ierr) use_T_tau_gradr_factor = s% use_T_tau_gradr_factor + ! starspots + do_starspots = s% do_starspots + fspot = s% fspot + xspot = s% xspot + ! extra heat near surface to model irradiation irradiation_flux = s% irradiation_flux column_depth_for_irradiation = s% column_depth_for_irradiation @@ -4140,7 +4152,7 @@ subroutine get_control(s, name, val, ierr) exit end if if(is_iostat_end(iostat)) exit - end do + end do if(len_trim(val) == 0 .and. ind==0 ) ierr = -1 diff --git a/star/private/diffusion.f90 b/star/private/diffusion.f90 index df7e9479e..43d2ae4e2 100644 --- a/star/private/diffusion.f90 +++ b/star/private/diffusion.f90 @@ -103,12 +103,12 @@ subroutine do_solve_diffusion( & integer, intent(inout) :: nzlo, nzhi !upper and lower bounds on region integer :: i, j, k, num_iters, idiag, n, neqs, ku, kl, & - ldab, ldafb, ldb, ldx, kmax, h1, he4, nbound, bad_j, bad_k, & + ldab, ldafb, ldb, ldx, h1, he4, nbound, bad_j, bad_k, & retry_count, max_retries, ierr_dealloc real(dp) :: & - dt, dt_next, min_dt, time, mstar, mtotal, sum_mass_nzlo_nzhi, xtotal_init(nc), & - xtotal(nc), mass_init(nc), frac, err, bad_X, bad_sum, bad_Xsum, & - dx_max, dx_avg, tol_correction_max, tol_correction_norm, remaining_time, & + dt, min_dt, time, mstar, mtotal, sum_mass_nzlo_nzhi, xtotal_init(nc), & + mass_init(nc), bad_X, bad_sum, bad_Xsum, & + tol_correction_max, tol_correction_norm, remaining_time, & sumx, tmp, timescale, min_lambda, upwind_limit, lambda, max_del, avg_del integer, parameter :: min_nz_lo = 5 @@ -143,16 +143,14 @@ subroutine do_solve_diffusion( & real(dp), dimension(:,:), pointer :: rhs, del real(dp), dimension(:,:,:), pointer :: em1, e00, ep1 integer, pointer :: ipiv1(:) - integer :: lrd, lid, j_bad, k_bad, kmax_rad_accel, min_num_substeps, & + integer :: lrd, lid, kmax_rad_accel, min_num_substeps, & iter_dbg, j_dbg, k_dbg, k_max integer(8) :: time0, time1, clock_rate integer, pointer :: ipar_decsol(:) real(dp), pointer :: rpar_decsol(:) - real(dp), dimension(species) :: xa_total_before, xa_total_after - real(dp), dimension(m) :: A, C_face, Z_face - real(dp) :: X_total_atol, X_total_rtol, b_bad, flow_out, flow_in, & - vc_target, vc, vc_old, dt_old, & - max_timestep_factor, min_timestep_factor + real(dp), dimension(species) :: xa_total_before + real(dp), dimension(m) :: A + real(dp) :: X_total_atol, X_total_rtol, vc_old, dt_old logical :: have_changed_matrix_coeffs, trace, last_step, & solved, do_timing, use_isolve @@ -456,7 +454,7 @@ subroutine solve_with_isolve(ierr) integer, intent(out) :: ierr integer :: & - i, k, nsteps, lout, iout, idid, ijac, max_steps, & + i, k, lout, iout, idid, ijac, max_steps, & imas, mlmas, mumas, itol, & nzmax, lrd, lid, isparse, & liwork, lwork, caller_id, which_solver, which_decsol @@ -1231,7 +1229,7 @@ subroutine get_timescale( & integer, intent(out) :: i_t, k_t real(dp), intent(out) :: dt integer :: i, j, k - real(dp) :: xdm, f, flow_in, flow_out, dt1, dxdt, coeff, & + real(dp) :: f, flow_in, flow_out, dt1, dxdt, coeff, & flow_in_GT, flow_out_GT, flow_in_SIG, flow_out_SIG, & flow_in_max, flow_out_max, & flow_in_GT_max, flow_out_GT_max, & @@ -1557,7 +1555,7 @@ subroutine get_eqn_matrix_entries( & real(dp), intent(inout), dimension(:,:) :: dX_dt ! (nc,nz) real(dp), intent(inout), dimension(:,:) :: rhs ! (nc,nz) real(dp), intent(inout), dimension(:,:,:) :: em1, e00, ep1 ! (nc,nc,nz) - integer :: k, j + integer :: k ! lhs(i,k) := X(i,k) - (flow(i,k) - flow(i,k-1))*dt/cell_dm(k) ! rhs(i,k) := X_prev(i,k) ! em1(i,j,k) = d(lhs(i,k))/d(X(j,k-1)) @@ -1591,10 +1589,9 @@ subroutine get1_eqn_matrix_entries( & real(dp), intent(inout), dimension(:) :: dX_dt ! (nc) real(dp), intent(inout), dimension(:,:) :: rhs ! (nc,nz) real(dp), intent(inout), dimension(:,:,:) :: em1, e00, ep1 ! (nc,nc,nz) - integer :: i, j, jj + integer :: i, j real(dp) :: alfa, beta, c, coeff, dC_dXj00, dC_dXjm1, dC_dXjp1, & - dC, dcoeff_dXjm1, dcoeff_dXj00, dcoeff_dXjp1, max_coeff, & - dt_div_dm + dC, dcoeff_dXjm1, dcoeff_dXj00, dcoeff_dXjp1, dt_div_dm include 'formats' @@ -1748,7 +1745,7 @@ subroutine factor_and_solve_matrix( & real(dp), pointer :: rpar_decsol(:) integer, intent(out) :: ierr - integer :: i, j, k, caller_id, ierr2 + integer :: caller_id, ierr2 integer, pointer :: ipiv1_n(:) real(dp), pointer, dimension(:) :: rhs1_n, lblk1_n, dblk1_n, ublk1_n real(dp), pointer, dimension(:,:,:) :: lblk, dblk, ublk @@ -1904,7 +1901,7 @@ subroutine get_min_number_of_classes( & integer, intent(out) :: class_chem_id(:) ! (nc) character (len=8), intent(out) :: class_name(:) ! (nc) real(dp) :: A - integer :: i, j + integer :: i integer, parameter :: c_h = 1, c_he = 2, c_o = 3, c_fe = 4 class_name(c_h) = 'c_h' class_name(c_he) = 'c_he' diff --git a/star/private/diffusion_procs.f90 b/star/private/diffusion_procs.f90 index 103c6142b..6821910b1 100644 --- a/star/private/diffusion_procs.f90 +++ b/star/private/diffusion_procs.f90 @@ -58,11 +58,8 @@ subroutine fixup( & real(dp), intent(out) :: bad_X, bad_sum, bad_Xsum integer, intent(out) :: bad_j, bad_k, ierr - integer :: i, j, jj, k, k1, op_err, rep, num_extreme, & - j_max, k_max, k_lo, k_hi, kk, cnt, maxcnt, nsmooth_x_in_fixup - real(dp) :: max_lnT_for_smooth, sum_m, m_00, dm, source_mass, frac, err, & - max_abs_dx, xm1, x00, xp1, m0, sum0, m1, sum1, x_new, xtotal_new, & - sum_m1, sum_00, sum_p1, m_m1, m_p1, xavg, dm_m1, dm_p1, x1 + integer :: j, k, op_err, nsmooth_x_in_fixup + real(dp) :: max_lnT_for_smooth logical :: dbg @@ -710,7 +707,7 @@ subroutine redistribute_mass( & integer :: k_source, max_iters, k, i, j real(dp) :: source_cell_mass, remaining_source_mass, cell_dm_k, & - remaining_needed_mass, frac, sumX, total_source, total_moved, & + remaining_needed_mass, sumX, total_source, total_moved, & dm0, dm1, old_sum, new_sum, mtotal, err, dm, diff_dm logical :: okay, dbg @@ -1078,7 +1075,7 @@ subroutine setup_struct_info( & real(dp), dimension(:), intent(out) :: xm_face integer, intent(out) :: kmax_rad_accel, ierr - integer :: i, k, j, op_err, kmax + integer :: i, k, j, kmax logical, parameter :: dbg = .false. @@ -1242,13 +1239,11 @@ subroutine calc_g_rad_mombarg( & log10_g_rad, g_rad, rad_accel_face integer, intent(out) :: ierr - integer :: iZ(nc), iZ_rad(nc), n, i, j, k, kk, kmax, op_err, sz, offset, & - nptot, ipe, nrad, thread_num, k1, k2, dk + integer :: iZ(nc), iZ_rad(nc), i, j, k, kk, kmax, op_err, k1, k2, dk real(dp) :: alfa, beta, X_face(nc), blend_fac(-15:15) - integer :: np = 28016 - real(dp) :: fk(17), fk_all(ngp,17), delta, blend + real(dp) :: fk(17), delta, blend character(len=4) :: e_name logical, parameter :: dbg = .false. @@ -1346,10 +1341,10 @@ subroutine calc_g_rad_mombarg( & if (dbg) stop dk = k - INT((kmax - (nzlo+1))/ ngp + (nzlo+1)) - if (ABS(dk) .le. 15) then + if (ABS(dk) <= 15) then j = -1 blend = blend_fac(dk) - else if (k .lt. INT((kmax - (nzlo+1))/ ngp + (nzlo+1))) then + else if (k < INT((kmax - (nzlo+1))/ ngp + (nzlo+1))) then j = 1 blend = 0d0 else @@ -1401,7 +1396,7 @@ subroutine set1_g_rad_mombarg( & integer, intent(out) :: ierr integer :: i, ii - real(dp) :: tot, logT, logRho, flux + real(dp) :: logT, logRho real(dp), dimension(17) ::lgrad, fk integer :: iZ_rad2(17) character(len=4) :: e_name diff --git a/star/private/diffusion_support.f90 b/star/private/diffusion_support.f90 index f606ea587..f1474696d 100644 --- a/star/private/diffusion_support.f90 +++ b/star/private/diffusion_support.f90 @@ -79,8 +79,8 @@ subroutine get_matrix_coeffs( & real(dp), dimension(:,:,:), intent(out) :: SIG_face, sigma_lnC integer, intent(out) :: ierr - integer :: i, j, jj, k, op_err, im - real(dp) :: dv_im, alfa, beta, cc, tmp, tinyX, dlamch, sfmin, & + integer :: i, j, k, op_err + real(dp) :: tmp, tinyX, dlamch, sfmin, & AD_dm_full_on, AD_dm_full_off, AD_boost_factor, sum_dm, & Vlimit_dm_full_on, Vlimit_dm_full_off, Vlimit, sigmax, & SIG_factor, GT_factor @@ -208,12 +208,12 @@ subroutine get_matrix_coeffs( & !write(*,1) 'GT_factor SIG_factor', GT_factor, SIG_factor - do k = nzlo+1, nzhi + do k = nzlo+1, nzhi call get1_flow_coeffs( & k, nc, m, v_advection_face(:,k), v_advection_max, & SIG_factor, GT_factor, sigma_lnC(:,:,k), & four_pi_r2_rho_face(k), dm_bar(k), & - C_div_X_face(:,k), GT_face(:,k), D_self_face(:,k), SIG_face(:,:,k)) + C_div_X_face(:,k), GT_face(:,k), D_self_face(:,k), SIG_face(:,:,k)) if (sum_dm >= AD_dm_full_off) then AD_face(k) = 0d0 else @@ -228,7 +228,7 @@ subroutine get_matrix_coeffs( & (AD_dm_full_on - AD_dm_full_off) !write(*,2) 'boost factor AD_face', k, AD_face(k)/sigmax, AD_face(k) end if - sum_dm = sum_dm + cell_dm(k) + sum_dm = sum_dm + cell_dm(k) end do do j=1,nc ! not used, but copy just for sake of plotting @@ -283,7 +283,6 @@ subroutine get1_coeffs_face( & real(dp), intent(inout) :: sigma_lnC(:,:) ! (nc,nc) integer, intent(out) :: ierr - integer :: i, j real(dp), dimension(m) :: AP, AT, AR real(dp), dimension(m,m) :: kappa_st, Zdiff, Zdiff1, Zdiff2, AX @@ -322,7 +321,7 @@ subroutine get1_CXZn_face( & k, nz, nc, m, nzlo, nzhi, C, X, Z, A, alfa_face, tiny_C, & d_dr_factor, dlnRho_dr_face, C_face, X_face, Z_face, C_div_X_face, & dC_dr_face, dlnne_dr_face) - integer, intent(in) :: k, nc, m, nz, nzlo, nzhi + integer, intent(in) :: k, nc, m, nz, nzlo, nzhi real(dp), dimension(:,:), intent(in) :: C, X, Z ! (m,nz) real(dp), intent(in) :: A(:) ! (m) atomic number real(dp), intent(in) :: alfa_face(:), d_dr_factor, dlnRho_dr_face @@ -387,7 +386,7 @@ subroutine get1_burgers_coeffs( & real(dp) :: ac, ni, cz, xij, ne, ao, lambdad, lambda, alfa, Gamlo, Gamhi real(dp), dimension(m) :: charge, na real(dp), dimension(m,m) :: cl, Ath, Ddiff, Kdiff, Kdiff2 - real(dp) :: Gamma, ai, lam_e, kappa, kappa_SM, Abar, Zbar, omegap + real(dp) :: Gamma, kappa_SM real(dp) :: Ddiff_Caplan(nc) do i = 1, nc @@ -399,8 +398,8 @@ subroutine get1_burgers_coeffs( & ! Get number densities (per cm^3) do i = 1, nc na(i) = rho*X(i)/(A(i)*amu) - end do - na(m) = 0.d0 + end do + na(m) = 0.d0 do i = 1, nc na(m) = na(m) + charge(i)*na(i) end do @@ -553,7 +552,7 @@ subroutine get1_gradient_coeffs( & e_ap1,e_at1,e_ar1,e_ax1,ierr) if (ierr /= 0) then - !return + !return write(*,2) 'solve_burgers_cgs_no_thermal failed', k do i=1,m-1 write(*,2) 'A X Z C', i, A(i), X(i), Z(i), C(i) @@ -595,7 +594,7 @@ subroutine get1_gradient_coeffs( & g_ax(1:m) = 0d0 if (ierr /= 0) then - !return + !return write(*,2) 'solve_burgers_cgs failed', k do i=1,m-1 write(*,2) 'A X Z C', i, A(i), X(i), Z(i), C(i) @@ -612,7 +611,7 @@ subroutine get1_gradient_coeffs( & ierr) if (ierr /= 0) then - !return + !return write(*,2) 'do1_solve_thoul_hu failed', k do i=1,m-1 write(*,2) 'A X Z C', i, A(i), X(i), Z(i), C(i) @@ -770,7 +769,7 @@ subroutine get1_flow_coeffs( & real(dp), intent(inout) :: SIG_face(:,:) ! (nc,nc) integer :: i, j - real(dp) :: c, boost + real(dp) :: c include 'formats' @@ -779,7 +778,7 @@ subroutine get1_flow_coeffs( & GT_face(i) = GT_factor*four_pi_r2_rho_face*v_advection_face(i) D_self_face(i) = sigma_lnC_face(i,i) do j = 1, nc - SIG_face(i,j) = c*sigma_lnC_face(i,j)/C_div_X_face(j) + SIG_face(i,j) = c*sigma_lnC_face(i,j)/C_div_X_face(j) end do end do @@ -859,8 +858,8 @@ subroutine do1_solve_thoul_hu( & real(dp), intent(inout) :: g_ap, g_at, g_ar, g_ax(:) ! (m) integer, intent(out) :: ierr - integer :: i, j, l, indx(n), nmax - real(dp) :: aamax, cc, ac, temp, ko, d, f + integer :: i, j, l, indx(n) + real(dp) :: cc, ac, ko, f real(dp), dimension(m,m) :: xx, y, yy, k real(dp), dimension(n) :: alpha, nu, ga, beta real(dp), dimension(n,n) :: delta, gamma @@ -878,7 +877,7 @@ subroutine do1_solve_thoul_hu( & ierr = 0 ko = 2d0 - indx(1:n) = 0 + indx(1:n) = 0 ! calculate cc and ac: @@ -1085,7 +1084,7 @@ subroutine solve_burgers_cgs_no_thermal( & real(dp), intent(inout) :: e_ap, e_at, e_ar, e_ax(:) integer, intent(out) :: ierr - integer :: i,j,l,indx(n),nmax + integer :: i,j,l,indx(n) real(dp), dimension(n) :: alpha, beta, nu, ga ! Add in beta later for rad lev. ga is the temp holder for the ! columns of gamm when doing matrix solve one column at a time. @@ -1252,7 +1251,7 @@ subroutine solve_burgers_cgs_with_thermal( & real(dp), intent(inout) :: e_ap, e_at, e_ar, e_ax(:) integer, intent(out) :: ierr - integer :: i,j,l,indx(n),nmax, rightshift, downshift + integer :: i,j,l,indx(n), rightshift, downshift real(dp), dimension(n) :: alpha, beta, nu, ga ! Add in beta later for rad lev. ga is the temp holder for the ! columns of gamm when doing matrix solve one column at a time. @@ -1354,7 +1353,7 @@ subroutine solve_burgers_cgs_with_thermal( & delta(i+downshift,j+rightshift) = Kdiff(i,j)* & ( 3d0 + zdiff1(i,j) - 0.8d0*zdiff2(i,j) )* & A(i)*A(j)/pow2(A(i)+A(j)) - end if + end if end do ! Term multiplying the electric field. (doesn't appear in energy equations) @@ -1478,7 +1477,7 @@ subroutine get_SM_coeffs(nc,m,rho,T,A,Z,nd,Kdiff,zdiff,zdiff1,zdiff2,kappa) ! Fitting coefficients from Stanton & Murillo real(dp), dimension(2,3) :: a1,a2,a3,a4,a5,b0,b1,b2,b3,b4 real(dp) :: lambda ! The screening length - integer :: i,j,k,facmo,no,mo ! Last two are used for different orders of collisions. + integer :: i,j,facmo,no,mo ! Last two are used for different orders of collisions. real(dp) :: lgp, gp1, gp2, gp3, gp4, gp5, kbT32, tmp @@ -1570,7 +1569,7 @@ subroutine get_SM_coeffs(nc,m,rho,T,A,Z,nd,Kdiff,zdiff,zdiff1,zdiff2,kappa) else if( g_plasma(i,j) < 1d0) then ! Use eqn C23 for weakly coupled do no=1,2 do mo=1,3 ! Implementing the (m-1)! term with a simple if statement. - if(mo .eq. 3) then + if(mo == 3) then facmo = 2 ! (3-1)! else facmo = 1 ! (1-1)! and (2-1)! diff --git a/star/private/do_one_utils.f90 b/star/private/do_one_utils.f90 index e3539a58b..782f3540b 100644 --- a/star/private/do_one_utils.f90 +++ b/star/private/do_one_utils.f90 @@ -48,7 +48,7 @@ module do_one_utils logical function model_is_okay(s) type (star_info), pointer :: s ! for now, just check for valid number in the final dynamic timescale - model_is_okay = ((s% dynamic_timescale - s% dynamic_timescale) .eq. 0d0) & + model_is_okay = ((s% dynamic_timescale - s% dynamic_timescale) == 0d0) & .and. ((s% dynamic_timescale + 1d0) > 1d0) end function model_is_okay @@ -120,7 +120,7 @@ end subroutine do_show_log_description subroutine do_show_terminal_header(s) type (star_info), pointer :: s - integer :: id, ierr, io + integer :: ierr, io call output_terminal_header(s,terminal_iounit) if (len_trim(s% extra_terminal_output_file) > 0) then ierr = 0 @@ -234,7 +234,7 @@ end subroutine output_terminal_header subroutine do_terminal_summary(s) type (star_info), pointer :: s - integer :: id, ierr, io + integer :: ierr, io call output_terminal_summary(s,terminal_iounit) if (len_trim(s% extra_terminal_output_file) > 0) then ierr = 0 @@ -529,7 +529,7 @@ logical function get_history_info(s, do_write) get_history_info = write_history .or. write_terminal if (.not. get_history_info) return if (s% write_header_frequency*s% terminal_interval > 0) then - if ( mod(model, s% write_header_frequency*s% terminal_interval) .eq. 0 & + if ( mod(model, s% write_header_frequency*s% terminal_interval) == 0 & .and. .not. s% doing_first_model_of_run) then write(*,'(A)') call write_terminal_header(s) @@ -574,13 +574,13 @@ integer function do_check_limits(id) use star_utils integer, intent(in) :: id type (star_info), pointer :: s - integer :: ierr, i, j, k, cid, k_burn, k_omega, nz, max_abs_vel_loc, & + integer :: ierr, i, j, k, cid, k_omega, nz, max_abs_vel_loc, & period_number, max_period_number real(dp) :: log_surface_gravity, log_surface_temperature, log_surface_density, & log_surface_pressure, v_div_csound_max, remnant_mass, ejecta_mass, & power_nuc_burn, power_h_burn, power_he_burn, power_z_burn, logQ, max_logQ, min_logQ, & envelope_fraction_left, avg_x, v_surf, csound_surf, delta_nu, v_surf_div_v_esc, & - ratio, dt_C, peak_burn_vconv_div_cs, min_pgas_div_p, v_surf_div_v_kh, GREKM_avg_abs, & + peak_burn_vconv_div_cs, min_pgas_div_p, v_surf_div_v_kh, GREKM_avg_abs, & max_omega_div_omega_crit, omega_div_omega_crit, log_Teff, Lnuc_div_L, max_abs_vel, & species_mass_for_min_limit, species_mass_for_max_limit, center_gamma @@ -1480,7 +1480,7 @@ integer function do_one_check_model(id) real(dp), parameter :: log_he_temp = 7.8d0 real(dp), parameter :: d_tau_min = 1d-2, d_tau_max = 1d0 real(dp), parameter :: little_step_factor = 10d0, little_step_size = 10d0 - real(dp) :: v, surf_grav, power_he_burn, power_z_burn, & + real(dp) :: v, power_he_burn, power_z_burn, & power_neutrinos integer :: model, profile_priority, ierr integer, parameter :: tau_ramp = 50 @@ -1527,7 +1527,7 @@ integer function do_one_check_model(id) logged = get_history_info(s, must_do_profile) if (logged .and. s% write_profiles_flag) then - if (s% model_number .eq. s% profile_model & + if (s% model_number == s% profile_model & .or. (s% profile_interval > 0 .and. & (s% doing_first_model_of_run .or. & mod(s% model_number,s% profile_interval) == 0))) then diff --git a/star/private/element_diffusion.f90 b/star/private/element_diffusion.f90 index f14f069e2..d86617f28 100644 --- a/star/private/element_diffusion.f90 +++ b/star/private/element_diffusion.f90 @@ -42,7 +42,7 @@ module element_diffusion subroutine do_element_diffusion(s, dt_in, ierr) ! return ierr /= 0 if cannot satisfy accuracy requirements - use chem_def, only: chem_isos, ihe4, ih1 + use chem_def, only: chem_isos use chem_lib, only: chem_get_iso_id use star_utils, only: start_time, update_time use diffusion, only: & @@ -52,16 +52,14 @@ subroutine do_element_diffusion(s, dt_in, ierr) integer, intent(out) :: ierr integer :: i, j, k, kk, nc, m, nzlo, nzhi, nz, species, iounit, & - steps_used, total_num_iters, total_num_retries, cid, he4 + steps_used, total_num_iters, total_num_retries, cid integer(8) :: time0 - real(dp) :: s1, s2, dqsum, dist, r, Hp, dt, total, & + real(dp) :: s1, s2, dqsum, dt, total, & gradT_mid, gradRho_mid, alfa, gradRho_face, chiRho_face, chiT_face - real(dp) :: rho, Pgas, T, & - logRho, dlnRho_dlnPgas, dlnRho_dlnT, & - e, de, e_with_xa, Amass, Zcharge, min_D_mix + real(dp) :: Amass, Zcharge, min_D_mix integer, dimension(:), allocatable :: & - class, class_chem_id, mixing_type, mixing_type_arg + class, class_chem_id, mixing_type real(dp), dimension(:), allocatable :: & gamma, free_e, & dlnPdm_face, dlnT_dm_face, dlnRho_dm_face, & @@ -74,7 +72,7 @@ subroutine do_element_diffusion(s, dt_in, ierr) character (len=8), allocatable :: class_name(:) - logical :: dumping, okay + logical :: dumping include 'formats' @@ -470,8 +468,6 @@ subroutine dump_diffusion_info use utils_lib use chem_def, only: chem_isos integer :: i, k, ierr - real(dp) :: alfa, rho_face, chiT_face, chiRho_face, & - dm_dr, gradRho, dlnRho_dm ierr = 0 write(*, *) diff --git a/star/private/eos_support.f90 b/star/private/eos_support.f90 index 3029c7100..125783c98 100644 --- a/star/private/eos_support.f90 +++ b/star/private/eos_support.f90 @@ -75,9 +75,7 @@ subroutine get_eos( & real(dp), intent(out) :: dres_dxa(num_eos_d_dxa_results,s% species) integer, intent(out) :: ierr - real(dp), dimension(num_eos_basic_results) :: dres_dabar, dres_dzbar integer :: j - logical :: off_table include 'formats' @@ -229,7 +227,6 @@ subroutine solve_eos_given_DP( & integer, intent(out) :: ierr integer :: eos_calls - real(dp) :: eos_x, eos_z include 'formats' @@ -273,7 +270,6 @@ subroutine solve_eos_given_DS( & integer, intent(out) :: ierr integer :: eos_calls - real(dp) :: eos_x, eos_z include 'formats' @@ -411,8 +407,7 @@ subroutine solve_eos_given_PgasT_auto( & real(dp), intent(out) :: dres_dxa(num_eos_d_dxa_results,s% species) integer, intent(out) :: ierr - real(dp) :: rho_guess, logRho_guess, gamma, & - dlnRho_dlnPgas_const_T, dlnRho_dlnT_const_Pgas + real(dp) :: rho_guess, logRho_guess, gamma ! compute composition info real(dp) :: Y, Z, X, abar, zbar, z2bar, z53bar, ye, mass_correction, sumx diff --git a/star/private/eps_grav.f90 b/star/private/eps_grav.f90 index 8b424720c..32df776e8 100644 --- a/star/private/eps_grav.f90 +++ b/star/private/eps_grav.f90 @@ -89,7 +89,7 @@ subroutine eval1_eps_grav_and_partials(s, k, eps_grav, ierr) include 'formats' ierr = 0 - using_PC = (s% eos_frac_PC(k) .gt. 0) + using_PC = (s% eos_frac_PC(k) > 0) if (using_PC .and. s% gam_start(k) >= s% Gamma_lnS_eps_grav_full_on) then call do_lnS_eps_grav(s, k, eps_grav, ierr) @@ -98,9 +98,9 @@ subroutine eval1_eps_grav_and_partials(s, k, eps_grav, ierr) alfa = (Gamma - s% Gamma_lnS_eps_grav_full_off) / & (s% Gamma_lnS_eps_grav_full_on - s% Gamma_lnS_eps_grav_full_off) call do_lnS_eps_grav(s, k, eps_grav_lnS, ierr) - if (ierr .ne. 0) return + if (ierr /= 0) return call do_std_eps_grav(s, k, eps_grav_std, ierr) - if (ierr .ne. 0) return + if (ierr /= 0) return ! the derivative of the blending function is missing ! but historically we've been able to get away with that ! because the two forms should match in the blend region @@ -223,7 +223,7 @@ subroutine do_lnS_eps_grav(s, k, eps_grav, ierr) integer, intent(out) :: ierr real(dp) :: entropy_start - type(auto_diff_real_star_order1) :: entropy, T, eps_grav_composition_term + type(auto_diff_real_star_order1) :: entropy, T include 'formats' ierr = 0 @@ -274,7 +274,7 @@ subroutine eval_eps_grav_composition(s, k, eps_grav_composition_term, ierr) integer, intent(in) :: k type(auto_diff_real_star_order1), intent(out) :: eps_grav_composition_term integer, intent(out) :: ierr - real(dp) :: Rho, logRho, & + real(dp) :: & e, e_start, de, d_de_dlnd, d_de_dlnT, & e_with_xa_start, d_e_with_xa_start_dlnd, d_e_with_xa_start_dlnT, & e_with_DT_start, Pgas_with_DT_start diff --git a/star/private/eps_mdot.f90 b/star/private/eps_mdot.f90 index 1ad360f35..a43fcedb4 100644 --- a/star/private/eps_mdot.f90 +++ b/star/private/eps_mdot.f90 @@ -55,7 +55,7 @@ subroutine find_mass_flux(nz, change_in_dm, mass_flux) integer, intent(in) :: nz ! Intermediates - integer j + integer :: j real(qp), dimension(:), intent(out) :: mass_flux @@ -72,7 +72,7 @@ real(dp) function interpolate_onto_faces(vec, dm, nz, j) ! Inputs real(dp), dimension(:) :: vec real(qp), dimension(:) :: dm - integer nz, j + integer :: nz, j ! Intermediates real(dp) alpha, beta, dmbar1 @@ -133,10 +133,10 @@ subroutine set_leak_frac(nz, L, dm, dt, thermal_energy, grad_r_sub_grad_a, mass_ real(dp), dimension(:) :: L, grad_r_sub_grad_a, thermal_energy, leak_frac real(dp) eps_mdot_leak_frac_factor real(dp) dt - integer nz + integer :: nz ! Intermediates - integer k, km1 + integer :: k, km1 real(dp) mass_flux_bar !!! High-level explanation @@ -178,21 +178,18 @@ subroutine leak_control(nz, mass_flux, dm, mesh_intersects, ranges,& total_mass_through_cell, eps_mdot_per_total_mass,& accumulated, mdot_adiabatic_surface, leak_frac) ! Inputs - integer nz + integer :: nz integer, dimension(:,:) :: ranges real(dp) mdot_adiabatic_surface real(qp), dimension(:) :: mass_flux, dm, mesh_intersects, total_mass_through_cell real(dp), dimension(:) :: eps_mdot_per_total_mass, accumulated, leak_frac ! Intermediates - integer i, j, k - integer i0, i1 - integer i_start, i_end + integer :: j + integer :: i_start, i_end integer, dimension(:), allocatable :: i_min, i_max, j_min, j_max - logical do_now real(qp) delta_m real(dp) sgn - real(dp), dimension(:), allocatable :: excess type(non_rect_array), dimension(:), allocatable :: pf !!! High-level explanation @@ -335,7 +332,7 @@ subroutine leak(nz, i_start, i_end, i_min, i_max, j_min, j_max, pf,& total_mass_through_cell, mdot_adiabatic_surface) ! Inputs - integer nz, i_start, i_end + integer :: nz, i_start, i_end integer, dimension(:) :: i_min, i_max, j_min, j_max type(non_rect_array), dimension(:) :: pf real(qp) delta_m @@ -345,7 +342,7 @@ subroutine leak(nz, i_start, i_end, i_min, i_max, j_min, j_max, pf,& ! Intermediates - integer i, j, k, direction, ii + integer :: i, j, direction real(qp) pass_frac, next, pass_mass real(dp), dimension(:), allocatable :: excess @@ -465,23 +462,22 @@ subroutine calculate_eps_mdot(s, dt, ierr) ! Inputs type (star_info), pointer :: s - real(dp) dt - integer ierr + real(dp) :: dt + integer :: ierr ! Intermediates logical :: dbg = .false. - integer nz, j, k, l, n - real(dp) delta_m, sgn, change_sum, leak_sum, err, abs_err, mdot_adiabatic_surface, gradT_mid + integer :: nz, j + real(dp) delta_m, change_sum, leak_sum, err, abs_err, mdot_adiabatic_surface, gradT_mid real(dp), dimension(:), allocatable :: & - p_bar, rho_bar, te_bar, te, curr_m, & + p_bar, rho_bar, te_bar, te, & leak_frac, thermal_energy, density_weighted_flux, eps_mdot_per_total_mass,& accumulated, grad_r_sub_grad_a real(qp), dimension(:), allocatable :: change_in_dm, mass_flux, dm, prev_mesh_dm,& total_mass_through_cell type(accurate_real) sum integer, dimension(:,:), allocatable :: ranges - real(qp), dimension(:), allocatable :: remainders, mesh_intersects - real(qp) m + real(qp), dimension(:), allocatable :: mesh_intersects if (s% mstar_dot == 0d0 .or. dt <= 0d0) then s% eps_mdot(1:s%nz) = 0d0 diff --git a/star/private/evolve.f90 b/star/private/evolve.f90 index 0ac2e7fa8..f2890c3f2 100644 --- a/star/private/evolve.f90 +++ b/star/private/evolve.f90 @@ -297,7 +297,7 @@ integer function do_step_part1(id, first_try) integer, intent(in) :: id type (star_info), pointer :: s - integer :: ierr, j, k, nz + integer :: ierr, k, nz integer(8) :: time0, clock_rate real(dp) :: total_radiation @@ -525,22 +525,20 @@ integer function do_step_part2(id, first_try) type (star_info), pointer :: s integer :: ierr, & - j, k, j_cnt, mdot_redo_cnt, max_mdot_redo_cnt, cnt, max_cnt, nz + k, mdot_redo_cnt, max_mdot_redo_cnt, nz integer(8) :: time0, clock_rate - logical :: okay, trace, skip_global_corr_coeff_limit, & + logical :: trace, skip_global_corr_coeff_limit, & have_too_large_wind_mdot, have_too_small_wind_mdot, & ignored_first_step, was_in_implicit_wind_limit - real(dp) :: J_tot1, J_tot2, rel_error, & - w_div_w_crit, w_div_w_crit_prev, mstar_dot, mstar_dot_prev, abs_mstar_delta, & + real(dp) :: w_div_w_crit, w_div_w_crit_prev, mstar_dot, mstar_dot_prev, abs_mstar_delta, & explicit_mdot, max_wind_mdot, wind_mdot, r_phot, kh_timescale, dmskhf, dmsfac, & - too_large_wind_mdot, too_small_wind_mdot, boost, mstar_dot_nxt, total, & - surf_omega_div_omega_crit_limit, dt, time, max_dt, total_energy + too_large_wind_mdot, too_small_wind_mdot, boost, mstar_dot_nxt, & + surf_omega_div_omega_crit_limit, dt integer :: ph_k, mdot_action - real(dp) :: r, m, xm, v, L, cs, kap, ysum, & - implicit_mdot, ph_x, ph_L, iwind_tolerance, iwind_lambda, total_nuclear_heating, & - total_radiation - integer :: k_phot, iwind_redo_cnt, iwind_max_redo_cnt + real(dp) :: implicit_mdot, ph_L, iwind_tolerance, iwind_lambda + real(dp) :: dummy1, dummy2, dummy3, dummy4, dummy5, dummy6, dummy7, dummy8 + integer :: iwind_redo_cnt, iwind_max_redo_cnt integer, parameter :: exit_loop = 1, cycle_loop = 0 logical, parameter :: dbg = .false. @@ -801,7 +799,7 @@ integer function select_mdot_action(ierr) if (iwind_redo_cnt < iwind_max_redo_cnt .and. iwind_lambda > 0d0) then ! check mdot calculated at end of step - call get_phot_info(s, ph_x, ph_x, ph_x, ph_L, ph_x, ph_x, ph_x, ph_x, ph_x, ph_k) + call get_phot_info(s, dummy1, dummy2, dummy3, ph_L, dummy4, dummy5, dummy6, dummy7, dummy8, ph_k) call set_mdot(s, ph_L, s% mstar, s% Teff, ierr) if (ierr /= 0) then do_step_part2 = retry @@ -1104,12 +1102,12 @@ end subroutine show_debug logical function okay_energy_conservation() use rsp, only: rsp_total_energy_integrals - integer :: nz, k, ierr + integer :: nz, k real(dp) :: phase1_sources_and_sinks, phase2_sources_and_sinks, phase2_work, & phase1_total_energy_from_mdot, phase2_total_energy_from_mdot, & expected_sum_cell_others, expected_sum_cell_sources, L_theta, & diff_total_gravitational_energy, diff_total_internal_energy, diff_total_kinetic_energy, & - diff_total_rotational_kinetic_energy, diff_total_turbulent_energy, & + diff_total_turbulent_energy, & virial, total_radiation, L_surf, sum_cell_de, sum_cell_detrb, & sum_cell_dke, sum_cell_dpe, sum_cell_dL, sum_cell_ergs_error, sum_cell_others, & sum_cell_sources, sum_cell_terms, sum_cell_work, total_energy_from_pre_mixing,& @@ -1639,7 +1637,7 @@ subroutine check_for_extra_heat(s, ierr) real(dp) :: start_time, end_time, left_to_inject, & q00, qp1, qmin, qmax, qtop, qbot, extra, dt, & target_injection_time, target_injection_ergs, & - kap_gamma, tau_gamma_sum, expect_to_inject + kap_gamma, tau_gamma_sum integer :: k, nz, k1 include 'formats' @@ -1764,8 +1762,7 @@ subroutine set_start_of_step_info(s, str, ierr) integer, intent(out) :: ierr logical :: trace - integer :: nz, k - real(dp) :: total_radiation + integer :: nz include 'formats' @@ -1824,10 +1821,8 @@ integer function prepare_for_new_step(s) type (star_info), pointer :: s - integer :: ierr, k, j, k0_old, k1_old, k0_new, k1_new - real(dp) :: total_energy, force_timestep_min, delta_E, sum_delta_E, & - force_timestep, total_radiation - real(dp), pointer :: energy_profile_after_remesh(:) + integer :: ierr, k + real(dp) :: force_timestep_min, force_timestep logical :: trace include 'formats' @@ -1973,8 +1968,7 @@ integer function do_mesh(s) use adjust_mesh_split_merge, only: remesh_split_merge use star_utils, only: start_time, update_time type (star_info), pointer :: s - integer(8) :: time0, clock_rate - integer :: ierr, k + integer(8) :: time0 real(dp) :: total include 'formats' do_mesh = keep_going @@ -2009,7 +2003,7 @@ integer function prepare_for_new_try(s) type (star_info), pointer :: s - integer :: ierr, i, j, k + integer :: ierr real(dp) :: screening include 'formats' @@ -2309,10 +2303,7 @@ integer function finish_step(id, ierr) type (star_info), pointer :: s integer, parameter :: nvals = 1, n_ivals = 0 - integer :: j, k, nz, & - current_num_iounits_in_use, prev_num_iounits_in_use - integer :: ivals(n_ivals) - real(dp) :: vals(nvals) + integer :: nz, current_num_iounits_in_use, prev_num_iounits_in_use logical :: trace, will_do_photo include 'formats' diff --git a/star/private/evolve_support.f90 b/star/private/evolve_support.f90 index 973f43fa1..28e4fecef 100644 --- a/star/private/evolve_support.f90 +++ b/star/private/evolve_support.f90 @@ -157,7 +157,6 @@ subroutine set_current_to_old(s) use hydro_rotation, only: use_xh_to_update_i_rot use utils_lib type (star_info), pointer :: s - real(dp), pointer :: p1(:) integer :: j, k, ierr include 'formats' @@ -287,7 +286,7 @@ subroutine output_to_file(filename, id, ierr) integer, intent(in) :: id integer, intent(out) :: ierr - integer :: iounit, k + integer :: iounit type (star_info), pointer :: s character(len=strlen) :: iomsg diff --git a/star/private/history.f90 b/star/private/history.f90 index 4b6379a92..1cacb1b50 100644 --- a/star/private/history.f90 +++ b/star/private/history.f90 @@ -64,7 +64,6 @@ subroutine do_history_info(s, write_flag, ierr) use utils_lib, only : integer_dict_create_hash, integer_dict_free, mkdir, folder_exists use chem_def, only : category_name use math_lib, only : math_backend - use rates_def, only : rates_reaction_id_max use net_def, only : Net_General_Info, get_net_ptr type (star_info), pointer :: s @@ -477,7 +476,6 @@ end subroutine dealloc subroutine do_extra_col(pass, j, col_offset) integer, intent(in) :: pass, j, col_offset - integer :: int_val include 'formats' if (pass == 1) then if (write_flag) write(io, fmt = int_fmt, advance = 'no') j + col_offset @@ -815,7 +813,7 @@ real(dp) function interpolate_burn_bdy_r(k) result(val) use num_lib, only : find0 integer, intent(in) :: k integer :: bv, bv0, bv1 - real(dp) :: eps, eps0, eps1, d0, d1, q0, q1 + real(dp) :: eps, eps0, eps1, d0, d1 include 'formats' if (k <= 0) then val = -1; return @@ -1007,7 +1005,7 @@ subroutine do_col_pass3(c) ! get the column value integer, intent(in) :: c integer :: i, ii, k, int_val logical :: is_int_val - real(dp) :: val, val1, Ledd, power_photo, frac + real(dp) :: val, frac int_val = 0; val = 0; is_int_val = .false. if (c > burn_relr_offset) then @@ -1188,8 +1186,7 @@ subroutine history_getval(& integer, intent(out) :: ierr integer :: k, i, min_k, k2 - real(dp) :: Ledd, L_rad, phi_Joss, power_photo, tmp, r, m_div_h, w_div_w_Kep, & - min_gamma1, deltam + real(dp) :: Ledd, phi_Joss, power_photo, tmp, r, m_div_h, w_div_w_Kep, deltam real(dp), pointer :: v(:) logical :: v_flag @@ -2951,7 +2948,6 @@ subroutine history_getval(& real(dp) function max_eps_nuc_log_x(j) integer, intent(in) :: j - real(dp) :: sum_x, sum_dq integer :: k max_eps_nuc_log_x = 0 if (j == 0) return @@ -2963,7 +2959,6 @@ end function max_eps_nuc_log_x real(dp) function cz_top_max_log_x(j) integer, intent(in) :: j - real(dp) :: sum_x, sum_dq integer :: k cz_top_max_log_x = 0 if (s% largest_conv_mixing_region == 0) return @@ -2975,7 +2970,6 @@ end function cz_top_max_log_x real(dp) function cz_max_log_x(j) integer, intent(in) :: j - real(dp) :: sum_x, sum_dq integer :: k cz_max_log_x = 0 if (s% largest_conv_mixing_region == 0) return @@ -3022,7 +3016,7 @@ real(dp) function get_int_k_r_dr(s, el, nu_factor) real(dp), intent(in) :: nu_factor real(dp) :: integral, cs2, r2, n2, sl2, omega2, & - L2, kr2, dr, r0_outer, r0_inner, sl2_next, xh1 + L2, kr2, dr, r0_outer, r0_inner, xh1 integer :: k, k1, k_inner, k_outer, h1 logical :: dbg @@ -3282,10 +3276,8 @@ subroutine get_history_values(s, num, specs, & real(dp), intent(inout) :: values(:) logical, intent(out) :: failed_to_find_value(:) - integer :: i, c, int_val, ierr, n, t, j, iounit - real(dp) :: val, epsnuc_out(12), v_surf, csound_surf, envelope_fraction_left - logical :: is_int_val, special_case - character (len = strlen) :: buffer, string + integer :: i, c, ierr + real(dp) :: epsnuc_out(12), v_surf, csound_surf, envelope_fraction_left include 'formats' ierr = 0 diff --git a/star/private/history_specs.f90 b/star/private/history_specs.f90 index 17e5392cf..a686f686e 100644 --- a/star/private/history_specs.f90 +++ b/star/private/history_specs.f90 @@ -95,10 +95,10 @@ recursive subroutine add_history_columns( & logical, intent(in) :: report integer, intent(out) :: ierr - integer :: iounit, n, i, t, id, j, k, cnt, ii, nxt_spec, spec_err + integer :: iounit, n, i, t, j, cnt, ii, nxt_spec, spec_err character (len=strlen) :: buffer, string, filename integer, parameter :: max_level = 20 - logical :: bad_item, special_case, exists + logical :: special_case, exists logical, parameter :: dbg = .false. include 'formats' diff --git a/star/private/hydro_alpha_rti_eqns.f90 b/star/private/hydro_alpha_rti_eqns.f90 index 8ce28d762..b157b003e 100644 --- a/star/private/hydro_alpha_rti_eqns.f90 +++ b/star/private/hydro_alpha_rti_eqns.f90 @@ -41,7 +41,6 @@ module hydro_alpha_rti_eqns subroutine do1_dalpha_RTI_dt_eqn(s, k, nvar, ierr) use star_utils, only: em1, e00, ep1 - use chem_def, only: ih1, ihe4 type (star_info), pointer :: s integer, intent(in) :: k, nvar @@ -52,13 +51,12 @@ subroutine do1_dalpha_RTI_dt_eqn(s, k, nvar, ierr) type(auto_diff_real_4var_order1) :: source_minus, source_plus, dadt_source, dadt_actual type(auto_diff_real_4var_order1) :: dadt_mix, dadt_expected, resid - integer :: nz, i_alpha_RTI, i_dalpha_RTI_dt, j, kk + integer :: nz, i_alpha_RTI, i_dalpha_RTI_dt real(dp), pointer, dimension(:) :: sig - logical :: okay real(dp) :: & - dq, dm, dr, d_dadt_mix_dap1, sig00, sigp1, & + dq, dm, sig00, sigp1, & eqn_scale, dPdr_drhodr, instability2, instability, RTI_B, & - r00, rp1, drho, rho, rmid, cs, fac + r00, rho, rmid, cs, fac logical :: test_partials include 'formats' diff --git a/star/private/hydro_chem_eqns.f90 b/star/private/hydro_chem_eqns.f90 index 15e1d90b1..98385ad1c 100644 --- a/star/private/hydro_chem_eqns.f90 +++ b/star/private/hydro_chem_eqns.f90 @@ -60,24 +60,23 @@ subroutine do1_chem_eqns(s, k, nvar, ierr) use chem_def use net_lib, only: show_net_reactions, show_net_params - use rates_def, only: reaction_Name, i_rate + use rates_def, only: i_rate use star_utils, only: em1, e00, ep1 type (star_info), pointer :: s integer, intent(in) :: k, nvar integer, intent(out) :: ierr - integer, pointer :: reaction_id(:) ! maps net reaction number to reaction id + !integer, pointer :: reaction_id(:) ! maps net reaction number to reaction id integer :: nz, j, i, jj, ii, species real(dp) :: & dxdt_expected_dxa, dxdt_expected, dxdt_actual, & - dxdt_expected_dlnd, dxdt_expected_dlnT, & dq, dm, dequ, dxdt_nuc, dxdt_mix, max_abs_residual, & - sum_dxdt_nuc, dx_expected_dlnd, dx_expected_dlnT, & + sum_dxdt_nuc, & d_dxdt_mix_dx00, d_dxdt_mix_dxm1, d_dxdt_mix_dxp1, & sum_dx_burning, sum_dx_mixing, residual, & - dxdt_factor, alpha, eqn_scale, d_dxdt_dx, & - dequ_dlnd, dequ_dlnT, dequ_dlnPgas_const_T, dequ_dlnT_const_Pgas + dxdt_factor, eqn_scale, & + dequ_dlnd, dequ_dlnT logical :: test_partials, doing_op_split_burn logical, parameter :: checking = .false. diff --git a/star/private/hydro_energy.f90 b/star/private/hydro_energy.f90 index 9748eb218..41c1c8525 100644 --- a/star/private/hydro_energy.f90 +++ b/star/private/hydro_energy.f90 @@ -275,7 +275,7 @@ subroutine setup_sources_and_others(ierr) ! sources_ad, others_ad drag_energy = 0d0 s% FdotV_drag_energy(k) = 0 - if (k .ne. s% nz) then + if (k /= s% nz) then if ((s% q(k) > s% min_q_for_drag) .and. & (s% drag_coefficient > 0) .and. & s% use_drag_energy) then @@ -544,12 +544,11 @@ subroutine eval_dwork(s, k, skip_P, dwork_ad, dwork, & d_dwork_dxam1, d_dwork_dxa00, d_dwork_dxap1 integer, intent(out) :: ierr - real(dp) :: work_00, work_p1, dm, dV + real(dp) :: work_00, work_p1 real(dp), dimension(s% species) :: & d_work_00_dxa00, d_work_00_dxam1, & - d_work_p1_dxap1, d_work_p1_dxa00, d_Ptot_dxa - type(auto_diff_real_star_order1) :: work_00_ad, work_p1_ad, & - Ptot_ad, dV_ad, rho_ad + d_work_p1_dxap1, d_work_p1_dxa00 + type(auto_diff_real_star_order1) :: work_00_ad, work_p1_ad logical :: test_partials integer :: j include 'formats' @@ -597,12 +596,12 @@ subroutine eval1_work(s, k, skip_Peos, & real(dp), dimension(s% species), intent(out) :: & d_work_dxa00, d_work_dxam1 integer, intent(out) :: ierr - real(dp) :: alfa, beta, P_theta, Peos_face, Av_face + real(dp) :: alfa, beta, P_theta, Av_face real(dp), dimension(s% species) :: d_Pface_dxa00, d_Pface_dxam1 type(auto_diff_real_star_order1) :: & P_face_ad, A_times_v_face_ad, mlt_Pturb_ad, & PtrbR_ad, PtrbL_ad, PvscL_ad, PvscR_ad, Ptrb_div_etrb, PL_ad, PR_ad, & - Peos_ad, Ptrb_ad, Pvsc_ad, inv_R2, extra_P + Peos_ad, Ptrb_ad, Pvsc_ad, extra_P logical :: test_partials integer :: j include 'formats' diff --git a/star/private/hydro_eqns.f90 b/star/private/hydro_eqns.f90 index 4e01f5045..931d48be5 100644 --- a/star/private/hydro_eqns.f90 +++ b/star/private/hydro_eqns.f90 @@ -23,7 +23,6 @@ ! ! *********************************************************************** - module hydro_eqns use star_private_def @@ -71,16 +70,16 @@ subroutine eval_equ_for_solver(s, nvar, nzlo, nzhi, ierr) integer, intent(out) :: ierr integer :: & - i_dv_dt, i_du_dt, i_du_dk, i_equL, i_dlnd_dt, i_dlnE_dt, i_dlnR_dt, & + i_dv_dt, i_du_dt, i_equL, i_dlnd_dt, i_dlnE_dt, i_dlnR_dt, & i_dalpha_RTI_dt, i_equ_w_div_wc, i_dj_rot_dt, i_detrb_dt, & i, k, j, nvar_hydro, nz, op_err integer :: & - i_lnd, i_lnR, i_lnT, i_lum, i_v, i_u, i_du, i_w_div_wc, i_j_rot, & - i_alpha_RTI, i_xh1, i_xhe4, kmax_equ(nvar), species - real(dp) :: max_equ(nvar), L_phot_old + i_lnd, i_lnR, i_lnT, i_lum, i_v, i_u, i_w_div_wc, i_j_rot, & + i_alpha_RTI, i_xh1, i_xhe4, species + real(dp) :: L_phot_old real(dp), dimension(:), pointer :: & L, lnR, lnP, lnT, energy - logical :: v_flag, u_flag, cv_flag, w_div_wc_flag, j_rot_flag, dump_for_debug, & + logical :: v_flag, u_flag, dump_for_debug, & do_chem, do_mix, do_dlnd_dt, do_dv_dt, do_du_dt, do_dlnR_dt, & do_alpha_RTI, do_w_div_wc, do_j_rot, do_dlnE_dt, do_equL, do_detrb_dt @@ -318,7 +317,7 @@ subroutine eval_equ_for_solver(s, nvar, nzlo, nzhi, ierr) contains subroutine dump_equ - integer :: k, j, k0, k1 + integer :: k, j include 'formats' do k=1,s% nz do j=1,nvar @@ -427,14 +426,14 @@ subroutine fix_d_eos_dxa_partials(s, k, ierr) if (k == s% solver_test_partials_k .and. s% solver_iter == s% solver_test_partials_iter_number) then i_var = lookup_nameofvar(s, s% solver_test_partials_var_name) - if (i_var .gt. s% nvar_hydro) then + if (i_var > s% nvar_hydro) then i_var_sink = lookup_nameofvar(s, s% solver_test_partials_sink_name) end if end if ! if we're on an EOS where there aren't composition partials, ! approximate derivatives with finite differences - if (frac_without_dxa .gt. 0) then + if (frac_without_dxa > 0) then do j=1, s% species dxa = s% xa(j,k) - s% xa_start(j,k) @@ -443,7 +442,7 @@ subroutine fix_d_eos_dxa_partials(s, k, ierr) s% solver_iter == s% solver_test_partials_iter_number) & write(*,2) 'dxa', j, dxa - if (abs(dxa) .ge. dxa_threshold) then + if (abs(dxa) >= dxa_threshold) then ! first, get eos with xa_start @@ -513,11 +512,11 @@ subroutine fix_d_eos_dxa_partials(s, k, ierr) if (k == s% solver_test_partials_k .and. s% solver_iter == s% solver_test_partials_iter_number) then if (i_var_sink > 0 .and. i_var > s% nvar_hydro) then if (dxa < dxa_threshold) then - if (j .eq. i_var - s% nvar_hydro) then + if (j == i_var - s% nvar_hydro) then write(*,*) 'fix_d_eos_dxa_partials: skipping dxa derivative fix for ', trim (s% solver_test_partials_var_name), & ' (dxa < dxa_threshold): ', abs(dxa), ' < ', dxa_threshold endif - if (j .eq. i_var_sink - s% nvar_hydro) then + if (j == i_var_sink - s% nvar_hydro) then write(*,*) 'fix_d_eos_dxa_partials: skipping dxa derivative fix for ', trim (s% solver_test_partials_sink_name), & ' (dxa < dxa_threshold): ', abs(dxa), ' < ', dxa_threshold end if @@ -602,7 +601,7 @@ subroutine do1_w_div_wc_eqn(s, k, nvar, ierr) integer, intent(in) :: k, nvar integer, intent(out) :: ierr integer :: i_equ_w_div_wc, i_w_div_wc - real(dp) :: wwc, dimless_rphi, dimless_rphi_given_wwc, w1, w2 + real(dp) :: wwc real(dp) :: jr_lim1, jr_lim2, A, C type(auto_diff_real_star_order1) :: & w_d_wc00, r00, jrot00, resid_ad, A_ad, C_ad, & @@ -825,11 +824,9 @@ subroutine get_PT_bc_ad(ierr) ! set P_bc_ad and T_bc_ad dlnT_bc_dlnd, dlnT_bc_dlnT, dlnT_bc_dlnR, & dlnT_bc_dL, dlnP_bc_dlnd, dlnP_bc_dlnT, dlnP_bc_dL, dlnP_bc_dlnR, & dlnkap_dlnd, dlnkap_dlnT, dPinv_dlnd, dPinv_dlnT, dP0, dT0, & - P_surf, T_surf, dlnP_bc_dlnPsurf, P_rad, & + P_surf, T_surf, dlnP_bc_dlnPsurf, & dlnT_bc_dlnTsurf, P_bc, T_bc, lnT_bc, lnP_bc, & dP0_dlnR, dT0_dlnR, dT0_dlnT, dT0_dlnd, dT0_dL, dlnP_bc_dP0, dlnT_bc_dT0, & - dlnT_bc_dlnE_const_Rho, dlnT_dlnE_const_Rho, dlnP_dlnE_c_Rho, & - dlnP_bc_dlnE_c_Rho, dlnT_bc_dlnd_c_E, dlnP_bc_dlnd_c_E, & d_gradT_dlnR, d_gradT_dlnT00, d_gradT_dlnd00, d_gradT_dL, & dlnR00, dlnT00, dlnd00 logical, parameter :: skip_partials = .false. @@ -1083,7 +1080,7 @@ end subroutine set_momentum_BC subroutine set_compression_BC(ierr) integer, intent(out) :: ierr type(auto_diff_real_star_order1) :: & - rho1, rho2, lnd1, lnd2, dlnd1, dlnd2, drho1, drho2 + rho1, rho2, dlnd1, dlnd2 include 'formats' ! gradient of compression vanishes fixes density for cell 1 ! d_dt(1/rho(1)) = d_dt(1/rho(2)) e.g., Grott, Chernigovski, Glatzel, 2005. @@ -1144,7 +1141,6 @@ subroutine equ_data_for_extra_profile_columns( & integer, intent(out) :: ierr integer :: i, k type (star_info), pointer :: s - real(dp), dimension(:, :), pointer :: equ include 'formats' ierr = 0 call star_ptr(id, s, ierr) diff --git a/star/private/hydro_momentum.f90 b/star/private/hydro_momentum.f90 index 43388828b..54b29fddc 100644 --- a/star/private/hydro_momentum.f90 +++ b/star/private/hydro_momentum.f90 @@ -86,7 +86,6 @@ end subroutine do1_momentum_eqn subroutine get1_momentum_eqn( & s, k, P_surf_ad, nvar, & d_dm1, d_d00, d_dp1, ierr) - use chem_def, only: chem_isos use accurate_sum_auto_diff_star_order1 use auto_diff_support @@ -101,7 +100,7 @@ subroutine get1_momentum_eqn( & real(dp), dimension(s% species) :: & d_dPtot_dxam1, d_dPtot_dxa00, d_iPtotavg_dxam1, d_iPtotavg_dxa00, & d_residual_dxam1, d_residual_dxa00 - integer :: nz, j, i_dv_dt, i_lum, i_v + integer :: nz, i_dv_dt, i_lum, i_v logical :: test_partials type(auto_diff_real_star_order1) :: resid1_ad, resid_ad, & @@ -389,7 +388,7 @@ subroutine expected_non_HSE_term( & integer, intent(out) :: ierr type(auto_diff_real_star_order1) :: extra_ad, v_00, & drag - real(dp) :: accel, d_accel_dv, fraction_on + real(dp) :: accel, d_accel_dv logical :: test_partials, local_v_flag include 'formats' @@ -553,8 +552,8 @@ subroutine do1_radius_eqn(s, k, nvar, ierr) integer, intent(in) :: k, nvar integer, intent(out) :: ierr type(auto_diff_real_star_order1) :: & - v00, r_actual, r_expected, dxh_lnR, resid_ad, & - dr_div_r0_actual, dr_div_r0_expected, dr + v00, dxh_lnR, resid_ad, & + dr_div_r0_actual, dr_div_r0_expected logical :: test_partials, force_zero_v include 'formats' !test_partials = (k == s% solver_test_partials_k) @@ -606,4 +605,3 @@ end subroutine do1_radius_eqn end module hydro_momentum - diff --git a/star/private/hydro_riemann.f90 b/star/private/hydro_riemann.f90 index 22f3a5a1d..3fc78617c 100644 --- a/star/private/hydro_riemann.f90 +++ b/star/private/hydro_riemann.f90 @@ -87,7 +87,7 @@ subroutine do1_dudt_eqn( & integer, intent(in) :: nvar integer, intent(out) :: ierr - integer :: j, nz, i_du_dt, i_u + integer :: nz, i_du_dt type(auto_diff_real_star_order1) :: & flux_in_ad, flux_out_ad, diffusion_source_ad, & geometry_source_ad, gravity_source_ad, & diff --git a/star/private/hydro_rotation.f90 b/star/private/hydro_rotation.f90 index 19e4e007e..71be26bf6 100644 --- a/star/private/hydro_rotation.f90 +++ b/star/private/hydro_rotation.f90 @@ -216,7 +216,7 @@ end subroutine eval_i_rot subroutine set_i_rot(s, skip_w_div_w_crit_roche) type (star_info), pointer :: s logical, intent(in) :: skip_w_div_w_crit_roche - integer :: k, nz + integer :: k include 'formats' !$OMP PARALLEL DO PRIVATE(k) SCHEDULE(dynamic,2) @@ -292,7 +292,7 @@ end subroutine check_omega subroutine update1_i_rot_from_xh(s, k) type (star_info), pointer :: s integer, intent(in) :: k - real(dp) :: r00, r003, rp1, rp13, rm1, rm13, r_in, r_out + real(dp) :: r00 include 'formats' r00 = get_r_from_xh(s,k) @@ -477,7 +477,6 @@ subroutine set_rotation_info(s, skip_w_div_w_crit_roche, ierr) type (star_info), pointer :: s logical, intent(in) :: skip_w_div_w_crit_roche integer, intent(out) :: ierr - integer :: k include 'formats' ierr = 0 @@ -507,7 +506,7 @@ subroutine set_surf_avg_rotation_info(s) real(dp) :: & dm, dmsum, omega_sum, omega_crit_sum, omega_div_omega_crit_sum, & v_rot_sum, v_crit_sum, v_div_v_crit_sum, Lrad_div_Ledd_sum, & - kap_face, Ledd, gamma_factor, omega_crit, omega, kap_sum, & + gamma_factor, omega_crit, omega, kap_sum, & j_rot_sum, j_rot, v_rot, v_crit, Lrad_div_Ledd, dtau, tau, & cgrav, kap, mmid, Lmid, rmid, logT_sum, logRho_sum integer :: k, ierr @@ -682,8 +681,7 @@ subroutine eval_fp_ft( & logical :: dbg - type(auto_diff_real_1var_order1) :: A_omega,fp_numerator, ft_numerator, w, w2, w3, w4, w5, w6, lg_one_sub_w4, & - d_A_omega_dw, d_fp_numerator_dw, d_ft_numerator_dw, fp_temp, ft_temp + type(auto_diff_real_1var_order1) :: A_omega,fp_numerator, ft_numerator, w, w2, w3, w4, w5, w6, lg_one_sub_w4, fp_temp, ft_temp include 'formats' diff --git a/star/private/hydro_rsp2.f90 b/star/private/hydro_rsp2.f90 index 139afea33..3f040ebea 100644 --- a/star/private/hydro_rsp2.f90 +++ b/star/private/hydro_rsp2.f90 @@ -235,7 +235,6 @@ function Hp_face_for_rsp2_eqn(s, k, ierr) result(Hp_face) ! cm r_00, Peos_00, d_00, Peos_m1, d_m1, Peos_div_rho, & d_face, Peos_face, alt_Hp_face, A real(dp) :: alfa, beta - integer :: j include 'formats' ierr = 0 if (k > s% nz) then @@ -289,15 +288,14 @@ subroutine do1_turbulent_energy_eqn(s, k, nvar, ierr) type (star_info), pointer :: s integer, intent(in) :: k, nvar integer, intent(out) :: ierr - integer :: j ! for OLD WAY type(auto_diff_real_star_order1) :: & d_turbulent_energy_ad, Ptrb_dV_ad, dt_C_ad, dt_Eq_ad - type(auto_diff_real_star_order1) :: xi0, xi1, xi2, A0, Af, w_00 + type(auto_diff_real_star_order1) :: w_00 type(auto_diff_real_star_order1) :: tst, resid_ad, dt_dLt_dm_ad type(accurate_auto_diff_real_star_order1) :: esum_ad logical :: non_turbulent_cell, test_partials - real(dp) :: residual, atol, rtol, scal + real(dp) :: residual, scal include 'formats' !test_partials = (k == s% solver_test_partials_k) test_partials = .false. @@ -374,8 +372,8 @@ end subroutine setup_Ptrb_dV_ad subroutine setup_dt_dLt_dm_ad(ierr) ! erg g^-1 integer, intent(out) :: ierr - type(auto_diff_real_star_order1) :: Lt_00, Lt_p1, dLt_ad - real(dp) :: Lt_00_start, Lt_p1_start, L_theta + type(auto_diff_real_star_order1) :: Lt_00, Lt_p1 + real(dp) :: L_theta include 'formats' ierr = 0 if (s% using_velocity_time_centering .and. & @@ -629,10 +627,8 @@ function Hp_cell_for_Chi(s, k, ierr) result(Hp_cell) ! cm integer, intent(in) :: k integer, intent(out) :: ierr type(auto_diff_real_star_order1) :: Hp_cell - type(auto_diff_real_star_order1) :: & - d_00, Peos_00, rmid + type(auto_diff_real_star_order1) :: d_00, Peos_00, rmid real(dp) :: mmid, cgrav_mid - integer :: j include 'formats' ierr = 0 @@ -769,7 +765,7 @@ function compute_Source(s, k, ierr) result(Source) ! erg g^-1 s^-1 type(auto_diff_real_star_order1) :: & w_00, T_00, d_00, Peos_00, Cp_00, chiT_00, chiRho_00, QQ_00, & Hp_face_00, Hp_face_p1, PII_face_00, PII_face_p1, PII_div_Hp_cell, & - grad_ad_00, P_QQ_div_Cp + P_QQ_div_Cp include 'formats' ierr = 0 w_00 = wrap_w_00(s, k) @@ -922,7 +918,6 @@ subroutine compute_L_terms(s, k, L, Lr, Lc, Lt, ierr) type (star_info), pointer, intent(in) :: s integer, intent(in) :: k type(auto_diff_real_star_order1), intent(out) :: L, Lr, Lc, Lt - real(dp) :: L_val integer, intent(out) :: ierr include 'formats' ierr = 0 @@ -1115,7 +1110,7 @@ end function compute_Lt subroutine set_etrb_start_vars(s, ierr) type (star_info), pointer :: s integer, intent(out) :: ierr - integer :: k, op_err + integer :: k type(auto_diff_real_star_order1) :: Y_face, Lt include 'formats' ierr = 0 @@ -1138,8 +1133,8 @@ subroutine RSP2_adjust_vars_before_call_solver(s, ierr) ! replaces check_omega i type (star_info), pointer :: s integer, intent(out) :: ierr real(dp) :: PII_div_Hp, QQ, SOURCE, Hp_cell, DAMP, POM, POM2, DAMPR, del, soln - type(auto_diff_real_star_order1) :: x - integer :: k, op_err + !type(auto_diff_real_star_order1) :: x + integer :: k include 'formats' ierr = 0 if (s% mixing_length_alpha == 0d0) return diff --git a/star/private/hydro_rsp2_support.f90 b/star/private/hydro_rsp2_support.f90 index 695916cab..9c4baf1d6 100644 --- a/star/private/hydro_rsp2_support.f90 +++ b/star/private/hydro_rsp2_support.f90 @@ -52,8 +52,7 @@ subroutine remesh_for_RSP2(s,ierr) type (star_info), pointer :: s integer, intent(out) :: ierr integer :: k, j, nz_old, nz - real(dp) :: xm_anchor, P_surf, T_surf, & - old_logT_cntr, old_logT_1, old_L1, old_r1 + real(dp) :: xm_anchor, P_surf, T_surf, old_L1, old_r1 real(dp), allocatable, dimension(:) :: & xm_old, xm, xm_mid_old, xm_mid, v_old, v_new real(dp), pointer :: work1(:) ! =(nz_old+1, pm_work_size) @@ -197,7 +196,7 @@ subroutine find_xm_anchor end subroutine find_xm_anchor subroutine set_xm_new ! sets xm, dm, m, dq, q - integer :: nz_outer, n_inner, iter, k, j + integer :: nz_outer, k real(dp) :: dq_1_factor, dxm_outer, lnx, dlnx include 'formats' nz_outer = s% RSP2_nz_outer @@ -335,10 +334,9 @@ end subroutine rescale_xa subroutine revise_lnT_for_QHSE(P_surf, ierr) use eos_def, only: num_eos_basic_results, num_eos_d_dxa_results - use chem_lib - use chem_def + use chem_def, only: chem_isos use eos_support, only: solve_eos_given_DP - use eos_def + use eos_def, only: i_eta, i_lnfree_e use kap_def, only: num_kap_fracs use kap_support, only: get_kap real(dp), intent(in) :: P_surf @@ -348,7 +346,7 @@ subroutine revise_lnT_for_QHSE(P_surf, ierr) kap_fracs(num_kap_fracs), kap, dlnkap_dlnRho, dlnkap_dlnT, & old_kap, new_P_surf, new_T_surf real(dp), dimension(num_eos_basic_results) :: & - res, d_dlnd, d_dlnT, d_dabar, d_dzbar + res, d_dlnd, d_dlnT real(dp) :: dres_dxa(num_eos_d_dxa_results,s% species) include 'formats' ierr = 0 diff --git a/star/private/hydro_temperature.f90 b/star/private/hydro_temperature.f90 index 0fe83f09c..ea5c2307d 100644 --- a/star/private/hydro_temperature.f90 +++ b/star/private/hydro_temperature.f90 @@ -59,7 +59,7 @@ subroutine do1_alt_dlnT_dm_eqn(s, k, nvar, ierr) kap_00, kap_m1, kap_face, d_P_rad_expected_ad, T_m1, T4_m1, T_00, T4_00, & P_rad_m1, P_rad_00, d_P_rad_actual_ad, resid - integer :: i_equL, i + integer :: i_equL logical :: dbg logical :: test_partials diff --git a/star/private/hydro_vars.f90 b/star/private/hydro_vars.f90 index bb1a2fab7..bd01ddcfb 100644 --- a/star/private/hydro_vars.f90 +++ b/star/private/hydro_vars.f90 @@ -108,7 +108,7 @@ subroutine set_final_vars(s, dt, ierr) skip_mixing_info, & skip_set_cz_bdy_mass, & skip_mlt - integer :: nz, ierr1, k, i + integer :: nz, k include 'formats' @@ -178,8 +178,6 @@ subroutine set_some_vars( & real(dp), intent(in) :: dt integer, intent(out) :: ierr - integer(8) :: time0, clock_rate - real(dp) :: total logical, parameter :: skip_other_cgrav = .false. logical, parameter :: skip_basic_vars = .false. logical, parameter :: skip_micro_vars = .false. @@ -387,22 +385,27 @@ end subroutine set_Teff subroutine set_Teff_info_for_eqns(s, skip_partials, & - need_atm_Psurf, need_atm_Tsurf, r_surf, L_surf, Teff, & + need_atm_Psurf_in, need_atm_Tsurf_in, r_surf, L_surf, Teff, & lnT_surf, dlnT_dL, dlnT_dlnR, dlnT_dlnM, dlnT_dlnkap, & lnP_surf, dlnP_dL, dlnP_dlnR, dlnP_dlnM, dlnP_dlnkap, & ierr) use star_utils, only: set_phot_info use atm_lib, only: atm_Teff + use starspots, only: starspot_tweak_PT, starspot_restore_PT type (star_info), pointer :: s logical, intent(in) :: skip_partials, & - need_atm_Psurf, need_atm_Tsurf + need_atm_Psurf_in, need_atm_Tsurf_in real(dp), intent(out) :: r_surf, L_surf, Teff, & lnT_surf, dlnT_dL, dlnT_dlnR, dlnT_dlnM, dlnT_dlnkap, & lnP_surf, dlnP_dL, dlnP_dlnR, dlnP_dlnM, dlnP_dlnkap integer, intent(out) :: ierr + logical :: need_atm_Psurf, need_atm_Tsurf include 'formats' + need_atm_Psurf = need_atm_Psurf_in + need_atm_Tsurf = need_atm_Tsurf_in + ierr = 0 r_surf = s% r(1) @@ -435,11 +438,21 @@ subroutine set_Teff_info_for_eqns(s, skip_partials, & lnP_surf, dlnP_dL, dlnP_dlnR, dlnP_dlnM, dlnP_dlnkap, & ierr) else + ! starspot YREC routine + if (s% do_starspots) then + need_atm_Psurf = .true. + need_atm_Tsurf = .true. + call starspot_tweak_PT(s) + end if call get_surf_PT( & s, skip_partials, need_atm_Psurf, need_atm_Tsurf, & lnT_surf, dlnT_dL, dlnT_dlnR, dlnT_dlnM, dlnT_dlnkap, & lnP_surf, dlnP_dL, dlnP_dlnR, dlnP_dlnM, dlnP_dlnkap, & ierr) + ! starspot YREC routine + if (s% do_starspots) then + call starspot_restore_PT(s) + end if end if if (ierr /= 0) then if (s% report_ierr) then @@ -481,7 +494,7 @@ subroutine set_hydro_vars( & skip_mixing_info, skip_set_cz_bdy_mass, skip_mlt integer, intent(out) :: ierr - integer :: nz, num_nse, k, T_tau_id + integer :: nz, k, T_tau_id integer(8) :: time0 logical, parameter :: dbg = .false. real(dp) :: total @@ -668,13 +681,12 @@ end subroutine check_rs subroutine set_basic_vars(s, nzlo, nzhi, ierr) - use chem_def, only: ini56 use star_utils, only: set_rv_info, set_rmid type (star_info), pointer :: s integer, intent(in) :: nzlo, nzhi integer, intent(out) :: ierr integer :: j, k, species, nz - real(dp) :: twoGmrc2, r2, alfa, beta, sum_xa, v, u00, um1, du + real(dp) :: twoGmrc2, sum_xa include 'formats' @@ -785,7 +797,6 @@ subroutine get_surf_PT( & real(dp) :: kap_surf real(dp) :: M_surf - include 'formats' ! Set up stellar surface parameters @@ -1101,7 +1112,6 @@ subroutine compute_smoothed_brunt_B use star_utils, only: weighed_smoothing, threshold_smoothing logical, parameter :: preserve_sign = .false. real(dp), pointer, dimension(:) :: work - integer :: k include 'formats' ierr = 0 work => dlnd diff --git a/star/private/init.f90 b/star/private/init.f90 index 04021fe57..47ca40b9a 100644 --- a/star/private/init.f90 +++ b/star/private/init.f90 @@ -117,8 +117,6 @@ subroutine do_star_init( & character (len=*), intent(in) :: color_file_names(:) integer , intent(in):: color_num_colors(:) integer, intent(out) :: ierr - integer :: iam, nprocs, nprow, npcol, i, n - integer, dimension(:), allocatable :: seed include 'formats' ierr = 0 if (have_done_starlib_init) return @@ -176,7 +174,6 @@ end subroutine do_starlib_shutdown subroutine alloc_star_data(id, ierr) - use rates_def, only: rates_reaction_id_max use chem_def, only: num_categories use net, only: default_set_rate_factors, & default_set_op_mono_factors @@ -849,12 +846,11 @@ subroutine model_builder( & integer, intent(out) :: ierr type (star_info), pointer :: s - real(dp) :: initial_mass, initial_z, dlgm_per_step + real(dp) :: initial_mass, initial_z real(dp), parameter :: lg_max_abs_mdot = -1000 ! use default real(dp), parameter :: change_mass_years_for_dt = 1 real(dp), parameter :: min_mass_for_create_pre_ms = 0.03d0 - logical :: restore_at_end - real(dp) :: xm, total_radiation, warning_limit_for_max_residual + real(dp) :: total_radiation, warning_limit_for_max_residual integer :: k, num_trace_history_values real(dp) :: save_Pextra_factor character (len=256):: save_atm_option, & diff --git a/star/private/init_model.f90 b/star/private/init_model.f90 index 49cd27a74..196ca85e0 100644 --- a/star/private/init_model.f90 +++ b/star/private/init_model.f90 @@ -273,7 +273,6 @@ subroutine read_zams_header use read_model, only: read_properties integer :: year_month_day_when_created, iprop real(dp) :: dprop, initial_z, initial_y - character (len=net_name_len) :: net_name read(iounit, *, iostat=ierr) ! skip blank line before property list include 'formats' if (ierr /= 0) return diff --git a/star/private/kap_support.f90 b/star/private/kap_support.f90 index fb4262480..2031eee4a 100644 --- a/star/private/kap_support.f90 +++ b/star/private/kap_support.f90 @@ -236,7 +236,7 @@ subroutine get_kap( & get_op_mono_args, kap_get_op_mono, kap_get, & call_compute_kappa_mombarg - use chem_def, only: ih1, ihe3, ihe4, chem_isos + use chem_def, only: chem_isos use star_utils, only: get_XYZ, lookup_nameofvar type (star_info), pointer :: s @@ -256,22 +256,19 @@ subroutine get_kap( & type(auto_diff_real_2var_order1) :: beta, lnkap, lnkap_op real(dp) :: kap_op, dlnkap_op_dlnRho, dlnkap_op_dlnT, & Z, xh, xhe, xc, xn, xo, xne, & - kap_ross_cell, log_kap_rad, fk(17), delta + log_kap_rad, fk(17) character(len=4) :: e_name - !real(dp), pointer :: xa(:) integer, pointer :: net_iso(:) real, pointer :: & umesh(:), semesh(:), ff(:,:,:,:), rs(:,:,:) integer :: nel, izzp(s% species) - real(dp) :: fap(s% species), fac(s% species), gp1(s% species) + real(dp) :: fap(s% species), fac(s% species) logical :: screening real(dp), parameter :: & eps = 1d-6, minus_eps = -eps, one_plus_eps = 1d0 + eps - integer :: i_var - include 'formats' if (s% doing_timing) s% timing_num_get_kap_calls = s% timing_num_get_kap_calls + 1 diff --git a/star/private/mass_utils.f90 b/star/private/mass_utils.f90 index 7250c858f..255b42f13 100644 --- a/star/private/mass_utils.f90 +++ b/star/private/mass_utils.f90 @@ -186,7 +186,7 @@ subroutine make_compressed_intersect(dm1, dm2, nz, mesh_intersects, ranges) integer side real(qp), dimension(:), allocatable :: remainders1, remainders2 type(accurate_real) diff, dBottom, dTop, dBottomTop, dTopBottom - integer i, j, k, counter + integer :: i, j, k, counter allocate(remainders1(nz), remainders2(nz)) @@ -340,7 +340,7 @@ subroutine find_i_ranges(nz, ranges, i_min, i_max) integer, dimension(0:nz) :: i_min, i_max ! Intermediates - integer i, j, counter + integer :: i, j, counter ! Ensures that anything is less than initial i_min ! and anything is morre than initial i_max. @@ -379,9 +379,7 @@ subroutine prepare_pass_fraction(nz, delta_m, dm, mesh_intersects, ranges, i_min type(non_rect_array), dimension(0:nz) :: pf ! Intermediates - integer i, j, l, counter, start, end, direction - logical work_backwards - real(qp), dimension(:), allocatable :: test + integer :: i, j, l, counter ! Outputs call find_i_ranges(nz, ranges, i_min, i_max) @@ -432,7 +430,7 @@ end subroutine prepare_pass_fraction ! inside cell i. real(qp) function compute_pass_fraction(i, j, i_min, i_max, pf) ! Inputs - integer i, j + integer :: i, j integer, dimension(0:) :: i_min, i_max type(non_rect_array), dimension(0:) :: pf @@ -457,7 +455,7 @@ subroutine find_j_ranges(nz, ranges, mass_flux, j_min, j_max) real(qp), dimension(:) :: mass_flux ! Intermediates - integer i, j, counter + integer :: i, j, counter ! Ensures that anything is less than initial i_min ! and anything is morre than initial i_max. @@ -538,7 +536,7 @@ subroutine integrate_conserved(vals_new, vals_old, vals_outside, dm_new, dm_old, real(qp), intent(in), dimension(:) :: dm_new, dm_old ! Intermediates - integer i, j, k, l + integer :: i, j, k, l real(qp) :: mesh_intersects(2*nz) integer :: ranges(2*nz,2) diff --git a/star/private/mesh_adjust.f90 b/star/private/mesh_adjust.f90 index 5a227e10f..60661cce5 100644 --- a/star/private/mesh_adjust.f90 +++ b/star/private/mesh_adjust.f90 @@ -68,7 +68,7 @@ subroutine do_mesh_adjust( & integer, dimension(:) :: cell_type, comes_from real(dp), dimension(:), pointer :: & dq_old, xq_old, dq, xq, energy_old, eta_old, & - lnd_old, lnPgas_old, mlt_vc_old, lnT_old, w_old, Hp_face_old, & + lnd_old, lnPgas_old, mlt_vc_old, lnT_old, w_old, & specific_PE_old, specific_KE_old, & old_m, old_r, old_rho, dPdr_dRhodr_info_old, & j_rot_old, omega_old, D_omega_old, D_mix_old @@ -77,11 +77,10 @@ subroutine do_mesh_adjust( & real(dp), dimension(:,:), pointer :: xh, xa integer, intent(out) :: ierr - real(dp) :: dxa, xmstar, mstar, sumx, remove1, remove2, & + real(dp) :: dxa, xmstar, mstar, sumx, & total_internal_energy1, total_internal_energy2, err character (len=strlen) :: message - integer :: k, from_k, j, op_err, nzlo, nzhi, nzlo_old, nzhi_old, species - logical :: found_bad_one + integer :: k, j, op_err, nzlo, nzhi, nzlo_old, nzhi_old, species real(dp), pointer :: work(:) real(dp), dimension(:), allocatable :: & dqbar, dqbar_old, new_r, Vol_new, xq_old_plus1, & @@ -895,7 +894,7 @@ subroutine do_interp_cell_val( & real(dp), pointer, dimension(:) :: & mid_xq_new, mid_xq_old_plus1 - integer :: n, i, j, k + integer :: n, i, k ierr = 0 n = nzhi - nzlo + 1 @@ -993,7 +992,7 @@ subroutine do_lnR_and_lnd( & interp_Vol_new, interp_xq, density_init integer, intent(out) :: ierr - integer :: k, from_k, kk, n, interp_lo, interp_hi, interp_n, num_revise + integer :: k, from_k, n, interp_lo, interp_hi, interp_n real(dp) :: Vol_min, Vol_max, cell_Vol, Vol_center, Vm1, V00, Vp1 logical, parameter :: dbg = .false., trace_PE_residual = .false. @@ -1350,13 +1349,12 @@ subroutine do1_lnT( & specific_PE_old, specific_KE_old, w_old, density_new, energy_new integer, intent(out) :: ierr - integer :: k_old, k_old_last, lnT_order, energy_order + integer :: k_old real(dp) :: & Rho, logRho, xq_outer, cell_dq, avg_energy, avg_PE, avg_KE, & new_PE, new_KE, max_delta_energy, delta_energy, revised_energy, & sum_lnT, avg_lnT, new_lnT, sum_energy, new_xa(species), & d_dlnR00, d_dlnRp1, d_dv00, d_dvp1 - logical :: dbg_get_integral include 'formats' @@ -1661,11 +1659,10 @@ subroutine set_lnT_for_energy_with_tol( & integer, intent(out) :: ierr real(dp) :: & - X, Y, Z, T, logT, res(num_eos_basic_results), & + logT, res(num_eos_basic_results), & d_dlnd(num_eos_basic_results), d_dlnT(num_eos_basic_results), & d_dxa(num_eos_d_dxa_results, s% species), & logT_tol, logE_tol - integer :: j include 'formats' @@ -1947,8 +1944,7 @@ subroutine adjust_omega(s, nz, nz_old, comes_from, & xout_old, xout_new, old_dqbar, new_dqbar real(dp), intent(in) :: xh(:,:) integer, intent(out) :: ierr - integer :: k, op_err, old_k, new_k - real(dp) :: old_j_tot, new_j_tot + integer :: k, op_err include 'formats' ierr = 0 @@ -1977,7 +1973,7 @@ subroutine adjust1_omega(s, k, nz, nz_old, comes_from, & integer, intent(out) :: ierr real(dp) :: xq_outer, xq_inner, j_tot, xq0, xq1, new_point_dqbar, dq_sum, dq, r00 - integer :: kk, k_outer, j + integer :: kk, k_outer integer, parameter :: k_dbg = -1 @@ -2139,7 +2135,7 @@ subroutine do_v( & real(dp), dimension(:,:) :: xh, xh_old integer, intent(out) :: ierr - integer :: k, j, op_err, old_k, new_k, i_v + integer :: k, op_err, i_v real(dp) :: old_ke_tot, new_ke_tot, xmstar, err include 'formats' @@ -2208,7 +2204,7 @@ subroutine adjust1_v( & real(dp) :: xq_outer, xq_inner, ke_sum, & xq0, xq1, new_point_dqbar, dq_sum, dq - integer :: kk, k_outer, j + integer :: kk, k_outer integer, parameter :: k_dbg = -1 @@ -2396,7 +2392,7 @@ subroutine do_u( & real(dp), dimension(:,:) :: xh, xh_old integer, intent(out) :: ierr - integer :: k, j, op_err, old_k, new_k, i_u + integer :: k, op_err, i_u real(dp) :: old_ke_tot, new_ke_tot, xmstar, err include 'formats' @@ -2457,7 +2453,7 @@ subroutine adjust1_u( & real(dp) :: xq_outer, xq_inner, ke_sum, & xq0, xq1, new_cell_dq, dq_sum, dq - integer :: kk, k_outer, j + integer :: kk, k_outer integer, parameter :: k_dbg = -1 @@ -2688,7 +2684,7 @@ subroutine do_etrb( & ! same logic as do_u real(dp), dimension(:,:) :: xh, xh_old integer, intent(out) :: ierr - integer :: k, j, op_err, old_k, new_k, i_w + integer :: k, op_err, i_w real(dp) :: old_eturb_tot, new_eturb_tot, xmstar, err include 'formats' @@ -2749,7 +2745,7 @@ subroutine adjust1_etrb( & real(dp) :: xq_outer, xq_inner, eturb_sum, & xq0, xq1, new_cell_dq, dq_sum, dq - integer :: kk, k_outer, j + integer :: kk, k_outer integer, parameter :: k_dbg = -1 diff --git a/star/private/mesh_plan.f90 b/star/private/mesh_plan.f90 index ec897ad1b..d0ef6d420 100644 --- a/star/private/mesh_plan.f90 +++ b/star/private/mesh_plan.f90 @@ -86,7 +86,7 @@ subroutine do_mesh_plan( & integer :: j, k, k_old, k_new, nz, new_capacity, iounit, species, & max_num_merge_surface_cells, max_k_old_for_split, min_k_old_for_split real(dp) :: D_mix_cutoff, next_xq, next_dq, max_dq_cntr, & - dq_sum, tmp, min_dq, min_dq_for_xa, min_dq_for_logT + dq_sum, min_dq, min_dq_for_xa, min_dq_for_logT logical, parameter :: write_plan_debug = .false. @@ -473,7 +473,7 @@ end subroutine split1 logical function okay_to_split1(k_old, dq_new, remaining_dq_old) integer, intent(in) :: k_old real(dp), intent(in) :: dq_new, remaining_dq_old - real(dp) :: dlnR_old, dr_old, min_dr, rR, rL, dlnR_new + real(dp) :: dr_old, min_dr, rR, rL, dlnR_new logical :: dbg include 'formats' @@ -612,7 +612,7 @@ subroutine pick_new_points(s, ierr) integer, intent(out) :: ierr logical :: dbg, force_merge_with_one_more - real(dp) :: dqsum, prev_dq, dq_limit, maxval_delta_xa, next_dq_max, beta_limit, & + real(dp) :: maxval_delta_xa, next_dq_max, beta_limit, & remaining_dq_old, min_dr integer :: kk, k_old_init, k_old_next, k_old_next_max, j00, jm1, i, max_merge diff --git a/star/private/micro.f90 b/star/private/micro.f90 index 393e9e039..aed3c989c 100644 --- a/star/private/micro.f90 +++ b/star/private/micro.f90 @@ -73,7 +73,7 @@ subroutine set_micro_vars( & logical, intent(in) :: skip_eos, skip_net, skip_neu, skip_kap integer, intent(out) :: ierr - integer :: j, k, op_err, k_bad, res, i + integer :: k, op_err, i integer(8) :: time0 real(dp) :: total, alfa, beta character(len=4) :: e_name @@ -323,14 +323,11 @@ subroutine do_eos_for_cell(s,k,ierr) integer, intent(in) :: k integer, intent(out) :: ierr - real(dp), dimension(num_eos_basic_results) :: & - res, res_a, res_b, d_dlnd, d_dlnT + real(dp), dimension(num_eos_basic_results) :: res, d_dlnd, d_dlnT real(dp), dimension(num_eos_d_dxa_results,s% species) :: d_dxa - real(dp) :: & - sumx, dx, dxh_a, dxh_b, & - Rho, logRho, lnd, lnE, logT, T, logPgas, energy, logQ, frac + real(dp) :: sumx, logRho, logT, logPgas integer, pointer :: net_iso(:) - integer :: j, species, i_var, i_var_sink + integer :: species real(dp), parameter :: epsder = 1d-4, Z_limit = 0.5d0 real(dp), parameter :: LOGRHO_TOL = 1d-8, LOGPGAS_TOL = 1d-8 @@ -588,22 +585,13 @@ subroutine do_kap_for_cell(s,k,ierr) integer, intent(in) :: k integer, intent(out) :: ierr - integer, pointer :: net_iso(:) - integer :: i, iz, kh real(dp) :: & - log10_rho, log10_T, dlnkap_dlnd, dlnkap_dlnT, & - opacity_max, opacity_max0, opacity_max1, zbar, & + log10_rho, log10_T, dlnkap_dlnd, dlnkap_dlnT, zbar, & lnfree_e, d_lnfree_e_dlnRho, d_lnfree_e_dlnT, & - eta, d_eta_dlnRho, d_eta_dlnT, & - log_r, log_r_in, log_r_out, log_r_frac, frac, min_cno_for_kap_limit, & - P, Prad, Pgas, Ledd_factor, Ledd_kap, Ledd_log, & - a, b, da_dlnd, da_dlnT, db_dlnd, db_dlnT, opacity_factor - !kap_ross_cell, log_kap_rad, fk(17), delta + eta, d_eta_dlnRho, d_eta_dlnT, opacity_factor real(dp), dimension(num_kap_fracs) :: kap_fracs - !character(len=4) :: e_name - character (len=100) :: message real(dp), pointer :: xa(:) logical :: test_partials diff --git a/star/private/mix_info.f90 b/star/private/mix_info.f90 index b27f174fb..23f0f6985 100644 --- a/star/private/mix_info.f90 +++ b/star/private/mix_info.f90 @@ -56,8 +56,8 @@ subroutine set_mixing_info(s, skip_set_cz_bdy_mass, ierr) logical, intent(in) :: skip_set_cz_bdy_mass integer, intent(out) :: ierr - integer :: nz, i, k, max_conv_bdy, max_mix_bdy, k_Tmax, i_h1, i_he4, i_c12 - real(dp) :: c, rho_face, f, Tmax, conv_vel, min_conv_vel_for_convective_mixing_type, & + integer :: nz, k, max_conv_bdy, max_mix_bdy, k_Tmax, i_h1, i_he4, i_c12 + real(dp) :: rho_face, f, Tmax, min_conv_vel_for_convective_mixing_type, & region_bottom_q, region_top_q, L_val real(dp), allocatable, dimension(:) :: eps_h, eps_he, eps_z, cdc_factor @@ -426,7 +426,7 @@ subroutine set_cz_boundary_info(s, ierr) type (star_info), pointer :: s integer, intent(out) :: ierr - integer :: k, mt, mt1, mt2, nz + integer :: k, mt1, mt2, nz real(dp) :: dg0, dg1 include 'formats' @@ -537,8 +537,7 @@ subroutine locate_convection_boundaries( & logical :: in_convective_region integer :: k, k_bot, i, j, iounit, max_conv_bdy - real(dp) :: dgrad00, dgradp1, turnover_time, & - bot_Hp, bot_r, top_Hp, top_r, dr + real(dp) :: turnover_time, bot_Hp, bot_r, top_Hp, top_r, dr logical :: dbg logical, parameter :: write_debug = .false. @@ -584,7 +583,7 @@ subroutine locate_convection_boundaries( & if (in_convective_region) then if (s% mixing_type(k) /= convective_mixing) then call end_of_convective_region - else if(s% conv_vel(k) .ne. 0d0) then + else if(s% conv_vel(k) /= 0d0) then turnover_time = turnover_time + (s% rmid(k-1) - s% rmid(k))/s% conv_vel(k) end if else ! in non-convective region @@ -654,7 +653,7 @@ subroutine locate_convection_boundaries( & subroutine end_of_convective_region() - integer :: max_logT_loc, kk, op_err, mix_type + integer :: max_logT_loc, kk real(dp) :: max_logT, max_X, max_Y, Hp, max_eps logical :: end_dbg @@ -800,7 +799,7 @@ subroutine locate_mixing_boundaries(s, eps_h, eps_he, eps_z, ierr) integer, intent(out) :: ierr logical :: in_mixing_region - integer :: k, k_bot, i, j, iounit, max_mix_bdy, nz + integer :: k, k_bot, i, max_mix_bdy, nz logical, parameter :: dbg = .false. @@ -1113,7 +1112,7 @@ subroutine close_gaps(s, mix_type, min_gap, ierr) real(dp), intent(in) :: min_gap integer, intent(out) :: ierr - integer :: k, kk, nz + integer :: k, nz logical :: in_region, dbg real(dp) :: rtop, rbot, Hp integer :: ktop, kbot ! k's for gap @@ -1279,7 +1278,7 @@ subroutine remove_embedded_semiconvection(s, ierr) subroutine clean_region - integer :: kbot1, ktop1, kk + integer :: kbot1, ktop1 include 'formats' if (dbg) write(*,3) 'clean_region semiconvective', kbot, ktop ! move top to below top convective region @@ -1380,7 +1379,6 @@ end subroutine do_mix_envelope subroutine get_convection_sigmas(s, dt, ierr) - use chem_def, only: chem_isos type (star_info), pointer :: s real(dp), intent(in) :: dt integer, intent(out) :: ierr @@ -1389,10 +1387,8 @@ subroutine get_convection_sigmas(s, dt, ierr) real(dp) :: sig_term_limit ! sig_term_limit is used to help convergence real(dp) :: siglim, xmstar, dq00, dqm1, cdcterm, dmavg, rho_face, & - cdc, max_sig, D, xm1, x00, xp1, dm, dX, X, cushion, limit, & - Tc, full_off, full_on, X_lim, dX_lim, qbot, qtop, & - f1, f, df_dlnd00, df_dlndm1, df_dlnR, df_d_rho_face, alfa, beta - logical :: in_convective_region + cdc, max_sig, D, xm1, x00, dm, dX, X, cushion, limit, & + Tc, full_off, full_on, qbot, qtop, f1, f, alfa real(dp), dimension(:), pointer :: sig, D_mix include 'formats' @@ -1564,7 +1560,7 @@ subroutine update_rotation_mixing_info(s, ierr) type (star_info), pointer :: s integer, intent(out) :: ierr - integer :: k, nz, k0 + integer :: k, nz logical :: set_min_am_nu_non_rot, okay real(dp) :: & am_nu_visc_factor, & @@ -1943,13 +1939,13 @@ end subroutine update_rotation_mixing_info subroutine set_RTI_mixing_info(s, ierr) - use chem_def, only: ih1, ihe4 + use chem_def, only: ih1 use star_utils, only: get_shock_info type (star_info), pointer :: s integer, intent(out) :: ierr real(dp) :: & C, alpha_face, f, v, & - am1, a00, ap1, min_dm, alfa0, alfa, cs, r, shock_mass_start, & + min_dm, alfa, cs, r, shock_mass_start, & log_max_boost, m_full_boost, m_no_boost, max_boost, & dm_for_center_eta_nondecreasing, min_eta integer :: k, nz, i_h1 @@ -2115,11 +2111,10 @@ end subroutine get_RTI_sigmas subroutine set_dPdr_dRhodr_info(s, ierr) type (star_info), pointer :: s integer, intent(out) :: ierr - real(dp) :: rho, r00, alfa00, beta00, P_face00, rho_face00, & - rp1, alfap1, betap1, dr_m1, dr_00, & - c, d, am1, a00, ap1, v, rmid + real(dp) :: rho, r00, alfa00, beta00, & + dr_m1, dr_00, c, d, am1, a00, ap1, v, rmid real(dp), allocatable, dimension(:) :: dPdr, drhodr, P_face, rho_face - integer :: k, nz, width + integer :: k, nz logical, parameter :: do_slope_limiting = .false. include 'formats' ierr = 0 @@ -2236,7 +2231,7 @@ subroutine do_smoothing_by_mass( & integer, intent(in) :: number_iterations real(dp) :: val(:) integer, intent(out) :: ierr - integer :: nz, iter, k_center, k_inner, k_outer, j, k + integer :: nz, iter, k_center, k_inner, k_outer, k real(dp) :: mlo, mhi, mmid, smooth_m, v, dm_half, mtotal, mass_from_cell real(dp), allocatable :: work(:) include 'formats' diff --git a/star/private/net.f90 b/star/private/net.f90 index 6d73ace29..96304dcbc 100644 --- a/star/private/net.f90 +++ b/star/private/net.f90 @@ -50,10 +50,9 @@ subroutine do_net(s, nzlo, nzhi, ierr) integer, intent(out) :: ierr logical, parameter :: use_omp = .true. - integer :: k, op_err, j, jj, cnt, kmax - integer(8) :: time0, clock_rate + integer :: k, op_err + integer(8) :: time0 real(dp) :: total - integer, pointer :: ks(:) logical, parameter :: only_dlnT = .false. logical :: okay, check_op_split_burn @@ -134,14 +133,13 @@ end subroutine do_net subroutine do1_net(s, k, species, & num_reactions, check_op_split_burn, ierr) - use rates_def, only: std_reaction_Qs, std_reaction_neuQs, i_rate, & - star_debugging_rates_flag, rates_test_partials_val, rates_test_partials_dval_dx + use rates_def, only: std_reaction_Qs, std_reaction_neuQs, i_rate use net_def, only: Net_Info, net_test_partials, & net_test_partials_val, net_test_partials_dval_dx, net_test_partials_i, & net_test_partials_iother, get_net_ptr use net_lib, only: net_get use star_utils, only: lookup_nameofvar - use chem_def, only: chem_isos, category_name, i_ni56_co56, i_co56_fe56, & + use chem_def, only: category_name, i_ni56_co56, i_co56_fe56, & num_categories, iphoto, category_name use eos_def, only : i_eta use utils_lib,only: realloc_double, realloc_double3 @@ -151,10 +149,9 @@ subroutine do1_net(s, k, species, & integer, intent(out) :: ierr integer :: i, j, kk, screening_mode, sz, i_var, i_var_sink - real(dp) :: log10_rho, log10_T, T, alfa, beta, eps_nuc_factor, & - d_eps_nuc_dRho, d_eps_nuc_dT, cat_factor, tau_gamma, eps_cat_sum + real(dp) :: log10_rho, log10_T, T, alfa, eps_nuc_factor, & + d_eps_nuc_dRho, d_eps_nuc_dT, tau_gamma, eps_cat_sum type (Net_Info) :: n - character (len=100) :: message real(dp), pointer :: reaction_neuQs(:) logical :: clipped_T @@ -441,9 +438,7 @@ subroutine show_stuff(s,k) real(dp) :: log10_Rho, log10_T real(dp), pointer :: v(:) integer, pointer :: index(:) - real(dp), pointer, dimension(:) :: & - rate_screened, rate_screened_dT, rate_screened_dRho, & - rate_raw, rate_raw_dT, rate_raw_dRho + real(dp), pointer, dimension(:) :: rate_screened, rate_raw include 'formats' @@ -605,10 +600,8 @@ subroutine set_net(s, new_net_name, ierr) character (len=*), intent(in) :: new_net_name integer, intent(out) :: ierr - integer :: i, ir integer :: old_num_reactions, old_nvar_chem, old_species integer, parameter :: num_lowT_rates = 10 - integer, pointer :: net_reaction_ptr(:) include 'formats' diff --git a/star/private/neu.f90 b/star/private/neu.f90 index 32a50d611..8d191866c 100644 --- a/star/private/neu.f90 +++ b/star/private/neu.f90 @@ -38,8 +38,6 @@ module neu contains - - subroutine do_clear_neu_for_cell(s,k,ierr) type (star_info), pointer :: s integer, intent(in) :: k @@ -59,8 +57,7 @@ end subroutine do_clear_neu_for_cell subroutine do_neu_for_cell(s,k,ierr) use neu_def use neu_lib - use chem_def, only: chem_isos - use const_def,only:ln10 + use const_def, only:ln10 type (star_info), pointer :: s integer, intent(in) :: k integer, intent(out) :: ierr @@ -70,7 +67,6 @@ subroutine do_neu_for_cell(s,k,ierr) real(dp) :: log10_rho, log10_T real(dp), parameter :: log10_Tlim = 7.5d0 logical :: flags(num_neu_types) ! true if should include the type of loss - integer :: j include 'formats' @@ -139,6 +135,5 @@ subroutine do_neu_for_cell(s,k,ierr) end subroutine do_neu_for_cell - end module neu diff --git a/star/private/overshoot_utils.f90 b/star/private/overshoot_utils.f90 index 5aadc334c..98298f5da 100644 --- a/star/private/overshoot_utils.f90 +++ b/star/private/overshoot_utils.f90 @@ -134,7 +134,6 @@ subroutine eval_conv_bdy_Hp (s, i, Hp, ierr) integer :: k real(dp) :: r - real(dp) :: w real(dp) :: x0 real(dp) :: x1 real(dp) :: x2 diff --git a/star/private/paquette_coeffs.f90 b/star/private/paquette_coeffs.f90 index ac2a71e5b..d6738d11f 100644 --- a/star/private/paquette_coeffs.f90 +++ b/star/private/paquette_coeffs.f90 @@ -61,7 +61,7 @@ subroutine paquette_coefficients(rho, T, NN, CAN1, KZN1, NA1, Ddiff, Kdiff, Zdif ! Local variables real(dp) :: PSI_ST, EPS_ST, GAMMA_ST2, A, E_PSI_ST real(dp) :: AA, BB, CC, EE, Ps, Pt, Pst, Qs, Qt, Qst, Ss, & - St, Ms, Mt, Xs, Xt, Xe, Me, Pe, Se, DELTA + St, Ms, Mt, Xs, Xt, DELTA real(dp) :: DPSI_N1, DPSI_N integer :: i, J, N, K, NREF real(dp) :: NZZ, NE @@ -96,7 +96,7 @@ subroutine paquette_coefficients(rho, T, NN, CAN1, KZN1, NA1, Ddiff, Kdiff, Zdif E_PSI_ST = log(1.0D0+GAMMA_ST2) PSI_ST = log(E_PSI_ST) ! Evaluate the collision integral - if (PSI_ST.le.3.0D0) then + if (PSI_ST<=3.0D0) then ! if PSI_ST falls outside range of Paquette's fit, then just take border value PSI_ST = MAX(-7.D0, PSI_ST) ! Use spline interpolation to evaluate the collision integrals @@ -188,7 +188,7 @@ subroutine paquette_coefficients(rho, T, NN, CAN1, KZN1, NA1, Ddiff, Kdiff, Zdif F1(3) = 1.99814D0*E_PSI_ST - 0.64413D0 F22 = 1.99016D0*E_PSI_ST - 4.56958D0 endif - elseif (PSI_ST.ge.4.0D0) then + elseif (PSI_ST>=4.0D0) then ! repulsive and attractive coeffcients are the same in this range F1(1) = 1.00141D0*E_PSI_ST - 3.18209D0 F1(2) = 0.99559D0*E_PSI_ST - 1.29553D0 diff --git a/star/private/pgstar_abundance.f90 b/star/private/pgstar_abundance.f90 index b4217600b..f3d52cce3 100644 --- a/star/private/pgstar_abundance.f90 +++ b/star/private/pgstar_abundance.f90 @@ -100,11 +100,10 @@ subroutine do_abundance_panel(s, id, device_id, & xaxis_reversed, panel_flag, xaxis_numeric_labels_flag integer, intent(out) :: ierr - character (len=strlen) :: str real, allocatable, dimension(:) :: xvec, yvec real :: xmin, xmax, xleft, xright, dx, dylbl, chScale, windy, xmargin, & ymin, ymax, legend_xmin, legend_xmax, legend_ymin, legend_ymax - integer :: lw, lw_sav, grid_min, grid_max, npts, i, nz + integer :: lw, lw_sav, grid_min, grid_max, npts, nz integer, parameter :: num_colors = 14 integer :: colors(num_colors) integer, parameter :: max_num_labels = 30 @@ -153,11 +152,10 @@ subroutine plot(ierr) use rates_def integer, intent(out) :: ierr - integer :: ii, jj, i, k, xaxis_id + integer :: i, k logical, parameter :: dbg = .false. - logical :: found_shock - real(dp) :: xshock, photosphere_logxm - real :: lgz, x, y, ybot + real(dp) :: photosphere_logxm + real :: lgz, x, ybot include 'formats' ierr = 0 @@ -281,7 +279,7 @@ end subroutine plot subroutine do_all(legend_flag) logical, intent(in) :: legend_flag - integer :: cnt, num_to_show, i, j, k, jmax + integer :: cnt, num_to_show, i, j, jmax real(dp) :: max_abund(s% species) include 'formats' cnt = 0 @@ -309,7 +307,7 @@ end subroutine do_all integer function do1(cnt, str, legend_flag) - use chem_lib + use chem_lib, only: chem_get_iso_id integer, intent(in) :: cnt character (len=*), intent(in) :: str logical, intent(in) :: legend_flag @@ -386,8 +384,8 @@ end function abundance_line integer function abundance_line_legend(cnt, str) integer, intent(in) :: cnt character (len=*), intent(in) :: str - real :: ymx, dx, dyline, ypos, xpts(2), ypts(2) - integer :: iclr, max_cnt + real :: dx, dyline, ypos, xpts(2), ypts(2) + integer :: max_cnt max_cnt = min(max_num_labels, s% pg% Abundance_legend_max_cnt) if (cnt >= max_cnt) then abundance_line_legend = cnt diff --git a/star/private/pgstar_color_magnitude.f90 b/star/private/pgstar_color_magnitude.f90 index 4cb7e3a8f..307093df6 100644 --- a/star/private/pgstar_color_magnitude.f90 +++ b/star/private/pgstar_color_magnitude.f90 @@ -635,24 +635,21 @@ subroutine do_Color_Magnitude_plot( & integer, intent(out) :: ierr procedure(pgstar_decorator_interface), pointer :: color_pgstar_decorator - character (len=strlen) :: yname, other_yname character (len=strlen) :: yname1,yname2, & other_yname1,other_yname2 real, allocatable, dimension(:) :: xvec1,xvec2, yvec1,yvec2,& other_yvec1,other_yvec2 real, allocatable, dimension(:) :: xvec, yvec, other_yvec - integer :: i, ii, n, j, k, max_width, step_min, step_max, & - y_color, other_y_color, yaxis_id, other_yaxis_id, & - clr_sav, npts, yfile_data_len, other_yfile_data_len - real :: color_xmin, xmin, xmax, dx, xleft, xright, & + integer :: i, n, j, step_min, step_max, & + y_color, other_y_color + real :: color_xmin, xleft, xright, & ymargin, panel_dy, panel_ytop, panel_ybot, & - ymin, ymax, dy, ybot, ytop, & - other_ymin, other_ymax, other_ybot, other_ytop + ybot, ytop, & + other_ybot, other_ytop logical :: have_yaxis1, have_other_yaxis1,have_yaxis2, have_other_yaxis2,have_xaxis2 logical :: have_yaxis,have_other_yaxis - integer :: grid_min,grid_max integer :: ix1,ix2 include 'formats' diff --git a/star/private/pgstar_ctrls_io.f90 b/star/private/pgstar_ctrls_io.f90 index 79fd68a7e..b343bea73 100644 --- a/star/private/pgstar_ctrls_io.f90 +++ b/star/private/pgstar_ctrls_io.f90 @@ -3092,7 +3092,6 @@ recursive subroutine read_pgstar_file(s, filename, level, ierr) integer, intent(in) :: level integer, intent(out) :: ierr logical, dimension(max_extra_inlists) :: read_extra - character (len=strlen) :: message character (len=strlen), dimension(max_extra_inlists) :: extra integer :: unit, i diff --git a/star/private/pgstar_dynamo.f90 b/star/private/pgstar_dynamo.f90 index 1c0d753a0..9b4ed745f 100644 --- a/star/private/pgstar_dynamo.f90 +++ b/star/private/pgstar_dynamo.f90 @@ -128,8 +128,8 @@ subroutine Dyn_plot(s, device_id, & Dyn_reverse_xaxis, panel_flag, xaxis_numeric_labels_flag integer, intent(out) :: ierr - real :: windy, xmargin - real :: xmin, xmax, xleft, xright, dx, tmp, ymin, ymax, ymin2, ymax2, dy + real :: xmargin + real :: xmin, xmax, xleft, xright, dx, ymin, ymax, ymin2, ymax2, dy integer :: grid_min, grid_max, npts, nz real, allocatable, dimension(:) :: xvec, yvec, yvec2, yvec3 @@ -169,10 +169,9 @@ subroutine plot(ierr) integer, intent(out) :: ierr integer :: lw, lw_sav, k - real :: ybot, eps, & + real :: ybot, & default_ymax_left, default_ymin_left, & default_ymax_right, default_ymin_right - character (len=128) :: str include 'formats' ierr = 0 diff --git a/star/private/pgstar_full.f90 b/star/private/pgstar_full.f90 index a38c64dd3..fda43ebdb 100644 --- a/star/private/pgstar_full.f90 +++ b/star/private/pgstar_full.f90 @@ -1289,7 +1289,6 @@ subroutine do_pgstar_plots(& logical, intent(in) :: must_write_files integer, intent(out) :: ierr - integer :: i integer(8) :: time0, time1, clock_rate logical :: pause @@ -1353,7 +1352,6 @@ subroutine onScreen_Plots(s, must_write_files_in, ierr) use chem_def use net_def use net_lib, only : get_net_reaction_table - use rates_def, only : rates_reaction_id_max use const_def, only : Msun, Rsun type (star_info), pointer :: s @@ -1476,7 +1474,7 @@ subroutine update_pgstar_history_file(s, ierr) type (star_info), pointer :: s integer, intent(out) :: ierr - integer :: iounit, i, n + integer :: iounit, n character (len = 1024) :: fname type (pgstar_hist_node), pointer :: pg @@ -1523,7 +1521,7 @@ subroutine read_pgstar_data(s, ierr) integer, intent(out) :: ierr logical :: fexist - integer :: iounit, i, n + integer :: iounit, n character (len = 1024) :: fname type (pgstar_hist_node), pointer :: pg @@ -1583,7 +1581,7 @@ subroutine update_pgstar_data(s, ierr) type (star_info), pointer :: s integer, intent(out) :: ierr - integer :: num, i + integer :: num type (pgstar_hist_node), pointer :: pg include 'formats' diff --git a/star/private/pgstar_hist_track.f90 b/star/private/pgstar_hist_track.f90 index a43524d5e..fce694473 100644 --- a/star/private/pgstar_hist_track.f90 +++ b/star/private/pgstar_hist_track.f90 @@ -648,11 +648,10 @@ end subroutine decorate integer, intent(out) :: ierr procedure(pgstar_decorator_interface), pointer :: pgstar_decorator - real :: xmin, xmax, ymin, ymax, xleft, xright, ybot, ytop - integer :: i, j, j_min, j_max, step_min, step_max + real :: xleft, xright, ybot, ytop + integer :: j, j_min, j_max, step_min, step_max real :: dx, dy, xplus, xminus, yplus, yminus real, dimension(:), allocatable :: xvec, yvec - character (len=strlen) :: str integer :: k, n integer :: ix, iy integer :: file_data_len diff --git a/star/private/pgstar_history_panels.f90 b/star/private/pgstar_history_panels.f90 index 9b403c4b3..09ec4521b 100644 --- a/star/private/pgstar_history_panels.f90 +++ b/star/private/pgstar_history_panels.f90 @@ -615,7 +615,6 @@ subroutine do_history_panels_plot( & use chem_def use net_def use net_lib, only: get_net_reaction_table - use rates_def, only: rates_reaction_id_max use const_def, only: Msun, Rsun type (star_info), pointer :: s @@ -643,15 +642,14 @@ subroutine do_history_panels_plot( & real, allocatable, dimension(:) :: yfile_xdata, other_yfile_xdata real, allocatable, dimension(:) :: yfile_ydata, other_yfile_ydata integer :: i, ii, n, j, k, max_width, step_min, step_max, & - y_color, other_y_color, yaxis_id, other_yaxis_id, & - clr_sav, npts, yfile_data_len, other_yfile_data_len - real :: hist_xmin, xmin, xmax, dx, xleft, xright, & + y_color, other_y_color, & + yfile_data_len, other_yfile_data_len + real :: hist_xmin, xleft, xright, & ymargin, panel_dy, panel_ytop, panel_ybot, & - ymin, ymax, dy, ybot, ytop, xpt, ypt, errpt, & - other_ymin, other_ymax, other_ybot, other_ytop + ybot, ytop, xpt, ypt, errpt, & + other_ybot, other_ytop logical :: have_yaxis, have_other_yaxis - integer :: grid_min, grid_max integer :: ix, iounit, ishape, num_pts include 'formats' diff --git a/star/private/pgstar_kipp.f90 b/star/private/pgstar_kipp.f90 index 22093d102..2d5f81997 100644 --- a/star/private/pgstar_kipp.f90 +++ b/star/private/pgstar_kipp.f90 @@ -73,7 +73,7 @@ subroutine do_Kipp_Plot(s, id, device_id, & character (len=*), intent(in) :: title integer, intent(out) :: ierr - integer :: i, ii, n, step_min, step_max + integer :: i, n, step_min, step_max real :: xmin, xmax, ymin_L_axis, ymax_L_axis, & ymin_mass_axis, ymax_mass_axis, dx, burn_type_cutoff real, allocatable, dimension(:) :: xvec, & @@ -517,7 +517,7 @@ end subroutine draw_burn_for_step subroutine plot_L_lines - integer :: i, cnt, n + integer :: cnt, n real :: coords(4), fjusts(4) logical, parameter :: dbg = .false. @@ -607,7 +607,6 @@ end subroutine plot_total_mass_line subroutine plot_mass_lines - integer :: i include 'formats' diff --git a/star/private/pgstar_mixing_ds.f90 b/star/private/pgstar_mixing_ds.f90 index d784d16d8..164a416ca 100644 --- a/star/private/pgstar_mixing_ds.f90 +++ b/star/private/pgstar_mixing_ds.f90 @@ -150,8 +150,8 @@ subroutine MixDs_plot(s, device_id, & MixDs_xaxis_reversed, panel_flag, xaxis_numeric_labels_flag integer, intent(out) :: ierr - real :: chScale, windy, xmargin - real :: xmin, xmax, xleft, xright, dx, tmp, ymin, ymax, ymin2, ymax2, dy, & + real :: chScale, xmargin + real :: xmin, xmax, xleft, xright, dx, ymin, ymax, ymin2, ymax2, dy, & legend_xmin, legend_xmax, legend_ymin, legend_ymax integer :: grid_min, grid_max, npts, nz, number_of_legend_lines real, allocatable, dimension(:) :: & @@ -197,8 +197,7 @@ subroutine plot(ierr) integer :: lw, lw_sav real :: val - character (len=128) :: str - integer :: i, ii, k, cnt + integer :: k, cnt logical :: rotation real(dp) :: & D_visc_factor, & diff --git a/star/private/pgstar_mode_prop.f90 b/star/private/pgstar_mode_prop.f90 index 7add83394..dd8c2c601 100644 --- a/star/private/pgstar_mode_prop.f90 +++ b/star/private/pgstar_mode_prop.f90 @@ -97,11 +97,10 @@ subroutine do_mode_propagation_panel(s, id, device_id, & xaxis_reversed, panel_flag, xaxis_numeric_labels_flag integer, intent(out) :: ierr - character (len=strlen) :: str real, allocatable, dimension(:) :: xvec, log_brunt_nu, & log_lamb_Sl1, log_lamb_Sl2, log_lamb_Sl3, temp_vec real :: xmin, xmax, xleft, xright, dx, chScale, windy, & - ymin, ymax, exp10_ymin, xmargin, & + ymin, ymax, xmargin, & legend_xmin, legend_xmax, legend_ymin, legend_ymax integer :: lw, lw_sav, grid_min, grid_max, npts, nz integer, parameter :: num_colors = 20 @@ -157,7 +156,7 @@ subroutine plot(ierr) use rates_def integer, intent(out) :: ierr - integer :: ii, jj, i, cnt, k + integer :: cnt, k logical, parameter :: dbg = .false. real :: ybot, nu_max, lg_nu_max, lg_2pt0_nu_max, lg_0pt5_nu_max, lg_nu_max_obs real, parameter :: teff_sun = 5777.0, nu_max_sun = 3100.0 diff --git a/star/private/pgstar_network.f90 b/star/private/pgstar_network.f90 index e6d9fefbe..dea0bd988 100644 --- a/star/private/pgstar_network.f90 +++ b/star/private/pgstar_network.f90 @@ -94,10 +94,7 @@ subroutine do_network_panel(s, id, device_id, & logical, intent(in) :: subplot integer, intent(out) :: ierr - character (len=strlen) :: str - real :: xmin, xmax, xleft, xright, dx, dylbl, chScale, windy, xmargin, & - ymin, ymax - integer :: lw, lw_sav, grid_min, grid_max, npts, i, nz + real :: xleft, xright, chScale, xmargin include 'formats' ierr = 0 @@ -114,13 +111,12 @@ subroutine plot(ierr) use chem_def integer, intent(out) :: ierr - integer :: lw, lw_sav, k,i,j - real :: ybot, eps + integer :: i, j integer :: z,n,zmax,zmin,nmin,nmax - integer :: base_z,base_n,clr,mid_map + integer :: clr,mid_map real :: abun,xhigh,xlow - real :: ymin,ymax,r,g,b,log10_min_abun,log10_max_abun + real :: ymin,ymax,log10_min_abun,log10_max_abun real,parameter :: pad=2.5,step=0.5 include 'formats' @@ -200,7 +196,7 @@ subroutine plot(ierr) abun=safe_log10(dble(abun)) - if(z.lt.ymin .or. z.gt.ymax .or. n.lt.xleft .or.n.gt.xright)CYCLE + if(zymax .or. nxright)CYCLE if (s% pg% Network_show_element_names) THEN call pgsci(1) @@ -247,7 +243,7 @@ subroutine network_colorbar_legend(winxmin, winxmax, winymin, winymax,abun_min,a real,intent(in) :: winxmin, winxmax, winymin, winymax,abun_min,abun_max real :: legend_xmin,legend_xmax,legend_ymin,legend_ymax real :: xmin,xmax,ymin,ymax - real :: ymx, dx, dyline, ypos, xpts(2),yt,yb,text + real :: dx, dyline, xpts(2),yt,yb,text character(len=16) :: str integer :: i,j,clr,mid_map,num_cms diff --git a/star/private/pgstar_power.f90 b/star/private/pgstar_power.f90 index 50e61364a..9e31de192 100644 --- a/star/private/pgstar_power.f90 +++ b/star/private/pgstar_power.f90 @@ -101,7 +101,6 @@ subroutine do_power_panel(s, id, device_id, & xaxis_reversed, panel_flag, xaxis_numeric_labels_flag integer, intent(out) :: ierr - character (len=strlen) :: str real, allocatable, dimension(:) :: xvec, yvec real :: xmin, xmax, xleft, xright, dx, chScale, windy, & ymin, ymax, exp10_ymin, xmargin, & @@ -152,7 +151,7 @@ subroutine plot(ierr) use rates_def integer, intent(out) :: ierr - integer :: ii, jj, i, j, cnt + integer :: i, j, cnt logical, parameter :: dbg = .false. real(dp) :: max_power(num_categories), max_power_copy(num_categories) real :: ybot @@ -241,7 +240,7 @@ end subroutine plot integer function power_line(cnt, icat) integer, intent(in) :: cnt, icat - real :: ymx, xpos, dx, ypos, xpts(2), ypts(2) + real :: ymx integer :: iclr, k power_line = cnt ymx = maxval(s% eps_nuc_categories(icat,grid_min:grid_max)) diff --git a/star/private/pgstar_production.f90 b/star/private/pgstar_production.f90 index 605345fd5..11871e8bf 100644 --- a/star/private/pgstar_production.f90 +++ b/star/private/pgstar_production.f90 @@ -88,17 +88,13 @@ subroutine do_production_panel(s, id, device_id, & type (star_info), pointer :: s integer, intent(in) :: id, device_id - real, intent(in) :: & - winxmin, winxmax, winymin, winymax + real, intent(in) :: winxmin, winxmax, winymin, winymax character (len=*), intent(in) :: title real, intent(in) :: txt_scale logical, intent(in) :: subplot integer, intent(out) :: ierr - character (len=strlen) :: str - real :: xmin, xmax, xleft, xright, dx, dylbl, chScale, windy, xmargin, & - ymin, ymax - integer :: lw, lw_sav, grid_min, grid_max, npts, i, nz + real :: xleft, xright, chScale, xmargin integer, parameter :: num_colors = 14 integer :: colors(num_colors) @@ -124,18 +120,16 @@ subroutine plot(ierr) use adjust_xyz, only: get_xa_for_standard_metals integer, intent(out) :: ierr - integer :: lw, lw_sav, k,i,j - real :: ybot, eps + integer :: i, j - integer :: amin,amax,z,n,a,plot_a,zmin,zmax - integer :: min_zone,max_zone,alternate,skip_cnt - real :: xhigh,xlow,extra_pad + integer :: amin,amax,z,n,a,zmin,zmax + integer :: min_zone,max_zone,alternate + real :: extra_pad real :: min_mass,max_mass,yloc real,parameter :: point_size=0.1 - real :: ymin,ymax,r,g,b,log10_min_abun,log10_max_abun + real :: ymin, ymax real,parameter :: pad=1.0 - real :: last_x,last_y,log_sa - logical :: z_in_use + real :: last_x,last_y real(dp),dimension(1:solsiz) :: scaled_abun,scaled_abun_init real(dp),dimension(:),allocatable :: init_comp,abun @@ -173,14 +167,14 @@ subroutine plot(ierr) max_zone=s%nz do i=1,s%nz - if(s%m(i).le.max_mass) then + if(s%m(i)<=max_mass) then min_zone=i-1 exit end if end do do i=min_zone,s%nz - if(s%m(i).le.min_mass) then + if(s%m(i)<=min_mass) then max_zone=i-1 exit end if @@ -231,7 +225,7 @@ subroutine plot(ierr) lac=safe_log10(scaled_abun_init(i)) !Remove low abundance isotopes, low in star and low in solar can lead to large production factor - if(la .lt.s% pg%production_min_mass_frac .or. lac .lt.s% pg%production_min_mass_frac) then + if(la solsiz) exit outer ! Z is greater than zmax - if(izsol(i).gt.zmax) exit outer + if(izsol(i)>zmax) exit outer !Sets color call set_line_style(izsol(i)) !Shows element name, alternates between two levels to spread them out if (s% pg% Production_show_element_names & - .and.(iasol(i).le.xright).and.(iasol(i).ge.xleft)) THEN + .and.(iasol(i)<=xright).and.(iasol(i)>=xleft)) THEN yloc=(ymax*1.0)+abs(0.75+(alternate)/2.0) call pgtext(iasol(i)*1.0,yloc,el_name(izsol(i))) alternate=alternate*(-1.0) @@ -313,9 +307,9 @@ subroutine plot(ierr) inner: do j=i,solsiz - if(izsol(j).eq.izsol(i))then - if((scaled_abun(j).ge. ymin) .and. (scaled_abun(j) .le. ymax)& - .and.(iasol(j).le.xright).and.(iasol(j).ge.xleft)) then + if(izsol(j)==izsol(i))then + if((scaled_abun(j)>= ymin) .and. (scaled_abun(j) <= ymax)& + .and.(iasol(j)<=xright).and.(iasol(j)>=xleft)) then a=iasol(j) !Draw point at values diff --git a/star/private/pgstar_profile_panels.f90 b/star/private/pgstar_profile_panels.f90 index 05c05eb44..0f9e6b976 100644 --- a/star/private/pgstar_profile_panels.f90 +++ b/star/private/pgstar_profile_panels.f90 @@ -588,16 +588,16 @@ subroutine Pro_panels_plot(s, device_id, & procedure(pgstar_decorator_interface), pointer :: pgstar_decorator integer :: & - j, k, k0, k_max, i, nz, kmin, kmax, cnt, y_color, clr_sav, id, & + j, k, nz, y_color, clr_sav, id, & other_y_color, grid_min, grid_max, npts, yaxis_id, other_yaxis_id, ishape - real :: del, xpos, ypos, panel_dy, panel_ybot, panel_ytop, & - dx, dy, xpos0, dxpos, dypos, dxval, other_ytop, other_ybot, & - ybot, ytop, xmin, xmax, xleft, xright, xwidth, panels_xmargin, & + real :: panel_dy, panel_ybot, panel_ytop, & + dx, other_ytop, other_ybot, & + ybot, ytop, xmin, xmax, xleft, xright, panels_xmargin, & panels_xmin, panels_xmax, xwidth_left_frac, xwidth_right_frac, & xwidth_left_of_shock, xwidth_right_of_shock, shock_xmin, shock_xmax, & xshock_sp - real(dp) :: cs, x00, xp1, ms, photosphere_logxm, xshock - character (len=strlen) :: str, xname, yname, other_yname + real(dp) :: photosphere_logxm, xshock + character (len=strlen) :: xname, yname, other_yname logical :: found_shock real, allocatable, dimension(:) :: xvec, yvec, other_yvec, unshifted_xvec real, allocatable, dimension(:) :: yfile_xdata, other_yfile_xdata diff --git a/star/private/pgstar_summary_burn.f90 b/star/private/pgstar_summary_burn.f90 index 4bec78cdb..8cffae1b1 100644 --- a/star/private/pgstar_summary_burn.f90 +++ b/star/private/pgstar_summary_burn.f90 @@ -74,7 +74,7 @@ subroutine do_summary_burn_plot(s, id, device_id, & real, intent(in) :: txt_scale integer, intent(out) :: ierr - character (len=strlen) :: yname, xaxis_name, str + character (len=strlen) :: xaxis_name, str logical :: xaxis_reversed real, allocatable, dimension(:) :: xvec, yvec, yvec2, yvec3 real :: xmin, xmax, xleft, xright, dx, windy, dy, & @@ -129,7 +129,7 @@ subroutine plot(ierr) integer :: j, ii, jj, i, cnt, k logical, parameter :: dbg = .false. - real :: ybot, yvec_min, yvec_max + real :: ybot include 'formats' diff --git a/star/private/pgstar_summary_history.f90 b/star/private/pgstar_summary_history.f90 index 4aee13f0a..110cc6125 100644 --- a/star/private/pgstar_summary_history.f90 +++ b/star/private/pgstar_summary_history.f90 @@ -78,7 +78,7 @@ subroutine do_summary_history_plot(s, id, device_id, & character (len=strlen) :: yname real, allocatable, dimension(:) :: xvec, yvec - real :: xmin, xmax, windy, ymin, ymax, xmargin, & + real :: xmin, xmax, windy, ymin, ymax, & legend_xmin, legend_xmax, legend_ymin, legend_ymax integer :: lw, lw_sav, num_lines, & npts, step_min, step_max @@ -148,7 +148,7 @@ subroutine plot(ierr) use rates_def integer, intent(out) :: ierr - integer :: j, ii, jj, i, cnt, k, yaxis_id + integer :: j, cnt, k logical :: show(num_lines) logical, parameter :: dbg = .false. real :: ybot, yvec_min, yvec_max diff --git a/star/private/pgstar_summary_profile.f90 b/star/private/pgstar_summary_profile.f90 index 9329a47a0..6a94865d8 100644 --- a/star/private/pgstar_summary_profile.f90 +++ b/star/private/pgstar_summary_profile.f90 @@ -156,7 +156,7 @@ subroutine plot(ierr) use profile_getval, only : get_profile_val,get_profile_id integer, intent(out) :: ierr - integer :: j, ii, jj, i, cnt, k, yaxis_id + integer :: j, cnt, k, yaxis_id logical :: show(num_lines) logical, parameter :: dbg = .false. real :: ybot, yvec_min, yvec_max diff --git a/star/private/pgstar_support.f90 b/star/private/pgstar_support.f90 index 8fba02f7b..3da1c7341 100644 --- a/star/private/pgstar_support.f90 +++ b/star/private/pgstar_support.f90 @@ -72,7 +72,7 @@ module pgstar_support subroutine add_to_pgstar_hist(s, pg_hist_new) type (star_info), pointer :: s type (pgstar_hist_node), pointer :: pg_hist_new - type (pgstar_hist_node), pointer :: pg_hist => null(), next => null() + type (pgstar_hist_node), pointer :: next => null() integer :: step step = pg_hist_new% step do @@ -97,7 +97,7 @@ end subroutine add_to_pgstar_hist subroutine pgstar_clear(s) type (star_info), pointer :: s - integer :: i, id, num + integer :: i type (pgstar_win_file_data), pointer :: p type (pgstar_hist_node), pointer :: pg_hist => null(), next => null() pg_hist => s% pg% pgstar_hist @@ -244,8 +244,8 @@ subroutine open_device(s, p, is_file, dev, id, ierr) integer, intent(out) :: id integer, intent(out) :: ierr - integer :: pgopen, system - character (len = strlen) :: dir, cmd + integer :: pgopen + character (len = strlen) :: dir logical :: white_on_black_flag real :: width, ratio @@ -922,7 +922,7 @@ subroutine set_hist_points_steps(& integer, intent(in) :: step_min, step_max, numpts real, intent(out) :: vec(:) integer, intent(out) :: ierr - integer :: i, n + integer :: i type (pgstar_hist_node), pointer :: pg ierr = 0 if (numpts == 0) return @@ -969,7 +969,7 @@ subroutine get_hist_points(& integer, intent(in) :: step_min, step_max, numpts, index real, intent(out) :: vec(:) integer, intent(out) :: ierr - integer :: i, n + integer :: i type (pgstar_hist_node), pointer :: pg => null() include 'formats' if (numpts == 0) return @@ -1187,7 +1187,6 @@ subroutine set_ytop_ybot(& real, intent(in) :: dymin real, intent(out) :: ybot, ytop - integer :: k real :: dy, ymax, ymin, ymargin logical :: use_given_ymin, use_given_ymax real, parameter :: dymin_min = 1d-34 @@ -1310,7 +1309,6 @@ subroutine set_xaxis_bounds(& integer :: k, nz, xaxis_id real :: win_xmin, win_xmax - real(dp) :: dmsum include 'formats' @@ -1959,7 +1957,7 @@ subroutine show_age_pgstar(s) character (len = 32) :: age_str, units_str real(dp) :: age real :: ch - integer :: len, i, j, iE, n + integer :: len, i, j, iE if (.not. s% pg% pgstar_show_age) return age = s% star_age if (s% pg% pgstar_show_age_in_seconds) then diff --git a/star/private/pgstar_trho_profile.f90 b/star/private/pgstar_trho_profile.f90 index 55c97a9f5..e99eb2bce 100644 --- a/star/private/pgstar_trho_profile.f90 +++ b/star/private/pgstar_trho_profile.f90 @@ -72,9 +72,8 @@ subroutine do_TRho_Profile_plot(s, id, device_id, & integer :: nz, k real :: xmin, xmax, ymin, ymax, xpos, ypos, dx, dy, & - txt_scale, vpxmin, vpxmax, vpymin, vpymax, vpymargin, vpwinheight, lgT1, lgT2 + txt_scale, lgT1, lgT2 real, allocatable, dimension(:) :: xvec, yvec - character (len=128) :: str real, parameter :: lgrho1 = -8, lgrho2 = 5 include 'formats' @@ -264,7 +263,7 @@ end subroutine show_label subroutine do_kap_regions - real :: logT_lo, logT_hi, logT_max, logR, logRho_lo, logRho_hi, logRho_min + real :: logT_lo, logT_hi, logT_max real, parameter :: min_logR_for_freedman = 1 real, parameter :: freg_blend_logT2 = 4.10 real, parameter :: freg_blend_logT1 = 3.93 @@ -329,7 +328,6 @@ end subroutine do_kap_regions subroutine do_eos_regions - integer :: ierr real :: logRho0, logRho1, logRho2, logRho3, logRho4, logRho5, logRho6 real :: logT1, logT2, logT3, logT4, logT5, logT6 diff --git a/star/private/phase_separation.f90 b/star/private/phase_separation.f90 index 01b4a5e84..223377d21 100644 --- a/star/private/phase_separation.f90 +++ b/star/private/phase_separation.f90 @@ -58,7 +58,7 @@ subroutine do_phase_separation(s, dt, ierr) end subroutine do_phase_separation subroutine do_2component_phase_separation(s, dt, components, ierr) - use chem_def, only: chem_isos, ic12, io16, ine20 + use chem_def, only: ic12, io16, ine20 use chem_lib, only: chem_get_iso_id type (star_info), pointer :: s real(dp), intent(in) :: dt @@ -150,7 +150,7 @@ subroutine do_2component_phase_separation(s, dt, components, ierr) end subroutine do_2component_phase_separation subroutine move_one_zone(s,k,components) - use chem_def, only: chem_isos, ic12, io16, ine20 + use chem_def, only: ic12, io16, ine20 use chem_lib, only: chem_get_iso_id type(star_info), pointer :: s integer, intent(in) :: k diff --git a/star/private/photo_in.f90 b/star/private/photo_in.f90 index 5560ee9c0..53d7ca870 100644 --- a/star/private/photo_in.f90 +++ b/star/private/photo_in.f90 @@ -46,9 +46,8 @@ subroutine read_star_photo(s, fname, ierr) integer, intent(out) :: ierr integer :: iounit, i, j, k, version, part_number, & - len_history_col_spec, nz, kk + len_history_col_spec, nz logical, parameter :: dbg = .false. - real(dp) :: xx include 'formats' diff --git a/star/private/predictive_mix.f90 b/star/private/predictive_mix.f90 index fc768195c..08e0ef06e 100644 --- a/star/private/predictive_mix.f90 +++ b/star/private/predictive_mix.f90 @@ -96,7 +96,7 @@ subroutine add_predictive_mixing (s, ierr) criteria_loop : do j = 1, NUM_PREDICTIVE_PARAM_SETS - if (.NOT. s%predictive_mix(j)) cycle criteria_loop + if (.NOT. s% predictive_mix(j)) cycle criteria_loop ! Check if the criteria match the current boundary @@ -170,11 +170,16 @@ subroutine add_predictive_mixing (s, ierr) ! Perform the predictive mixing for this boundary - if (s%do_conv_premix) then + if (s% do_conv_premix) then call mesa_error(__FILE__,__LINE__,'Predictive mixing and convective premixing cannot be enabled at the same time') stop end if + !if (s% MLT_option == 'TDC') then + ! call mesa_error(__FILE__,__LINE__,'Predictive mixing and TDC cannot be enabled at the same time') + ! stop + !end if + call do_predictive_mixing(s, i, j, ierr, mix_mask) if (ierr /= 0) return @@ -370,6 +375,13 @@ subroutine do_predictive_mixing (s, i, j, ierr, mix_mask) k_bot_mz = k_bot_mz + 1 endif + ! Exit search if the mixed region has gone out of bounds + + if (( outward .AND. k_top_mz < 1) .OR. & + (.NOT. outward .AND. k_bot_mz > s%nz)) then + exit search_loop + endif + ! Evaluate average abundance in the mixed zone call eval_abundances(s, k_bot_mz, k_top_mz, xa_mz, xa_mz_burn) @@ -485,13 +497,6 @@ subroutine do_predictive_mixing (s, i, j, ierr, mix_mask) exit search_loop endif - ! See if the mixed region has reached the center or surface - - if (( outward .AND. k_top_mz == 1) .OR. & - (.NOT. outward .AND. k_bot_mz == s%nz-1)) then - exit search_loop - endif - end do search_loop ! If necessary, dump out the mixing prediction for this boundary diff --git a/star/private/profile.f90 b/star/private/profile.f90 index f8e7df6c4..253507b83 100644 --- a/star/private/profile.f90 +++ b/star/private/profile.f90 @@ -60,7 +60,7 @@ recursive subroutine add_profile_columns( & logical, intent(in) :: report integer, intent(out) :: ierr - integer :: iounit, n, i, t, id, j, k, num, nxt_spec, spec_err + integer :: iounit, n, i, t, j, k, nxt_spec, spec_err character (len=strlen) :: buffer, string, filename integer, parameter :: max_level = 20 @@ -379,9 +379,9 @@ subroutine do_profile_info(s, fname, & logical, pointer :: is_int(:) integer, intent(out) :: ierr - real(dp) :: msum, mstar, dt, Lnuc, frac + real(dp) :: mstar, dt integer :: io, i, j, jj, nz, col, k, kk, n, species, & - h1, he4, num_specs, numcols, num_extra_cols, num_extra_header_items, num_digits + num_specs, numcols, num_extra_cols, num_extra_header_items, num_digits integer, pointer :: chem_id(:) logical, parameter :: dbg = .false. character (len=strlen) :: fname1, dbl_fmt, int_fmt, txt_fmt, fname_out, fstring, str @@ -807,7 +807,7 @@ subroutine do_col(pass, j, jj, k) use profile_getval, only: getval_for_profile integer, intent(in) :: pass, j, jj, k integer :: i, c, int_val, ir - real(dp) :: val, cno, z, dr, eps, eps_alt + real(dp) :: val logical :: int_flag character (len=128) :: col_name logical, parameter :: dbg = .false. @@ -911,7 +911,7 @@ end subroutine do_col subroutine do_abundance_col(pass, j, jj, k) integer, intent(in) :: pass, j, jj, k real(dp) :: val - logical :: int_flag, log_abundance + logical :: log_abundance character (len=128) :: col_name logical, parameter :: dbg = .false. include 'formats' @@ -952,7 +952,7 @@ subroutine do_save_profiles( & integer, intent(out) :: ierr integer, pointer, dimension(:) :: model_numbers, model_priorities, model_logs - integer :: nz, max_num_mods, num_models, model_profile_number, k + integer :: nz, max_num_mods, num_models, model_profile_number character (len=strlen) :: fname integer :: model_priority @@ -1169,8 +1169,7 @@ subroutine get_model_profile_filename(s, model_profile_number) ! sets s% model_profile_filename and s% model_controls_filename type (star_info), pointer :: s integer, intent(in) :: model_profile_number - character (len=strlen) :: & - profile_prefix, controls_prefix, model_prefix, num_str, fstring + character (len=strlen) :: profile_prefix, controls_prefix, model_prefix, fstring integer :: num_digits profile_prefix = trim(s% log_directory) // '/' // trim(s% profile_data_prefix) diff --git a/star/private/profile_getval.f90 b/star/private/profile_getval.f90 index 630fa841c..76a4c8931 100644 --- a/star/private/profile_getval.f90 +++ b/star/private/profile_getval.f90 @@ -252,7 +252,7 @@ end function get_profile_id real(dp) function get_profile_val(s, id, k) type (star_info), pointer :: s integer, intent(in) :: id, k - integer :: ii, int_val + integer :: int_val logical :: int_flag if (id > max_profile_offset) then ! get from extras get_profile_val = s% extra_profile_col_vals(k, id - max_profile_offset) @@ -276,13 +276,12 @@ subroutine getval_for_profile(s, c, k, val, int_flag, int_val) integer, intent(out) :: int_val logical, intent(inout) :: int_flag - real(dp) :: cno, z, x, frac, eps, eps_alt, L_rad, L_edd, Pbar_00, Pbar_p1, & - P_face, rho_face, dr, v, r00, rp1, v00, vp1, A00, Ap1, Amid, & - r00_start, rp1_start, dr3, dr3_start, d_drL, d_drR, flxR, mmid, & + real(dp) :: cno, z, x, L_rad, L_edd, & + r00, rp1, v00, vp1, Ap1, & + r00_start, rp1_start, dr3, dr3_start, & d_dlnR00, d_dlnRp1, d_dv00, d_dvp1 - integer :: j, nz, ionization_k, klo, khi, i, ii, kk, ierr - real(dp) :: ionization_res(num_ion_vals) - real(dp) :: f, lgT, full_on, full_off, am_nu_factor, Lconv, conv_vel + integer :: j, nz, ionization_k, klo, khi, i, ii + real(dp) :: f, lgT, full_on, full_off, am_nu_factor logical :: rsp_or_w include 'formats' @@ -2358,7 +2357,7 @@ end function get_brunt_N_div_r_integral real(dp) function get_dlogX_dlogP(j, k) integer, intent(in) :: j, k integer :: ii, i - real(dp) :: val, x00, xm1, dlogP, dlogX + real(dp) :: x00, xm1, dlogP, dlogX include 'formats' get_dlogx_dlogp = 0 if (k > 1) then @@ -2381,7 +2380,7 @@ end function get_dlogX_dlogP real(dp) function get_dlog_eps_dlogP(cat, k) integer, intent(in) :: cat, k integer :: ii - real(dp) :: val, eps, epsm1, dlogP, dlog_eps + real(dp) :: eps, epsm1, dlogP, dlog_eps get_dlog_eps_dlogP = 0 if (k > 1) then ii = k diff --git a/star/private/pulse_cafein.f90 b/star/private/pulse_cafein.f90 index db3521d38..c7b0fcb54 100644 --- a/star/private/pulse_cafein.f90 +++ b/star/private/pulse_cafein.f90 @@ -299,7 +299,6 @@ subroutine store_point_data_atm (j, k) real(dp) :: rho real(dp) :: P real(dp) :: T - real(dp) :: g real(dp) :: kap_rho real(dp) :: kap_T real(dp) :: kap_ad diff --git a/star/private/pulse_fgong.f90 b/star/private/pulse_fgong.f90 index 1b26e0b23..7f6c35b4e 100644 --- a/star/private/pulse_fgong.f90 +++ b/star/private/pulse_fgong.f90 @@ -537,8 +537,6 @@ subroutine store_point_data_ctr (j, k_a, k_b) integer, intent(in) :: j integer, intent(in) :: k_a integer, intent(in) :: k_b - - real(dp) :: dq_center ! Store data for the center into the point_data array at position j diff --git a/star/private/pulse_gsm.f90 b/star/private/pulse_gsm.f90 index cd5fd62ca..82dbe15fc 100644 --- a/star/private/pulse_gsm.f90 +++ b/star/private/pulse_gsm.f90 @@ -28,7 +28,7 @@ module pulse_gsm ! Uses use star_private_def - use hdf5io_lib + use forum_m, only: hdf5io_t, CREATE_FILE ! No implicit typing diff --git a/star/private/read_model.f90 b/star/private/read_model.f90 index f92c47f4f..ff62eff99 100644 --- a/star/private/read_model.f90 +++ b/star/private/read_model.f90 @@ -88,8 +88,7 @@ subroutine finish_load_model(s, restart, ierr) type (star_info), pointer :: s logical, intent(in) :: restart integer, intent(out) :: ierr - integer :: k, i, j, nz - real(dp) :: u00, um1, xm, total_radiation + integer :: k, nz include 'formats' ierr = 0 nz = s% nz @@ -218,12 +217,12 @@ subroutine do_read_saved_model(s, filename, ierr) character (len=*), intent(in) :: filename integer, intent(out) :: ierr - integer :: iounit, n, i, k, t, file_type, & + integer :: iounit, n, i, t, file_type, & year_month_day_when_created, nz, species, nvar, count logical :: do_read_prev, no_L real(dp) :: initial_mass, initial_z, initial_y, & tau_factor, Tsurf_factor, opacity_factor, mixing_length_alpha - character (len=strlen) :: buffer, string, message + character (len=strlen) :: buffer, string character (len=net_name_len) :: net_name character(len=iso_name_length), pointer :: names(:) ! (species) integer, pointer :: perm(:) ! (species) @@ -469,7 +468,6 @@ end subroutine read_prev subroutine read_prev_properties character (len=132) :: line real(dp) :: tmp, skip_val - integer :: i include 'formats' ierr = 0 @@ -540,7 +538,6 @@ subroutine read1_model( & i_Et_RSP, i_erad_RSP, i_Fr_RSP, i_v, i_u, i_alpha_RTI, ii real(dp), target :: vec_ary(species + nvar_hydro + max_increment) real(dp), pointer :: vec(:) - real(dp) :: r00, rm1 integer :: nvec include 'formats' diff --git a/star/private/relax.f90 b/star/private/relax.f90 index 22ae07a8b..62ac99ea3 100644 --- a/star/private/relax.f90 +++ b/star/private/relax.f90 @@ -477,7 +477,7 @@ subroutine adjust_xa(species, num_pts, avg_err, ierr) ! if the abundance switches back and forth between 0 and 1d-99, ! then small negative abundances ~ -1d-115 can be generated do k = 1, nz - if (vals(j,k) .lt. 0d0) vals(j,k) = 0d0 + if (vals(j,k) < 0d0) vals(j,k) = 0d0 end do if (op_err /= 0) ierr = op_err s% xa(j,1:nz) = (1d0-lambda)*s% xa(j,1:nz) + lambda*vals(j,1:nz) @@ -496,7 +496,7 @@ integer function relax_composition_check_model(s, id, lipar, ipar, lrpar, rpar) integer, intent(inout), pointer :: ipar(:) ! (lipar) real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) - integer :: num_steps_to_use, starting_model_number, ierr + integer :: num_steps_to_use, starting_model_number include 'formats' @@ -539,7 +539,7 @@ subroutine do_relax_to_xaccrete(id, num_steps_to_use, ierr) real(dp) :: starting_dt_next, mix_factor, dxdt_nuc_factor logical :: do_element_diffusion type (star_info), pointer :: s - real(dp), pointer :: xa(:), f1(:), f(:,:,:) + real(dp), pointer :: xa(:) integer, target :: ipar_ary(lipar) integer, pointer :: ipar(:) ipar => ipar_ary @@ -813,7 +813,7 @@ integer function relax_entropy_check_model(s, id, lipar, ipar, lrpar, rpar) real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) integer :: num_pts, ierr, max_model_number - real(dp) :: lambda, avg_err + real(dp) :: avg_err real(dp), pointer :: x(:) ! =(num_pts) real(dp), pointer :: f1(:) ! =(4, num_pts) @@ -901,7 +901,7 @@ subroutine entropy_relax_other_energy(id, ierr) integer, intent(in) :: id integer, intent(out) :: ierr type (star_info), pointer :: s - integer :: k, nz, num_pts, op_err + integer :: k, nz, num_pts real(dp), pointer :: vals(:), xq(:), x(:), f(:) ierr = 0 call star_ptr(id, s, ierr) @@ -1069,7 +1069,7 @@ integer function relax_angular_momentum_check_model(s, id, lipar, ipar, lrpar, r real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) integer :: num_pts, ierr, max_model_number - real(dp) :: lambda, avg_err + real(dp) :: avg_err real(dp), pointer :: x(:) ! =(num_pts) real(dp), pointer :: f1(:) ! =(4, num_pts) @@ -1859,14 +1859,13 @@ subroutine do_relax_mass_change( & integer, intent(out) :: ierr integer, parameter :: lipar=2, lrpar=2 - integer :: max_model_number, i + integer :: max_model_number real(dp) :: max_years_for_timestep type (star_info), pointer :: s integer, target :: ipar_ary(lipar) integer, pointer :: ipar(:) real(dp), target :: rpar_ary(lrpar) real(dp), pointer :: rpar(:) - logical :: adding_mass rpar => rpar_ary ipar => ipar_ary @@ -1936,7 +1935,7 @@ integer function relax_mass_change_check_model(s, id, lipar, ipar, lrpar, rpar) real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) integer :: adjust_model, max_num_steps, num_steps - real(dp) :: init_mass_change, final_mass_change, mass_change, frac + real(dp) :: init_mass_change, final_mass_change, frac logical, parameter :: dbg = .false. include 'formats' @@ -2694,7 +2693,6 @@ integer function relax_v_center_check_model(s, id, lipar, ipar, lrpar, rpar) integer, intent(in) :: id, lipar, lrpar integer, intent(inout), pointer :: ipar(:) ! (lipar) real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) - integer :: ierr real(dp) :: new_v_center, dv_per_step, relax_v_center_dt, next logical, parameter :: dbg = .false. @@ -2946,7 +2944,6 @@ integer function relax_dxdt_nuc_factor_check_model(s, id, lipar, ipar, lrpar, rp integer, intent(in) :: id, lipar, lrpar integer, intent(inout), pointer :: ipar(:) ! (lipar) real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) - integer :: ierr real(dp) :: new_value, per_step_multiplier logical, parameter :: dbg = .false. @@ -3051,7 +3048,6 @@ integer function relax_eps_nuc_factor_check_model(s, id, lipar, ipar, lrpar, rpa integer, intent(in) :: id, lipar, lrpar integer, intent(inout), pointer :: ipar(:) ! (lipar) real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) - integer :: ierr real(dp) :: new_value, per_step_multiplier logical, parameter :: dbg = .false. @@ -3386,9 +3382,6 @@ integer function relax_num_steps_check_model(s, id, lipar, ipar, lrpar, rpar) integer, intent(in) :: id, lipar, lrpar integer, intent(inout), pointer :: ipar(:) ! (lipar) real(dp), intent(inout), pointer :: rpar(:) ! (lrpar) - integer :: ierr, klo, khi - real(dp) :: lnbc_target, new_pre_ms, new_lnbc, dlnbc, lnbc, & - current_pre_ms, next_pre_ms logical, parameter :: dbg = .false. diff --git a/star/private/remove_shells.f90 b/star/private/remove_shells.f90 index 746595a66..0562f79fa 100644 --- a/star/private/remove_shells.f90 +++ b/star/private/remove_shells.f90 @@ -166,7 +166,7 @@ subroutine do_remove_center_to_reduce_co56_ni56(id, x, ierr) integer, intent(out) :: ierr type (star_info), pointer :: s integer :: j, jj, k, species, nz, co56, ni56 - real(dp) :: mtotal, dm56, alfa_co56, dm56_new, dm56_old, x56_new, x56_old, xsum + real(dp) :: mtotal, dm56, alfa_co56, dm56_new, dm56_old, x56_new, x56_old include 'formats' call get_star_ptr(id, s, ierr) if (ierr /= 0) then @@ -245,7 +245,7 @@ subroutine do_remove_fallback(id, ierr) integer, intent(in) :: id integer, intent(out) :: ierr type (star_info), pointer :: s - integer :: k, k0, k1, nz + integer :: k, k0, nz real(dp) :: ie, ke, pe, rR, rL, rC, m_cntr, & sum_total_energy, speed_limit real(dp), pointer :: v(:) @@ -385,7 +385,7 @@ subroutine do_limit_center_logP(id, logP_limit, ierr) real(dp), intent(in) :: logP_limit integer, intent(out) :: ierr type (star_info), pointer :: s - integer :: k, k0 + integer :: k real(dp) :: lnP_limit include 'formats' call get_star_ptr(id, s, ierr) @@ -554,7 +554,6 @@ subroutine do_remove_fe_core(id, ierr) integer, intent(in) :: id integer, intent(out) :: ierr type (star_info), pointer :: s - integer :: k call get_star_ptr(id, s, ierr) if (ierr /= 0) then write(*,*) 'do_remove_fe_core: get_star_ptr ierr', ierr @@ -833,7 +832,7 @@ subroutine do_remove_surface_by_v_surf_div_v_escape(id, v_surf_div_v_escape, ier integer, intent(out) :: ierr type (star_info), pointer :: s integer :: k, k_vesc - real(dp) :: vesc, vesc_m1 + real(dp) :: vesc real(dp), dimension(:), pointer :: v include 'formats' call get_star_ptr(id, s, ierr) @@ -888,8 +887,6 @@ subroutine do_remove_surface_by_density(id, density, ierr) real(dp), intent(in) :: density integer, intent(out) :: ierr type (star_info), pointer :: s - integer :: k - real(dp) :: avg_rho ierr = 0 include 'formats' call get_star_ptr(id, s, ierr) @@ -1158,10 +1155,9 @@ subroutine do_relax_to_star_cut( & initial_z, initial_y, initial_mass, & cumulative_energy_error, cumulative_extra_heating - real(dp), pointer :: interp_work(:), conv_vel_interp(:) real(dp), pointer :: q(:), xq(:), xa(:,:), j_rot(:), entropy(:) - real(dp) :: conv_vel_temp, time - integer :: num_pts, k, k0, species + real(dp) :: time + integer :: num_pts, k0, species logical :: save_have_mlt_vc logical :: dbg = .false. diff --git a/star/private/report.f90 b/star/private/report.f90 index 06fcdda31..751a26d45 100644 --- a/star/private/report.f90 +++ b/star/private/report.f90 @@ -145,20 +145,14 @@ end subroutine set_power_info subroutine do_report(s, ierr) use rates_def, only: & - i_rate, i_rate_dRho, i_rate_dT, std_reaction_Qs, std_reaction_neuQs + i_rate, i_rate_dRho, i_rate_dT use star_utils, only: get_phot_info use hydro_rotation, only: set_surf_avg_rotation_info type (star_info), pointer :: s integer, intent(out) :: ierr - integer :: k, i, j, ic, nz, kcore, & - h1, h2, he3, he4, c12, n14, o16, ne20, si28, co56, ni56, k_min - real(dp) :: w1, radius, dr, dm, hpc, cur_m, cur_r, prev_r, tau_conv, & - twoGmrc2, cur_h, prev_h, cur_he, non_fe_core_mass, nu_for_delta_Pg, & - prev_he, cur_c, prev_c, v, mstar, pdg, pdg_prev, luminosity, & - prev_m, cell_mass, wf, conv_time, mv, bminv, uminb, eps_nuc_sum, eps_cat_sum,& - mass_sum - logical, parameter :: new_only = .false. + integer :: k, nz, h1, h2, he3, he4, c12, n14, o16, ne20, si28, co56, ni56, k_min + real(dp) :: radius, dr, non_fe_core_mass, nu_for_delta_Pg, v, mstar, luminosity, mass_sum integer, pointer :: net_iso(:) real(dp), pointer :: velocity(:) => null() @@ -500,7 +494,6 @@ real(dp) function volume_at_q(q) use interp_1d_def use interp_1d_lib real(dp), intent(in) :: q - real(dp) :: vp2, vp1, v00, vm1 integer, parameter :: n_old = 4, n_new = 1, nwork = pm_work_size real(dp) :: qlo, x_old(n_old), v_old(n_old), x_new(n_new), v_new(n_new) integer :: k, nz, k00, ierr @@ -767,7 +760,7 @@ subroutine find_epsnuc_zone( & ierr = 0 bzm_1 = null_zone; bzm_2 = null_zone; bzm_3 = null_zone; bzm_4 = null_zone burn_zone = 0 ! haven't entered the zone yet - if (i_start .ne. s% nz) then + if (i_start /= s% nz) then i = i_start+1 prev_m = s% m(i) prev_x = s% eps_nuc(i) @@ -780,16 +773,16 @@ subroutine find_epsnuc_zone( & cur_x = s% eps_nuc(i) select case (burn_zone) case (0) - if ( cur_x .gt. burn_min2 ) then - if ( i .eq. s% nz ) then ! use star center as start of zone + if ( cur_x > burn_min2 ) then + if ( i == s% nz ) then ! use star center as start of zone bzm_2 = 0d0 else ! interpolate to estimate where rate reached burn_min1 bzm_2 = find0(prev_m, prev_x-burn_min2, cur_m, cur_x-burn_min2) end if bzm_1 = bzm_2 burn_zone = 2 - elseif ( cur_x .gt. burn_min1 ) then - if ( i .eq. s% nz ) then ! use star center as start of zone + elseif ( cur_x > burn_min1 ) then + if ( i == s% nz ) then ! use star center as start of zone bzm_1 = 0d0 else ! interpolate to estimate where rate reached burn_min1 bzm_1 = find0(prev_m, prev_x-burn_min1, cur_m, cur_x-burn_min1) @@ -797,27 +790,27 @@ subroutine find_epsnuc_zone( & burn_zone = 1 end if case (1) ! in the initial eps > burn_min1 region - if ( cur_x .gt. burn_min2 ) then + if ( cur_x > burn_min2 ) then bzm_2 = find0(prev_m, prev_x-burn_min2, cur_m, cur_x-burn_min2) burn_zone = 2 - else if ( cur_x .lt. burn_min1 ) then + else if ( cur_x < burn_min1 ) then bzm_4 = find0(prev_m, prev_x-burn_min1, cur_m, cur_x-burn_min1) i_start = i return end if case (2) ! in the initial eps > burn_min2 region - if ( cur_x .lt. burn_min1 ) then + if ( cur_x < burn_min1 ) then bzm_4 = find0(prev_m, prev_x-burn_min1, cur_m, cur_x-burn_min1) bzm_3 = bzm_4 i_start = i return end if - if ( cur_x .lt. burn_min2 ) then + if ( cur_x < burn_min2 ) then bzm_3 = find0(prev_m, prev_x-burn_min2, cur_m, cur_x-burn_min2) burn_zone = 3 end if case (3) ! in the final eps > burn_min1 region - if ( cur_x .lt. burn_min1 ) then + if ( cur_x < burn_min1 ) then bzm_4 = find0(prev_m, prev_x-burn_min1, cur_m, cur_x-burn_min1) i_start = i return @@ -853,7 +846,7 @@ subroutine get_mass_info(s, cell_masses, ierr) real(dp), pointer, intent(in) :: cell_masses(:) integer, intent(out) :: ierr - integer :: k, nz, j, nzlo, nzhi, kbdy, nzlo_prev + integer :: k, nz, j real(dp) :: cell_mass integer, pointer :: net_iso(:) @@ -1216,7 +1209,7 @@ subroutine set_core_info(s, k, & core_m, core_r, core_lgT, core_lgRho, core_L, core_v, & core_omega, core_omega_div_omega_crit - integer :: j, jm1, j00 + integer :: jm1, j00 real(dp) :: dm1, d00, qm1, q00, core_q, & core_lgP, core_g, core_X, core_Y, & core_scale_height, core_dlnX_dr, core_dlnY_dr, core_dlnRho_dr @@ -1271,8 +1264,8 @@ subroutine get_info_at_q(s, bdy_q, & bdy_scale_height, bdy_dlnX_dr, bdy_dlnY_dr, bdy_dlnRho_dr, & bdy_omega, bdy_omega_div_omega_crit - real(dp) :: x, x0, x1, x2, alfa, beta, bdy_omega_crit - integer :: k, ii, klo, khi + real(dp) :: x, x0, x1, x2, alfa, bdy_omega_crit + integer :: k, klo, khi include 'formats' diff --git a/star/private/rotation_mix_info.f90 b/star/private/rotation_mix_info.f90 index b8a43387c..f5341c0d3 100644 --- a/star/private/rotation_mix_info.f90 +++ b/star/private/rotation_mix_info.f90 @@ -79,10 +79,9 @@ subroutine set_rotation_mixing_info(s, ierr) real(dp), allocatable :: smooth_work(:,:), saved(:,:) logical, allocatable :: unstable(:,:) ! (num_instabilities, nz) - integer :: nz, i, j, k, k0, which, op_err - real(dp) :: alfa, beta, growth_limit, age_fraction, & - D_omega_source, max_replacement_factor, & - dgtau, angsml, angsmt, out_q, prev_out_q, prev_out_q_m1, prev_q, prev_q_m1 + integer :: nz, k, k0, which, op_err + real(dp) :: alfa, growth_limit, age_fraction, & + D_omega_source, dgtau, angsml, angsmt, prev_out_q, prev_out_q_m1, prev_q, prev_q_m1 include 'formats' @@ -447,7 +446,7 @@ subroutine setup(ierr) eps_nucm1, eps_nuc00, scale_height2, dlnRho_dlnP, dlnT_dlnP, & kap, dlnkap_dlnRho, dlnkap_dlnT - integer :: i, k, j + integer :: i, k include 'formats' @@ -836,7 +835,7 @@ subroutine set_D_SSI(ierr) use chem_def integer, intent(out) :: ierr integer :: i, k, kbot, ktop - real(dp) :: qe3, qe4, lambda, dynvisc, Prandtl, radcon, D + real(dp) :: qe3, qe4, dynvisc, Prandtl, radcon, D include 'formats' ierr = 0 @@ -921,7 +920,7 @@ end subroutine set_D_SSI subroutine set_D_ES(ierr) integer, intent(out) :: ierr integer :: i, k, kbot, ktop - real(dp) :: instability_height, D, v, dln_v_es + real(dp) :: instability_height, D, v include 'formats' ierr = 0 @@ -1154,9 +1153,9 @@ subroutine set_ST(s, & N2, N2_mu, opacity, kap_cond, scale_height integer, intent(out) :: ierr - integer :: nz, k, j, kk + integer :: nz, k, kk real(dp) :: xmagfmu, xmagft, xmagfdif, xmagfnu, & - xkap, xgamma, xlg, xsig1, xsig2, xsig3, xxx, ffff, xsig, & + xkap, xgamma, xsig, & xeta, xmagn, xmagnmu, xmagnt, xmagw, xmagdn, xmagtn, xmagrn, xmag4pd, & dlnomega_dlnr, xmagq, xmager2w, & xmagnn, xmagwn, xmagq0, xmagwa0, xmags0, xmagbphi0, xmagbr0, xmageta0, & @@ -1316,7 +1315,7 @@ subroutine set_ST(s, & !..... From Kippenhahn&Weigert, Eqs. (7.6) and (7.7), the convective !..... velocity can be computed. Now assume \nu=1/3 l_mix v and assume !..... that l_mix = H_p. - if ((xmagnt .LE. 0.D0) .AND. (xmagnmu .GT. 0.D0) .AND. (xmagn .GT. 0.D0)) & + if ((xmagnt <= 0.D0) .AND. (xmagnmu > 0.D0) .AND. (xmagn > 0.D0)) & xmagnu = & sqrt(xmagnu*scale_height(k)*(one_third)* & pow(grav(k)*delta(k)*scale_height(k)*MAX(0.D0,L(k))/ & diff --git a/star/private/rsp.f90 b/star/private/rsp.f90 index d66eba337..796b8ad86 100644 --- a/star/private/rsp.f90 +++ b/star/private/rsp.f90 @@ -79,7 +79,6 @@ subroutine build_rsp_model(s,ierr) use const_def, only: Lsun, Rsun, Msun type (star_info), pointer :: s integer, intent(out) :: ierr - integer :: i, j, k include 'formats' NSTART = 1 s% nz = s% RSP_nz @@ -231,11 +230,8 @@ subroutine rsp_setup_part1(s,restart,ierr) type (star_info), pointer :: s logical, intent(in) :: restart integer, intent(out) :: ierr - type (star_info), target :: copy_info - type (star_info), pointer :: c, prv real(dp) :: tau_surf, kap_guess, T_surf, Psurf, kap_surf, Teff_atm, Y - integer :: i, k - logical :: okay + integer :: k include 'formats' ierr = 0 if (s% RSP_use_atm_grey_with_kap_for_Psurf .and. & @@ -311,13 +307,7 @@ subroutine rsp_setup_part2(s, restart, ierr) type (star_info), pointer :: s logical, intent(in) :: restart integer, intent(out) :: ierr - integer :: i, j, k, species, nz, op_err - real(dp), allocatable :: w_avg(:) - real(dp) :: & - dFr_dr_out, dFr_dr_in, dFr_dr_00, & - dFr_dT_out, dFr_dT_00, dFr_dVol_00, & - Lr, Lc, POM - logical :: okay + integer :: nz include 'formats' if (restart) then call finish_rsp_photo_in(s) @@ -422,7 +412,7 @@ subroutine rsp_one_step(s,ierr) type (star_info), pointer :: s integer, intent(out) :: ierr integer :: k, j, k_max_abs_rel_hse_err - real(dp) :: rand, hse_err, max_abs_rel_hse_err + real(dp) :: hse_err, max_abs_rel_hse_err logical :: restart include 'formats' @@ -513,14 +503,14 @@ subroutine rsp_one_step(s,ierr) subroutine add_to_map use profile_getval, only: get_profile_val integer :: i, k, NPCH1, NPCH2, IP, n, io - real(dp) :: ph_x, FASE + real(dp) :: FASE character (len=256) :: fname include 'formats' NPCH1 = s% RSP_map_first_period NPCH2 = s% RSP_map_last_period IP = s% RSP_num_periods io = 77 - if (IP+1.ge.NPCH1.and.IP+1.le.NPCH2) then + if (IP+1>=NPCH1.and.IP+1<=NPCH2) then if(.not. writing_map) then call read_map_specs(s,ierr) if (ierr /= 0) then @@ -552,7 +542,7 @@ subroutine add_to_map !write(*,4) 'add to map', s% model_number, IP, NPCH2, FASE do k=1,NZN,s% RSP_map_zone_interval ! gnuplot pm3d map I = NZN+1 - k - if(I.gt.IBOTOM.and.I.lt.NZN) then + if(I>IBOTOM.and.ILMAX) LMAX=s% L(1)/SUNL + if(s% L(1)/SUNL0.d0.and.ULL<=0.d0) then RMIN=s% r(1)/SUNR end if - if (s% model_number.eq.1) return + if (s% model_number==1) return if (.not. s% RSP_have_set_velocities) return if (s% r(1)/SUNR < s% RSP_min_max_R_for_periods) return if (UN/s% csound(1) > VMAX) then VMAX = UN/s% csound(1) end if - if(UN*ULL.gt.0.0d0.or.UN.gt.0.d0) return + if(UN*ULL>0.0d0.or.UN>0.d0) return T0=TET min_PERIOD = PERIODLIN*s% RSP_min_PERIOD_div_PERIODLIN - if (abs(UN-ULL).gt.1.0d-10) T0=TE_start-(TE_start-TET)*ULL/(ULL-UN) + if (abs(UN-ULL)>1.0d-10) T0=TE_start-(TE_start-TET)*ULL/(ULL-UN) if (min_PERIOD > 0d0 .and. T0-TT1 < min_PERIOD) return if (s% r(1)/SUNR - RMIN < s% RSP_min_deltaR_for_periods) return - if(FIRST.eq.1)then + if(FIRST==1)then cycle_complete = .true. s% rsp_num_periods=s% rsp_num_periods+1 s% rsp_period=T0-TT1 diff --git a/star/private/rsp_build.f90 b/star/private/rsp_build.f90 index 17d0ce1e4..3b3159a27 100644 --- a/star/private/rsp_build.f90 +++ b/star/private/rsp_build.f90 @@ -39,7 +39,7 @@ module rsp_build public :: do_rsp_build real(dp) :: PREC,FSUB,TIN,CFIDDLE,ALF, & - HHFAC,DdmFAC,SVEL,EFL02,EMR,ELR, & + HHFAC,DdmFAC,EFL02,EMR,ELR, & E_0,E_1,T_0,T_1,V_0,V_1,P_0,P_1,QQ_0,QQ_1, & CP_0,CP_1,OP_0,OP_1,R_1,M_0,dm_bar_0 real(dp), dimension(15) :: PERS,ETO @@ -60,28 +60,17 @@ subroutine do_rsp_build(s,ierr) real(dp) :: H,dmN integer :: NMODES ! ilosc modow rozwazanych (N=NMODES) integer :: NDIM1,NDIM2 ! maks. ilosc modow/warstw - real(dp) :: VEL0(15) - character (len=10) PARA - character (len=30) HEAD - character (len=72) HEAD2 - integer :: I,J,kk,NSEQ,NIT - real(dp) :: GEFF,MBOL,DU,TET - integer :: IARG - character (len=8) II1,II2,II3,II4,II5 - character (len=15) PROGNAME + real(dp) :: VEL0(15) + integer :: I,J,kk,NSEQ + real(dp) :: GEFF,MBOL character (len=250) FILENAME - integer :: IFROZEN,IRELAX,ICASTOR - integer :: IO,II,IX,iter - real(dp) :: SS,AA,BB,XX + integer :: IO,II + real(dp) :: SS, AA, BB real(dp), allocatable :: TA(:), VEL(:,:), TEMP(:) - real(dp) :: TAUTEFF,TAUATTEFF + real(dp) :: TAUTEFF, TAUATTEFF logical RELAX - complex(8) xC - real(dp) :: X1,X2,Y1,Y2,amix1,amix2 - integer :: ISTAT - type (star_info), target :: copy_info - type (star_info), pointer :: c, prv + real(dp) :: amix1, amix2 ierr = 0 @@ -180,7 +169,7 @@ subroutine do_rsp_build(s,ierr) ! (DERIVATIVES ~1/sqrt(E_T) AND WITH w=0, LAPACK ! PROBLEM ARISES; NO SUCH PROBLEM WHEN E_T^2 IS USED ! AND LINE BELOW IS NOT NECESSARY THEN) - if(w(I).le.EFL02) w(I)=EFL02 + if(w(I)<=EFL02) w(I)=EFL02 !write(*,*) NZN-I+1, sqrt(w(i)) enddo @@ -202,7 +191,7 @@ subroutine do_rsp_build(s,ierr) enddo II=0; IO=0 do I=NZN,1,-1 - if(TA(I).gt.2.d0/3.d0)then + if(TA(I)>2.d0/3.d0)then II=I IO=I+1 goto 77 @@ -219,7 +208,7 @@ subroutine do_rsp_build(s,ierr) TAUTEFF=AA*2.d0/3.d0+BB do I=NZN,1,-1 - if(T(I).gt.TE)then + if(T(I)>TE)then II=I IO=I+1 goto 78 @@ -237,7 +226,7 @@ subroutine do_rsp_build(s,ierr) GEFF=G*Mass/R(NZN)**2 MBOL=-2.5d0*dlog10(ELR)+4.79d0 - if(NMODES.eq.0) goto 11 ! jesli masz liczyc tylko static envelope + if(NMODES==0) goto 11 ! jesli masz liczyc tylko static envelope if (.not. (s% use_RSP_new_start_scheme .or. s% use_other_RSP_linear_analysis)) then if (s% RSP_trace_RSP_build_model) write(*,*) '*** linear analysis ***' @@ -294,7 +283,7 @@ subroutine do_rsp_build(s,ierr) s% v(kk)=0d0 end do s% L_center=L - if(ALFA.eq.0.d0) EFL0=0.d0 + if(ALFA==0.d0) EFL0=0.d0 s% rsp_period=s% RSP_default_PERIODLIN if (is_bad(s% rsp_period)) then write(*,1) 'rsp_period', s% rsp_period @@ -302,7 +291,7 @@ subroutine do_rsp_build(s,ierr) end if amix1 = s% RSP_fraction_1st_overtone amix2 = s% RSP_fraction_2nd_overtone - if((AMIX1+AMIX2).gt.1.d0) write(*,*) 'AMIX DO NOT ADD UP RIGHT' + if((AMIX1+AMIX2)>1.d0) write(*,*) 'AMIX DO NOT ADD UP RIGHT' if (.not. s% use_RSP_new_start_scheme) then PERIODLIN=PERS(s% RSP_mode_for_setting_PERIODLIN+1) s% rsp_period=PERIODLIN @@ -333,14 +322,12 @@ subroutine STAH(s,MX,L,TE,H0,dmN0,TH0,NZT,NZN,ierr) integer, intent(out) :: ierr real(dp) :: dmN,dm_0,H,Psurf,DDT - real(dp) :: OPVV,OPTT,POM real(dp) :: GPF - real(dp) :: DTN,DTLAST,RS00,RIN - real(dp) :: F2,F1,D,HH,TT,RAMA,dmL - real(dp) :: T4_1,RM,T4_0,WE,TNL,dmNL + real(dp) :: F2,F1,D,HH,TT,dmL + real(dp) :: T4_1,RM,T4_0,WE,dmNL real(dp) :: FACQ,HH1,HH2 - integer :: N,N1,N2,I,ITIN,dmN_cnt,NCHANG,IG,H_cnt - real(dp) :: HP_0,HP_1,IGR_0,IGR_1,PII,w_0 + integer :: N,N1,I,ITIN,dmN_cnt,NCHANG,IG,H_cnt + real(dp) :: HP_0,HP_1,IGR_0,IGR_1,w_0 real(dp) :: Lr_0,Lc_0,SVEL_0,HSTART,tau_sum,TH0_tol,TIN_tol, & dmN_too_large, dmN_too_small, H_too_large, H_too_small logical :: adjusting_dmN, in_photosphere, in_outer_env, & @@ -383,10 +370,10 @@ subroutine STAH(s,MX,L,TE,H0,dmN0,TH0,NZT,NZN,ierr) R_1=pow(R_1**3-3.d0*V_0*dm_0/P4,1.d0/3.d0) N=N-1 if (s% RSP_trace_RSP_build_model) write(*,*) 'zone_loop', N, T_0, TIN - if (N.eq.0 .or. T_0 >= TIN) then + if (N==0 .or. T_0 >= TIN) then if (s% RSP_trace_RSP_build_model) write(*,*) 'call next_H' call next_H ! sets HH - if (N.eq.0 .and. abs(T(1)-TIN).lt.TIN*TIN_tol) then + if (N==0 .and. abs(T(1)-TIN)= TH0) & + if((NZN-N+1==NZT .or. T_0 >= TH0) & .and. adjusting_dmN) then if (s% RSP_trace_RSP_build_model) & write(*,*) 'call next_dmN', dmN_cnt, NZN-N+1, T_0, TH0, abs(T_0-TH0), TH0_tol*TH0 @@ -437,7 +424,7 @@ subroutine STAH(s,MX,L,TE,H0,dmN0,TH0,NZT,NZN,ierr) !call mesa_error(__FILE__,__LINE__) end if call next_dmN - if(NZN-N+1.eq.NZT.and.abs(T_0-TH0).lt.TH0_tol*TH0) then + if(NZN-N+1==NZT.and.abs(T_0-TH0)=L) then write(*,*) 'trouble!',I stop endif @@ -634,7 +621,7 @@ subroutine setup_next_zone T_1 = sqrt(sqrt(T4_1)) E_1 = E_0 ! RESET dm FOR THE INNNER ZONES - if(N.eq.NZN-1) then + if(N==NZN-1) then dm_0=dmN else if (T_1 > TH0) then if (in_outer_env) then @@ -680,10 +667,8 @@ logical function get_T_estimate() use num_lib, only: safe_root_with_brackets real(dp) :: Tmax, epsx, epsy, residual, lnT, & lnT_min, lnT_max, resid_T_min, resid_T_max, dfdx - integer :: i, n, ierr + integer :: n, ierr integer, parameter :: lrpar=1, lipar=1, imax=50 - real(dp), target :: rpar_target(lrpar) - integer, target :: ipar_target(lipar) real(dp), pointer :: rpar(:) integer, pointer :: ipar(:) include 'formats' @@ -741,7 +726,7 @@ logical function get_T(ierr) T_0,P_0,V_0,E_0,CP_0,QQ_0,SVEL_0,OP_0,ierr) if (ierr /= 0) return call CFLUX(HP_0,IGR_0,Lc_0,w_0,GPF,N) - if(Lc_0.lt.L) exit Lc_loop1 + if(Lc_010000) then get_T = .false. if (s% RSP_testing) then write(*,*) 'failed get_T', N, T_0 @@ -768,7 +753,7 @@ logical function get_T(ierr) end if return end if - do while (abs(D/T4_0).gt.0.5d0) + do while (abs(D/T4_0)>0.5d0) D=(T4_0/2.d0)*(D/abs(D)) end do T4_0 = T4_0-D @@ -778,7 +763,7 @@ logical function get_T(ierr) T_0,P_0,V_0,E_0,CP_0,QQ_0,SVEL_0,OP_0,ierr) if (ierr /= 0) return call CFLUX(HP_0,IGR_0,Lc_0,w_0,GPF,N) - if (Lc_0.lt.L) exit Lc_loop + if (Lc_0 54) then + if((.not.adjusting_dmN) .OR. dmN_cnt>1 .or. IG > 54) then write(*,*) 'zone ',N,'IGR= ',IGR_0 stop end if @@ -861,9 +846,9 @@ end subroutine STAH subroutine ZNVAR(s,H,dmN,L,TE,M,ierr) type (star_info), pointer :: s integer, intent(out) :: ierr - real(dp) :: H,dmN,L,TE,M,ha,Psurf - real(dp) :: T0,R,TAU0,Pdm,CKP,P,PZ,V,OP,DU1,DU2,CP,QQ, & - dtau, kap, alfa, G_M_dtau_div_R2, Prad, Pgas_0, Pgas_1, & + real(dp) :: H,dmN,L,TE,M,Psurf + real(dp) :: T0,R,TAU0,P,V, & + dtau, kap, alfa, G_M_dtau_div_R2, Prad, Pgas_0, & dP_dV, dkap_dV, xx, residual, d_residual_dlnV, & dkap_dlnV, dlnV, dP_dlnV, lnV integer :: I @@ -949,7 +934,7 @@ subroutine CFLUX(HP_0,IGR_0,Lc_0,OMEGA_0,GPF,N) real(dp) :: AA,BB,CC,DELTA integer :: N !- - if(ALFA.eq.0.d0) then + if(ALFA==0.d0) then OMEGA_0=0.d0 Lc_0=0.d0 return @@ -973,13 +958,13 @@ subroutine CFLUX(HP_0,IGR_0,Lc_0,OMEGA_0,GPF,N) ! BOTTOM BOUNDARY CONDITION FOR CONVECTION - if(N.le.IBOTOM)then + if(N<=IBOTOM)then Lc_0=0.d0 OMEGA_0=0.d0 return endif - if(IGR_0.gt.0.d0)then - if(.true. .or. GAMMAR.eq.0.d0)then ! gammar breaks Cep 11.5M model BP + if(IGR_0>0.d0)then + if(.true. .or. GAMMAR==0.d0)then ! gammar breaks Cep 11.5M model BP OMEGA_0=sqrt(ALFA/CEDE*FF*GPF* & (T_0*P_0*QQ_0/CP_0+T_1*P_1*QQ_1/CP_1)*0.5d0) else @@ -991,7 +976,7 @@ subroutine CFLUX(HP_0,IGR_0,Lc_0,OMEGA_0,GPF,N) CC=-(T_0*P_0*QQ_0/CP_0 & +T_1*P_1*QQ_1/CP_1)*0.5d0*FF*GPF DELTA=BB**2-4.d0*AA*CC - if(DELTA.le.0.d0) then + if(DELTA<=0.d0) then write(*,*) 'CFLUX: Error! : Y>0, but no solution found' stop endif diff --git a/star/private/rsp_def.f90 b/star/private/rsp_def.f90 index 3ebe7905d..66ff8a63c 100644 --- a/star/private/rsp_def.f90 +++ b/star/private/rsp_def.f90 @@ -406,7 +406,7 @@ subroutine rsp_photo_in(s, iounit, ierr) type (star_info), pointer :: s integer, intent(in) :: iounit integer, intent(out) :: ierr - integer :: n, k, i + integer :: n include 'formats' call init_def(s) ierr = 0 @@ -447,7 +447,7 @@ end subroutine rsp_photo_in subroutine finish_after_build_model(s) type (star_info), pointer :: s - integer :: k, ierr + integer :: k ! restore bit-for-bit erad = crad*T**4*Vol include 'formats' do k = 1, NZN @@ -522,7 +522,7 @@ subroutine set_star_vars(s, ierr) type (star_info), pointer :: s integer, intent(out) :: ierr real(dp) :: sum_dm - integer :: i, k + integer :: k include 'formats' ierr = 0 sum_dm = 0d0 @@ -658,7 +658,6 @@ subroutine check_R(s,str) type (star_info), pointer :: s character (len=*), intent(in) :: str integer :: k - real(dp) :: V include 'formats' do k=s% nz,1,-1 if (k == s% nz) then diff --git a/star/private/rsp_eval_eos_and_kap.f90 b/star/private/rsp_eval_eos_and_kap.f90 index 60a17f362..1ef81b9ef 100644 --- a/star/private/rsp_eval_eos_and_kap.f90 +++ b/star/private/rsp_eval_eos_and_kap.f90 @@ -48,7 +48,6 @@ module rsp_eval_eos_and_kap subroutine restart_rsp_eos_and_kap(s) type (star_info), pointer :: s - integer :: ierr eos_handle = s% eos_handle kap_handle = s% kap_handle net_iso => s% net_iso @@ -60,7 +59,7 @@ subroutine init_for_rsp_eos_and_kap(s) use adjust_xyz, only: get_xa_for_standard_metals type (star_info), pointer :: s - integer :: i, k, j, iz, ierr + integer :: i, iz, ierr real(dp) :: initial_z, initial_y, initial_x, & initial_h1, initial_h2, initial_he3, initial_he4, & xsol_he3, xsol_he4, z2bar, ye, mass_correction, sumx @@ -207,15 +206,11 @@ subroutine eval1_mesa_eos_and_kap( & integer, intent(out) :: ierr integer :: j - real(dp) :: logT, logRho, T, Rho, energy, entropy, & - dlnRho_dlnPgas_const_T, dlnRho_dlnT_const_Pgas, & - d_dlnRho_const_T, d_dlnT_const_Rho, E, dE_dV, dE_dT, & + real(dp) :: logT, logRho, T, Rho, E, dE_dV, dE_dT, & lnfree_e, d_lnfree_e_dlnRho, d_lnfree_e_dlnT, & - frac_Type2, opacity, dlnkap_dlnd, dlnkap_dlnT, & dlnd_dV, chiRho, chiT, dchiRho_dlnd, dchiRho_dlnT, & - dchiT_dlnd, dchiT_dlnT, dQ_dlnd, dQ_dlnT, opacity_factor - real(dp), dimension(num_eos_basic_results) :: & - res, d_dlnd, d_dlnT, d_dabar, d_dzbar + dchiT_dlnd, dchiT_dlnT, dQ_dlnd, dQ_dlnT + real(dp), dimension(num_eos_basic_results) :: res, d_dlnd, d_dlnT real(dp) :: d_dxa(num_eos_d_dxa_results,s% species) include 'formats' @@ -826,7 +821,6 @@ subroutine get_surf_P_T_kap(s, & real(dp) :: & lnT, dlnT_dL, dlnT_dlnR, dlnT_dlnM, dlnT_dlnkap, & lnP, dlnP_dL, dlnP_dlnR, dlnP_dlnM, dlnP_dlnkap - integer :: iter ierr = 0 @@ -871,7 +865,7 @@ subroutine set_Rho_for_new_Pgas(s,kk,ierr) real(dp), dimension(num_eos_basic_results) :: & res, d_dlnd, d_dlnT real(dp), dimension(num_eos_d_dxa_results, species) :: d_dxa - integer :: max_iter, which_other, eos_calls, iter + integer :: max_iter, which_other, eos_calls include 'formats' ierr = 0 @@ -917,7 +911,7 @@ subroutine set_T_for_new_egas(s,kk,ierr) ! uses s% T(kk), s% egas(kk) and s% ln real(dp), dimension(num_eos_basic_results) :: & res, d_dlnd, d_dlnT real(dp) :: d_dxa(num_eos_d_dxa_results, species) - integer :: max_iter, which_other, eos_calls, iter + integer :: max_iter, eos_calls include 'formats' ierr = 0 @@ -989,7 +983,7 @@ subroutine set_T_for_new_Pgas(s,kk,ierr) real(dp), dimension(num_eos_basic_results) :: & res, d_dlnd, d_dlnT real(dp), dimension(num_eos_d_dxa_results, species) :: d_dxa - integer :: max_iter, which_other, eos_calls, iter + integer :: max_iter, which_other, eos_calls include 'formats' ierr = 0 @@ -1032,7 +1026,7 @@ subroutine set_T_for_new_energy(s,kk,logT_tol,other_tol,ierr) real(dp), dimension(num_eos_basic_results) :: & res, d_dlnd, d_dlnT real(dp), dimension(num_eos_d_dxa_results, species) :: d_dxa - integer :: max_iter, which_other, eos_calls, iter + integer :: max_iter, which_other, eos_calls ierr = 0 max_iter = 100 which_other = i_lnE diff --git a/star/private/rsp_lina.f90 b/star/private/rsp_lina.f90 index df22da843..f9a2f79ba 100644 --- a/star/private/rsp_lina.f90 +++ b/star/private/rsp_lina.f90 @@ -102,21 +102,20 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & real(dp) :: GGXM,GGX0,GGXP,GGY0,GGYP,GG,GPF real(dp) :: DFCX0,DFCXM,DFCXP,DFCY0,DFCYP,DFCZ0,DFCZP real(dp) :: DFCMX0,DFCMXM,DFCMXP,DFCMY0,DFCMYP,DFCMZ0,DFCMZP - real(dp) :: FLIM,FLD real(dp) :: T1,DLR,DLRP,DLRM,DLT,DLTP,DLMR,DLMRP,DLMRM,DLMT,DLMTP real(dp) :: W_00,W_out,BW,BK,T2,T3,DLK,DLKP,MINI - real(dp) :: T4,T5,P2,P3,P5,P6,P7,P8,P9,P10,POM3,POM2,POM,POM4 + real(dp) :: T4,POM3,POM2,POM,POM4 integer :: I,J,NZN3,IG,IE,IR,IC,INFO,IMI,LD_VL,LD_VR,n,op_err - real(dp) :: RES(12),VRRS(15),Q(15) + real(dp) :: VRRS(15),Q(15) character (len=250) FILENAME character (len=1) NUMER1 character (len=2) NUMER2 - complex(8):: DP_0,DV_0,VTTS(15),SCALE(15),CPOM,DPEV,dP_dT_00URB + complex(8):: DP_0,DV_0,VTTS(15),SCALE(15),DPEV,dP_dT_00URB real(dp) :: SGRP,SGRM real(dp) :: PSIG,TEMI,TEMM,TEM1 real(dp) :: NORMC real(dp) :: QCHECK(15),ETOIEV(15),QWKPT(1000,15),ETOIPT(15),SGR(15) - real(dp) :: TT4,TT4P,EFL02 + real(dp) :: EFL02 real(dp) :: ETOI(15) !write(*,'(a55,i12,99(1pd26.16))') 'start LINA s% w(2)**2', & @@ -191,7 +190,7 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & ! SET ALL NECESSARY DERIVATIVES AND VALUES EQUAL 0 ! FOR FROZEN-IN APPROXIMATION, OR IN CASE ALFA=0 (RADIATIVE) - if(ALFA.eq.0.d0)then + if(ALFA==0.d0)then do I=1,NZN Et(I)=0.d0 EFL02=0.d0 @@ -231,7 +230,7 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & !$OMP PARALLEL DO PRIVATE(I,T1,op_err) SCHEDULE(dynamic,2) do 1 I=1,NZN - if(Et(I).le.EFL02) Et(I)=EFL02 + if(Et(I)<=EFL02) Et(I)=EFL02 call mesa_eos_kap(s,0, & T(I),Vol(I),P(I),DPV(I),dP_dT_00(I), & @@ -242,7 +241,7 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & T1=P43/dm(I) DVR(I)=3.d0*T1*R(I)**2 - if(I.eq.1) goto 2 + if(I==1) goto 2 DVRM(I)=-3.d0*T1*R(max(1,I-1))**2 ! bp: max(1,i-1) to prevent bogus warning from gfortran goto 3 @@ -261,7 +260,7 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & ! SKIP ALL DERIVATIVE CALCULATIONS IN CASE OF FROZEN-IN ! APPROXIMATION OR ALFA=0 (RADIATIVE CASE) - if(ALFA.eq.0.d0) goto 999 + if(ALFA==0.d0) goto 999 ! SET E_T (NOW =w) BELOW AND ABOVE BOUNDARIES Et(NZN) = 0.d0 @@ -411,8 +410,8 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & ! THIS IS FORMULATION USED IN BUDAPEST-FLORIDA CODE ! IT REQUIRES E_T AS MAIN VARIABLE - OTHERWISE CONVERGENCE ! IS EXTREMELY SLOW, AND POSSIBLE ONLY IF LOW ACCURACY -! FOR CONVERGENCE CONDITION, DXXC.LT. 1d-2 - 1.d-4, IS SET -! if(SOURCE(I).le.0.d0)then +! FOR CONVERGENCE CONDITION, DXXC< 1d-2 - 1.d-4, IS SET +! if(SOURCE(I)<=0.d0)then ! SOURCE(I) = 0.d0 ! dsrc_dr_out(I) = 0.d0 ! dsrc_dr_00(I) = 0.d0 @@ -439,7 +438,7 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & d_damp_dw_00(I) =1.5d0*(CEDE/ALFA)/POM2*sqrt(Et(I)) ! RADIATIVE DAMP TERM - if(GAMMAR.eq.0.d0)then + if(GAMMAR==0.d0)then DAMPR(I) = 0.d0 d_dampR_dr_out(I) = 0.d0 d_dampR_dr_00(I) = 0.d0 @@ -523,9 +522,9 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & DLCY0(I)=POM*dPII_dT_00(I)+POM2/Vol(I) DLCYP(I)=POM*dPII_dT_out(I)+POM2/Vol(I+1) - if(I.eq.IBOTOM) DLCZ0(I)=0.d0 - if(I.eq.NZN-1) DLCZP(I)=0.d0 - if(Et(I).lt.EFL02*1d-10)then + if(I==IBOTOM) DLCZ0(I)=0.d0 + if(I==NZN-1) DLCZP(I)=0.d0 + if(Et(I)=0d0) then ! Kuhfuss (1986) tensor EDDY VISCOSITY POM=16.d0/3.d0*PI*ALFA*ALFAM*sqrt(Et(I)) POM1=1.d0/Vol(I)**2/dm(I) @@ -713,7 +712,7 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & DFCMYP = DFCYP DFCMZ0 = DFCZ0 DFCMZP = DFCZP - if(I.eq.NZN) goto 6 + if(I==NZN) goto 6 ! Lr(I)=Eq. A.4, Stellingwerf 1975, Appendix A ! CALC LUM(I) W_00=T(I)**4 @@ -776,7 +775,7 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & EZ10(I) = -T4*( -DFCMZ0) EZ00(I) = -dC_dw_00(I) -T4*(DFCZ0-DFCMZP) EZ01(I) = -T4*(DFCZP ) - if(I.eq.1) then + if(I==1) then EU10(I) = T3*s% R_center**2 else EU10(I) = T3*R(max(1,I-1))**2 @@ -807,7 +806,7 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & CY01(I) = dC_dT_out(I) -T4*(DLTYP(I) ) CX01(I) = dC_dr_out(I) -T4*(DLTXP(I) ) CZ01(I) = -T4*(DLTZP(I) ) - if(I.eq.1) then + if(I==1) then CU10(I) = T3*s% R_center**2 else CU10(I) = T3*R(max(1,I-1))**2 @@ -817,13 +816,13 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & ! CALC MOMENTUM EQUATION(I) T1=P4*R(I)**2/dm_bar(I) - if(ALFAM.ge.0.d0) T4=P4/(dm_bar(I)*R(I)) - if(ALFAM.lt.0.d0) T4=-T1 + if(ALFAM>=0.d0) T4=P4/(dm_bar(I)*R(I)) + if(ALFAM<0.d0) T4=-T1 MU10(I) = T4*(-EVUUM(I)) MZ00(I) = -T1*(-dPtrb_dw_00(I)) MX10(I) = -T1*(-dP_dr_in(I)-dPtrb_dr_in(I)) MY00(I) = -T1*(-dP_dT_00(I)) - if(I.ne.NZN)then + if(I/=NZN)then MX00(I) = 4.d0*G*M(I)/R(I)**3 & -T1*(dP_dr_in(I+1)-dP_dr_00(I)+dPtrb_dr_in(I+1)-dPtrb_dr_00(I)) MX01(I) = -T1*(dP_dr_00(I+1) +dPtrb_dr_00(I+1)) @@ -867,12 +866,12 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & ! ENERGY EQ. IN ROWS IE ! TURBULENT ENERGY EQ. IN ROWS IC ! NAMING SCHEME FOR ELEMENTS OF LLL: -! EX00(I) - d(energy.eq.)/dR_i -! EX01(I) - d(energy.eq.)/dR_i+1 -! EX10(I) - d(energy.eq.)/dR_i-1 -! EY00(I) - d(energy.eq.)/dT_i -! EU00(I) - d(energy.eq.)/dU_i -! MY00(I) - d(moment.eq.)/dT_i +! EX00(I) - d(energy==)/dR_i +! EX01(I) - d(energy==)/dR_i+1 +! EX10(I) - d(energy==)/dR_i-1 +! EY00(I) - d(energy==)/dT_i +! EU00(I) - d(energy==)/dU_i +! MY00(I) - d(moment==)/dT_i ! e.t.c. ! VELOCITY DEF. AND MOMENTUM EQ. AT THE INTERFACE 1....NZN ! ENERGY EQUATIONS IN THE ZONE 1....NZN @@ -884,56 +883,56 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & IE=4*I-1 IC=4*I - if(IG+1.le.NZN3) LLL(IG,IG+1) = 1.d0 + if(IG+1<=NZN3) LLL(IG,IG+1) = 1.d0 !--------------------------------------- - if(IR-4.ge.1) LLL(IR,IR-4) = MU10(I) + if(IR-4>=1) LLL(IR,IR-4) = MU10(I) LLL(IR,IR) = MU00(I) - if(IR+4.le.NZN3) LLL(IR,IR+4) = MU01(I) + if(IR+4<=NZN3) LLL(IR,IR+4) = MU01(I) - if(IR-5.ge.1) LLL(IR,IR-5) = MX10(I) - if(IR-1.ge.1) LLL(IR,IR-1) = MX00(I) - if(IR+3.le.NZN3) LLL(IR,IR+3) = MX01(I) + if(IR-5>=1) LLL(IR,IR-5) = MX10(I) + if(IR-1>=1) LLL(IR,IR-1) = MX00(I) + if(IR+3<=NZN3) LLL(IR,IR+3) = MX01(I) - if(IR+1.le.NZN3) LLL(IR,IR+1) = MY00(I) - if(IR+5.le.NZN3) LLL(IR,IR+5) = MY01(I) + if(IR+1<=NZN3) LLL(IR,IR+1) = MY00(I) + if(IR+5<=NZN3) LLL(IR,IR+5) = MY01(I) - if(IR+2.le.NZN3) LLL(IR,IR+2) = MZ00(I) - if(IR+6.le.NZN3) LLL(IR,IR+6) = MZ01(I) + if(IR+2<=NZN3) LLL(IR,IR+2) = MZ00(I) + if(IR+6<=NZN3) LLL(IR,IR+6) = MZ01(I) !--------------------------------------- - if(IE-5.ge.1) LLL(IE,IE-5) = EU10(I)/dE_dT_00(I) - if(IE-1.ge.1) LLL(IE,IE-1) = EU00(I)/dE_dT_00(I) + if(IE-5>=1) LLL(IE,IE-5) = EU10(I)/dE_dT_00(I) + if(IE-1>=1) LLL(IE,IE-1) = EU00(I)/dE_dT_00(I) - if(IE-10.ge.1) LLL(IE,IE-10) = EX20(I)/dE_dT_00(I) - if(IE-6.ge.1) LLL(IE,IE-6) = EX10(I)/dE_dT_00(I) - if(IE-2.ge.1) LLL(IE,IE-2) = EX00(I)/dE_dT_00(I) - if(IE+2.le.NZN3) LLL(IE,IE+2) = EX01(I)/dE_dT_00(I) + if(IE-10>=1) LLL(IE,IE-10) = EX20(I)/dE_dT_00(I) + if(IE-6>=1) LLL(IE,IE-6) = EX10(I)/dE_dT_00(I) + if(IE-2>=1) LLL(IE,IE-2) = EX00(I)/dE_dT_00(I) + if(IE+2<=NZN3) LLL(IE,IE+2) = EX01(I)/dE_dT_00(I) - if(IE-4.ge.1) LLL(IE,IE-4) = EY10(I)/dE_dT_00(I) + if(IE-4>=1) LLL(IE,IE-4) = EY10(I)/dE_dT_00(I) LLL(IE,IE) = EY00(I)/dE_dT_00(I) - if(IE+4.le.NZN3) LLL(IE,IE+4) = EY01(I)/dE_dT_00(I) + if(IE+4<=NZN3) LLL(IE,IE+4) = EY01(I)/dE_dT_00(I) - if(IE-3.ge.1) LLL(IE,IE-3) = EZ10(I)/dE_dT_00(I) - if(IE+1.le.NZN3) LLL(IE,IE+1) = EZ00(I)/dE_dT_00(I) - if(IE+5.le.NZN3) LLL(IE,IE+5) = EZ01(I)/dE_dT_00(I) + if(IE-3>=1) LLL(IE,IE-3) = EZ10(I)/dE_dT_00(I) + if(IE+1<=NZN3) LLL(IE,IE+1) = EZ00(I)/dE_dT_00(I) + if(IE+5<=NZN3) LLL(IE,IE+5) = EZ01(I)/dE_dT_00(I) !--------------------------------------- - if(IC-11.ge.1) LLL(IC,IC-11) = CX20(I) - if(IC-7.ge.1) LLL(IC,IC-7) = CX10(I) - if(IC-3.ge.1) LLL(IC,IC-3) = CX00(I) - if(IC+1.le.NZN3) LLL(IC,IC+1) = CX01(I) + if(IC-11>=1) LLL(IC,IC-11) = CX20(I) + if(IC-7>=1) LLL(IC,IC-7) = CX10(I) + if(IC-3>=1) LLL(IC,IC-3) = CX00(I) + if(IC+1<=NZN3) LLL(IC,IC+1) = CX01(I) - if(IC-6.ge.1) LLL(IC,IC-6) = CU10(I) - if(IC-2.ge.1) LLL(IC,IC-2) = CU00(I) + if(IC-6>=1) LLL(IC,IC-6) = CU10(I) + if(IC-2>=1) LLL(IC,IC-2) = CU00(I) - if(IC-5.ge.1) LLL(IC,IC-5) = CY10(I) - if(IC-1.ge.1) LLL(IC,IC-1) = CY00(I) - if(IC+3.le.NZN3) LLL(IC,IC+3) = CY01(I) + if(IC-5>=1) LLL(IC,IC-5) = CY10(I) + if(IC-1>=1) LLL(IC,IC-1) = CY00(I) + if(IC+3<=NZN3) LLL(IC,IC+3) = CY01(I) - if(IC-4.ge.1) LLL(IC,IC-4) = CZ10(I) + if(IC-4>=1) LLL(IC,IC-4) = CZ10(I) LLL(IC,IC) = CZ00(I) - if(IC+4.le.NZN3) LLL(IC,IC+4) = CZ01(I) + if(IC+4<=NZN3) LLL(IC,IC+4) = CZ01(I) IF (IE+4 <= NZN3) then - if(LLL(IE,IE+4).lt.0.d0)then + if(LLL(IE,IE+4)<0.d0)then !write(*,*) 'rerrrrrrrrrrrrrrrrrrrrrrrr',i endif endif @@ -943,7 +942,7 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & write(*,*) 'waiting for DGEEV to solve eigenvalue problem....' call DGEEV('n','v',NZN3,LLL,LD_LLL,WRx,WIx,VLx,LD_VL,VRx,LD_VR, & WORKx,4*NZN3,INFO) - if(INFO.ne.0)then + if(INFO/=0)then write(*,*) 'FAILED!' write(*,*) 'LAPACK/DGEEV error, ier= ',INFO ierr = -1 @@ -967,9 +966,9 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & IMI=0 !write(15,'(a)') ' I R PERIOD' do I=1,NZN3 -! if(WIx(I).lt.MINI.and.WIx(I).gt.1d-9)then - if((WIx(I).lt.MINI) .and.(WIx(I).gt.1.d-9))then - if(P4*WRx(I)/WIx(I).gt.-.3d+1)then +! if(WIx(I)1d-9)then + if((WIx(I)1.d-9))then + if(P4*WRx(I)/WIx(I)>-.3d+1)then MINI=WIx(I) IMI=I end if @@ -986,7 +985,7 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & do J=1,NMODES 444 continue - if(P4*WRx(IMI+J-1)/WIx(IMI+J-1).lt.-.5d+1)then + if(P4*WRx(IMI+J-1)/WIx(IMI+J-1)<-.5d+1)then IMI=IMI+1 goto 444 endif @@ -1035,7 +1034,7 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & ! DVRC(I,J) IS SCALED dOMEGA/OMEGA EIGENVECTOR OF THE MODE (J) ! (dOMEGA_i/OMEGA_i)/(dR_NZN/R_NZN) DVRC(I,J)=VRC(I,J) - if(NORMC.lt.abs(DVRC(I,J))) NORMC=abs(DVRC(I,J)) + if(NORMC=2)DPEV=DPEV+EVUUM(I)*VRU(I-1,J) DPEV=DPEV*SCALE(J) dP_dT_00URB=dPtrb_dr_00(I)*VRR(I,J) - if(I.ge.2) dP_dT_00URB=dP_dT_00URB+dPtrb_dr_in(I)*VRR(I-1,J) + if(I>=2) dP_dT_00URB=dP_dT_00URB+dPtrb_dr_in(I)*VRR(I-1,J) dP_dT_00URB=dP_dT_00URB+dPtrb_dw_00(I)*VRC(I,J) dP_dT_00URB=dP_dT_00URB*SCALE(J) QWK(I,J)=-PI*dm(I)*aimag(conjg(DP_0)*DV_0) - if(ALFAM.lt.0.d0)QWKEV(I,J)=-PI*dm(I)*aimag(conjg(DPEV)*DV_0) + if(ALFAM<0.d0)QWKEV(I,J)=-PI*dm(I)*aimag(conjg(DPEV)*DV_0) QWKPT(I,J)=-PI*dm(I)*aimag(conjg(dP_dT_00URB)*DV_0) - if(ALFAM.gt.0.d0)then + if(ALFAM>0.d0)then QWKEV(I,J)=PI*dm(I)*aimag(conjg(DPEV)*(DV_0/R(I)**3- & 3.d0*Vol(I)/R(I)**4*VRR(I,J)*SCALE(J))) endif - if(QWK(I,J)+QWKEV(I,J)+QWKPT(I,J).ge.0.d0) & + if(QWK(I,J)+QWKEV(I,J)+QWKPT(I,J)>=0.d0) & SGRP=SGRP+QWK(I,J)+QWKEV(I,J)+QWKPT(I,J) - if(QWK(I,J)+QWKEV(I,J)+QWKPT(I,J).lt.0.d0) & + if(QWK(I,J)+QWKEV(I,J)+QWKPT(I,J)<0.d0) & SGRM=SGRM+abs(QWK(I,J)+QWKEV(I,J)+QWKPT(I,J)) VEL(I,J)=abs(VRR(I,J))/VRRS(J) - if(abs(PHR(I,J)).gt.1.57d0)VEL(I,J)=-VEL(I,J) + if(abs(PHR(I,J))>1.57d0)VEL(I,J)=-VEL(I,J) enddo ! WRITE WORK-INTEGRALS INTO FILE - if(J.le.9)then + if(J<=9)then write(NUMER1,'(I1)') J FILENAME=trim(s% log_directory) // '/' // 'LINA_work'//NUMER1//'.data' endif - if(J.ge.10)then + if(J>=10)then write(NUMER2,'(I2)') J FILENAME=trim(s% log_directory) // '/' // 'LINA_work'//NUMER2//'.data' endif @@ -1118,8 +1117,8 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & VRL(I,J)= ELT(I)*VRT(I,J) & +ELR(I)*VRR(I,J) & +ELZ0(I)*VRC(I,J) - if(I.ne.1) VRL(I,J)=VRL(I,J)+ELRM(I)*VRR(I-1,J) - if(I.ne.NZN) VRL(I,J)=VRL(I,J)+ELTP(I)*VRT(I+1,J) & + if(I/=1) VRL(I,J)=VRL(I,J)+ELRM(I)*VRR(I-1,J) + if(I/=NZN) VRL(I,J)=VRL(I,J)+ELTP(I)*VRT(I+1,J) & +ELRP(I)*VRR(I+1,J) & +ELZP(I)*VRC(I+1,J) ! DVRL(I,J) IS SCALED dL/L EIGENVECTOR OF THE MODE (J) @@ -1129,11 +1128,11 @@ subroutine do_LINA(s, L0, NZN, NMODES, VEL, PERS, ETO, & enddo ! WRITE EIGENVECTORS TO FILE - if(J.le.9)then + if(J<=9)then write(NUMER1,'(I1)') J FILENAME=trim(s% log_directory) // '/' // 'LINA_eigen'//NUMER1//'.data' endif - if(J.ge.10)then + if(J>=10)then write(NUMER2,'(I2)') J FILENAME=trim(s% log_directory) // '/' // 'LINA_eigen'//NUMER2//'.data' endif @@ -1234,7 +1233,7 @@ subroutine SORT(N,RA,RB,ISORT) L=N/2+1 IR=N 10 continue - if(L.gt.1)then + if(L>1)then L=L-1 RRA=RA(L) RRB=RB(L) @@ -1247,7 +1246,7 @@ subroutine SORT(N,RA,RB,ISORT) RB(IR)=RB(1) ISORT(IR)=ISORT(1) IR=IR-1 - if(IR.eq.1)then + if(IR==1)then RA(1)=RRA RB(1)=RRB ISORT(1)=RRI @@ -1256,11 +1255,11 @@ subroutine SORT(N,RA,RB,ISORT) endif I=L J=L+L - 20 if(J.le.IR)then - if(J.lt.IR)then - if(RA(J).lt.RA(J+1))J=J+1 + 20 if(J<=IR)then + if(J25) goto 2 !no convergence, stop F2=P1/P-1.d0 V=V-F2*P/DPV if (is_bad(V)) then @@ -114,7 +113,7 @@ subroutine EOP(s,k,T,P,V,E,CP,QQ,SVEL,OP,ierr) !write(*,*) 'V', I, V - if(abs(F2).lt.PRECEQ) goto 3 + if(abs(F2) 1d-10*P) then @@ -174,9 +173,9 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & real(dp) :: T1,DLR,DLRP,DLRM,DLT,DLTP,DLMR,DLMRP,DLMRM,DLMT,DLMTP real(dp) :: W_00,W_out,BW,BK,T2,T3,DLK,DLKP,SVEL,T_0 - real(dp) :: DU1,DU2,POM3,POM2,POM,MAXFLUXD + real(dp) :: POM3,POM2,POM integer :: I,J,IW,IR,IC, IMAXR, IMAXW, IMAXC - real(dp) :: MAXR,MAXW,MAXC,PB,PPB,ELB,ELMB,RES(12) + real(dp) :: MAXR,MAXW,MAXC,PB,PPB,ELB,ELMB integer :: INFO,II,ITROUBC,ITROUBT,IZIP real(dp) :: XXR,XXC,XXT,EZH,DXH,DXXC,DXXT,DXKC,DXKT, & @@ -185,7 +184,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & real(dp) :: FFXM,FFX0,FFXP,FFY0,FFYP,FF real(dp) :: GGXM,GGX0,GGXP,GGY0,GGYP,GG,GPF - real(dp) :: FLIM,FLD,EFL02 + real(dp) :: EFL02 real(dp) :: POM4,DXXR,TEM1,TEMI,TEMM @@ -201,7 +200,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & integer :: NDIVAA, NDIVAP, NDIVAT, dmN_cnt, max_dmN_cnt logical :: ok_to_adjust_mass, ok_to_adjust_Tsurf real(dp) :: EDFAC, Psurf, CFIDDLE, FSUB, EMR, ELR - real(dp) :: PREC1, SOL, DAMPS,DAMPRS,DELTA,SOURS + real(dp) :: PREC1 real(dp) :: XX_max, XX_max_val, XX_max_dx integer :: i_XX_max, var_XX_max, n, op_err @@ -282,7 +281,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & SUMM=SUMM+dm(I) enddo -! IF BOTH ALFAP NAD ALFAT .ne. 0, IT IS NECESSARY TO ITERATE WITHOUT +! IF BOTH ALFAP NAD ALFAT /= 0, IT IS NECESSARY TO ITERATE WITHOUT ! TURBULENT FLUX, WITH TURBULENT PRESSURE ONLY, AND AFTER ! CONVERGENCE TURBULENT FLUX IS ITERATED AALFA = -1 ! turn off ALFA relax @@ -299,7 +298,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & ICAA=1 ! SET ITERATIONS FOR ALFAP - if(AALFAP.ne.0.d0)then + if(AALFAP/=0.d0)then do I=1,NDIVAP AAP(I)=AALFAP*I/dble(NDIVAP) enddo @@ -307,7 +306,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & endif ! SET ITERATIONS FOR ALFAT - if(AALFAT.ne.0.d0)then + if(AALFAT/=0.d0)then do I=1,NDIVAT AAT(I)=AALFAT*I/dble(NDIVAT) enddo @@ -323,15 +322,15 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & 999 continue IZIP = 0 - if(IOP.eq.0) goto 100 + if(IOP==0) goto 100 !------ MASS TRICKS --- -! dmN = dm(NZN) ! THIS IS NOT WORKING IF FSUB.ne.1 +! dmN = dm(NZN) ! THIS IS NOT WORKING IF FSUB/=1 dmN = dm(NZN-1) !THIS IS WORKING FOR ALL FSUB VALUES TT = T(NZN-NZT+1)-TH0 - if(IOP.eq.1) goto 24 + if(IOP==1) goto 24 DDT = TT*(dmN-dmNL)/(TT-TNL) !if (is_bad(DDT)) then @@ -345,10 +344,10 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & ! call mesa_error(__FILE__,__LINE__,'failed in RELAX_ENV') !end if CFIDDLE=0.1d0 - if(abs(DDT/dmN).gt.CFIDDLE) DDT=CFIDDLE*dmN*(DDT/abs(DDT)) + if(abs(DDT/dmN)>CFIDDLE) DDT=CFIDDLE*dmN*(DDT/abs(DDT)) ! CHECK IF ALFA ITERATION IS FINISHED - if(abs(DDT/dmN).lt.PREC1.and.ALFA.ne.AALFA) then + if(abs(DDT/dmN)=1)then + if (NEGFLU==2)then !write(*,*) '*** ENVELOPE IS RELAXED ***' ending=.true. goto 100 @@ -449,7 +448,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & !write(*,*) 'abs(DDT/dmN), PREC1', DDT, dmN, abs(DDT/dmN), PREC1 - if(abs(DDT/dmN).lt.PREC1) then + if(abs(DDT/dmN)=1) then ! CALCULATE HAHA - ZONE MASS RATIO BELOW ANCHOR ! TOTAL MASS BELOW ANCHOR: SUMM, FIRST ZONE MASS: AONE AONE=dmN HAHA=1.01d0 do I=1,100 POM=1.d0/(NZN-NZT+1)*dlog10(1.d0-SUMM/AONE*(1.d0-HAHA)) - if(dabs(HAHA-10.d0**POM).lt.1d-10) goto 22 + if(dabs(HAHA-10.d0**POM)<1d-10) goto 22 HAHA=10.d0**POM enddo write(*,*) 'NO CONVERGENCE IN RELAX_ENV ITERATION FOR H' @@ -486,14 +485,14 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & HAHA=10.d0**POM ! SET NEW MASS DISTRIBUTION do I=NZN,1,-1 - if(I.eq.NZN) then + if(I==NZN) then ! SPECIAL DEFINITIONS FOR THE OUTER ZONE M(I)=MSTAR dm(I)=dmN*FSUB dm_bar(I)=dm(I)*0.5d0 else - if(I.ge.NZN-NZT+1) dm(I)=dmN !DEFINITION DOWN TO ANCHOR - if(I.lt.NZN-NZT+1.and.ok_to_adjust_mass) & + if(I>=NZN-NZT+1) dm(I)=dmN !DEFINITION DOWN TO ANCHOR + if(I0) ! (SEEMS UNNECESSARY) do I=IBOTOM+1,NZN-1 -! if((Y_face(I)+Y_face(I-1)).gt.0.d0.and.Et(I).eq.0.d0) +! if((Y_face(I)+Y_face(I-1))>0.d0.and.Et(I)==0.d0) ! x Et(I)=1.d+6!1.d-6 - if(ALFA.eq.0.d0) Et(I)=0.d0 + if(ALFA==0.d0) Et(I)=0.d0 enddo do I=1,NZN-1 @@ -728,8 +727,8 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & ! THIS IS FORMULATION USED IN BUDAPEST-FLORIDA CODE ! IT REQUIRES E_T AS MAIN VARIABLE - OTHERWISE CONVERGENCE ! IS EXTREMELY SLOW, AND POSSIBLE ONLY IF LOW ACCURACY -! FOR CONVERGENCE CONDITION, DXXC.LT. 1d-2 - 1.d-4, IS SET -! if(SOURCE(I).le.0.d0)then +! FOR CONVERGENCE CONDITION, DXXC< 1d-2 - 1.d-4, IS SET +! if(SOURCE(I)<=0.d0)then ! SOURCE(I) = 0.d0 ! dsrc_dr_out(I) = 0.d0 ! dsrc_dr_00(I) = 0.d0 @@ -756,7 +755,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & d_damp_dw_00(I) =1.5d0*(CEDE/ALFA)/POM2*sqrt(Et(I)) ! RADIATIVE DAMP TERM - if(GAMMAR.eq.0.d0)then + if(GAMMAR==0.d0)then DAMPR(I) = 0.d0 d_dampR_dr_out(I) = 0.d0 d_dampR_dr_00(I) = 0.d0 @@ -819,7 +818,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & do I=1,NZN ! CONVECTIVE LUMINOSITY - if(I.lt.IBOTOM.or.I.ge.NZN.or.alfa.eq.0d0) then + if(I=NZN.or.alfa==0d0) then Lc(I)=0.d0 DLCX0(I)=0.d0 DLCXM(I)=0.d0 @@ -847,10 +846,10 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & DLCY0(I)=POM*dPII_dT_00(I)+POM2/Vol(I) DLCYP(I)=POM*dPII_dT_out(I)+POM2/Vol(I+1) - if(I.eq.IBOTOM) DLCZ0(I)=0.d0 - if(I.eq.NZN-1) DLCZP(I)=0.d0 + if(I==IBOTOM) DLCZ0(I)=0.d0 + if(I==NZN-1) DLCZP(I)=0.d0 - if(NEGFLU.eq.0.and.PII(I).lt.0.d0)then + if(NEGFLU==0.and.PII(I)<0.d0)then Lc(I)=0.d0 DLCX0(I)=0.d0 DLCXM(I)=0.d0 @@ -860,8 +859,8 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & DLCZ0(I)=0.d0 DLCZP(I)=0.d0 endif - if(NEGFLU.eq.1.and.PII(I).lt.0.d0)then - if(II.gt.300)then + if(NEGFLU==1.and.PII(I)<0.d0)then + if(II>300)then DLCZ0(I)=0.d0 DLCZP(I)=0.d0 endif @@ -869,8 +868,8 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & end if ! TURBULENT LUMINOSITY - if(I.lt.IBOTOM.or.I.ge.NZN.or. & - ALFAT.eq.0.d0.or.ALFA.eq.0.d0)then + if(I=NZN.or. & + ALFAT==0.d0.or.ALFA==0.d0)then Lt(I)=0.d0 DLTX0(I)=0.d0 DLTXM(I)=0.d0 @@ -909,7 +908,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & ! TURBULENT PRESSURE (ZONE) do I=IBOTOM+1,NZN-1 - if(ALFAP.eq.0.d0)then + if(ALFAP==0.d0)then PTURB(I) = 0.d0 dPtrb_dw_00(I) = 0.d0 dPtrb_dr_00(I) = 0.d0 @@ -980,7 +979,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & dC_dT_out(NZN) = 0.d0 dC_dw_00(NZN) = 0.d0 - if(ALFA.eq.0.d0) then !RADIATIVE CASE + if(ALFA==0.d0) then !RADIATIVE CASE SOURCE(I) = 0.d0 DAMP(I) = 0.d0 DAMPR(I) = 0.d0 @@ -1019,7 +1018,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & DLMRM = DLRM DLMT = DLT DLMTP = DLTP - if(I.eq.NZN) goto 6 + if(I==NZN) goto 6 ! Lr(I)=Eq. A.4, Stellingwerf 1975, Appendix A ! CALC LUM(I) W_00=T(I)**4 @@ -1066,7 +1065,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & HD(10,IW) = ( DLCZP(I)+DLTZP(I))/L0 !Z(i+1) ! CALC MOMEMTUM EQUATION(I) T1=-P4*(R(I)**2)/dm_bar(I) - if(I.eq.NZN) then + if(I==NZN) then HR(IR) = -T1*(Psurf-P(I)-PTURB(I))+G*M(I)/R(I)**2 else HR(IR)=-T1*(P(I+1)-P(I)+PTURB(I+1)-PTURB(I))+G*M(I)/R(I)**2 @@ -1079,7 +1078,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & HD(5,IR) = +T1*(-dPtrb_dw_00(I)) !Z(i) HD(8,IR) = +T1*(dPtrb_dw_00(I+1)) !Z(i+1) - if(I.eq.NZN) goto 111 + if(I==NZN) goto 111 HD(6,IR) = +T1*(dP_dr_in(I+1)-dP_dr_00(I)+dPtrb_dr_in(I+1)-dPtrb_dr_00(I))+ & 4.d0*G*M(I)/(R(I)**3) !X(i) HD(7,IR) = +T1*(dP_dT_00(I+1)) !Y(i+1) @@ -1091,7 +1090,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & 112 continue ! CALC CONVECTIVE ENERGY EQUATION - if(I.le.IBOTOM.or.I.eq.NZN.or.ALFA.eq.0.d0)then + if(I<=IBOTOM.or.I==NZN.or.ALFA==0.d0)then do J=1,11 HD(J,IC)=0.d0 enddo @@ -1122,7 +1121,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & end if ! SET ANCHOR T(NZN)=CONST - if(I.eq.NZN) then + if(I==NZN) then do j=1,11 HD(J,IW) = 0.d0 enddo @@ -1133,7 +1132,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & HD(4,IR) = 0.d0 HD(5,IC) = 0.d0 endif - if(I.eq.NZN-1)then + if(I==NZN-1)then ! SET DERIVATIVES d(*)/dT(NZN)=0 IN ZONE/ITERFACE NZN-1 HD(9,IW) = 0.d0 HD(7,IR) = 0.d0 @@ -1161,7 +1160,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & !- LAPACK call DGBTRF(3*NZN,3*NZN,5,5,ABB,LD_ABB,IPVT,INFO) - if(INFO.ne.0) then + if(INFO/=0) then write(*,*) 'hyd: LAPACK/dgbtrf problem no., iter.',INFO,II open(61,file='x.dat',status='unknown') write(61,'(F6.3,tr2,f8.2,tr2,f7.2,tr2,d9.3)')EMR,ELR,TE-0.5d0, & @@ -1173,7 +1172,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & stop endif call DGBTRS('n',3*NZN,5,5,1,ABB,LD_ABB,IPVT,HR,3*NZN,INFO) - if(INFO.ne.0) then + if(INFO/=0) then write(*,*) 'hyd: LAPACK/dgbtrs problem no., iter.',INFO,II stop endif @@ -1195,7 +1194,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & IR = 3+3*(I-1) IC = IR-1 IW = IR-2 - if(Et(I).gt.(1.d-20)*EFL02) XXC=dabs(DX(IC)/Et(I)) + if(Et(I)>(1.d-20)*EFL02) XXC=dabs(DX(IC)/Et(I)) XXR=((DX(IR-3)-DX(IR))/(R(I)-R(I-1)))/DXH XXT=dabs(DX(IW)/T(I))/DXH @@ -1237,24 +1236,24 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & T(I) = T(I) +EZH*DX(IW)/2d0 R(I) = R(I) +EZH*DX(IR)/2d0 Et(I) = Et(I)+EZH*DX(IC)/2d0 - if(Et(I).le.0.d0) then + if(Et(I)<=0.d0) then Et(I)=EFL02*1d-4*rand(s) end if DXKT=DXXT DXKC=DXXC DXXR=dmax1(DXXR,dabs(DX(IR)/R(I))) DXXT=dmax1(DXXT,dabs(DX(IW)/T(I))) - if(Et(I).gt.(1.d-20)*EFL02) & + if(Et(I)>(1.d-20)*EFL02) & DXXC=dmax1(DXXC,dabs(DX(IC)/Et(I))) - if(DXXC.gt.DXKC) ITROUBC=I - if(DXXT.gt.DXKT) ITROUBT=I + if(DXXC>DXKC) ITROUBC=I + if(DXXT>DXKT) ITROUBT=I 103 continue !write(*,*) 'apply corr', II,dabs(DXXC),dabs(DXXR),dabs(DXXT),ITROUBC, & ! Et(ITROUBC),EZH !call mesa_error(__FILE__,__LINE__,'debug') !write(*,*) 'DXXC/PRECR', ITROUBC, DXXC/PRECR, DXXC - if(dabs(DXXC).lt.PRECR.and.dabs(DXXR).lt.PRECR.and. & - dabs(DXXT).lt.PRECR) then + if(dabs(DXXC)MAXFLUXD) & ! MAXFLUXD=abs(HR(1+3*(I-1))) !enddo !write(*,*) 'MAXFLUXD= ',MAXFLUXD @@ -1306,7 +1305,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & T1=P4*(R(J)**2) T2=(PPB-PB)/dm_bar(J) T3=G*M(J)/(R(J)**2) - if (dabs((T3+T1*T2)/T3).gt.MAXR)then + if (dabs((T3+T1*T2)/T3)>MAXR)then MAXR=dabs((T3+T1*T2)/T3) IMAXR=J endif @@ -1316,7 +1315,7 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & else ELMB=Lc(J-1)+Lr(J-1)+Lt(J-1) end if - if (dabs((ELB-L0)/L0).gt.MAXW)then + if (dabs((ELB-L0)/L0)>MAXW)then MAXW=dabs((ELB-L0)/L0) IMAXW=J endif @@ -1325,8 +1324,8 @@ subroutine RELAX_ENV(s, L0, TH0, TE, NZT, NZN, & ELMB=Lt(J-1) T1=(ELB-ELMB)/dm(J) T2=SOURCE(J)-DAMP(J)-DAMPR(J) - if ((T2.ne.0.d0).and.(T1.ne.0.d0))then - if (dabs(T1-T2)/max(T1,T2).gt.MAXC)then + if ((T2/=0.d0).and.(T1/=0.d0))then + if (dabs(T1-T2)/max(T1,T2)>MAXC)then MAXC=dabs(T1-T2)/max(T1,T2) IMAXC=J endif diff --git a/star/private/rsp_step.f90 b/star/private/rsp_step.f90 index d577acae0..05325d478 100644 --- a/star/private/rsp_step.f90 +++ b/star/private/rsp_step.f90 @@ -43,8 +43,6 @@ module rsp_step logical, parameter :: call_is_bad = .false. - real(dp) :: x_dbg - integer, parameter :: i_var_Vol = 99 ! for remeshing tests with dfridr integer, parameter :: & @@ -195,11 +193,10 @@ subroutine HYD(s,ierr) use star_utils, only: start_time, update_time type (star_info), pointer :: s integer, intent(out) :: ierr - real(dp) :: DXXT, DXXC, DXXE, DXXL, PREC2, DXH, EZH, rel_err_energy, & - T_surf, P_surf, kap_surf, kap_guess, Teff_atm, & - R_center_start, dt_max, total + real(dp) :: DXXT, DXXC, DXXE, DXXL, PREC2, DXH, EZH, & + P_surf, R_center_start, dt_max, total integer :: & - i_min, i_max, num_tries, max_retries, max_iters, i, IT, k, nz, & + i_min, i_max, num_tries, max_retries, max_iters, k, nz, & kT_max, kW_max, kE_max, kL_max, iter_for_dfridr, test_partials_k integer(8) :: time0 logical :: converged, dbg_msg, trace @@ -327,7 +324,6 @@ subroutine set_min_k_for_turbulent_flux end subroutine set_min_k_for_turbulent_flux subroutine doing_retry - integer :: i include 'formats' if (num_tries == max_retries+1) then write(*,*) 'NO CONVERGENCE IN HYD, TIME STEP num tries, max allowed', & @@ -346,7 +342,6 @@ subroutine doing_retry end subroutine doing_retry subroutine write_msg - integer :: i, k include 'formats' !if (EZH < 1d0) write(*,3) 'undercorrection factor', s% model_number, iter, EZH write(*,'(i6, 2x, i3, 4(4x, a, 1x, i4, 1x, 1pe11.4, 1x, 1pe11.4))') & @@ -628,8 +623,6 @@ end subroutine rsp_set_Teff subroutine set_f_Edd(s, ierr) type (star_info), pointer :: s integer, intent(out) :: ierr - real(dp) :: lim_f_Edd, lim_g_Edd - integer :: k, j include 'formats' ierr = 0 s% g_Edd = 0.5d0 @@ -697,7 +690,7 @@ subroutine eval_vars(s,iter,i_min,i_max,ierr) type (star_info), pointer :: s integer, intent(in) :: iter,i_min,i_max integer, intent(out) :: ierr - integer :: i, k, op_err + integer :: i, op_err integer(8) :: time0 real(dp) :: total include 'formats' @@ -741,11 +734,11 @@ end subroutine eval_vars subroutine eval_eqns(s,P_surf) type (star_info), pointer :: s real(dp), intent(in) :: P_surf - integer :: i, k + integer :: i include 'formats' !$OMP PARALLEL DO PRIVATE(I) SCHEDULE(dynamic,2) - do I = 1,NZN - call calc_equations(s, I, P_surf) + do i = 1,NZN + call calc_equations(s, i, P_surf) end do !$OMP END PARALLEL DO end subroutine eval_eqns @@ -760,22 +753,22 @@ subroutine do1_specific_volume(s,i) include 'formats' k = NZN+1-i T1 = P43/s% dm(k) - if (I /= 1) then + if (i /= 1) then q1 = T1 q2 = s% r(k) q3 = s% r(k+1) q4 = q1*(q2**3 - q3**3) s% Vol(k) = dble(q4) - dVol_dr_in(I) = - 3.0d0*T1*s% r(k+1)**2 + dVol_dr_in(i) = - 3.0d0*T1*s% r(k+1)**2 else s% Vol(k) = T1*(s% r(k)**3 - s% R_center**3) - dVol_dr_in(I) = 0d0 + dVol_dr_in(i) = 0d0 end if if (s% Vol(k) <= 0d0) then write(*,2) 'bad Vol', k, s% Vol(k) call mesa_error(__FILE__,__LINE__,'do1_specific_volume') end if - dVol_dr_00(I) = 3.d0*T1*s% r(k)**2 + dVol_dr_00(i) = 3.d0*T1*s% r(k)**2 end subroutine do1_specific_volume @@ -947,7 +940,7 @@ subroutine apply_corrections(s, & real(dp), intent(in) :: DXH real(dp), intent(out) :: XXT, XXC, XXE, XXL, EZH integer, intent(out) :: kT_max,kW_max,kE_max,kL_max - integer :: i, k, IR, IT, IW, IU, IE, IL, kEZH, & + integer :: i, k, IR, IT, IW, IE, IL, kEZH, & iTM, kTM, iRM, kRM, iEM, kEM, iCM, kCM, iLM, kLM real(dp) :: old_w, XXR, DXXT, DXXC, DXXE, DXXL, DXRM, DXR, & EZH1, XXTM, XXCM, XXRM, XXEM, XXLM, DXKT, DXKC, DXKE, DXKL @@ -1739,7 +1732,7 @@ subroutine calc_Eq(s,i) integer, intent(in) :: I real(dp) :: RRI, RRM, UUI, UUM, POM, POM2 integer :: k - logical :: test_partials, smoothed + logical :: test_partials include 'formats' k = NZN+1-i if (ALFA == 0d0 .or. I <= IBOTOM .or. I >= NZN) then @@ -2147,8 +2140,7 @@ subroutine calc_Lt(s,i,Lt_00, & dLt_der_00, dLt_der_out, & dLt_dw_00, dLt_dw_out real(dp) :: POM, POM2, POM3, TEM1, TEM2, & - d_POM2_dVol_00, d_POM2_dVol_out, rho2_face, & - d_rho2_face_dVol_00, d_rho2_face_dVol_out + d_POM2_dVol_00, d_POM2_dVol_out, rho2_face integer :: k logical :: test_partials include 'formats' @@ -2331,8 +2323,8 @@ subroutine calc_Fr(s, i, Fr_00, & !rs Stellingwerf 1975, Appendix A dFr_dT_out, dFr_dT_00, & dFr_der_out, dFr_der_00 real(dp) :: & - Vol_00, W_00, d_W_00_dr_in, d_W_00_dr_00, d_W_00_dVol_00, d_W_00_der_00, & - Vol_out, W_out, d_W_out_dr_00, d_W_out_dr_out, d_W_out_dVol_out, d_W_out_der_out, & + W_00, d_W_00_dr_in, d_W_00_dr_00, d_W_00_dVol_00, d_W_00_der_00, & + W_out, d_W_out_dr_00, d_W_out_dr_out, d_W_out_dVol_out, d_W_out_der_out, & Prad_factor, Fr2a, d_Fr2a_dW_00, d_Fr2a_dW_out, & Fr2b, d_Fr2b_dW_00, d_Fr2b_dW_out, & BW, kap_00, kap_out, BK, Fr1, Fr2, Fr3, & @@ -3568,19 +3560,6 @@ subroutine erad_eqn(s, i) use const_def, only: crad, clight type (star_info), pointer :: s integer, intent(in) :: i - integer :: IE, k - real(dp) :: time_scale, residual, XP, d_XP_der, & - d_XP_dVol_00, d_XP_dr_00, d_XP_dr_in, & - area_00, area_00_start, area_in, area_in_start, & - Lr_00, Lr_00_start, d_Lr_00_dFr_00, d_Lr_00_dr_00, & - Lr_in, Lr_in_start, d_Lr_in_dFr_in, d_Lr_in_dr_in, & - L_00, L_in, dt, dm, dt_div_dm, DV, opacity, & - erad, erad_tw, Vol, T, COUPL_factor, COUPL, COUPL1, & - d_COUPL_dVol, d_COUPL_dT, d_COUPL_der, d_COUPL_dr_in, d_COUPL_dr_00, & - heat_exchange_time_scale, kE_fac, kP_fac, dt_term, & - d_dt_term_dT, d_dt_term_dr_in, d_dt_term_dr_00, & - u_div_r, d_u_div_r_dr_00, d_u_div_r_dr_in, u_div_r_factor - logical :: test_partials include 'formats' call T_form_of_erad_eqn(s, i) @@ -3593,30 +3572,7 @@ subroutine Fr_eqn(s, i) type (star_info), pointer :: s integer, intent(in) :: i integer :: IL, k - real(dp) :: residual, & - XP_00, d_XP_00_dVol_00, d_XP_00_der_00, d_XP_00_dr_00, d_XP_00_dr_in, & - XP_out, d_XP_out_der_out, d_XP_out_dr_out, d_XP_out_dr_00, & - u_div_r, d_u_div_r_dr_00, & - d_lnV, d_dlnV_dVol_00, d_dlnV_dr_in, d_dlnV_dr_00, d_dlnV_dr_out, & - Vol_out, d_Vol_out_dr_00, d_Vol_out_dr_out, & - rho_out, d_rho_out_dr_out, d_rho_out_dr_00, & - Vol_00, d_Vol_00_dr_in, d_Vol_00_dr_00, & - rho_00, d_rho_00_dVol_00, d_rho_00_dr_00, d_rho_00_dr_in, & - rho_face, d_rho_dVol_00, d_rho_dr_in, d_rho_dr_00, d_rho_dr_out, & - r, dt, dm_bar, dt_div_dm_bar, d_dXP_factor_dr_in, d_dXP_factor_dr_00, & - d_dXP_factor_dr_out, Fr, Fr_start, Fr_tw, & - kap_00, kap_out, kap_rho_face, rho_face_start, d_dlnV_drho_face, & - d_kap_00_dVol_00, d_kap_00_dT_00, d_kap_00_dr_00, d_kap_00_dr_in, & - d_kap_out_dT_out, d_kap_out_dr_00, d_kap_out_dr_out, & - area, d_area_dr_00, d_kaprho_dVol_00, d_kaprho_dT_00, d_kaprho_dT_out, & - d_kaprho_dr_in, d_kaprho_dr_00, d_kaprho_dr_out, & - dXP, dXP_factor, Fr_factor, d_dXP_factor_dVol_00, & - d_Fr_factor_dVol_00, d_Fr_factor_dT_00, d_Fr_factor_dT_out, & - d_Fr_factor_dr_in, d_Fr_factor_dr_00, d_Fr_factor_dr_out, & - erad_00, erad_out, erad_tw, erad_factor1, erad_factor, & - d_erad_factor_dVol_00, d_erad_factor_dr_in, & - d_erad_factor_dr_00, d_erad_factor_dr_out - logical :: test_partials, okay + real(dp) :: residual include 'formats' @@ -3867,6 +3823,3 @@ end subroutine T_form_of_Fr_eqn end module rsp_step - - - diff --git a/star/private/set_flags.f90 b/star/private/set_flags.f90 index 1fdf16555..c31f86fc5 100644 --- a/star/private/set_flags.f90 +++ b/star/private/set_flags.f90 @@ -41,7 +41,6 @@ subroutine set_v_flag(id, v_flag, ierr) integer, intent(out) :: ierr type (star_info), pointer :: s integer :: nvar_hydro_old, k, nz, i_v, i_u - real(dp) :: cs logical, parameter :: dbg = .false. include 'formats' @@ -133,7 +132,6 @@ subroutine set_u_flag(id, u_flag, ierr) integer, intent(out) :: ierr type (star_info), pointer :: s integer :: nvar_hydro_old, k, nz, i_u, i_v - real(dp) :: cs logical, parameter :: dbg = .false. integer :: num_u_vars @@ -232,8 +230,7 @@ subroutine set_RTI_flag(id, RTI_flag, ierr) logical, intent(in) :: RTI_flag integer, intent(out) :: ierr type (star_info), pointer :: s - integer :: nvar_hydro_old, k, nz - real(dp) :: cs + integer :: nvar_hydro_old, nz logical, parameter :: dbg = .false. include 'formats' @@ -307,7 +304,7 @@ subroutine set_RSP2_flag(id, RSP2_flag, ierr) logical, intent(in) :: RSP2_flag integer, intent(out) :: ierr type (star_info), pointer :: s - integer :: nvar_hydro_old, i, k, j, nz, iounit + integer :: nvar_hydro_old, i, k, nz logical, parameter :: dbg = .false. include 'formats' @@ -556,8 +553,7 @@ subroutine set_w_div_wc_flag(id, w_div_wc_flag, ierr) logical, intent(in) :: w_div_wc_flag integer, intent(out) :: ierr type (star_info), pointer :: s - integer :: nvar_hydro_old, k, nz - real(dp) :: cs + integer :: nvar_hydro_old, nz logical, parameter :: dbg = .false. include 'formats' @@ -627,8 +623,7 @@ subroutine set_j_rot_flag(id, j_rot_flag, ierr) logical, intent(in) :: j_rot_flag integer, intent(out) :: ierr type (star_info), pointer :: s - integer :: nvar_hydro_old, k, nz - real(dp) :: cs + integer :: nvar_hydro_old, nz logical, parameter :: dbg = .false. include 'formats' diff --git a/star/private/solve_omega_mix.f90 b/star/private/solve_omega_mix.f90 index 139d36d2f..f8e31675f 100644 --- a/star/private/solve_omega_mix.f90 +++ b/star/private/solve_omega_mix.f90 @@ -43,9 +43,9 @@ integer function do_solve_omega_mix(s, dt_total) type (star_info), pointer :: s real(dp), intent(in) :: dt_total - integer :: ierr, nz, i, j, k, max_iters_per_substep, & + integer :: ierr, nz, k, max_iters_per_substep, & max_iters_total, total_num_iters, num_iters - integer(8) :: time0, clock_rate + integer(8) :: time0 integer :: steps_used, max_steps, min_steps real(qp) :: remaining_time, total_time, time, dt, & J_tot0, J_tot1, max_del, avg_del, & @@ -418,7 +418,7 @@ subroutine solve_tridiag(sub, diag, sup, rhs, x, n, ierr) integer, intent(out) :: ierr real(qp) :: m - integer i + integer :: i ierr = 0 diff --git a/star/private/solver_support.f90 b/star/private/solver_support.f90 index e76ff8d22..bcc59a195 100644 --- a/star/private/solver_support.f90 +++ b/star/private/solver_support.f90 @@ -28,7 +28,6 @@ module solver_support use star_private_def use utils_lib, only: is_bad use const_def - use num_def implicit none @@ -43,9 +42,8 @@ subroutine set_xscale_info(s, nvar, ierr) integer, intent(in) :: nvar integer, intent(out) :: ierr - integer :: i, j, k, nz, nvar_hydro + integer :: i, k, nz, nvar_hydro real(dp), parameter :: xscale_min = 1 - real(dp) :: var_scale, lum_scale, vel_scale, omega_scale include 'formats' @@ -71,7 +69,7 @@ subroutine set_xscale_info(s, nvar, ierr) contains subroutine dump_xscale - integer :: k, j, k0, k1 + integer :: k, j include 'formats' !write(*,1) 's% xa_scale', s% xa_scale do k=1,s% nz @@ -95,8 +93,7 @@ subroutine eval_equations(s, nvar, ierr) integer, intent(out) :: ierr integer :: cnt, i, j, k, nz - integer :: id - real(dp) :: dt, theta_dt + real(dp) :: dt include 'formats' ierr = 0 @@ -168,7 +165,7 @@ subroutine eval_equations(s, nvar, ierr) subroutine dump_eval_equ - integer :: k, j, k0, k1 + integer :: k, j include 'formats' do k=1,s% nz do j=1,nvar @@ -189,9 +186,8 @@ subroutine sizequ(s, nvar, equ_norm, equ_max, k_max, j_max, ierr) ! equ = residu real(dp), intent(out) :: equ_norm, equ_max integer, intent(out) :: k_max, j_max, ierr - integer :: j, k, num_terms, n, nz, nvar_hydro, nvar_chem, & - max_loc, skip_eqn1, skip_eqn2, skip_eqn3 - real(dp) :: sumequ, absq, max_energy_resid, avg_energy_resid + integer :: j, k, num_terms, n, nz, nvar_hydro, nvar_chem, skip_eqn1, skip_eqn2, skip_eqn3 + real(dp) :: sumequ, absq logical :: dbg @@ -300,7 +296,7 @@ subroutine sizequ(s, nvar, equ_norm, equ_max, k_max, j_max, ierr) ! equ = residu contains subroutine dump_equ - integer :: k, j, k0, k1 + integer :: k, j include 'formats' do k=1,s% nz do j=1,nvar @@ -326,7 +322,7 @@ subroutine sizeB(s, nvar, B, max_correction, correction_norm, max_zone, max_var, integer :: k, i, nz, num_terms, j, n, nvar_hydro, jmax, num_xa_terms, & skip1, skip2, skip3, skip4, skip5 real(dp) :: abs_corr, sum_corr, sum_xa_corr, x_limit, & - max_abs_correction, max_abs_correction_cv, max_abs_corr_for_k, max_abs_xa_corr_for_k + max_abs_correction, max_abs_corr_for_k, max_abs_xa_corr_for_k logical :: found_NaN, found_bad_num, report real(dp), parameter :: frac = 0.1d0 logical, parameter :: dbg = .false. @@ -604,7 +600,7 @@ end subroutine show_stuff subroutine dump_B - integer :: k, j, k0, k1 + integer :: k, j include 'formats' do k=1,s% nz do j=1,nvar @@ -626,18 +622,13 @@ subroutine Bdomain(s, nvar, B, correction_factor, ierr) use const_def, only: dp use chem_def, only: chem_isos use star_utils, only: current_min_xa_hard_limit, rand - use rsp_def, only: EFL0 type (star_info), pointer :: s integer, intent(in) :: nvar real(dp), pointer, dimension(:,:) :: B ! (nvar, nz) real(dp), intent(inout) :: correction_factor integer, intent(out) :: ierr - integer :: id, i, j, k, nz, species, bad_j, bad_k, & - i_alpha_RTI, i_w_div_wc + integer :: i, j, k, nz, species, bad_j, bad_k real(dp) :: alpha, min_alpha, new_xa, old_xa, dxa, eps, min_xa_hard_limit, & - old_E, dE, new_E, old_lnd, dlnd, new_lnd, dw, new_w, & - dw_div_wc, old_w_div_wc, new_w_div_wc, dconv_vel, old_conv_vel, new_conv_vel, & - dalpha_RTI, new_alpha_RTI, old_alpha_RTI, log_conv_vel_v0, & dlum_surf, old_lum_surf, new_lum_surf include 'formats' ierr = 0 @@ -743,7 +734,6 @@ subroutine inspectB(s, nvar, B, ierr) real(dp), pointer, dimension(:,:) :: B ! (nvar, nz) integer, intent(out) :: ierr - integer :: id integer, parameter :: inspectB_iter_stop = -1 include 'formats' @@ -757,7 +747,7 @@ subroutine inspectB(s, nvar, B, ierr) contains subroutine dumpB - integer :: k, j, k0, k1 + integer :: k, j include 'formats' do k=1,s% nz do j=1,nvar @@ -782,8 +772,6 @@ integer function force_another_iteration(s, iter, itermin) integer, intent(in) :: iter ! have finished this many iterations and have converged integer, intent(in) :: itermin ! this is the requested minimum. iter may be < itermin. - integer :: k, res - include 'formats' if (iter < itermin) then @@ -846,15 +834,15 @@ subroutine set_vars_for_solver(s, nvar, nzlo, nzhi, dt, ierr) skip_set_cz_bdy_mass = .true., & skip_other_cgrav = .true. logical :: do_chem, try_again, do_edit_lnR, report_dx - integer :: i, j, k, kk, klo, khi, i_var, & + integer :: j, k, kk, klo, khi, i_var, & i_lnd, i_lnT, i_lnR, i_lum, i_w, i_Hp, i_v, & i_u, i_alpha_RTI, i_w_div_wc, i_j_rot, & fe56, nvar_chem, species, nz, nvar_hydro real(dp), dimension(:, :), pointer :: xh_start, xa_start integer :: op_err, kbad, & - cnt, max_fixes, loc(2), k_lo, k_hi, k_const_mass - real(dp) :: r2, xavg, du, u00, um1, dx_for_i_var, x_for_i_var, & - dq_sum, xa_err_norm, d_dxdt_dx, min_xa_hard_limit, sum_xa_hard_limit + cnt, max_fixes, loc(2), k_lo, k_hi + real(dp) :: xavg, dx_for_i_var, x_for_i_var, & + dq_sum, d_dxdt_dx, min_xa_hard_limit, sum_xa_hard_limit logical :: do_lnd, do_lnT, do_lnR, do_lum, do_w, & do_u, do_v, do_alpha_RTI, do_w_div_wc, do_j_rot @@ -1122,7 +1110,7 @@ subroutine set_vars_for_solver(s, nvar, nzlo, nzhi, dt, ierr) subroutine set1(k,report,ierr) - use chem_def, only: chem_isos + !use chem_def, only: chem_isos integer, intent(in) :: k logical, intent(in) :: report integer, intent(out) :: ierr @@ -1131,9 +1119,8 @@ subroutine set1(k,report,ierr) ! setting x = xh_start + dx is necessary because of numerical issues. ! we want to ensure that we've calculated the variables using exactly the ! same values for x as will be returned as the final result. - real(dp) :: r2, sum_xa - integer :: j, i, k_below_just_added - real(dp) :: del_t, starting_value, alfa, beta, v, theta + integer :: j, k_below_just_added + real(dp) :: v include 'formats' ierr = 0 @@ -1401,8 +1388,8 @@ subroutine check1_chem( & logical, intent(in) :: report integer, intent(out) :: ierr - integer :: j, species, jmax - real(dp) :: sum_xa, xsum + integer :: j, species + real(dp) :: sum_xa logical :: okay include 'formats' @@ -1490,7 +1477,7 @@ end subroutine check1_chem subroutine dump_struct(s) type (star_info), pointer :: s - integer :: k, j, i + integer :: k, j include 'formats' @@ -1548,7 +1535,7 @@ end subroutine edit_lnR subroutine edit_dlnR_dt_above_k_below_just_added(s, xh_start) type (star_info), pointer :: s real(dp), dimension(:, :) :: xh_start - integer :: k, k_below_just_added + integer :: k_below_just_added real(dp) :: lnR_start k_below_just_added = s% k_below_just_added if (k_below_just_added == 1) return diff --git a/star/private/star_bcyclic.f90 b/star/private/star_bcyclic.f90 index a7e7d1888..a114f5fd6 100644 --- a/star/private/star_bcyclic.f90 +++ b/star/private/star_bcyclic.f90 @@ -22,6 +22,7 @@ module star_bcyclic + !use caliper_mod ! timing with caliper use star_private_def use const_def, only: dp, ln10 use utils_lib, only: set_nan @@ -52,8 +53,8 @@ subroutine bcyclic_factor ( & integer, intent(in) :: iter ! solver iteration number for debugging output integer, intent(out) :: ierr - integer, pointer :: iptr(:,:), nslevel(:), ipivot(:) - integer :: neq, ncycle, nstemp, maxlevels, nlevel, i, j, k + integer, pointer :: nslevel(:), ipivot(:) + integer :: neq, ncycle, nstemp, maxlevels, nlevel, i, k logical :: have_odd_storage real(dp), pointer, dimension(:,:) :: dmat, dmatF real(dp), pointer, dimension(:) :: row_scale_factors, col_scale_factors @@ -75,12 +76,13 @@ subroutine bcyclic_factor ( & ierr = 0 neq = nvar*nz - !$omp simd + !$OMP PARALLEL DO SIMD do i = 1,nvar*neq lblkF1(i) = lblk1(i) dblkF1(i) = dblk1(i) ublkF1(i) = ublk1(i) end do + !$OMP END PARALLEL DO SIMD if (dbg) write(*,*) 'start bcyclic_factor' @@ -121,6 +123,7 @@ subroutine bcyclic_factor ( & if (dbg) write(*,*) 'start factor_cycle' + !call cali_begin_phase('factor_cycle') factor_cycle: do ! perform cyclic-reduction factorization nslevel(nlevel) = nstemp @@ -147,6 +150,7 @@ subroutine bcyclic_factor ( & if (nlevel > maxlevels) exit end do factor_cycle + !call cali_end_phase('factor_cycle') if (dbg) write(*,*) 'done factor_cycle' @@ -217,7 +221,7 @@ subroutine cycle_onestep( & real(dp), pointer, dimension(:,:) :: lnext, unext, lprev, uprev real(dp), pointer, dimension(:) :: mat1 integer :: i, j, shift, min_sz, new_sz, shift1, shift2, nvar2, & - ns, op_err, nmin, kcount, k, ii, jj, kk + ns, op_err, nmin, kcount, k real(dp), pointer, dimension(:) :: row_scale_factors, col_scale_factors character (len=1) :: equed @@ -243,17 +247,20 @@ subroutine cycle_onestep( & end if end if -!$OMP PARALLEL DO private(ns,kcount,shift,shift2,i) SCHEDULE(static,3) +!call cali_begin_phase('co.loop1') +!$OMP PARALLEL DO PRIVATE(ns, shift, shift2, i) COLLAPSE(2) do ns = nmin, nblk, 2 ! copy umat and lmat - kcount = (ns-nmin)/2 + 1 - shift = nvar2*(kcount-1) - shift2 = nvar2*ncycle*(ns-1) - do i=1,nvar2 + do i = 1, nvar2 + ! kcount = (ns-nmin)/2 + 1 + ! shift = nvar2*(kcount-1) + shift = nvar2*(ns-nmin)/2 + shift2 = nvar2*ncycle*(ns-1) s% bcyclic_odd_storage(nlevel)% umat1(shift+i) = ublkF1(shift2+i) s% bcyclic_odd_storage(nlevel)% lmat1(shift+i) = lblkF1(shift2+i) end do end do !$OMP END PARALLEL DO +!call cali_end_phase('co.loop1') if (nvar2*kcount > s% bcyclic_odd_storage(nlevel)% ul_size) then write(*,*) 'nvar2*kcount > ul_size in cycle_onestep' @@ -264,8 +271,8 @@ subroutine cycle_onestep( & if (dbg) write(*,*) 'start lu factorization' ! compute lu factorization of even diagonal blocks nmin = 2 -!$OMP PARALLEL DO SCHEDULE(static,3) & -!$OMP PRIVATE(ipivot,dmat,dmatF,ns,op_err,shift1,shift2,i,j,k,row_scale_factors,col_scale_factors,equed) +!call cali_begin_phase('co.loop2') +!$OMP PARALLEL DO PRIVATE(ipivot,dmat,dmatF,ns,op_err,shift1,shift2,k,row_scale_factors,col_scale_factors,equed) do ns = nmin, nblk, 2 k = ncycle*(ns-1) + 1 @@ -289,6 +296,7 @@ subroutine cycle_onestep( & end do !$OMP END PARALLEL DO +!call cali_end_phase('co.loop2') if (ierr /= 0) then !write(*,*) 'factorization failed in bcyclic' return @@ -296,6 +304,7 @@ subroutine cycle_onestep( & if (dbg) write(*,*) 'done lu factorization; start solve' +!call cali_begin_phase('co.loop3') !$OMP PARALLEL DO SCHEDULE(static,3) & !$OMP PRIVATE(ns,k,shift1,shift2,ipivot,dmat,dmatF,umat,lmat,mat1,i,j,row_scale_factors,col_scale_factors,equed,op_err) do ns = nmin, nblk, 2 @@ -320,6 +329,7 @@ subroutine cycle_onestep( & end if do j=1,nvar + !$OMP SIMD do i=1,nvar lmat(i,j) = -lmat(i,j) end do @@ -335,6 +345,7 @@ subroutine cycle_onestep( & end if do j=1,nvar + !$OMP SIMD do i=1,nvar umat(i,j) = -umat(i,j) end do @@ -342,6 +353,7 @@ subroutine cycle_onestep( & end do !$OMP END PARALLEL DO +!call cali_end_phase('co.loop3') if (dbg) write(*,*) 'done solve' if (ierr /= 0) return @@ -349,9 +361,10 @@ subroutine cycle_onestep( & ! compute new odd blocks in terms of even block factors ! compute odd hatted matrix elements except at boundaries nmin = 1 +!call cali_begin_phase('co.loop4') !$OMP PARALLEL DO SCHEDULE(static,3) & -!$OMP PRIVATE(i,ns,shift2,dmat,umat,lmat,lnext,unext,lprev,uprev,kcount,shift,umat0,lmat0,k) - do i= 1, 3*(1+(nblk-nmin)/2) +!$OMP PRIVATE(i,ns,shift2,dmat,umat,lmat,lnext,unext,lprev,uprev,shift,umat0,lmat0,k) + do i = 1, 3*(1+(nblk-nmin)/2) ns = 2*((i-1)/3) + nmin k = ncycle*(ns-1) + 1 @@ -376,8 +389,9 @@ subroutine cycle_onestep( & uprev(1:nvar,1:nvar) => ublkF1(shift2+1:shift2+nvar2) end if - kcount = 1+(ns-nmin)/2 - shift = nvar2*(kcount-1) + !kcount = 1+(ns-nmin)/2 + !shift = nvar2*(kcount-1) + shift = nvar2*(ns-nmin)/2 lmat0(1:nvar,1:nvar) => & s% bcyclic_odd_storage(nlevel)% lmat1(shift+1:shift+nvar2) umat0(1:nvar,1:nvar) => & @@ -411,6 +425,7 @@ subroutine cycle_onestep( & end do !$OMP END PARALLEL DO +!call cali_end_phase('co.loop4') if (dbg) write(*,*) 'done cycle_onestep' end subroutine cycle_onestep @@ -420,7 +435,7 @@ subroutine cycle_rhs( & s, nz, nblk, nvar, ncycle, nlevel, & dblk1, dblkF1, soln1, ipivot1, & row_scale_factors1, col_scale_factors1, equed1, ierr) - use chem_def, only: chem_isos + !use chem_def, only: chem_isos type (star_info), pointer :: s integer, intent(in) :: nz, nblk, nvar, ncycle, nlevel real(dp), pointer, intent(in), dimension(:) :: & @@ -430,13 +445,12 @@ subroutine cycle_rhs( & character (len=nz) :: equed1 integer, intent(out) :: ierr - integer :: i, k, ns, op_err, nmin, kcount, shift, shift1, shift2, nvar2 + integer :: k, ns, op_err, nmin, kcount, shift, shift1, shift2, nvar2 integer, pointer :: ipivot(:) real(dp), pointer, dimension(:,:) :: dmatF, dmat, umat, lmat real(dp), pointer, dimension(:) :: X, Xprev, Xnext real(dp), pointer, dimension(:) :: row_scale_factors, col_scale_factors character (len=1) :: equed - logical :: okay include 'formats' @@ -445,8 +459,9 @@ subroutine cycle_rhs( & ! compute dblk[-1]*brhs for even indices and store in brhs(even) nmin = 2 op_err = 0 -!$OMP PARALLEL DO SCHEDULE(static,3) & -!$OMP PRIVATE(ns,shift1,ipivot,shift2,k,dmat,dmatF,X,row_scale_factors,col_scale_factors,equed,i,okay,op_err) +!call cali_begin_phase('cr.loop1') +!$OMP PARALLEL DO & +!$OMP PRIVATE(ns,shift1,ipivot,shift2,k,dmat,dmatF,X,row_scale_factors,col_scale_factors,equed,op_err) do ns = nmin, nblk, 2 k = ncycle*(ns-1) + 1 shift1 = nvar*(k-1) @@ -467,19 +482,21 @@ subroutine cycle_rhs( & end do !$OMP END PARALLEL DO +!call cali_end_phase('cr.loop1') if (ierr /= 0) return ! compute odd (hatted) sources (b-hats) for interior rows nmin = 1 kcount = 0 -!$OMP PARALLEL DO SCHEDULE(static,3) & -!$OMP PRIVATE(ns,shift1,X,kcount,shift,umat,lmat,Xnext,Xprev) +!call cali_begin_phase('cr.loop2') +!$OMP PARALLEL DO PRIVATE(ns,shift1,X,shift,umat,lmat,Xnext,Xprev) do ns = nmin, nblk, 2 shift1 = nvar*ncycle*(ns-1) X(1:nvar) => soln1(shift1+1:shift1+nvar) - kcount = 1+(ns-nmin)/2 - shift = nvar2*(kcount-1) + !kcount = 1+(ns-nmin)/2 + !shift = nvar2*(kcount-1) + shift = nvar2*(ns-nmin)/2 umat(1:nvar,1:nvar) => & s% bcyclic_odd_storage(nlevel)% umat1(shift+1:shift+nvar2) lmat(1:nvar,1:nvar) => & @@ -504,6 +521,7 @@ subroutine cycle_rhs( & end if end do !$OMP END PARALLEL DO +!call cali_end_phase('cr.loop2') if (nvar2*kcount > s% bcyclic_odd_storage(nlevel)% ul_size) then write(*,*) 'nvar2*kcount > ul_size in cycle_rhs' @@ -529,21 +547,21 @@ subroutine cycle_solve( & real(dp), pointer, intent(inout) :: soln1(:) real(dp), pointer :: umat(:,:), lmat(:,:), bprev(:), bnext(:), bptr(:) - real(dp), pointer, dimension(:) :: bprevr, bnextr - integer :: shift1, shift2, nvar2, ns, ierr, nmin, i, j + integer :: shift1, shift2, nvar2, ns, nmin include 'formats' nvar2 = nvar*nvar nmin = 2 +!call cali_begin_phase('cycle_solve') !$OMP PARALLEL DO SCHEDULE(static,3) & !$OMP PRIVATE(ns,shift1,bptr,shift2,lmat,bprev,umat,bnext) do ns = nmin, nblk, 2 shift1 = ncycle*nvar*(ns-1) bptr(1:nvar) => soln1(shift1+1:shift1+nvar) shift2 = nvar*shift1 - lmat(1:nvar,1:nvar) => lblkF1(shift2+1:shift2+nvar2) if (ns > 1) then + lmat(1:nvar,1:nvar) => lblkF1(shift2+1:shift2+nvar2) shift1 = ncycle*nvar*(ns-2) bprev(1:nvar) => soln1(shift1+1:shift1+nvar) end if @@ -564,6 +582,7 @@ subroutine cycle_solve( & end if end do !$OMP END PARALLEL DO +!call cali_end_phase('cycle_solve') end subroutine cycle_solve @@ -581,11 +600,6 @@ subroutine dense_factor(s, k, nvar, mtx, mtxF, ipivot, & real(dp) :: min_rcond_from_DGESVX, rpgfac integer :: k_min_rcond_from_DGESVX integer, intent(out) :: ierr - logical :: singular - integer :: i, j - real(dp), pointer :: work(:) - integer, pointer :: iwork(:) - real(dp) :: anorm, rcond include 'formats' ierr = 0 @@ -655,11 +669,11 @@ subroutine factor_with_DGESVX end do if (s% report_min_rcond_from_DGESXV .and. rcond < min_rcond_from_DGESVX) then - !$OMP critical (bcyclic_dense_factor_crit) + !$OMP CRITICAL (bcyclic_dense_factor_crit) min_rcond_from_DGESVX = rcond k_min_rcond_from_DGESVX = k rpgfac = work(1) - !$OMP end critical (bcyclic_dense_factor_crit) + !$OMP END CRITICAL (bcyclic_dense_factor_crit) end if end subroutine factor_with_DGESVX @@ -680,12 +694,11 @@ subroutine bcyclic_solve ( & character (len=nz) :: equed1 integer, intent(out) :: ierr - integer, pointer :: iptr(:,:), nslevel(:), ipivot(:) + integer, pointer :: nslevel(:), ipivot(:) integer :: ncycle, nstemp, maxlevels, nlevel, nvar2, i real(dp), pointer, dimension(:,:) :: dmat, dmatF real(dp), pointer, dimension(:) :: row_scale_factors, col_scale_factors character (len=1) :: equed - logical :: okay include 'formats' @@ -693,9 +706,11 @@ subroutine bcyclic_solve ( & if (dbg) write(*,*) 'start bcyclic_solve' ! copy B to soln + !$OMP PARALLEL DO SIMD do i=1,nvar*nz soln1(i) = B1(i) end do + !$OMP END PARALLEL DO SIMD ierr = 0 @@ -841,6 +856,7 @@ subroutine solve_with_DGESVX nrhs = nvar do i=1,nvar + !$OMP SIMD do j=1,nvar a(i,j) = mtx(i,j) af(i,j) = mtxF(i,j) @@ -867,6 +883,7 @@ subroutine solve_with_DGESVX end if do i=1,nvar + !$OMP SIMD do j=1,nvar X_mtx(i,j) = x(i,j) end do @@ -917,6 +934,7 @@ subroutine solve1_with_DGESVX include 'formats' do i=1,nvar + !$OMP SIMD do j=1,nvar a(i,j) = mtx(i,j) af(i,j) = mtxF(i,j) @@ -939,6 +957,7 @@ subroutine solve1_with_DGESVX equed, r, c, b, nvar, x, nvar, rcond, ferr, berr, & work, iwork, ierr) + !$OMP SIMD do i=1,nvar X_vec(i) = x(i,1) end do diff --git a/star/private/star_job_ctrls_io.f90 b/star/private/star_job_ctrls_io.f90 index 2d2dfce59..fffee3165 100644 --- a/star/private/star_job_ctrls_io.f90 +++ b/star/private/star_job_ctrls_io.f90 @@ -565,7 +565,6 @@ recursive subroutine read_star_job_file(s, filename, level, ierr) integer, intent(in) :: level integer, intent(out) :: ierr logical, dimension(max_extra_inlists) :: read_extra - character (len=strlen) :: message character (len=strlen), dimension(max_extra_inlists) :: extra integer :: unit, i diff --git a/star/private/star_profile_def.f90 b/star/private/star_profile_def.f90 index 8f3e58563..f50e1df2e 100644 --- a/star/private/star_profile_def.f90 +++ b/star/private/star_profile_def.f90 @@ -1431,7 +1431,7 @@ end subroutine profile_column_names_shutdown integer function do_get_profile_id(cname) - use utils_lib + use utils_lib, only: integer_dict_lookup character (len=*), intent(in) :: cname ! returns id for the profile column if there is a matching name ! returns 0 otherwise. diff --git a/star/private/star_solver.f90 b/star/private/star_solver.f90 index 333db6ed1..0d435bf01 100644 --- a/star/private/star_solver.f90 +++ b/star/private/star_solver.f90 @@ -121,10 +121,9 @@ subroutine do_solver( & real(dp), dimension(:,:), pointer :: dxsave=>null(), ddxsave=>null(), B=>null(), grad_f=>null(), soln=>null() real(dp), dimension(:), pointer :: dxsave1=>null(), ddxsave1=>null(), B1=>null(), grad_f1=>null(), & row_scale_factors1=>null(), col_scale_factors1=>null(), soln1=>null(), save_ublk1=>null(), save_dblk1=>null(), save_lblk1=>null() - real(dp), dimension(:,:), pointer :: rhs=>null() + real(dp), dimension(:,:), pointer :: rhs=>null() integer, dimension(:), pointer :: ipiv1=>null() - real(dp), dimension(:,:), pointer :: & - ddx=>null(), xgg=>null(), ddxd=>null(), ddxdd=>null(), xder=>null(), equsave=>null() + real(dp), dimension(:,:), pointer :: ddx=>null(), xder=>null() integer, dimension(:), pointer :: ipiv_blk1=>null() character (len=s%nz) :: equed1 @@ -136,19 +135,19 @@ subroutine do_solver( & real(dp) :: & coeff, f, slope, residual_norm, max_residual, & corr_norm_min, resid_norm_min, correction_factor, temp_correction_factor, & - correction_norm, corr_norm_initial, max_correction, slope_extra, & + correction_norm, max_correction, & tol_residual_norm, tol_max_residual, & tol_residual_norm2, tol_max_residual2, & tol_residual_norm3, tol_max_residual3, & tol_abs_slope_min, tol_corr_resid_product, & min_corr_coeff, max_corr_min, max_resid_min, max_abs_correction - integer :: nz, iter, max_tries, zone, tiny_corr_cnt, i, j, k, & + integer :: nz, iter, max_tries, tiny_corr_cnt, i, & force_iter_value, iter_for_resid_tol2, iter_for_resid_tol3, & max_corr_k, max_corr_j, max_resid_k, max_resid_j - integer(8) :: test_time1, time0, time1, clock_rate + integer(8) :: time0 character (len=strlen) :: err_msg logical :: first_try, dbg_msg, passed_tol_tests, & - doing_extra, okay, disabled_resid_tests, pass_resid_tests, & + doing_extra, disabled_resid_tests, pass_resid_tests, & pass_corr_tests_without_coeff, pass_corr_tests_with_coeff integer, parameter :: num_tol_msgs = 15 @@ -632,10 +631,8 @@ subroutine solver_test_partials(nvar, xder, ierr) real(dp), pointer, dimension(:,:) :: xder ! (nvar, nz) integer, intent(out) :: ierr - integer :: j, k, i_var, i_var_sink, i_equ, k_off, cnt_00, cnt_m1, cnt_p1, k_lo, k_hi + integer :: j, k, k_lo, k_hi real(dp), dimension(:,:), pointer :: save_equ, save_dx - real(dp) :: dvar, dequ, dxtra, & - dx_0, dvardx, dvardx_0, xdum, err logical :: testing_partial include 'formats' @@ -732,7 +729,7 @@ subroutine prepare_solver_matrix(nvar, xder, ierr) integer, intent(in) :: nvar real(dp), pointer, dimension(:,:) :: xder ! (nvar, nz) integer, intent(out) :: ierr - integer :: i, j, nz, neqns + integer :: nz, neqns include 'formats' ierr = 0 nz = s% nz @@ -760,12 +757,11 @@ subroutine adjust_correction( & character (len=*), intent(out) :: err_msg integer, intent(out) :: ierr - integer :: i, j, k, iter, k_max_corr, i_max_corr - character (len=strlen) :: message + integer :: i, k, iter logical :: first_time - real(dp) :: a1, alam, alam2, alamin, a2, disc, f2, & - rhs1, rhs2, temp, test, tmplam, max_corr, fold, min_corr_coeff - real(dp) :: frac, f_target + real(dp) :: a1, alam, alam2, a2, disc, f2, & + rhs1, rhs2, tmplam, fold, min_corr_coeff + real(dp) :: f_target logical :: skip_eval_f, dbg_adjust real(dp), parameter :: alf = 1d-2 ! ensures sufficient decrease in f @@ -1005,8 +1001,8 @@ end subroutine apply_coeff logical function solve_equ() use star_utils, only: start_time, update_time use rsp_def, only: NV, MAX_NZN - integer :: i, k, ierr - real(dp) :: ferr, berr, total_time + integer :: i, ierr + real(dp) :: total_time include 'formats' ierr = 0 @@ -1016,30 +1012,33 @@ logical function solve_equ() call start_time(s, time0, total_time) end if - !$omp simd + !$OMP PARALLEL DO SIMD do i=1,neq b1(i) = -equ1(i) end do + !$OMP END PARALLEL DO SIMD if (s% use_DGESVX_in_bcyclic) then - !$omp simd + !$OMP PARALLEL DO SIMD do i = 1, nvar*nvar*nz save_ublk1(i) = ublk1(i) save_dblk1(i) = dblk1(i) save_lblk1(i) = lblk1(i) end do + !$OMP END PARALLEL DO SIMD end if call factor_mtx(ierr) if (ierr == 0) call solve_mtx(ierr) if (s% use_DGESVX_in_bcyclic) then - !$omp simd + !$OMP PARALLEL DO SIMD do i = 1, nvar*nvar*nz ublk1(i) = save_ublk1(i) dblk1(i) = save_dblk1(i) lblk1(i) = save_lblk1(i) end do + !$OMP END PARALLEL DO SIMD end if if (s% doing_timing) then @@ -1148,7 +1147,6 @@ subroutine test_equ_partials(s, & i_equ, i_var, i_var_sink, i_var_xa_index, i_var_sink_xa_index, k real(dp), pointer, dimension(:,:) :: save_dx, save_equ integer, intent(out) :: ierr - real(dp) :: dvardx_0 integer :: i, j_var_xa_index, j_var_sink_xa_index include 'formats' if (i_equ /= 0) then @@ -1615,7 +1613,7 @@ real(dp) function dfridr(s, & ! an estimate of the error in the first derivative is returned in err. integer, parameter :: ntab = 20 integer :: i,j - real(dp) :: x,errt,fac,hh,a(ntab,ntab),xdum,ydum,f1,f2 + real(dp) :: errt,fac,hh,a(ntab,ntab),f1,f2 real(dp), parameter :: con2=2d0, con=sqrt(con2), big=1d50, safe=2d0 include 'formats' dfridr = 0d0 @@ -1801,8 +1799,7 @@ subroutine pointers(ierr) integer, intent(out) :: ierr - integer :: i, j - character (len=strlen) :: err_msg + integer :: i ierr = 0 @@ -1920,7 +1917,7 @@ end subroutine cleanup real(dp) function eval_slope(nvar, nz, grad_f, B) integer, intent(in) :: nvar, nz real(dp), intent(in), dimension(:,:) :: grad_f, B - integer :: k, i + integer :: i eval_slope = 0 do i=1,nvar eval_slope = eval_slope + dot_product(grad_f(i,1:nz),B(i,1:nz)) diff --git a/star/private/star_utils.f90 b/star/private/star_utils.f90 index 289b781b3..365b16f92 100644 --- a/star/private/star_utils.f90 +++ b/star/private/star_utils.f90 @@ -280,7 +280,7 @@ subroutine set_m_grav_and_grav(s) ! using mass_corrections s% grav(k) = s% cgrav(k)*s% m_grav(k)/(r*r) end do end subroutine set_m_grav_and_grav - + subroutine get_r_and_lnR_from_xh(s, k, r, lnR, xh_in) type (star_info), pointer :: s @@ -296,7 +296,7 @@ subroutine get_r_and_lnR_from_xh(s, k, r, lnR, xh_in) lnR = xh(s% i_lnR,k) r = exp(lnR) end subroutine get_r_and_lnR_from_xh - + real(dp) function get_r_from_xh(s, k, xh_in) result(r) type (star_info), pointer :: s @@ -310,7 +310,7 @@ real(dp) function get_r_from_xh(s, k, xh_in) result(r) end if r = exp(xh(s% i_lnR,k)) end function get_r_from_xh - + real(dp) function get_lnR_from_xh(s, k, xh_in) result(lnR) type (star_info), pointer :: s @@ -324,7 +324,7 @@ real(dp) function get_lnR_from_xh(s, k, xh_in) result(lnR) end if lnR = xh(s% i_lnR,k) end function get_lnR_from_xh - + subroutine store_r_in_xh(s, k, r, xh_in) type (star_info), pointer :: s integer, intent(in) :: k @@ -338,7 +338,7 @@ subroutine store_r_in_xh(s, k, r, xh_in) end if xh(s% i_lnR,k) = log(r) end subroutine store_r_in_xh - + subroutine store_lnR_in_xh(s, k, lnR, xh_in) type (star_info), pointer :: s @@ -353,7 +353,7 @@ subroutine store_lnR_in_xh(s, k, lnR, xh_in) end if xh(s% i_lnR,k) = lnR end subroutine store_lnR_in_xh - + subroutine get_T_and_lnT_from_xh(s, k, T, lnT, xh_in) type (star_info), pointer :: s @@ -369,7 +369,7 @@ subroutine get_T_and_lnT_from_xh(s, k, T, lnT, xh_in) lnT = xh(s% i_lnT,k) T = exp(lnT) end subroutine get_T_and_lnT_from_xh - + real(dp) function get_T_from_xh(s, k, xh_in) result(T) type (star_info), pointer :: s @@ -383,7 +383,7 @@ real(dp) function get_T_from_xh(s, k, xh_in) result(T) end if T = exp(xh(s% i_lnT,k)) end function get_T_from_xh - + real(dp) function get_lnT_from_xh(s, k, xh_in) result(lnT) type (star_info), pointer :: s @@ -397,7 +397,7 @@ real(dp) function get_lnT_from_xh(s, k, xh_in) result(lnT) end if lnT = xh(s% i_lnT,k) end function get_lnT_from_xh - + subroutine store_T_in_xh(s, k, T, xh_in) type (star_info), pointer :: s @@ -412,7 +412,7 @@ subroutine store_T_in_xh(s, k, T, xh_in) end if xh(s% i_lnT,k) = log(T) end subroutine store_T_in_xh - + subroutine store_lnT_in_xh(s, k, lnT, xh_in) type (star_info), pointer :: s @@ -427,7 +427,7 @@ subroutine store_lnT_in_xh(s, k, lnT, xh_in) end if xh(s% i_lnT,k) = lnT end subroutine store_lnT_in_xh - + subroutine get_rho_and_lnd_from_xh(s, k, rho, lnd, xh_in) type (star_info), pointer :: s @@ -444,7 +444,7 @@ subroutine get_rho_and_lnd_from_xh(s, k, rho, lnd, xh_in) rho = exp(lnd) end subroutine get_rho_and_lnd_from_xh - + subroutine store_rho_in_xh(s, k, rho, xh_in) type (star_info), pointer :: s integer, intent(in) :: k @@ -458,7 +458,7 @@ subroutine store_rho_in_xh(s, k, rho, xh_in) end if xh(s% i_lnd,k) = log(rho) end subroutine store_rho_in_xh - + subroutine store_lnd_in_xh(s, k, lnd, xh_in) type (star_info), pointer :: s @@ -479,7 +479,7 @@ subroutine use_xh_to_set_rho_to_dm_div_dV(s, ierr) type (star_info), pointer :: s integer, intent(out) :: ierr integer :: k, nz, i_lnR, i_lnd - real(dp) :: rL, rR, dm, dV, rho, old_lnd, new_lnd + real(dp) :: rL, rR, dm, dV, rho include 'formats' ierr = 0 i_lnR = s% i_lnR @@ -719,7 +719,7 @@ real(dp) function get_dtau1(s, ierr) type (star_info), pointer :: s integer, intent(out) :: ierr integer :: k - real(dp) :: kap, kap_min + real(dp) :: kap include 'formats' ierr = 0 k = 1 @@ -744,7 +744,7 @@ subroutine get_tau(s, ierr) type (star_info), pointer :: s integer, intent(out) :: ierr ! tau(k) is optical depth at outer boundary of cell k - real(dp) :: dtau, dr, Z, kap_min, kap, dm_sum, L_sum + real(dp) :: dtau, kap, dm_sum, L_sum integer :: k logical, parameter :: dbg = .true. include 'formats' @@ -900,7 +900,7 @@ real(dp) function get_tau_at_r(s, r, ierr) type (star_info), pointer :: s real(dp), intent(in) :: r integer, intent(out) :: ierr - real(dp) :: dtau, dr, tau_m1, tau_00 + real(dp) :: dtau, tau_m1, tau_00 integer :: k logical, parameter :: dbg = .false. include 'formats' @@ -921,7 +921,7 @@ real(dp) function get_tau_at_r(s, r, ierr) dtau = s% dm(k)*s% opacity(k)/(pi4*s% rmid(k)*s% rmid(k)) end do end function get_tau_at_r - + subroutine set_phot_info(s) use atm_lib, only: atm_black_body_T @@ -1153,9 +1153,8 @@ subroutine set_abs_du_div_cs(s) s% abs_du_div_cs(k) = 1d99 end do end if - - end subroutine set_abs_du_div_cs + end subroutine set_abs_du_div_cs subroutine get_shock_info(s) @@ -1321,9 +1320,8 @@ end subroutine get_shock_location_info real(dp) function min_dr_div_cs(s,min_k) ! seconds type (star_info), pointer :: s integer, intent(out) :: min_k - integer :: k, nz, j, k_min - real(dp) :: dr, dt, D, abs_du, cs, min_q, max_q, & - min_abs_u_div_cs, min_abs_du_div_cs, r00, rp1, dr_div_cs, remnant_mass + integer :: k, nz, k_min + real(dp) :: dr, dt, min_q, max_q, min_abs_u_div_cs, min_abs_du_div_cs, r00, rp1, dr_div_cs, remnant_mass include 'formats' nz = s% nz min_k = nz @@ -1373,7 +1371,7 @@ real(dp) function min_dr_div_cs(s,min_k) ! seconds end if end do end function min_dr_div_cs - + subroutine reset_epsnuc_vectors(s) type (star_info), pointer :: s @@ -1446,7 +1444,7 @@ subroutine save_eqn_residual_info(s, k, nvar, i_eqn, resid, str, ierr) call store_partials( & s, k, i_eqn, nvar, d_dm1, d_d00, d_dp1, str, ierr) end subroutine save_eqn_residual_info - + subroutine unpack_residual_partials(s, k, nvar, i_eqn, & @@ -1467,7 +1465,6 @@ subroutine unpack_residual_partials(s, k, nvar, i_eqn, & djrot_m1, djrot_00, djrot_p1, & dxtra1_m1, dxtra1_00, dxtra1_p1, & dxtra2_m1, dxtra2_00, dxtra2_p1 - integer :: j include 'formats' @@ -1504,7 +1501,7 @@ subroutine unpack1(j, dvar_m1, dvar_00, dvar_p1) end subroutine unpack1 end subroutine unpack_residual_partials - + subroutine store_partials(s, k, i_eqn, nvar, d_dm1, d_d00, d_dp1, str, ierr) type (star_info), pointer :: s integer, intent(in) :: k, i_eqn, nvar @@ -1607,7 +1604,7 @@ end function tau_eff real(dp) function eval_Ledd(s, ierr) type (star_info), pointer :: s integer, intent(out) :: ierr - real(dp) :: dtau1, dtau, dr, tau, dqsum, Ledd_sum + real(dp) :: dtau1, dtau, tau, dqsum, Ledd_sum integer :: k logical, parameter :: dbg = .false. include 'formats' @@ -1750,12 +1747,12 @@ real(dp) function total_times(s) s% time_set_mixing_info end function total_times - + real(dp) function get_remnant_mass(s) type (star_info), pointer :: s get_remnant_mass = s% m(1) - get_ejecta_mass(s) end function get_remnant_mass - + real(dp) function get_ejecta_mass(s) use num_lib, only: find0 @@ -1971,15 +1968,14 @@ real(dp) function get_Lrad_div_Ledd(s,k) result(L_rad_div_Ledd) L_rad_div_Ledd = & -(area*area*crad*(del_T4/del_m)/3)/(pi4*s% cgrav(j)*s% m_grav(j)) end function get_Lrad_div_Ledd - + real(dp) function cell_start_specific_KE(s,k) type (star_info), pointer :: s integer, intent(in) :: k - real(dp) :: ke cell_start_specific_KE = cell_start_specific_KE_qp(s,k) end function cell_start_specific_KE - + real(qp) function cell_start_specific_KE_qp(s,k) ! for consistency with dual cells at faces, use instead of **2 @@ -2008,16 +2004,15 @@ real(qp) function cell_start_specific_KE_qp(s,k) cell_start_specific_KE_qp = 0d0 end if end function cell_start_specific_KE_qp - + real(dp) function cell_specific_KE(s,k,d_dv00,d_dvp1) type (star_info), pointer :: s integer, intent(in) :: k real(dp), intent(out) :: d_dv00, d_dvp1 - real(dp) :: v2, dv2_dv00, dv2_dvp1 cell_specific_KE = cell_specific_KE_qp(s,k,d_dv00,d_dvp1) end function cell_specific_KE - + real(qp) function cell_specific_KE_qp(s,k,d_dv00,d_dvp1) ! for consistency with dual cells at faces, use instead of **2 @@ -2057,7 +2052,7 @@ real(qp) function cell_specific_KE_qp(s,k,d_dv00,d_dvp1) d_dvp1 = 0d0 end if end function cell_specific_KE_qp - + real(dp) function cell_specific_PE(s,k,d_dlnR00,d_dlnRp1) type (star_info), pointer :: s @@ -2065,7 +2060,7 @@ real(dp) function cell_specific_PE(s,k,d_dlnR00,d_dlnRp1) real(dp), intent(out) :: d_dlnR00,d_dlnRp1 cell_specific_PE = cell_specific_PE_qp(s,k,d_dlnR00,d_dlnRp1) end function cell_specific_PE - + real(qp) function cell_specific_PE_qp(s,k,d_dlnR00,d_dlnRp1) ! for consistency with dual cells at faces, _cntr => (m(k)/r(k) + m(k+1)/r(k+1))/2 /= m_cntr/r_cntr @@ -2113,14 +2108,14 @@ real(qp) function cell_specific_PE_qp(s,k,d_dlnR00,d_dlnRp1) call mesa_error(__FILE__,__LINE__,'cell_specific_PE') end if end function cell_specific_PE_qp - + real(dp) function cell_start_specific_PE(s,k) type (star_info), pointer :: s integer, intent(in) :: k cell_start_specific_PE = cell_start_specific_PE_qp(s,k) end function cell_start_specific_PE - + real(dp) function cell_start_specific_PE_qp(s,k) ! for consistency with dual cells at faces, _cntr => (m(k)/r(k) + m(k+1)/r(k+1))/2 /= m_cntr/r_cntr @@ -2161,7 +2156,7 @@ real(dp) function cell_start_specific_PE_qp(s,k) call mesa_error(__FILE__,__LINE__,'cell_start_specific_PE_qp') end if end function cell_start_specific_PE_qp - + real(dp) function cell_specific_rotational_energy(s,k) type (star_info), pointer :: s @@ -2176,7 +2171,7 @@ real(dp) function cell_specific_rotational_energy(s,k) cell_specific_rotational_energy = 0.5d0*(e_p1 + e_00) end function cell_specific_rotational_energy - + subroutine get_dke_dt_dpe_dt(s, k, dt, & dke_dt, d_dkedt_dv00, d_dkedt_dvp1, & dpe_dt, d_dpedt_dlnR00, d_dpedt_dlnRp1, ierr) @@ -2189,7 +2184,6 @@ subroutine get_dke_dt_dpe_dt(s, k, dt, & integer, intent(out) :: ierr real(dp) :: PE_start, PE_new, KE_start, KE_new, q1 real(dp) :: dpe_dlnR00, dpe_dlnRp1, dke_dv00, dke_dvp1 - integer :: nz include 'formats' ierr = 0 ! rate of change in specific PE (erg/g/s) @@ -2207,7 +2201,7 @@ subroutine get_dke_dt_dpe_dt(s, k, dt, & d_dkedt_dv00 = dke_dv00/dt d_dkedt_dvp1 = dke_dvp1/dt end subroutine get_dke_dt_dpe_dt - + real(dp) function eval_deltaM_total_from_profile( & deltaM, premesh_dm, profile) @@ -2231,7 +2225,7 @@ real(dp) function eval_deltaM_total_from_profile( & end do eval_deltaM_total_from_profile = total end function eval_deltaM_total_from_profile - + real(dp) function cell_specific_total_energy(s, k) result(cell_total) type (star_info), pointer :: s @@ -2247,7 +2241,7 @@ real(dp) function cell_specific_total_energy(s, k) result(cell_total) if (s% RSP2_flag) cell_total = cell_total + pow2(s% w(k)) if (s% rsp_flag) cell_total = cell_total + s% RSP_Et(k) end function cell_specific_total_energy - + subroutine eval_integrated_total_energy_profile(s, arr, direction, ierr) type (star_info), pointer :: s @@ -2291,8 +2285,7 @@ subroutine eval_deltaM_total_energy_integrals( & total_radial_kinetic_energy, total_rotational_kinetic_energy, & total_turbulent_energy, sum_total integer :: k - real(dp) :: rR, rL, rC, dVR, dV, dm, m_cntr, rho, egas, v, sum_dm, & - cell_total, cell1, d_dv00, d_dvp1, d_dlnR00, d_dlnRp1 + real(dp) :: dm, sum_dm, cell_total, cell1, d_dv00, d_dvp1, d_dlnR00, d_dlnRp1 include 'formats' total_internal_energy = 0d0 @@ -2356,8 +2349,7 @@ subroutine eval_total_energy_profile(s, total_energy_profile) real(dp), intent(out), dimension(:) :: total_energy_profile integer :: k - real(dp) :: rR, rL, rC, dVR, dV, dm, m_cntr, rho, egas, v, & - cell_total, cell1, d_dv00, d_dvp1, d_dlnR00, d_dlnRp1 + real(dp) :: dm, cell_total, cell1, d_dv00, d_dvp1, d_dlnR00, d_dlnRp1 include 'formats' do k=1, s%nz @@ -2388,7 +2380,7 @@ subroutine eval_total_energy_profile(s, total_energy_profile) end do end subroutine eval_total_energy_profile - + real(dp) function eval_cell_section_total_energy( & s, klo, khi) result(sum_total) @@ -2549,7 +2541,7 @@ logical function after_C_burn(s, c12_limit) s% xa(c12,nz) > c12_limit) return after_C_burn = .true. end function after_C_burn - + integer function lookup_nameofvar(s, namestr) type (star_info), pointer :: s @@ -2563,7 +2555,7 @@ integer function lookup_nameofvar(s, namestr) end if end do end function lookup_nameofvar - + integer function lookup_nameofequ(s, namestr) type (star_info), pointer :: s @@ -2659,7 +2651,7 @@ subroutine weighed_smoothing(dd, n, ns, preserve_sign, ddold) end subroutine weighed_smoothing - + subroutine threshold_smoothing (dd, dd_thresh, n, ns, preserve_sign, ddold) ! Same as weighed_smoothing, but only smooth contiguous regions where |dd| >= dd_thresh @@ -2717,7 +2709,7 @@ subroutine threshold_smoothing (dd, dd_thresh, n, ns, preserve_sign, ddold) return end subroutine threshold_smoothing - + real(dp) function eval_kh_timescale(G,M,R,L) result(kh) real(dp), intent(in) :: G,M,R,L @@ -2729,7 +2721,6 @@ real(dp) function eval_kh_timescale(G,M,R,L) result(kh) end function eval_kh_timescale - real(dp) function yrs_for_init_timestep(s) type (star_info), pointer :: s if (s% initial_mass <= 1) then @@ -2744,8 +2735,7 @@ subroutine set_phase_of_evolution(s) ! from evolve after call do_report use rates_def, only: i_rate use chem_def type (star_info), pointer :: s - real(dp) :: power_he_burn, power_c_burn, power_neutrinos, & - center_h1, center_he4 + real(dp) :: center_h1, center_he4 integer :: nz, j include 'formats' nz = s% nz @@ -2753,7 +2743,6 @@ subroutine set_phase_of_evolution(s) ! from evolve after call do_report s% phase_of_evolution = phase_starting if (s%doing_first_model_of_run) return - j = s% net_iso(ih1) if (j > 0) then center_h1 = center_avg_x(s,j) @@ -2803,8 +2792,7 @@ subroutine set_phase_of_evolution(s) ! from evolve after call do_report end subroutine set_phase_of_evolution - - + subroutine set_rv_info(s,k) type (star_info), pointer :: s integer, intent(in) :: k @@ -2819,7 +2807,7 @@ subroutine set_rv_info(s,k) s% vc(k) = 0d0 end if end subroutine set_rv_info - + subroutine show_matrix(s, dmat, nvar) type (star_info), pointer :: s @@ -2850,9 +2838,6 @@ subroutine e00(s,i,j,k,nvar,v) type (star_info), pointer :: s integer, intent(in) :: i, j, k, nvar real(dp), intent(in) :: v - integer :: b, q, v00 - real(qp) :: q1, q2 - !logical, parameter :: dbg = .true. logical, parameter :: dbg = .false. include 'formats' @@ -2908,9 +2893,6 @@ subroutine em1(s,i,j,k,nvar,v) type (star_info), pointer :: s integer, intent(in) :: i, j, k, nvar real(dp), intent(in) :: v - integer :: b, q, vm1 - real(qp) :: q1, q2 - !logical, parameter :: dbg = .true. logical, parameter :: dbg = .false. if (k == 1) return include 'formats' @@ -2963,9 +2945,6 @@ subroutine ep1(s,i,j,k,nvar,v) type (star_info), pointer :: s integer, intent(in) :: i, j, k, nvar real(dp), intent(in) :: v - integer :: b, q, vp1 - real(qp) :: q1, q2 - !logical, parameter :: dbg = .true. logical, parameter :: dbg = .false. include 'formats' @@ -3078,7 +3057,6 @@ end subroutine no_data_for_extra_profile_columns ! c0 holds a's, c1 holds b's, and c2 holds c's. - subroutine get1_lpp(k, nz, & dm1, d00, dp1, vm1, v00, vp1, quadratic, monotonic, dbg, c0, c1, c2) integer, intent(in) :: k, nz @@ -3287,7 +3265,7 @@ subroutine calc_Ptot_ad_tw( & if (s% use_other_pressure) Ptot_ad = Ptot_ad + s% extra_pressure(k) end subroutine calc_Ptot_ad_tw - + subroutine get_Pvsc_ad(s, k, Pvsc, ierr) use auto_diff @@ -3318,7 +3296,7 @@ subroutine get_Pvsc_ad(s, k, Pvsc, ierr) s% Pvsc(k) = Pvsc%val if (Pvsc_start < 0d0) s% Pvsc_start(k) = s% Pvsc(k) end subroutine get_Pvsc_ad - + ! marsaglia and zaman random number generator. period is 2**43 with ! 900 million different sequences. the state of the generator (for restarts) @@ -3342,7 +3320,7 @@ subroutine init_random(s) j = k k = m l = mod(53*l + 1, 169) - if (mod(l*m,64) .ge. 32) x = x + t + if (mod(l*m,64) >= 32) x = x + t t = 0.5d0 * t enddo s% rand_u(ii) = x @@ -3353,22 +3331,22 @@ subroutine init_random(s) s% rand_i97 = 97 s% rand_j97 = 33 end subroutine init_random - + real(dp) function rand(s) type (star_info), pointer :: s real(dp) :: uni uni = s% rand_u(s% rand_i97) - s% rand_u(s% rand_j97) - if (uni .lt. 0.0d0) uni = uni + 1.0d0 + if (uni < 0.0d0) uni = uni + 1.0d0 s% rand_u(s% rand_i97) = uni s% rand_i97 = s% rand_i97 - 1 - if (s% rand_i97 .eq. 0) s% rand_i97 = 97 + if (s% rand_i97 == 0) s% rand_i97 = 97 s% rand_j97 = s% rand_j97 - 1 - if (s% rand_j97 .eq. 0) s% rand_j97 = 97 + if (s% rand_j97 == 0) s% rand_j97 = 97 s% rand_c = s% rand_c - s% rand_cd - if (s% rand_c .lt. 0.0d0) s% rand_c = s% rand_c + s% rand_cm + if (s% rand_c < 0.0d0) s% rand_c = s% rand_c + s% rand_cm uni = uni - s% rand_c - if (uni .lt. 0.0d0) uni = uni + 1.0d0 + if (uni < 0.0d0) uni = uni + 1.0d0 rand = uni end function rand @@ -3377,7 +3355,7 @@ subroutine write_to_extra_terminal_output_file(s, str, advance) type (star_info), pointer :: s character(len=*), intent(in) :: str logical, intent(in) :: advance - integer :: id, ierr, io + integer :: ierr, io if (len_trim(s% extra_terminal_output_file) > 0) then ierr = 0 open(newunit=io, file=trim(s% extra_terminal_output_file), & @@ -3395,7 +3373,7 @@ subroutine write_to_extra_terminal_output_file(s, str, advance) end if end if end subroutine write_to_extra_terminal_output_file - + subroutine write_eos_call_info(s,k) use chem_def @@ -3460,7 +3438,6 @@ end subroutine write_eos_call_info real(dp) function surface_avg_x(s,j) - use chem_def, only: chem_isos type (star_info), pointer :: s integer, intent(in) :: j real(dp) :: sum_x, sum_dq @@ -3505,7 +3482,7 @@ real(dp) function center_avg_x(s,j) end do center_avg_x = sum_x/sum_dq end function center_avg_x - + subroutine get_area_info_opt_time_center(s, k, area, inv_R2, ierr) use auto_diff_support @@ -3525,7 +3502,7 @@ subroutine get_area_info_opt_time_center(s, k, area, inv_R2, ierr) inv_R2 = 1d0/r2_00 end if end subroutine get_area_info_opt_time_center - + subroutine set_energy_eqn_scal(s, k, scal, ierr) ! 1/(erg g^-1 s^-1) type (star_info), pointer :: s @@ -3547,7 +3524,7 @@ subroutine set_energy_eqn_scal(s, k, scal, ierr) ! 1/(erg g^-1 s^-1) end if scal = scal*s% dt/s% energy_start(k) end subroutine set_energy_eqn_scal - + real(dp) function conv_time_scale(s,k_in) result(tau_conv) type (star_info), pointer :: s @@ -3578,7 +3555,7 @@ real(dp) function conv_time_scale(s,k_in) result(tau_conv) tau_conv = 0d0 end if end function conv_time_scale - + subroutine set_conv_time_scales(s) type (star_info), pointer :: s @@ -3601,7 +3578,7 @@ subroutine set_conv_time_scales(s) if (s% max_conv_time_scale == 0d0) s% max_conv_time_scale = 1d99 if (s% min_conv_time_scale == 1d99) s% min_conv_time_scale = 0d0 end subroutine set_conv_time_scales - + real(dp) function QHSE_time_scale(s,k) result(tau_qhse) type (star_info), pointer :: s @@ -3616,16 +3593,16 @@ real(dp) function QHSE_time_scale(s,k) result(tau_qhse) end if tau_qhse = abs_dv/(s% cgrav(k)*s% m_grav(k)/pow2(s% r(k))) end function QHSE_time_scale + - - + real(dp) function eps_nuc_time_scale(s,k) result(tau_epsnuc) type (star_info), pointer :: s integer, intent(in) :: k tau_epsnuc = s% Cp(k)*s% T(k)/max(1d-10,abs(s% eps_nuc(k))) end function eps_nuc_time_scale - + real(dp) function cooling_time_scale(s,k) result(tau_cool) type (star_info), pointer :: s @@ -3634,7 +3611,7 @@ real(dp) function cooling_time_scale(s,k) result(tau_cool) thermal_conductivity = (4d0*crad*clight*pow3(s% T(k)))/(3d0*s% opacity(k)*s% rho(k)*s% Cp(k)) tau_cool = pow2(s% scale_height(k)) / thermal_conductivity end function cooling_time_scale - + function get_rho_face(s,k) result(rho_face) type (star_info), pointer :: s @@ -3648,7 +3625,7 @@ function get_rho_face(s,k) result(rho_face) call get_face_weights(s, k, alfa, beta) rho_face = alfa*wrap_d_00(s,k) + beta*wrap_d_m1(s,k) end function get_rho_face - + real(dp) function get_rho_face_val(s,k) result(rho_face) type (star_info), pointer :: s @@ -3661,7 +3638,7 @@ real(dp) function get_rho_face_val(s,k) result(rho_face) call get_face_weights(s, k, alfa, beta) rho_face = alfa*s% rho(k) + beta*s% rho(k-1) end function get_rho_face_val - + function get_T_face(s,k) result(T_face) type (star_info), pointer :: s @@ -3675,7 +3652,7 @@ function get_T_face(s,k) result(T_face) call get_face_weights(s, k, alfa, beta) T_face = alfa*wrap_T_00(s,k) + beta*wrap_T_m1(s,k) end function get_T_face - + function get_Prad_face(s,k) result(Prad_face) type (star_info), pointer :: s @@ -3683,7 +3660,7 @@ function get_Prad_face(s,k) result(Prad_face) type(auto_diff_real_star_order1) :: Prad_face Prad_face = crad*pow4(get_T_face(s,k))/3d0 end function get_Prad_face - + function get_Peos_face(s,k) result(Peos_face) type (star_info), pointer :: s @@ -3697,7 +3674,7 @@ function get_Peos_face(s,k) result(Peos_face) call get_face_weights(s, k, alfa, beta) Peos_face = alfa*wrap_Peos_00(s,k) + beta*wrap_Peos_m1(s,k) end function get_Peos_face - + function get_Cp_face(s,k) result(Cp_face) type (star_info), pointer :: s @@ -3711,7 +3688,7 @@ function get_Cp_face(s,k) result(Cp_face) call get_face_weights(s, k, alfa, beta) Cp_face = alfa*wrap_Cp_00(s,k) + beta*wrap_Cp_m1(s,k) end function get_Cp_face - + function get_ChiRho_face(s,k) result(ChiRho_face) type (star_info), pointer :: s @@ -3725,7 +3702,7 @@ function get_ChiRho_face(s,k) result(ChiRho_face) call get_face_weights(s, k, alfa, beta) ChiRho_face = alfa*wrap_ChiRho_00(s,k) + beta*wrap_ChiRho_m1(s,k) end function get_ChiRho_face - + function get_ChiT_face(s,k) result(ChiT_face) type (star_info), pointer :: s @@ -3739,7 +3716,7 @@ function get_ChiT_face(s,k) result(ChiT_face) call get_face_weights(s, k, alfa, beta) ChiT_face = alfa*wrap_ChiT_00(s,k) + beta*wrap_ChiT_m1(s,k) end function get_ChiT_face - + function get_kap_face(s,k) result(kap_face) type (star_info), pointer :: s @@ -3753,7 +3730,7 @@ function get_kap_face(s,k) result(kap_face) call get_face_weights(s, k, alfa, beta) kap_face = alfa*wrap_kap_00(s,k) + beta*wrap_kap_m1(s,k) end function get_kap_face - + function get_grada_face(s,k) result(grada_face) type (star_info), pointer :: s @@ -3767,7 +3744,7 @@ function get_grada_face(s,k) result(grada_face) call get_face_weights(s, k, alfa, beta) grada_face = alfa*wrap_grad_ad_00(s,k) + beta*wrap_grad_ad_m1(s,k) end function get_grada_face - + function get_gradr_face(s,k) result(gradr) type (star_info), pointer :: s @@ -3781,7 +3758,7 @@ function get_gradr_face(s,k) result(gradr) Pr = get_Prad_face(s,k) gradr = P*opacity*L/(16d0*pi*clight*s% m_grav(k)*s% cgrav(k)*Pr) end function get_gradr_face - + function get_scale_height_face(s,k) result(scale_height) type (star_info), pointer :: s @@ -3804,7 +3781,7 @@ function get_scale_height_face(s,k) result(scale_height) end if end if end function get_scale_height_face - + real(dp) function get_scale_height_face_val(s,k) result(scale_height) type (star_info), pointer :: s @@ -3828,7 +3805,7 @@ real(dp) function get_scale_height_face_val(s,k) result(scale_height) end if end function get_scale_height_face_val - + function get_QQ_cell(s,k) result(QQ_cell) type (star_info), pointer :: s integer, intent(in) :: k @@ -3841,7 +3818,7 @@ function get_QQ_cell(s,k) result(QQ_cell) chiRho_00 = wrap_chiRho_00(s,k) QQ_cell = chiT_00/(d_00*T_00*chiRho_00) end function get_QQ_cell - + subroutine get_face_weights(s, k, alfa, beta) type (star_info), pointer :: s @@ -3928,6 +3905,6 @@ subroutine set_zero_alpha_RTI(id, ierr) s% alpha_RTI(1:s% nz) = 0d0 s% need_to_setvars = .true. end subroutine set_zero_alpha_RTI - + end module star_utils diff --git a/star/private/starspots.f90 b/star/private/starspots.f90 new file mode 100644 index 000000000..12ed5c94c --- /dev/null +++ b/star/private/starspots.f90 @@ -0,0 +1,111 @@ +! *********************************************************************** +! +! Copyright (C) 2010-2019 Meridith Joyce & The MESA Team +! +! MESA is free software; you can use it and/or modify +! it under the combined terms and restrictions of the MESA MANIFESTO +! and the GNU General Library Public License as published +! by the Free Software Foundation; either version 2 of the License, +! or (at your option) any later version. +! +! You should have received a copy of the MESA MANIFESTO along with +! this software; if not, it is available at the mesa website: +! http://mesa.sourceforge.net/ +! +! MESA 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 Library General Public License for more details. +! +! You should have received a copy of the GNU Library General Public License +! along with this software; if not, write to the Free Software +! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +! +! *********************************************************************** + +module starspots + + use star_private_def + use const_def + use utils_lib + + implicit none + + private + + public :: starspot_tweak_gradr + public :: starspot_tweak_PT + public :: starspot_restore_PT + + real(dp) :: L_init + +contains + +! ------------- +! parameterized YREC routines +! MESA models a pressure contrast rather than temperature contrast +! ------------- + + subroutine starspot_tweak_gradr(s, P, gradr, gradr_spot) + ! adjusts the gradient of the radius to account for starspots. + ! This subroutine is called at the beginning of Get_results() + ! in turb_support.f90 + ! ------------------------------------------------------------ + use auto_diff_support + type(star_info), pointer :: s + type(auto_diff_real_star_order1), intent(in) :: P + type(auto_diff_real_star_order1), intent(in) :: gradr + type(auto_diff_real_star_order1), intent(out) :: gradr_spot + + real(dp) :: mu_ideal_gas, R2, Teff_local, PB_i + type(auto_diff_real_star_order1) :: xspot_of_r ! xspot4 + + if (.not. s%doing_relax .and. .not. s%doing_first_model_of_run) then + mu_ideal_gas = s%mu(1) !1.00794d0 ! for hydrogen, 1 gram per mole + R2 = pow2(s%R(1)) + Teff_local = pow(s%L(1)/(pi4*boltz_sigma*R2), 0.25d0) + PB_i = (cgas*s%rho(1)/mu_ideal_gas)*(1.0d0 - s%xspot)*Teff_local + xspot_of_r = (P - PB_i)/P + gradr_spot = gradr/(s%fspot*pow4(xspot_of_r) + 1.0d0 - s%fspot) + else + gradr_spot = gradr + end if + end subroutine starspot_tweak_gradr + + subroutine starspot_tweak_PT(s) + ! saves the surface luminosity and adjusts it and the effective + ! temperature to account for starspots. + ! This subroutine is called at the beginning of get_surf_PT() + ! in hydro_vars.f90 + ! ------------------------------------------------------------ + + type(star_info), pointer :: s + + real(dp) :: alp + + alp = 1d0 - s%fspot + s%fspot*pow4(s%xspot) + + ! This is the surface-average value for luminosity + L_init = s%L(1) + + ! Set the surface L to the unspotted, ambient L + s%L(1) = s%L(1)/alp + + ! Now, set the Teff. Used in atm table lookup to set boundary conditions + s%Teff = pow(s%L(1)/(pi4*pow2(s%r(1))*boltz_sigma), 0.25_dp) + + end subroutine starspot_tweak_PT + + subroutine starspot_restore_PT(s) + ! restores the surface luminosity effective temeperature. + ! Called at the end of get_surf_PT() + ! ------------------------------------------------------------ + + type(star_info), pointer :: s + + s%Teff = pow(L_init/(pi4*pow2(s%r(1))*boltz_sigma), 0.25_dp) + s%L(1) = L_init + + end subroutine starspot_restore_PT + +end module starspots diff --git a/star/private/struct_burn_mix.f90 b/star/private/struct_burn_mix.f90 index dd3eaaa93..a6d0b2950 100644 --- a/star/private/struct_burn_mix.f90 +++ b/star/private/struct_burn_mix.f90 @@ -46,7 +46,7 @@ integer function do_struct_burn_mix(s, skip_global_corr_coeff_limit) type (star_info), pointer :: s logical, intent(in) :: skip_global_corr_coeff_limit - integer :: nz, nvar, species, ierr, j, k, k_bad + integer :: nz, nvar, species, ierr, k integer(8) :: time0 logical :: do_chem real(dp) :: dt, tol_correction_norm, tol_max_correction, total @@ -238,8 +238,6 @@ integer function do_mix_omega(s, dt) type (star_info), pointer :: s real(dp), intent(in) :: dt - integer :: ierr - do_mix_omega = keep_going if (s% rotation_flag) then @@ -275,13 +273,11 @@ end function do_rsp_step subroutine save_start_values(s, ierr) - use chem_def, only: num_categories use hydro_rsp2, only: set_etrb_start_vars use star_utils, only: eval_total_energy_integrals, set_luminosity_by_category - use chem_def, only: ih1 type (star_info), pointer :: s integer, intent(out) :: ierr - integer :: k, j, i_h1 + integer :: k, j include 'formats' ierr = 0 @@ -380,7 +376,7 @@ integer function do_solver_converge( & logical, intent(in) :: skip_global_corr_coeff_limit real(dp), intent(in) :: tol_correction_norm, tol_max_correction - integer :: ierr, nz, k, n + integer :: ierr, nz, n logical :: report include 'formats' @@ -514,8 +510,8 @@ integer function do_solver( & real(dp), intent(in) :: tol_correction_norm, tol_max_correction logical :: converged - integer :: i, k, species, ierr, alph, j1, j2, gold_tolerances_level - real(dp) :: varscale, r003, rp13, dV, frac, maxT + integer :: k, species, ierr, j1, j2, gold_tolerances_level + real(dp) :: maxT include 'formats' @@ -749,9 +745,8 @@ subroutine hydro_solver_step( & logical, intent(out) :: converged integer, intent(out) :: ierr - integer :: i, k, j, matrix_type, neq + integer :: k, j, neq logical :: failure - real(dp) :: varscale logical, parameter :: dbg = .false. include 'formats' @@ -794,7 +789,6 @@ subroutine newt(ierr) use star_solver, only: solver use rates_def, only: warn_rates_for_high_temp integer, intent(out) :: ierr - integer :: k, j logical :: save_warn_rates_flag include 'formats' s% doing_solver_iterations = .true. @@ -823,11 +817,11 @@ integer function do_burn(s, dt) integer :: & k_bad, ierr, max_num_iters_k, nz, op_err, & - i, j, k, num_iters, species, max_num_iters_used, & + k, num_iters, species, max_num_iters_used, & screening_mode, kmin - integer(8) :: time0, clock_rate + integer(8) :: time0 real(dp) :: total, avg_epsnuc, min_T_for_const_density_solver - logical :: trace, dbg, okay, skip_burn + logical :: trace, dbg, skip_burn logical, parameter :: burn_dbg = .false. include 'formats' @@ -971,7 +965,7 @@ subroutine burn1_zone( & use net_lib, only: net_1_zone_burn_const_density, net_1_zone_burn, & show_net_reactions_and_info use rates_def, only: std_reaction_Qs, std_reaction_neuQs - use chem_def, only: chem_isos, num_categories, category_name + use chem_def, only: num_categories use net, only: do1_net use star_utils, only: store_lnT_in_xh, get_T_and_lnT_from_xh type (star_info), pointer :: s @@ -1189,12 +1183,11 @@ end subroutine get_eos_info_for_burn_at_const_density subroutine burn_finish_substep(nstp, time, y, ierr) - use chem_def, only: category_name integer,intent(in) :: nstp real(dp), intent(in) :: time, y(:) integer, intent(out) :: ierr - real(dp) :: frac, step_time - integer :: j, i + !real(dp) :: frac, step_time + !integer :: j, i include 'formats' ierr = 0 ! This routine does nothing other than set ierr = 0, diff --git a/star/private/timestep.f90 b/star/private/timestep.f90 index 35f935a1e..11e335109 100644 --- a/star/private/timestep.f90 +++ b/star/private/timestep.f90 @@ -101,7 +101,7 @@ integer function do_timestep_limits(s, dt) type (star_info), pointer :: s real(dp), intent(in) :: dt ! timestep just completed - real(dp) :: dt_limit_ratio(numTlim), dt_limit, limit, order, max_timestep_factor + real(dp) :: dt_limit_ratio(numTlim), order, max_timestep_factor integer :: i_limit, nz, ierr logical :: skip_hard_limit integer :: num_mix_boundaries ! boundaries of regions with mixing_type /= no_mixing @@ -375,7 +375,6 @@ integer function do_timestep_limits(s, dt) logical function return_now(i_limit) integer, intent(in) :: i_limit - integer :: k if (do_timestep_limits == keep_going) then return_now = .false. return @@ -420,7 +419,7 @@ integer function check_burn_steps_limit(s, skip_hard_limit, dt, dt_limit_ratio) logical, intent(in) :: skip_hard_limit real(dp), intent(in) :: dt real(dp), intent(inout) :: dt_limit_ratio - integer :: max_steps, i + integer :: max_steps check_burn_steps_limit = keep_going if (.not. s% op_split_burn .or. maxval(s% T_start(1:s%nz)) < s% op_split_burn_min_T) return @@ -2189,9 +2188,9 @@ integer function check_dX_nuc_drop(s, skip_hard_limit, dt, dt_limit_ratio) subroutine do1(k) integer, intent(in) :: k - integer :: j, jj, ii + integer :: j real(dp) :: dx, dx_drop, dm, dt_dm, dx_burning, dx_inflow, dxdt_nuc - real(dp) ::dx00, dxp1, sig00, sigp1, flux00, fluxp1 + real(dp) :: dx00, dxp1, sig00, sigp1, flux00, fluxp1 include 'formats' @@ -2320,7 +2319,7 @@ real(dp) function eval_varcontrol(s, ierr) result(varcontrol) type (star_info), pointer :: s integer, intent(out) :: ierr - integer :: j, nterms, nvar_hydro, nz, k, kk + integer :: j, nterms, nvar_hydro, nz, k real(dp) :: sumj, sumvar, sumscales, sumterm(s% nvar_total) real(dp), parameter :: xscale_min = 1 diff --git a/star/private/turb_info.f90 b/star/private/turb_info.f90 index a1dabbef9..42a4889db 100644 --- a/star/private/turb_info.f90 +++ b/star/private/turb_info.f90 @@ -83,7 +83,6 @@ subroutine do1_mlt_2(s, k, & use star_utils use turb_support, only: do1_mlt_eval use eos_def - use chem_def, only: ih1 use auto_diff_support type (star_info), pointer :: s integer, intent(in) :: k @@ -93,10 +92,9 @@ subroutine do1_mlt_2(s, k, & mixing_length_alpha_in, gradL_composition_term_in type(auto_diff_real_star_order1) :: gradr_factor - real(dp) :: v, f, xh_face, & - gradL_composition_term, abs_du_div_cs, cs, mixing_length_alpha + real(dp) :: f, gradL_composition_term, abs_du_div_cs, cs, mixing_length_alpha real(dp), pointer :: vel(:) - integer :: i, mixing_type, h1, nz, k_T_max + integer :: i, mixing_type, nz, k_T_max real(dp), parameter :: conv_vel_mach_limit = 0.9d0 real(dp) :: crystal_pad logical :: no_mix @@ -425,7 +423,7 @@ subroutine set_gradT_excess_alpha(s, ierr) use chem_def, only: ih1, ihe4 type (star_info), pointer :: s integer, intent(out) :: ierr - real(dp) :: beta, lambda, phi, tmp, alpha, alpha2, & + real(dp) :: beta, lambda, tmp, alpha, & beta_limit, lambda1, beta1, lambda2, beta2, dlambda, dbeta integer :: k, k_beta, k_lambda, nz, h1, he4 include 'formats' @@ -541,7 +539,7 @@ subroutine check_for_redo_MLT(s, nzlo, nzhi, ierr) include 'formats' ! check_for_redo_MLT assumes that nzlo = 1, nzhi = nz ! that is presently true; make sure that assumption doesn't change - if (.not. ((nzlo.eq.1).and.(nzhi.eq.s%nz))) then + if (.not. ((nzlo==1).and.(nzhi==s%nz))) then write(*,*) 'nzlo != 1 or nzhi != nz' call mesa_error(__FILE__,__LINE__) endif @@ -575,7 +573,7 @@ subroutine check_for_redo_MLT(s, nzlo, nzhi, ierr) contains subroutine end_of_convective_region() - integer :: kk, op_err, mix_type + integer :: kk, op_err real(dp) :: Hp logical :: end_dbg 9 format(a40, 3i7, 99(1pd26.16)) diff --git a/star/private/turb_support.f90 b/star/private/turb_support.f90 index 8b0a09296..c99508b69 100644 --- a/star/private/turb_support.f90 +++ b/star/private/turb_support.f90 @@ -105,24 +105,27 @@ end subroutine get_gradT subroutine do1_mlt_eval( & s, k, MLT_option, gradL_composition_term, & - gradr, grada, scale_height, mixing_length_alpha, & + gradr_in, grada, scale_height, mixing_length_alpha, & mixing_type, gradT, Y_face, mlt_vc, D, Gamma, ierr) use chem_def, only: ih1 + use starspots, only: starspot_tweak_gradr type (star_info), pointer :: s integer, intent(in) :: k character (len=*), intent(in) :: MLT_option - type(auto_diff_real_star_order1), intent(in) :: gradr, grada, scale_height + type(auto_diff_real_star_order1), intent(in) :: gradr_in, grada, scale_height real(dp), intent(in) :: gradL_composition_term, mixing_length_alpha integer, intent(out) :: mixing_type type(auto_diff_real_star_order1), intent(out) :: & gradT, Y_face, mlt_vc, D, Gamma integer, intent(out) :: ierr - real(dp) :: cgrav, m, XH1, gradL_old, grada_face_old - integer :: iso, old_mix_type - type(auto_diff_real_star_order1) :: r, L, T, P, opacity, rho, dV, chiRho, chiT, Cp + real(dp) :: cgrav, m, XH1 + integer :: iso + type(auto_diff_real_star_order1) :: gradr, r, L, T, P, opacity, rho, dV, chiRho, chiT, Cp include 'formats' ierr = 0 + + gradr = gradr_in cgrav = s% cgrav(k) m = s% m_grav(k) @@ -145,7 +148,12 @@ subroutine do1_mlt_eval( & iso, XH1, cgrav, m, gradL_composition_term, mixing_length_alpha, & s% alpha_semiconvection, s% thermohaline_coeff, & mixing_type, gradT, Y_face, mlt_vc, D, Gamma, ierr) - else + else + ! starspot YREC routine + if (s% do_starspots) then + !dV = 0d0 ! dV = 1/rho - 1/rho_start and we assume rho = rho_start. + call starspot_tweak_gradr(s, P, gradr_in, gradr) + end if call Get_results(s, k, MLT_option, & r, L, T, P, opacity, rho, dV, chiRho, chiT, Cp, gradr, grada, scale_height, & iso, XH1, cgrav, m, gradL_composition_term, mixing_length_alpha, & @@ -182,8 +190,7 @@ subroutine Get_results(s, k, MLT_option, & ! NOTE: k=0 is a valid arg real(dp) :: Gamma_limit, scale_value1, scale_value2, diff_grads_limit, reduction_limit, lambda_limit type(auto_diff_real_star_order1) :: Lrad_div_Ledd, Gamma_inv_threshold, Gamma_factor, alfa0, & diff_grads_factor, Gamma_term, exp_limit, grad_scale, gradr_scaled - - character (len=256) :: message + logical :: test_partials, using_TDC logical, parameter :: report = .false. include 'formats' @@ -216,7 +223,7 @@ subroutine Get_results(s, k, MLT_option, & ! NOTE: k=0 is a valid arg !test_partials = (k == s% solver_test_partials_k) test_partials = .false. - ierr = 0 + ierr = 0 if (k > 0) then s% tdc_num_iters(k) = 0 end if @@ -228,7 +235,6 @@ subroutine Get_results(s, k, MLT_option, & ! NOTE: k=0 is a valid arg end if - ! check if this particular k can be done with TDC using_TDC = .false. if (s% MLT_option == 'TDC') using_TDC = .true. @@ -337,7 +343,7 @@ subroutine Get_results(s, k, MLT_option, & ! NOTE: k=0 is a valid arg if (s% report_ierr) write(*,*) 'ierr from set_semiconvection' return end if - end if + end if end if ! If there's too-little mixing to bother, or we hit a bad value, fall back on no mixing. @@ -348,7 +354,7 @@ subroutine Get_results(s, k, MLT_option, & ! NOTE: k=0 is a valid arg Y_face = gradT - gradL conv_vel = 0d0 D = 0d0 - Gamma = 0d0 + Gamma = 0d0 end if contains diff --git a/star/private/winds.f90 b/star/private/winds.f90 index af50dba7d..7c3ae7ea2 100644 --- a/star/private/winds.f90 +++ b/star/private/winds.f90 @@ -64,15 +64,15 @@ subroutine do_set_mdot(s, L_phot, M_phot, T_phot, ierr) real(dp), intent(in) :: L_phot, M_phot, T_phot ! photosphere values (cgs) integer, intent(out) :: ierr - integer :: k, j, h1, he4, nz, base - real(dp) :: max_ejection_mass, wind_mdot, wind, alfa, total_H, & + integer :: h1, he4, nz + real(dp) :: wind_mdot, wind, alfa, & X, Y, Z, w1, w2, T_high, T_low, L1, M1, R1, T1, & - log_dtyr, log_dtyr_full_off, log_dtyr_full_on, beta, divisor, & + beta, divisor, & center_h1, center_he4, surface_h1, surface_he4, mdot, xfer_ratio, & L_div_Ledd, full_off, full_on, max_boost, super_eddington_boost, & hot_wind, cool_wind, H_env_mass, H_He_env_mass, He_layer_mass - character (len=strlen) :: message, cool_wind_scheme, hot_wind_scheme, scheme - logical :: is_infalling, using_wind_scheme_mdot, use_other + character (len=strlen) :: scheme + logical :: using_wind_scheme_mdot, use_other real(dp), parameter :: Zsolar = 0.019d0 ! for Vink et al formula logical, parameter :: dbg = .false. @@ -425,7 +425,7 @@ subroutine rotation_enhancement(ierr) ! Osurf_crit^2 = (1 - Gamma_edd)*G*M/R_equatorial^3 ! Gamma_edd = kappa*L/(4 pi c G M), Eddington factor real(dp) :: enhancement, wind_mdot, wind_mdot_lim, & - kh_timescale, mdot_lim, wind_mdot_prev, dmsfac, dmskhf + kh_timescale, wind_mdot_prev, dmsfac, dmskhf include 'formats' diff --git a/star/private/write_model.f90 b/star/private/write_model.f90 index 04fcecad4..36819d5f9 100644 --- a/star/private/write_model.f90 +++ b/star/private/write_model.f90 @@ -189,7 +189,7 @@ subroutine do_write_model(id, filename, ierr) write(iounit, fmt='(i5, 1x)', advance='no') k call write1(s% lnd(k),ierr); if (ierr /= 0) exit call write1(s% lnT(k),ierr); if (ierr /= 0) exit - call write1(s% lnR(k),ierr); if (ierr /= 0) exit + call write1(s% lnR(k),ierr); if (ierr /= 0) exit if (RSP_flag) then call write1(s% RSP_Et(k),ierr); if (ierr /= 0) exit call write1(s% erad(k),ierr); if (ierr /= 0) exit @@ -198,7 +198,7 @@ subroutine do_write_model(id, filename, ierr) call write1(s% w(k),ierr); if (ierr /= 0) exit call write1(s% Hp_face(k),ierr) if (ierr /= 0) exit - end if + end if call write1(s% L(k),ierr); if (ierr /= 0) exit call write1(s% dq(k),ierr); if (ierr /= 0) exit if (v_flag) then diff --git a/star/public/star_def.f90 b/star/public/star_def.f90 index bbd599b99..cdd3660bc 100644 --- a/star/public/star_def.f90 +++ b/star/public/star_def.f90 @@ -23,13 +23,10 @@ ! ! *********************************************************************** - module star_def - - use star_data_def +module star_def - - implicit none - - - end module star_def + use star_data_def + implicit none + +end module star_def diff --git a/star/public/star_lib.f90 b/star/public/star_lib.f90 index 101a77959..722b09bee 100644 --- a/star/public/star_lib.f90 +++ b/star/public/star_lib.f90 @@ -77,12 +77,11 @@ module star_lib ! this is the procedure interface to mesa/star. implicit none - + contains - - + ! allocate data structures for a star and returns a handle. subroutine alloc_star(id, ierr) use init, only: alloc_star_data @@ -90,30 +89,30 @@ subroutine alloc_star(id, ierr) call alloc_star_data(id, ierr) end subroutine alloc_star - + subroutine init_starting_star_data(s, ierr) ! this is done when alloc_star ! but if you are reusing the star data (and not calling alloc_star) ! then call this to get things initialized. use init, only: set_starting_star_data - + type (star_info), pointer :: s integer, intent(out) :: ierr call set_starting_star_data(s, ierr) end subroutine init_starting_star_data - + ! call this when you are finished with the star. subroutine free_star(id, ierr) use alloc, only: free_star_data ! frees the handle and all associated data integer, intent(in) :: id integer, intent(out) :: ierr - + call star_shutdown_pgstar(id, ierr) call star_dealloc_extras(id) call free_star_data(id, ierr) end subroutine free_star - + subroutine read_star_job(s, filename, ierr) use star_private_def use star_job_ctrls_io, only: do_read_star_job @@ -122,7 +121,7 @@ subroutine read_star_job(s, filename, ierr) integer, intent(out) :: ierr call do_read_star_job(s, filename, ierr) end subroutine read_star_job - + subroutine read_star_job_id(id, filename, ierr) use star_private_def use star_job_ctrls_io, only: do_read_star_job @@ -144,7 +143,7 @@ subroutine write_star_job(s, filename, ierr) integer, intent(out) :: ierr call do_write_star_job(s, filename, ierr) end subroutine write_star_job - + subroutine write_star_job_id(id, filename, ierr) use star_private_def use star_job_ctrls_io, only: do_write_star_job @@ -224,8 +223,8 @@ subroutine do_starlib_init( & color_num_files,color_file_names,color_num_colors,& ierr) end subroutine do_starlib_init - - + + ! call this when you are done. subroutine starlib_shutdown use init, only: do_starlib_shutdown @@ -237,14 +236,14 @@ end subroutine starlib_shutdown ! if you want direct access to the star data structure, ! then you need to convert the handle to a pointer. ! use the routine star_ptr defined in star_def. - - + + ! once you've allocated a star, you need to initialize it. ! this is done in two stages: first you set the various control parameters ! (using star_setup), and then you actually create the model ! (using star_load). - - + + ! logs and profiles are by default written to the directory named "logs_and_profiles", ! but you can change that if you'd like by calling this routine before calling star_setup. subroutine set_dir_for_logs_and_profiles(id, dir_name, ierr) @@ -256,8 +255,8 @@ subroutine set_dir_for_logs_and_profiles(id, dir_name, ierr) if (ierr /= 0) return s% log_directory = dir_name end subroutine set_dir_for_logs_and_profiles - - + + subroutine star_set_history_columns(id, history_columns_file, report, ierr) use history_specs, only: set_history_columns integer, intent(in) :: id @@ -267,7 +266,7 @@ subroutine star_set_history_columns(id, history_columns_file, report, ierr) call set_history_columns(id, history_columns_file, report, ierr) end subroutine star_set_history_columns - + integer function star_get_history_column_id(cname) ! returns id for the history column if there is a matching name ! returns 0 otherwise. @@ -275,8 +274,8 @@ integer function star_get_history_column_id(cname) character (len=*), intent(in) :: cname star_get_history_column_id = do_get_history_id(cname) end function star_get_history_column_id - - + + subroutine star_set_profile_columns(id, profile_columns_file, report, ierr) use profile, only: set_profile_columns integer, intent(in) :: id @@ -285,8 +284,8 @@ subroutine star_set_profile_columns(id, profile_columns_file, report, ierr) integer, intent(out) :: ierr call set_profile_columns(id, profile_columns_file, report, ierr) end subroutine star_set_profile_columns - - + + ! read a "namelist" file and setup parameters for the star. subroutine star_setup(id, inlist, ierr) use ctrls_io, only: do_one_setup @@ -295,8 +294,8 @@ subroutine star_setup(id, inlist, ierr) integer, intent(out) :: ierr ! 0 means AOK. call do_one_setup(id, inlist, ierr) end subroutine star_setup - - + + ! okay to call this more than once; only 1st call does the work. subroutine star_set_kap_and_eos_handles(id, ierr) use init, only: set_kap_and_eos_handles @@ -304,8 +303,8 @@ subroutine star_set_kap_and_eos_handles(id, ierr) integer, intent(out) :: ierr ! 0 means AOK. call set_kap_and_eos_handles(id, ierr) end subroutine star_set_kap_and_eos_handles - - + + subroutine star_set_net(id, new_net_name, ierr) use net, only: set_net integer, intent(in) :: id @@ -317,8 +316,8 @@ subroutine star_set_net(id, new_net_name, ierr) s% net_name = new_net_name call set_net(s, new_net_name, ierr) end subroutine star_set_net - - + + subroutine star_set_var_info(id, ierr) use alloc, only: set_var_info integer, intent(in) :: id @@ -328,8 +327,8 @@ subroutine star_set_var_info(id, ierr) if (ierr /= 0) return call set_var_info(s, ierr) end subroutine star_set_var_info - - + + subroutine star_set_chem_names(id, ierr) use alloc, only: set_chem_names integer, intent(in) :: id @@ -339,8 +338,8 @@ subroutine star_set_chem_names(id, ierr) if (ierr /= 0) return call set_chem_names(s) end subroutine star_set_chem_names - - + + subroutine star_allocate_arrays(id, ierr) use alloc, only: allocate_star_info_arrays integer, intent(in) :: id @@ -350,8 +349,8 @@ subroutine star_allocate_arrays(id, ierr) if (ierr /= 0) return call allocate_star_info_arrays(s, ierr) end subroutine star_allocate_arrays - - + + ! if there is a file called 'restart_photo', then it will be used to restart. ! otherwise, create a new model with arbitrary mass and metallicity ! as determined by initial_mass and initial_z in the star_info structure. @@ -362,12 +361,12 @@ end subroutine star_allocate_arrays subroutine star_load_zams(id, ierr) use init, only: load_zams_model integer, intent(in) :: id - integer, intent(out) :: ierr + integer, intent(out) :: ierr ierr = 0 - call load_zams_model(id, ierr) + call load_zams_model(id, ierr) end subroutine star_load_zams - - + + ! you can create a "pre-main-sequence" approximation ! that has not started nuclear burning yet. ! the following routine will construct a protostar @@ -383,7 +382,7 @@ subroutine star_create_pre_ms_model( & change_net, new_net_name, & pre_ms_relax_num_steps, ierr) use init, only: create_pre_ms_model - + integer, intent(in) :: id real(dp), intent(in) :: T_c ! optional initial center temperature @@ -420,7 +419,7 @@ subroutine star_create_pre_ms_model( & call create_pre_ms_model(id, ierr) if (ierr /= 0) return end subroutine star_create_pre_ms_model - + ! you can create an initial model for given mass and radius. subroutine star_create_initial_model(id, & radius_in_cm_for_create_initial_model, & @@ -429,7 +428,7 @@ subroutine star_create_initial_model(id, & entropy_1st_try_for_create_initial_model, & max_tries_for_create_initial_model, & abs_e01_tolerance_for_create_initial_model, & - abs_e02_tolerance_for_create_initial_model, & + abs_e02_tolerance_for_create_initial_model, & initial_zfracs, dump_missing_metals_into_heaviest, change_net, new_net_name, & initial_model_relax_num_steps, initial_model_eps, ierr) use init, only: create_initial_model @@ -460,7 +459,7 @@ subroutine star_create_initial_model(id, & s% abs_e01_tolerance_for_create_initial_model = & abs_e01_tolerance_for_create_initial_model s% abs_e02_tolerance_for_create_initial_model = & - abs_e02_tolerance_for_create_initial_model + abs_e02_tolerance_for_create_initial_model s% initial_zfracs_for_create_initial_model = initial_zfracs s% initial_model_relax_num_steps = initial_model_relax_num_steps s% initial_model_eps = initial_model_eps @@ -483,42 +482,42 @@ subroutine star_load_restart_photo(id, restart_filename, ierr) use init, only: load_restart_photo integer, intent(in) :: id character (len=*), intent(in) :: restart_filename - integer, intent(out) :: ierr - call load_restart_photo(id, restart_filename, ierr) + integer, intent(out) :: ierr + call load_restart_photo(id, restart_filename, ierr) end subroutine star_load_restart_photo - - + + subroutine star_write_model(id, filename, ierr) use write_model, only: do_write_model integer, intent(in) :: id character (len=*), intent(in) :: filename integer, intent(out) :: ierr - call do_write_model(id, filename, ierr) + call do_write_model(id, filename, ierr) end subroutine star_write_model - - + + subroutine star_write_photo(id, fname, ierr) use evolve_support, only: output, output_to_file integer, intent(in) :: id character (len=*), intent(in) :: fname integer, intent(out) :: ierr if (len_trim(fname) == 0) then - call output(id, ierr) + call output(id, ierr) else - call output_to_file(fname, id, ierr) + call output_to_file(fname, id, ierr) end if end subroutine star_write_photo - - + + subroutine star_read_model(id, model_fname, ierr) use init, only: load_saved_model integer, intent(in) :: id character (len=*), intent(in) :: model_fname - integer, intent(out) :: ierr - call load_saved_model(id, model_fname, ierr) + integer, intent(out) :: ierr + call load_saved_model(id, model_fname, ierr) end subroutine star_read_model - - + + subroutine star_number_from_saved_model(fname, model_number, ierr) use read_model, only: do_read_saved_model_number character (len=*), intent(in) :: fname ! filename for the saved model @@ -527,8 +526,8 @@ subroutine star_number_from_saved_model(fname, model_number, ierr) integer, intent(out) :: ierr call do_read_saved_model_number(fname, model_number, ierr) end subroutine star_number_from_saved_model - - + + subroutine star_age_from_saved_model(fname, star_age, ierr) use read_model, only: do_read_saved_model_age character (len=*), intent(in) :: fname ! filename for the saved model @@ -537,14 +536,14 @@ subroutine star_age_from_saved_model(fname, star_age, ierr) integer, intent(out) :: ierr call do_read_saved_model_age(fname, star_age, ierr) end subroutine star_age_from_saved_model + - - - + + ! after you've created a starting model, you're ready to evolve it. ! this process is done one step at a time by calling star_evolve_step. - - + + ! this routine takes one step in the evolution. ! when it returns successfully (i.e, with value = keep_going), the data ! describing the new model can be found in the variables defined in star_def. @@ -558,7 +557,7 @@ integer function star_evolve_step(id, first_try) ! false if this is a repeat for a retry type (star_info), pointer :: s integer :: ierr - integer(8) :: time0, clock_rate + integer(8) :: time0 real(dp) :: total star_evolve_step = terminate ierr = 0 @@ -568,7 +567,7 @@ integer function star_evolve_step(id, first_try) star_evolve_step = star_evolve_step_part1(id, first_try) if (star_evolve_step == keep_going) & star_evolve_step = star_evolve_step_part2(id, first_try) - if (s% doing_timing) call update_time(s, time0, total, s% time_evolve_step) + if (s% doing_timing) call update_time(s, time0, total, s% time_evolve_step) end function star_evolve_step ! individual functions to evolve each of the parts of star_evolve_step @@ -599,12 +598,12 @@ integer function star_evolve_step_part2(id, first_try) if (ierr /= 0) return star_evolve_step_part2 = do_evolve_step_part2(id, first_try) end function star_evolve_step_part2 - - + + ! once the step is completed, call the following routines to check the ! new model and pick the next timestep. - - + + ! this is the standard routine for checking the model after each step. ! it takes care of things such as writing logs and profiles. integer function star_check_model(id) @@ -613,8 +612,8 @@ integer function star_check_model(id) integer, intent(in) :: id star_check_model = do_one_check_model(id) end function star_check_model - - + + ! this is the standard routine for checking if have reached some limit ! such as max_age, max_model_number, psi_center_limit, h1_center_limit, etc. integer function star_check_limits(id) @@ -623,8 +622,8 @@ integer function star_check_limits(id) integer, intent(in) :: id star_check_limits = do_check_limits(id) end function star_check_limits - - + + ! this routine inspects the new model and picks a new timestep. ! if it decides that the changes in the new model are too great, integer function star_pick_next_timestep(id) @@ -633,8 +632,8 @@ integer function star_pick_next_timestep(id) integer, intent(in) :: id star_pick_next_timestep = pick_next_timestep(id) end function star_pick_next_timestep - - + + ! at the end of a successful step, call this routine to take care of ! things such as writing log files or saving a "snapshot" for restarts. integer function star_finish_step(id, ierr) @@ -645,7 +644,7 @@ integer function star_finish_step(id, ierr) star_finish_step = finish_step(id, ierr) end function star_finish_step - + ! this routine needs to be called before you do a redo. integer function star_prepare_to_redo(id) ! returns either keep_going, retry, or terminate. @@ -653,12 +652,12 @@ integer function star_prepare_to_redo(id) integer, intent(in) :: id star_prepare_to_redo = prepare_to_redo(id) end function star_prepare_to_redo - - + + ! once in a while an attempted step will fail, and you'll need to retry it ! with a smaller timestep or resort to backing up to a previous model. - - + + ! this routine needs to be called before you do a retry. integer function star_prepare_to_retry(id) ! returns either keep_going, or terminate. @@ -669,7 +668,7 @@ end function star_prepare_to_retry ! typically, after the namelist controls file has been read by the star setup routine, ! you won't need to do anything else with it. But in case you want - ! to read or write a control file at other times, here are the routines to do it. + ! to read or write a control file at other times, here are the routines to do it. subroutine star_read_controls(id, filename, ierr) use ctrls_io, only: read_controls integer, intent(in) :: id @@ -677,8 +676,8 @@ subroutine star_read_controls(id, filename, ierr) integer, intent(out) :: ierr call read_controls(id, filename, ierr) end subroutine star_read_controls - - + + subroutine star_write_controls(id, filename, ierr) use ctrls_io, only: write_controls integer, intent(in) :: id @@ -699,10 +698,10 @@ subroutine star_build_atm(s, L, R, Teff, M, cgrav, ierr) call build_atm(s, L, R, Teff, M, cgrav, ierr) end subroutine star_build_atm - + ! normally, "snapshots" for restarts will be saved automatically according ! to the value of the photo_interval parameter. but if you want to - ! do it yourself, you can call the following routine. + ! do it yourself, you can call the following routine. subroutine star_save_for_restart(id, filename, ierr) use evolve_support, only: output_to_file integer, intent(in) :: id @@ -710,14 +709,14 @@ subroutine star_save_for_restart(id, filename, ierr) integer, intent(out) :: ierr call output_to_file(filename, id, ierr) end subroutine star_save_for_restart - - + + integer function num_standard_history_columns(s) ! not inluding any extra columns type (star_info), pointer :: s num_standard_history_columns = size(s% history_column_spec, dim=1) end function num_standard_history_columns - - + + ! set "history info" in star data subroutine get_data_for_history_columns(s, & ierr) @@ -728,15 +727,15 @@ subroutine get_data_for_history_columns(s, & s, & ierr) end subroutine get_data_for_history_columns - - + + integer function num_standard_profile_columns(s) ! not inluding extra profile columns use profile, only: do_get_num_standard_profile_columns type (star_info), pointer :: s num_standard_profile_columns = do_get_num_standard_profile_columns(s) end function num_standard_profile_columns - - + + subroutine get_data_for_profile_columns(s, & nz, names, vals, is_int, ierr) use profile, only: do_get_data_for_profile_columns @@ -744,7 +743,7 @@ subroutine get_data_for_profile_columns(s, & integer, intent(in) :: nz ! note: it is the caller's job to allocate names and vals before calling ! and deallocate them when done. - ! see num_standard_profile_columns function + ! see num_standard_profile_columns function character (len=maxlen_profile_column_name), pointer :: names(:) ! (num_columns) real(dp), pointer :: vals(:,:) ! (nz,num_columns) logical, pointer :: is_int(:) ! (num_columns) true iff the values in the column are integers @@ -752,9 +751,9 @@ subroutine get_data_for_profile_columns(s, & call do_get_data_for_profile_columns(s, nz, & names, vals, is_int, ierr) end subroutine get_data_for_profile_columns + - - + ! you may want to have some data automatically saved and restored along with ! the rest of the information in a snapshot. you can do it by using the following routines. ! for example, you can check the model_number after star_load returns to see if you @@ -776,8 +775,8 @@ subroutine star_alloc_extras(id, len_extra_iwork, len_extra_work, ierr) integer, intent(out) :: ierr call alloc_extras(id, len_extra_iwork, len_extra_work, ierr) end subroutine star_alloc_extras - - + + ! if for some reason, you're no longer interested in having extra arrays, you can call this. ! it is called automatically when you call free_star, so for normal use, you don't need to ! worry about deallocating extra arrays when you are finished with a star. @@ -790,8 +789,8 @@ subroutine star_dealloc_extras(id) if (ierr /= 0) return call dealloc_extras(s) end subroutine star_dealloc_extras - - + + subroutine star_set_age(id, age, ierr) use evolve, only: set_age integer, intent(in) :: id @@ -799,8 +798,8 @@ subroutine star_set_age(id, age, ierr) integer, intent(out) :: ierr call set_age(id, age, ierr) end subroutine star_set_age - - + + ! this routine is for changing use of Rayleigh-Taylor instabilities. ! simply changes variables; doesn't reconverge the model. subroutine star_set_RTI_flag(id, RTI_flag, ierr) @@ -850,7 +849,7 @@ subroutine star_set_RSP_flag(id, RSP_flag, ierr) call set_RSP_flag(id, RSP_flag, ierr) end subroutine star_set_RSP_flag - + subroutine star_set_D_omega_flag(id, D_omega_flag, ierr) use set_flags, only: set_D_omega_flag integer, intent(in) :: id @@ -858,8 +857,8 @@ subroutine star_set_D_omega_flag(id, D_omega_flag, ierr) integer, intent(out) :: ierr call set_D_omega_flag(id, D_omega_flag, ierr) end subroutine star_set_D_omega_flag - - + + subroutine star_set_am_nu_rot_flag(id, am_nu_rot_flag, ierr) use set_flags, only: set_am_nu_rot_flag integer, intent(in) :: id @@ -868,7 +867,7 @@ subroutine star_set_am_nu_rot_flag(id, am_nu_rot_flag, ierr) call set_am_nu_rot_flag(id, am_nu_rot_flag, ierr) end subroutine star_set_am_nu_rot_flag - + ! this routine is for adding or removing velocity variables. ! simply adds or removes; doesn't reconverge the model. subroutine star_set_v_flag(id, v_flag, ierr) @@ -879,7 +878,7 @@ subroutine star_set_v_flag(id, v_flag, ierr) call set_v_flag(id, v_flag, ierr) end subroutine star_set_v_flag - + ! this routine is for adding or removing velocity variables. ! simply adds or removes; doesn't reconverge the model. subroutine star_set_u_flag(id, u_flag, ierr) @@ -889,8 +888,8 @@ subroutine star_set_u_flag(id, u_flag, ierr) integer, intent(out) :: ierr call set_u_flag(id, u_flag, ierr) end subroutine star_set_u_flag - - + + ! this routine is for adding or removing rotation variables. ! simply adds or removes; doesn't reconverge the model. subroutine star_set_rotation_flag(id, rotation_flag, ierr) @@ -914,11 +913,11 @@ subroutine star_set_rotation_flag(id, rotation_flag, ierr) call set_rotation_info(s, .false., ierr) end if end subroutine star_set_rotation_flag - - + + ! you can change the nuclear net at the start or between steps ! added species are given initial abundances based on solar scaled by initial_z - + subroutine star_change_to_new_net( & id, adjust_abundances_for_new_isos, new_net_name, ierr) use adjust_xyz, only: change_net @@ -930,7 +929,7 @@ subroutine star_change_to_new_net( & id, adjust_abundances_for_new_isos, new_net_name, ierr) end subroutine star_change_to_new_net - + subroutine star_change_to_new_small_net( & id, adjust_abundances_for_new_isos, new_small_net_name, ierr) use adjust_xyz, only: change_small_net @@ -941,8 +940,8 @@ subroutine star_change_to_new_small_net( & call change_small_net( & id, adjust_abundances_for_new_isos, new_small_net_name, ierr) end subroutine star_change_to_new_small_net - - + + ! Heger-style adaptive network (Woosley, Heger, et al, ApJSS, 151:75-102, 2004) subroutine star_adjust_net(id, & min_x_for_keep, min_x_for_n, min_x_for_add, max_Z, max_N, max_A, ierr) @@ -958,8 +957,8 @@ subroutine star_adjust_net(id, & min_x_for_keep, min_x_for_n, min_x_for_add, & max_Z, max_N, max_A, ierr) end subroutine star_adjust_net - - + + logical function is_included_in_net(id, species, ierr) integer, intent(in) :: id integer, intent(in) :: species ! a chem_id such as ihe3. see chem_def. @@ -972,11 +971,11 @@ logical function is_included_in_net(id, species, ierr) end if is_included_in_net = (s% net_iso(species) /= 0) end function is_included_in_net - - + + ! here are some routines for doing special adjustments to the star's composition - + ! set uniform composition with one of the standard metal z fractions from chem_def subroutine star_set_standard_composition(id, h1, h2, he3, he4, & which_zfracs, dump_missing_metals_into_heaviest, ierr) @@ -1011,8 +1010,8 @@ subroutine star_set_uniform_composition(id, species, xa, ierr) integer, intent(out) :: ierr call set_uniform_composition(id, species, xa, ierr) end subroutine star_set_uniform_composition - - + + subroutine star_set_composition(id, species, xa, ierr) use adjust_xyz, only: set_composition integer, intent(in) :: id @@ -1024,8 +1023,8 @@ subroutine star_set_composition(id, species, xa, ierr) if (ierr /= 0) return call set_composition(id, 1, s% nz, species, xa, ierr) end subroutine star_set_composition - - + + subroutine set_composition_in_section(id, nzlo, nzhi, species, xa, ierr) use adjust_xyz, only: set_composition integer, intent(in) :: id @@ -1035,8 +1034,8 @@ subroutine set_composition_in_section(id, nzlo, nzhi, species, xa, ierr) integer, intent(out) :: ierr call set_composition(id, nzlo, nzhi, species, xa, ierr) end subroutine set_composition_in_section - - + + subroutine change_to_xa_for_accretion(id, nzlo, nzhi, ierr) use adjust_xyz, only: do_change_to_xa_for_accretion integer, intent(in) :: id @@ -1044,8 +1043,8 @@ subroutine change_to_xa_for_accretion(id, nzlo, nzhi, ierr) integer, intent(out) :: ierr call do_change_to_xa_for_accretion(id, nzlo, nzhi, ierr) end subroutine change_to_xa_for_accretion - - + + subroutine star_set_abundance_ratio(id, i1, i2, ratio, ierr) use adjust_xyz, only: set_abundance_ratio integer, intent(in) :: id @@ -1057,8 +1056,8 @@ subroutine star_set_abundance_ratio(id, i1, i2, ratio, ierr) if (ierr /= 0) return call set_abundance_ratio(id, i1, i2, ratio, 1, s% nz, ierr) end subroutine star_set_abundance_ratio - - + + subroutine set_abundance_ratio_in_section(id, i1, i2, ratio, nzlo, nzhi, ierr) use adjust_xyz, only: set_abundance_ratio integer, intent(in) :: id @@ -1068,16 +1067,16 @@ subroutine set_abundance_ratio_in_section(id, i1, i2, ratio, nzlo, nzhi, ierr) integer, intent(out) :: ierr call set_abundance_ratio(id, i1, i2, ratio, nzlo, nzhi, ierr) end subroutine set_abundance_ratio_in_section - - + + subroutine star_zero_alpha_RTI(id, ierr) use star_utils, only: set_zero_alpha_RTI integer, intent(in) :: id integer, intent(out) :: ierr call set_zero_alpha_RTI(id, ierr) end subroutine star_zero_alpha_RTI - - + + subroutine star_set_y(id, y, ierr) ! changes abundances of h1 and he4 only ! adjust ratio of h1 to he4 to be (1-y-z)/y at each point @@ -1090,8 +1089,8 @@ subroutine star_set_y(id, y, ierr) if (ierr /= 0) return call set_y(s, y, 1, s% nz, ierr) end subroutine star_set_y - - + + subroutine set_y_in_section(id, y, nzlo, nzhi, ierr) ! change abundances of h1 and he4 use adjust_xyz, only: set_y @@ -1104,8 +1103,8 @@ subroutine set_y_in_section(id, y, nzlo, nzhi, ierr) if (ierr /= 0) return call set_y(s, y, nzlo, nzhi, ierr) end subroutine set_y_in_section - - + + subroutine star_set_z(id, new_z, ierr) ! NOTE: this routine simply changes abundances; it doesn't reconverge the model. ! to make large changes in z, you'll need to spread it out over a number of steps @@ -1119,8 +1118,8 @@ subroutine star_set_z(id, new_z, ierr) if (ierr /= 0) return call set_z(s, new_z, 1, s% nz, ierr) end subroutine star_set_z - - + + subroutine set_z_in_section(id, new_z, nzlo, nzhi, ierr) ! NOTE: this routine simply changes abundances; it doesn't reconverge the model. ! to make large changes in z, you'll need to spread it out over a number of steps @@ -1136,8 +1135,8 @@ subroutine set_z_in_section(id, new_z, nzlo, nzhi, ierr) if (ierr /= 0) return call set_z(s, new_z, nzlo, nzhi, ierr) end subroutine set_z_in_section - - + + subroutine star_replace_element(id, chem1, chem2, ierr) ! replaces chem1 by chem2. ! NOTE: this routine simply changes abundances; it doesn't reconverge the model. @@ -1149,8 +1148,8 @@ subroutine star_replace_element(id, chem1, chem2, ierr) if (ierr /= 0) return call replace_element_in_section(id, chem1, chem2, 1, s% nz, ierr) end subroutine star_replace_element - - + + subroutine replace_element_in_section(id, chem1, chem2, nzlo, nzhi, ierr) ! replaces chem1 by chem2. ! NOTE: this routine simply changes abundances; it doesn't reconverge the model. @@ -1164,8 +1163,8 @@ subroutine replace_element_in_section(id, chem1, chem2, nzlo, nzhi, ierr) if (ierr /= 0) return call do_replace(s, chem1, chem2, nzlo, nzhi, ierr) end subroutine replace_element_in_section - - + + subroutine star_set_abundance(id, chem_id, new_frac, ierr) ! set mass fraction of species to new_frac uniformly in cells nzlo to nzhi ! @@ -1179,8 +1178,8 @@ subroutine star_set_abundance(id, chem_id, new_frac, ierr) if (ierr /= 0) return call set_abundance_in_section(id, chem_id, new_frac, 1, s% nz, ierr) end subroutine star_set_abundance - - + + subroutine set_abundance_in_section(id, chem_id, new_frac, nzlo, nzhi, ierr) ! set mass fraction of species to new_frac uniformly in cells nzlo to nzhi ! NOTE: this routine simply changes abundances; it doesn't reconverge the model. @@ -1195,8 +1194,8 @@ subroutine set_abundance_in_section(id, chem_id, new_frac, nzlo, nzhi, ierr) if (ierr /= 0) return call do_set_abundance(s, chem_id, new_frac, nzlo, nzhi, ierr) end subroutine set_abundance_in_section - - + + subroutine uniform_mix_section(id, nzlo, nzhi, ierr) ! uniformly mix abundances in cells nzlo to nzhi ! NOTE: this routine simply changes abundances; it doesn't reconverge the model. @@ -1210,8 +1209,8 @@ subroutine uniform_mix_section(id, nzlo, nzhi, ierr) if (ierr /= 0) return call do_uniform_mix_section(s, s% species, nzlo, nzhi, ierr) end subroutine uniform_mix_section - - + + subroutine uniform_mix_envelope_down_to_T(id, T, ierr) ! uniformly mix abundances in cells from surface down to given temperature ! NOTE: this routine simply changes abundances; it doesn't reconverge the model. @@ -1228,13 +1227,13 @@ end subroutine uniform_mix_envelope_down_to_T ! access to the value of the next timestep - + subroutine get_dt_next(id, dt, ierr) use star_private_def integer, intent(in) :: id real(dp) , intent(out) :: dt integer, intent(out) :: ierr - type (star_info), pointer :: s + type (star_info), pointer :: s call star_ptr(id, s, ierr) if (ierr /= 0) then dt = -1 @@ -1242,14 +1241,14 @@ subroutine get_dt_next(id, dt, ierr) end if dt = s% dt_next end subroutine get_dt_next - - + + subroutine set_dt_next(id, dt, ierr) use star_private_def integer, intent(in) :: id real(dp), intent(in) :: dt integer, intent(out) :: ierr - type (star_info), pointer :: s + type (star_info), pointer :: s call star_ptr(id, s, ierr) if (ierr /= 0) return s% dt_next = dt @@ -1258,7 +1257,7 @@ end subroutine set_dt_next ! relaxation routines (for "pseudo-evolution" of the model) - + subroutine star_relax_mass(id, new_mass, lg_max_abs_mdot, ierr) ! also resets initial_mass ! acts like accretion or wind to change star mass use relax, only: do_relax_mass @@ -1267,10 +1266,10 @@ subroutine star_relax_mass(id, new_mass, lg_max_abs_mdot, ierr) ! also resets in real(dp), intent(in) :: lg_max_abs_mdot ! in log10(Msun/year) ! e.g., -8.0 for mdot of -10^-8 Msun/year integer, intent(out) :: ierr - call do_relax_mass(id, new_mass, lg_max_abs_mdot, ierr) + call do_relax_mass(id, new_mass, lg_max_abs_mdot, ierr) end subroutine star_relax_mass - - + + subroutine star_relax_mass_to_remove_H_env( & id, extra_mass, lg_max_abs_mdot, ierr) ! also resets initial_mass use relax, only: do_relax_mass @@ -1286,10 +1285,10 @@ subroutine star_relax_mass_to_remove_H_env( & if (ierr /= 0) return call get_mass_info(s, s% dm, ierr) if (ierr /= 0) return - call do_relax_mass(id, s% he_core_mass + extra_mass, lg_max_abs_mdot, ierr) + call do_relax_mass(id, s% he_core_mass + extra_mass, lg_max_abs_mdot, ierr) end subroutine star_relax_mass_to_remove_H_env - - + + subroutine star_relax_mass_scale( & id, new_mass, dlgm_per_step, change_mass_years_for_dt, ierr) ! also resets initial_mass ! rescales star mass without changing composition as function of m/mstar @@ -1299,10 +1298,10 @@ subroutine star_relax_mass_scale( & real(dp), intent(in) :: dlgm_per_step, change_mass_years_for_dt integer, intent(out) :: ierr call do_relax_mass_scale( & - id, new_mass, dlgm_per_step, change_mass_years_for_dt, ierr) + id, new_mass, dlgm_per_step, change_mass_years_for_dt, ierr) end subroutine star_relax_mass_scale - - + + subroutine star_relax_core( & id, new_core_mass, dlg_core_mass_per_step, & relax_core_years_for_dt, core_avg_rho, core_avg_eps, ierr) @@ -1316,10 +1315,10 @@ subroutine star_relax_core( & integer, intent(out) :: ierr call do_relax_core( & id, new_core_mass, dlg_core_mass_per_step, & - relax_core_years_for_dt, core_avg_rho, core_avg_eps, ierr) + relax_core_years_for_dt, core_avg_rho, core_avg_eps, ierr) end subroutine star_relax_core - - + + subroutine star_relax_M_center( & id, new_mass, dlgm_per_step, relax_M_center_dt, ierr) use relax, only: do_relax_M_center @@ -1328,10 +1327,10 @@ subroutine star_relax_M_center( & real(dp), intent(in) :: dlgm_per_step, relax_M_center_dt integer, intent(out) :: ierr call do_relax_M_center( & - id, new_mass, dlgm_per_step, relax_M_center_dt, ierr) + id, new_mass, dlgm_per_step, relax_M_center_dt, ierr) end subroutine star_relax_M_center - - + + subroutine star_relax_R_center( & id, new_R_center, dlgR_per_step, relax_R_center_dt, ierr) use relax, only: do_relax_R_center @@ -1340,10 +1339,10 @@ subroutine star_relax_R_center( & real(dp), intent(in) :: dlgR_per_step, relax_R_center_dt integer, intent(out) :: ierr call do_relax_R_center( & - id, new_R_center, dlgR_per_step, relax_R_center_dt, ierr) + id, new_R_center, dlgR_per_step, relax_R_center_dt, ierr) end subroutine star_relax_R_center - - + + subroutine star_relax_v_center( & id, new_v_center, dv_per_step, relax_v_center_dt, ierr) use relax, only: do_relax_v_center @@ -1352,10 +1351,10 @@ subroutine star_relax_v_center( & real(dp), intent(in) :: dv_per_step, relax_v_center_dt integer, intent(out) :: ierr call do_relax_v_center( & - id, new_v_center, dv_per_step, relax_v_center_dt, ierr) + id, new_v_center, dv_per_step, relax_v_center_dt, ierr) end subroutine star_relax_v_center - - + + subroutine star_relax_L_center( & id, new_L_center, dlgL_per_step, relax_L_center_dt, ierr) use relax, only: do_relax_L_center @@ -1364,50 +1363,50 @@ subroutine star_relax_L_center( & real(dp), intent(in) :: dlgL_per_step, relax_L_center_dt integer, intent(out) :: ierr call do_relax_L_center( & - id, new_L_center, dlgL_per_step, relax_L_center_dt, ierr) + id, new_L_center, dlgL_per_step, relax_L_center_dt, ierr) end subroutine star_relax_L_center - - + + subroutine star_relax_dxdt_nuc_factor(id, new_value, per_step_multiplier, ierr) use relax, only: do_relax_dxdt_nuc_factor integer, intent(in) :: id real(dp), intent(in) :: new_value real(dp), intent(in) :: per_step_multiplier integer, intent(out) :: ierr - call do_relax_dxdt_nuc_factor(id, new_value, per_step_multiplier, ierr) + call do_relax_dxdt_nuc_factor(id, new_value, per_step_multiplier, ierr) end subroutine star_relax_dxdt_nuc_factor - - + + subroutine star_relax_eps_nuc_factor(id, new_value, per_step_multiplier, ierr) use relax, only: do_relax_eps_nuc_factor integer, intent(in) :: id real(dp), intent(in) :: new_value real(dp), intent(in) :: per_step_multiplier integer, intent(out) :: ierr - call do_relax_eps_nuc_factor(id, new_value, per_step_multiplier, ierr) + call do_relax_eps_nuc_factor(id, new_value, per_step_multiplier, ierr) end subroutine star_relax_eps_nuc_factor - - + + subroutine star_relax_opacity_max(id, new_value, per_step_multiplier, ierr) use relax, only: do_relax_opacity_max integer, intent(in) :: id real(dp), intent(in) :: new_value real(dp), intent(in) :: per_step_multiplier integer, intent(out) :: ierr - call do_relax_opacity_max(id, new_value, per_step_multiplier, ierr) + call do_relax_opacity_max(id, new_value, per_step_multiplier, ierr) end subroutine star_relax_opacity_max - - + + subroutine star_relax_max_surf_dq(id, new_value, per_step_multiplier, ierr) use relax, only: do_relax_max_surf_dq integer, intent(in) :: id real(dp), intent(in) :: new_value real(dp), intent(in) :: per_step_multiplier integer, intent(out) :: ierr - call do_relax_max_surf_dq(id, new_value, per_step_multiplier, ierr) + call do_relax_max_surf_dq(id, new_value, per_step_multiplier, ierr) end subroutine star_relax_max_surf_dq - - + + subroutine star_relax_composition( & id, num_steps_to_use, num_pts, species, xa, xq, ierr) ! with normal composition changes turned off, @@ -1426,7 +1425,7 @@ subroutine star_relax_composition( & integer, intent(out) :: ierr call do_relax_composition(id, num_steps_to_use, num_pts, species, xa, xq, ierr) end subroutine star_relax_composition - + subroutine star_relax_angular_momentum( & id, max_steps_to_use, num_pts, angular_momentum, xq, ierr) ! with normal composition changes turned off, @@ -1443,7 +1442,7 @@ subroutine star_relax_angular_momentum( & integer, intent(out) :: ierr call do_relax_angular_momentum(id, max_steps_to_use, num_pts, angular_momentum, xq, ierr) end subroutine star_relax_angular_momentum - + subroutine star_relax_entropy( & id, max_steps_to_use, num_pts, entropy, xq, ierr) ! with normal composition changes turned off, @@ -1460,7 +1459,7 @@ subroutine star_relax_entropy( & integer, intent(out) :: ierr call do_relax_entropy(id, max_steps_to_use, num_pts, entropy, xq, ierr) end subroutine star_relax_entropy - + subroutine star_relax_to_xaccrete(id, num_steps_to_use, ierr) ! with normal composition changes turned off, ! incrementally revise composition to get uniform match to current accretion specs @@ -1471,7 +1470,7 @@ subroutine star_relax_to_xaccrete(id, num_steps_to_use, ierr) call do_relax_to_xaccrete(id, num_steps_to_use, ierr) end subroutine star_relax_to_xaccrete - + subroutine star_relax_Y(id, new_Y, dY, minq, maxq, ierr) ! also resets initial_y use relax, only: do_relax_Y integer, intent(in) :: id @@ -1479,10 +1478,10 @@ subroutine star_relax_Y(id, new_Y, dY, minq, maxq, ierr) ! also resets initial_y real(dp), intent(in) :: dY ! change Y by this amount per step real(dp), intent(in) :: minq, maxq ! change in this q range integer, intent(out) :: ierr - call do_relax_Y(id, new_Y, dY, minq, maxq, ierr) + call do_relax_Y(id, new_Y, dY, minq, maxq, ierr) end subroutine star_relax_Y - + subroutine star_relax_Z(id, new_z, dlnz, minq, maxq, ierr) ! also resets initial_z use relax, only: do_relax_Z integer, intent(in) :: id @@ -1490,10 +1489,10 @@ subroutine star_relax_Z(id, new_z, dlnz, minq, maxq, ierr) ! also resets initial real(dp), intent(in) :: dlnz ! change lnz by this amount per step real(dp), intent(in) :: minq, maxq ! change in this q range integer, intent(out) :: ierr - call do_relax_Z(id, new_z, dlnz, minq, maxq, ierr) + call do_relax_Z(id, new_z, dlnz, minq, maxq, ierr) end subroutine star_relax_Z - + ! the optical depth of the outermost cell is tau_factor*tau_photosphere ! for normal hydrostatic stellar evolution, tau_factor = 1 ! but in general, the limits are 0 < tau_factor <= 1, @@ -1505,10 +1504,10 @@ subroutine star_relax_tau_factor(id, new_tau_factor, dlogtau_factor, ierr) real(dp), intent(in) :: dlogtau_factor ! change log10(tau_factor) by at most this amount per step integer, intent(out) :: ierr - call do_relax_tau_factor(id, new_tau_factor, dlogtau_factor, ierr) + call do_relax_tau_factor(id, new_tau_factor, dlogtau_factor, ierr) end subroutine star_relax_tau_factor - + ! for normal stellar evolution, opacity_factor = 1 ! but for post-breakout CCSN, the expansion effects can be approximated by increasing kap. subroutine star_relax_opacity_factor(id, new_opacity_factor, dopacity_factor, ierr) @@ -1518,10 +1517,10 @@ subroutine star_relax_opacity_factor(id, new_opacity_factor, dopacity_factor, ie real(dp), intent(in) :: dopacity_factor ! change opacity_factor by at most this amount per step integer, intent(out) :: ierr - call do_relax_opacity_factor(id, new_opacity_factor, dopacity_factor, ierr) + call do_relax_opacity_factor(id, new_opacity_factor, dopacity_factor, ierr) end subroutine star_relax_opacity_factor - + subroutine star_relax_Tsurf_factor(id, new_Tsurf_factor, dlogTsurf_factor, ierr) use relax, only: do_relax_Tsurf_factor integer, intent(in) :: id @@ -1529,10 +1528,10 @@ subroutine star_relax_Tsurf_factor(id, new_Tsurf_factor, dlogTsurf_factor, ierr) real(dp), intent(in) :: dlogTsurf_factor ! change log10(Tsurf_factor) by at most this amount per step integer, intent(out) :: ierr - call do_relax_Tsurf_factor(id, new_Tsurf_factor, dlogTsurf_factor, ierr) - end subroutine star_relax_Tsurf_factor - + call do_relax_Tsurf_factor(id, new_Tsurf_factor, dlogTsurf_factor, ierr) + end subroutine star_relax_Tsurf_factor + ! kind_of_relax = 0 => target = new_omega ! kind_of_relax = 1 => target = new_omega_div_omega_crit ! kind_of_relax = 2 => target = new_surface_rotation_v @@ -1545,10 +1544,10 @@ subroutine star_relax_uniform_omega(id, & integer, intent(out) :: ierr call do_relax_uniform_omega(id, & kind_of_relax, target_value, num_steps_to_relax_rotation, & - relax_omega_max_yrs_dt, ierr) + relax_omega_max_yrs_dt, ierr) end subroutine star_relax_uniform_omega - - + + subroutine star_relax_irradiation(id, & min_steps, new_irrad_flux, new_irrad_col_depth, & relax_irradiation_max_yrs_dt, ierr) @@ -1558,10 +1557,10 @@ subroutine star_relax_irradiation(id, & new_irrad_flux, new_irrad_col_depth, relax_irradiation_max_yrs_dt integer, intent(out) :: ierr call do_relax_irradiation(id, & - min_steps, new_irrad_flux, new_irrad_col_depth, relax_irradiation_max_yrs_dt, ierr) + min_steps, new_irrad_flux, new_irrad_col_depth, relax_irradiation_max_yrs_dt, ierr) end subroutine star_relax_irradiation - - + + subroutine star_relax_mass_change( & id, min_steps, initial_mass_change, final_mass_change, relax_mass_change_max_yrs_dt, ierr) use relax, only: do_relax_mass_change @@ -1569,16 +1568,16 @@ subroutine star_relax_mass_change( & real(dp), intent(in) :: initial_mass_change, final_mass_change, relax_mass_change_max_yrs_dt integer, intent(out) :: ierr call do_relax_mass_change( & - id, min_steps, initial_mass_change, final_mass_change, relax_mass_change_max_yrs_dt, ierr) + id, min_steps, initial_mass_change, final_mass_change, relax_mass_change_max_yrs_dt, ierr) end subroutine star_relax_mass_change - - + + subroutine star_relax_num_steps(id, num_steps, max_timestep, ierr) use relax, only: do_relax_num_steps integer, intent(in) :: id, num_steps real(dp), intent(in) :: max_timestep integer, intent(out) :: ierr - call do_relax_num_steps(id, num_steps, max_timestep, ierr) + call do_relax_num_steps(id, num_steps, max_timestep, ierr) end subroutine star_relax_num_steps @@ -1588,10 +1587,10 @@ subroutine star_evolve_to_limit(id, restore_at_end, ierr) integer, intent(in) :: id logical, intent(in) :: restore_at_end integer, intent(out) :: ierr - call do_relax_to_limit(id, restore_at_end, ierr) + call do_relax_to_limit(id, restore_at_end, ierr) end subroutine star_evolve_to_limit - - + + ! evolve until check_model says to stop. ! this is intended for use in special "relax to" operations. ! for normal evolution, you will probably want to use the ./rn script. @@ -1641,10 +1640,10 @@ end function finish_model integer, intent(out) :: ierr call do_internal_evolve( & id, before_evolve, adjust_model, check_model, finish_model, & - restore_at_end, lipar, ipar, lrpar, rpar, ierr) + restore_at_end, lipar, ipar, lrpar, rpar, ierr) end subroutine star_evolve_to_check_point - - + + ! I use this sometimes for debugging. subroutine star_special_test(id, ierr) integer, intent(in) :: id @@ -1654,11 +1653,11 @@ subroutine star_special_test(id, ierr) call star_ptr(id, s, ierr) if (ierr /= 0) return end subroutine star_special_test + - - + ! rotation - + ! note: this applies to the current model only; ! subsequenct models may evolve away from solid body rotation. subroutine star_set_uniform_omega(id, omega, ierr) @@ -1669,10 +1668,10 @@ subroutine star_set_uniform_omega(id, omega, ierr) call set_uniform_omega(id, omega, ierr) end subroutine star_set_uniform_omega - + ! a few miscellaneous extra routines for special jobs - + ! call this if you want a description of the terminal log output subroutine show_log_description(id, ierr) use do_one_utils, only: do_show_log_description @@ -1680,8 +1679,8 @@ subroutine show_log_description(id, ierr) integer, intent(out) :: ierr call do_show_log_description(id, ierr) end subroutine show_log_description - - + + ! write the terminal header lines subroutine show_terminal_header(id, ierr) use do_one_utils, only: do_show_terminal_header @@ -1693,8 +1692,8 @@ subroutine show_terminal_header(id, ierr) if (ierr /= 0) return call do_show_terminal_header(s) end subroutine show_terminal_header - - + + ! write the terminal summary lines subroutine write_terminal_summary(id, ierr) use do_one_utils, only: do_terminal_summary @@ -1726,8 +1725,8 @@ subroutine star_set_power_info(s) type (star_info), pointer :: s call set_power_info(s) end subroutine star_set_power_info - - + + subroutine save_profile(id, priority, ierr) use profile, only: do_save_profiles integer, intent(in) :: id @@ -1743,8 +1742,8 @@ subroutine save_profile(id, priority, ierr) s% save_profiles_model_priority = priority call do_save_profiles(s, ierr) end subroutine save_profile - - + + subroutine star_write_profile_info(id, fname, ierr) use profile, only: write_profile_info integer, intent(in) :: id @@ -1757,14 +1756,14 @@ subroutine star_write_profile_info(id, fname, ierr) call write_profile_info(s, fname, ierr) end subroutine star_write_profile_info - + subroutine name_for_restart_file(val, photo_digits, num_string) integer, intent(in) :: val, photo_digits character (len=*), intent(out) :: num_string call string_for_model_number('x', val, photo_digits, num_string) end subroutine name_for_restart_file - + subroutine string_for_model_number(prefix, n, num_digits, num_string) use star_utils, only: get_string_for_model_number character (len=*), intent(in) :: prefix @@ -1780,8 +1779,8 @@ integer function bare_bones_check_model(id) integer, intent(in) :: id bare_bones_check_model = do_bare_bones_check_model(id) end function bare_bones_check_model - - + + ! get a value using the profile column id to specify real(dp) function val_for_profile(s, c, k) use profile_getval, only: getval_for_profile @@ -1793,8 +1792,8 @@ real(dp) function val_for_profile(s, c, k) call getval_for_profile(s, c, k, val_for_profile, int_flag, int_val) if (int_flag) val_for_profile = dble(int_val) end function val_for_profile - - + + ! get number of zones in current model integer function star_zones(id, ierr) integer, intent(in) :: id @@ -1808,7 +1807,7 @@ integer function star_zones(id, ierr) star_zones = s% nz end function star_zones - + real(dp) function get_current_y(id, ierr) use star_utils, only: eval_current_y integer, intent(in) :: id @@ -1822,7 +1821,7 @@ real(dp) function get_current_y(id, ierr) get_current_y = eval_current_y(s, 1, s% nz, ierr) end function get_current_y - + real(dp) function get_current_y_in_section(id, nzlo, nzhi, ierr) use star_utils, only: eval_current_y integer, intent(in) :: id @@ -1837,7 +1836,7 @@ real(dp) function get_current_y_in_section(id, nzlo, nzhi, ierr) get_current_y_in_section = eval_current_y(s, nzlo, nzhi, ierr) end function get_current_y_in_section - + real(dp) function get_current_y_at_point(id, k, ierr) use star_utils, only: eval_current_y integer, intent(in) :: id @@ -1852,7 +1851,7 @@ real(dp) function get_current_y_at_point(id, k, ierr) get_current_y_at_point = eval_current_y(s, k, k, ierr) end function get_current_y_at_point - + real(dp) function get_current_z(id, ierr) use star_utils, only: eval_current_z integer, intent(in) :: id @@ -1866,7 +1865,7 @@ real(dp) function get_current_z(id, ierr) get_current_z = eval_current_z(s, 1, s% nz, ierr) end function get_current_z - + real(dp) function get_current_z_in_section(id, nzlo, nzhi, ierr) use star_utils, only: eval_current_z integer, intent(in) :: id @@ -1881,7 +1880,7 @@ real(dp) function get_current_z_in_section(id, nzlo, nzhi, ierr) get_current_z_in_section = eval_current_z(s, nzlo, nzhi, ierr) end function get_current_z_in_section - + real(dp) function get_current_z_at_point(id, k, ierr) use star_utils, only: eval_current_z integer, intent(in) :: id @@ -1896,7 +1895,7 @@ real(dp) function get_current_z_at_point(id, k, ierr) get_current_z_at_point = eval_current_z(s, k, k, ierr) end function get_current_z_at_point - + real(dp) function get_current_abundance(id, iso, ierr) ! returns mass fraction for iso use star_utils, only: eval_current_abundance @@ -1913,7 +1912,7 @@ real(dp) function get_current_abundance(id, iso, ierr) eval_current_abundance(s, s% net_iso(iso), 1, s% nz, ierr) end function get_current_abundance - + real(dp) function current_abundance_in_section(id, iso, nzlo, nzhi, ierr) ! returns mass fraction for iso use star_utils, only: eval_current_abundance @@ -1931,7 +1930,7 @@ real(dp) function current_abundance_in_section(id, iso, nzlo, nzhi, ierr) eval_current_abundance(s, s% net_iso(iso), nzlo, nzhi, ierr) end function current_abundance_in_section - + real(dp) function current_abundance_at_point(id, iso, k, ierr) ! returns mass fraction for iso use star_utils, only: eval_current_abundance @@ -1941,8 +1940,8 @@ real(dp) function current_abundance_at_point(id, iso, k, ierr) integer, intent(out) :: ierr current_abundance_at_point = current_abundance_in_section(id, iso, k, k, ierr) end function current_abundance_at_point - - + + subroutine star_get_XYZ(id, xa, X, Y, Z, ierr) use star_utils, only: get_XYZ integer, intent(in) :: id @@ -1962,7 +1961,7 @@ subroutine star_xa_for_standard_metals( & h1, h2, he3, he4, which_zfracs, & dump_missing_metals_into_heaviest, xa, ierr) use adjust_xyz, only: get_xa_for_standard_metals - type (star_info), pointer :: s + type (star_info), pointer :: s integer, intent(in) :: species, chem_id(:), net_iso(:), which_zfracs real(dp), intent(in) :: h1, h2, he3, he4 ! mass fractions logical, intent(in) :: dump_missing_metals_into_heaviest @@ -1973,8 +1972,8 @@ subroutine star_xa_for_standard_metals( & h1, h2, he3, he4, which_zfracs, & dump_missing_metals_into_heaviest, xa, ierr) end subroutine star_xa_for_standard_metals - - + + subroutine star_info_at_q(s, q, & kbdy, m, r, lgT, lgRho, L, v, & lgP, g, X, Y, scale_height, dlnX_dr, dlnY_dr, dlnRho_dr, & @@ -1992,8 +1991,8 @@ subroutine star_info_at_q(s, q, & lgP, g, X, Y, scale_height, dlnX_dr, dlnY_dr, dlnRho_dr, & omega, omega_div_omega_crit) end subroutine star_info_at_q - - + + integer function get_model_number(id, ierr) integer, intent(in) :: id integer, intent(out) :: ierr @@ -2005,24 +2004,24 @@ integer function get_model_number(id, ierr) end if get_model_number = s% model_number end function get_model_number - - + + logical function check_for_after_He_burn(s, he4_limit) use star_utils, only: after_He_burn - type (star_info), pointer :: s - real(dp), intent(in) :: he4_limit + type (star_info), pointer :: s + real(dp), intent(in) :: he4_limit check_for_after_He_burn = after_He_burn(s, he4_limit) end function check_for_after_He_burn - - + + logical function check_for_after_C_burn(s, c12_limit) use star_utils, only: after_C_burn - type (star_info), pointer :: s - real(dp), intent(in) :: c12_limit + type (star_info), pointer :: s + real(dp), intent(in) :: c12_limit check_for_after_C_burn = after_C_burn(s, c12_limit) end function check_for_after_C_burn - - + + ! intrinsic variables like T, Rho, kap, etc. are cell averages ! this routine returns an interpolated value at outer boundary of cell k real(dp) function star_interp_val_to_pt(v,k,sz,dq,debug_str) @@ -2043,8 +2042,8 @@ real(dp) function star_interp_xa_to_pt(xa,j,k,sz,dq,debug_str) star_interp_xa_to_pt = interp_xa_to_pt(xa,j,k,sz,dq,debug_str) end function star_interp_xa_to_pt ! misc routines - - + + subroutine star_set_xqs(nz, xq, dq, ierr) ! set xq's using dq's use star_utils, only: set_xqs integer, intent(in) :: nz @@ -2053,8 +2052,8 @@ subroutine star_set_xqs(nz, xq, dq, ierr) ! set xq's using dq's integer, intent(out) :: ierr call set_xqs(nz, xq, dq, ierr) end subroutine star_set_xqs - - + + subroutine star_get_eos( & id, k, xa, & Rho, logRho, T, logT, & @@ -2079,7 +2078,7 @@ subroutine star_get_eos( & res, dres_dlnRho, dres_dlnT, & dres_dxa, ierr) end subroutine star_get_eos - + subroutine star_get_peos( & id, k, xa, & Pgas, logPgas, T, logT, & @@ -2097,7 +2096,7 @@ subroutine star_get_peos( & res, dres_dlnRho, dres_dlnT real(dp), intent(out) :: dres_dxa(:,:) integer, intent(out) :: ierr - type (star_info), pointer :: s + !type (star_info), pointer :: s !ierr = 0 !call star_ptr(id, s, ierr) !if (ierr /= 0) return @@ -2110,7 +2109,7 @@ subroutine star_get_peos( & write(*,*) 'star_get_peos no longer supported' call mesa_error(__FILE__,__LINE__) end subroutine star_get_peos - + subroutine star_solve_eos_given_PgasT( & id, k, xa, & logT, logPgas, logRho_guess, logRho_tol, logPgas_tol, & @@ -2126,7 +2125,7 @@ subroutine star_solve_eos_given_PgasT( & real(dp), intent(out) :: logRho real(dp), dimension(num_eos_basic_results), intent(out) :: & res, dres_dlnRho, dres_dlnT - real(dp), dimension(:,:), intent(out) :: dres_dxa + real(dp), dimension(:,:), intent(out) :: dres_dxa integer, intent(out) :: ierr type (star_info), pointer :: s ierr = 0 @@ -2137,8 +2136,8 @@ subroutine star_solve_eos_given_PgasT( & logT, logPgas, logRho_guess, logRho_tol, logPgas_tol, & logRho, res, dres_dlnRho, dres_dlnT, dres_dxa, & ierr) - end subroutine star_solve_eos_given_PgasT - + end subroutine star_solve_eos_given_PgasT + subroutine star_solve_eos_given_PgasT_auto( & id, k, xa, & logT, logPgas, logRho_tol, logPgas_tol, & @@ -2147,7 +2146,7 @@ subroutine star_solve_eos_given_PgasT_auto( & use eos_def, only: num_eos_basic_results, num_eos_d_dxa_results use eos_support, only: solve_eos_given_PgasT_auto use star_def - integer, intent(in) :: id ! id for star + integer, intent(in) :: id ! id for star integer, intent(in) :: k ! 0 indicates not for a particular cell. real(dp), intent(in) :: & xa(:), logT, logPgas, & @@ -2157,9 +2156,9 @@ subroutine star_solve_eos_given_PgasT_auto( & res, dres_dlnRho, dres_dlnT real(dp), dimension(:,:), intent(out) :: dres_dxa integer, intent(out) :: ierr - type (star_info), pointer :: s + type (star_info), pointer :: s call star_ptr(id, s, ierr) - if (ierr /= 0) return + if (ierr /= 0) return call solve_eos_given_PgasT_auto( & s, k, xa, & logT, logPgas, logRho_tol, logPgas_tol, & @@ -2193,7 +2192,7 @@ subroutine star_get_kap( & eta, deta_dlnRho, deta_dlnT, & kap_fracs, kap, dlnkap_dlnRho, dlnkap_dlnT, ierr) end subroutine star_get_kap - + subroutine star_do_eos_for_cell(id, k, ierr) use micro, only: do_eos_for_cell integer, intent(in) :: id @@ -2206,7 +2205,7 @@ subroutine star_do_eos_for_cell(id, k, ierr) call do_eos_for_cell(s, k, ierr) end subroutine star_do_eos_for_cell - + subroutine star_do_kap_for_cell(id, k, ierr) use micro, only: do_kap_for_cell integer, intent(in) :: id @@ -2219,7 +2218,7 @@ subroutine star_do_kap_for_cell(id, k, ierr) call do_kap_for_cell(s, k, ierr) end subroutine star_do_kap_for_cell - + subroutine star_get_atm_PT( & id, tau_surf, L, R, M, cgrav, skip_partials, Teff, & lnT_surf, dlnT_dL, dlnT_dlnR, dlnT_dlnM, dlnT_dlnkap, & @@ -2246,7 +2245,7 @@ subroutine star_get_atm_PT( & ierr) end subroutine star_get_atm_PT - + subroutine star_get_surf_PT( & id, skip_partials, need_atm_Psurf, need_atm_Tsurf, & lnT_surf, dlnT_dL, dlnT_dlnR, dlnT_dlnM, dlnT_dlnkap, & @@ -2268,8 +2267,8 @@ subroutine star_get_surf_PT( & lnT_surf, dlnT_dL, dlnT_dlnR, dlnT_dlnM, dlnT_dlnkap, & lnP_surf, dlnP_dL, dlnP_dlnR, dlnP_dlnM, dlnP_dlnkap, & ierr) - end subroutine star_get_surf_PT - + end subroutine star_get_surf_PT + integer function get_result_reason(id, ierr) integer, intent(in) :: id integer, intent(out) :: ierr @@ -2281,7 +2280,7 @@ integer function get_result_reason(id, ierr) end if get_result_reason = s% result_reason end function get_result_reason - + real(dp) function eval_tau_at_r(id, r, ierr) ! optical depth tau at radius r (cm) ! r should be <= s% r(1) and >= s% Rcenter @@ -2298,8 +2297,8 @@ real(dp) function eval_tau_at_r(id, r, ierr) end if eval_tau_at_r = get_tau_at_r(s, r, ierr) end function eval_tau_at_r - - + + real(dp) function eval_total_times(id, ierr) use star_utils, only: total_times integer, intent(in) :: id @@ -2312,15 +2311,15 @@ real(dp) function eval_total_times(id, ierr) end if eval_total_times = total_times(s) end function eval_total_times - - + + subroutine star_total_energy_integrals(id, & total_internal_energy, total_gravitational_energy, & total_radial_kinetic_energy, total_rotational_kinetic_energy, & total_turbulent_energy, sum_total, ierr) use star_utils, only: eval_total_energy_integrals integer, intent(in) :: id - real(dp), intent(out) :: & + real(dp), intent(out) :: & total_internal_energy, total_gravitational_energy, & total_radial_kinetic_energy, total_rotational_kinetic_energy, & total_turbulent_energy, sum_total @@ -2333,8 +2332,8 @@ subroutine star_total_energy_integrals(id, & total_radial_kinetic_energy, total_rotational_kinetic_energy, & total_turbulent_energy, sum_total) end subroutine star_total_energy_integrals - - + + real(dp) function star_surface_omega_crit(id, ierr) use hydro_rotation, only: set_surf_avg_rotation_info integer, intent(in) :: id @@ -2348,8 +2347,8 @@ real(dp) function star_surface_omega_crit(id, ierr) call set_surf_avg_rotation_info(s) star_surface_omega_crit = s% omega_crit_avg_surf end function star_surface_omega_crit - - + + ! some routines for "stellar engineering" subroutine star_normalize_dqs(id, nz, dq, ierr) @@ -2379,8 +2378,8 @@ subroutine star_set_qs(id, nz, q, dq, ierr) ! set q's using normalized dq's if (ierr /= 0) return call set_qs(s, nz, q, dq, ierr) end subroutine star_set_qs - - + + subroutine star_set_m_and_dm(id, ierr) use star_utils, only: set_m_and_dm integer, intent(in) :: id @@ -2391,8 +2390,8 @@ subroutine star_set_m_and_dm(id, ierr) if (ierr /= 0) return call set_m_and_dm(s) end subroutine star_set_m_and_dm - - + + subroutine star_set_dm_bar(id, ierr) use star_utils, only: set_dm_bar integer, intent(in) :: id @@ -2403,137 +2402,137 @@ subroutine star_set_dm_bar(id, ierr) if (ierr /= 0) return call set_dm_bar(s, s% nz, s% dm, s% dm_bar) end subroutine star_set_dm_bar - - + + subroutine star_remove_center_at_cell_k(id, k, ierr) use remove_shells, only: do_remove_center_at_cell_k integer, intent(in) :: id, k integer, intent(out) :: ierr - call do_remove_center_at_cell_k(id, k, ierr) + call do_remove_center_at_cell_k(id, k, ierr) end subroutine star_remove_center_at_cell_k - - + + subroutine star_remove_center_by_temperature(id, temperature, ierr) use remove_shells, only: do_remove_center_by_temperature integer, intent(in) :: id real(dp), intent(in) :: temperature integer, intent(out) :: ierr - call do_remove_center_by_temperature(id, temperature, ierr) + call do_remove_center_by_temperature(id, temperature, ierr) end subroutine star_remove_center_by_temperature - - + + subroutine star_remove_center_by_radius_cm(id, r_cm, ierr) use remove_shells, only: do_remove_center_by_radius_cm integer, intent(in) :: id real(dp), intent(in) :: r_cm integer, intent(out) :: ierr - call do_remove_center_by_radius_cm(id, r_cm, ierr) + call do_remove_center_by_radius_cm(id, r_cm, ierr) end subroutine star_remove_center_by_radius_cm - - + + subroutine star_remove_center_by_mass_fraction_q(id, q, ierr) use remove_shells, only: do_remove_inner_fraction_q integer, intent(in) :: id real(dp), intent(in) :: q integer, intent(out) :: ierr - call do_remove_inner_fraction_q(id, q, ierr) + call do_remove_inner_fraction_q(id, q, ierr) end subroutine star_remove_center_by_mass_fraction_q - - + + subroutine star_remove_center_by_he4(id, x, ierr) use remove_shells, only: do_remove_center_by_he4 integer, intent(in) :: id real(dp), intent(in) :: x ! mass fraction integer, intent(out) :: ierr - call do_remove_center_by_he4(id, x, ierr) + call do_remove_center_by_he4(id, x, ierr) end subroutine star_remove_center_by_he4 - - + + subroutine star_remove_center_by_c12_o16(id, x, ierr) use remove_shells, only: do_remove_center_by_c12_o16 integer, intent(in) :: id real(dp), intent(in) :: x ! mass fraction integer, intent(out) :: ierr - call do_remove_center_by_c12_o16(id, x, ierr) + call do_remove_center_by_c12_o16(id, x, ierr) end subroutine star_remove_center_by_c12_o16 - - + + subroutine star_remove_center_by_si28(id, x, ierr) use remove_shells, only: do_remove_center_by_si28 integer, intent(in) :: id real(dp), intent(in) :: x ! mass fraction integer, intent(out) :: ierr - call do_remove_center_by_si28(id, x, ierr) + call do_remove_center_by_si28(id, x, ierr) end subroutine star_remove_center_by_si28 - - + + subroutine star_remove_center_to_reduce_co56_ni56(id, x, ierr) use remove_shells, only: do_remove_center_to_reduce_co56_ni56 integer, intent(in) :: id real(dp), intent(in) :: x ! mass fraction integer, intent(out) :: ierr - call do_remove_center_to_reduce_co56_ni56(id, x, ierr) + call do_remove_center_to_reduce_co56_ni56(id, x, ierr) end subroutine star_remove_center_to_reduce_co56_ni56 - - + + subroutine star_remove_center_by_ye(id, ye, ierr) use remove_shells, only: do_remove_center_by_ye integer, intent(in) :: id real(dp), intent(in) :: ye integer, intent(out) :: ierr - call do_remove_center_by_ye(id, ye, ierr) + call do_remove_center_by_ye(id, ye, ierr) end subroutine star_remove_center_by_ye - - + + subroutine star_remove_center_by_entropy(id, entropy, ierr) use remove_shells, only: do_remove_center_by_entropy integer, intent(in) :: id real(dp), intent(in) :: entropy integer, intent(out) :: ierr - call do_remove_center_by_entropy(id, entropy, ierr) + call do_remove_center_by_entropy(id, entropy, ierr) end subroutine star_remove_center_by_entropy - - + + subroutine star_remove_center_by_infall_kms(id, infall_kms, ierr) use remove_shells, only: do_remove_center_by_infall_kms integer, intent(in) :: id real(dp), intent(in) :: infall_kms integer, intent(out) :: ierr - call do_remove_center_by_infall_kms(id, infall_kms, ierr) + call do_remove_center_by_infall_kms(id, infall_kms, ierr) end subroutine star_remove_center_by_infall_kms - - + + subroutine star_remove_center_at_inner_max_abs_v(id, ierr) use remove_shells, only: do_remove_center_at_inner_max_abs_v integer, intent(in) :: id integer, intent(out) :: ierr - call do_remove_center_at_inner_max_abs_v(id, ierr) + call do_remove_center_at_inner_max_abs_v(id, ierr) end subroutine star_remove_center_at_inner_max_abs_v - - + + subroutine star_remove_fe_core(id, ierr) use remove_shells, only: do_remove_fe_core integer, intent(in) :: id integer, intent(out) :: ierr - call do_remove_fe_core(id, ierr) + call do_remove_fe_core(id, ierr) end subroutine star_remove_fe_core - - + + subroutine star_remove_center_by_mass_gm(id, m, ierr) use remove_shells, only: do_remove_center_by_mass_gm integer, intent(in) :: id real(dp), intent(in) :: m integer, intent(out) :: ierr - call do_remove_center_by_mass_gm(id, m, ierr) + call do_remove_center_by_mass_gm(id, m, ierr) end subroutine star_remove_center_by_mass_gm - - + + subroutine star_zero_inner_v_by_mass_gm(id, m, ierr) use remove_shells, only: do_zero_inner_v_by_mass_gm integer, intent(in) :: id real(dp), intent(in) :: m integer, intent(out) :: ierr - call do_zero_inner_v_by_mass_gm(id, m, ierr) + call do_zero_inner_v_by_mass_gm(id, m, ierr) end subroutine star_zero_inner_v_by_mass_gm @@ -2546,134 +2545,134 @@ subroutine star_relax_to_star_cut(& logical, intent(in) :: turn_off_energy_sources_and_sinks ! determines if we turn off non_nuc_neu and eps_nuc for entropy relax integer, intent(out) :: ierr - call do_relax_to_star_cut(id, k_remove, do_jrot, do_entropy, turn_off_energy_sources_and_sinks, ierr) + call do_relax_to_star_cut(id, k_remove, do_jrot, do_entropy, turn_off_energy_sources_and_sinks, ierr) end subroutine star_relax_to_star_cut - - + + subroutine star_remove_surface_by_v_surf_km_s(id, v_surf_km_s, ierr) use remove_shells, only: do_remove_surface_by_v_surf_km_s integer, intent(in) :: id real(dp), intent(in) :: v_surf_km_s integer, intent(out) :: ierr - call do_remove_surface_by_v_surf_km_s(id, v_surf_km_s, ierr) + call do_remove_surface_by_v_surf_km_s(id, v_surf_km_s, ierr) end subroutine star_remove_surface_by_v_surf_km_s - - + + subroutine star_remove_surface_by_v_surf_div_cs(id, v_surf_div_cs, ierr) use remove_shells, only: do_remove_surface_by_v_surf_div_cs integer, intent(in) :: id real(dp), intent(in) :: v_surf_div_cs integer, intent(out) :: ierr - call do_remove_surface_by_v_surf_div_cs(id, v_surf_div_cs, ierr) + call do_remove_surface_by_v_surf_div_cs(id, v_surf_div_cs, ierr) end subroutine star_remove_surface_by_v_surf_div_cs - - + + subroutine star_remove_surface_by_v_surf_div_v_escape(id, v_surf_div_v_escape, ierr) use remove_shells, only: do_remove_surface_by_v_surf_div_v_escape integer, intent(in) :: id real(dp), intent(in) :: v_surf_div_v_escape integer, intent(out) :: ierr - call do_remove_surface_by_v_surf_div_v_escape(id, v_surf_div_v_escape, ierr) + call do_remove_surface_by_v_surf_div_v_escape(id, v_surf_div_v_escape, ierr) end subroutine star_remove_surface_by_v_surf_div_v_escape - - + + subroutine star_remove_surface_at_cell_k(id, k, ierr) use remove_shells, only: do_remove_surface_at_cell_k integer, intent(in) :: id, k integer, intent(out) :: ierr - call do_remove_surface_at_cell_k(id, k, ierr) + call do_remove_surface_at_cell_k(id, k, ierr) end subroutine star_remove_surface_at_cell_k - - + + subroutine star_remove_surface_at_he_core_boundary(id, h1_fraction, ierr) use remove_shells, only: do_remove_surface_at_he_core_boundary integer, intent(in) :: id real(dp), intent(in) :: h1_fraction integer, intent(out) :: ierr - call do_remove_surface_at_he_core_boundary(id, h1_fraction, ierr) + call do_remove_surface_at_he_core_boundary(id, h1_fraction, ierr) end subroutine star_remove_surface_at_he_core_boundary - - + + subroutine star_remove_surface_by_optical_depth(id, optical_depth, ierr) use remove_shells, only: do_remove_surface_by_optical_depth integer, intent(in) :: id real(dp), intent(in) :: optical_depth integer, intent(out) :: ierr - call do_remove_surface_by_optical_depth(id, optical_depth, ierr) + call do_remove_surface_by_optical_depth(id, optical_depth, ierr) end subroutine star_remove_surface_by_optical_depth - + subroutine star_remove_surface_by_density(id, density, ierr) use remove_shells, only: do_remove_surface_by_density integer, intent(in) :: id real(dp), intent(in) :: density integer, intent(out) :: ierr - call do_remove_surface_by_density(id, density, ierr) + call do_remove_surface_by_density(id, density, ierr) end subroutine star_remove_surface_by_density - - + + subroutine star_remove_surface_by_pressure(id, pressure, ierr) use remove_shells, only: do_remove_surface_by_pressure integer, intent(in) :: id real(dp), intent(in) :: pressure integer, intent(out) :: ierr - call do_remove_surface_by_pressure(id, pressure, ierr) + call do_remove_surface_by_pressure(id, pressure, ierr) end subroutine star_remove_surface_by_pressure - - + + subroutine star_remove_surface_by_radius_cm(id, r_cm, ierr) use remove_shells, only: do_remove_surface_by_radius_cm integer, intent(in) :: id real(dp), intent(in) :: r_cm integer, intent(out) :: ierr - call do_remove_surface_by_radius_cm(id, r_cm, ierr) + call do_remove_surface_by_radius_cm(id, r_cm, ierr) end subroutine star_remove_surface_by_radius_cm - - + + subroutine star_remove_surface_by_mass_fraction_q(id, q, ierr) use remove_shells, only: do_remove_surface_by_q integer, intent(in) :: id real(dp), intent(in) :: q integer, intent(out) :: ierr - call do_remove_surface_by_q(id, q, ierr) + call do_remove_surface_by_q(id, q, ierr) end subroutine star_remove_surface_by_mass_fraction_q - - + + subroutine star_remove_surface_by_mass_gm(id, m, ierr) use remove_shells, only: do_remove_surface_by_mass_gm integer, intent(in) :: id real(dp), intent(in) :: m integer, intent(out) :: ierr - call do_remove_surface_by_mass_gm(id, m, ierr) + call do_remove_surface_by_mass_gm(id, m, ierr) end subroutine star_remove_surface_by_mass_gm - - + + subroutine star_limit_center_logP(id, logP_limit, ierr) use remove_shells, only: do_limit_center_logP integer, intent(in) :: id real(dp), intent(in) :: logP_limit integer, intent(out) :: ierr - call do_limit_center_logP(id, logP_limit, ierr) + call do_limit_center_logP(id, logP_limit, ierr) end subroutine star_limit_center_logP - - + + subroutine star_remove_center_by_logRho(id, logRho_limit, ierr) use remove_shells, only: do_remove_center_by_logRho integer, intent(in) :: id real(dp), intent(in) :: logRho_limit integer, intent(out) :: ierr - call do_remove_center_by_logRho(id, logRho_limit, ierr) + call do_remove_center_by_logRho(id, logRho_limit, ierr) end subroutine star_remove_center_by_logRho - - + + subroutine star_remove_fallback(id, ierr) use remove_shells, only: do_remove_fallback integer, intent(in) :: id integer, intent(out) :: ierr - call do_remove_fallback(id, ierr) + call do_remove_fallback(id, ierr) end subroutine star_remove_fallback - + subroutine smooth_abundances_in_section(id, cnt, nzlo, nzhi, ierr) ! purely for cosmetic purposes. doesn't even try to conserve abundances. use star_utils, only: smooth_abundances @@ -2720,7 +2719,7 @@ subroutine smooth_values_by_mass( & s, boxcar_mass, number_iterations, val, ierr) end subroutine smooth_values_by_mass - + ! PGSTAR interface subroutine start_new_run_for_pgstar(s, ierr) ! reset logs use pgstar @@ -2728,8 +2727,8 @@ subroutine start_new_run_for_pgstar(s, ierr) ! reset logs integer, intent(out) :: ierr call do_start_new_run_for_pgstar(s, ierr) end subroutine start_new_run_for_pgstar - - + + subroutine restart_run_for_pgstar(s, ierr) use pgstar type (star_info), pointer :: s @@ -2766,8 +2765,8 @@ subroutine update_pgstar_plots( & s, must_write_files, & ierr) end subroutine update_pgstar_plots - - + + subroutine create_pgstar_file_name(s, dir, prefix, name) use pgstar, only: do_create_file_name type (star_info), pointer :: s @@ -2786,8 +2785,8 @@ subroutine pgstar_write_plot_to_file(s, p, filename, ierr) integer, intent(out) :: ierr call do_write_plot_to_file(s, p, filename, ierr) end subroutine pgstar_write_plot_to_file - - + + subroutine set_pgstar_xaxis_bounds( & s, xaxis_by, win_xmin_in, win_xmax_in, xmargin, & xvec, xmin, xmax, xleft, xright, dx, & @@ -2805,8 +2804,8 @@ subroutine set_pgstar_xaxis_bounds( & xvec, xmin, xmax, xleft, xright, dx, & grid_min, grid_max, npts, ierr) end subroutine set_pgstar_xaxis_bounds - - + + subroutine show_pgstar_xaxis_by(s,by,ierr) use pgstar, only: do_show_xaxis_by type (star_info), pointer :: s @@ -2814,8 +2813,8 @@ subroutine show_pgstar_xaxis_by(s,by,ierr) integer, intent(out) :: ierr call do_show_xaxis_by(s,by,ierr) end subroutine show_pgstar_xaxis_by - - + + subroutine show_pgstar_annotations( & s, show_annotation1, show_annotation2, show_annotation3) use pgstar, only: do_show_pgstar_annotations @@ -2824,17 +2823,17 @@ subroutine show_pgstar_annotations( & show_annotation1, show_annotation2, show_annotation3 call do_show_pgstar_annotations( & s, show_annotation1, show_annotation2, show_annotation3) - end subroutine show_pgstar_annotations - + end subroutine show_pgstar_annotations + subroutine pgstar_show_box(s, str1, str2) use pgstar, only: show_box_pgstar type (star_info), pointer :: s character (len=*), intent(in) :: str1, str2 call show_box_pgstar(s, str1, str2) end subroutine pgstar_show_box - - + + subroutine pgstar_show_title(s, title, pad) use pgstar, only: show_title_pgstar type (star_info), pointer :: s @@ -2846,8 +2845,8 @@ subroutine pgstar_show_title(s, title, pad) if (present(pad)) pad_arg = pad call show_title_pgstar(s, title, pad_arg) end subroutine pgstar_show_title - - + + subroutine pgstar_show_xaxis_label(s, label, pad) use pgstar, only: show_xaxis_label_pgstar type (star_info), pointer :: s @@ -2859,8 +2858,8 @@ subroutine pgstar_show_xaxis_label(s, label, pad) if (present(pad)) pad_arg = pad call show_xaxis_label_pgstar(s, label, pad_arg) end subroutine pgstar_show_xaxis_label - - + + subroutine pgstar_show_left_yaxis_label(s, label, pad) use pgstar, only: show_left_yaxis_label_pgstar type (star_info), pointer :: s @@ -2872,8 +2871,8 @@ subroutine pgstar_show_left_yaxis_label(s, label, pad) if (present(pad)) pad_arg = pad call show_left_yaxis_label_pgstar(s, label, pad_arg) end subroutine pgstar_show_left_yaxis_label - - + + subroutine pgstar_show_right_yaxis_label(s, label, pad) use pgstar, only: show_right_yaxis_label_pgstar type (star_info), pointer :: s @@ -2885,8 +2884,8 @@ subroutine pgstar_show_right_yaxis_label(s, label, pad) if (present(pad)) pad_arg = pad call show_right_yaxis_label_pgstar(s, label, pad_arg) end subroutine pgstar_show_right_yaxis_label - - + + subroutine pgstar_show_left_axis_label_pgmtxt( & s, coord, fjust, label, pad) use pgstar, only: show_left_yaxis_label_pgmtxt_pgstar @@ -2900,8 +2899,8 @@ subroutine pgstar_show_left_axis_label_pgmtxt( & call show_left_yaxis_label_pgmtxt_pgstar( & s, coord, fjust, label, pad) end subroutine pgstar_show_left_axis_label_pgmtxt - - + + subroutine pgstar_show_right_axis_label_pgmtxt( & s, coord, fjust, label, pad) use pgstar, only: show_right_yaxis_label_pgmtxt_pgstar @@ -2915,15 +2914,15 @@ subroutine pgstar_show_right_axis_label_pgmtxt( & call show_right_yaxis_label_pgmtxt_pgstar( & s, coord, fjust, label, pad) end subroutine pgstar_show_right_axis_label_pgmtxt - - + + subroutine pgstar_show_model_number(s) use pgstar, only: show_model_number_pgstar type (star_info), pointer :: s call show_model_number_pgstar(s) end subroutine pgstar_show_model_number - - + + subroutine pgstar_show_age(s) use pgstar, only: show_age_pgstar type (star_info), pointer :: s @@ -2940,8 +2939,8 @@ subroutine star_history_specs(s, num, names, specs, report) logical, intent(in) :: report call get_history_specs(s, num, names, specs, report) end subroutine star_history_specs - - + + subroutine star_history_values(s, num, specs, & is_int_value, int_values, values, failed_to_find_value) use history, only: get_history_values @@ -3019,7 +3018,7 @@ end function star_get1_history_value real(dp) function star_get_history_output(s, name, ierr) ! If error return -huge(double) and ierr = 1, if provided use history, only: get_history_specs, get_history_values, get1_hist_value - type (star_info), pointer :: s + type (star_info), pointer :: s character(len=*), intent(in) :: name integer, intent(out), optional :: ierr integer, parameter :: num_rows = 1 @@ -3059,21 +3058,21 @@ real(dp) function star_get_history_output_by_id(id, name, ierr_opt) star_get_history_output_by_id = star_get_history_output(s, name, ierr) if (present(ierr_opt)) ierr_opt = ierr end function star_get_history_output_by_id - - + + subroutine star_set_mlt_vars(id, nzlo, nzhi, ierr) use turb_info, only: set_mlt_vars use star_def - integer, intent(in) :: id ! id for star - integer, intent(in) :: nzlo, nzhi ! range of cell numbers + integer, intent(in) :: id ! id for star + integer, intent(in) :: nzlo, nzhi ! range of cell numbers integer, intent(inout) :: ierr - type (star_info), pointer :: s + type (star_info), pointer :: s call star_ptr(id, s, ierr) - if (ierr /= 0) return + if (ierr /= 0) return call set_mlt_vars(s, nzlo, nzhi, ierr) end subroutine star_set_mlt_vars - + subroutine star_mlt_gradT(id, MLT_option, & ! can be useful when creating models r, L, T, P, opacity, rho, chiRho, chiT, Cp, gradr, grada, scale_height, & iso, XH1, cgrav, m, gradL_composition_term, mixing_length_alpha, & @@ -3088,13 +3087,13 @@ subroutine star_mlt_gradT(id, MLT_option, & ! can be useful when creating models integer, intent(in) :: iso real(dp), intent(out) :: gradT, Y_face, conv_vel, D, Gamma integer, intent(out) :: mixing_type, ierr - type (star_info), pointer :: s + type (star_info), pointer :: s call star_ptr(id, s, ierr) - if (ierr /= 0) return + if (ierr /= 0) return call get_gradT(s, MLT_option, & r, L, T, P, opacity, rho, chiRho, chiT, Cp, gradr, grada, scale_height, & iso, XH1, cgrav, m, gradL_composition_term, mixing_length_alpha, & - mixing_type, gradT, Y_face, conv_vel, D, Gamma, ierr) + mixing_type, gradT, Y_face, conv_vel, D, Gamma, ierr) end subroutine star_mlt_gradT @@ -3120,9 +3119,9 @@ subroutine star_mlt_results(id, k, MLT_option, & ! NOTE: k=0 is a valid arg gradT, Y_face, conv_vel, D, Gamma integer, intent(out) :: ierr type(auto_diff_real_star_order1) :: dV - type (star_info), pointer :: s + type (star_info), pointer :: s call star_ptr(id, s, ierr) - if (ierr /= 0) return + if (ierr /= 0) return dV = 0d0 ! dV = 1/rho - 1/rho_start and we assume rho = rho_start. call Get_results(s, k, MLT_option, & r, L, T, P, opacity, rho, dV, chiRho, chiT, Cp, gradr, grada, scale_height, & @@ -3136,26 +3135,26 @@ subroutine star_do_garbage_collection(id, ierr) use init, only: do_garbage_collection integer, intent(in) :: id integer, intent(inout) :: ierr - type (star_info), pointer :: s + type (star_info), pointer :: s call star_ptr(id, s, ierr) - if (ierr /= 0) return + if (ierr /= 0) return call do_garbage_collection(s% job% eosDT_cache_dir, ierr) - if (ierr /= 0) return + if (ierr /= 0) return end subroutine star_do_garbage_collection - - + + subroutine star_shutdown_pgstar(id, ierr) use pgstar, only: shutdown_pgstar integer, intent(in) :: id ! id for star integer, intent(out) :: ierr - type (star_info), pointer :: s - ierr = 0 + type (star_info), pointer :: s + ierr = 0 call star_ptr(id, s, ierr) - if (ierr /= 0) return - call shutdown_pgstar(s) + if (ierr /= 0) return + call shutdown_pgstar(s) end subroutine star_shutdown_pgstar - + subroutine star_create_RSP_model(id, ierr) use init, only: create_RSP_model integer, intent(in) :: id @@ -3163,7 +3162,7 @@ subroutine star_create_RSP_model(id, ierr) call create_RSP_model(id, ierr) end subroutine star_create_RSP_model - + subroutine star_create_RSP2_model(id, ierr) use init, only: create_RSP2_model integer, intent(in) :: id @@ -3171,7 +3170,7 @@ subroutine star_create_RSP2_model(id, ierr) call create_RSP2_model(id, ierr) end subroutine star_create_RSP2_model - + subroutine star_do1_rsp_build(s,ierr) ! call from other_rsp_build_model after changing params. ! can change rsp_* params; but cannot change nz or net. @@ -3181,8 +3180,8 @@ subroutine star_do1_rsp_build(s,ierr) integer, intent(out) :: ierr call do1_rsp_build(s,ierr) end subroutine star_do1_rsp_build - - + + subroutine rsp_do1_eos_and_kap(s,k,ierr) use rsp_step, only : do1_eos_and_kap type (star_info), pointer :: s @@ -3190,8 +3189,8 @@ subroutine rsp_do1_eos_and_kap(s,k,ierr) integer, intent(out) :: ierr call do1_eos_and_kap(s,s% nz+1-k,ierr) end subroutine rsp_do1_eos_and_kap - - + + integer function check_change_timestep_limit( & id, delta_value, lim, hard_lim, i, msg, & skip_hard_limit, dt_limit_ratio, relative_excess) @@ -3217,8 +3216,8 @@ integer function check_change_timestep_limit( & s, delta_value, lim, hard_lim, i, msg, & skip_hard_limit, dt_limit_ratio, relative_excess) end function check_change_timestep_limit - - + + integer function check_change_integer_timestep_limit( & id, limit, hard_limit, value, msg, skip_hard_limit, dt, dt_limit_ratio) use const_def, only:ln10 @@ -3241,8 +3240,8 @@ integer function check_change_integer_timestep_limit( & check_change_integer_timestep_limit = check_integer_limit( & s, limit, hard_limit, value, msg, skip_hard_limit, dt, dt_limit_ratio) end function check_change_integer_timestep_limit - - + + real(dp) function star_remnant_mass(id) use star_utils, only: get_remnant_mass integer, intent(in) :: id @@ -3252,8 +3251,8 @@ real(dp) function star_remnant_mass(id) call star_ptr(id, s, ierr) star_remnant_mass = get_remnant_mass(s) end function star_remnant_mass - - + + real(dp) function star_ejecta_mass(id) use star_utils, only: get_ejecta_mass integer, intent(in) :: id @@ -3276,8 +3275,8 @@ subroutine star_init_star_handles() use star_private_def, only: init_star_handles call init_star_handles() end subroutine star_init_star_handles - - + + subroutine star_get_control_namelist(id, name, val, ierr) use ctrls_io, only: get_control integer, intent(in) :: id diff --git a/star/test/make/makefile_base b/star/test/make/makefile_base index 9e4a8ee80..99e2f53d4 100644 --- a/star/test/make/makefile_base +++ b/star/test/make/makefile_base @@ -49,9 +49,7 @@ nodeps : $(.DEFAULT_GOAL) # # COMPILATION RULES -################################################################# - -%.o: %.f +%.o: %.f90 ifneq ($(QUIET),) @echo TEST_COMPILE $< @$(TEST_COMPILE) $(FCfree) $< @@ -59,22 +57,12 @@ else $(TEST_COMPILE) $(FCfree) $< endif -%.o: %.f90 -ifneq ($(QUIET),) - @echo TEST_COMPILE $< - @$(TEST_COMPILE) $< -else - $(TEST_COMPILE) $< -endif - - ################################################################# # # DEPENDENCIES SRC_PATH = $(TEST_SRC_DIR):$(MESA_DIR)/star/job -vpath %.f $(SRC_PATH) vpath %.f90 $(SRC_PATH) vpath %.mod $(LOCAL_LIB_DIR):$(MESA_DIR)/include diff --git a/star/test/src/run.f90 b/star/test/src/run.f90 index a2de6786d..ef298fec2 100644 --- a/star/test/src/run.f90 +++ b/star/test/src/run.f90 @@ -23,20 +23,20 @@ ! ! *********************************************************************** - program run +program run - use run_star_support, only: do_read_star_job - use run_star, only: do_run_star - use star_def - - implicit none - - integer :: ierr - - ierr = 0 - call do_read_star_job('inlist', ierr) - if (ierr /= 0) stop 'run' - - call do_run_star + use run_star_support, only: do_read_star_job + use run_star, only: do_run_star + use star_def - end program + implicit none + + integer :: ierr + + ierr = 0 + call do_read_star_job('inlist', ierr) + if (ierr /= 0) stop 'run' + + call do_run_star + +end program diff --git a/star/test/src/run_star_extras.f90 b/star/test/src/run_star_extras.f90 index 70bec69ef..28e21377c 100644 --- a/star/test/src/run_star_extras.f90 +++ b/star/test/src/run_star_extras.f90 @@ -9,7 +9,7 @@ ! by the free software foundation; either version 2 of the license, or ! (at your option) any later version. ! -! mesa is distributed in the hope that it will be useful, +! mesa 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 library general public license for more details. @@ -20,18 +20,18 @@ ! ! *********************************************************************** - module run_star_extras +module run_star_extras - use star_lib - use star_def - use const_def - use math_lib + use star_lib + use star_def + use const_def + use math_lib - implicit none + implicit none - ! these routines are called by the standard run_star - contains + ! these routines are called by the standard run_star +contains - include '../../job/standard_run_star_extras.inc' + include '../../job/standard_run_star_extras.inc' - end module run_star_extras +end module run_star_extras diff --git a/star/test_suite/1.3M_ms_high_Z/README.rst b/star/test_suite/1.3M_ms_high_Z/README.rst index a482735f5..825b66871 100644 --- a/star/test_suite/1.3M_ms_high_Z/README.rst +++ b/star/test_suite/1.3M_ms_high_Z/README.rst @@ -5,7 +5,7 @@ ************** The test checks the evolution of metal-rich low-mass stars by evolving -a 1.3 Msun, metal-rich Z=0.04 model from the pre-main sequence to core hydrogen depletion. +a 1.3 |Msun|, metal-rich Z=0.04 model from the pre-main sequence to core hydrogen depletion. This test case has two parts. @@ -17,8 +17,8 @@ This test case has two parts. The final model, click on the image for a larger version, shows -.. image:: ../../../star/test_suite/1.3M_ms_high_Z/docs/grid1_221.svg - :scale: 100% +.. image:: ../../../star/test_suite/1.3M_ms_high_Z/docs/grid1000219.svg + :width: 100% The left plot shows the HR diagram. The yellow curve is a precalculated HR track loaded from ``HR_OPAL.dat``, while the green curve is the model calculated. @@ -28,109 +28,23 @@ as core hydrogen depletes. pgstar commands used for the plots above: -.. code-block:: console +.. literalinclude:: ../../../star/test_suite/1.3M_ms_high_Z/inlist_pgstar + :language: console - &pgstar +The figures can also be created in Python with ``matplotlib`` and reading in data with the ``mesa_reader`` package: - pgstar_interval = 10 +.. image:: ../../../star/test_suite/1.3M_ms_high_Z/docs/HR_diagram.svg + :width: 100% - ! device +.. image:: ../../../star/test_suite/1.3M_ms_high_Z/docs/z_mass_fraction_metals.svg + :width: 100% - file_white_on_black_flag = .true. ! white_on_black flags -- true means white foreground color on black background - file_device = 'png' ! png - file_extension = 'png' - - !file_device = 'vcps' ! postscript - !file_extension = 'ps' - - ! build grid - Grid1_title = '1.3M_ms_high_Z' - Grid1_win_flag = .true. - - Grid1_win_width = 15 - Grid1_win_aspect_ratio = 0.4 ! aspect_ratio = height/width - - Grid1_xleft = 0.05 ! fraction of full window width for margin on left - Grid1_xright = 0.95 ! fraction of full window width for margin on right - Grid1_ybot = 0.08 ! fraction of full window width for margin on bottom - Grid1_ytop = 0.92 ! fraction of full window width for margin on top - - Grid1_num_cols = 5 ! divide plotting region into this many equal width cols - Grid1_num_rows = 1 ! divide plotting region into this many equal height rows - Grid1_num_plots = 2 ! <= 10 - - Grid1_plot_name(1) = 'HR' - Grid1_plot_row(1) = 1 ! number from 1 at top - Grid1_plot_rowspan(1) = 1 ! plot spans this number of rows - Grid1_plot_col(1) = 1 ! number from 1 at left - Grid1_plot_colspan(1) = 2 ! plot spans this number of columns - Grid1_plot_pad_left(1) = 0.025 ! fraction of full window width for padding on left - Grid1_plot_pad_right(1) = 0.05 ! fraction of full window width for padding on right - Grid1_plot_pad_top(1) = 0.05 ! fraction of full window height for padding at top - Grid1_plot_pad_bot(1) = 0.05 ! fraction of full window height for padding at bottom - Grid1_txt_scale_factor(1) = 1.0 ! multiply txt_scale for subplot by this - - Grid1_plot_name(2) = 'Profile_Panels1' - Grid1_plot_row(2) = 1 ! number from 1 at top - Grid1_plot_rowspan(2) = 1 ! plot spans this number of rows - Grid1_plot_col(2) = 3 ! number from 1 at left - Grid1_plot_colspan(2) = 3 ! plot spans this number of columns - Grid1_plot_pad_left(2) = 0.05 ! fraction of full window width for padding on left - Grid1_plot_pad_right(2) = 0.025 ! fraction of full window width for padding on right - Grid1_plot_pad_top(2) = 0.05 ! fraction of full window height for padding at top - Grid1_plot_pad_bot(2) = 0.05 ! fraction of full window height for padding at bottom - Grid1_txt_scale_factor(2) = 1.0 ! multiply txt_scale for subplot by this - - ! file output - Grid1_file_flag = .true. - Grid1_file_dir = 'png' - Grid1_file_prefix = 'grid1' - Grid1_file_interval = 1000000 ! output when mod(model_number,Grid1_file_interval)==0 - Grid1_file_width = 15 ! negative means use same value as for window - Grid1_file_aspect_ratio = -1 ! negative means use same value as for window - - pgstar_model_scale = 1.4 - pgstar_model_disp = 1.5 - pgstar_model_coord = 0.98 - pgstar_model_fjust = 1.0 - - pgstar_age_scale = 1.4 - pgstar_age_disp = 1.5 - pgstar_age_coord = -0.04 - pgstar_age_fjust = 0.0 - - ! HR diagram - HR_win_flag = .false. - HR_win_aspect_ratio = 1.0 - - ! set static plot bounds - HR_logT_min = 3.55 - HR_logT_max = 3.85 - HR_logL_min = 0.1 - HR_logL_max = 1.0 - - ! show OPAL results - HR_fname = 'HR_OPAL.dat' ! file name for extra HR data - - - ! profile - Profile_Panels1_win_flag = .false. - - Profile_Panels1_num_panels = 1 - - Profile_Panels1_xaxis_name = 'mass' - Profile_Panels1_xmin = -101d0 ! only used if /= -101d0 - Profile_Panels1_xmax = -101d0 ! only used if /= -101d0 - - Profile_Panels1_yaxis_name(1) = 'z_mass_fraction_metals' - Profile_Panels1_ymin(1) = 0.038 ! only used if /= -101d0 - Profile_Panels1_ymax(1) = 0.042 ! only used if /= -101d0 - - Profile_Panels1_other_yaxis_name(:) = '' - - / ! end of pgstar namelist +The Python script used to create the figures above: +.. literalinclude:: ../../../star/test_suite/1.3M_ms_high_Z/plot.py + :language: python Last-Updated: 27May2021 (MESA ebecc10) by fxt +Last-Run: 26Jul2024 (MESA afd04d7d) by pmocz on C916PXT6XW in 159 seconds using 8 threads. diff --git a/star/test_suite/1.3M_ms_high_Z/docs/HR_diagram.svg b/star/test_suite/1.3M_ms_high_Z/docs/HR_diagram.svg new file mode 100644 index 000000000..4620fa164 --- /dev/null +++ b/star/test_suite/1.3M_ms_high_Z/docs/HR_diagram.svg @@ -0,0 +1,1463 @@ + + + + + + + + 2024-07-26T16:50:37.403272 + image/svg+xml + + + Matplotlib v3.8.4, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/star/test_suite/1.3M_ms_high_Z/docs/grid1000219.svg b/star/test_suite/1.3M_ms_high_Z/docs/grid1000219.svg new file mode 100644 index 000000000..7b62001fb --- /dev/null +++ b/star/test_suite/1.3M_ms_high_Z/docs/grid1000219.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/star/test_suite/1.3M_ms_high_Z/docs/z_mass_fraction_metals.svg b/star/test_suite/1.3M_ms_high_Z/docs/z_mass_fraction_metals.svg new file mode 100644 index 000000000..6d1368807 --- /dev/null +++ b/star/test_suite/1.3M_ms_high_Z/docs/z_mass_fraction_metals.svg @@ -0,0 +1,1189 @@ + + + + + + + + 2024-07-26T15:25:09.200391 + image/svg+xml + + + Matplotlib v3.8.4, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/star/test_suite/1.3M_ms_high_Z/inlist_1.3M_ms_high_Z b/star/test_suite/1.3M_ms_high_Z/inlist_1.3M_ms_high_Z index 41e366a2c..03999db41 100644 --- a/star/test_suite/1.3M_ms_high_Z/inlist_1.3M_ms_high_Z +++ b/star/test_suite/1.3M_ms_high_Z/inlist_1.3M_ms_high_Z @@ -1,6 +1,6 @@ &star_job - show_log_description_at_start = .false. + show_log_description_at_start = .false. load_saved_model = .true. load_model_filename = 'zams_0.040_1.30.mod' @@ -21,18 +21,19 @@ pgstar_flag = .true. save_pgstar_files_when_terminate = .true. -/ !end of star_job namelist +/ ! end of star_job namelist -&eos +&eos / ! end of eos namelist &kap - Zbase = 0.04d0 + Zbase = 0.04d0 / ! end of kap namelist + &controls energy_eqn_option = 'dedt' @@ -41,27 +42,26 @@ trace_history_value_name(1) = 'rel_E_err' trace_history_value_name(2) = 'log_rel_run_E_err' - ! limit max_model_number as part of test_suite + ! limit max_model_number as part of test_suite max_model_number = 500 use_gold2_tolerances = .true. max_abs_rel_run_E_err = 1d-2 - ! the initial model comes from this thread via Philip Hall - ! https://lists.mesastar.org/pipermail/mesa-users/2017-June/007738.html - initial_mass = 1.3 - initial_y = 0.32d0 - initial_z = 0.04d0 - - ! this stopping condition should get triggered - log_L_upper_limit = 0.7 - - ! this stopping condition should not get triggered - Teff_lower_limit = 4000 - - photo_interval = 50 - profile_interval = 100 - history_interval = 10 - terminal_interval = 10 + ! the initial model comes from this thread via Philip Hall + ! https://lists.mesastar.org/pipermail/mesa-users/2017-June/007738.html + initial_mass = 1.3 + initial_y = 0.32d0 + initial_z = 0.04d0 + ! this stopping condition should get triggered + log_L_upper_limit = 0.7 + + ! this stopping condition should not get triggered + Teff_lower_limit = 4000 + + photo_interval = 50 + profile_interval = 100 + history_interval = 1 + terminal_interval = 10 / ! end of controls namelist diff --git a/star/test_suite/1.3M_ms_high_Z/inlist_1.3M_ms_high_Z_header b/star/test_suite/1.3M_ms_high_Z/inlist_1.3M_ms_high_Z_header index a55f79f3f..d9ae44d6d 100644 --- a/star/test_suite/1.3M_ms_high_Z/inlist_1.3M_ms_high_Z_header +++ b/star/test_suite/1.3M_ms_high_Z/inlist_1.3M_ms_high_Z_header @@ -1,40 +1,38 @@ - &star_job - - read_extra_star_job_inlist(2) = .true. - extra_star_job_inlist_name(2) = 'inlist_1.3M_ms_high_Z' + read_extra_star_job_inlist(2) = .true. + extra_star_job_inlist_name(2) = 'inlist_1.3M_ms_high_Z' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_1.3M_ms_high_Z' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_1.3M_ms_high_Z' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_1.3M_ms_high_Z' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_1.3M_ms_high_Z' / ! end of kap namelist &controls - read_extra_controls_inlist(1) = .true. - extra_controls_inlist_name(1)= 'inlist_1.3M_ms_high_Z' + read_extra_controls_inlist(1) = .true. + extra_controls_inlist_name(1)= 'inlist_1.3M_ms_high_Z' / ! end of controls namelist &pgstar - read_extra_pgstar_inlist(1) = .true. - extra_pgstar_inlist_name(1)= 'inlist_pgstar' + read_extra_pgstar_inlist(1) = .true. + extra_pgstar_inlist_name(1)= 'inlist_pgstar' / ! end of pgstar namelist diff --git a/star/test_suite/1.3M_ms_high_Z/inlist_pgstar b/star/test_suite/1.3M_ms_high_Z/inlist_pgstar index 3ae6e4f74..8ace39dcc 100644 --- a/star/test_suite/1.3M_ms_high_Z/inlist_pgstar +++ b/star/test_suite/1.3M_ms_high_Z/inlist_pgstar @@ -1,125 +1,135 @@ &pgstar - Grid1_title = '1.3M_ms_high_Z' - Grid1_win_flag = .false. - - Grid1_win_width = 12 - Grid1_win_aspect_ratio = 0.4 ! aspect_ratio = height/width - - Grid1_xleft = 0.05 ! fraction of full window width for margin on left - Grid1_xright = 0.95 ! fraction of full window width for margin on right - Grid1_ybot = 0.08 ! fraction of full window width for margin on bottom - Grid1_ytop = 0.92 ! fraction of full window width for margin on top - - Grid1_num_cols = 5 ! divide plotting region into this many equal width cols - Grid1_num_rows = 1 ! divide plotting region into this many equal height rows - Grid1_num_plots = 2 ! <= 10 - - - Grid1_plot_name(1) = 'HR' - Grid1_plot_row(1) = 1 ! number from 1 at top - Grid1_plot_rowspan(1) = 1 ! plot spans this number of rows - Grid1_plot_col(1) = 1 ! number from 1 at left - Grid1_plot_colspan(1) = 2 ! plot spans this number of columns - Grid1_plot_pad_left(1) = 0.025 ! fraction of full window width for padding on left - Grid1_plot_pad_right(1) = 0.05 ! fraction of full window width for padding on right - Grid1_plot_pad_top(1) = 0.05 ! fraction of full window height for padding at top - Grid1_plot_pad_bot(1) = 0.05 ! fraction of full window height for padding at bottom - Grid1_txt_scale_factor(1) = 1.0 ! multiply txt_scale for subplot by this - - - Grid1_plot_name(2) = 'Profile_Panels1' - Grid1_plot_row(2) = 1 ! number from 1 at top - Grid1_plot_rowspan(2) = 1 ! plot spans this number of rows - Grid1_plot_col(2) = 3 ! number from 1 at left - Grid1_plot_colspan(2) = 3 ! plot spans this number of columns - Grid1_plot_pad_left(2) = 0.05 ! fraction of full window width for padding on left - Grid1_plot_pad_right(2) = 0.025 ! fraction of full window width for padding on right - Grid1_plot_pad_top(2) = 0.05 ! fraction of full window height for padding at top - Grid1_plot_pad_bot(2) = 0.05 ! fraction of full window height for padding at bottom - Grid1_txt_scale_factor(2) = 1.0 ! multiply txt_scale for subplot by this - - ! file output - Grid1_file_flag = .true. - Grid1_file_dir = 'png' - Grid1_file_prefix = 'grid1' - Grid1_file_interval = 1000000 ! output when mod(model_number,Grid1_file_interval)==0 - Grid1_file_width = -1 ! negative means use same value as for window - Grid1_file_aspect_ratio = -1 ! negative means use same value as for window - ! MESA uses PGPLOT for live plotting and gives the user a tremendous - ! amount of control of the presentation of the information. - - ! show HR diagram - ! this plots the history of L,Teff over many timesteps - HR_win_flag = .false. - - ! set static plot bounds - HR_logT_min = 3.55 - HR_logT_max = 3.85 - HR_logL_min = 0.1 - HR_logL_max = 1.0 - - ! show OPAL results - HR_fname = 'HR_OPAL.dat' ! file name for extra HR data - - ! set window size (aspect_ratio = height/width) - HR_win_width = 6 - HR_win_aspect_ratio = 1.0 - - - Profile_Panels1_win_flag = .false. - - Profile_Panels1_win_width = 6 - Profile_Panels1_win_aspect_ratio = 0.75 ! aspect_ratio = height/width - - Profile_Panels1_xleft = 0.15 - Profile_Panels1_xright = 0.85 - Profile_Panels1_ybot = 0.15 - Profile_Panels1_ytop = 0.85 - Profile_Panels1_txt_scale = 1.0 - Profile_Panels1_title = 'Profile Panels1' - - Profile_Panels1_xaxis_name = 'mass' - Profile_Panels1_xaxis_reversed = .false. - Profile_Panels1_xmin = -101d0 ! only used if /= -101d0 - Profile_Panels1_xmax = -101d0 ! only used if /= -101d0 - Profile_Panels1_xmargin = 0d0 - Profile_Panels1_show_mix_regions_on_xaxis = .false. - - Profile_Panels1_yaxis_name(:) = '' - Profile_Panels1_yaxis_reversed(:) = .false. - Profile_Panels1_yaxis_log(:) = .false. ! show log10 of abs value - Profile_Panels1_ymin(:) = -101d0 ! only used if /= -101d0 - Profile_Panels1_ymax(:) = -101d0 ! only used if /= -101d0 - Profile_Panels1_ymargin(:) = 0.1 - Profile_Panels1_dymin(:) = -1 - - Profile_Panels1_other_yaxis_name(:) = '' - Profile_Panels1_other_yaxis_reversed(:) = .false. - Profile_Panels1_other_yaxis_log(:) = .false. ! show log10 of abs value - Profile_Panels1_other_ymin(:) = -101d0 ! only used if /= -101d0 - Profile_Panels1_other_ymax(:) = -101d0 ! only used if /= -101d0 - Profile_Panels1_other_ymargin(:) = 0.1 - Profile_Panels1_other_dymin(:) = -1 - - Profile_Panels1_show_grid = .false. - - ! setup default plot - Profile_Panels1_num_panels = 1 - Profile_Panels1_yaxis_name(1) = 'z_mass_fraction_metals' - Profile_Panels1_ymin(1) = 0.038 ! only used if /= -101d0 - Profile_Panels1_ymax(1) = 0.042 ! only used if /= -101d0 - - ! Profile_Panels1_other_yaxis_name(1) = 'entropy' - ! Profile_Panels1_yaxis_name(2) = 'logRho' - ! Profile_Panels1_other_yaxis_name(2) = 'logP' - - ! file output - Profile_Panels1_file_flag = .false. - Profile_Panels1_file_dir = 'png' - Profile_Panels1_file_prefix = 'profile_panels1_' - Profile_Panels1_file_interval = 5 ! output when mod(model_number,Profile_Panels1_file_interval)==0 - Profile_Panels1_file_width = -1 ! (inches) negative means use same value as for window - Profile_Panels1_file_aspect_ratio = -1 ! negative means use same value as for window + ! MESA uses PGPLOT for live plotting and gives the user a tremendous + ! amount of control of the presentation of the information. + + ! device + file_white_on_black_flag = .true. + file_device = 'vcps' ! postscript + file_extension = 'ps' + !file_device = 'png' ! png + !file_extension = 'png' + + pgstar_interval = 10 + + Grid1_title = '1.3M_ms_high_Z' + Grid1_win_flag = .false. + + Grid1_win_width = 15 + Grid1_win_aspect_ratio = 0.4 ! aspect_ratio = height/width + + Grid1_xleft = 0.05 ! fraction of full window width for margin on left + Grid1_xright = 0.95 ! fraction of full window width for margin on right + Grid1_ybot = 0.08 ! fraction of full window width for margin on bottom + Grid1_ytop = 0.92 ! fraction of full window width for margin on top + + Grid1_num_cols = 5 ! divide plotting region into this many equal width cols + Grid1_num_rows = 1 ! divide plotting region into this many equal height rows + Grid1_num_plots = 2 ! <= 10 + + + Grid1_plot_name(1) = 'HR' + Grid1_plot_row(1) = 1 ! number from 1 at top + Grid1_plot_rowspan(1) = 1 ! plot spans this number of rows + Grid1_plot_col(1) = 1 ! number from 1 at left + Grid1_plot_colspan(1) = 2 ! plot spans this number of columns + Grid1_plot_pad_left(1) = 0.025 ! fraction of full window width for padding on left + Grid1_plot_pad_right(1) = 0.05 ! fraction of full window width for padding on right + Grid1_plot_pad_top(1) = 0.05 ! fraction of full window height for padding at top + Grid1_plot_pad_bot(1) = 0.05 ! fraction of full window height for padding at bottom + Grid1_txt_scale_factor(1) = 1.0 ! multiply txt_scale for subplot by this + + + Grid1_plot_name(2) = 'Profile_Panels1' + Grid1_plot_row(2) = 1 ! number from 1 at top + Grid1_plot_rowspan(2) = 1 ! plot spans this number of rows + Grid1_plot_col(2) = 3 ! number from 1 at left + Grid1_plot_colspan(2) = 3 ! plot spans this number of columns + Grid1_plot_pad_left(2) = 0.05 ! fraction of full window width for padding on left + Grid1_plot_pad_right(2) = 0.025 ! fraction of full window width for padding on right + Grid1_plot_pad_top(2) = 0.05 ! fraction of full window height for padding at top + Grid1_plot_pad_bot(2) = 0.05 ! fraction of full window height for padding at bottom + Grid1_txt_scale_factor(2) = 1.0 ! multiply txt_scale for subplot by this + + ! file output + Grid1_file_flag = .true. + Grid1_file_dir = 'pgstar_out' + Grid1_file_prefix = 'grid1' + Grid1_file_interval = 1000000 ! output when mod(model_number,Grid1_file_interval)==0 + Grid1_file_width = -1 ! negative means use same value as for window + Grid1_file_aspect_ratio = -1 ! negative means use same value as for window + + ! show HR diagram + ! this plots the history of L,Teff over many timesteps + HR_win_flag = .false. + + ! set static plot bounds + HR_logT_min = 3.55 + HR_logT_max = 3.85 + HR_logL_min = 0.1 + HR_logL_max = 1.0 + + ! show OPAL results + HR_fname = 'HR_OPAL.dat' ! file name for extra HR data + + ! set window size (aspect_ratio = height/width) + HR_win_width = 6 + HR_win_aspect_ratio = 1.0 + + + Profile_Panels1_win_flag = .false. + + Profile_Panels1_win_width = 6 + Profile_Panels1_win_aspect_ratio = 0.75 ! aspect_ratio = height/width + + Profile_Panels1_xleft = 0.15 + Profile_Panels1_xright = 0.85 + Profile_Panels1_ybot = 0.15 + Profile_Panels1_ytop = 0.85 + Profile_Panels1_txt_scale = 1.0 + Profile_Panels1_title = 'Profile Panels1' + + Profile_Panels1_xaxis_name = 'mass' + Profile_Panels1_xaxis_reversed = .false. + Profile_Panels1_xmin = -101d0 ! only used if /= -101d0 + Profile_Panels1_xmax = -101d0 ! only used if /= -101d0 + Profile_Panels1_xmargin = 0d0 + Profile_Panels1_show_mix_regions_on_xaxis = .false. + + Profile_Panels1_yaxis_name(:) = '' + Profile_Panels1_yaxis_reversed(:) = .false. + Profile_Panels1_yaxis_log(:) = .false. ! show log10 of abs value + Profile_Panels1_ymin(:) = -101d0 ! only used if /= -101d0 + Profile_Panels1_ymax(:) = -101d0 ! only used if /= -101d0 + Profile_Panels1_ymargin(:) = 0.1 + Profile_Panels1_dymin(:) = -1 + + Profile_Panels1_other_yaxis_name(:) = '' + Profile_Panels1_other_yaxis_reversed(:) = .false. + Profile_Panels1_other_yaxis_log(:) = .false. ! show log10 of abs value + Profile_Panels1_other_ymin(:) = -101d0 ! only used if /= -101d0 + Profile_Panels1_other_ymax(:) = -101d0 ! only used if /= -101d0 + Profile_Panels1_other_ymargin(:) = 0.1 + Profile_Panels1_other_dymin(:) = -1 + + Profile_Panels1_show_grid = .false. + + ! setup default plot + Profile_Panels1_num_panels = 1 + Profile_Panels1_yaxis_name(1) = 'z_mass_fraction_metals' + Profile_Panels1_ymin(1) = 0.038 ! only used if /= -101d0 + Profile_Panels1_ymax(1) = 0.042 ! only used if /= -101d0 + + ! Profile_Panels1_other_yaxis_name(1) = 'entropy' + ! Profile_Panels1_yaxis_name(2) = 'logRho' + ! Profile_Panels1_other_yaxis_name(2) = 'logP' + + ! file output + Profile_Panels1_file_flag = .false. + Profile_Panels1_file_dir = 'pgstar_out' + Profile_Panels1_file_prefix = 'profile_panels1_' + Profile_Panels1_file_interval = 5 ! output when mod(model_number,Profile_Panels1_file_interval)==0 + Profile_Panels1_file_width = -1 ! (inches) negative means use same value as for window + Profile_Panels1_file_aspect_ratio = -1 ! negative means use same value as for window / ! end of pgstar namelist diff --git a/star/test_suite/1.3M_ms_high_Z/inlist_zams b/star/test_suite/1.3M_ms_high_Z/inlist_zams index b48abee76..0cbc7af26 100644 --- a/star/test_suite/1.3M_ms_high_Z/inlist_zams +++ b/star/test_suite/1.3M_ms_high_Z/inlist_zams @@ -2,46 +2,46 @@ &star_job - show_log_description_at_start = .false. + show_log_description_at_start = .false. - create_pre_main_sequence_model = .true. + create_pre_main_sequence_model = .true. - save_model_when_terminate = .true. - save_model_filename = 'zams_0.040_1.30.mod' - required_termination_code_string = 'Lnuc_div_L_zams_limit' + save_model_when_terminate = .true. + save_model_filename = 'zams_0.040_1.30.mod' + required_termination_code_string = 'Lnuc_div_L_zams_limit' - !pgstar_flag = .true. + !pgstar_flag = .true. / ! end of star_job namelist + &eos / ! end of eos namelist + &kap - Zbase = 0.04d0 - kap_file_prefix = 'gs98' + Zbase = 0.04d0 + kap_file_prefix = 'gs98' / ! end of kap namelist + &controls - initial_mass = 1.30 - initial_z = 0.04d0 + initial_mass = 1.30 + initial_z = 0.04d0 - stop_near_zams = .true. - Lnuc_div_L_zams_limit = 0.9d0 - - ! limit max_model_number as part of test_suite - max_model_number = 10000 - - num_trace_history_values = 2 - trace_history_value_name(1) = 'rel_E_err' - trace_history_value_name(2) = 'log_rel_run_E_err' + stop_near_zams = .true. + Lnuc_div_L_zams_limit = 0.9d0 + ! limit max_model_number as part of test_suite + max_model_number = 10000 + num_trace_history_values = 2 + trace_history_value_name(1) = 'rel_E_err' + trace_history_value_name(2) = 'log_rel_run_E_err' - photo_interval = 100 - profile_interval = 100 - history_interval = 5 - terminal_interval = 50 + photo_interval = 100 + profile_interval = 100 + history_interval = 5 + terminal_interval = 50 / ! end of controls namelist - diff --git a/star/test_suite/1.3M_ms_high_Z/inlist_zams_header b/star/test_suite/1.3M_ms_high_Z/inlist_zams_header index 83e825c58..d17468fd4 100644 --- a/star/test_suite/1.3M_ms_high_Z/inlist_zams_header +++ b/star/test_suite/1.3M_ms_high_Z/inlist_zams_header @@ -1,41 +1,38 @@ - &star_job - - read_extra_star_job_inlist(2) = .true. - extra_star_job_inlist_name(2) = 'inlist_zams' + read_extra_star_job_inlist(2) = .true. + extra_star_job_inlist_name(2) = 'inlist_zams' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_zams' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_zams' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_zams' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_zams' / ! end of kap namelist - &controls - read_extra_controls_inlist(1) = .true. - extra_controls_inlist_name(1)= 'inlist_zams' + read_extra_controls_inlist(1) = .true. + extra_controls_inlist_name(1)= 'inlist_zams' / ! end of controls namelist &pgstar - read_extra_pgstar_inlist(1) = .true. - extra_pgstar_inlist_name(1)= 'inlist_zams' + read_extra_pgstar_inlist(1) = .true. + extra_pgstar_inlist_name(1)= 'inlist_zams' / ! end of pgstar namelist diff --git a/star/test_suite/1.3M_ms_high_Z/plot.py b/star/test_suite/1.3M_ms_high_Z/plot.py new file mode 100644 index 000000000..cabe92c0d --- /dev/null +++ b/star/test_suite/1.3M_ms_high_Z/plot.py @@ -0,0 +1,52 @@ +import matplotlib.pyplot as plt +import numpy as np +import os +import mesa_reader as mr + +# if the directory plt_out/ does not exits, make it +if not os.path.exists("plt_out"): + os.makedirs("plt_out") + +# enable Latex for figure labels +plt.rcParams["text.usetex"] = True + +# read in the history data from MESA +history = mr.MesaData("LOGS/history.data") + +# load the last profile saved (largest model number) +load_dir = mr.MesaLogDir("./LOGS") +profile = load_dir.profile_data() + +# load HR_OPAL.dat reference data +hr_opal = np.genfromtxt("HR_OPAL.dat", delimiter=" ", skip_header=1) + +# Plot HR diagram +HR_logT_min = 3.55 +HR_logT_max = 3.85 +HR_logL_min = 0.1 +HR_logL_max = 1.0 +plt.figure() +plt.plot(hr_opal[:,0], hr_opal[:,1], label="OPAL.dat", color="tab:orange") +plt.plot(history.log_Teff, history.log_L, label="MESA", color="tab:blue") +plt.plot(history.log_Teff[-1], history.log_L[-1], "ro") +plt.xlabel(r"$\log_{10}(T_{\rm eff})$") +plt.ylabel(r"$\log_{10}(L/L_{\odot})$") +plt.title("HR Diagram") +plt.xlim(HR_logT_min, HR_logT_max) +plt.ylim(HR_logL_min, HR_logL_max) +plt.legend() +plt.gca().set_box_aspect(1) +plt.gca().invert_xaxis() +plt.savefig("plt_out/HR_diagram.svg", bbox_inches="tight", pad_inches=0) +# plt.show() + +# Plot Profile of metal mass fraction +plt.figure() +plt.plot(profile.mass, profile.z_mass_fraction_metals) +plt.xlabel(r"$\log_{10}(M(r)/M_{\odot})$") +plt.ylabel(r"metal mass fraction") +plt.title("Metal mass fraction profile") +plt.xlim(0, profile.mass[0]) +plt.ylim(0.038, 0.042) +plt.savefig("plt_out/z_mass_fraction_metals.svg", bbox_inches="tight", pad_inches=0) +# plt.show() diff --git a/star/test_suite/1.4M_ms_op_mono/README.rst b/star/test_suite/1.4M_ms_op_mono/README.rst index 6abcffe3f..a3afe3ba5 100644 --- a/star/test_suite/1.4M_ms_op_mono/README.rst +++ b/star/test_suite/1.4M_ms_op_mono/README.rst @@ -5,7 +5,7 @@ *************** The test checks the functionality of OP mono opacities. The test vehicle is a -1.4 Msun solar metallicity model. +1.4 |Msun| solar metallicity model. This test case has three parts. Click to see a larger view of a plot. @@ -13,7 +13,7 @@ This test case has three parts. Click to see a larger view of a plot. * Part 1 (``inlist_1.4M_ms_initial_model``) creates the pre-main-sequence model and evolves the model until the central hydrogen mass fractions falls below 0.5. During this evolution the OP mono opacities are off. .. image:: ../../../star/test_suite/1.4M_ms_op_mono/docs/initial_model.svg - :scale: 100% + :width: 100% The upper plot shows the fraction of the opacity that is from OP mono (yellow curve) and the opacity (blue curve) @@ -24,15 +24,13 @@ The lower plot shows the opacity derivatives. * Part 2 (``inlist_1.4M_ms_op_mono``) continues the evolution of ``inlist_1.4M_ms_initial_model`` for 10 timesteps using the OP mono opacities, as shown by the fraction of the opacity that is from OP mono (yellow curve, upper plot) .. image:: ../../../star/test_suite/1.4M_ms_op_mono/docs/op_mono.svg - :scale: 100% - + :width: 100% * Part 3 (``inlist_1.4M_ms_op_mono``) continues the evolution of ``inlist_1.4M_ms_initial_model`` for 10 timesteps using an alternative formulation of the OP mono opacities, as shown by the smoother opacity derivatives in the lower plot. See $MESA_DIR/kap/public/kap_lib.f.90 for the differences between the regular and alternative OP mono formulations. .. image:: ../../../star/test_suite/1.4M_ms_op_mono/docs/op_mono_alt.svg - :scale: 100% - + :width: 100% pgstar commands used for the plots above: @@ -41,18 +39,14 @@ pgstar commands used for the plots above: &pgstar - pgstar_interval = 10 + pgstar_interval = 10 ! device - file_white_on_black_flag = .true. ! white_on_black flags -- true means white foreground color on black background - !file_device = 'png' ! png - !file_extension = 'png' - - file_device = 'vcps' ! postscript + file_white_on_black_flag = .true. + file_device = 'vcps' file_extension = 'ps' - ! two profile panels Profile_Panels1_win_flag = .true. @@ -80,7 +74,7 @@ pgstar commands used for the plots above: Profile_Panels1_other_yaxis_name(2) = 'dlnkap_dlnT' Profile_Panels1_file_flag = .true. - Profile_Panels1_file_dir = 'png' + Profile_Panels1_file_dir = 'pgstar_out' Profile_Panels1_file_prefix = 'profile_panels1_' Profile_Panels1_file_interval = 10 Profile_Panels1_file_width = 15 diff --git a/star/test_suite/1.5M_with_diffusion/README.rst b/star/test_suite/1.5M_with_diffusion/README.rst index 471e06713..79904265b 100644 --- a/star/test_suite/1.5M_with_diffusion/README.rst +++ b/star/test_suite/1.5M_with_diffusion/README.rst @@ -5,53 +5,30 @@ ******************* The test checks the functionality of element diffusion. -The test vehicle is a 1.5 Msun solar metallicity model. +The test vehicle is a 1.5 |Msun| solar metallicity model. This test case has two parts. Click to see a larger view of a plot. * Part 1 (``inlist_to_ZAMS``) creates the pre-main-sequence model and evolves it to the main sequence. In the mass fraction plot, note the roughness of the 12C mass fraction profile (orange curve) from convection and that the surface hydrogen profile is flat (yellow curve). -.. image:: ../../../star/test_suite/1.5M_with_diffusion/docs/zams.svg - :scale: 100% +.. image:: ../../../star/test_suite/1.5M_with_diffusion/docs/abund_zams_0000181.svg + :width: 100% * Part 2 (``1.5M_with_diffusion``) continues the evolution until the central hydrogen mass fraction drops below 0.01. In the mass fraction plot, note the 12C mass fraction profile (orange) has been smoothed by element diffusion and that the surface is nearly pure hydrogen (yellow upwards spike) from heavier elements diffusing inwards (e.g., orange downwards spike in 16O). -.. image:: ../../../star/test_suite/1.5M_with_diffusion/docs/h_depletion.svg - :scale: 100% +.. image:: ../../../star/test_suite/1.5M_with_diffusion/docs/abund_h_depletion_0000430.svg + :width: 100% -pgstar commands used for the plots above: - -.. code-block:: console - - &pgstar - - pgstar_interval = 10 - - ! device - - file_white_on_black_flag = .true. ! white_on_black flags -- true means white foreground color on black background - !file_device = 'png' ! png - !file_extension = 'png' - - file_device = 'vcps' ! postscript - file_extension = 'ps' - - - Grid2_win_width = 15 - Grid2_win_flag = .true. - Grid2_file_flag = .true. - file_digits = 7 - Grid2_file_dir = 'png2' - Grid2_file_prefix = 'grid' - Grid2_file_interval = 5 - Grid2_file_width = 15 - - / ! end of pgstar namelist - +pgstar commands used for the plots above, e.g.: +.. literalinclude:: ../../../star/test_suite/1.5M_with_diffusion/inlist_1.5M_with_diffusion + :language: console + :start-at: &pgstar + :end-at: ! end of pgstar namelist Last-Updated: 27May2021 (MESA ebecc10) by fxt +Last-Run: 17Jul2024 (MESA 0cc374fa) by pmocz on C916PXT6XW in 423 seconds using 8 threads. diff --git a/star/test_suite/1.5M_with_diffusion/docs/abund_h_depletion_0000430.svg b/star/test_suite/1.5M_with_diffusion/docs/abund_h_depletion_0000430.svg new file mode 100644 index 000000000..28685f0e0 --- /dev/null +++ b/star/test_suite/1.5M_with_diffusion/docs/abund_h_depletion_0000430.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/star/test_suite/1.5M_with_diffusion/docs/abund_zams_0000181.svg b/star/test_suite/1.5M_with_diffusion/docs/abund_zams_0000181.svg new file mode 100644 index 000000000..122f0c7ea --- /dev/null +++ b/star/test_suite/1.5M_with_diffusion/docs/abund_zams_0000181.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/star/test_suite/1.5M_with_diffusion/inlist_1.5M_with_diffusion b/star/test_suite/1.5M_with_diffusion/inlist_1.5M_with_diffusion index 4d0698f2d..fde5c4160 100644 --- a/star/test_suite/1.5M_with_diffusion/inlist_1.5M_with_diffusion +++ b/star/test_suite/1.5M_with_diffusion/inlist_1.5M_with_diffusion @@ -1,167 +1,176 @@ - ! inlist_1.5M_with_diffusion &star_job - - show_log_description_at_start = .false. - - load_saved_model = .true. - load_model_filename = '1.5_zams.mod' + show_log_description_at_start = .false. - save_model_when_terminate = .true. - save_model_filename = 'final.mod' - required_termination_code_string = 'xa_central_lower_limit' + load_saved_model = .true. + load_model_filename = '1.5_zams.mod' - set_initial_age = .true. - initial_age = 0 + save_model_when_terminate = .true. + save_model_filename = 'final.mod' + required_termination_code_string = 'xa_central_lower_limit' - set_initial_model_number = .true. - initial_model_number = 0 + set_initial_age = .true. + initial_age = 0 - history_columns_file = 'history_columns.list' - profile_columns_file = 'profile_columns.list' + set_initial_model_number = .true. + initial_model_number = 0 - set_initial_cumulative_energy_error = .true. - new_cumulative_energy_error = 0d0 + history_columns_file = 'history_columns.list' + profile_columns_file = 'profile_columns.list' - !pgstar_flag = .true. + set_initial_cumulative_energy_error = .true. + new_cumulative_energy_error = 0d0 + pgstar_flag = .true. + save_pgstar_files_when_terminate = .true. / ! end of star_job namelist &eos - / ! end of eos namelist - - &kap - Zbase = 0.02 + Zbase = 0.02 / ! end of kap namelist + &controls - ! IMPORTANT NOTE: if you use these files for non-testing purposes, note ! that some timestep and resolution controls are adjusted to make the test ! faster at the cost of converged results. For each of these, recommended ! values are commented out. Use with caution. ! look for the string 'RELAXED VALUE FOR TEST SUITE' to find the adjusted values - energy_eqn_option = 'dedt' - convergence_ignore_equL_residuals = .true. - use_gold2_tolerances = .true. - - limit_for_rel_error_in_energy_conservation = -1 - hard_limit_for_rel_error_in_energy_conservation = -1 - max_abs_rel_run_E_err = 1d99 - warn_when_large_rel_run_E_err = 1d0 - - num_trace_history_values = 2 - trace_history_value_name(1) = 'rel_E_err' - trace_history_value_name(2) = 'log_rel_run_E_err' - - ! limit max_model_number as part of test_suite - max_model_number = 1000 - - initial_mass = 1.5 - initial_z = 0.02 - -! when to stop - - xa_central_lower_limit_species(1) = 'h1' - xa_central_lower_limit(1) = 0.01 - - max_age = 2d10 - - use_Ledoux_criterion = .true. - !alpha_semiconvection = 1d-1 - !semiconvection_option = 'Langer_85' - - mixing_length_alpha = 1.8d0 - MLT_option = 'Henyey' - - - predictive_mix(1) = .true. - predictive_zone_type(1) = 'any' - predictive_zone_loc(1) = 'core' - predictive_bdy_loc(1) = 'any' - predictive_superad_thresh(1) = 0.005 - - predictive_mix(2) = .true. - predictive_zone_type(2) = 'any' - predictive_zone_loc(2) = 'surf' - predictive_bdy_loc(2) = 'any' - predictive_superad_thresh(2) = 0.005 - - num_cells_for_smooth_gradL_composition_term = 10 - threshold_for_smooth_gradL_composition_term = 0.02 - num_cells_for_smooth_brunt_B = 10 - threshold_for_smooth_brunt_B = 0.1 - - !show_diffusion_info = .true. ! terminal output for diffusion - !show_diffusion_substep_info = .true. ! terminal output for diffusion - - do_element_diffusion = .true. ! determines whether or not we do diffusion - diffusion_dt_limit = 3.15d7 ! no element diffusion if dt < this limit (in seconds) - - diffusion_T_full_on = 1d3 - diffusion_T_full_off = 1d3 - - D_mix_ignore_diffusion = 1d2 ! turn off diffusion in any region with D_mix greater than this - - diffusion_calculates_ionization = .true. - - diffusion_num_classes = 8 ! number of classes of species for diffusion calculations - diffusion_class_representative(1) = 'h1' - diffusion_class_representative(2) = 'he3' - diffusion_class_representative(3) = 'he4' - diffusion_class_representative(4) = 'c12' - diffusion_class_representative(5) = 'n14' - diffusion_class_representative(6) = 'o16' - diffusion_class_representative(7) = 'ne20' - diffusion_class_representative(8) = 'mg24' - - ! in ascending order. species goes into 1st class with A_max >= species A - diffusion_class_A_max(1) = 2 - diffusion_class_A_max(2) = 3 - diffusion_class_A_max(3) = 4 - diffusion_class_A_max(4) = 12 - diffusion_class_A_max(5) = 14 - diffusion_class_A_max(6) = 16 - diffusion_class_A_max(7) = 20 - diffusion_class_A_max(8) = 10000 - - diffusion_use_isolve = .true. - diffusion_rtol_for_isolve = 1d-4 - diffusion_atol_for_isolve = 1d-5 - diffusion_maxsteps_for_isolve = 1000 - diffusion_isolve_solver = 'ros2_solver' - - + energy_eqn_option = 'dedt' + convergence_ignore_equL_residuals = .true. + use_gold2_tolerances = .true. + limit_for_rel_error_in_energy_conservation = -1 + hard_limit_for_rel_error_in_energy_conservation = -1 + max_abs_rel_run_E_err = 1d99 + warn_when_large_rel_run_E_err = 1d0 + + num_trace_history_values = 2 + trace_history_value_name(1) = 'rel_E_err' + trace_history_value_name(2) = 'log_rel_run_E_err' + + ! limit max_model_number as part of test_suite + max_model_number = 1000 + + initial_mass = 1.5 + initial_z = 0.02 + ! when to stop + + xa_central_lower_limit_species(1) = 'h1' + xa_central_lower_limit(1) = 0.01 + + max_age = 2d10 + + use_Ledoux_criterion = .true. + !alpha_semiconvection = 1d-1 + !semiconvection_option = 'Langer_85' + mixing_length_alpha = 1.8d0 + MLT_option = 'Henyey' + + predictive_mix(1) = .true. + predictive_zone_type(1) = 'any' + predictive_zone_loc(1) = 'core' + predictive_bdy_loc(1) = 'any' + predictive_superad_thresh(1) = 0.005 + + predictive_mix(2) = .true. + predictive_zone_type(2) = 'any' + predictive_zone_loc(2) = 'surf' + predictive_bdy_loc(2) = 'any' + predictive_superad_thresh(2) = 0.005 + num_cells_for_smooth_gradL_composition_term = 10 + threshold_for_smooth_gradL_composition_term = 0.02 + num_cells_for_smooth_brunt_B = 10 + threshold_for_smooth_brunt_B = 0.1 + + !show_diffusion_info = .true. ! terminal output for diffusion + !show_diffusion_substep_info = .true. ! terminal output for diffusion + + do_element_diffusion = .true. ! determines whether or not we do diffusion + diffusion_dt_limit = 3.15d7 ! no element diffusion if dt < this limit (in seconds) + + diffusion_T_full_on = 1d3 + diffusion_T_full_off = 1d3 + + D_mix_ignore_diffusion = 1d2 ! turn off diffusion in any region with D_mix greater than this + + diffusion_calculates_ionization = .true. + + diffusion_num_classes = 8 ! number of classes of species for diffusion calculations + diffusion_class_representative(1) = 'h1' + diffusion_class_representative(2) = 'he3' + diffusion_class_representative(3) = 'he4' + diffusion_class_representative(4) = 'c12' + diffusion_class_representative(5) = 'n14' + diffusion_class_representative(6) = 'o16' + diffusion_class_representative(7) = 'ne20' + diffusion_class_representative(8) = 'mg24' + + ! in ascending order. species goes into 1st class with A_max >= species A + diffusion_class_A_max(1) = 2 + diffusion_class_A_max(2) = 3 + diffusion_class_A_max(3) = 4 + diffusion_class_A_max(4) = 12 + diffusion_class_A_max(5) = 14 + diffusion_class_A_max(6) = 16 + diffusion_class_A_max(7) = 20 + diffusion_class_A_max(8) = 10000 + + diffusion_use_isolve = .true. + diffusion_rtol_for_isolve = 1d-4 + diffusion_atol_for_isolve = 1d-5 + diffusion_maxsteps_for_isolve = 1000 + diffusion_isolve_solver = 'ros2_solver' + ! timestep and mesh: - ! RELAXED VALUE FOR TEST SUITE - max_years_for_timestep = 5d6 ! 1d6 - mesh_delta_coeff = 0.5 + max_years_for_timestep = 5d6 ! 1d6 + mesh_delta_coeff = 0.5 ! output controls - photo_interval = 50 - profile_interval = 100 - history_interval = 10 - terminal_interval = 10 - write_header_frequency = 10 - + photo_interval = 50 + profile_interval = 100 + history_interval = 10 + terminal_interval = 10 + write_header_frequency = 10 / ! end of controls namelist &pgstar - -Grid2_win_flag = .true. + + pgstar_interval = 50 + + ! device + file_white_on_black_flag = .true. + file_device = 'vcps' ! postscript + file_extension = 'ps' + + Abundance_win_flag = .false. ! switch to .true. to visualize in real-time + Abundance_file_flag = .true. + Abundance_file_dir = 'pgstar_out2' + Abundance_file_prefix = 'abund_h_depletion_' + Abundance_win_width = 9 + Abundance_win_aspect_ratio = 1.0d0 + + Grid2_win_flag = .false. ! switch to .true. to visualize in real-time + Grid2_file_flag = .false. + + Grid2_win_width = 15 + file_digits = 7 + Grid2_file_dir = 'pgstar_out2' + Grid2_file_prefix = 'grid' + Grid2_file_interval = 5 + Grid2_file_width = 15 / ! end of pgstar namelist diff --git a/star/test_suite/1.5M_with_diffusion/inlist_1.5M_with_diffusion_header b/star/test_suite/1.5M_with_diffusion/inlist_1.5M_with_diffusion_header index 20deacfd9..387a5bdbb 100644 --- a/star/test_suite/1.5M_with_diffusion/inlist_1.5M_with_diffusion_header +++ b/star/test_suite/1.5M_with_diffusion/inlist_1.5M_with_diffusion_header @@ -1,40 +1,38 @@ - &star_job - - read_extra_star_job_inlist(2) = .true. - extra_star_job_inlist_name(2) = 'inlist_1.5M_with_diffusion' + read_extra_star_job_inlist(2) = .true. + extra_star_job_inlist_name(2) = 'inlist_1.5M_with_diffusion' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_1.5M_with_diffusion' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_1.5M_with_diffusion' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_1.5M_with_diffusion' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_1.5M_with_diffusion' / ! end of kap namelist &controls - read_extra_controls_inlist(1) = .true. - extra_controls_inlist_name(1)= 'inlist_1.5M_with_diffusion' + read_extra_controls_inlist(1) = .true. + extra_controls_inlist_name(1)= 'inlist_1.5M_with_diffusion' / ! end of controls namelist &pgstar - read_extra_pgstar_inlist(1) = .true. - extra_pgstar_inlist_name(1)= 'inlist_1.5M_with_diffusion' + read_extra_pgstar_inlist(1) = .true. + extra_pgstar_inlist_name(1)= 'inlist_1.5M_with_diffusion' / ! end of pgstar namelist diff --git a/star/test_suite/1.5M_with_diffusion/inlist_to_ZAMS b/star/test_suite/1.5M_with_diffusion/inlist_to_ZAMS index 86bc70cc1..01cf10e5b 100644 --- a/star/test_suite/1.5M_with_diffusion/inlist_to_ZAMS +++ b/star/test_suite/1.5M_with_diffusion/inlist_to_ZAMS @@ -1,99 +1,109 @@ &star_job - show_log_description_at_start = .false. + show_log_description_at_start = .false. - create_pre_main_sequence_model = .true. + create_pre_main_sequence_model = .true. - load_saved_model = .false. + load_saved_model = .false. - save_model_when_terminate = .true. - save_model_filename = '1.5_zams.mod' + save_model_when_terminate = .true. + save_model_filename = '1.5_zams.mod' - pause_before_terminate = .false. + pause_before_terminate = .false. - !history_columns_file = 'history_columns.list' - !profile_columns_file = 'profile_columns.list' + !history_columns_file = 'history_columns.list' + !profile_columns_file = 'profile_columns.list' - initial_zfracs = 3 ! GS98_zfracs = 3 - -/ !end of star_job namelist + initial_zfracs = 3 ! GS98_zfracs = 3 + + pgstar_flag = .true. + save_pgstar_files_when_terminate = .true. + / !end of star_job namelist &eos + / ! end of eos namelist &kap - use_Type2_opacities = .true. - Zbase = 2d-2 + use_Type2_opacities = .true. + Zbase = 2d-2 / ! end of kap namelist &controls - initial_mass = 1.5 - initial_z = 2d-2 + initial_mass = 1.5 + initial_z = 2d-2 ! When to stop - Lnuc_div_L_zams_limit = 0.99d0 - stop_near_zams = .true. - -! mixing controls - - mixing_length_alpha = 1.8d0 - MLT_option = 'Henyey' - - - use_Ledoux_criterion = .false. - !alpha_semiconvection = 0.01 - !semiconvection_option = 'Langer_85' + Lnuc_div_L_zams_limit = 0.99d0 + stop_near_zams = .true. + ! mixing controls + mixing_length_alpha = 1.8d0 + MLT_option = 'Henyey' - -! timestep controls + use_Ledoux_criterion = .false. + !alpha_semiconvection = 0.01 + !semiconvection_option = 'Langer_85' + ! timestep controls - !max_years_for_timestep = 1d4 - !max_timestep_factor = 1.2 - -! output controls + !max_years_for_timestep = 1d4 + !max_timestep_factor = 1.0d0 + ! output controls - log_directory = 'LOGS-ZAMS' - photo_interval = 100 - photo_digits = 5 - profile_interval = 100 - history_interval = 10 - terminal_interval = 50 - write_header_frequency = 10 - -! grid + log_directory = 'LOGS-ZAMS' + photo_interval = 100 + photo_digits = 5 + profile_interval = 100 + history_interval = 10 + terminal_interval = 50 + write_header_frequency = 10 + ! grid - mesh_delta_coeff = 0.5 + mesh_delta_coeff = 0.5 - use_gold2_tolerances = .true. + use_gold2_tolerances = .true. / ! end of controls namelist + &pgstar - - Grid2_win_flag = .true. - file_digits = 7 - Grid2_file_dir = 'png' - Grid2_file_prefix = 'grid' - - Abundance_xmax = 0.5 - - Kipp_win_flag = .true. - - Kipp_xaxis_name = 'star_age' - Kipp_xaxis_in_Myr = .true. - Kipp_win_width = 9 - Kipp_win_aspect_ratio = 0.75 ! aspect_ratio = height/width - Kipp_show_burn = .false. - Kipp_mass_max = 0.16 ! (Msun units) negative means use default - Kipp_mass_max = -1 ! (Msun units) negative means use default - Kipp_xmin = -1 ! step number. negative means use default. - Kipp_max_width = 0 ! only used if > 0. causes xmin to move with xmax. - Kipp_mix_interval = 1 -/ ! end of pgstar namelist + pgstar_interval = 50 + + ! device + file_white_on_black_flag = .true. + file_device = 'vcps' ! postscript + file_extension = 'ps' + Grid2_win_flag = .false. ! switch to .true. to visualize in real-time + file_digits = 7 + Grid2_file_dir = 'pgstar_out1' + Grid2_file_prefix = 'grid' + + Abundance_win_flag = .false. ! switch to .true. to visualize in real-time + Abundance_file_flag = .true. + + Abundance_file_dir = 'pgstar_out1' + Abundance_file_prefix = 'abund_zams_' + Abundance_win_width = 9 + Abundance_win_aspect_ratio = 1.0d0 + Abundance_xmax = 0.5 + + Kipp_win_flag = .false. ! switch to .true. to visualize in real-time + + Kipp_xaxis_name = 'star_age' + Kipp_xaxis_in_Myr = .true. + Kipp_win_width = 9 + Kipp_win_aspect_ratio = 0.75 ! aspect_ratio = height/width + Kipp_show_burn = .false. + Kipp_mass_max = 0.16 ! (Msun units) negative means use default + Kipp_mass_max = -1 ! (Msun units) negative means use default + Kipp_xmin = -1 ! step number. negative means use default. + Kipp_max_width = 0 ! only used if > 0. causes xmin to move with xmax. + Kipp_mix_interval = 1 + +/ ! end of pgstar namelist diff --git a/star/test_suite/1.5M_with_diffusion/inlist_to_ZAMS_header b/star/test_suite/1.5M_with_diffusion/inlist_to_ZAMS_header index b5f970c7c..cda9545dd 100644 --- a/star/test_suite/1.5M_with_diffusion/inlist_to_ZAMS_header +++ b/star/test_suite/1.5M_with_diffusion/inlist_to_ZAMS_header @@ -1,40 +1,38 @@ - &star_job - - read_extra_star_job_inlist(2) = .true. - extra_star_job_inlist_name(2) = 'inlist_to_ZAMS' + read_extra_star_job_inlist(2) = .true. + extra_star_job_inlist_name(2) = 'inlist_to_ZAMS' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_to_ZAMS' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_to_ZAMS' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_to_ZAMS' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_to_ZAMS' / ! end of kap namelist &controls - read_extra_controls_inlist(1) = .true. - extra_controls_inlist_name(1)= 'inlist_to_ZAMS' + read_extra_controls_inlist(1) = .true. + extra_controls_inlist_name(1)= 'inlist_to_ZAMS' / ! end of controls namelist &pgstar - read_extra_pgstar_inlist(1) = .true. - extra_pgstar_inlist_name(1)= 'inlist_to_ZAMS' + read_extra_pgstar_inlist(1) = .true. + extra_pgstar_inlist_name(1)= 'inlist_to_ZAMS' / ! end of pgstar namelist diff --git a/star/test_suite/12M_pre_ms_to_core_collapse/README.rst b/star/test_suite/12M_pre_ms_to_core_collapse/README.rst index 7c0fde8bc..de5ecf7f9 100644 --- a/star/test_suite/12M_pre_ms_to_core_collapse/README.rst +++ b/star/test_suite/12M_pre_ms_to_core_collapse/README.rst @@ -4,7 +4,7 @@ 12M_pre_ms_to_core_collapse *************************** -This test suite evolves a solar metalicity 12 |MSun| model from the pre-ms to core collapse. +This test suite evolves a solar metallicity 12 |MSun| model from the pre-ms to core collapse. Physical checks =============== diff --git a/star/test_suite/12M_pre_ms_to_core_collapse/gyre.in b/star/test_suite/12M_pre_ms_to_core_collapse/gyre.in deleted file mode 100644 index e27703b48..000000000 --- a/star/test_suite/12M_pre_ms_to_core_collapse/gyre.in +++ /dev/null @@ -1,32 +0,0 @@ -&model -/ - -&mode - l = 0 -/ - -&osc - nonadiabatic = .TRUE. -/ - -&rot -/ - -&num - diff_scheme = 'MAGNUS_GL2' -/ - -&scan - grid_type = 'LINEAR' - freq_min = 0.5 - freq_max = 5.0 - freq_min_units = 'ACOUSTIC_DELTA' - freq_max_units = 'ACOUSTIC_DELTA' - n_freq = 50 -/ - -&grid - w_osc = 10 - w_exp = 2 - w_ctr = 10 -/ diff --git a/star/test_suite/12M_pre_ms_to_core_collapse/inlist_common b/star/test_suite/12M_pre_ms_to_core_collapse/inlist_common index 8164ab092..a6439c41a 100644 --- a/star/test_suite/12M_pre_ms_to_core_collapse/inlist_common +++ b/star/test_suite/12M_pre_ms_to_core_collapse/inlist_common @@ -190,7 +190,7 @@ limit_for_rel_error_in_energy_conservation = 1d-7 hard_limit_for_rel_error_in_energy_conservation = 1d-6 - never_skip_hard_limits = .true + never_skip_hard_limits = .true. min_xa_hard_limit = -1d-5 min_xa_hard_limit_for_highT = -3d-5 diff --git a/star/test_suite/12M_pre_ms_to_core_collapse/src/run_star_extras.f90 b/star/test_suite/12M_pre_ms_to_core_collapse/src/run_star_extras.f90 index 93e650767..eca52db75 100644 --- a/star/test_suite/12M_pre_ms_to_core_collapse/src/run_star_extras.f90 +++ b/star/test_suite/12M_pre_ms_to_core_collapse/src/run_star_extras.f90 @@ -27,7 +27,6 @@ module run_star_extras use const_def use math_lib use auto_diff - use gyre_lib implicit none @@ -40,18 +39,6 @@ module run_star_extras !alpha_other = s% x_ctrl(22) !H_limit = s% x_ctrl(23) -!gyre - !x_logical_ctrl(37) = .false. ! if true, then run GYRE - !x_integer_ctrl(1) = 2 ! output GYRE info at this step interval - !x_logical_ctrl(1) = .false. ! save GYRE info whenever save profile - !x_integer_ctrl(2) = 2 ! max number of modes to output per call - !x_logical_ctrl(2) = .false. ! output eigenfunction files - !x_integer_ctrl(3) = 0 ! mode l (e.g. 0 for p modes, 1 for g modes) - !x_integer_ctrl(4) = 1 ! order - !x_ctrl(1) = 0.158d-05 ! freq ~ this (Hz) - !x_ctrl(2) = 0.33d+03 ! growth < this (days) - - contains include "test_suite_extras.inc" @@ -121,22 +108,6 @@ subroutine extras_startup(id, restart, ierr) if (.not. s% x_logical_ctrl(37)) return - ! Initialize GYRE - - call gyre_init('gyre.in') - - ! Set constants - - call gyre_set_constant('G_GRAVITY', standard_cgrav) - call gyre_set_constant('C_LIGHT', clight) - call gyre_set_constant('A_RADIATION', crad) - - call gyre_set_constant('M_SUN', Msun) - call gyre_set_constant('R_SUN', Rsun) - call gyre_set_constant('L_SUN', Lsun) - - call gyre_set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') - end subroutine extras_startup @@ -170,7 +141,6 @@ subroutine extras_after_evolve(id, ierr) end select call test_suite_after_evolve(s, ierr) if (.not. s% x_logical_ctrl(37)) return - call gyre_final() end subroutine extras_after_evolve @@ -239,8 +209,6 @@ subroutine data_for_extra_profile_columns(id, n, nz, names, vals, ierr) end do end subroutine data_for_extra_profile_columns - include 'gyre_in_mesa_extras_finish_step.inc' - ! returns either keep_going or terminate. integer function extras_finish_step(id) integer, intent(in) :: id @@ -251,7 +219,6 @@ integer function extras_finish_step(id) if (ierr /= 0) return extras_finish_step = keep_going if (.not. s% x_logical_ctrl(37)) return - extras_finish_step = gyre_in_mesa_extras_finish_step(id) if (extras_finish_step == terminate) & s% termination_code = t_extras_finish_step end function extras_finish_step diff --git a/star/test_suite/15M_dynamo/README.rst b/star/test_suite/15M_dynamo/README.rst index f024af974..a8c442da7 100644 --- a/star/test_suite/15M_dynamo/README.rst +++ b/star/test_suite/15M_dynamo/README.rst @@ -51,7 +51,7 @@ The radial and azimuthal components of the magnetic field are only being generated in the radiative region between convection zone (bottom panel). .. image:: ../../../star/test_suite/15M_dynamo/docs/profile_Panels4_00000521.svg - :scale: 100% + :width: 100% pgstar commands used for the plots above: diff --git a/star/test_suite/16M_conv_premix/README.rst b/star/test_suite/16M_conv_premix/README.rst index 4246bbf4c..e82244074 100644 --- a/star/test_suite/16M_conv_premix/README.rst +++ b/star/test_suite/16M_conv_premix/README.rst @@ -19,7 +19,7 @@ A Kippenhahn diagram shows the evolution of a retreating convective core on the This can be compared to Figure 41 in the MESA V instrument paper, and the predictive mixing Kippenhahn diagram in :ref:`16M_predictive_mix`. .. image:: ../../../star/test_suite/16M_conv_premix/docs/kipp_00000388.svg - :scale: 100% + :width: 100% pgstar commands used for the plots above: diff --git a/star/test_suite/16M_predictive_mix/README.rst b/star/test_suite/16M_predictive_mix/README.rst index 8ad8df9d2..d67cbdd58 100644 --- a/star/test_suite/16M_predictive_mix/README.rst +++ b/star/test_suite/16M_predictive_mix/README.rst @@ -19,7 +19,7 @@ A Kippenhahn diagram shows the evolution of a retreating convective core on the This can be compared to Figure 3 in the MESA IV instrument paper, and the convective pre-mixing Kippenhahn diagram in :ref:`16M_conv_premix`. .. image:: ../../../star/test_suite/16M_predictive_mix/docs/kipp_00000385.svg - :scale: 100% + :width: 100% pgstar commands used for the plots above: diff --git a/star/test_suite/1M_pre_ms_to_wd/README.rst b/star/test_suite/1M_pre_ms_to_wd/README.rst index 6efd2bea4..ab0b22ef8 100644 --- a/star/test_suite/1M_pre_ms_to_wd/README.rst +++ b/star/test_suite/1M_pre_ms_to_wd/README.rst @@ -13,28 +13,28 @@ This test case has six parts. Click to see a larger view of a plot. * Part 2 (``inlist_to_end_core_h_burn``) continues the evolution until core hydrogen depletion (mass fraction h1_center < 1e-4). .. image:: ../../../star/test_suite/1M_pre_ms_to_wd/docs/grid6_00000295.svg - :scale: 100% + :width: 100% * Part 3 (``inlist_to_start_he_core_flash_header``) continues the evolution until the onset of core helium ignition (power from he burning > 10). .. image:: ../../../star/test_suite/1M_pre_ms_to_wd/docs/grid6_00010474.svg - :scale: 100% + :width: 100% * Part 4 (``inlist_to_end_core_he_burn``) continues the evolution until core helium depletion (mass fraction he4_center < 1e-4). .. image:: ../../../star/test_suite/1M_pre_ms_to_wd/docs/grid6_00012472.svg - :scale: 100% + :width: 100% * Part 5 (``inlist_to_end_agb``) continues the evolution through the thermal pulses until the end of the AGB phase of evolution (hydrogen-rich envelope mass < 1e-2 Msun). .. image:: ../../../star/test_suite/1M_pre_ms_to_wd/docs/grid6_00013000.svg - :scale: 100% + :width: 100% * Part 6 (``inlist_to_wd``) continues the evolution until the luminosity of the cooling white dwarf reaches L < 0.1 Lsun. .. image:: ../../../star/test_suite/1M_pre_ms_to_wd/docs/grid6_00013356.svg - :scale: 100% + :width: 100% pgstar commands used for the plots above: diff --git a/star/test_suite/1M_thermohaline/README.rst b/star/test_suite/1M_thermohaline/README.rst index 02caeaf06..77cd7fea2 100644 --- a/star/test_suite/1M_thermohaline/README.rst +++ b/star/test_suite/1M_thermohaline/README.rst @@ -41,7 +41,7 @@ thermohaline region. Within the thermohaline region, nuclear burning is starting to transform the hydrogen-rich envelope to the helium-rich core. .. image:: ../../../star/test_suite/1M_thermohaline/docs/abund_00004245.svg - :scale: 100% + :width: 100% The brunt B profile in the vicinity of the thermohaline region is shown the following plot. The mixing type is again indicated on the @@ -51,7 +51,7 @@ thermohaline mixing. Note the thermohaline region begins and ends where brunt B becomes negative. .. image:: ../../../star/test_suite/1M_thermohaline/docs/profile_panels1_00004245.svg - :scale: 100% + :width: 100% pgstar commands used for the plots above: diff --git a/star/test_suite/20M_pre_ms_to_core_collapse/gyre.in b/star/test_suite/20M_pre_ms_to_core_collapse/gyre.in deleted file mode 100644 index e27703b48..000000000 --- a/star/test_suite/20M_pre_ms_to_core_collapse/gyre.in +++ /dev/null @@ -1,32 +0,0 @@ -&model -/ - -&mode - l = 0 -/ - -&osc - nonadiabatic = .TRUE. -/ - -&rot -/ - -&num - diff_scheme = 'MAGNUS_GL2' -/ - -&scan - grid_type = 'LINEAR' - freq_min = 0.5 - freq_max = 5.0 - freq_min_units = 'ACOUSTIC_DELTA' - freq_max_units = 'ACOUSTIC_DELTA' - n_freq = 50 -/ - -&grid - w_osc = 10 - w_exp = 2 - w_ctr = 10 -/ diff --git a/star/test_suite/20M_pre_ms_to_core_collapse/inlist_common b/star/test_suite/20M_pre_ms_to_core_collapse/inlist_common index 8164ab092..a6439c41a 100644 --- a/star/test_suite/20M_pre_ms_to_core_collapse/inlist_common +++ b/star/test_suite/20M_pre_ms_to_core_collapse/inlist_common @@ -190,7 +190,7 @@ limit_for_rel_error_in_energy_conservation = 1d-7 hard_limit_for_rel_error_in_energy_conservation = 1d-6 - never_skip_hard_limits = .true + never_skip_hard_limits = .true. min_xa_hard_limit = -1d-5 min_xa_hard_limit_for_highT = -3d-5 diff --git a/star/test_suite/20M_pre_ms_to_core_collapse/src/run_star_extras.f90 b/star/test_suite/20M_pre_ms_to_core_collapse/src/run_star_extras.f90 index 70b5accc7..2cf66b188 100644 --- a/star/test_suite/20M_pre_ms_to_core_collapse/src/run_star_extras.f90 +++ b/star/test_suite/20M_pre_ms_to_core_collapse/src/run_star_extras.f90 @@ -27,7 +27,6 @@ module run_star_extras use const_def use math_lib use auto_diff - use gyre_lib implicit none @@ -40,18 +39,6 @@ module run_star_extras !alpha_other = s% x_ctrl(22) !H_limit = s% x_ctrl(23) -!gyre - !x_logical_ctrl(37) = .false. ! if true, then run GYRE - !x_integer_ctrl(1) = 2 ! output GYRE info at this step interval - !x_logical_ctrl(1) = .false. ! save GYRE info whenever save profile - !x_integer_ctrl(2) = 2 ! max number of modes to output per call - !x_logical_ctrl(2) = .false. ! output eigenfunction files - !x_integer_ctrl(3) = 0 ! mode l (e.g. 0 for p modes, 1 for g modes) - !x_integer_ctrl(4) = 1 ! order - !x_ctrl(1) = 0.158d-05 ! freq ~ this (Hz) - !x_ctrl(2) = 0.33d+03 ! growth < this (days) - - contains include "test_suite_extras.inc" @@ -121,22 +108,6 @@ subroutine extras_startup(id, restart, ierr) if (.not. s% x_logical_ctrl(37)) return - ! Initialize GYRE - - call gyre_init('gyre.in') - - ! Set constants - - call gyre_set_constant('G_GRAVITY', standard_cgrav) - call gyre_set_constant('C_LIGHT', clight) - call gyre_set_constant('A_RADIATION', crad) - - call gyre_set_constant('M_SUN', Msun) - call gyre_set_constant('R_SUN', Rsun) - call gyre_set_constant('L_SUN', Lsun) - - call gyre_set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') - end subroutine extras_startup @@ -170,7 +141,6 @@ subroutine extras_after_evolve(id, ierr) end select call test_suite_after_evolve(s, ierr) if (.not. s% x_logical_ctrl(37)) return - call gyre_final() end subroutine extras_after_evolve @@ -239,8 +209,6 @@ subroutine data_for_extra_profile_columns(id, n, nz, names, vals, ierr) end do end subroutine data_for_extra_profile_columns - include 'gyre_in_mesa_extras_finish_step.inc' - ! returns either keep_going or terminate. integer function extras_finish_step(id) integer, intent(in) :: id @@ -251,7 +219,6 @@ integer function extras_finish_step(id) if (ierr /= 0) return extras_finish_step = keep_going if (.not. s% x_logical_ctrl(37)) return - extras_finish_step = gyre_in_mesa_extras_finish_step(id) if (extras_finish_step == terminate) & s% termination_code = t_extras_finish_step end function extras_finish_step diff --git a/star/test_suite/20M_z2m2_high_rotation/README.rst b/star/test_suite/20M_z2m2_high_rotation/README.rst index 502ec6e5e..93b9aefde 100644 --- a/star/test_suite/20M_z2m2_high_rotation/README.rst +++ b/star/test_suite/20M_z2m2_high_rotation/README.rst @@ -11,7 +11,7 @@ This test case has one part. Click to see a larger view of a plot. * Part 1 (``inlist_to_end_core_he_burn``) loads a 20 Msun zero-age main-sequence model, relaxes a uniform new_omega_div_omega_crit = 0.75 rotation profile, and evolves the model to the end of core helium burning (mass fraction he4 < 0.0001). At the end of the run: .. image:: ../../../star/test_suite/20M_z2m2_high_rotation/docs/grid1_000890.svg - :scale: 100% + :width: 100% pgstar commands used for the plots above: diff --git a/star/test_suite/5M_cepheid_blue_loop/README.rst b/star/test_suite/5M_cepheid_blue_loop/README.rst index 3cbd415c9..c6e2e9643 100644 --- a/star/test_suite/5M_cepheid_blue_loop/README.rst +++ b/star/test_suite/5M_cepheid_blue_loop/README.rst @@ -14,7 +14,7 @@ This test case has two parts. Click to see a larger view of a plot. * Part 2 (``inlist_cepheid_blue_loop``) continues the evolution as core helium burning proceeds. The model executes a blue loop, with the red edge and blue edge of the classical Cepheid instability strip boundaries shown in the HR diagram: .. image:: ../../../star/test_suite/5M_cepheid_blue_loop/docs/hr002086.svg - :scale: 100% + :width: 100% pgstar commands used: diff --git a/star/test_suite/7M_prems_to_AGB/README.rst b/star/test_suite/7M_prems_to_AGB/README.rst index bf6b0b377..ebc97e00f 100644 --- a/star/test_suite/7M_prems_to_AGB/README.rst +++ b/star/test_suite/7M_prems_to_AGB/README.rst @@ -4,7 +4,7 @@ 7M_prems_to_AGB *************** -This test case checks that the evolution of a 7 Msun, metal-poor Z = 0.001, model reaches the AGB. +This test case checks that the evolution of a 7 |Msun|, metal-poor Z = 0.001, model reaches the AGB. This test case has two parts. Click to see a larger view of a plot. @@ -12,45 +12,17 @@ This test case has two parts. Click to see a larger view of a plot. * Part 2 (``inlist_7M_prems_to_AGB``) continues the evolution as core hydrogen and helium burning proceed, terminating when log10(L/Lsun)=4.3 is reached. The model executes a blue loop as helium depletes, with the red edge and blue edge of the classical Cepheid instability strip boundaries shown in the HR diagram: -.. image:: ../../../star/test_suite/7M_prems_to_AGB/docs/hr000794.svg - :scale: 100% +.. image:: ../../../star/test_suite/7M_prems_to_AGB/docs/hr000785.svg + :width: 100% pgstar commands used: -.. code-block:: console - - &pgstar - - file_white_on_black_flag = .true. ! white_on_black flags -- true means white foreground color on black background - file_device = 'png' ! png - file_extension = 'png' - - !file_device = 'vcps' ! postscript - !file_extension = 'ps' - - pgstar_interval = 10 - - HR_win_flag = .true. - HR_win_width = 12 - HR_win_aspect_ratio = 1.2 ! aspect_ratio = height/width - - HR_logT_min = 3.5 - HR_logT_max = 4.5 - HR_logL_min = 2.7 - HR_logL_max = 4.4 - - ! file output - HR_file_flag = .true. - HR_file_dir = 'pgstar_out' - HR_file_prefix = 'hr' - HR_file_interval = 100 ! output when mod(model_number,HR_file_interval)==0 - HR_file_width = 15 ! negative means use same value as for window - HR_file_aspect_ratio = -1 ! negative means use same value as for window - - / ! end of pgstar namelist - - +.. literalinclude:: ../../../star/test_suite/7M_prems_to_AGB/inlist_pgstar + :language: console + :start-at: &pgstar + :end-at: ! end of pgstar namelist Last-Updated: 29May2021 (MESA e37f76f) by fxt +Last-Run: 06Aug2024 (MESA f50b3763) by pmocz on C916PXT6XW in 410 seconds using 8 threads. diff --git a/star/test_suite/7M_prems_to_AGB/docs/hr000785.svg b/star/test_suite/7M_prems_to_AGB/docs/hr000785.svg new file mode 100644 index 000000000..3e48bc111 --- /dev/null +++ b/star/test_suite/7M_prems_to_AGB/docs/hr000785.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/star/test_suite/7M_prems_to_AGB/inlist_7M_prems_to_AGB b/star/test_suite/7M_prems_to_AGB/inlist_7M_prems_to_AGB index e1a711f81..976cdabaa 100644 --- a/star/test_suite/7M_prems_to_AGB/inlist_7M_prems_to_AGB +++ b/star/test_suite/7M_prems_to_AGB/inlist_7M_prems_to_AGB @@ -2,17 +2,21 @@ &star_job - show_log_description_at_start = .false. + show_log_description_at_start = .false. - load_saved_model = .true. - load_model_filename = 'start.mod' + load_saved_model = .true. + load_model_filename = 'start.mod' - save_model_when_terminate = .true. - save_model_filename = 'final.mod' - required_termination_code_string = 'log_L_upper_limit' + save_model_when_terminate = .true. + save_model_filename = 'final.mod' + required_termination_code_string = 'log_L_upper_limit' + + set_initial_cumulative_energy_error = .true. + new_cumulative_energy_error = 0d0 + + pgstar_flag = .true. + save_pgstar_files_when_terminate = .true. - set_initial_cumulative_energy_error = .true. - new_cumulative_energy_error = 0d0 / ! end of star_job namelist @@ -21,59 +25,58 @@ / ! end of eos namelist &kap - Zbase = 0.001 + Zbase = 0.001 use_Type2_opacities = .true. / !end of kap namelist &controls - - energy_eqn_option = 'dedt' - use_gold2_tolerances = .true. - max_abs_rel_run_E_err = 1d-2 - num_trace_history_values = 2 - trace_history_value_name(1) = 'rel_E_err' - trace_history_value_name(2) = 'log_rel_run_E_err' + energy_eqn_option = 'dedt' + use_gold2_tolerances = .true. + max_abs_rel_run_E_err = 1d-2 - ! limit max_model_number as part of test_suite - max_model_number = 3000 + num_trace_history_values = 2 + trace_history_value_name(1) = 'rel_E_err' + trace_history_value_name(2) = 'log_rel_run_E_err' - initial_mass = 7.00 - initial_z = 0.001 - - mixing_length_alpha = 1.73 + ! limit max_model_number as part of test_suite + max_model_number = 3000 - log_L_upper_limit = 4.3 + initial_mass = 7.00 + initial_z = 0.001 - overshoot_scheme(1) = 'exponential' - overshoot_zone_type(1) = 'any' - overshoot_zone_loc(1) = 'any' - overshoot_bdy_loc(1) = 'any' - overshoot_f(1) = 0.014 - overshoot_f0(1) = 0.004 + mixing_length_alpha = 1.73 - atm_option = 'T_tau' - atm_T_tau_relation = 'Eddington' - atm_T_tau_opacity = 'fixed' + log_L_upper_limit = 4.3 -! mass loss - cool_wind_full_on_T = 9.99d9 - hot_wind_full_on_T = 1d10 - cool_wind_RGB_scheme = 'Reimers' - cool_wind_AGB_scheme = 'Blocker' - RGB_to_AGB_wind_switch = 1d-4 - Reimers_scaling_factor = 0.5d0 - Blocker_scaling_factor = 0.0003d0 + overshoot_scheme(1) = 'exponential' + overshoot_zone_type(1) = 'any' + overshoot_zone_loc(1) = 'any' + overshoot_bdy_loc(1) = 'any' + overshoot_f(1) = 0.014 + overshoot_f0(1) = 0.004 + atm_option = 'T_tau' + atm_T_tau_relation = 'Eddington' + atm_T_tau_opacity = 'fixed' - photo_interval = 50 - profile_interval = 100 - history_interval = 10 - terminal_interval = 10 - write_header_frequency = 10 +! mass loss + cool_wind_full_on_T = 9.99d9 + hot_wind_full_on_T = 1d10 + cool_wind_RGB_scheme = 'Reimers' + cool_wind_AGB_scheme = 'Blocker' + RGB_to_AGB_wind_switch = 1d-4 + Reimers_scaling_factor = 0.5d0 + Blocker_scaling_factor = 0.0003d0 -/ ! end of controls namelist + photo_interval = 50 + profile_interval = 100 + history_interval = 10 + terminal_interval = 10 + write_header_frequency = 10 + +/ ! end of controls namelist diff --git a/star/test_suite/7M_prems_to_AGB/inlist_7M_prems_to_AGB_header b/star/test_suite/7M_prems_to_AGB/inlist_7M_prems_to_AGB_header index 2192ae38c..0f6e5d9a4 100644 --- a/star/test_suite/7M_prems_to_AGB/inlist_7M_prems_to_AGB_header +++ b/star/test_suite/7M_prems_to_AGB/inlist_7M_prems_to_AGB_header @@ -1,40 +1,39 @@ &star_job - - read_extra_star_job_inlist(2) = .true. - extra_star_job_inlist_name(2) = 'inlist_7M_prems_to_AGB' + read_extra_star_job_inlist(2) = .true. + extra_star_job_inlist_name(2) = 'inlist_7M_prems_to_AGB' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_7M_prems_to_AGB' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_7M_prems_to_AGB' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_7M_prems_to_AGB' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_7M_prems_to_AGB' / ! end of kap namelist &controls - read_extra_controls_inlist(1) = .true. - extra_controls_inlist_name(1)= 'inlist_7M_prems_to_AGB' + read_extra_controls_inlist(1) = .true. + extra_controls_inlist_name(1)= 'inlist_7M_prems_to_AGB' / ! end of controls namelist &pgstar - read_extra_pgstar_inlist(1) = .true. - extra_pgstar_inlist_name(1)= 'inlist_7M_prems_to_AGB' + read_extra_pgstar_inlist(1) = .true. + extra_pgstar_inlist_name(1)= 'inlist_pgstar' / ! end of pgstar namelist diff --git a/star/test_suite/7M_prems_to_AGB/inlist_pgstar b/star/test_suite/7M_prems_to_AGB/inlist_pgstar new file mode 100644 index 000000000..c80d425e1 --- /dev/null +++ b/star/test_suite/7M_prems_to_AGB/inlist_pgstar @@ -0,0 +1,32 @@ +&pgstar + + ! device + file_white_on_black_flag = .true. + file_device = 'vcps' ! postscript + file_extension = 'ps' + !file_device = 'png' ! png + !file_extension = 'png' + + pgstar_interval = 10 + + HR_win_flag = .true. + HR_win_width = 12 + HR_win_aspect_ratio = 1.2 ! aspect_ratio = height/width + + HR_logT_min = 3.5 + HR_logT_max = 4.5 + HR_logL_min = 2.7 + HR_logL_max = 4.4 + + ! file output + HR_file_flag = .true. + HR_file_dir = 'pgstar_out' + HR_file_prefix = 'hr' + HR_file_interval = 100 ! output when mod(model_number,HR_file_interval)==0 + HR_file_width = 15 ! negative means use same value as for window + HR_file_aspect_ratio = -1 ! negative means use same value as for window + + show_HR_classical_instability_strip = .true. + show_HR_Mira_instability_region = .false. + +/ ! end of pgstar namelist diff --git a/star/test_suite/7M_prems_to_AGB/inlist_start b/star/test_suite/7M_prems_to_AGB/inlist_start index 974644a29..d1055e923 100644 --- a/star/test_suite/7M_prems_to_AGB/inlist_start +++ b/star/test_suite/7M_prems_to_AGB/inlist_start @@ -1,43 +1,46 @@ &star_job - show_log_description_at_start = .false. - - create_pre_main_sequence_model = .true. - + show_log_description_at_start = .false. - save_model_when_terminate = .true. - save_model_filename = 'start.mod' - required_termination_code_string = 'max_age' + create_pre_main_sequence_model = .true. - change_initial_net = .true. - new_net_name = 'o18_and_ne22.net' + + save_model_when_terminate = .true. + save_model_filename = 'start.mod' + required_termination_code_string = 'max_age' + + change_initial_net = .true. + new_net_name = 'o18_and_ne22.net' / ! end of star_job namelist &kap - Zbase = 0.001 - use_Type2_opacities = .true. + Zbase = 0.001 + use_Type2_opacities = .true. / !end of kap namelist +&eos + +/ !end of eos namelist + &controls - ! limit max_model_number as part of test_suite - max_model_number = 150 - use_gold2_tolerances = .true. - - max_age = 0.5d0 + ! limit max_model_number as part of test_suite + max_model_number = 150 + use_gold2_tolerances = .true. - initial_mass = 7.00 - initial_z = 0.001 - - photo_interval = 50 - profile_interval = 100 - history_interval = 10 - terminal_interval = 10 - write_header_frequency = 10 + max_age = 0.5d0 + initial_mass = 7.00 + initial_z = 0.001 + + photo_interval = 50 + profile_interval = 100 + history_interval = 10 + terminal_interval = 10 + write_header_frequency = 10 -/ ! end of controls namelist +/ ! end of controls namelist diff --git a/star/test_suite/7M_prems_to_AGB/inlist_start_header b/star/test_suite/7M_prems_to_AGB/inlist_start_header index 8852b908a..3a86b4deb 100644 --- a/star/test_suite/7M_prems_to_AGB/inlist_start_header +++ b/star/test_suite/7M_prems_to_AGB/inlist_start_header @@ -1,25 +1,24 @@ &star_job - - read_extra_star_job_inlist(2) = .true. - extra_star_job_inlist_name(2) = 'inlist_start' + read_extra_star_job_inlist(2) = .true. + extra_star_job_inlist_name(2) = 'inlist_start' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_start' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_start' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_start' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_start' / ! end of kap namelist @@ -27,15 +26,15 @@ &controls - read_extra_controls_inlist(1) = .true. - extra_controls_inlist_name(1)= 'inlist_start' + read_extra_controls_inlist(1) = .true. + extra_controls_inlist_name(1)= 'inlist_start' / ! end of controls namelist &pgstar - read_extra_pgstar_inlist(1) = .true. - extra_pgstar_inlist_name(1)= 'inlist_start' + read_extra_pgstar_inlist(1) = .true. + extra_pgstar_inlist_name(1)= 'inlist_start' / ! end of pgstar namelist diff --git a/star/test_suite/R_CrB_star/README.rst b/star/test_suite/R_CrB_star/README.rst index de7d3121f..536ddaa5e 100644 --- a/star/test_suite/R_CrB_star/README.rst +++ b/star/test_suite/R_CrB_star/README.rst @@ -51,7 +51,7 @@ skip to part 3. Options shared between all parts are contained in Click to see a larger plot: .. image:: ../../../star/test_suite/R_CrB_star/docs/grid1-000709.svg - :scale: 100% + :width: 100% .. |Weiss1987| replace:: `Weiss (1987) `__ .. |Schwab2019| replace:: `Schwab (2019) `__ diff --git a/star/test_suite/accreted_material_j/README.rst b/star/test_suite/accreted_material_j/README.rst index 7155dd449..a743f35ac 100644 --- a/star/test_suite/accreted_material_j/README.rst +++ b/star/test_suite/accreted_material_j/README.rst @@ -14,51 +14,17 @@ This test case has two parts. Click to see a larger view of a plot. * Part 2 (``inlist_accreted_material_j``) continues the evolution by first applying uniform rotation Omega/Omega_crit = 0.1, and then accreting material with the same composition as the outermost cell at a rate of 0.001 Msun/year with an angular momentum of 0.1 Keplerian. The model terminates when the mass reaches 25 Msun: .. image:: ../../../star/test_suite/accreted_material_j/docs/track1_000452.svg - :scale: 100% + :width: 100% pgstar commands used for the plots above: -.. code-block:: console - - &pgstar - - file_white_on_black_flag = .true. ! white_on_black flags -- true means white foreground color on black background - file_device = 'png' ! png - file_extension = 'png' - - !file_device = 'vcps' ! postscript - !file_extension = 'ps' - - pgstar_interval = 10 - - - History_Track1_win_flag = .true. - History_Track1_win_width = 12 - History_Track1_title = 'accreted_material_j' - History_Track1_xname = 'star_mass' - History_Track1_yname = 'log_total_angular_momentum' - History_Track1_yaxis_label = 'log J' - History_Track1_xaxis_label = 'M\d\(2281)' - History_Track1_reverse_xaxis = .false. - History_Track1_reverse_yaxis = .false. - - History_Track1_xmin = 20.0 - History_Track1_xmax = 25.0 - History_Track1_ymin = 51.9 - History_Track1_ymax = 52.7 - - ! file output - History_Track1_file_flag = .true. - History_Track1_file_dir = 'png' - History_Track1_file_prefix = 'track1_' - History_Track1_file_interval = 10 - History_Track1_file_width =12 - History_Track1_file_aspect_ratio = -1 - - / ! end of pgstar namelist - +.. literalinclude:: ../../../star/test_suite/accreted_material_j/inlist_pgstar + :language: console + :start-at: &pgstar + :end-at: ! end of pgstar namelist Last-Updated: 30May2021 (MESA e37f76f) by fxt +Last-Run: 06Aug2024 (MESA ba042c9d) by pmocz on C916PXT6XW in 178 seconds using 8 threads. diff --git a/star/test_suite/accreted_material_j/docs/track1_000452.svg b/star/test_suite/accreted_material_j/docs/track1_000452.svg index 38926ebb7..3834ebefc 100644 --- a/star/test_suite/accreted_material_j/docs/track1_000452.svg +++ b/star/test_suite/accreted_material_j/docs/track1_000452.svg @@ -1,186 +1 @@ - - - - - - - - - - - - - + \ No newline at end of file diff --git a/star/test_suite/accreted_material_j/history_columns.list b/star/test_suite/accreted_material_j/history_columns.list new file mode 100644 index 000000000..56a1961d6 --- /dev/null +++ b/star/test_suite/accreted_material_j/history_columns.list @@ -0,0 +1,1067 @@ +! history_columns.list -- determines the contents of star history logs +! you can use a non-standard version by setting history_columns_file in your inlist + +! units are cgs unless otherwise noted. + +! reorder the following names as desired to reorder columns. +! comment out the name to omit a column (fewer columns => less IO => faster running). +! remove '!' to restore a column. + +! if you have a situation where you want a non-standard set of columns, +! make a copy of this file, edit as desired, and give the new filename in your inlist +! as history_columns_file. if you are just adding columns, you can 'include' this file, +! and just list the additions in your file. note: to include the standard default +! version, use include '' -- the 0 length string means include the default file. + +! blank lines and comments can be used freely. +! if a column name appears more than once in the list, only the first occurrence is used. + +! if you need to have something added to the list of options, let me know.... + + +! the first few lines of the log file contain a few items: + + ! version_number -- for the version of mesa being used + ! burn_min1 -- 1st limit for reported burning, in erg/g/s + ! burn_min2 -- 2nd limit for reported burning, in erg/g/s + + +!# other files + +! note: you can include another list by doing +! include 'filename' +! include '' means include the default standard list file + +! the following lines of the log file contain info about 1 model per row + +!---------------------------------------------------------------------------------------------- + +!# general info about the model + + model_number ! counting from the start of the run + num_zones ! number of zones in the model + + !## age + + star_age ! elapsed simulated time in years since the start of the run + !star_age_sec ! elapsed simulated time in seconds since the start of the run + !star_age_min ! elapsed simulated time in minutes since the start of the run + !star_age_hr ! elapsed simulated time in hours since the start of the run + !star_age_day ! elapsed simulated time in days since the start of the run + !day ! elapsed simulated time in days since the start of the run + + !log_star_age + !log_star_age_sec + + !## timestep + + !time_step ! timestep in years since previous model + !time_step_sec ! timestep in seconds since previous model + !time_step_days + log_dt ! log10 time_step in years + !log_dt_sec ! log10 time_step in seconds + !log_dt_days ! log10 time_step in days + + !## mass + + star_mass ! in Msun units + !log_star_mass + + !star_gravitational_mass ! star_mass is baryonic mass + !star_mass_grav_div_mass + + !delta_mass ! star_mass - initial_mass in Msun units + log_xmstar ! log10 mass exterior to M_center (grams) + + !## mass change + + !star_mdot ! d(star_mass)/dt (in msolar per year) + log_abs_mdot ! log10(abs(star_mdot)) (in msolar per year) + + !## imposed surface conditions + !Tsurf_factor + !tau_factor + !tau_surface + + !## imposed center conditions + !m_center + !m_center_gm + !r_center + !r_center_cm + !r_center_km + !L_center + !log_L_center + !log_L_center_ergs_s + !v_center + !v_center_kms + + !logt_max + +!---------------------------------------------------------------------------------------------- + +!# mixing and convection + + !max_conv_vel_div_csound + !max_gradT_div_grada + !max_gradT_sub_grada + !min_log_mlt_Gamma + + + !## mixing regions + + mass_conv_core ! (Msun) mass coord of top of convective core. 0 if core is not convective + + ! mx1 refers to the largest (by mass) convective region. + ! mx2 is the 2nd largest. + + ! conv_mx1_top and conv_mx1_bot are the region where mixing_type == convective_mixing. + ! mx1_top and mx1_bot are the extent of all kinds of mixing, convective and other. + + ! values are m/Mstar + conv_mx1_top + conv_mx1_bot + conv_mx2_top + conv_mx2_bot + mx1_top + mx1_bot + mx2_top + mx2_bot + + ! radius -- values are radii in Rsun units + !conv_mx1_top_r + !conv_mx1_bot_r + !conv_mx2_top_r + !conv_mx2_bot_r + !mx1_top_r + !mx1_bot_r + !mx2_top_r + !mx2_bot_r + + ! you might want to get a more complete list of mixing regions by using the following + + !mixing_regions ! note: this includes regions where the mixing type is no_mixing. + + ! the is the number of regions to report + ! there will be 2* columns for this in the log file, 2 for each region. + ! the first column for a region gives the mixing type as defined in const/public/const_def.f90. + + ! the second column for a region gives the m/mstar location of the top of the region + ! entries for extra columns after the last region in the star will have an invalid mixing_type value of -1. + ! mstar is the total mass of the star, so these locations range from 0 to 1 + ! all regions are include starting from the center, so the bottom of one region + ! is the top of the previous one. since we start at the center, the bottom of the 1st region is 0. + + ! the columns in the log file will have names like 'mix_type_1' and 'mix_qtop_1' + + ! if the star has too many regions to report them all, + ! the smallest regions will be merged with neighbors for reporting purposes only. + + + !mix_relr_regions + ! same as above, but locations given as r/rstar instead of m/mstar. + ! the columns in the log file will have names like 'mix_relr_type_1' and 'mix_relr_top_1' + + + !## conditions at base of largest convection zone (by mass) + !cz_bot_mass ! mass coordinate of base (Msun) + !cz_mass ! mass coordinate of base (Msun) -- same as cz_bot_mass + !cz_log_xmass ! mass exterior to base (g) + !cz_log_xmsun ! mass exterior to base (Msun) + !cz_xm ! mass exterior to base (Msun) + !cz_logT + !cz_logRho + !cz_logP + !cz_bot_radius ! Rsun + !cz_log_column_depth + !cz_log_radial_depth + !cz_luminosity ! Lsun + !cz_opacity + !cz_log_tau + !cz_eta + !cz_log_eps_nuc ! log10(ergs/g/s) + !cz_t_heat ! Cp*T/eps_nuc (seconds) + + !cz_csound + !cz_scale_height + !cz_grav + + !cz_omega + !cz_omega_div_omega_crit + + !cz_zone + + ! mass fractions at base of largest convection zone (by mass) + !cz_log_xa h1 + !cz_log_xa he4 + + !## conditions at top of largest convection zone (by mass) + !cz_top_mass ! mass coordinate of top (Msun) + !cz_top_log_xmass ! mass exterior to top (g) + !cz_top_log_xmsun ! mass exterior to top (Msun) + !cz_top_xm ! mass exterior to top (Msun) + !cz_top_logT + !cz_top_logRho + !cz_top_logP + !cz_top_radius ! Rsun + !cz_top_log_column_depth + !cz_top_log_radial_depth + !cz_top_luminosity ! Lsun + !cz_top_opacity + !cz_top_log_tau + !cz_top_eta + !cz_top_log_eps_nuc ! log10(ergs/g/s) + !cz_top_t_heat ! Cp*T/eps_nuc (seconds) + + !cz_top_csound + !cz_top_scale_height + !cz_top_grav + + !cz_top_omega + !cz_top_omega_div_omega_crit + + !cz_top_zone + !cz_top_zone_logdq + + ! mass fractions at top of largest convection zone (by mass) + !cz_top_log_xa h1 + !cz_top_log_xa he4 + +!---------------------------------------------------------------------------------------------- + +!# nuclear reactions + + !## integrated quantities + + !power_h_burn ! total thermal power from PP and CNO, excluding neutrinos (in Lsun units) + !power_he_burn ! total thermal power from triple-alpha, excluding neutrinos (in Lsun units) + !power_photo + !power_z_burn + !log_power_nuc_burn ! total thermal power from all burning, excluding photodisintegrations + log_LH ! log10 power_h_burn + log_LHe ! log10 power_he_burn + log_LZ ! log10 total burning power including LC, but excluding LH and LHe and photodisintegrations + log_Lnuc ! log(LH + LHe + LZ) + !log_Lnuc_ergs_s + !log_Lnuc_sub_log_L + !lnuc_photo + + !extra_L ! integral of extra_heat in Lsun units + !log_extra_L ! log10 extra_L + + !## neutrino losses + !log_Lneu ! log10 power emitted in neutrinos, nuclear and thermal (in Lsun units) + !log_Lneu_nuc ! log10 power emitted in neutrinos, nuclear sources only (in Lsun units) + !log_Lneu_nonnuc ! log10 power emitted in neutrinos, thermal sources only (in Lsun units) + + !mass_loc_of_max_eps_nuc ! (in Msun units) + !mass_ext_to_max_eps_nuc ! (in Msun units) + !eps_grav_integral ! (in Lsun units) + !log_abs_Lgrav ! log10 abs(eps_grav_integral) (in Lsun units) + + !## information about reactions (by category) + + ! log10 total luminosity for reaction categories (Lsun units) + + pp + cno + tri_alpha + !c_alpha + !n_alpha + !o_alpha + !ne_alpha + !na_alpha + !mg_alpha + !si_alpha + !s_alpha + !ar_alpha + !ca_alpha + !ti_alpha + !fe_co_ni + !c12_c12 + !c12_o16 + !o16_o16 + !photo + !pnhe4 + !other + + !## information about individual reactions + + ! adds columns for all of the reactions that are in the current net + ! Note that if using op_split_burn=.true. then zones which have been split will report 0 for thier rates + !add_raw_rates ! raw reaction rates, reactions/second + !add_screened_rates ! screened reaction rates reactions/second + !add_eps_nuc_rates ! Nuclear energy (minus neutrino losses) released erg/s + !add_eps_neu_rates ! Neutrino losses erg/s + + ! individual reactions (as many as desired) + ! use list_net_reactions = .true. in star_job to list all reactions in the current net + ! reactions/second + !raw_rate r_h1_h1_ec_h2 + !raw_rate r_h1_h1_wk_h2 + + + + !## nuclear reactions at center + + ! center log10 burn erg/g/s for reaction categories + + !c_log_eps_burn cno + !c_log_eps_burn tri_alfa + + ! center d_eps_nuc_dlnd for reaction categories + + !c_d_eps_dlnd cno + !c_d_eps_dlnd tri_alfa + + ! center d_eps_nuc_dlnT for reaction categories + + !c_d_eps_dlnT cno + !c_d_eps_dlnT tri_alfa + + !## regions of strong nuclear burning + + ! 2 zones where eps_nuc > burn_min1 erg/g/s + ! for each zone have 4 numbers: start1, start2, end2, end1 + ! start1 is mass of inner edge where first goes > burn_min1 (or -20 if none such) + ! start2 is mass of inner edge where first zone reaches burn_min2 erg/g/sec (or -20 if none such) + ! end2 is mass of outer edge where first zone drops back below burn_min2 erg/g/s + ! end1 is mass of outer edge where first zone ends (i.e. eps_nuc < burn_min1) + ! similar for the second zone + + epsnuc_M_1 ! start1 for 1st zone + epsnuc_M_2 ! start2 + epsnuc_M_3 ! end2 + epsnuc_M_4 ! end1 + + epsnuc_M_5 ! start1 for 2nd zone + epsnuc_M_6 ! start2 + epsnuc_M_7 ! end2 + epsnuc_M_8 ! end1 + + + ! you might want to get a more complete list of burning regions by using the following + + !burning_regions + ! the is the number of regions to report + ! there will be 2* columns for this in the log file, 2 for each region. + ! the first column for a region gives int(sign(val)*log10(max(1,abs(val)))) + ! where val = ergs/gm/sec nuclear energy minus all neutrino losses. + ! the second column for a region gives the q location of the top of the region + ! entries for extra columns after the last region in the star will have a value of -9999 + ! all regions are included starting from the center, so the bottom of one region + ! is the top of the previous one. + ! since we start at the center, the bottom of the 1st region is q=0 and top of last is q=1. + + ! the columns in the log file will have names like 'burn_type_1' and 'burn_qtop_1' + + !burn_relr_regions + ! same as above, but locations given as r/rstar instead of m/mstar. + ! the columns in the log file will have names like 'burn_relr_type_1' and 'burn_relr_top_1' + + + ! if the star has too many regions to report them all, + ! the smallest regions will be merged with neighbors for reporting purposes only. + +!---------------------------------------------------------------------------------------------- + +!# information about core and envelope + + !## helium core + he_core_mass + !he_core_radius + !he_core_lgT + !he_core_lgRho + !he_core_L + !he_core_v + !he_core_omega + !he_core_omega_div_omega_crit + !he_core_k + + !## CO core + co_core_mass + !CO_core + !co_core_radius + !co_core_lgT + !co_core_lgRho + !co_core_L + !co_core_v + !co_core_omega + !co_core_omega_div_omega_crit + !co_core_k + + !## ONe core + one_core_mass + !one_core_radius + !one_core_lgT + !one_core_lgRho + !one_core_L + !one_core_v + !one_core_omega + !one_core_omega_div_omega_crit + !one_core_k + + !## iron core + fe_core_mass + !fe_core_radius + !fe_core_lgT + !fe_core_lgRho + !fe_core_L + !fe_core_v + !fe_core_omega + !fe_core_omega_div_omega_crit + !fe_core_k + + !## neuton rich core + neutron_rich_core_mass + !neutron_rich_core_radius + !neutron_rich_core_lgT + !neutron_rich_core_lgRho + !neutron_rich_core_L + !neutron_rich_core_v + !neutron_rich_core_omega + !neutron_rich_core_omega_div_omega_crit + !neutron_rich_core_k + + !## envelope + + !envelope_mass ! = star_mass - he_core_mass + !envelope_fraction_left ! = envelope_mass / (initial_mass - he_core_mass) + + !h_rich_layer_mass ! = star_mass - he_core_mass + !he_rich_layer_mass ! = he_core_mass - c_core_mass + !co_rich_layer_mass + +!---------------------------------------------------------------------------------------------- + +!# timescales + + !dynamic_timescale ! dynamic timescale (seconds) -- estimated by 2*pi*sqrt(r^3/(G*m)) + !kh_timescale ! kelvin-helmholtz timescale (years) + !mdot_timescale ! star_mass/abs(star_mdot) (years) + !kh_div_mdot_timescales ! kh_timescale/mdot_timescale + !nuc_timescale ! nuclear timescale (years) -- proportional to mass divided by luminosity + + !dt_cell_collapse ! min time for any cell to collapse at current velocities + !dt_div_dt_cell_collapse + + !dt_div_max_tau_conv ! dt/ maximum conv timescale + !dt_div_min_tau_conv ! dt/ minimum conv timescale + + + !min_dr_div_cs ! min over all cells of dr/csound (seconds) + !min_dr_div_cs_k ! location of min + !log_min_dr_div_cs ! log10 min dr_div_csound (seconds) + !min_dr_div_cs_yr ! min over all cells of dr/csound (years) + !log_min_dr_div_cs_yr ! log10 min dr_div_csound (years) + !dt_div_min_dr_div_cs + !log_dt_div_min_dr_div_cs + + !min_t_eddy ! minimum value of scale_height/conv_velocity + +!---------------------------------------------------------------------------------------------- + +!# conditions at or near the surface of the model + + !## conditions at the photosphere + !effective_T + !Teff + log_Teff ! log10 effective temperature + ! Teff is calculated using Stefan-Boltzmann relation L = 4 pi R^2 sigma Teff^4, + ! where L and R are evaluated at the photosphere (tau_factor < 1) + ! or surface of the model (tau_factor >= 1) when photosphere is not inside the model. + + !photosphere_black_body_T + !photosphere_cell_T ! temperature at model location closest to the photosphere, not necessarily Teff + !photosphere_cell_log_T + !photosphere_cell_density + !photosphere_cell_log_density + !photosphere_cell_opacity + !photosphere_cell_log_opacity + !photosphere_L ! Lsun units + !photosphere_log_L ! Lsun units + !photosphere_r ! Rsun units + !photosphere_log_r ! Rsun units + !photosphere_m ! Msun units + !photosphere_v_km_s + !photosphere_cell_k + !photosphere_column_density + !photosphere_csound + !photosphere_log_column_density + !photosphere_opacity + !photosphere_v_div_cs + !photosphere_xm + !photosphere_cell_free_e + !photosphere_cell_log_free_e + !photosphere_logg + !photosphere_T + + !## conditions at or near the surface of the model (outer edge of outer cell) + + !luminosity ! luminosity in Lsun units + !luminosity_ergs_s ! luminosity in cgs units + log_L ! log10 luminosity in Lsun units + !log_L_ergs_s ! log10 luminosity in cgs units + !radius ! Rsun + log_R ! log10 radius in Rsun units + !radius_cm + !log_R_cm + + log_g ! log10 gravity + !gravity + !log_Ledd + !log_L_div_Ledd ! log10(L/Leddington) + !lum_div_Ledd + !log_surf_optical_depth + !surface_optical_depth + + !log_surf_cell_opacity ! old name was log_surf_opacity + !log_surf_cell_P ! old name was log_surf_P + !log_surf_cell_pressure ! old name was log_surf_pressure + !log_surf_cell_density ! old name was log_surf_density + !log_surf_cell_temperature ! old name was log_surf_temperature + !surface_cell_temperature ! old name was surface_temperature + !log_surf_cell_z ! old name was log_surf_z + !surface_cell_entropy ! in units of kerg per baryon + ! old name was surface_entropy + + !v_surf ! (cm/s) + !v_surf_km_s ! (km/s) + v_div_csound_surf ! velocity divided by sound speed at outermost grid point + !v_div_csound_max ! max value of velocity divided by sound speed at face + !v_div_vesc + !v_phot_km_s + !v_surf_div_escape_v + + !v_surf_div_v_kh ! v_surf/(photosphere_r/kh_timescale) + + !surf_avg_j_rot + !surf_avg_omega + !surf_avg_omega_crit + !surf_avg_omega_div_omega_crit + !surf_avg_v_rot ! km/sec rotational velocity at equator + !surf_avg_v_crit ! critical rotational velocity at equator + !surf_avg_v_div_v_crit + !surf_avg_Lrad_div_Ledd + !surf_avg_logT + !surf_avg_logRho + !surf_avg_opacity + + ! Gravity Darkening, reports the surface averaged L/Lsun and Teff (K) caused by + ! gravity darkening in rotating stars. Based on the model of Espinosa Lara & Rieutord (2011) + ! 'polar' refers to the line of sight being directed along the rotation axis of the star + ! 'equatorial' refers to the line of sight coincident with the stellar equator + !grav_dark_L_polar !Lsun + !grav_dark_Teff_polar !K + !grav_dark_L_equatorial !Lsun + !grav_dark_Teff_equatorial !K + + !surf_escape_v ! cm/s + + !v_wind_Km_per_s ! Km/s + ! = 1d-5*s% opacity(1)*max(0d0,-s% mstar_dot)/ & + ! (4*pi*s% photosphere_r*Rsun*s% tau_base) + ! Lars says: + ! wind_mdot = 4*pi*R^2*rho*v_wind + ! tau = integral(opacity*rho*dr) from R to infinity + ! so tau = opacity*wind_mdot/(4*pi*R*v_wind) at photosphere + ! or v_wind = opacity*wind_mdot/(4*pi*R*tau) at photosphere + + !rotational_mdot_boost ! factor for increase in mass loss mdot due to rotation + !log_rotational_mdot_boost ! log factor for increase in mass loss mdot due to rotation + !surf_r_equatorial_div_r_polar + !surf_r_equatorial_div_r + !surf_r_polar_div_r + +!---------------------------------------------------------------------------------------------- + +!# conditions near center + + !log_center_T ! temperature + !log_center_Rho ! density + !log_center_P ! pressure + + ! shorter names for above + log_cntr_P + log_cntr_Rho + log_cntr_T + + !center_T ! temperature + !center_Rho ! density + !center_P ! pressure + + !center_degeneracy ! the electron chemical potential in units of k*T + !center_gamma ! plasma interaction parameter + center_mu + center_ye + center_abar + !center_zbar + + !center_eps_grav + + !center_non_nuc_neu + !center_eps_nuc + !d_center_eps_nuc_dlnT + !d_center_eps_nuc_dlnd + !log_center_eps_nuc + + !center_entropy ! in units of kerg per baryon + !max_entropy ! in units of kerg per baryon + !fe_core_infall + !non_fe_core_infall + !non_fe_core_rebound + !max_infall_speed + + !compactness_parameter ! (m/Msun)/(R(m)/1000km) for m = 2.5 Msun + !compactness + !m4 ! Mass co-ordinate where entropy=4 + ! mu4 is sensitive to the choice of how much dm/dr you average over, thus we average dm and dr over M(entropy=4) and M(entropy=4)+0.3Msun + !mu4 ! dM(Msun)/dr(1000km) where entropy=4 + + + !center_omega + !center_omega_div_omega_crit + +!---------------------------------------------------------------------------------------------- + +!# abundances + + !species ! size of net + + !## mass fractions near center + + ! the following controls automatically add columns for all of the isos that are in the current net + !add_center_abundances + !add_log_center_abundances + + ! individual central mass fractions (as many as desired) + center h1 + center he4 + center c12 + center o16 + + ! individual log10 central mass fractions (as many as desired) + !log_center h1 + !log_center he4 + ! etc. + + + !## mass fractions near surface + + ! the following controls automatically add columns for all of the isos that are in the current net + !add_surface_abundances + !add_log_surface_abundances + + ! individual surface mass fractions (as many as desired) + !surface h1 + !surface he4 + surface c12 + surface o16 + ! etc. + + ! individual log10 surface mass fractions (as many as desired) + + !log_surface h1 + !log_surface he4 + + + !## mass fractions for entire star + + ! the following controls automatically add columns for all of the isos that are in the current net + !add_average_abundances + !add_log_average_abundances + + ! individual average mass fractions (as many as desired) + !average h1 + !average he4 + ! etc. + + ! individual log10 average mass fractions (as many as desired) + !log_average h1 + !log_average he4 + ! etc. + + + !## mass totals for entire star (in Msun units) + + ! the following controls automatically add columns for all of the isos that are in the current net + !add_total_mass + !add_log_total_mass + + ! individual mass totals for entire star (as many as desired) + total_mass h1 + total_mass he4 + ! etc. + + ! individial log10 mass totals for entire star (in Msun units) + !log_total_mass h1 + !log_total_mass he4 + ! etc. + +!---------------------------------------------------------------------------------------------- + +!# info at specific locations + + !## info at location of max temperature + !max_T + !log_max_T + + +!---------------------------------------------------------------------------------------------- + +!# information about shocks + + !## info about outermost outward moving shock + ! excluding locations with q > max_q_for_outer_mach1_location + ! returns values at location of max velocity + !shock_mass ! baryonic (Msun) + !shock_mass_gm ! baryonic (grams) + !shock_q + !shock_radius ! (Rsun) + !shock_radius_cm ! (cm) + !shock_velocity + !shock_csound + !shock_v_div_cs + !shock_lgT + !shock_lgRho + !shock_lgP + !shock_gamma1 + !shock_entropy + !shock_tau + !shock_k + !shock_pre_lgRho + +!---------------------------------------------------------------------------------------------- + +!# asteroseismology + + !delta_nu ! large frequency separation for p-modes (microHz) + ! 1e6/(seconds for sound to cross diameter of star) + !delta_Pg ! g-mode period spacing for l=1 (seconds) + ! sqrt(2) pi^2/(integral of brunt_N/r dr) + !log_delta_Pg + !nu_max ! estimate from scaling relation (microHz) + ! nu_max = nu_max_sun * M/Msun / ((R/Rsun)^2 (Teff/astero_Teff_sun)^0.5) + !nu_max_3_4th_div_delta_nu ! nu_max^0.75/delta_nu + !acoustic_cutoff ! 0.5*g*sqrt(gamma1*rho/P) at surface + !acoustic_radius ! integral of dr/csound (seconds) + !ng_for_nu_max ! = 1 / (nu_max*delta_Pg) + ! period for g-mode with frequency nu_max = nu_max_ng*delta_Pg + !gs_per_delta_nu ! delta_nu / (nu_max**2*delta_Pg) + ! number of g-modes per delta_nu at nu_max + + !int_k_r_dr_nu_max_Sl1 ! integral of k_r*dr where nu < N < Sl for nu = nu_max, l=1 + !int_k_r_dr_2pt0_nu_max_Sl1 ! integral of k_r*dr where nu < N < Sl for nu = nu_max*2, l=1 + !int_k_r_dr_0pt5_nu_max_Sl1 ! integral of k_r*dr where nu < N < Sl for nu = nu_max/2, l=1 + !int_k_r_dr_nu_max_Sl2 ! integral of k_r*dr where nu < N < Sl for nu = nu_max, l=2 + !int_k_r_dr_2pt0_nu_max_Sl2 ! integral of k_r*dr where nu < N < Sl for nu = nu_max*2, l=2 + !int_k_r_dr_0pt5_nu_max_Sl2 ! integral of k_r*dr where nu < N < Sl for nu = nu_max/2, l=2 + !int_k_r_dr_nu_max_Sl3 ! integral of k_r*dr where nu < N < Sl for nu = nu_max, l=3 + !int_k_r_dr_2pt0_nu_max_Sl3 ! integral of k_r*dr where nu < N < Sl for nu = nu_max*2, l=3 + !int_k_r_dr_0pt5_nu_max_Sl3 ! integral of k_r*dr where nu < N < Sl for nu = nu_max/2, l=3 + +!---------------------------------------------------------------------------------------------- + +!# energy information + + !total_energy ! at end of step + !log_total_energy ! log(abs(total_energy)) + !total_energy_after_adjust_mass ! after mass adjustments + + ! shorter versions of above + !tot_E + !log_tot_E + + + !total_gravitational_energy + !log_total_gravitational_energy ! log(abs(total_gravitational_energy)) + !total_gravitational_energy_after_adjust_mass + + ! shorter versions of above + !tot_PE + !log_tot_PE + + !total_internal_energy + !log_total_internal_energy + !total_internal_energy_after_adjust_mass + + ! shorter versions of above + !tot_IE + !log_tot_IE + + !total_radial_kinetic_energy + !log_total_radial_kinetic_energy + !total_radial_kinetic_energy_after_adjust_mass + + ! shorter versions of above (does not include rot KE) + !tot_KE + !log_tot_KE + + !total_turbulent_energy + !log_total_turbulent_energy + !total_turbulent_energy_after_adjust_mass + !tot_Et + !log_tot_Et + + !total_energy_foe + + !tot_IE_div_IE_plus_KE + !total_IE_div_IE_plus_KE + + !total_entropy + !total_eps_grav + + !total_energy_sources_and_sinks ! for this step + !total_nuclear_heating + !total_non_nuc_neu_cooling + !total_irradiation_heating + !total_extra_heating ! extra heat integrated over the model times dt (erg) + !total_WD_sedimentation_heating + + !rel_run_E_err + + !rel_E_err + !abs_rel_E_err + !log_rel_E_err + + !tot_e_equ_err + !tot_e_err + + + !error_in_energy_conservation ! for this step + ! = total_energy - (total_energy_start + total_energy_sources_and_sinks) + !cumulative_energy_error ! = sum over all steps of abs(error_in_energy_conservation) + !rel_cumulative_energy_error ! = cumulative_energy_error/total_energy + !log_rel_cumulative_energy_error ! = log10 of rel_cumulative_energy_error + !log_rel_run_E_err ! shorter name for rel_cumulative_energy_error + + !rel_error_in_energy_conservation ! = error_in_energy_conservation/total_energy + !log_rel_error_in_energy_conservation + + !virial_thm_P_avg + !virial_thm_rel_err + !work_inward_at_center + !work_outward_at_surface + + +!---------------------------------------------------------------------------------------------- + + !# rotation + + !total_angular_momentum + log_total_angular_momentum + !i_rot_total ! moment of inertia + + !total_rotational_kinetic_energy + !log_total_rotational_kinetic_energy + !total_rotational_kinetic_energy_after_adjust_mass + +!---------------------------------------------------------------------------------------------- + +!# velocities + + !avg_abs_v_div_cs + !log_avg_abs_v_div_cs + !max_abs_v_div_cs + !log_max_abs_v_div_cs + + !avg_abs_v + !log_avg_abs_v + !max_abs_v + !log_max_abs_v + + !u_surf + !u_surf_km_s + !u_div_csound_surf + !u_div_csound_max + + !infall_div_cs + +!---------------------------------------------------------------------------------------------- + +!# misc + + !e_thermal ! sum over all zones of Cp*T*dm + + !## eos + !logQ_max ! logQ = logRho - 2*logT + 12 + !logQ_min + !gamma1_min + + !## core mixing + !mass_semiconv_core + + !## H-He boundary + + !diffusion_time_H_He_bdy + !temperature_H_He_bdy + + + !## optical depth and opacity + + !one_div_yphot + !log_one_div_yphot + + !log_min_opacity + !min_opacity + + !log_tau_center + + !log_max_tau_conv + !max_tau_conv + !log_min_tau_conv + !min_tau_conv + + !tau_qhse_yrs + + !## other + + !Lsurf_m + !dlnR_dlnM + !h1_czb_mass ! location (in Msun units) of base of 1st convection zone above he core + !kh_mdot_limit + !log_cntr_dr_cm + !min_Pgas_div_P + !surf_c12_minus_o16 ! this is useful for seeing effects of dredge up on AGB + !surf_num_c12_div_num_o16 + + !phase_of_evolution ! Integer mapping to the type of evolution see star_data/public/star_data_def.inc for definitions + + !## MLT++ + !gradT_excess_alpha + !gradT_excess_min_beta + !gradT_excess_max_lambda + + !max_L_rad_div_Ledd + !max_L_rad_div_Ledd_div_phi_Joss + + + !## RTI + !rti_regions + + !## Ni & Co + !total_ni_co_56 + + + !## internal structure constants + + ! this is evaluated assuming a spherical star and does not account for rotation + !apsidal_constant_k2 + + +!---------------------------------------------------------------------------------------------- + +!# accretion + + !k_below_const_q + !q_below_const_q + !logxq_below_const_q + + !k_const_mass + !q_const_mass + !logxq_const_mass + + !k_below_just_added + !q_below_just_added + !logxq_below_just_added + + !k_for_test_CpT_absMdot_div_L + !q_for_test_CpT_absMdot_div_L + !logxq_for_test_CpT_absMdot_div_L + +!---------------------------------------------------------------------------------------------- + +!# Color output + + ! Outputs the bolometric correction (bc) for the star in filter band ``filter'' (case sensitive) + !bc filter + + ! Outputs the absolute magnitude for the star in filter band ``filter'' (case sensitive) + !abs_mag filter + + ! Adds all the bc's to the output + !add_bc + + ! Adds all the absolute magnitudes to the output + !add_abs_mag + + ! Outputs luminosity in filter band ``filter'' (erg s^-1) (case sensitive) + ! lum_band filter + + ! Adds all the filter band luminosities to the output (erg s^-1) + ! add_lum_band + + ! Outputs log luminosity in filter band ``filter'' (log erg s^-1) (case sensitive) + ! log_lum_band filter + + ! Adds all the filter band luminosities to the output (log erg s^-1) + ! add_log_lum_band + +!---------------------------------------------------------------------------------------------- + +!# RSP + + !rsp_DeltaMag ! absolute magnitude difference between minimum and maximum light (mag) + !rsp_DeltaR ! R_max - R_min difference in the max and min radius (Rsun) + !rsp_GREKM ! fractional growth of the kinetic energy per pulsation period ("nonlinear growth rate") - see equation 5 in MESA5 + !rsp_num_periods ! Count of the number of pulsation cycles completed + !rsp_period_in_days ! Running period, ie., period between two consecutive values of R_max (days) + !rsp_phase ! Running pulsation phase for a cycle + +!---------------------------------------------------------------------------------------------- +!# debugging + + !## retries + num_retries ! total during the run + + !## solver iterations + + num_iters ! same as num_solver_iterations + !num_solver_iterations ! iterations at this step + !total_num_solver_iterations ! total iterations during the run + !avg_num_solver_iters + + !rotation_solver_steps + + !diffusion_solver_steps + !diffusion_solver_iters + + !avg_setvars_per_step + !avg_skipped_setvars_per_step + !avg_solver_setvars_per_step + + !burn_solver_maxsteps + + !total_num_solver_calls_converged + !total_num_solver_calls_failed + !total_num_solver_calls_made + !total_num_solver_relax_calls_converged + !total_num_solver_relax_calls_failed + !total_num_solver_relax_calls_made + !total_num_solver_relax_iterations + + !total_step_attempts + !total_step_redos + !total_step_retries + !total_steps_finished + !total_steps_taken + + !TDC_num_cells + + !## Relaxation steps + !total_relax_step_attempts + !total_relax_step_redos + !total_relax_step_retries + !total_relax_steps_finished + !total_relax_steps_taken + + !## conservation during mesh adjust + !log_mesh_adjust_IE_conservation + !log_mesh_adjust_KE_conservation + !log_mesh_adjust_PE_conservation + + !## amr + !num_hydro_merges + !num_hydro_splits + + !## timing + !elapsed_time ! time since start of run (seconds) diff --git a/star/test_suite/accreted_material_j/inlist_accreted_material_j b/star/test_suite/accreted_material_j/inlist_accreted_material_j index ab0f3db53..b7074fdfc 100644 --- a/star/test_suite/accreted_material_j/inlist_accreted_material_j +++ b/star/test_suite/accreted_material_j/inlist_accreted_material_j @@ -1,35 +1,38 @@ &star_job - show_log_description_at_start = .false. + show_log_description_at_start = .false. - load_saved_model = .true. - load_model_filename = 'zams.mod' + load_saved_model = .true. + load_model_filename = 'zams.mod' - new_rotation_flag = .true. - change_rotation_flag = .true. - !relax_initial_omega_div_omega_crit = .true. - set_initial_omega_div_omega_crit = .true. - new_omega_div_omega_crit = 0.1 + new_rotation_flag = .true. + change_rotation_flag = .true. + !relax_initial_omega_div_omega_crit = .true. + set_initial_omega_div_omega_crit = .true. + new_omega_div_omega_crit = 0.1 - set_initial_dt = .true. - years_for_initial_dt = 1 + set_initial_dt = .true. + years_for_initial_dt = 1 - set_initial_model_number = .true. - initial_model_number = 0 + set_initial_model_number = .true. + initial_model_number = 0 - set_initial_age = .true. - initial_age = 0 + set_initial_age = .true. + initial_age = 0 - set_initial_cumulative_energy_error = .true. - new_cumulative_energy_error = 0d0 + set_initial_cumulative_energy_error = .true. + new_cumulative_energy_error = 0d0 - !change_D_omega_flag = .true. - !new_D_omega_flag = .true. + !change_D_omega_flag = .true. + !new_D_omega_flag = .true. - save_model_when_terminate = .true. - save_model_filename = 'final.mod' - !required_termination_code_string = 'xa_central_lower_limit' - required_termination_code_string = 'star_mass_max_limit' + save_model_when_terminate = .true. + save_model_filename = 'final.mod' + !required_termination_code_string = 'xa_central_lower_limit' + required_termination_code_string = 'star_mass_max_limit' + + pgstar_flag = .true. + save_pgstar_files_when_terminate = .true. / !end of star_job @@ -39,80 +42,80 @@ &kap - Zbase = 0.02 + Zbase = 0.02 / ! end of kap namelist &controls - scale_max_correction = 0.1d0 - ignore_species_in_max_correction = .true. - - energy_eqn_option = 'dedt' - use_gold2_tolerances = .true. - - num_trace_history_values = 2 - trace_history_value_name(1) = 'rel_E_err' - trace_history_value_name(2) = 'log_rel_run_E_err' - - ! limit max_model_number as part of test_suite - max_model_number = 1000 - - premix_omega = .true. - - am_nu_visc_factor = 0 - am_D_mix_factor = 0.0333333333333333d00 - D_DSI_factor = 1 - D_SH_factor = 1 - D_SSI_factor = 1 - D_ES_factor = 1 - D_GSF_factor = 1 - D_ST_factor = 1 - - !set_min_D_mix = .true. - !min_D_mix = 1d10 - - ! starting specifications - initial_mass = 20 ! in Msun units - initial_Z = 0.02 - - max_mdot_redo_cnt = 200 - min_years_dt_for_redo_mdot = 1d-5 - surf_omega_div_omega_crit_limit = 0.999d0 - surf_omega_div_omega_crit_tol = 0.055 - rotational_mdot_boost_fac = 1d10 - rotational_mdot_kh_fac = 1d10 - mdot_revise_factor = 1.1 - implicit_mdot_boost = 0.1 - - use_accreted_material_j = .true. - use_other_adjust_mdot = .true. - - ! ratio of accreted am to keplerian - x_ctrl(1) = 0.1d0 - ! log10 accretion rate in msun/secyer - x_ctrl(2) = -3d0 - - star_mass_max_limit = 25d0 - - !varcontrol_target = 5d-4 - delta_lg_star_mass_limit = 2d-4 - delta_lg_star_mass_hard_limit = 4d-4 - + scale_max_correction = 0.1d0 + ignore_species_in_max_correction = .true. + + energy_eqn_option = 'dedt' + use_gold2_tolerances = .true. + + num_trace_history_values = 2 + trace_history_value_name(1) = 'rel_E_err' + trace_history_value_name(2) = 'log_rel_run_E_err' + + ! limit max_model_number as part of test_suite + max_model_number = 1000 + + premix_omega = .true. + + am_nu_visc_factor = 0 + am_D_mix_factor = 0.0333333333333333d00 + D_DSI_factor = 1 + D_SH_factor = 1 + D_SSI_factor = 1 + D_ES_factor = 1 + D_GSF_factor = 1 + D_ST_factor = 1 + + !set_min_D_mix = .true. + !min_D_mix = 1d10 + + ! starting specifications + initial_mass = 20 ! in Msun units + initial_Z = 0.02 + + max_mdot_redo_cnt = 200 + min_years_dt_for_redo_mdot = 1d-5 + surf_omega_div_omega_crit_limit = 0.999d0 + surf_omega_div_omega_crit_tol = 0.055 + rotational_mdot_boost_fac = 1d10 + rotational_mdot_kh_fac = 1d10 + mdot_revise_factor = 1.1 + implicit_mdot_boost = 0.1 + + use_accreted_material_j = .true. + use_other_adjust_mdot = .true. + + ! ratio of accreted am to keplerian + x_ctrl(1) = 0.1d0 + ! log10 accretion rate in msun/secyer + x_ctrl(2) = -3d0 + + star_mass_max_limit = 25d0 + + !varcontrol_target = 5d-4 + delta_lg_star_mass_limit = 2d-4 + delta_lg_star_mass_hard_limit = 4d-4 + ! output to files and terminal - photo_interval = 50 - profile_interval = 100 - max_num_profile_models = 3000 - history_interval = 10 - terminal_interval = 10 - - write_header_frequency = 10 - - !report_solver_progress = .true. + photo_interval = 50 + profile_interval = 100 + max_num_profile_models = 3000 + history_interval = 10 + terminal_interval = 10 + + write_header_frequency = 10 + + !report_solver_progress = .true. / &pgstar - + / ! end of pgstar namelist diff --git a/star/test_suite/accreted_material_j/inlist_accreted_material_j_header b/star/test_suite/accreted_material_j/inlist_accreted_material_j_header index 54bd3ff57..dd7b8bc6f 100644 --- a/star/test_suite/accreted_material_j/inlist_accreted_material_j_header +++ b/star/test_suite/accreted_material_j/inlist_accreted_material_j_header @@ -2,24 +2,24 @@ &star_job - read_extra_star_job_inlist(2) = .true. - extra_star_job_inlist_name(2) = 'inlist_accreted_material_j' + read_extra_star_job_inlist(2) = .true. + extra_star_job_inlist_name(2) = 'inlist_accreted_material_j' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_accreted_material_j' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_accreted_material_j' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_accreted_material_j' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_accreted_material_j' / ! end of kap namelist @@ -27,15 +27,15 @@ &controls - read_extra_controls_inlist(1) = .true. - extra_controls_inlist_name(1)= 'inlist_accreted_material_j' + read_extra_controls_inlist(1) = .true. + extra_controls_inlist_name(1)= 'inlist_accreted_material_j' / ! end of controls namelist &pgstar - read_extra_pgstar_inlist(1) = .true. - extra_pgstar_inlist_name(1)= 'inlist_accreted_material_j' + read_extra_pgstar_inlist(1) = .true. + extra_pgstar_inlist_name(1)= 'inlist_pgstar' / ! end of pgstar namelist diff --git a/star/test_suite/accreted_material_j/inlist_pgstar b/star/test_suite/accreted_material_j/inlist_pgstar new file mode 100644 index 000000000..9e1b2413c --- /dev/null +++ b/star/test_suite/accreted_material_j/inlist_pgstar @@ -0,0 +1,35 @@ +&pgstar + + ! device + file_white_on_black_flag = .true. + file_device = 'vcps' ! postscript + file_extension = 'ps' + !file_device = 'png' ! png + !file_extension = 'png' + + pgstar_interval = 10 + + History_Track1_win_flag = .true. + History_Track1_win_width = 12 + History_Track1_title = 'accreted_material_j' + History_Track1_xname = 'star_mass' + History_Track1_yname = 'log_total_angular_momentum' + History_Track1_yaxis_label = 'log J' + History_Track1_xaxis_label = 'M\d\(2281)' + History_Track1_reverse_xaxis = .false. + History_Track1_reverse_yaxis = .false. + + History_Track1_xmin = 20.0 + History_Track1_xmax = 25.0 + History_Track1_ymin = 51.9 + History_Track1_ymax = 52.7 + +! file output + History_Track1_file_flag = .true. + History_Track1_file_dir = 'pgstar_out' + History_Track1_file_prefix = 'track1_' + History_Track1_file_interval = 10 + History_Track1_file_width =12 + History_Track1_file_aspect_ratio = -1 + +/ ! end of pgstar namelist diff --git a/star/test_suite/accreted_material_j/inlist_zams b/star/test_suite/accreted_material_j/inlist_zams index 24c5b390d..95fd18487 100644 --- a/star/test_suite/accreted_material_j/inlist_zams +++ b/star/test_suite/accreted_material_j/inlist_zams @@ -2,16 +2,16 @@ &star_job - show_log_description_at_start = .false. + show_log_description_at_start = .false. - create_pre_main_sequence_model = .true. + create_pre_main_sequence_model = .true. - save_model_when_terminate = .true. - save_model_filename = 'zams.mod' - required_termination_code_string = 'Lnuc_div_L_zams_limit' + save_model_when_terminate = .true. + save_model_filename = 'zams.mod' + required_termination_code_string = 'Lnuc_div_L_zams_limit' - !pgstar_flag = .true. + !pgstar_flag = .true. / ! end of star_job namelist @@ -21,31 +21,31 @@ &kap - kap_file_prefix = 'gs98' - Zbase = 0.02 + kap_file_prefix = 'gs98' + Zbase = 0.02 / ! end of kap namelist &controls - initial_mass = 20 ! in Msun units - initial_Z = 0.02 - - stop_near_zams = .true. - Lnuc_div_L_zams_limit = 0.9d0 - - ! limit max_model_number as part of test_suite - max_model_number = 10000 - use_gold2_tolerances = .true. - - num_trace_history_values = 2 - trace_history_value_name(1) = 'rel_E_err' - trace_history_value_name(2) = 'log_rel_run_E_err' - - photo_interval = 100 - profile_interval = 100 - history_interval = 5 - terminal_interval = 50 - + initial_mass = 20 ! in Msun units + initial_Z = 0.02 + + stop_near_zams = .true. + Lnuc_div_L_zams_limit = 0.9d0 + + ! limit max_model_number as part of test_suite + max_model_number = 10000 + use_gold2_tolerances = .true. + + num_trace_history_values = 2 + trace_history_value_name(1) = 'rel_E_err' + trace_history_value_name(2) = 'log_rel_run_E_err' + + photo_interval = 100 + profile_interval = 100 + history_interval = 5 + terminal_interval = 50 + / ! end of controls namelist diff --git a/star/test_suite/accreted_material_j/inlist_zams_header b/star/test_suite/accreted_material_j/inlist_zams_header index 83e825c58..3de76b840 100644 --- a/star/test_suite/accreted_material_j/inlist_zams_header +++ b/star/test_suite/accreted_material_j/inlist_zams_header @@ -2,24 +2,24 @@ &star_job - read_extra_star_job_inlist(2) = .true. - extra_star_job_inlist_name(2) = 'inlist_zams' + read_extra_star_job_inlist(2) = .true. + extra_star_job_inlist_name(2) = 'inlist_zams' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_zams' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_zams' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_zams' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_zams' / ! end of kap namelist @@ -27,15 +27,15 @@ &controls - read_extra_controls_inlist(1) = .true. - extra_controls_inlist_name(1)= 'inlist_zams' + read_extra_controls_inlist(1) = .true. + extra_controls_inlist_name(1)= 'inlist_zams' / ! end of controls namelist &pgstar - read_extra_pgstar_inlist(1) = .true. - extra_pgstar_inlist_name(1)= 'inlist_zams' + read_extra_pgstar_inlist(1) = .true. + extra_pgstar_inlist_name(1)= 'inlist_zams' / ! end of pgstar namelist diff --git a/star/test_suite/adjust_net/README.rst b/star/test_suite/adjust_net/README.rst index b600a07bc..8a6ea9490 100644 --- a/star/test_suite/adjust_net/README.rst +++ b/star/test_suite/adjust_net/README.rst @@ -21,13 +21,13 @@ This test case has two parts. Click to see a larger view of a plot. * Part 2 (``inlist_adjust_net_header``) continues the evolution, activates the adaptive nuclear reaction network, and terminates at about 2 million years with 62 isotopes in the reaction network: .. image:: ../../../star/test_suite/adjust_net/docs/track1_000234.svg - :scale: 100% + :width: 100% .. image:: ../../../star/test_suite/adjust_net/docs/Network_000205.svg - :scale: 100% + :width: 100% .. image:: ../../../star/test_suite/adjust_net/docs/Network_000234.svg - :scale: 100% + :width: 100% pgstar commands used for the plots above: diff --git a/star/test_suite/c13_pocket/README.rst b/star/test_suite/c13_pocket/README.rst index 7c2a9e14b..2049edc60 100644 --- a/star/test_suite/c13_pocket/README.rst +++ b/star/test_suite/c13_pocket/README.rst @@ -37,7 +37,7 @@ that ensure the thermal pulse cycle and the pocket are well resolved. This also adds the large exponential overshooting at the base of the convective envelope that mixes the protons into the intershell. -At the end of this test, MESA has succesfully evolved through a +At the end of this test, MESA has successfully evolved through a thermal pulse and the :math:`^{13}{\rm C}` pocket is apparent. .. image:: ../../../star/test_suite/c13_pocket/docs/grid1001915.png diff --git a/star/test_suite/cburn_inward/README.rst b/star/test_suite/cburn_inward/README.rst index 698f471c8..6c81944ed 100644 --- a/star/test_suite/cburn_inward/README.rst +++ b/star/test_suite/cburn_inward/README.rst @@ -9,7 +9,7 @@ This test suite example checks the inward propagation of a carbon burning front Physical checks =============== -This test case tracks the mass co-orindate when carbon ignites, the density at that point, and +This test case tracks the mass coordinate when carbon ignites, the density at that point, and the C/O core mass at that instance. This mass should be about half the C/O core mass (0.5 |Msun|). If its not then the initial model needs updating. @@ -18,7 +18,7 @@ during core helium burning. If the ignition mass is higher then increase the ini increase overshoot during core helium burning. The ignition density should be about |logRho| ~ 6.2 (`Farmer et al (2015) `__). -If its signficantly different (0.1 dex) then we have a microphysics problem (or more likely an issue tracking the flame location). +If its significantly different (0.1 dex) then we have a microphysics problem (or more likely an issue tracking the flame location). The C/O core mass should be between 1.0 and 1.4 |Msun|, if different then tune the initial mass/overshot, otherwise we may not get a carbon flame. @@ -34,10 +34,10 @@ This test case has two parts. Click to see a larger view of a plot. * Part 2 (``cburn_inward``) continues the evoluton where an off-center carbon burning front ignites, develops a convective region behind the burning front, and propagates towards the center through oxygen-neon-magnesium rich material. .. image:: ../../../star/test_suite/cburn_inward/docs/grid_000170.svg - :scale: 100% + :width: 100% .. image:: ../../../star/test_suite/cburn_inward/docs/kipp_000170.svg - :scale: 100% + :width: 100% pgstar commands used for the plots above: diff --git a/star/test_suite/ccsn_IIp/README.rst b/star/test_suite/ccsn_IIp/README.rst index 031433755..165b8a9c8 100644 --- a/star/test_suite/ccsn_IIp/README.rst +++ b/star/test_suite/ccsn_IIp/README.rst @@ -4,50 +4,50 @@ ccsn_IIp ******** -This test suite example builds a Type IIp supernova model, including Rayleigh-Taylor Instability mixing, for subsquent use in STELLA. +This test suite example builds a Type IIp supernova model, including Rayleigh-Taylor Instability mixing, for subsequent use in STELLA. This test case has 8 parts and ``src/run_star_extras.f90`` is important. Click to see a larger view of a plot. * Part 1 (``inlist_infall``) loads ``pre_ccsn.mod`` from ``make_pre_ccsn_IIp``. The evolution of the 11.7 MSun model with with cell center Riemann velocities (u) and a total energy of -9.4e50 erg continues util R_center drops below 400 km: .. image:: ../../../star/test_suite/ccsn_IIp/docs/infall.svg - :scale: 100% + :width: 100% * Part 2 (``inlist_end_infall``) continues the evolution for an additional 1e-5 sec using HLLC hydrodynamics: .. image:: ../../../star/test_suite/ccsn_IIp/docs/end_infall.svg - :scale: 100% + :width: 100% * Part 3 (``inlist_edep``) injects thermal energy into the inner 0.2 Msun until the model reaches a total energy of 8e50 erg: .. image:: ../../../star/test_suite/ccsn_IIp/docs/edep.svg - :scale: 100% + :width: 100% -* Part 4 (``inlist_shock_part1``) contnues the evolution until the outward bound shock reaches 1.83 Msun: +* Part 4 (``inlist_shock_part1``) continues the evolution until the outward bound shock reaches 1.83 Msun: .. image:: ../../../star/test_suite/ccsn_IIp/docs/part1.svg - :scale: 100% + :width: 100% -* Part 5 (``inlist_shock_part2``) contnues the evolution until the outward bound shock reaches 2.68 Msun: +* Part 5 (``inlist_shock_part2``) continues the evolution until the outward bound shock reaches 2.68 Msun: .. image:: ../../../star/test_suite/ccsn_IIp/docs/part2.svg - :scale: 100% + :width: 100% -* Part 6 (``inlist_shock_part3``) contnues the evolution until the outward bound shock reaches 3.88 Msun: +* Part 6 (``inlist_shock_part3``) continues the evolution until the outward bound shock reaches 3.88 Msun: .. image:: ../../../star/test_suite/ccsn_IIp/docs/part3.svg - :scale: 100% + :width: 100% -* Part 7 (``inlist_shock_part4``) contnues the evolution until the outward bound shock reaches 11.64 Msun: +* Part 7 (``inlist_shock_part4``) continues the evolution until the outward bound shock reaches 11.64 Msun: .. image:: ../../../star/test_suite/ccsn_IIp/docs/part4.svg - :scale: 100% + :width: 100% * Part 8 (``inlist_shock_part5``) continues the approach to shock breakout, terminating when the shock reaches 11.70 Msun, and creating the ``mesa.abn`` and ``mesa.abn`` files for subsequent use with STELLA: .. image:: ../../../star/test_suite/ccsn_IIp/docs/part5.svg - :scale: 100% + :width: 100% diff --git a/star/test_suite/conductive_flame/README.rst b/star/test_suite/conductive_flame/README.rst index a029494ca..923b7d67d 100644 --- a/star/test_suite/conductive_flame/README.rst +++ b/star/test_suite/conductive_flame/README.rst @@ -24,8 +24,9 @@ center of the model. The properties of this initial model can be controlled from the inlist. .. literalinclude:: ../../../star/test_suite/conductive_flame/inlist_conductive_flame + :language: fortran :start-after: ! use our own routine to build the model - :lines: 1-11 + :end-at: x_ctrl(8) The inner boundary is at r = 0. The outer boundary has a fixed temperature and a fixed pressure equal to the initial pressure of the @@ -47,7 +48,14 @@ routine ``flame_properties`` in the ``run_star_extras.f90``. -.. image:: ../../../star/test_suite/conductive_flame/docs/grid1000427.png +.. image:: ../../../star/test_suite/conductive_flame/docs/grid1000597.png + :width: 100% + +pgstar commands used for the plots above: + +.. literalinclude:: ../../../star/test_suite/conductive_flame/inlist_pgstar + :language: console + .. |Timmes1992| replace:: `Timmes & Woosley (1992) `__ @@ -58,3 +66,4 @@ routine ``flame_properties`` in the ``run_star_extras.f90``. Last-Updated: 2021-06-21 (mesa b2364463) by Josiah Schwab, + documentation 2024-01-22 EbF +Last-Run: 06Aug2024 (MESA 1adbf1aa) by pmocz on C916PXT6XW in 327 seconds using 8 threads. diff --git a/star/test_suite/conductive_flame/docs/grid1000597.png b/star/test_suite/conductive_flame/docs/grid1000597.png new file mode 100644 index 000000000..358fb2a2e Binary files /dev/null and b/star/test_suite/conductive_flame/docs/grid1000597.png differ diff --git a/star/test_suite/conductive_flame/inlist_conductive_flame b/star/test_suite/conductive_flame/inlist_conductive_flame index a9dfafdf4..550b42bcc 100644 --- a/star/test_suite/conductive_flame/inlist_conductive_flame +++ b/star/test_suite/conductive_flame/inlist_conductive_flame @@ -1,123 +1,124 @@ &star_job - show_log_description_at_start = .false. + show_log_description_at_start = .false. + ! build our own model + create_initial_model = .true. - ! build our own model - create_initial_model = .true. + save_model_when_terminate = .true. + save_model_filename = 'final.mod' + required_termination_code_string = 'flame reached halfway point' - save_model_when_terminate = .true. - save_model_filename = 'final.mod' - required_termination_code_string = 'flame reached halfway point' + ! pick the net + change_net = .true. + !new_net_name = 'mesa_204.net' + new_net_name = 'approx21.net' - ! pick the net - change_net = .true. - !new_net_name = 'mesa_204.net' - new_net_name = 'approx21.net' + ! need extremely small initial timestep + set_initial_dt = .true. + seconds_for_initial_dt = 1e-15 + initial_model_relax_num_steps = 0 - ! need extremely small initial timestep - set_initial_dt = .true. - seconds_for_initial_dt = 1e-15 - initial_model_relax_num_steps = 0 - - ! display on-screen plots - pgstar_flag = .true. - save_pgstar_files_when_terminate = .true. + ! display on-screen plots + pgstar_flag = .true. + save_pgstar_files_when_terminate = .true. / !end of star_job namelist &eos - ! use HELM EOS - use_Skye = .false. - use_PC = .false. + ! use HELM EOS + use_Skye = .false. + use_PC = .false. / !end of eos namelist &kap - ! specify base metallicity for Type2 opacities - ! unimportant since radiative opacities are irrelevant - Zbase = 0.02 + ! specify base metallicity for Type2 opacities + ! unimportant since radiative opacities are irrelevant + Zbase = 0.02 / ! end of kap namelist + &controls - ! test targets; 10% tolerance - x_ctrl(9) = 2.39e7 ! flame speed [cm/s] - x_ctrl(10) = 2.391e-5 ! flame width [cm] + ! test targets; 10% tolerance + x_ctrl(9) = 2.39e7 ! flame speed [cm/s] + x_ctrl(10) = 2.391e-5 ! flame width [cm] + + warn_when_large_virial_thm_rel_err = 1d99 ! doesn't apply - warn_when_large_virial_thm_rel_err = 1d99 ! doesn't apply + num_trace_history_values = 2 + trace_history_value_name(1) = 'rel_E_err' + trace_history_value_name(2) = 'log_rel_run_E_err' - num_trace_history_values = 2 - trace_history_value_name(1) = 'rel_E_err' - trace_history_value_name(2) = 'log_rel_run_E_err' + ! limit max_model_number as part of test_suite + max_model_number = 3000 ! 1800 - ! limit max_model_number as part of test_suite - max_model_number = 3000 ! 1800 + ! use our own routine to build the model + use_other_build_initial_model = .true. + x_integer_ctrl(1) = 300 ! number of points + x_ctrl(1) = 10 ! mass (in g) + x_ctrl(2) = 1d10 ! initial density (cgs) + x_ctrl(3) = 2d8 ! initial temperature (cgs) - ! use our own routine to build the model - use_other_build_initial_model = .true. - x_integer_ctrl(1) = 300 ! number of points - x_ctrl(1) = 10 ! mass (in g) - x_ctrl(2) = 1d10 ! initial density (cgs) - x_ctrl(3) = 2d8 ! initial temperature (cgs) + x_ctrl(4) = 0.0001 ! size (in q) of region to heat + x_ctrl(5) = 5d9 ! temperature of that region - x_ctrl(4) = 0.0001 ! size (in q) of region to heat - x_ctrl(5) = 5d9 ! temperature of that region + x_ctrl(6) = 0.50 ! mass fraction c12 + x_ctrl(7) = 0.50 ! mass fraction o16 + x_ctrl(8) = 0.00 ! mass fraction ne20 - x_ctrl(6) = 0.50 ! mass fraction c12 - x_ctrl(7) = 0.50 ! mass fraction o16 - x_ctrl(8) = 0.00 ! mass fraction ne20 + ! set up constant pressure/temperature boundary conditions + use_other_surface_PT = .true. - ! set up constant pressure/temperature boundary conditions - use_other_surface_PT = .true. + ! there's no surface here; ignore change in lgL_surf and lgTeff + delta_lgL_limit_L_min = 1d99 + delta_lgTeff_limit = 1d99 - ! there's no surface here; ignore change in lgL_surf and lgTeff - delta_lgL_limit_L_min = 1d99 - delta_lgTeff_limit = 1d99 - - ! don't let convection operate - mlt_option = 'none' + ! don't let convection operate + mlt_option = 'none' - ! meshing/timestep controls - varcontrol_target = 1d-3 - delta_lgT_limit = 0.1d0 - delta_lgT_limit_min_lgT = 8d0 - T_function1_weight = 50 - limit_for_rel_error_in_energy_conservation = 1d-4 - hard_limit_for_rel_error_in_energy_conservation = 1d-3 + ! meshing/timestep controls + varcontrol_target = 1d-3 + delta_lgT_limit = 0.1d0 + delta_lgT_limit_min_lgT = 8d0 + T_function1_weight = 50 + limit_for_rel_error_in_energy_conservation = 1d-4 + hard_limit_for_rel_error_in_energy_conservation = 1d-3 - use_gold2_tolerances = .true. - - ! allow for minuscule timesteps - min_timestep_limit = 1d-20 + use_gold2_tolerances = .true. - ! use the same meshing at high temperature - mesh_delta_coeff = 1.0 - logT_max_for_standard_mesh_delta_coeff = 99d0 - logT_min_for_highT_mesh_delta_coeff = 99d0 + ! allow for minuscule timesteps + min_timestep_limit = 1d-20 - ! we know rates are truncated above 1e10 K, so turn off warnings - warn_rates_for_high_temp = .false. - - ! cannot include L corrections - include_L_in_correction_limits = .false. + ! use the same meshing at high temperature + mesh_delta_coeff = 1.0 + logT_max_for_standard_mesh_delta_coeff = 99d0 + logT_min_for_highT_mesh_delta_coeff = 99d0 - terminal_show_age_units = 'seconds' + ! we know rates are truncated above 1e10 K, so turn off warnings + warn_rates_for_high_temp = .false. - photo_interval = 50 - profile_interval = 100 - history_interval = 10 - terminal_interval = 10 - write_header_frequency = 10 + ! cannot include L corrections + include_L_in_correction_limits = .false. + + terminal_show_age_units = 'seconds' + + photo_interval = 50 + profile_interval = 100 + history_interval = 10 + terminal_interval = 10 + write_header_frequency = 10 / ! end of controls namelist + &pgstar / ! end of pgstar namelist diff --git a/star/test_suite/conductive_flame/inlist_conductive_flame_header b/star/test_suite/conductive_flame/inlist_conductive_flame_header index a42f044dc..e0366c399 100644 --- a/star/test_suite/conductive_flame/inlist_conductive_flame_header +++ b/star/test_suite/conductive_flame/inlist_conductive_flame_header @@ -1,41 +1,39 @@ &star_job - - read_extra_star_job_inlist(2) = .true. - extra_star_job_inlist_name(2) = 'inlist_conductive_flame' + read_extra_star_job_inlist(2) = .true. + extra_star_job_inlist_name(2) = 'inlist_conductive_flame' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_conductive_flame' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_conductive_flame' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_conductive_flame' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_conductive_flame' / ! end of kap namelist - &controls - read_extra_controls_inlist(1) = .true. - extra_controls_inlist_name(1)= 'inlist_conductive_flame' + read_extra_controls_inlist(1) = .true. + extra_controls_inlist_name(1)= 'inlist_conductive_flame' / ! end of controls namelist &pgstar - read_extra_pgstar_inlist(1) = .true. - extra_pgstar_inlist_name(1)= 'inlist_pgstar' + read_extra_pgstar_inlist(1) = .true. + extra_pgstar_inlist_name(1)= 'inlist_pgstar' / ! end of pgstar namelist diff --git a/star/test_suite/conductive_flame/inlist_pgstar b/star/test_suite/conductive_flame/inlist_pgstar index adf6a72c3..c390b9375 100644 --- a/star/test_suite/conductive_flame/inlist_pgstar +++ b/star/test_suite/conductive_flame/inlist_pgstar @@ -1,225 +1,232 @@ &pgstar - pgstar_interval = 1 - pause = .false. - - Grid1_win_flag = .false. - Grid1_title = 'TW92 Flame' - Grid1_win_width = 8 - Grid1_win_aspect_ratio = 0.75 ! aspect_ratio = height/width - - Grid1_xleft = 0.12 ! fraction of full window width for margin on left - Grid1_xright = 0.95 ! fraction of full window width for margin on right - Grid1_ybot = 0.08 ! fraction of full window width for margin on bottom - Grid1_ytop = 0.92 ! fraction of full window width for margin on top - - Grid1_plot_name(:) = '' - Grid1_plot_row(:) = 1 ! number from 1 at top - Grid1_plot_rowspan(:) = 1 ! plot spans this number of rows - Grid1_plot_col(:) = 1 ! number from 1 at left - Grid1_plot_colspan(:) = 1 ! plot spans this number of columns - Grid1_plot_pad_left(:) = 0.0 ! fraction of full window width for padding on left - Grid1_plot_pad_right(:) = 0.0 ! fraction of full window width for padding on right - Grid1_plot_pad_top(:) = 0.0 ! fraction of full window height for padding at top - Grid1_plot_pad_bot(:) = 0.0 ! fraction of full window height for padding at bottom - Grid1_txt_scale_factor(:) = 0.7 ! multiply txt_scale for subplot by this - - ! set default - Grid1_num_cols = 4 ! divide plotting region into this many equal width cols - Grid1_num_rows = 3 ! divide plotting region into this many equal height rows - Grid1_num_plots = 3 ! <= 10 - - Grid1_plot_name(:) = '' - Grid1_plot_row(:) = 1 ! number from 1 at top - Grid1_plot_rowspan(:) = 1 ! plot spans this number of rows - Grid1_plot_col(:) = 1 ! number from 1 at left - Grid1_plot_colspan(:) = 1 ! plot spans this number of columns - Grid1_plot_pad_left(:) = 0.03 ! fraction of full window width for padding on left - Grid1_plot_pad_right(:) = 0.03 ! fraction of full window width for padding on right - Grid1_plot_pad_top(:) = 0.03 ! fraction of full window height for padding at top - Grid1_plot_pad_bot(:) = 0.03 ! fraction of full window height for padding at bottom - Grid1_txt_scale_factor(:) = 0.7 ! multiply txt_scale for subplot by this - - - Grid1_plot_name(1) = 'Abundance' - Grid1_plot_row(1) = 1 ! number from 1 at top - Grid1_plot_rowspan(1) = 2 ! plot spans this number of rows - Grid1_plot_col(1) = 1 ! number from 1 at left - Grid1_plot_colspan(1) = 2 ! plot spans this number of columns - Grid1_plot_pad_left(1) = -0.05 ! fraction of full window width for padding on left - Grid1_plot_pad_right(1) = 0.05 ! fraction of full window width for padding on right - Grid1_plot_pad_top(1) = 0.0 ! fraction of full window height for padding at top - Grid1_plot_pad_bot(1) = 0.05 ! fraction of full window height for padding at bottom - Grid1_txt_scale_factor(1) = 0.6 ! multiply txt_scale for subplot by this - - ! Grid1_plot_name(2) = 'Abundance' - ! Grid1_plot_row(2) = 2 ! number from 1 at top - ! Grid1_plot_rowspan(2) = 1 ! plot spans this number of rows - ! Grid1_plot_col(2) = 1 ! number from 1 at left - ! Grid1_plot_colspan(2) = 2 ! plot spans this number of columns - ! Grid1_plot_pad_left(2) = -0.05 ! fraction of full window width for padding on left - ! Grid1_plot_pad_right(2) = 0.05 ! fraction of full window width for padding on right - ! Grid1_plot_pad_top(2) = 0.025 ! fraction of full window height for padding at top - ! Grid1_plot_pad_bot(2) = 0.025 ! fraction of full window height for padding at bottom - ! Grid1_txt_scale_factor(2) = 0.65 ! multiply txt_scale for subplot by this - - Grid1_plot_name(2) = 'Profile_Panels1' - Grid1_plot_row(2) = 3 ! number from 1 at top - Grid1_plot_rowspan(2) = 1 ! plot spans this number of rows - Grid1_plot_col(2) = 1 ! number from 1 at left - Grid1_plot_colspan(2) = 2 ! plot spans this number of columns - Grid1_plot_pad_left(2) = -0.05 ! fraction of full window width for padding on left - Grid1_plot_pad_right(2) = 0.05 ! fraction of full window width for padding on right - Grid1_plot_pad_top(2) = 0.05 ! fraction of full window height for padding at top - Grid1_plot_pad_bot(2) = 0.0 ! fraction of full window height for padding at bottom - Grid1_txt_scale_factor(2) = 0.65 ! multiply txt_scale for subplot by this - - Grid1_plot_name(3) = 'History_Panels1' - Grid1_plot_row(3) = 1 ! number from 1 at top - Grid1_plot_rowspan(3) = 3 ! plot spans this number of rows - Grid1_plot_col(3) = 3 ! number from 1 at left - Grid1_plot_colspan(3) = 2 ! plot spans this number of columns - Grid1_plot_pad_left(3) = 0.12 ! fraction of full window width for padding on left - Grid1_plot_pad_right(3) = 0.03 ! fraction of full window width for padding on right - Grid1_plot_pad_top(3) = 0.0 ! fraction of full window height for padding at top - Grid1_plot_pad_bot(3) = 0.0 ! fraction of full window height for padding at bottom - Grid1_txt_scale_factor(3) = 0.65 ! multiply txt_scale for subplot by this - - - ! file output - Grid1_file_flag = .true. - Grid1_file_dir = 'png' - Grid1_file_prefix = 'grid1' - Grid1_file_interval = 10000 ! output when mod(model_number,Grid1_file_interval)==0 - Grid1_file_width = 16 ! negative means use same value as for window - Grid1_file_aspect_ratio = -1 ! negative means use same value as for window - - - Abundance_win_flag = .false. - Abundance_xaxis_name = 'radius_cm' - Abundance_num_isos_to_show = -1 - Abundance_title = '' - - num_abundance_line_labels = 5 - Abundance_line_txt_scale_factor = 0.8 ! relative to other text - - Abundance_legend_max_cnt = -1 - Abundance_legend_txt_scale_factor = 0.8 ! relative to other text - - !### Profile_Panels1 - - Profile_Panels1_win_flag = .false. - - Profile_Panels1_win_width = 6 - Profile_Panels1_win_aspect_ratio = 0.75 ! aspect_ratio = height/width - - Profile_Panels1_xleft = 0.15 - Profile_Panels1_xright = 0.85 - Profile_Panels1_ybot = 0.15 - Profile_Panels1_ytop = 0.85 - Profile_Panels1_txt_scale = 1.0 - Profile_Panels1_title = '' - - Profile_Panels1_xaxis_name = 'radius_cm' - Profile_Panels1_xaxis_reversed = .false. - Profile_Panels1_xmin = 0 ! only used if /= -101d0 - Profile_Panels1_xmax = -101d0 ! only used if /= -101d0 - Profile_Panels1_xmargin = 0d0 - Profile_Panels1_show_mix_regions_on_xaxis = .false. - - Profile_Panels1_yaxis_name(:) = '' - Profile_Panels1_yaxis_reversed(:) = .false. - Profile_Panels1_yaxis_log(:) = .false. ! show log10 of abs value - Profile_Panels1_ymin(:) = -101d0 ! only used if /= -101d0 - Profile_Panels1_ymax(:) = -101d0 ! only used if /= -101d0 - Profile_Panels1_ymargin(:) = 0.1 - Profile_Panels1_dymin(:) = -1 - - Profile_Panels1_other_yaxis_name(:) = '' - Profile_Panels1_other_yaxis_reversed(:) = .false. - Profile_Panels1_other_yaxis_log(:) = .false. ! show log10 of abs value - Profile_Panels1_other_ymin(:) = -101d0 ! only used if /= -101d0 - Profile_Panels1_other_ymax(:) = -101d0 ! only used if /= -101d0 - Profile_Panels1_other_ymargin(:) = 0.1 - Profile_Panels1_other_dymin(:) = -1 - - Profile_Panels1_show_grid = .true. - - ! setup default plot - Profile_Panels1_num_panels = 1 - Profile_Panels1_yaxis_name(1) = 'logT' - Profile_Panels1_other_yaxis_name(1) = 'logRho' - - ! file output - Profile_Panels1_file_flag = .false. - Profile_Panels1_file_dir = 'png' - Profile_Panels1_file_prefix = 'profile_panels1_' - Profile_Panels1_file_interval = 5 ! output when mod(model_number,Profile_Panels1_file_interval)==0 - Profile_Panels1_file_width = -1 ! (inches) negative means use same value as for window - Profile_Panels1_file_aspect_ratio = -1 ! negative means use same value as for window - - - History_Panels1_win_flag = .false. - - History_Panels1_win_width = 6 - History_Panels1_win_aspect_ratio = 0.75 ! aspect_ratio = height/width - - History_Panels1_xleft = 0.15 - History_Panels1_xright = 0.85 - History_Panels1_ybot = 0.15 - History_Panels1_ytop = 0.85 - History_Panels1_txt_scale = 1.0 - History_Panels1_title = '' - - History_Panels1_xaxis_name = 'star_age' - History_Panels1_xmin = -101d0 - History_Panels1_xmax = -101d0 - History_Panels1_max_width = 100 ! only used if > 0. causes xmin to move with xmax. - History_Panels1_dxmin = -1 - History_Panels1_xaxis_reversed = .false. - History_Panels1_xaxis_log = .false. ! show log10 of abs value - - History_Panels1_yaxis_name(:) = '' - History_Panels1_yaxis_reversed(:) = .false. - History_Panels1_yaxis_log(:) = .false. ! show log10 of abs value - History_Panels1_ymin(:) = -101d0 ! only used if /= -101d0 - History_Panels1_ymax(:) = -101d0 ! only used if /= -101d0 - History_Panels1_ymargin(:) = 0.1 - History_Panels1_dymin(:) = -1 - - History_Panels1_other_yaxis_name(:) = '' - History_Panels1_other_yaxis_reversed(:) = .false. - History_Panels1_other_yaxis_log(:) = .false. ! show log10 of abs value - History_Panels1_other_ymin(:) = -101d0 ! only used if /= -101d0 - History_Panels1_other_ymax(:) = -101d0 ! only used if /= -101d0 - History_Panels1_other_ymargin(:) = 0.1 - History_Panels1_other_dymin(:) = -1 - - ! setup default - History_Panels1_num_panels = 2 - - History_Panels1_yaxis_name(1) = 'r_flame' - History_Panels1_yaxis_reversed(1) = .false. - History_Panels1_ymin(1) = 0 ! only used if /= -101d0 - History_Panels1_ymax(1) = 5e-4 ! only used if /= -101d0 - History_Panels1_dymin(1) = -1 - - History_Panels1_other_yaxis_name(1) = '' - History_Panels1_other_yaxis_reversed(1) = .false. - History_Panels1_other_ymin(1) = -101d0 ! only used if /= -101d0 - History_Panels1_other_ymax(1) = -101d0 ! only used if /= -101d0 - History_Panels1_other_dymin(1) = -1 - - History_Panels1_yaxis_name(2) = 'l_flame' - History_Panels1_yaxis_reversed(2) = .false. - History_Panels1_ymin(2) = -101d0 ! only used if /= -101d0 - History_Panels1_ymax(2) = -101d0 ! only used if /= -101d0 - History_Panels1_dymin(2) = -1 - - History_Panels1_other_yaxis_name(2) = '' - History_Panels1_other_yaxis_reversed(2) = .false. - History_Panels1_other_ymin(2) = -101d0 ! only used if /= -101d0 - History_Panels1_other_ymax(2) = -101d0 ! only used if /= -101d0 - History_Panels1_other_dymin(2) = -1 + ! device + file_white_on_black_flag = .true. + !file_device = 'vcps' ! postscript + !file_extension = 'ps' + file_device = 'png' ! png + file_extension = 'png' + + pgstar_interval = 1 + pause = .false. + + Grid1_win_flag = .false. + Grid1_title = 'TW92 Flame' + Grid1_win_width = 8 + Grid1_win_aspect_ratio = 0.75 ! aspect_ratio = height/width + + Grid1_xleft = 0.12 ! fraction of full window width for margin on left + Grid1_xright = 0.95 ! fraction of full window width for margin on right + Grid1_ybot = 0.08 ! fraction of full window width for margin on bottom + Grid1_ytop = 0.92 ! fraction of full window width for margin on top + + Grid1_plot_name(:) = '' + Grid1_plot_row(:) = 1 ! number from 1 at top + Grid1_plot_rowspan(:) = 1 ! plot spans this number of rows + Grid1_plot_col(:) = 1 ! number from 1 at left + Grid1_plot_colspan(:) = 1 ! plot spans this number of columns + Grid1_plot_pad_left(:) = 0.0 ! fraction of full window width for padding on left + Grid1_plot_pad_right(:) = 0.0 ! fraction of full window width for padding on right + Grid1_plot_pad_top(:) = 0.0 ! fraction of full window height for padding at top + Grid1_plot_pad_bot(:) = 0.0 ! fraction of full window height for padding at bottom + Grid1_txt_scale_factor(:) = 0.7 ! multiply txt_scale for subplot by this + + ! set default + Grid1_num_cols = 4 ! divide plotting region into this many equal width cols + Grid1_num_rows = 3 ! divide plotting region into this many equal height rows + Grid1_num_plots = 3 ! <= 10 + + Grid1_plot_name(:) = '' + Grid1_plot_row(:) = 1 ! number from 1 at top + Grid1_plot_rowspan(:) = 1 ! plot spans this number of rows + Grid1_plot_col(:) = 1 ! number from 1 at left + Grid1_plot_colspan(:) = 1 ! plot spans this number of columns + Grid1_plot_pad_left(:) = 0.03 ! fraction of full window width for padding on left + Grid1_plot_pad_right(:) = 0.03 ! fraction of full window width for padding on right + Grid1_plot_pad_top(:) = 0.03 ! fraction of full window height for padding at top + Grid1_plot_pad_bot(:) = 0.03 ! fraction of full window height for padding at bottom + Grid1_txt_scale_factor(:) = 0.7 ! multiply txt_scale for subplot by this + + + Grid1_plot_name(1) = 'Abundance' + Grid1_plot_row(1) = 1 ! number from 1 at top + Grid1_plot_rowspan(1) = 2 ! plot spans this number of rows + Grid1_plot_col(1) = 1 ! number from 1 at left + Grid1_plot_colspan(1) = 2 ! plot spans this number of columns + Grid1_plot_pad_left(1) = -0.05 ! fraction of full window width for padding on left + Grid1_plot_pad_right(1) = 0.05 ! fraction of full window width for padding on right + Grid1_plot_pad_top(1) = 0.0 ! fraction of full window height for padding at top + Grid1_plot_pad_bot(1) = 0.05 ! fraction of full window height for padding at bottom + Grid1_txt_scale_factor(1) = 0.6 ! multiply txt_scale for subplot by this + + ! Grid1_plot_name(2) = 'Abundance' + ! Grid1_plot_row(2) = 2 ! number from 1 at top + ! Grid1_plot_rowspan(2) = 1 ! plot spans this number of rows + ! Grid1_plot_col(2) = 1 ! number from 1 at left + ! Grid1_plot_colspan(2) = 2 ! plot spans this number of columns + ! Grid1_plot_pad_left(2) = -0.05 ! fraction of full window width for padding on left + ! Grid1_plot_pad_right(2) = 0.05 ! fraction of full window width for padding on right + ! Grid1_plot_pad_top(2) = 0.025 ! fraction of full window height for padding at top + ! Grid1_plot_pad_bot(2) = 0.025 ! fraction of full window height for padding at bottom + ! Grid1_txt_scale_factor(2) = 0.65 ! multiply txt_scale for subplot by this + + Grid1_plot_name(2) = 'Profile_Panels1' + Grid1_plot_row(2) = 3 ! number from 1 at top + Grid1_plot_rowspan(2) = 1 ! plot spans this number of rows + Grid1_plot_col(2) = 1 ! number from 1 at left + Grid1_plot_colspan(2) = 2 ! plot spans this number of columns + Grid1_plot_pad_left(2) = -0.05 ! fraction of full window width for padding on left + Grid1_plot_pad_right(2) = 0.05 ! fraction of full window width for padding on right + Grid1_plot_pad_top(2) = 0.05 ! fraction of full window height for padding at top + Grid1_plot_pad_bot(2) = 0.0 ! fraction of full window height for padding at bottom + Grid1_txt_scale_factor(2) = 0.65 ! multiply txt_scale for subplot by this + + Grid1_plot_name(3) = 'History_Panels1' + Grid1_plot_row(3) = 1 ! number from 1 at top + Grid1_plot_rowspan(3) = 3 ! plot spans this number of rows + Grid1_plot_col(3) = 3 ! number from 1 at left + Grid1_plot_colspan(3) = 2 ! plot spans this number of columns + Grid1_plot_pad_left(3) = 0.12 ! fraction of full window width for padding on left + Grid1_plot_pad_right(3) = 0.03 ! fraction of full window width for padding on right + Grid1_plot_pad_top(3) = 0.0 ! fraction of full window height for padding at top + Grid1_plot_pad_bot(3) = 0.0 ! fraction of full window height for padding at bottom + Grid1_txt_scale_factor(3) = 0.65 ! multiply txt_scale for subplot by this + + + ! file output + Grid1_file_flag = .true. + Grid1_file_dir = 'png' + Grid1_file_prefix = 'grid1' + Grid1_file_interval = 10000 ! output when mod(model_number,Grid1_file_interval)==0 + Grid1_file_width = 16 ! negative means use same value as for window + Grid1_file_aspect_ratio = -1 ! negative means use same value as for window + + + Abundance_win_flag = .false. + Abundance_xaxis_name = 'radius_cm' + Abundance_num_isos_to_show = -1 + Abundance_title = '' + + num_abundance_line_labels = 5 + Abundance_line_txt_scale_factor = 0.8 ! relative to other text + + Abundance_legend_max_cnt = -1 + Abundance_legend_txt_scale_factor = 0.8 ! relative to other text + + !### Profile_Panels1 + + Profile_Panels1_win_flag = .false. + + Profile_Panels1_win_width = 6 + Profile_Panels1_win_aspect_ratio = 0.75 ! aspect_ratio = height/width + + Profile_Panels1_xleft = 0.15 + Profile_Panels1_xright = 0.85 + Profile_Panels1_ybot = 0.15 + Profile_Panels1_ytop = 0.85 + Profile_Panels1_txt_scale = 1.0 + Profile_Panels1_title = '' + + Profile_Panels1_xaxis_name = 'radius_cm' + Profile_Panels1_xaxis_reversed = .false. + Profile_Panels1_xmin = 0 ! only used if /= -101d0 + Profile_Panels1_xmax = -101d0 ! only used if /= -101d0 + Profile_Panels1_xmargin = 0d0 + Profile_Panels1_show_mix_regions_on_xaxis = .false. + + Profile_Panels1_yaxis_name(:) = '' + Profile_Panels1_yaxis_reversed(:) = .false. + Profile_Panels1_yaxis_log(:) = .false. ! show log10 of abs value + Profile_Panels1_ymin(:) = -101d0 ! only used if /= -101d0 + Profile_Panels1_ymax(:) = -101d0 ! only used if /= -101d0 + Profile_Panels1_ymargin(:) = 0.1 + Profile_Panels1_dymin(:) = -1 + + Profile_Panels1_other_yaxis_name(:) = '' + Profile_Panels1_other_yaxis_reversed(:) = .false. + Profile_Panels1_other_yaxis_log(:) = .false. ! show log10 of abs value + Profile_Panels1_other_ymin(:) = -101d0 ! only used if /= -101d0 + Profile_Panels1_other_ymax(:) = -101d0 ! only used if /= -101d0 + Profile_Panels1_other_ymargin(:) = 0.1 + Profile_Panels1_other_dymin(:) = -1 + + Profile_Panels1_show_grid = .true. + + ! setup default plot + Profile_Panels1_num_panels = 1 + Profile_Panels1_yaxis_name(1) = 'logT' + Profile_Panels1_other_yaxis_name(1) = 'logRho' + + ! file output + Profile_Panels1_file_flag = .false. + Profile_Panels1_file_dir = 'png' + Profile_Panels1_file_prefix = 'profile_panels1_' + Profile_Panels1_file_interval = 5 ! output when mod(model_number,Profile_Panels1_file_interval)==0 + Profile_Panels1_file_width = -1 ! (inches) negative means use same value as for window + Profile_Panels1_file_aspect_ratio = -1 ! negative means use same value as for window + + + History_Panels1_win_flag = .false. + + History_Panels1_win_width = 6 + History_Panels1_win_aspect_ratio = 0.75 ! aspect_ratio = height/width + + History_Panels1_xleft = 0.15 + History_Panels1_xright = 0.85 + History_Panels1_ybot = 0.15 + History_Panels1_ytop = 0.85 + History_Panels1_txt_scale = 1.0 + History_Panels1_title = '' + + History_Panels1_xaxis_name = 'star_age' + History_Panels1_xmin = -101d0 + History_Panels1_xmax = -101d0 + History_Panels1_max_width = 100 ! only used if > 0. causes xmin to move with xmax. + History_Panels1_dxmin = -1 + History_Panels1_xaxis_reversed = .false. + History_Panels1_xaxis_log = .false. ! show log10 of abs value + + History_Panels1_yaxis_name(:) = '' + History_Panels1_yaxis_reversed(:) = .false. + History_Panels1_yaxis_log(:) = .false. ! show log10 of abs value + History_Panels1_ymin(:) = -101d0 ! only used if /= -101d0 + History_Panels1_ymax(:) = -101d0 ! only used if /= -101d0 + History_Panels1_ymargin(:) = 0.1 + History_Panels1_dymin(:) = -1 + + History_Panels1_other_yaxis_name(:) = '' + History_Panels1_other_yaxis_reversed(:) = .false. + History_Panels1_other_yaxis_log(:) = .false. ! show log10 of abs value + History_Panels1_other_ymin(:) = -101d0 ! only used if /= -101d0 + History_Panels1_other_ymax(:) = -101d0 ! only used if /= -101d0 + History_Panels1_other_ymargin(:) = 0.1 + History_Panels1_other_dymin(:) = -1 + + ! setup default + History_Panels1_num_panels = 2 + + History_Panels1_yaxis_name(1) = 'r_flame' + History_Panels1_yaxis_reversed(1) = .false. + History_Panels1_ymin(1) = 0 ! only used if /= -101d0 + History_Panels1_ymax(1) = 5e-4 ! only used if /= -101d0 + History_Panels1_dymin(1) = -1 + + History_Panels1_other_yaxis_name(1) = '' + History_Panels1_other_yaxis_reversed(1) = .false. + History_Panels1_other_ymin(1) = -101d0 ! only used if /= -101d0 + History_Panels1_other_ymax(1) = -101d0 ! only used if /= -101d0 + History_Panels1_other_dymin(1) = -1 + + History_Panels1_yaxis_name(2) = 'l_flame' + History_Panels1_yaxis_reversed(2) = .false. + History_Panels1_ymin(2) = -101d0 ! only used if /= -101d0 + History_Panels1_ymax(2) = -101d0 ! only used if /= -101d0 + History_Panels1_dymin(2) = -1 + + History_Panels1_other_yaxis_name(2) = '' + History_Panels1_other_yaxis_reversed(2) = .false. + History_Panels1_other_ymin(2) = -101d0 ! only used if /= -101d0 + History_Panels1_other_ymax(2) = -101d0 ! only used if /= -101d0 + History_Panels1_other_dymin(2) = -1 / ! end of pgstar namelist diff --git a/star/test_suite/conserve_angular_momentum/README.rst b/star/test_suite/conserve_angular_momentum/README.rst index 8604e0d9c..d1f066a45 100644 --- a/star/test_suite/conserve_angular_momentum/README.rst +++ b/star/test_suite/conserve_angular_momentum/README.rst @@ -13,7 +13,7 @@ This test case has 2 parts. Click to see a larger view of a plot. * Part 2 (``inlist_conserve_J``) imposes a uniform 10 km/s rotation profile, and continues the evolution until the helium core reaches a mass of 0.22 Msun. Throughout this evolution a relative change in the angular momentum (J_init - J)/J_init of order 3e-13 is reported in the terminal: .. image:: ../../../star/test_suite/conserve_angular_momentum/docs/grid_000455.svg - :scale: 100% + :width: 100% pgstar commands used for the first 7 plots: diff --git a/star/test_suite/conv_core_cpm/README.rst b/star/test_suite/conv_core_cpm/README.rst index 2f134fce2..df42d8f28 100644 --- a/star/test_suite/conv_core_cpm/README.rst +++ b/star/test_suite/conv_core_cpm/README.rst @@ -15,7 +15,9 @@ grid below must show that the red dot falls within the white box. The gold curve in that panel shows the expected evolution of the convective core if the model continued to evolve beyond its stopping condition. -.. image:: ../../../star/test_suite/conv_core_cpm/docs/grid_000092.png - +.. image:: ../../../star/test_suite/conv_core_cpm/docs/grid_000092.svg + :width: 100% Last-Updated: 2023-03-14 (MESA d6bbdf4) by Evan Bauer + +Last-Run: 17Jul2024 (MESA 5ef2ffac) by pmocz on C916PXT6XW in 125 seconds using 8 threads. diff --git a/star/test_suite/conv_core_cpm/docs/grid_000092.svg b/star/test_suite/conv_core_cpm/docs/grid_000092.svg new file mode 100644 index 000000000..06ca12ec7 --- /dev/null +++ b/star/test_suite/conv_core_cpm/docs/grid_000092.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/star/test_suite/conv_core_cpm/inlist_conv_core_cpm b/star/test_suite/conv_core_cpm/inlist_conv_core_cpm index ffd3345be..daa68d8c7 100644 --- a/star/test_suite/conv_core_cpm/inlist_conv_core_cpm +++ b/star/test_suite/conv_core_cpm/inlist_conv_core_cpm @@ -1,106 +1,107 @@ - &star_job show_log_description_at_start = .false. - load_saved_model = .true. - load_model_filename = '1.5_zams.mod' + load_saved_model = .true. + load_model_filename = '1.5_zams.mod' - set_initial_age = .true. - initial_age = 0 - set_initial_model_number = .true. - initial_model_number = 0 + set_initial_age = .true. + initial_age = 0 + set_initial_model_number = .true. + initial_model_number = 0 - save_model_when_terminate = .true. - required_termination_code_string = 'xa_central_lower_limit' - save_model_filename = 'final.mod' + save_model_when_terminate = .true. + required_termination_code_string = 'xa_central_lower_limit' + save_model_filename = 'final.mod' - ! display on-screen plots - pgstar_flag = .true. - save_pgstar_files_when_terminate = .true. + ! display on-screen plots + pgstar_flag = .true. + save_pgstar_files_when_terminate = .true. / ! end of star_job namelist &eos - ! eos options - ! see eos/defaults/eos.defaults + ! eos options + ! see eos/defaults/eos.defaults / ! end of eos namelist &kap - ! kap options - ! see kap/defaults/kap.defaults - use_Type2_opacities = .true. - Zbase = 0.02 - kap_file_prefix = 'a09' - kap_lowT_prefix = 'lowT_fa05_a09p' - kap_CO_prefix = 'a09_co' - + ! kap options + ! see kap/defaults/kap.defaults + use_Type2_opacities = .true. + Zbase = 0.02 + kap_file_prefix = 'a09' + kap_lowT_prefix = 'lowT_fa05_a09p' + kap_CO_prefix = 'a09_co' / ! end of kap namelist &controls - ! starting specifications + ! starting specifications - ! when to stop + ! when to stop - ! limit max_model_number as part of test_suite - max_model_number = 200 + ! limit max_model_number as part of test_suite + max_model_number = 200 - ! stop when the center mass fraction of h1 drops below this limit - xa_central_lower_limit_species(1) = 'h1' - xa_central_lower_limit(1) = 0.5 + ! stop when the center mass fraction of h1 drops below this limit + xa_central_lower_limit_species(1) = 'h1' + xa_central_lower_limit(1) = 0.5 - ! Tolerances for CPM+Ledoux convective core mass, - ! expect roughly 0.13 - x_ctrl(1) = 0.125 ! min core mass at Xc=0.5 - x_ctrl(2) = 0.135 ! max core mass at Xc=0.5 + ! Tolerances for CPM+Ledoux convective core mass, + ! expect roughly 0.13 + x_ctrl(1) = 0.125 ! min core mass at Xc=0.5 + x_ctrl(2) = 0.135 ! max core mass at Xc=0.5 - ! mlt - mixing_length_alpha = 1.8d0 - MLT_option = 'TDC' - use_Ledoux_criterion = .true. - do_conv_premix = .true. + ! mlt + mixing_length_alpha = 1.8d0 + MLT_option = 'TDC' + use_Ledoux_criterion = .true. + do_conv_premix = .true. - ! mixing + ! mixing - ! timesteps - max_years_for_timestep = 1d7 + ! timesteps + max_years_for_timestep = 1d7 - ! mesh + ! mesh - convective_bdy_weight = 2 - num_cells_for_smooth_gradL_composition_term = 10 - threshold_for_smooth_gradL_composition_term = 0.02 - num_cells_for_smooth_brunt_B = 10 - threshold_for_smooth_brunt_B = 0.1 + convective_bdy_weight = 2 + num_cells_for_smooth_gradL_composition_term = 10 + threshold_for_smooth_gradL_composition_term = 0.02 + num_cells_for_smooth_brunt_B = 10 + threshold_for_smooth_brunt_B = 0.1 - ! solver - energy_eqn_option = 'dedt' - use_gold_tolerances = .true. - use_gold2_tolerances = .true. + ! solver + energy_eqn_option = 'dedt' + use_gold_tolerances = .true. + use_gold2_tolerances = .true. - ! output + ! output photo_interval = 20 - profile_interval = 100 + profile_interval = 100 history_interval = 1 - terminal_interval = 10 - write_header_frequency = 10 + terminal_interval = 10 + write_header_frequency = 10 / ! end of controls namelist &pgstar - pgstar_interval = 1 + pgstar_interval = 1 !--------------------------------------------------------------------------------------------- ! grid1 plot of all 5 panels, see below sections setting up each panel ! file output + file_white_on_black_flag = .true. + file_device = 'vcps' + file_extension = 'ps' Grid1_file_flag = .true. - Grid1_file_dir = 'png' + Grid1_file_dir = 'pgstar_out' Grid1_file_prefix = 'grid_' Grid1_file_interval = 100000 ! we're just saving the last png for the test suite Grid1_file_width = 16 @@ -177,10 +178,10 @@ !--------------------------------------------------------------------------------------------- - HR_logT_min = 3.6 - HR_logT_max = 4.0 - HR_logL_min = 0.5 - HR_logL_max = 1.3 + HR_logT_min = 3.6 + HR_logT_max = 4.0 + HR_logL_min = 0.5 + HR_logL_max = 1.3 !--------------------------------------------------------------------------------------------- ! Kippenhahn diagram history plot @@ -207,18 +208,18 @@ Kipp_show_burn = .true. Kipp_show_luminosities = .false. - Kipp_mix_line_weight = 15 - Kipp_mix_interval = 2 + Kipp_mix_line_weight = 15 + Kipp_mix_interval = 2 !--------------------------------------------------------------------------------------------- - ! mass of convective core vs. X_c (central H abundance) - ! set parameters and labels for the mass of convective core - History_Track1_title = 'Evolution of Conv Core Mass' + ! mass of convective core vs. X_c (central H abundance) + ! set parameters and labels for the mass of convective core + History_Track1_title = 'Evolution of Conv Core Mass' History_Track1_xname = 'center_h1' History_Track1_yname = 'mass_conv_core' History_Track1_xaxis_label = 'X\dc\u' History_Track1_yaxis_label = 'Mass of Convective Core' - ! set up limits of the plot + ! set up limits of the plot History_Track1_reverse_xaxis = .true. History_Track1_reverse_yaxis = .false. History_Track1_log_xaxis = .false. @@ -226,54 +227,54 @@ History_Track1_xmin = 0.0 !-101d0 History_Track1_xmax = 0.75 !-101d0 History_Track1_ymin = 0 !-101d0 - History_Track1_ymax = 0.15 !-101d0 + History_Track1_ymax = 0.15 !-101d0 - show_History_Track1_target_box = .true. - History_Track1_n_sigma = 1 - History_Track1_xtarget = 0.5 - History_Track1_xsigma = 0.03 - History_Track1_ytarget = 0.13 ! The target value between x_ctrl(1) and x_ctrl(2) - History_Track1_ysigma = 0.005 + show_History_Track1_target_box = .true. + History_Track1_n_sigma = 1 + History_Track1_xtarget = 0.5 + History_Track1_xsigma = 0.03 + History_Track1_ytarget = 0.13 ! The target value between x_ctrl(1) and x_ctrl(2) + History_Track1_ysigma = 0.005 - History_Track1_fname = 'core_evolution.data' + History_Track1_fname = 'core_evolution.data' !--------------------------------------------------------------------------------------------- - ! set up for evolution of convective boundaries - ! grad_rad, grad_ad, grad_L, X, vs mass - Summary_Profile_win_width = 5 - Summary_Profile_win_flag = .false. - Summary_Profile_num_lines = 4 - !Summary_Profile_scaled_value(:)=.false. - Summary_Profile_title='\(0583)\d Profiles' - - Summary_Profile_name(1) = 'mixing_type' - Summary_Profile_legend(1) = 'convection' - !Summary_Profile_txt_scale = 1.0 - Summary_Profile_scaled_value(1) = .false. !.true. - - Summary_Profile_name(2) = 'grada' - Summary_Profile_legend(2) = '\(0583)\dad' - Summary_Profile_txt_scale = 1.0 - Summary_Profile_scaled_value(2) = .false. !.true. - - Summary_Profile_name(3) = 'gradr' - Summary_Profile_legend(3) = '\(0583)\drad' - Summary_Profile_xmax=0.2 - Summary_Profile_scaled_value(3) = .false. !.true. - - Summary_Profile_name(4) = 'x' !'center_h1' - Summary_Profile_legend(4) = 'X' - Summary_Profile_scaled_value(4) = .false. + ! set up for evolution of convective boundaries + ! grad_rad, grad_ad, grad_L, X, vs mass + Summary_Profile_win_width = 5 + Summary_Profile_win_flag = .false. + Summary_Profile_num_lines = 4 + !Summary_Profile_scaled_value(:)=.false. + Summary_Profile_title='\(0583)\d Profiles' + + Summary_Profile_name(1) = 'mixing_type' + Summary_Profile_legend(1) = 'convection' + !Summary_Profile_txt_scale = 1.0 + Summary_Profile_scaled_value(1) = .false. !.true. + + Summary_Profile_name(2) = 'grada' + Summary_Profile_legend(2) = '\(0583)\dad' + Summary_Profile_txt_scale = 1.0 + Summary_Profile_scaled_value(2) = .false. !.true. + + Summary_Profile_name(3) = 'gradr' + Summary_Profile_legend(3) = '\(0583)\drad' + Summary_Profile_xmax=0.2 + Summary_Profile_scaled_value(3) = .false. !.true. + + Summary_Profile_name(4) = 'x' !'center_h1' + Summary_Profile_legend(4) = 'X' + Summary_Profile_scaled_value(4) = .false. !--------------------------------------------------------------------------------------------- - ! Abundance profile plot - Abundance_num_isos_to_show = 4 - Abundance_which_isos_to_show(1) = 'h1' - Abundance_which_isos_to_show(2) = 'he4' - Abundance_which_isos_to_show(3) = 'c12' - Abundance_which_isos_to_show(4) = 'o16' - Abundance_title = 'Abundance' - ! number and size of isotope labels along curves + ! Abundance profile plot + Abundance_num_isos_to_show = 4 + Abundance_which_isos_to_show(1) = 'h1' + Abundance_which_isos_to_show(2) = 'he4' + Abundance_which_isos_to_show(3) = 'c12' + Abundance_which_isos_to_show(4) = 'o16' + Abundance_title = 'Abundance' + ! number and size of isotope labels along curves num_abundance_line_labels = 4 Abundance_line_txt_scale_factor = 0.8 ! number and size of isotopes on legend diff --git a/star/test_suite/conv_core_cpm/inlist_conv_core_cpm_header b/star/test_suite/conv_core_cpm/inlist_conv_core_cpm_header index 76ea4e0a3..75a1f1bac 100644 --- a/star/test_suite/conv_core_cpm/inlist_conv_core_cpm_header +++ b/star/test_suite/conv_core_cpm/inlist_conv_core_cpm_header @@ -1,39 +1,38 @@ - &star_job - read_extra_star_job_inlist(1) = .true. - extra_star_job_inlist_name(1) = 'inlist_conv_core_cpm' + read_extra_star_job_inlist(1) = .true. + extra_star_job_inlist_name(1) = 'inlist_conv_core_cpm' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_conv_core_cpm' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_conv_core_cpm' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_conv_core_cpm' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_conv_core_cpm' / ! end of kap namelist &controls - read_extra_controls_inlist(1) = .true. - extra_controls_inlist_name(1) = 'inlist_conv_core_cpm' + read_extra_controls_inlist(1) = .true. + extra_controls_inlist_name(1) = 'inlist_conv_core_cpm' / ! end of controls namelist &pgstar - read_extra_pgstar_inlist(1) = .true. - extra_pgstar_inlist_name(1) = 'inlist_conv_core_cpm' + read_extra_pgstar_inlist(1) = .true. + extra_pgstar_inlist_name(1) = 'inlist_conv_core_cpm' / ! end of pgstar namelist diff --git a/star/test_suite/conv_core_cpm/inlist_to_ZAMS b/star/test_suite/conv_core_cpm/inlist_to_ZAMS index 5b65fa96b..11ff49027 100644 --- a/star/test_suite/conv_core_cpm/inlist_to_ZAMS +++ b/star/test_suite/conv_core_cpm/inlist_to_ZAMS @@ -1,22 +1,21 @@ &star_job - show_log_description_at_start = .false. + show_log_description_at_start = .false. - create_pre_main_sequence_model = .true. + create_pre_main_sequence_model = .true. - load_saved_model = .false. + load_saved_model = .false. - save_model_when_terminate = .true. - save_model_filename = '1.5_zams.mod' + save_model_when_terminate = .true. + save_model_filename = '1.5_zams.mod' - pause_before_terminate = .false. + pause_before_terminate = .false. - !history_columns_file = 'history_columns.list' - !profile_columns_file = 'profile_columns.list' + !history_columns_file = 'history_columns.list' + !profile_columns_file = 'profile_columns.list' - initial_zfracs = 3 ! GS98_zfracs = 3 - -/ !end of star_job namelist + initial_zfracs = 3 ! GS98_zfracs = 3 + / !end of star_job namelist &eos @@ -24,74 +23,67 @@ &kap - use_Type2_opacities = .true. - Zbase = 2d-2 + use_Type2_opacities = .true. + Zbase = 2d-2 / ! end of kap namelist &controls - initial_mass = 1.5 - initial_z = 2d-2 + initial_mass = 1.5 + initial_z = 2d-2 ! When to stop - Lnuc_div_L_zams_limit = 0.99d0 - stop_near_zams = .true. - -! mixing controls + Lnuc_div_L_zams_limit = 0.99d0 + stop_near_zams = .true. + ! mixing controls - mixing_length_alpha = 1.8d0 - MLT_option = 'Henyey' + mixing_length_alpha = 1.8d0 + MLT_option = 'Henyey' - - use_Ledoux_criterion = .false. - !alpha_semiconvection = 0.01 - !semiconvection_option = 'Langer_85' + use_Ledoux_criterion = .false. + !alpha_semiconvection = 0.01 + !semiconvection_option = 'Langer_85' - -! timestep controls + ! timestep controls - !max_years_for_timestep = 1d4 - !max_timestep_factor = 1.2 - -! output controls + !max_years_for_timestep = 1d4 + !max_timestep_factor = 1.2 + ! output controls - log_directory = 'LOGS-ZAMS' - photo_interval = 100 - photo_digits = 5 - profile_interval = 100 - history_interval = 10 - terminal_interval = 50 - write_header_frequency = 10 - -! grid + log_directory = 'LOGS-ZAMS' + photo_interval = 100 + photo_digits = 5 + profile_interval = 100 + history_interval = 10 + terminal_interval = 50 + write_header_frequency = 10 + ! grid - mesh_delta_coeff = 0.5 + mesh_delta_coeff = 0.5 / ! end of controls namelist &pgstar - - Grid2_win_flag = .true. - file_digits = 7 - Grid2_file_dir = 'png' - Grid2_file_prefix = 'grid' - - Abundance_xmax = 0.5 - - Kipp_win_flag = .true. - - Kipp_xaxis_name = 'star_age' - Kipp_xaxis_in_Myr = .true. - Kipp_win_width = 9 - Kipp_win_aspect_ratio = 0.75 ! aspect_ratio = height/width - Kipp_show_burn = .false. - Kipp_mass_max = 0.16 ! (Msun units) negative means use default - Kipp_mass_max = -1 ! (Msun units) negative means use default - Kipp_xmin = -1 ! step number. negative means use default. - Kipp_max_width = 0 ! only used if > 0. causes xmin to move with xmax. - Kipp_mix_interval = 1 + Grid2_win_flag = .true. + file_digits = 7 + Grid2_file_dir = 'png' + Grid2_file_prefix = 'grid' + + Abundance_xmax = 0.5 + + Kipp_win_flag = .true. + Kipp_xaxis_name = 'star_age' + Kipp_xaxis_in_Myr = .true. + Kipp_win_width = 9 + Kipp_win_aspect_ratio = 0.75 ! aspect_ratio = height/width + Kipp_show_burn = .false. + Kipp_mass_max = 0.16 ! (Msun units) negative means use default + Kipp_mass_max = -1 ! (Msun units) negative means use default + Kipp_xmin = -1 ! step number. negative means use default. + Kipp_max_width = 0 ! only used if > 0. causes xmin to move with xmax. + Kipp_mix_interval = 1 / ! end of pgstar namelist diff --git a/star/test_suite/conv_core_cpm/inlist_to_ZAMS_header b/star/test_suite/conv_core_cpm/inlist_to_ZAMS_header index b5f970c7c..dd6bc0993 100644 --- a/star/test_suite/conv_core_cpm/inlist_to_ZAMS_header +++ b/star/test_suite/conv_core_cpm/inlist_to_ZAMS_header @@ -1,40 +1,39 @@ - &star_job - read_extra_star_job_inlist(2) = .true. - extra_star_job_inlist_name(2) = 'inlist_to_ZAMS' + read_extra_star_job_inlist(2) = .true. + extra_star_job_inlist_name(2) = 'inlist_to_ZAMS' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_to_ZAMS' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_to_ZAMS' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_to_ZAMS' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_to_ZAMS' / ! end of kap namelist &controls - read_extra_controls_inlist(1) = .true. - extra_controls_inlist_name(1)= 'inlist_to_ZAMS' + read_extra_controls_inlist(1) = .true. + extra_controls_inlist_name(1)= 'inlist_to_ZAMS' / ! end of controls namelist &pgstar - read_extra_pgstar_inlist(1) = .true. - extra_pgstar_inlist_name(1)= 'inlist_to_ZAMS' + read_extra_pgstar_inlist(1) = .true. + extra_pgstar_inlist_name(1)= 'inlist_to_ZAMS' / ! end of pgstar namelist diff --git a/star/test_suite/custom_colors/README.rst b/star/test_suite/custom_colors/README.rst index b44adce77..b0673dd95 100644 --- a/star/test_suite/custom_colors/README.rst +++ b/star/test_suite/custom_colors/README.rst @@ -11,13 +11,13 @@ This test case has 1 part. Click to see a larger view of a plot. * Part 1 (``inlist_1.0``) builds a 1.0 Msun, Z=0.02 metallicity, pre-main sequence model and evolves until core hydrogen depletion (mass fraction h1 < 0.1). This example loads the default |LCB98| color filter ''lcb98cor.dat'', a custom color filter ``data/blackbody_bc_v.txt`` which in this case is blackbody V band filter, and a custom extinction color correction file ``data/fake_av_v.txt``. Example color-color, color-magnitude, magnitude-color and magnitude-magnitude plots: .. image:: ../../../star/test_suite/custom_colors/docs/Color_magnitude1_000241.svg - :scale: 100% + :width: 100% .. image:: ../../../star/test_suite/custom_colors/docs/Color_magnitude2_000241.svg - :scale: 100% + :width: 100% .. image:: ../../../star/test_suite/custom_colors/docs/Color_magnitude3_000241.svg - :scale: 100% + :width: 100% pgstar commands used for the first 7 plots: diff --git a/star/test_suite/custom_rates/README.rst b/star/test_suite/custom_rates/README.rst index e8662357b..4f30bbe46 100644 --- a/star/test_suite/custom_rates/README.rst +++ b/star/test_suite/custom_rates/README.rst @@ -11,27 +11,27 @@ This test case has 5 parts. Click to see a larger view of a plot. * Part 1 (``inlist_core``) builds a 2.0 Msun, Z=0.02 metallicity, pre-main sequence model and evolves until the helium core reaches 0.3 Msun: .. image:: ../../../star/test_suite/custom_rates/docs/abund_001005.svg - :scale: 100% + :width: 100% * Part 2 (``inlist_make_he_wd``) removes the outer 1.7 Msun by gradually changing the total mass to 0.3 Msun by a wind: .. image:: ../../../star/test_suite/custom_rates/docs/abund_001102.svg - :scale: 100% + :width: 100% * Part 3 (``inlist_cool``) continues the evolution until the central temperature cools to log10(T/K) = 7.43. * Part 4 (``inlist_NCO_hashimoto``) loads the custom reaction rates, including those from |Hash86|, begins accreting mass at 1e-9 Msun/year, and continues the evolution to just before the nitrogen-carbon-oxygen (NCO) driven flash: .. image:: ../../../star/test_suite/custom_rates/docs/trho_001540.svg - :scale: 100% + :width: 100% * Part 5 (``inlist_NCO_flash``) continues the evolution and terminates when nuclear burning NCO runaway causes the temperature to exceed log10(T/K) = 7.8. See |BSB17| for a science application. The evolution one would get by using the default JINA reaclib rates (yellow curve) instead of the custom rates (green curve) : .. image:: ../../../star/test_suite/custom_rates/docs/trho_000508.svg - :scale: 100% + :width: 100% .. image:: ../../../star/test_suite/custom_rates/docs/abund_000508.svg - :scale: 100% + :width: 100% pgstar commands used for the first 7 plots: diff --git a/star/test_suite/diffusion_smoothness/README.rst b/star/test_suite/diffusion_smoothness/README.rst index d3b3cce66..c188eb447 100644 --- a/star/test_suite/diffusion_smoothness/README.rst +++ b/star/test_suite/diffusion_smoothness/README.rst @@ -13,48 +13,15 @@ This test case has 2 part2. Click to see a larger view of a plot. * Part 2 (``inlist_diffusion_smoothness``) activates element diffusion and continues the evolution for 3e9 years. The ``run-star_extras.f90`` then checks that the Brunt profile is sufficiently smooth in the central portion of the model. .. image:: ../../../star/test_suite/diffusion_smoothness/docs/brunt_000036.svg - :scale: 100% + :width: 100% pgstar commands used for the plot: -.. code-block:: console - - &pgstar - - file_white_on_black_flag = .true. ! white_on_black flags -- true means white foreground color on black background - file_device = 'png' ! png - file_extension = 'png' - - !file_device = 'vcps' ! postscript - !file_extension = 'ps' - - pgstar_interval = 1 - - ! Brunt B profile - Profile_Panels1_win_flag = .true. - Profile_Panels1_win_width = 14 - Profile_Panels1_show_grid = .false - Profile_Panels1_title = 'diffusion_smoothness' - - Profile_Panels1_xaxis_name = 'zone' - Profile_Panels1_xmin = -101d0 - Profile_Panels1_xmax = -101d0 - Profile_Panels1_xaxis_reversed = .true. - Profile_Panels1_show_mix_regions_on_xaxis = .true. - - Profile_Panels1_num_panels = 1 - Profile_Panels1_yaxis_name(1) = 'brunt_B' - Profile_Panels1_ymin(:) = -101d0 - Profile_Panels1_ymax(:) = -101d0 - Profile_Panels1_other_yaxis_name(1) = '' - - Profile_Panels1_file_flag = .true. - Profile_Panels1_file_dir = 'png' - Profile_Panels1_file_prefix = 'brunt_' - Profile_Panels1_file_interval = 10000 - Profile_Panels1_file_width = 14 - - / ! end of pgstar namelist +.. literalinclude:: ../../../star/test_suite/diffusion_smoothness/inlist_diffusion_smoothness + :language: console + :start-at: &pgstar + :end-at: ! end of pgstar namelist Last-Updated: 06Jun2021 (MESA 5be9e57) by fxt +Last-Run: 06Aug2024 (MESA 8b152605) by pmocz on C916PXT6XW in 82 seconds using 8 threads. diff --git a/star/test_suite/diffusion_smoothness/docs/brunt_000036.svg b/star/test_suite/diffusion_smoothness/docs/brunt_000036.svg index b872075e7..715714029 100644 --- a/star/test_suite/diffusion_smoothness/docs/brunt_000036.svg +++ b/star/test_suite/diffusion_smoothness/docs/brunt_000036.svg @@ -1,242 +1 @@ - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/star/test_suite/diffusion_smoothness/inlist_diffusion_smoothness b/star/test_suite/diffusion_smoothness/inlist_diffusion_smoothness index a6b192683..b61943f0a 100644 --- a/star/test_suite/diffusion_smoothness/inlist_diffusion_smoothness +++ b/star/test_suite/diffusion_smoothness/inlist_diffusion_smoothness @@ -1,33 +1,33 @@ &star_job - show_log_description_at_start = .false. - - !show_net_species_info = .true. - !show_net_reactions_info = .true. + show_log_description_at_start = .false. - load_saved_model = .true. - load_model_filename = 'zams.mod' - - save_model_when_terminate = .true. - save_model_filename = 'final.mod' - required_termination_code_string = 'max_age' + !show_net_species_info = .true. + !show_net_reactions_info = .true. + load_saved_model = .true. + load_model_filename = 'zams.mod' - change_initial_net = .true. - new_net_name = 'o18_and_ne22.net' - - set_initial_age = .true. - initial_age = 0 + save_model_when_terminate = .true. + save_model_filename = 'final.mod' + required_termination_code_string = 'max_age' - set_initial_model_number = .true. - initial_model_number = 0 - set_initial_cumulative_energy_error = .true. - new_cumulative_energy_error = 0d0 + change_initial_net = .true. + new_net_name = 'o18_and_ne22.net' - !pgstar_flag = .true. + set_initial_age = .true. + initial_age = 0 + set_initial_model_number = .true. + initial_model_number = 0 + + set_initial_cumulative_energy_error = .true. + new_cumulative_energy_error = 0d0 + + pgstar_flag = .true. + save_pgstar_files_when_terminate = .true. / ! end of star_job namelist @@ -35,94 +35,120 @@ / ! end of eos namelist &kap - Zbase = 0.02d0 - kap_file_prefix = 'gs98' + Zbase = 0.02d0 + kap_file_prefix = 'gs98' / ! end of kap namelist &controls - energy_eqn_option = 'dedt' - calculate_Brunt_N2 = .true. - use_gold2_tolerances = .true. - - num_trace_history_values = 2 - trace_history_value_name(1) = 'rel_E_err' - trace_history_value_name(2) = 'log_rel_run_E_err' - - ! limit max_model_number as part of test_suite - max_model_number = 100 - - x_integer_ctrl(1) = 1 ! part number - - max_age = 3d9 - - initial_mass = 1.0 - initial_z = 0.02d0 - - varcontrol_target = 1d-3 - mesh_delta_coeff = 0.7 - - limit_for_rel_error_in_energy_conservation = 1d-6 ! this makes d2N2 too large. takes 63 steps. log_rel_run_E_err -3.5859393528096946 - limit_for_rel_error_in_energy_conservation = 1d-5 ! this is smooth enough. takes 58 steps. log_rel_run_E_err -3.4820705862368895 - hard_limit_for_rel_error_in_energy_conservation = 1d-4 - - convective_bdy_weight = 1 - - cool_wind_RGB_scheme = 'Reimers' - cool_wind_AGB_scheme = 'Blocker' - RGB_to_AGB_wind_switch = 1d-4 - Reimers_scaling_factor = 0.7d0 - Blocker_scaling_factor = 0.7d0 + energy_eqn_option = 'dedt' + calculate_Brunt_N2 = .true. + use_gold2_tolerances = .true. + + num_trace_history_values = 2 + trace_history_value_name(1) = 'rel_E_err' + trace_history_value_name(2) = 'log_rel_run_E_err' + + ! limit max_model_number as part of test_suite + max_model_number = 100 + + x_integer_ctrl(1) = 1 ! part number + + max_age = 3d9 + + initial_mass = 1.0 + initial_z = 0.02d0 + + varcontrol_target = 1d-3 + mesh_delta_coeff = 0.7 + + limit_for_rel_error_in_energy_conservation = 1d-6 ! this makes d2N2 too large. takes 63 steps. log_rel_run_E_err -3.5859393528096946 + limit_for_rel_error_in_energy_conservation = 1d-5 ! this is smooth enough. takes 58 steps. log_rel_run_E_err -3.4820705862368895 + hard_limit_for_rel_error_in_energy_conservation = 1d-4 + + convective_bdy_weight = 1 + + cool_wind_RGB_scheme = 'Reimers' + cool_wind_AGB_scheme = 'Blocker' + RGB_to_AGB_wind_switch = 1d-4 + Reimers_scaling_factor = 0.7d0 + Blocker_scaling_factor = 0.7d0 ! set_min_D_mix = .true. - min_D_mix = 1d2 ! D_mix will be at least this large - min_center_Ye_for_min_D_mix = 0.47 ! min_D_mix is only used when center Ye >= this - ! i.e., when center Ye drops below this, min_D_mix is 0 - - - num_cells_for_smooth_brunt_B = 0 - - !show_diffusion_info = .true. ! terminal output for diffusion - !show_diffusion_substep_info = .true. - !show_diffusion_timing = .true. - - do_element_diffusion = .true. ! determines whether or not we do diffusion - - diffusion_calculates_ionization = .true. - - diffusion_num_classes = 4 ! number of classes of species for diffusion calculations - diffusion_class_representative(1) = 'h1' - diffusion_class_representative(2) = 'he4' - diffusion_class_representative(3) = 'o16' - diffusion_class_representative(4) = 'fe56' - - ! in ascending order. species goes into 1st class with A_max >= species A - diffusion_class_A_max(1) = 2 - diffusion_class_A_max(2) = 4 - diffusion_class_A_max(3) = 16 - diffusion_class_A_max(4) = 10000 - - diffusion_use_isolve = .true. - diffusion_rtol_for_isolve = 1d-4 - diffusion_atol_for_isolve = 1d-5 - diffusion_maxsteps_for_isolve = 1000 - diffusion_isolve_solver = 'ros2_solver' - - photo_interval = 50 - profile_interval = 100 - history_interval = 10 - terminal_interval = 10 + min_D_mix = 1d2 ! D_mix will be at least this large + min_center_Ye_for_min_D_mix = 0.47 ! min_D_mix is only used when center Ye >= this + ! i.e., when center Ye drops below this, min_D_mix is 0 -/ ! end of controls namelist + num_cells_for_smooth_brunt_B = 0 + + !show_diffusion_info = .true. ! terminal output for diffusion + !show_diffusion_substep_info = .true. + !show_diffusion_timing = .true. + + do_element_diffusion = .true. ! determines whether or not we do diffusion + + diffusion_calculates_ionization = .true. + + diffusion_num_classes = 4 ! number of classes of species for diffusion calculations + diffusion_class_representative(1) = 'h1' + diffusion_class_representative(2) = 'he4' + diffusion_class_representative(3) = 'o16' + diffusion_class_representative(4) = 'fe56' + + ! in ascending order. species goes into 1st class with A_max >= species A + diffusion_class_A_max(1) = 2 + diffusion_class_A_max(2) = 4 + diffusion_class_A_max(3) = 16 + diffusion_class_A_max(4) = 10000 + + diffusion_use_isolve = .true. + diffusion_rtol_for_isolve = 1d-4 + diffusion_atol_for_isolve = 1d-5 + diffusion_maxsteps_for_isolve = 1000 + diffusion_isolve_solver = 'ros2_solver' + + photo_interval = 50 + profile_interval = 100 + history_interval = 10 + terminal_interval = 10 + +/ ! end of controls namelist &pgstar - - ! top level controls - !pause = .true. - ! if true, the code waits for user to enter a RETURN on the command line - + ! device + file_white_on_black_flag = .true. + file_device = 'vcps' ! postscript + file_extension = 'ps' + !file_device = 'png' ! png + !file_extension = 'png' + + pgstar_interval = 1 + + ! Brunt B profile + Profile_Panels1_win_flag = .true. + Profile_Panels1_win_width = 14 + Profile_Panels1_show_grid = .false + Profile_Panels1_title = 'diffusion_smoothness' + + Profile_Panels1_xaxis_name = 'zone' + Profile_Panels1_xmin = -101d0 + Profile_Panels1_xmax = -101d0 + Profile_Panels1_xaxis_reversed = .true. + Profile_Panels1_show_mix_regions_on_xaxis = .true. + + Profile_Panels1_num_panels = 1 + Profile_Panels1_yaxis_name(1) = 'brunt_B' + Profile_Panels1_ymin(:) = -101d0 + Profile_Panels1_ymax(:) = -101d0 + Profile_Panels1_other_yaxis_name(1) = '' + + Profile_Panels1_file_flag = .true. + Profile_Panels1_file_dir = 'pgstar_out' + Profile_Panels1_file_prefix = 'brunt_' + Profile_Panels1_file_interval = 10000 + Profile_Panels1_file_width = 14 / ! end of pgstar namelist diff --git a/star/test_suite/diffusion_smoothness/inlist_diffusion_smoothness_header b/star/test_suite/diffusion_smoothness/inlist_diffusion_smoothness_header index 90d444869..aaf43854c 100644 --- a/star/test_suite/diffusion_smoothness/inlist_diffusion_smoothness_header +++ b/star/test_suite/diffusion_smoothness/inlist_diffusion_smoothness_header @@ -1,41 +1,39 @@ &star_job - - read_extra_star_job_inlist(1) = .true. - extra_star_job_inlist_name(1) = 'inlist_diffusion_smoothness' + read_extra_star_job_inlist(1) = .true. + extra_star_job_inlist_name(1) = 'inlist_diffusion_smoothness' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_diffusion_smoothness' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_diffusion_smoothness' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_diffusion_smoothness' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_diffusion_smoothness' / ! end of kap namelist - &controls - read_extra_controls_inlist(1) = .true. - extra_controls_inlist_name(1)= 'inlist_diffusion_smoothness' + read_extra_controls_inlist(1) = .true. + extra_controls_inlist_name(1)= 'inlist_diffusion_smoothness' / ! end of controls namelist &pgstar - read_extra_pgstar_inlist(1) = .true. - extra_pgstar_inlist_name(1)= 'inlist_diffusion_smoothness' + read_extra_pgstar_inlist(1) = .true. + extra_pgstar_inlist_name(1)= 'inlist_diffusion_smoothness' / ! end of pgstar namelist diff --git a/star/test_suite/diffusion_smoothness/inlist_zams b/star/test_suite/diffusion_smoothness/inlist_zams index 8bfa87a5f..fda0c5e76 100644 --- a/star/test_suite/diffusion_smoothness/inlist_zams +++ b/star/test_suite/diffusion_smoothness/inlist_zams @@ -1,77 +1,75 @@ &star_job - show_log_description_at_start = .false. - - !show_net_species_info = .true. - !show_net_reactions_info = .true. + show_log_description_at_start = .false. - create_pre_main_sequence_model = .true. - - save_model_when_terminate = .true. - save_model_filename = 'zams.mod' - required_termination_code_string = 'Lnuc_div_L_zams_limit' + !show_net_species_info = .true. + !show_net_reactions_info = .true. + create_pre_main_sequence_model = .true. - change_initial_net = .true. - new_net_name = 'o18_and_ne22.net' - - !pgstar_flag = .true. + save_model_when_terminate = .true. + save_model_filename = 'zams.mod' + required_termination_code_string = 'Lnuc_div_L_zams_limit' + + + change_initial_net = .true. + new_net_name = 'o18_and_ne22.net' + + !pgstar_flag = .true. / ! end of star_job namelist &kap - Zbase = 0.02d0 + Zbase = 0.02d0 - kap_file_prefix = 'gs98' + kap_file_prefix = 'gs98' / ! end of kap namelist &controls - stop_near_zams = .true. - Lnuc_div_L_zams_limit = 0.98d0 - - ! limit max_model_number as part of test_suite - max_model_number = 10000 - use_gold2_tolerances = .true. - - num_trace_history_values = 2 - trace_history_value_name(1) = 'rel_E_err' - trace_history_value_name(2) = 'log_rel_run_E_err' - - x_integer_ctrl(1) = 0 ! part number - - initial_mass = 1.0 - initial_z = 0.02d0 - - varcontrol_target = 1d-3 - mesh_delta_coeff = 0.7 - + stop_near_zams = .true. + Lnuc_div_L_zams_limit = 0.98d0 + + ! limit max_model_number as part of test_suite + max_model_number = 10000 + use_gold2_tolerances = .true. + + num_trace_history_values = 2 + trace_history_value_name(1) = 'rel_E_err' + trace_history_value_name(2) = 'log_rel_run_E_err' + + x_integer_ctrl(1) = 0 ! part number + + initial_mass = 1.0 + initial_z = 0.02d0 + + varcontrol_target = 1d-3 + mesh_delta_coeff = 0.7 + ! set_min_D_mix = .true. - min_D_mix = 1d2 ! D_mix will be at least this large - min_center_Ye_for_min_D_mix = 0.47 ! min_D_mix is only used when center Ye >= this - ! i.e., when center Ye drops below this, min_D_mix is 0 - - - num_cells_for_smooth_brunt_B = 0 - - photo_interval = 50 - profile_interval = 100 - history_interval = 10 - terminal_interval = 10 + min_D_mix = 1d2 ! D_mix will be at least this large + min_center_Ye_for_min_D_mix = 0.47 ! min_D_mix is only used when center Ye >= this + ! i.e., when center Ye drops below this, min_D_mix is 0 -/ ! end of controls namelist + num_cells_for_smooth_brunt_B = 0 + + photo_interval = 50 + profile_interval = 100 + history_interval = 10 + terminal_interval = 10 + +/ ! end of controls namelist &pgstar - - ! top level controls - !pause = .true. - ! if true, the code waits for user to enter a RETURN on the command line - + ! top level controls + + !pause = .true. + ! if true, the code waits for user to enter a RETURN on the command line / ! end of pgstar namelist diff --git a/star/test_suite/diffusion_smoothness/inlist_zams_header b/star/test_suite/diffusion_smoothness/inlist_zams_header index 9b647ddf7..f855a2d43 100644 --- a/star/test_suite/diffusion_smoothness/inlist_zams_header +++ b/star/test_suite/diffusion_smoothness/inlist_zams_header @@ -1,25 +1,24 @@ &star_job - - read_extra_star_job_inlist(1) = .true. - extra_star_job_inlist_name(1) = 'inlist_zams' + read_extra_star_job_inlist(1) = .true. + extra_star_job_inlist_name(1) = 'inlist_zams' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_zams' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_zams' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_zams' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_zams' / ! end of kap namelist @@ -27,15 +26,15 @@ &controls - read_extra_controls_inlist(1) = .true. - extra_controls_inlist_name(1)= 'inlist_zams' + read_extra_controls_inlist(1) = .true. + extra_controls_inlist_name(1)= 'inlist_zams' / ! end of controls namelist &pgstar - read_extra_pgstar_inlist(1) = .true. - extra_pgstar_inlist_name(1)= 'inlist_zams' + read_extra_pgstar_inlist(1) = .true. + extra_pgstar_inlist_name(1)= 'inlist_zams' / ! end of pgstar namelist diff --git a/star/test_suite/each_test_compile b/star/test_suite/each_test_compile index 1424b5224..5fdb014e5 100755 --- a/star/test_suite/each_test_compile +++ b/star/test_suite/each_test_compile @@ -1,10 +1,10 @@ #!/bin/bash function check_okay { - if [ $? -ne 0 ] - then - exit 1 - fi + if [ $? -ne 0 ] + then + exit 1 + fi } function do_one { @@ -24,6 +24,6 @@ DO_ALL=0 id=0 curr_id="$1" if [ ! "$1" ]; then - DO_ALL=1 + DO_ALL=1 fi source do1_test_source diff --git a/star/test_suite/each_test_do b/star/test_suite/each_test_do index bb0325951..6b892f7da 100755 --- a/star/test_suite/each_test_do +++ b/star/test_suite/each_test_do @@ -1,35 +1,33 @@ #!/bin/bash function check_okay { - if [ $? -ne 0 ] - then - exit 1 - fi + if [ $? -ne 0 ] + then + exit 1 + fi } - - function error { - echo - more diff.txt - echo - echo "******* failed ******** diff final_check.mod" "$1" - echo + echo + more diff.txt + echo + echo "******* failed ******** diff final_check.mod" "$1" + echo } function do_onex { cd $1 if [ -z profile_columns.list ] then - pwd - cp ../../defaults/profile_columns.list profile_columns.list - svn add profile_columns.list + pwd + cp ../../defaults/profile_columns.list profile_columns.list + svn add profile_columns.list fi if [ -z history_columns.list ] then - pwd - cp ../../defaults/history_columns.list history_columns.list - svn add history_columns.list + pwd + cp ../../defaults/history_columns.list history_columns.list + svn add history_columns.list fi cd .. } @@ -38,13 +36,13 @@ function do_onexx { cd $1 if [ -z $3 ] then - echo + echo elif [ "$3" == skip ] then - echo + echo else - pwd - cp "$3" /Users/bpaxton/mesa/star/test_suite/$1/final_check.mod + pwd + cp "$3" /Users/bpaxton/mesa/star/test_suite/$1/final_check.mod fi cd .. } @@ -53,19 +51,19 @@ function do_onex { cd $1 if [ ! -r final_check.mod ] then - if [ ! -z $3 ] - then - pwd - echo cp $3 final_check.mod - cp $3 final_check.mod - #svn add final_check.mod - elif [ -r final.mod ] - then - pwd - echo cp final.mod final_check.mod - cp final.mod final_check.mod - #svn add final_check.mod - fi + if [ ! -z $3 ] + then + pwd + echo cp $3 final_check.mod + cp $3 final_check.mod + #svn add final_check.mod + elif [ -r final.mod ] + then + pwd + echo cp final.mod final_check.mod + cp final.mod final_check.mod + #svn add final_check.mod + fi fi cd .. } @@ -79,13 +77,12 @@ function do_onex { } - function do_one { - echo $1 - cd $1 - cat history_columns.list >> ../history_columns.combined.list - rm history_columns.combined.list - cd .. + echo $1 + cd $1 + cat history_columns.list >> ../history_columns.combined.list + rm history_columns.combined.list + cd .. } diff --git a/star/test_suite/each_test_run b/star/test_suite/each_test_run index 1227ddc88..fcd26c6e1 100755 --- a/star/test_suite/each_test_run +++ b/star/test_suite/each_test_run @@ -17,6 +17,95 @@ function testhub_log { echo "$1" >> testhub.yml } +# Optional function to update the docs after a test has passed. +# This function checks for images specified in the problem's README.rst file +# and copies images generated by the run to the appropriate location in the docs, +# otherwise it generates an error message +function update_docs { + start_time=$1 + # run python plotting script plot.py if it exists + if [ -e plot.py ]; then + echo "Running plot.py" + if ! python plot.py; then + echo "Error: plot.py failed to run" + fi + fi + # check for image filenames in README.rst + if grep -q ".. image::" README.rst; then + # copy images to docs/ if they exist + for img in $(grep ".. image::" README.rst | cut -d' ' -f3); do + filename=$(basename -- "$img") + extension="${filename##*.}" + filename="${filename%.*}" + # find the right img directory out of: + # "pgstar_out", "pgstar_out1", "pgstar_out2", "pgstar_out3", + # "png", "png1", "png2", "png3", + # "plt_out", "plt_out1", "plt_out2", "plt_out3" + img_dir="pgstar_out" + if [ \( -e "pgstar_out/$filename.$extension" \) -o \( -e "pgstar_out/$filename.ps" \) ]; then + img_dir="pgstar_out" + elif [ \( -e "pgstar_out1/$filename.$extension" \) -o \( -e "pgstar_out1/$filename.ps" \) ]; then + img_dir="pgstar_out1" + elif [ \( -e "pgstar_out2/$filename.$extension" \) -o \( -e "pgstar_out2/$filename.ps" \) ]; then + img_dir="pgstar_out2" + elif [ \( -e "pgstar_out3/$filename.$extension" \) -o \( -e "pgstar_out3/$filename.ps" \) ]; then + img_dir="pgstar_out3" + elif [ -e "png/$filename.$extension" ]; then + img_dir="png" + elif [ -e "png1/$filename.$extension" ]; then + img_dir="png1" + elif [ -e "png2/$filename.$extension" ]; then + img_dir="png2" + elif [ -e "png3/$filename.$extension" ]; then + img_dir="png3" + elif [ -e "plt_out/$filename.$extension" ]; then + img_dir="plt_out" + elif [ -e "plt_out1/$filename.$extension" ]; then + img_dir="plt_out1" + elif [ -e "plt_out2/$filename.$extension" ]; then + img_dir="plt_out2" + elif [ -e "plt_out3/$filename.$extension" ]; then + img_dir="plt_out3" + fi + image_to_copy="$img_dir/$filename.$extension" + # if requested extension is .svg, it may need to be converted from .ps (since pgstar outputs .ps): + if [ "$extension" == "svg" ]; then + if [ -e $img_dir/$filename.ps ]; then + echo "Converting $filename.ps to $filename.svg" + if [ ! command -v epstool &> /dev/null]; then + echo "Error: 'epstool' could not be found! Please install it. Will not be able to convert image to optmized .svg" + elif [ ! command -v ps2pdf &> /dev/null]; then + echo "Error: 'ps2pdf' could not be found! Please install it. Will not be able to convert image to optmized .svg" + elif [ ! command -v inkscape &> /dev/null]; then + echo "Error: 'inkscape' could not be found! Please install it. Will not be able to convert image to optmized .svg" + elif [ ! command -v svgo &> /dev/null]; then + echo "Error: 'svgo' could not be found! Please install it. Will not be able to convert image to optmized .svg" + fi + epstool --copy --bbox $img_dir/$filename.ps $img_dir/_TMP_$filename.ps + ps2pdf -dEPSCrop $img_dir/_TMP_$filename.ps $img_dir/_TMP_$filename.pdf + inkscape --export-page=1 --export-type="svg" --export-extension=org.inkscape.output.scour_inkscape --export-filename=$img_dir/_TMP_$filename.svg $img_dir/_TMP_$filename.pdf + svgo $img_dir/_TMP_$filename.svg -o $img_dir/$filename.svg + rm $img_dir/_TMP_$filename.ps $img_dir/_TMP_$filename.pdf $img_dir/_TMP_$filename.svg + fi + fi + # perform copy if image exists, and update README.rst + if [ -e "$image_to_copy" ]; then + cp "$image_to_copy" docs/ + echo "Updated image $filename.$extension in the docs" + # replace the line "Last-Run: ..." in README.rst + LAST_RUN="Last-Run: $(date '+%d%b%Y') (MESA $(git rev-parse --short HEAD)) by $USER on $(hostname) in $(expr `date +%s` - $start_time) seconds using $OMP_NUM_THREADS threads." + # print name of + sed -i "" "/Last-Run: .*/d" README.rst + echo $LAST_RUN >> README.rst + else + echo "Error: $image_to_copy not found. Test may no longer be producing this file or may now be producing a different final snapshot number! Update test and README.rst accordingly." + fi + done + else + echo "(no images found in README.rst)" + fi +} + # remove known false positive messages from stderr output file (err.txt) function filter_stderr { cp err.txt err.tmp @@ -190,6 +279,8 @@ function check_run { function build_and_run { + start_time=`date +%s` + if ! ./clean; then return 1 fi @@ -228,6 +319,11 @@ function build_and_run { # if we made it this far, we passed testhub_log "outcome: :pass" + + # if we're updating the docs, try to do it here + if [ "$has_update_docs_flag" = true ]; then + update_docs $start_time + fi return } @@ -275,6 +371,21 @@ fi } +# check for '--update-docs' optional flag +has_update_docs_flag=false +for i in "$@"; do + case $i in + -u|--update-docs) + has_update_docs_flag=true + echo "(updating docs after successful test runs)" + shift # past argument with no value + ;; + -*|--*) + echo "Unknown option $i" + exit 1 + ;; + esac +done date echo "" diff --git a/star/test_suite/extended_convective_penetration/README.rst b/star/test_suite/extended_convective_penetration/README.rst index db75a683a..bbde74541 100644 --- a/star/test_suite/extended_convective_penetration/README.rst +++ b/star/test_suite/extended_convective_penetration/README.rst @@ -72,10 +72,10 @@ we have a radiative temperature gradient (:math:`\nabla_T = \nabla_{rad}`). .. image:: ../../../star/test_suite/extended_convective_penetration/docs/grads_000047.svg - :scale: 100% + :width: 100% .. image:: ../../../star/test_suite/extended_convective_penetration/docs/mixing_000047.svg - :scale: 100% + :width: 100% pgstar commands used for the plot: diff --git a/star/test_suite/gyre_in_mesa_bcep/make/makefile b/star/test_suite/gyre_in_mesa_bcep/make/makefile index 68451046a..da1cf8efd 100644 --- a/star/test_suite/gyre_in_mesa_bcep/make/makefile +++ b/star/test_suite/gyre_in_mesa_bcep/make/makefile @@ -2,7 +2,7 @@ include $(MESA_DIR)/utils/makefile_header -LOAD_MESA = $(LOAD_EXTRAS1) $(LOAD_MESA_STAR) $(LOAD_EXTRAS) +LOAD_MESA = $(LOAD_EXTRAS1) $(LOAD_MESA_STAR) $(LOAD_GYRE) $(LOAD_EXTRAS) ################################################################# @@ -18,7 +18,7 @@ WORK_SRC_DIR = $(WORK_DIR)/src STAR_JOB_DIR = $(MESA_DIR)/star/job $(STAR) : $(OBJS) - $(LOADER) $(FCopenmp) -o $(WORK_DIR)/$(STAR) $(OBJS) $(LOAD_MESA) -lgyre + $(LOADER) $(FCopenmp) -o $(WORK_DIR)/$(STAR) $(OBJS) $(LOAD_MESA) ################################################################# diff --git a/star/test_suite/gyre_in_mesa_bcep/src/run_star_extras.f90 b/star/test_suite/gyre_in_mesa_bcep/src/run_star_extras.f90 index 75dd314b6..b60405fdf 100644 --- a/star/test_suite/gyre_in_mesa_bcep/src/run_star_extras.f90 +++ b/star/test_suite/gyre_in_mesa_bcep/src/run_star_extras.f90 @@ -28,8 +28,9 @@ module run_star_extras use star_def use const_def use math_lib - use auto_diff - use gyre_lib + use auto_diff + + use gyre_mesa_m ! No implicit typing @@ -81,19 +82,19 @@ subroutine extras_startup(id, restart, ierr) ! Initialize GYRE - call gyre_init('gyre.in') + call init('gyre.in') ! Set constants - call gyre_set_constant('G_GRAVITY', standard_cgrav) - call gyre_set_constant('C_LIGHT', clight) - call gyre_set_constant('A_RADIATION', crad) + call set_constant('G_GRAVITY', standard_cgrav) + call set_constant('C_LIGHT', clight) + call set_constant('A_RADIATION', crad) - call gyre_set_constant('M_SUN', Msun) - call gyre_set_constant('R_SUN', Rsun) - call gyre_set_constant('L_SUN', Lsun) + call set_constant('M_SUN', Msun) + call set_constant('R_SUN', Rsun) + call set_constant('L_SUN', Lsun) - call gyre_set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') + call set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') end subroutine extras_startup @@ -140,7 +141,7 @@ subroutine extras_after_evolve(id, ierr) ! Finalize GYRE - call gyre_final() + call final() end subroutine extras_after_evolve diff --git a/star/test_suite/gyre_in_mesa_envelope/make/makefile b/star/test_suite/gyre_in_mesa_envelope/make/makefile index 68451046a..da1cf8efd 100644 --- a/star/test_suite/gyre_in_mesa_envelope/make/makefile +++ b/star/test_suite/gyre_in_mesa_envelope/make/makefile @@ -2,7 +2,7 @@ include $(MESA_DIR)/utils/makefile_header -LOAD_MESA = $(LOAD_EXTRAS1) $(LOAD_MESA_STAR) $(LOAD_EXTRAS) +LOAD_MESA = $(LOAD_EXTRAS1) $(LOAD_MESA_STAR) $(LOAD_GYRE) $(LOAD_EXTRAS) ################################################################# @@ -18,7 +18,7 @@ WORK_SRC_DIR = $(WORK_DIR)/src STAR_JOB_DIR = $(MESA_DIR)/star/job $(STAR) : $(OBJS) - $(LOADER) $(FCopenmp) -o $(WORK_DIR)/$(STAR) $(OBJS) $(LOAD_MESA) -lgyre + $(LOADER) $(FCopenmp) -o $(WORK_DIR)/$(STAR) $(OBJS) $(LOAD_MESA) ################################################################# diff --git a/star/test_suite/gyre_in_mesa_envelope/src/run_star_extras.f90 b/star/test_suite/gyre_in_mesa_envelope/src/run_star_extras.f90 index 75dd314b6..b60405fdf 100644 --- a/star/test_suite/gyre_in_mesa_envelope/src/run_star_extras.f90 +++ b/star/test_suite/gyre_in_mesa_envelope/src/run_star_extras.f90 @@ -28,8 +28,9 @@ module run_star_extras use star_def use const_def use math_lib - use auto_diff - use gyre_lib + use auto_diff + + use gyre_mesa_m ! No implicit typing @@ -81,19 +82,19 @@ subroutine extras_startup(id, restart, ierr) ! Initialize GYRE - call gyre_init('gyre.in') + call init('gyre.in') ! Set constants - call gyre_set_constant('G_GRAVITY', standard_cgrav) - call gyre_set_constant('C_LIGHT', clight) - call gyre_set_constant('A_RADIATION', crad) + call set_constant('G_GRAVITY', standard_cgrav) + call set_constant('C_LIGHT', clight) + call set_constant('A_RADIATION', crad) - call gyre_set_constant('M_SUN', Msun) - call gyre_set_constant('R_SUN', Rsun) - call gyre_set_constant('L_SUN', Lsun) + call set_constant('M_SUN', Msun) + call set_constant('R_SUN', Rsun) + call set_constant('L_SUN', Lsun) - call gyre_set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') + call set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') end subroutine extras_startup @@ -140,7 +141,7 @@ subroutine extras_after_evolve(id, ierr) ! Finalize GYRE - call gyre_final() + call final() end subroutine extras_after_evolve diff --git a/star/test_suite/gyre_in_mesa_ms/make/makefile b/star/test_suite/gyre_in_mesa_ms/make/makefile index 68451046a..da1cf8efd 100644 --- a/star/test_suite/gyre_in_mesa_ms/make/makefile +++ b/star/test_suite/gyre_in_mesa_ms/make/makefile @@ -2,7 +2,7 @@ include $(MESA_DIR)/utils/makefile_header -LOAD_MESA = $(LOAD_EXTRAS1) $(LOAD_MESA_STAR) $(LOAD_EXTRAS) +LOAD_MESA = $(LOAD_EXTRAS1) $(LOAD_MESA_STAR) $(LOAD_GYRE) $(LOAD_EXTRAS) ################################################################# @@ -18,7 +18,7 @@ WORK_SRC_DIR = $(WORK_DIR)/src STAR_JOB_DIR = $(MESA_DIR)/star/job $(STAR) : $(OBJS) - $(LOADER) $(FCopenmp) -o $(WORK_DIR)/$(STAR) $(OBJS) $(LOAD_MESA) -lgyre + $(LOADER) $(FCopenmp) -o $(WORK_DIR)/$(STAR) $(OBJS) $(LOAD_MESA) ################################################################# diff --git a/star/test_suite/gyre_in_mesa_ms/src/run_star_extras.f90 b/star/test_suite/gyre_in_mesa_ms/src/run_star_extras.f90 index 75dd314b6..b60405fdf 100644 --- a/star/test_suite/gyre_in_mesa_ms/src/run_star_extras.f90 +++ b/star/test_suite/gyre_in_mesa_ms/src/run_star_extras.f90 @@ -28,8 +28,9 @@ module run_star_extras use star_def use const_def use math_lib - use auto_diff - use gyre_lib + use auto_diff + + use gyre_mesa_m ! No implicit typing @@ -81,19 +82,19 @@ subroutine extras_startup(id, restart, ierr) ! Initialize GYRE - call gyre_init('gyre.in') + call init('gyre.in') ! Set constants - call gyre_set_constant('G_GRAVITY', standard_cgrav) - call gyre_set_constant('C_LIGHT', clight) - call gyre_set_constant('A_RADIATION', crad) + call set_constant('G_GRAVITY', standard_cgrav) + call set_constant('C_LIGHT', clight) + call set_constant('A_RADIATION', crad) - call gyre_set_constant('M_SUN', Msun) - call gyre_set_constant('R_SUN', Rsun) - call gyre_set_constant('L_SUN', Lsun) + call set_constant('M_SUN', Msun) + call set_constant('R_SUN', Rsun) + call set_constant('L_SUN', Lsun) - call gyre_set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') + call set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') end subroutine extras_startup @@ -140,7 +141,7 @@ subroutine extras_after_evolve(id, ierr) ! Finalize GYRE - call gyre_final() + call final() end subroutine extras_after_evolve diff --git a/star/test_suite/gyre_in_mesa_rsg/README.rst b/star/test_suite/gyre_in_mesa_rsg/README.rst index 44edf3f35..627cb00f1 100644 --- a/star/test_suite/gyre_in_mesa_rsg/README.rst +++ b/star/test_suite/gyre_in_mesa_rsg/README.rst @@ -13,7 +13,7 @@ This test case has 4 parts. * Part 2 (``inlist_to_near_pulses``) continues the evolution until effective temperature goes below log10(Teff/K) = 3.55. .. image:: ../../../star/test_suite/gyre_in_mesa_rsg/docs/hr000496.svg - :scale: 100% + :width: 100% * Part 3 (``inlist_to_pulse``) continues the evolution until luminosity exceeds log10(Lsun/L) = 5.04. diff --git a/star/test_suite/gyre_in_mesa_rsg/make/makefile b/star/test_suite/gyre_in_mesa_rsg/make/makefile index 68451046a..da1cf8efd 100644 --- a/star/test_suite/gyre_in_mesa_rsg/make/makefile +++ b/star/test_suite/gyre_in_mesa_rsg/make/makefile @@ -2,7 +2,7 @@ include $(MESA_DIR)/utils/makefile_header -LOAD_MESA = $(LOAD_EXTRAS1) $(LOAD_MESA_STAR) $(LOAD_EXTRAS) +LOAD_MESA = $(LOAD_EXTRAS1) $(LOAD_MESA_STAR) $(LOAD_GYRE) $(LOAD_EXTRAS) ################################################################# @@ -18,7 +18,7 @@ WORK_SRC_DIR = $(WORK_DIR)/src STAR_JOB_DIR = $(MESA_DIR)/star/job $(STAR) : $(OBJS) - $(LOADER) $(FCopenmp) -o $(WORK_DIR)/$(STAR) $(OBJS) $(LOAD_MESA) -lgyre + $(LOADER) $(FCopenmp) -o $(WORK_DIR)/$(STAR) $(OBJS) $(LOAD_MESA) ################################################################# diff --git a/star/test_suite/gyre_in_mesa_rsg/src/run_star_extras.f90 b/star/test_suite/gyre_in_mesa_rsg/src/run_star_extras.f90 index 75dd314b6..b60405fdf 100644 --- a/star/test_suite/gyre_in_mesa_rsg/src/run_star_extras.f90 +++ b/star/test_suite/gyre_in_mesa_rsg/src/run_star_extras.f90 @@ -28,8 +28,9 @@ module run_star_extras use star_def use const_def use math_lib - use auto_diff - use gyre_lib + use auto_diff + + use gyre_mesa_m ! No implicit typing @@ -81,19 +82,19 @@ subroutine extras_startup(id, restart, ierr) ! Initialize GYRE - call gyre_init('gyre.in') + call init('gyre.in') ! Set constants - call gyre_set_constant('G_GRAVITY', standard_cgrav) - call gyre_set_constant('C_LIGHT', clight) - call gyre_set_constant('A_RADIATION', crad) + call set_constant('G_GRAVITY', standard_cgrav) + call set_constant('C_LIGHT', clight) + call set_constant('A_RADIATION', crad) - call gyre_set_constant('M_SUN', Msun) - call gyre_set_constant('R_SUN', Rsun) - call gyre_set_constant('L_SUN', Lsun) + call set_constant('M_SUN', Msun) + call set_constant('R_SUN', Rsun) + call set_constant('L_SUN', Lsun) - call gyre_set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') + call set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') end subroutine extras_startup @@ -140,7 +141,7 @@ subroutine extras_after_evolve(id, ierr) ! Finalize GYRE - call gyre_final() + call final() end subroutine extras_after_evolve diff --git a/star/test_suite/gyre_in_mesa_spb/make/makefile b/star/test_suite/gyre_in_mesa_spb/make/makefile index 68451046a..da1cf8efd 100644 --- a/star/test_suite/gyre_in_mesa_spb/make/makefile +++ b/star/test_suite/gyre_in_mesa_spb/make/makefile @@ -2,7 +2,7 @@ include $(MESA_DIR)/utils/makefile_header -LOAD_MESA = $(LOAD_EXTRAS1) $(LOAD_MESA_STAR) $(LOAD_EXTRAS) +LOAD_MESA = $(LOAD_EXTRAS1) $(LOAD_MESA_STAR) $(LOAD_GYRE) $(LOAD_EXTRAS) ################################################################# @@ -18,7 +18,7 @@ WORK_SRC_DIR = $(WORK_DIR)/src STAR_JOB_DIR = $(MESA_DIR)/star/job $(STAR) : $(OBJS) - $(LOADER) $(FCopenmp) -o $(WORK_DIR)/$(STAR) $(OBJS) $(LOAD_MESA) -lgyre + $(LOADER) $(FCopenmp) -o $(WORK_DIR)/$(STAR) $(OBJS) $(LOAD_MESA) ################################################################# diff --git a/star/test_suite/gyre_in_mesa_spb/src/run_star_extras.f90 b/star/test_suite/gyre_in_mesa_spb/src/run_star_extras.f90 index 75dd314b6..b60405fdf 100644 --- a/star/test_suite/gyre_in_mesa_spb/src/run_star_extras.f90 +++ b/star/test_suite/gyre_in_mesa_spb/src/run_star_extras.f90 @@ -28,8 +28,9 @@ module run_star_extras use star_def use const_def use math_lib - use auto_diff - use gyre_lib + use auto_diff + + use gyre_mesa_m ! No implicit typing @@ -81,19 +82,19 @@ subroutine extras_startup(id, restart, ierr) ! Initialize GYRE - call gyre_init('gyre.in') + call init('gyre.in') ! Set constants - call gyre_set_constant('G_GRAVITY', standard_cgrav) - call gyre_set_constant('C_LIGHT', clight) - call gyre_set_constant('A_RADIATION', crad) + call set_constant('G_GRAVITY', standard_cgrav) + call set_constant('C_LIGHT', clight) + call set_constant('A_RADIATION', crad) - call gyre_set_constant('M_SUN', Msun) - call gyre_set_constant('R_SUN', Rsun) - call gyre_set_constant('L_SUN', Lsun) + call set_constant('M_SUN', Msun) + call set_constant('R_SUN', Rsun) + call set_constant('L_SUN', Lsun) - call gyre_set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') + call set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') end subroutine extras_startup @@ -140,7 +141,7 @@ subroutine extras_after_evolve(id, ierr) ! Finalize GYRE - call gyre_final() + call final() end subroutine extras_after_evolve diff --git a/star/test_suite/gyre_in_mesa_wd/make/makefile b/star/test_suite/gyre_in_mesa_wd/make/makefile index 68451046a..da1cf8efd 100644 --- a/star/test_suite/gyre_in_mesa_wd/make/makefile +++ b/star/test_suite/gyre_in_mesa_wd/make/makefile @@ -2,7 +2,7 @@ include $(MESA_DIR)/utils/makefile_header -LOAD_MESA = $(LOAD_EXTRAS1) $(LOAD_MESA_STAR) $(LOAD_EXTRAS) +LOAD_MESA = $(LOAD_EXTRAS1) $(LOAD_MESA_STAR) $(LOAD_GYRE) $(LOAD_EXTRAS) ################################################################# @@ -18,7 +18,7 @@ WORK_SRC_DIR = $(WORK_DIR)/src STAR_JOB_DIR = $(MESA_DIR)/star/job $(STAR) : $(OBJS) - $(LOADER) $(FCopenmp) -o $(WORK_DIR)/$(STAR) $(OBJS) $(LOAD_MESA) -lgyre + $(LOADER) $(FCopenmp) -o $(WORK_DIR)/$(STAR) $(OBJS) $(LOAD_MESA) ################################################################# diff --git a/star/test_suite/gyre_in_mesa_wd/src/run_star_extras.f90 b/star/test_suite/gyre_in_mesa_wd/src/run_star_extras.f90 index 75dd314b6..b60405fdf 100644 --- a/star/test_suite/gyre_in_mesa_wd/src/run_star_extras.f90 +++ b/star/test_suite/gyre_in_mesa_wd/src/run_star_extras.f90 @@ -28,8 +28,9 @@ module run_star_extras use star_def use const_def use math_lib - use auto_diff - use gyre_lib + use auto_diff + + use gyre_mesa_m ! No implicit typing @@ -81,19 +82,19 @@ subroutine extras_startup(id, restart, ierr) ! Initialize GYRE - call gyre_init('gyre.in') + call init('gyre.in') ! Set constants - call gyre_set_constant('G_GRAVITY', standard_cgrav) - call gyre_set_constant('C_LIGHT', clight) - call gyre_set_constant('A_RADIATION', crad) + call set_constant('G_GRAVITY', standard_cgrav) + call set_constant('C_LIGHT', clight) + call set_constant('A_RADIATION', crad) - call gyre_set_constant('M_SUN', Msun) - call gyre_set_constant('R_SUN', Rsun) - call gyre_set_constant('L_SUN', Lsun) + call set_constant('M_SUN', Msun) + call set_constant('R_SUN', Rsun) + call set_constant('L_SUN', Lsun) - call gyre_set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') + call set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') end subroutine extras_startup @@ -140,7 +141,7 @@ subroutine extras_after_evolve(id, ierr) ! Finalize GYRE - call gyre_final() + call final() end subroutine extras_after_evolve diff --git a/star/test_suite/hb_2M/README.rst b/star/test_suite/hb_2M/README.rst index 4845237cd..9937d465f 100644 --- a/star/test_suite/hb_2M/README.rst +++ b/star/test_suite/hb_2M/README.rst @@ -33,7 +33,7 @@ Then we specify the output. We save the final model, which will be the starting :end-before: initial_zfracs = 6 Next, we specify the initial composition. There is no consensus yet on which is "the best" solar composition. By default, the initial composition in MESA is ``initial_zfracs = 3`` which corresponds to the `GS98 `__ metal fraction. Here we want to use the more recent available solar composition given in `AGSS09 `__ , therefore we set ``initial_zfracs = 6``. -Since it is very important to use the opacity tables which are built using the solar composition we use, we also have to set the ``kappa_file_prefix`` to the 2009 solar composition (the default table corresponds to the gs98 composition). +Since it is very important to use the opacity tables which are built using the solar composition we use, we also have to set the ``kap_file_prefix`` to the 2009 solar composition (the default table corresponds to the gs98 composition). .. literalinclude:: ../../../star/test_suite/hb_2M/inlist_to_TAMS :start-after: history_columns_file = 'history_columns.list' @@ -43,7 +43,7 @@ We also have to choose a network of nuclear reactions. This network should be ch Here we want to use a nuclear reactions network, called ``pp_and_cno_extras.net``, which provides a more complete coverage for hydrogen and helium burning. .. literalinclude:: ../../../star/test_suite/hb_2M/inlist_to_TAMS - :start-after: kappa_file_prefix = 'a09' + :start-after: kap_file_prefix = 'a09' :end-before: / We do not specify anything about the eos, which means we use the default one. @@ -60,14 +60,14 @@ The energy equation can be written in the dLdm or the dedt form in MESA (see `ME Next we specify the starting model, i.e., its initial mass, metallicity, and helium mass fraction. Here we only specify M and Z; the helium content is by default 0.24 + 2Z. .. literalinclude:: ../../../star/test_suite/hb_2M/inlist_to_TAMS - :start-after: use_dedt - :end-before: opacity + :start-at: initial_mass + :end-at: initial_z -Because we will evolve the star through core helium burning, we want to use the Type2 opacities because they take into account extra C/O, important for this stage of stellar evolution. As explained in the controls_default file, when using Type 2 opacities you need to specify a base metallicity ``Z_base`` which gives the metal abundances previous to any CO enhancement. +Because we will evolve the star through core helium burning, we want to use the Type2 opacities because they take into account extra C/O, important for this stage of stellar evolution. As explained in the controls_default file, when using Type 2 opacities you need to specify a base metallicity ``Zbase`` which gives the metal abundances previous to any CO enhancement. .. literalinclude:: ../../../star/test_suite/hb_2M/inlist_to_TAMS - :start-after: opacity controls - :end-before: mixing + :start-at: kap + :end-at: ! end of kap namelist We now specify the non-default mixing parameters we want to use. We will use the `Henyey theory of convection `__ with ``mixing_length_alpha=1.8``. We will use the Ledoux criterion and the "predictive mixing" scheme described in `MESAIV `__ to find the convective boundaries at the core and at the surface. @@ -143,8 +143,8 @@ We use the same mixing controls as for the PMS-to-TAMS part of the evolution. We use the ``HB_limit`` control to find the beginning of the Horizontal Branch (our ZACheB model). .. literalinclude:: ../../../star/test_suite/hb_2M/inlist_to_ZACHeB - :start-after: threshold_for_smooth_brunt_B = 0.1 - :end-before: max_ + :start-at: HB_limit + :end-at: HB_limit .. warning:: It is sometimes useful to specify a maximum number of models to avoid running out of space on your drive with runaway runs! Here we specify ``max_model_number = 25000`` @@ -203,7 +203,7 @@ We specify the output. Here we use the default LOG directory, so we do not speci .. literalinclude:: ../../../star/test_suite/hb_2M/inlist_hb_2M :start-after: output controls - :end-before: !num_trace_history_values = 2 + :end-before: num_trace_history_values = 2 diff --git a/star/test_suite/hb_2M/inlist_hb_2M b/star/test_suite/hb_2M/inlist_hb_2M index 8f4aad55d..47958ec4f 100644 --- a/star/test_suite/hb_2M/inlist_hb_2M +++ b/star/test_suite/hb_2M/inlist_hb_2M @@ -90,7 +90,6 @@ terminal_interval = 10 write_header_frequency = 10 - num_trace_history_values = 2 trace_history_value_name(1) = 'rel_E_err' trace_history_value_name(2) = 'log_rel_run_E_err' diff --git a/star/test_suite/high_mass/README.rst b/star/test_suite/high_mass/README.rst index 0c1fcf2cb..5e13c2cb8 100644 --- a/star/test_suite/high_mass/README.rst +++ b/star/test_suite/high_mass/README.rst @@ -4,91 +4,25 @@ high_mass ********* -This test case checks the evolution of a 300 Msun, Z = 1e-4 metallicity, model through core hydrogen depletion. +This test case checks the evolution of a 300 |Msun|, Z = 1e-4 metallicity, model through core hydrogen depletion. This test case has 1 part. Click to see a larger version of a plot. -* Part 1 (``inlist_high_mass``) loads a 300 Msun, Z=1e-4 metallicity, zero-age main squence model and evolves it until the central hydrogen mass fraction drops belw 0.05: +* Part 1 (``inlist_high_mass``) loads a 300 |Msun|, Z=1e-4 metallicity, zero-age main sequence model and evolves it until the central hydrogen mass fraction drops belw 0.05: .. image:: ../../../star/test_suite/high_mass/docs/abund_000488.svg - :scale: 100% + :width: 100% .. image:: ../../../star/test_suite/high_mass/docs/hr000488.svg - :scale: 100% - + :width: 100% pgstar commands used for the plots above: - -.. code-block:: console - - &pgstar - - file_white_on_black_flag = .true. ! white_on_black flags -- true means white foreground color on black background - !file_device = 'png' ! png - !file_extension = 'png' - - file_device = 'vcps' ! postscript - file_extension = 'ps' - - pgstar_interval = 10 - - HR_win_flag = .true. - HR_win_width = 12 - HR_win_aspect_ratio = 1.2 ! aspect_ratio = height/width - HR_title = 'inlist_high_mass' - - HR_logT_min = 4.5 - HR_logT_max = 5.0 - HR_logL_min = 6.6 - HR_logL_max = 7.2 - - HR_file_flag = .true. - HR_file_dir = 'pgstar_out' - HR_file_prefix = 'hr' - HR_file_interval = 100 ! output when mod(model_number,HR_file_interval)==0 - HR_file_width = 15 ! negative means use same value as for window - HR_file_aspect_ratio = -1 ! negative means use same value as for window - - - Abundance_win_flag = .true. - Abundance_win_width = 12 - Abundance_win_aspect_ratio = 1.2 - Abundance_title = 'inlist_high_mass' - - Abundance_num_isos_to_show = 7 - Abundance_which_isos_to_show(1) = 'h1' - Abundance_which_isos_to_show(2) = 'he3' - Abundance_which_isos_to_show(3) = 'he4' - Abundance_which_isos_to_show(4) = 'c12' - Abundance_which_isos_to_show(5) = 'n14' - Abundance_which_isos_to_show(6) = 'o16' - Abundance_which_isos_to_show(7) = 'ne20' - - num_abundance_line_labels = 4 - Abundance_line_txt_scale_factor = 1.1 - Abundance_legend_max_cnt = 0 - Abundance_legend_txt_scale_factor = 1.0 - - Abundance_xaxis_name = 'mass' - Abundance_xaxis_reversed = .false. - Abundance_xmin = 0.0 - Abundance_xmax = -101d0 - - Abundance_log_mass_frac_min = -6.0 - Abundance_log_mass_frac_max = 0.3 - - Abundance_file_flag = .true. - Abundance_file_dir = 'pgstar_out' - Abundance_file_prefix = 'abund_' - Abundance_file_interval = 100 ! output when mod(model_number,HR_file_interval)==0 - Abundance_file_width = -1 ! (inches) negative means use same value as for window - Abundance_file_aspect_ratio = -1 ! negative means use same value as for window - - / ! end of pgstar namelist +.. literalinclude:: ../../../star/test_suite/high_mass/inlist_pgstar + :language: console Last-Updated: 12Jun2021 (MESA 5be9e57) by fxt. - +Last-Updated: 17Jul2024 (MESA beef2c3b) by pmocz on C916PXT6XW in 67 seconds using 8 threads. diff --git a/star/test_suite/high_mass/docs/abund_000488.svg b/star/test_suite/high_mass/docs/abund_000488.svg index 39fea33da..65396e0e2 100644 --- a/star/test_suite/high_mass/docs/abund_000488.svg +++ b/star/test_suite/high_mass/docs/abund_000488.svg @@ -1,404 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/star/test_suite/high_mass/docs/hr000488.svg b/star/test_suite/high_mass/docs/hr000488.svg index ca24d55c0..7d6082ff1 100644 --- a/star/test_suite/high_mass/docs/hr000488.svg +++ b/star/test_suite/high_mass/docs/hr000488.svg @@ -1,183 +1 @@ - - - - - - - - - - - - - + \ No newline at end of file diff --git a/star/test_suite/high_mass/inlist_high_mass b/star/test_suite/high_mass/inlist_high_mass index 1154c24a5..22a5665d5 100644 --- a/star/test_suite/high_mass/inlist_high_mass +++ b/star/test_suite/high_mass/inlist_high_mass @@ -1,16 +1,19 @@ - &star_job - show_log_description_at_start = .false. - - load_saved_model = .true. - load_model_filename = 'zams.mod' ! from make_zams_ultra_high_mass, 13830. - save_model_when_terminate = .true. - save_model_filename = 'final.mod' - required_termination_code_string = 'xa_central_lower_limit' + show_log_description_at_start = .false. + + load_saved_model = .true. + load_model_filename = 'zams.mod' ! from make_zams_ultra_high_mass, 13830. + + save_model_when_terminate = .true. + save_model_filename = 'final.mod' + required_termination_code_string = 'xa_central_lower_limit' + + set_initial_cumulative_energy_error = .true. + new_cumulative_energy_error = 0d0 - set_initial_cumulative_energy_error = .true. - new_cumulative_energy_error = 0d0 + pgstar_flag = .true. + save_pgstar_files_when_terminate = .true. / ! end of star_job namelist @@ -18,53 +21,49 @@ / &kap - Zbase = 1d-5 + Zbase = 1d-5 / ! end of kap namelist &controls - energy_eqn_option = 'dedt' - - num_trace_history_values = 2 - trace_history_value_name(1) = 'rel_E_err' - trace_history_value_name(2) = 'log_rel_run_E_err' - - ! limit max_model_number as part of test_suite - max_model_number = 1550 - use_gold2_tolerances = .true. - - initial_mass = 300 - initial_z = 1d-5 - - mixing_length_alpha = 2 - - conv_core_gap_dq_limit = 0.1 - - xa_central_lower_limit_species(1) = 'h1' - xa_central_lower_limit(1) = 0.05 - - overshoot_scheme(1) = 'exponential' - overshoot_zone_type(1) = 'nonburn' - overshoot_zone_loc(1) = 'shell' - overshoot_bdy_loc(1) = 'bottom' - overshoot_f(1) = 0.128 - overshoot_f0(1) = 0.100 - - overshoot_scheme(2) = 'exponential' - overshoot_zone_type(2) = 'any' - overshoot_zone_loc(2) = 'any' - overshoot_bdy_loc(2) = 'any' - overshoot_f(2) = 0.014 - overshoot_f0(2) = 0.004 - - - - photo_interval = 50 - profile_interval = 100 - history_interval = 10 - terminal_interval = 10 - write_header_frequency = 100 + energy_eqn_option = 'dedt' + num_trace_history_values = 2 + trace_history_value_name(1) = 'rel_E_err' + trace_history_value_name(2) = 'log_rel_run_E_err' -/ ! end of controls namelist + ! limit max_model_number as part of test_suite + max_model_number = 1550 + use_gold2_tolerances = .true. + + initial_mass = 300 + initial_z = 1d-5 + + mixing_length_alpha = 2 + conv_core_gap_dq_limit = 0.1 + + xa_central_lower_limit_species(1) = 'h1' + xa_central_lower_limit(1) = 0.05 + + overshoot_scheme(1) = 'exponential' + overshoot_zone_type(1) = 'nonburn' + overshoot_zone_loc(1) = 'shell' + overshoot_bdy_loc(1) = 'bottom' + overshoot_f(1) = 0.128 + overshoot_f0(1) = 0.100 + + overshoot_scheme(2) = 'exponential' + overshoot_zone_type(2) = 'any' + overshoot_zone_loc(2) = 'any' + overshoot_bdy_loc(2) = 'any' + overshoot_f(2) = 0.014 + overshoot_f0(2) = 0.004 + + photo_interval = 50 + profile_interval = 100 + history_interval = 10 + terminal_interval = 10 + write_header_frequency = 100 + +/ ! end of controls namelist diff --git a/star/test_suite/high_mass/inlist_high_mass_header b/star/test_suite/high_mass/inlist_high_mass_header index 4557f7b6a..0eaa542f3 100644 --- a/star/test_suite/high_mass/inlist_high_mass_header +++ b/star/test_suite/high_mass/inlist_high_mass_header @@ -1,41 +1,38 @@ - &star_job - - read_extra_star_job_inlist(2) = .true. - extra_star_job_inlist_name(2) = 'inlist_high_mass' + read_extra_star_job_inlist(2) = .true. + extra_star_job_inlist_name(2) = 'inlist_high_mass' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_high_mass' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_high_mass' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_high_mass' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_high_mass' / ! end of kap namelist - &controls - read_extra_controls_inlist(1) = .true. - extra_controls_inlist_name(1)= 'inlist_high_mass' + read_extra_controls_inlist(1) = .true. + extra_controls_inlist_name(1)= 'inlist_high_mass' / ! end of controls namelist &pgstar - read_extra_pgstar_inlist(1) = .true. - extra_pgstar_inlist_name(1)= 'inlist_high_mass' + read_extra_pgstar_inlist(1) = .true. + extra_pgstar_inlist_name(1)= 'inlist_pgstar' / ! end of pgstar namelist diff --git a/star/test_suite/high_mass/inlist_pgstar b/star/test_suite/high_mass/inlist_pgstar new file mode 100644 index 000000000..ecf511d13 --- /dev/null +++ b/star/test_suite/high_mass/inlist_pgstar @@ -0,0 +1,65 @@ +&pgstar + + ! device + file_white_on_black_flag = .true. + file_device = 'vcps' ! postscript + file_extension = 'ps' + !file_device = 'png' ! png + !file_extension = 'png' + + pgstar_interval = 10 + + HR_win_flag = .false. ! set to .true. for on-the-fly plotting + HR_file_flag = .true. + HR_file_dir = 'pgstar_out' + HR_file_prefix = 'hr' + + HR_win_width = 12 + HR_win_aspect_ratio = 1.0d0 ! aspect_ratio = height/width + HR_title = 'inlist_high_mass' + + HR_logT_min = 4.5 + HR_logT_max = 5.0 + HR_logL_min = 6.6 + HR_logL_max = 7.2 + + HR_file_interval = 100 ! output when mod(model_number,HR_file_interval)==0 + HR_file_width = -1 ! negative means use same value as for window + HR_file_aspect_ratio = -1 ! negative means use same value as for window + + Abundance_win_flag = .false. ! set to .true. for on-the-fly plotting + Abundance_file_flag = .true. + Abundance_file_dir = 'pgstar_out' + Abundance_file_prefix = 'abund_' + + Abundance_win_width = 12 + Abundance_win_aspect_ratio = 1.0d0 + Abundance_title = 'inlist_high_mass' + + Abundance_num_isos_to_show = 7 + Abundance_which_isos_to_show(1) = 'h1' + Abundance_which_isos_to_show(2) = 'he3' + Abundance_which_isos_to_show(3) = 'he4' + Abundance_which_isos_to_show(4) = 'c12' + Abundance_which_isos_to_show(5) = 'n14' + Abundance_which_isos_to_show(6) = 'o16' + Abundance_which_isos_to_show(7) = 'ne20' + + num_abundance_line_labels = 4 + Abundance_line_txt_scale_factor = 1.1 + Abundance_legend_max_cnt = 0 + Abundance_legend_txt_scale_factor = 1.0 + + Abundance_xaxis_name = 'mass' + Abundance_xaxis_reversed = .false. + Abundance_xmin = 0.0 + Abundance_xmax = -101d0 + + Abundance_log_mass_frac_min = -6.0 + Abundance_log_mass_frac_max = 0.3 + + Abundance_file_interval = 100 ! output when mod(model_number,HR_file_interval)==0 + Abundance_file_width = -1 ! (inches) negative means use same value as for window + Abundance_file_aspect_ratio = -1 ! negative means use same value as for window + +/ ! end of pgstar namelist diff --git a/star/test_suite/high_z/README.rst b/star/test_suite/high_z/README.rst index 1b13def1a..6e1348e44 100644 --- a/star/test_suite/high_z/README.rst +++ b/star/test_suite/high_z/README.rst @@ -13,10 +13,10 @@ This test case has 2 parts. Click to see a larger version of a plot. * Part 2 (``inlist_high_z``) continues the evolution until the central helium mass fraction drops below 1e-6: .. image:: ../../../star/test_suite/high_z/docs/hr000438.svg - :scale: 100% + :width: 100% .. image:: ../../../star/test_suite/high_z/docs/kipp000438.svg - :scale: 100% + :width: 100% diff --git a/star/test_suite/hot_cool_wind/README.rst b/star/test_suite/hot_cool_wind/README.rst index 3b8a10b0c..df3a751c0 100644 --- a/star/test_suite/hot_cool_wind/README.rst +++ b/star/test_suite/hot_cool_wind/README.rst @@ -11,10 +11,10 @@ This test case has 1 parts. Click to see a larger version of a plot. * Part 1 (``inlist_hot_cool_wind``) loads a 7 Msun, Z=0.02 metallicity, main sequence model. A Reimers_scaling_factor = 1 cool wind above Teff = 8000 K and a Vink_scaling_factor = 1 hot wind above 12,000 K is enabled and the model evolves until the central helium mass fraction drops below 1e-6. At this point the mass is 6.75 Msun: .. image:: ../../../star/test_suite/hot_cool_wind/docs/kipp000527.svg - :scale: 100% + :width: 100% .. image:: ../../../star/test_suite/hot_cool_wind/docs/hr000527.svg - :scale: 100% + :width: 100% diff --git a/star/test_suite/hse_riemann/README.rst b/star/test_suite/hse_riemann/README.rst index 4846ef950..9dbc1d90b 100644 --- a/star/test_suite/hse_riemann/README.rst +++ b/star/test_suite/hse_riemann/README.rst @@ -8,7 +8,7 @@ This test case checks Riemann HLLC solver can hold an envelope model in hydrosta This test case has 1 parts. Click to see a larger version of a plot. -* Part 1 (``inlist_finish``) loads a model containing the envelope from a 12 msun model with its core excised. The model is then evolved for 1e5 s, and the ``run_star_extras.f90`` then checks that the peak mach number is less than 0.1. This is an example of a null test; if the Riemann HLLC solver is working, then the profiles should remain static and the peak mach number should be small: +* Part 1 (``inlist_finish``) loads a model containing the envelope from a 12 Msun model with its core excised. The model is then evolved for 1e5 s, and the ``run_star_extras.f90`` then checks that the peak mach number is less than 0.1. This is an example of a null test; if the Riemann HLLC solver is working, then the profiles should remain static and the peak mach number should be small: .. raw:: html diff --git a/star/test_suite/irradiated_planet/README.rst b/star/test_suite/irradiated_planet/README.rst index bb956d76f..09d155a04 100644 --- a/star/test_suite/irradiated_planet/README.rst +++ b/star/test_suite/irradiated_planet/README.rst @@ -11,12 +11,12 @@ This test case has 2 parts. Click to see a larger version of a plot. * Part 1 (``inlist_create``) loads a 1 Mjup model, relaxes the surface to an optical depth of 10, irradiates the surface with a flux of 1e7 erg cm :sup:`-2` s :sup:`-1` to a column depth of 1 g cm :sup:`-2`, and terminates when the inflated envelope reaches a surface pressure of log10 (P/(erg cm :sup:`-3`)) = 6.0 (about 1 bar): .. image:: ../../../star/test_suite/irradiated_planet/docs/pres_000084.svg - :scale: 100% + :width: 100% * Part 2 (``inlist_evolves``) continues the evolution, without irradiation, for 15 Gyr. The irradiated planet model cools and shrinks with time: .. image:: ../../../star/test_suite/irradiated_planet/docs/track1_000127.svg - :scale: 100% + :width: 100% diff --git a/star/test_suite/low_z/README.rst b/star/test_suite/low_z/README.rst index a4972d7c2..61501c67c 100644 --- a/star/test_suite/low_z/README.rst +++ b/star/test_suite/low_z/README.rst @@ -13,10 +13,10 @@ This test case has 2 parts. Click to see a larger version of a plot. * Part 2 (``inlist_low_z``) continues the evolution until the mass fraction of hydrogen is less than 1e-6. A novelty of this inlist is exercising the custom opacity table controls desscribed at :ref:`kap/defaults:kap module controls`. .. image:: ../../../star/test_suite/low_z/docs/kip000335.svg - :scale: 100% + :width: 100% .. image:: ../../../star/test_suite/low_z/docs/hr000335.svg - :scale: 100% + :width: 100% diff --git a/star/test_suite/make_brown_dwarf/README.rst b/star/test_suite/make_brown_dwarf/README.rst index 5ad1a556e..27910a290 100644 --- a/star/test_suite/make_brown_dwarf/README.rst +++ b/star/test_suite/make_brown_dwarf/README.rst @@ -11,7 +11,7 @@ This test case has 1 part. Click to see a larger version of a plot. * Part 1 (``inlist_make_brown_dwarf``) creates a 1.05 Mjup, Z=1e-4 metallicity model, using the less frequently deployed ``create_initial_model`` capability, and evolves the brown drawf model for 20 billion years. .. image:: ../../../star/test_suite/make_brown_dwarf/docs/grid1_000237.svg - :scale: 100% + :width: 100% pgstar commands used for the plots above: diff --git a/star/test_suite/make_co_wd/inlist_remove_env b/star/test_suite/make_co_wd/inlist_remove_env index d67526e97..c7c805edc 100644 --- a/star/test_suite/make_co_wd/inlist_remove_env +++ b/star/test_suite/make_co_wd/inlist_remove_env @@ -13,7 +13,7 @@ ! the envelope on the AGB timescale_for_relax_entropy = 1d-5 max_dt_for_relax_entropy = 1d-6 - num_timescales_for_relax_entropy = 30 + num_timescales_for_relax_entropy = 50 max_steps_to_relax_entropy = 10000 remove_surface_by_relax_to_star_cut = .true. diff --git a/star/test_suite/make_env/README.rst b/star/test_suite/make_env/README.rst index ef187d182..678e3cc1f 100644 --- a/star/test_suite/make_env/README.rst +++ b/star/test_suite/make_env/README.rst @@ -11,7 +11,7 @@ This test case has 1 part. Click to see a larger version of a plot. * Part 1 (``inlist_env_header``) first creates an initial neutron star envelope through its significant ``run_star_extras.f90`` and saves the result as ``start.mod``. This initial model is then loaded and the evolution begins. The envelope should remain stable - no changes in the thermodynamic or structure profiles - over the 10 million year evolution. .. image:: ../../../star/test_suite/make_env/docs/profile1_000172.svg - :scale: 100% + :width: 100% pgstar commands used for the plots above: diff --git a/star/test_suite/make_he_wd/README.rst b/star/test_suite/make_he_wd/README.rst index cd96b81db..6759f8cd8 100644 --- a/star/test_suite/make_he_wd/README.rst +++ b/star/test_suite/make_he_wd/README.rst @@ -11,18 +11,18 @@ This test case has 3 parts. Click to see a larger version of a plot. * Part 1 (``inlist_to_he_core``) creates a 1.5 Msun, Z=0.01 metallicity, pre-main sequence model and evolves the model until the helium core reaches 0.15 Msun: .. image:: ../../../star/test_suite/make_he_wd/docs/abund_000515.svg - :scale: 100% + :width: 100% -* Part 2 (``inlist_remove_envelope``) relaxes the model to a new mass of 0.15 Msun, sheddind the outer 1.35 Msun with a wind whose maximum mass loss rate is 1e-5 Msun/yr, and then evolving the hot He white dwarf for 100 million years: +* Part 2 (``inlist_remove_envelope``) relaxes the model to a new mass of 0.15 Msun, shedding the outer 1.35 Msun with a wind whose maximum mass loss rate is 1e-5 Msun/yr, and then evolving the hot He white dwarf for 100 million years: .. image:: ../../../star/test_suite/make_he_wd/docs/abund_000119.svg - :scale: 100% + :width: 100% * Part 3 (``inlist_evolve``) continues the evolution as the 0.15 Msun helium white dwarf model slides down a white dwarf cooling track for 10 billion years: .. image:: ../../../star/test_suite/make_he_wd/docs/hr000195.svg - :scale: 100% + :width: 100% pgstar commands used for the plots above: diff --git a/star/test_suite/make_metals/README.rst b/star/test_suite/make_metals/README.rst index 353497236..ad532207d 100644 --- a/star/test_suite/make_metals/README.rst +++ b/star/test_suite/make_metals/README.rst @@ -11,17 +11,17 @@ This test case has 1 part. Click to see a larger version of a plot. * Part 1 (``inlist_make_metals``) creates a metal-free 3 Msun pre-main sequence model, and evolves the initial pure hydrogen + helium model until the central helium mass fraction drops below 1e-4 : .. image:: ../../../star/test_suite/make_metals/docs/abund_000516.svg - :scale: 100% + :width: 100% The core gets hot enough to make its own carbon from the triple-alpha reaction: .. image:: ../../../star/test_suite/make_metals/docs/trhoc_000516.svg - :scale: 100% + :width: 100% Which makes for an interesting journey in the HR diagram: .. image:: ../../../star/test_suite/make_metals/docs/hr_000516.svg - :scale: 100% + :width: 100% pgstar commands used for the plots above: diff --git a/star/test_suite/make_planets/README.rst b/star/test_suite/make_planets/README.rst index 21dea7526..334ee6e04 100644 --- a/star/test_suite/make_planets/README.rst +++ b/star/test_suite/make_planets/README.rst @@ -11,19 +11,19 @@ This test case has 3 part. Click to see a larger version of a plot. * Part 1 (``inlist_create``) creates a 0.9685 Mjup, 2.0 Rjup, Z=0.02 metallicity, Y=0.24 helium mass fraction initial model which is evolved for 50 years. .. image:: ../../../star/test_suite/make_planets/docs/trho_000026.svg - :scale: 100% + :width: 100% * Part 2 (``inlist_core``) adds a 10 Mearth core with a density of 10 g cm\ :sup:`-3` and then further evolves the model for 2000 years. .. image:: ../../../star/test_suite/make_planets/docs/trho_000076.svg - :scale: 100% + :width: 100% * Part 3 (``inlist_evolve``) continuously deposits a flux of 5.5e8 erg cm\ :sup:`-2` s\ :sup:`-1` at a column depth of 300 cmcm\ :sup:`2` g cm\ :sup:`-3` and evolves the model for 10 billion years: 555501654.562d0 ! 1.d9 erg/cm^2/s .. image:: ../../../star/test_suite/make_planets/docs/trho_000118.svg - :scale: 100% + :width: 100% pgstar commands used for the plots above: diff --git a/star/test_suite/make_sdb/README.rst b/star/test_suite/make_sdb/README.rst index d09f17f58..d4149cc8d 100644 --- a/star/test_suite/make_sdb/README.rst +++ b/star/test_suite/make_sdb/README.rst @@ -11,7 +11,7 @@ This test case has 1 part. Click to see a larger version of a plot. * Part 1 (``inlist_make_sdb``) first loads a prebuilt helium core model ``start_core_he_burn.mod`` that comes from the :ref:`1M_pre_ms_to_wd` test case (specifically ``inlist_to_end_core_he_burn`` is modified to stop when the mass fraction of helium dropes below 0.95). Then the hydrogen envelope is removed with ``relax_initial_mass_to_remove_H_env = .true.`` as a model for a common envelope event removal of the envelope. The model is then evolved until the mass fraction of carbon rises above 0.05 : .. image:: ../../../star/test_suite/make_sdb/docs/grid_000064.svg - :scale: 100% + :width: 100% pgstar commands used for the plot above: diff --git a/star/test_suite/make_zams/README.rst b/star/test_suite/make_zams/README.rst index b35badcae..38d225508 100644 --- a/star/test_suite/make_zams/README.rst +++ b/star/test_suite/make_zams/README.rst @@ -11,160 +11,17 @@ This test case has 1 part. Click to see a larger version of a plot. * Part 1 (``inlist_zams``) creates a 4 Msun, Z = 0.01 metallicity, pre-main sequence model and evolves the model to the zero age main sequence, terminating when Lnuc / L = 0.9. .. image:: ../../../star/test_suite/make_zams/docs/grid_000192.svg - :scale: 100% + :width: 100% pgstar commands used for the plot above: -.. code-block:: console - - &pgstar - - file_white_on_black_flag = .true. ! white_on_black flags -- true means white foreground color on black background - !file_device = 'png' ! png - !file_extension = 'png' - - file_device = 'vcps' ! postscript - file_extension = 'ps' - - pgstar_interval = 10 - - Abundance_win_flag = .false. - Abundance_win_width = 15 - Abundance_win_aspect_ratio = 0.75 - - Abundance_title = '' - Abundance_num_isos_to_show = 6 - - Abundance_which_isos_to_show(1) = 'h1' - Abundance_which_isos_to_show(2) = 'he3' - Abundance_which_isos_to_show(3) = 'he4' - Abundance_which_isos_to_show(4) = 'c12' - Abundance_which_isos_to_show(5) = 'n14' - Abundance_which_isos_to_show(6) = 'o16' - - num_abundance_line_labels = 4 - Abundance_line_txt_scale_factor = 1.0 - Abundance_legend_max_cnt = 0 - - Abundance_xaxis_name = 'mass' - Abundance_xaxis_reversed = .false. - Abundance_xmin = 0.0 - Abundance_xmax = 1.0 - - Abundance_log_mass_frac_min = -3.0 - Abundance_log_mass_frac_max = 0.3 - - - HR_win_flag = .false. - HR_win_width = 12 - HR_win_aspect_ratio = 1.2 ! aspect_ratio = height/width - HR_title = '' - - HR_logT_min = 3.5 - HR_logT_max = 4.5 - HR_logL_min = 1.0 - HR_logL_max = 3.0 - - - Text_Summary1_win_flag = .false. - Text_Summary1_win_width = 10 - Text_Summary1_win_aspect_ratio = 0.15 - - Text_Summary1_xleft = 0.01 - Text_Summary1_xright = 0.99 - Text_Summary1_ybot = 0.0 - Text_Summary1_ytop = 1.0 - Text_Summary1_txt_scale = 1.0 - - Text_Summary1_num_rows = 1 ! <= 20 - Text_Summary1_num_cols = 3 ! <= 20 - Text_Summary1_name(:,:) = '' - - Text_Summary1_name(1,1) = 'star_mass' - Text_Summary1_name(1,2) = 'log_LH' - Text_Summary1_name(1,3) = 'num_zones' - - Grid1_title = 'make_zams' - Grid1_win_flag = .true. - Grid1_win_width = 15 - Grid1_win_aspect_ratio = 0.6 - - Grid1_plot_name(:) = '' - Grid1_plot_row(:) = 1 ! number from 1 at top - Grid1_plot_rowspan(:) = 1 ! plot spans this number of rows - Grid1_plot_col(:) = 1 ! number from 1 at left - Grid1_plot_colspan(:) = 1 ! plot spans this number of columns - Grid1_plot_pad_left(:) = 0.0 ! fraction of full window width for padding on left - Grid1_plot_pad_right(:) = 0.0 ! fraction of full window width for padding on right - Grid1_plot_pad_top(:) = 0.0 ! fraction of full window height for padding at top - Grid1_plot_pad_bot(:) = 0.0 ! fraction of full window height for padding at bottom - Grid1_txt_scale_factor(:) = 0.7 ! multiply txt_scale for subplot by this - - Grid1_num_cols = 6 ! divide plotting region into this many equal width cols - Grid1_num_rows = 2 ! divide plotting region into this many equal height rows - Grid1_num_plots = 10 ! <= 10 - - pgstar_show_model_number = .true. - pgstar_model_scale = 1.0 - pgstar_model_lw = 3 - pgstar_model_disp = 2.0 - pgstar_model_coord = 0.92 - pgstar_model_fjust = 1.0 - - pgstar_show_age = .true. - pgstar_age_scale = 1.0 - pgstar_age_lw = 3 - pgstar_age_disp = 2.0 - pgstar_age_coord = -0.10 - pgstar_age_fjust = 0.0 - - Grid1_plot_name(1) = 'Text_Summary1' - Grid1_plot_row(1) = 1 ! number from 1 at top - Grid1_plot_rowspan(1) = 1 ! plot spans this number of rows - Grid1_plot_col(1) = 1 ! number from 1 at left - Grid1_plot_colspan(1) = 6 ! plot spans this number of columns - - Grid1_plot_pad_left(1) = -0.06 ! fraction of full window width for padding on left - Grid1_plot_pad_right(1) = 0.05 ! fraction of full window width for padding on right - Grid1_plot_pad_top(1) = -0.02 ! fraction of full window height for padding at top - Grid1_plot_pad_bot(1) = 0.39 ! fraction of full window height for padding at bottom - Grid1_txt_scale_factor(1) = 1.2 ! multiply txt_scale for subplot by this - - - Grid1_plot_name(2) = 'Abundance' - Grid1_plot_row(2) = 1 ! number from 1 at top - Grid1_plot_rowspan(2) = 2 ! plot spans this number of rows - Grid1_plot_col(2) = 1 ! number from 1 at left - Grid1_plot_colspan(2) = 3 ! plot spans this number of columns - - Grid1_plot_pad_left(2) = -0.05 ! fraction of full window width for padding on left - Grid1_plot_pad_right(2) = 0.10 ! fraction of full window width for padding on right - Grid1_plot_pad_top(2) = 0.03 ! fraction of full window height for padding at top - Grid1_plot_pad_bot(2) = 0.03 ! fraction of full window height for padding at bottom - Grid1_txt_scale_factor(2) = 0.7 ! multiply txt_scale for subplot by this - - - Grid1_plot_name(3) = 'HR' - Grid1_plot_row(3) = 1 ! number from 1 at top - Grid1_plot_rowspan(3) = 2 ! plot spans this number of rows - Grid1_plot_col(3) = 5 ! Number from 1 at left - Grid1_plot_colspan(3) = 3 ! plot spans this number of columns - - Grid1_plot_pad_left(3) = -0.15 ! fraction of full window width for padding on left - Grid1_plot_pad_right(3) = 0.20 ! fraction of full window width for padding on right - Grid1_plot_pad_top(3) = 0.03 ! fraction of full window height for padding at top - Grid1_plot_pad_bot(3) = 0.03 ! fraction of full window height for padding at bottom - Grid1_txt_scale_factor(3) = 0.7 ! multiply txt_scale for subplot by this - - - Grid1_file_flag = .true. - Grid1_file_dir = 'pgstar_out' - Grid1_file_prefix = 'grid_' - Grid1_file_interval = 10000 - Grid1_file_width = -1 ! (inches) negative means use same value as for window - - / ! end of pgstar namelist +.. literalinclude:: ../../../star/test_suite/make_zams/inlist_zams + :language: console + :start-at: &pgstar + :end-at: ! end of pgstar namelist Last-Updated: 20Jun2021 (MESA e2acbc2) by fxt. + +Last-Run: 06Aug2024 (MESA 76b223b5) by aurimontem on MWKMFHK9LH in 65 seconds using 8 threads. diff --git a/star/test_suite/make_zams/docs/grid_000192.svg b/star/test_suite/make_zams/docs/grid_000192.svg index 27c9e4408..f9378b4e7 100644 --- a/star/test_suite/make_zams/docs/grid_000192.svg +++ b/star/test_suite/make_zams/docs/grid_000192.svg @@ -1,476 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/star/test_suite/make_zams/inlist_zams b/star/test_suite/make_zams/inlist_zams index 0061b07db..037803e28 100644 --- a/star/test_suite/make_zams/inlist_zams +++ b/star/test_suite/make_zams/inlist_zams @@ -10,6 +10,9 @@ save_model_filename = 'zams.mod' required_termination_code_string = 'Lnuc_div_L_zams_limit' + pgstar_flag = .true. + save_pgstar_files_when_terminate = .true. + / ! end of star_job namelist &eos @@ -18,7 +21,6 @@ &kap Zbase = 0.01d0 - kap_file_prefix = 'gs98' / ! end of kap namelist @@ -46,3 +48,147 @@ / ! end of controls namelist +&pgstar + + + file_device = 'vcps' ! postscript + file_extension = 'ps' + + pgstar_interval = 10 + + Abundance_win_flag = .false. + Abundance_win_width = 15 + Abundance_win_aspect_ratio = 0.75 + + Abundance_title = '' + Abundance_num_isos_to_show = 6 + + Abundance_which_isos_to_show(1) = 'h1' + Abundance_which_isos_to_show(2) = 'he3' + Abundance_which_isos_to_show(3) = 'he4' + Abundance_which_isos_to_show(4) = 'c12' + Abundance_which_isos_to_show(5) = 'n14' + Abundance_which_isos_to_show(6) = 'o16' + + num_abundance_line_labels = 4 + Abundance_line_txt_scale_factor = 1.0 + Abundance_legend_max_cnt = 0 + + Abundance_xaxis_name = 'mass' + Abundance_xaxis_reversed = .false. + Abundance_xmin = 0.0 + Abundance_xmax = 1.0 + + Abundance_log_mass_frac_min = -3.0 + Abundance_log_mass_frac_max = 0.3 + + + HR_win_flag = .false. + HR_win_width = 12 + HR_win_aspect_ratio = 1.2 ! aspect_ratio = height/width + HR_title = '' + + HR_logT_min = 3.5 + HR_logT_max = 4.5 + HR_logL_min = 1.0 + HR_logL_max = 3.0 + + + Text_Summary1_win_flag = .false. + Text_Summary1_win_width = 10 + Text_Summary1_win_aspect_ratio = 0.15 + + Text_Summary1_xleft = 0.01 + Text_Summary1_xright = 0.99 + Text_Summary1_ybot = 0.0 + Text_Summary1_ytop = 1.0 + Text_Summary1_txt_scale = 1.0 + + Text_Summary1_num_rows = 1 ! <= 20 + Text_Summary1_num_cols = 3 ! <= 20 + Text_Summary1_name(:,:) = '' + + Text_Summary1_name(1,1) = 'star_mass' + Text_Summary1_name(1,2) = 'log_LH' + Text_Summary1_name(1,3) = 'num_zones' + + Grid1_title = 'make_zams' + Grid1_win_flag = .false. + Grid1_win_width = 15 + Grid1_win_aspect_ratio = 0.6 + + Grid1_plot_name(:) = '' + Grid1_plot_row(:) = 1 ! number from 1 at top + Grid1_plot_rowspan(:) = 1 ! plot spans this number of rows + Grid1_plot_col(:) = 1 ! number from 1 at left + Grid1_plot_colspan(:) = 1 ! plot spans this number of columns + Grid1_plot_pad_left(:) = 0.0 ! fraction of full window width for padding on left + Grid1_plot_pad_right(:) = 0.0 ! fraction of full window width for padding on right + Grid1_plot_pad_top(:) = 0.0 ! fraction of full window height for padding at top + Grid1_plot_pad_bot(:) = 0.0 ! fraction of full window height for padding at bottom + Grid1_txt_scale_factor(:) = 0.7 ! multiply txt_scale for subplot by this + + Grid1_num_cols = 6 ! divide plotting region into this many equal width cols + Grid1_num_rows = 2 ! divide plotting region into this many equal height rows + Grid1_num_plots = 10 ! <= 10 + + pgstar_show_model_number = .true. + pgstar_model_scale = 1.0 + pgstar_model_lw = 3 + pgstar_model_disp = 2.0 + pgstar_model_coord = 0.92 + pgstar_model_fjust = 1.0 + + pgstar_show_age = .true. + pgstar_age_scale = 1.0 + pgstar_age_lw = 3 + pgstar_age_disp = 2.0 + pgstar_age_coord = -0.10 + pgstar_age_fjust = 0.0 + + Grid1_plot_name(1) = 'Text_Summary1' + Grid1_plot_row(1) = 1 ! number from 1 at top + Grid1_plot_rowspan(1) = 1 ! plot spans this number of rows + Grid1_plot_col(1) = 1 ! number from 1 at left + Grid1_plot_colspan(1) = 6 ! plot spans this number of columns + + Grid1_plot_pad_left(1) = -0.06 ! fraction of full window width for padding on left + Grid1_plot_pad_right(1) = 0.05 ! fraction of full window width for padding on right + Grid1_plot_pad_top(1) = -0.02 ! fraction of full window height for padding at top + Grid1_plot_pad_bot(1) = 0.39 ! fraction of full window height for padding at bottom + Grid1_txt_scale_factor(1) = 1.2 ! multiply txt_scale for subplot by this + + + Grid1_plot_name(2) = 'Abundance' + Grid1_plot_row(2) = 1 ! number from 1 at top + Grid1_plot_rowspan(2) = 2 ! plot spans this number of rows + Grid1_plot_col(2) = 1 ! number from 1 at left + Grid1_plot_colspan(2) = 3 ! plot spans this number of columns + + Grid1_plot_pad_left(2) = -0.05 ! fraction of full window width for padding on left + Grid1_plot_pad_right(2) = 0.10 ! fraction of full window width for padding on right + Grid1_plot_pad_top(2) = 0.03 ! fraction of full window height for padding at top + Grid1_plot_pad_bot(2) = 0.03 ! fraction of full window height for padding at bottom + Grid1_txt_scale_factor(2) = 0.7 ! multiply txt_scale for subplot by this + + + Grid1_plot_name(3) = 'HR' + Grid1_plot_row(3) = 1 ! number from 1 at top + Grid1_plot_rowspan(3) = 2 ! plot spans this number of rows + Grid1_plot_col(3) = 5 ! Number from 1 at left + Grid1_plot_colspan(3) = 3 ! plot spans this number of columns + + Grid1_plot_pad_left(3) = -0.15 ! fraction of full window width for padding on left + Grid1_plot_pad_right(3) = 0.20 ! fraction of full window width for padding on right + Grid1_plot_pad_top(3) = 0.03 ! fraction of full window height for padding at top + Grid1_plot_pad_bot(3) = 0.03 ! fraction of full window height for padding at bottom + Grid1_txt_scale_factor(3) = 0.7 ! multiply txt_scale for subplot by this + + + Grid1_file_flag = .true. + Grid1_file_dir = 'pgstar_out' + Grid1_file_prefix = 'grid_' + Grid1_file_interval = 10000 + Grid1_file_width = -1 ! (inches) negative means use same value as for window + + / ! end of pgstar namelist diff --git a/star/test_suite/make_zams_low_mass/README.rst b/star/test_suite/make_zams_low_mass/README.rst index 1f89748f5..b47a60fb5 100644 --- a/star/test_suite/make_zams_low_mass/README.rst +++ b/star/test_suite/make_zams_low_mass/README.rst @@ -11,7 +11,7 @@ This test case has 1 part. Click to see a larger version of a plot. * Part 1 (``inlist_zams``) creates a 0.085 Msun, Z = 0.014 metallicity, pre-main sequence model and evolves the model to the zero age main sequence, terminating when Lnuc / L = 0.9. .. image:: ../../../star/test_suite/make_zams_low_mass/docs/grid_000196.svg - :scale: 100% + :width: 100% pgstar commands used for the plot above: diff --git a/star/test_suite/make_zams_ultra_high_mass/README.rst b/star/test_suite/make_zams_ultra_high_mass/README.rst index 13dca615d..16d5ae958 100644 --- a/star/test_suite/make_zams_ultra_high_mass/README.rst +++ b/star/test_suite/make_zams_ultra_high_mass/README.rst @@ -11,7 +11,7 @@ This test case has 1 part. Click to see a larger version of a plot. * Part 1 (``inlist_zams_ultra_high_mass``) loads the pre-built 90 Msun, Z = 1e-4 metallicity, model ``late_pre_zams_90M.mod``. This initial model is then relaxed to 250 Msun using ``relax_initial_mass_scale = .true.``. At the 250 Msun point, the model already exceeds the termination criteria of Lnuc/L = 0.9 and there is no evolution in the HR diagram: .. image:: ../../../star/test_suite/make_zams_ultra_high_mass/docs/grid_000075.svg - :scale: 100% + :width: 100% pgstar commands used for the plot above: diff --git a/star/test_suite/other_physics_hooks/README.rst b/star/test_suite/other_physics_hooks/README.rst index 97fa7772e..d57e07f2b 100644 --- a/star/test_suite/other_physics_hooks/README.rst +++ b/star/test_suite/other_physics_hooks/README.rst @@ -9,7 +9,7 @@ It provides an example of how to include your own physics code into a MESA run. This test case has 1 part. Click to see a larger version of a plot. -* Part 1 (``inlist_other_physics_hooks_header``) and its signficant ``src`` directory first loads a prebuilt 1 Msun, Z=0.02 metallicity, zero age main sequence model (see ``data/star_data/zams_models/zams_z2m2_y28.data`` for such ZAMS models). A careful examination of the ``run_star_extras.f90`` is warranted and rewarding -- also see the Extending MESA tutorial. The hooks ``other_kap``, ``other_eos``, ``other_screening``, ``overshoot_dbl_exp``, ``other_wind``, ``other_mesh_functions``, and ``other_timestep`` are activated. Some, such as ``other_eos``, simply use the default module. Others, such as ``other_wind``, implement different physics. Some information about their use is reported in the terminal as the model evolves toward its termination when the hydrogen mass fractions drops below 0.25 : +* Part 1 (``inlist_other_physics_hooks_header``) and its significant ``src`` directory first loads a prebuilt 1 Msun, Z=0.02 metallicity, zero age main sequence model (see ``data/star_data/zams_models/zams_z2m2_y28.data`` for such ZAMS models). A careful examination of the ``run_star_extras.f90`` is warranted and rewarding -- also see the Extending MESA tutorial. The hooks ``other_kap``, ``other_eos``, ``other_screening``, ``overshoot_dbl_exp``, ``other_wind``, ``other_mesh_functions``, and ``other_timestep`` are activated. Some, such as ``other_eos``, simply use the default module. Others, such as ``other_wind``, implement different physics. Some information about their use is reported in the terminal as the model evolves toward its termination when the hydrogen mass fractions drops below 0.25 : .. code-block:: console diff --git a/star/test_suite/pisn/README.rst b/star/test_suite/pisn/README.rst index e0d0564c7..cff115fdc 100644 --- a/star/test_suite/pisn/README.rst +++ b/star/test_suite/pisn/README.rst @@ -4,7 +4,7 @@ pisn **** -This test case evolves an initialy 200 |Msun| star from ZAMS untill it undergoes a pair instability supernovae (PISN) +This test case evolves an initially 200 |Msun| star from ZAMS until it undergoes a pair instability supernovae (PISN) Physical checks @@ -27,7 +27,7 @@ This test case has seven parts. * Part 3 (``inlist_to_end_core_he_burn``) This takes the model up to the end of core helium burning -* Part 4 (``inlist_remove_envelope_header``) This removes whats left of the hydrogren envelope +* Part 4 (``inlist_remove_envelope_header``) This removes whats left of the hydrogen envelope * Part 5 (``inlist_to_end_core_c_burn``) This takes the model up to the end of carbon burning diff --git a/star/test_suite/pisn/gyre.in b/star/test_suite/pisn/gyre.in deleted file mode 100644 index e27703b48..000000000 --- a/star/test_suite/pisn/gyre.in +++ /dev/null @@ -1,32 +0,0 @@ -&model -/ - -&mode - l = 0 -/ - -&osc - nonadiabatic = .TRUE. -/ - -&rot -/ - -&num - diff_scheme = 'MAGNUS_GL2' -/ - -&scan - grid_type = 'LINEAR' - freq_min = 0.5 - freq_max = 5.0 - freq_min_units = 'ACOUSTIC_DELTA' - freq_max_units = 'ACOUSTIC_DELTA' - n_freq = 50 -/ - -&grid - w_osc = 10 - w_exp = 2 - w_ctr = 10 -/ diff --git a/star/test_suite/pisn/src/run_star_extras.f90 b/star/test_suite/pisn/src/run_star_extras.f90 index e7fdb0cf2..56313e837 100644 --- a/star/test_suite/pisn/src/run_star_extras.f90 +++ b/star/test_suite/pisn/src/run_star_extras.f90 @@ -27,7 +27,6 @@ module run_star_extras use const_def use math_lib use auto_diff - use gyre_lib implicit none diff --git a/star/test_suite/ppisn/README.rst b/star/test_suite/ppisn/README.rst index a25931921..a99702d8f 100644 --- a/star/test_suite/ppisn/README.rst +++ b/star/test_suite/ppisn/README.rst @@ -5,7 +5,7 @@ ppisn ***** This test case evolves a very massive helium star from the He-ZAMS -up to the ocurrence of a pulsational pair-instability event (see |Marchant2019|). +up to the occurrence of a pulsational pair-instability event (see |Marchant2019|). .. |Marchant2019| replace:: `Marchant et al. 2019 `__ diff --git a/star/test_suite/ppisn/inlist_ppisn b/star/test_suite/ppisn/inlist_ppisn index 5be6d447c..61abdbb65 100644 --- a/star/test_suite/ppisn/inlist_ppisn +++ b/star/test_suite/ppisn/inlist_ppisn @@ -47,7 +47,7 @@ read_extra_star_job_inlist(1) = .true. extra_star_job_inlist_name(1) = 'inlist_extra' - pgstar_flag = .false. + pgstar_flag = .true. save_pgstar_files_when_terminate = .true. num_special_rate_factors = 2 @@ -188,6 +188,7 @@ okay_to_remesh = .true. max_dq = 1d-3 ! RECOMMENDED 1d-3 mesh_delta_coeff = 0.8d0 ! RECOMMENDED 0.8d0 + !! this one is turned on in run_star_extras !use_split_merge_amr = .true. split_merge_amr_log_zoning = .true. @@ -196,7 +197,11 @@ split_merge_amr_MaxShort = 2.5d0 split_merge_amr_max_iters = 50 split_merge_amr_okay_to_split_nz = .false. - merge_amr_ignore_surface_cells = .false. + + !prevent surface from going crazy during remesh and when hydro turns on + merge_amr_ignore_surface_cells = .true. + merge_amr_k_for_ignore_surface_cells = 2 + merge_amr_max_abs_du_div_cs = 0.05d0 merge_amr_du_div_cs_limit_only_for_compression = .true. split_merge_amr_avoid_repeated_remesh = .true. diff --git a/star/test_suite/ppisn/standard_he_dep.mod b/star/test_suite/ppisn/standard_he_dep.mod index fda3a4c0f..0db04dc55 100644 --- a/star/test_suite/ppisn/standard_he_dep.mod +++ b/star/test_suite/ppisn/standard_he_dep.mod @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff697cd8c4ec3e06c720cf5e58dce16e510addd5f9833b28daa55c04d9446013 -size 1249220 +oid sha256:51dba32a61de103e10bc188f5670c0cd46eca82de0f26250b1ff0316341e450d +size 1251084 diff --git a/star/test_suite/ppisn/zams.mod b/star/test_suite/ppisn/zams.mod deleted file mode 100644 index 2d558da66..000000000 --- a/star/test_suite/ppisn/zams.mod +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0c89bfcb53e4c027cfb33bec543defcc88d508e71c3792cf2b1b4add6a9278d7 -size 381596 diff --git a/star/test_suite/rsp_Type_II_Cepheid/src/run_star_extras.f90 b/star/test_suite/rsp_Type_II_Cepheid/src/run_star_extras.f90 index 4bb639a6f..2ab69f0fd 100644 --- a/star/test_suite/rsp_Type_II_Cepheid/src/run_star_extras.f90 +++ b/star/test_suite/rsp_Type_II_Cepheid/src/run_star_extras.f90 @@ -115,7 +115,7 @@ integer function extras_finish_step(id) if (s% total_energy /= 0d0 .and. abs(rel_run_E_err) > 1d-4) then write(*,*) '*** BAD rel_run_E_error ***', & s% cumulative_energy_error/s% total_energy - else if (abs(s% rsp_period/(24*3600) - target_period) > 1d-2) then + else if (abs(s% rsp_period/(24*3600) - target_period) > 3d-2) then write(*,*) '*** BAD ***', s% rsp_period/(24*3600) - target_period, & s% rsp_period/(24*3600), target_period else diff --git a/star/test_suite/rsp_gyre/make/makefile b/star/test_suite/rsp_gyre/make/makefile index 68451046a..da1cf8efd 100644 --- a/star/test_suite/rsp_gyre/make/makefile +++ b/star/test_suite/rsp_gyre/make/makefile @@ -2,7 +2,7 @@ include $(MESA_DIR)/utils/makefile_header -LOAD_MESA = $(LOAD_EXTRAS1) $(LOAD_MESA_STAR) $(LOAD_EXTRAS) +LOAD_MESA = $(LOAD_EXTRAS1) $(LOAD_MESA_STAR) $(LOAD_GYRE) $(LOAD_EXTRAS) ################################################################# @@ -18,7 +18,7 @@ WORK_SRC_DIR = $(WORK_DIR)/src STAR_JOB_DIR = $(MESA_DIR)/star/job $(STAR) : $(OBJS) - $(LOADER) $(FCopenmp) -o $(WORK_DIR)/$(STAR) $(OBJS) $(LOAD_MESA) -lgyre + $(LOADER) $(FCopenmp) -o $(WORK_DIR)/$(STAR) $(OBJS) $(LOAD_MESA) ################################################################# diff --git a/star/test_suite/rsp_gyre/src/run_star_extras.f90 b/star/test_suite/rsp_gyre/src/run_star_extras.f90 index b51193624..b3f46b9c1 100644 --- a/star/test_suite/rsp_gyre/src/run_star_extras.f90 +++ b/star/test_suite/rsp_gyre/src/run_star_extras.f90 @@ -27,7 +27,7 @@ module run_star_extras use const_def use math_lib use auto_diff - use gyre_lib + use gyre_mesa_m implicit none @@ -67,7 +67,7 @@ end subroutine extras_controls subroutine rsp_set_gyre_linear_analysis(id,restart,ierr) use const_def use math_lib - use gyre_lib + use gyre_mesa_m integer, intent(in) :: id logical, intent(in) :: restart integer, intent(out) :: ierr @@ -97,17 +97,17 @@ subroutine rsp_set_gyre_linear_analysis(id,restart,ierr) allocate(r(modes,nz+10), v(modes,nz+10)) npts = 0 - call gyre_init('gyre.in') + call init('gyre.in') - call gyre_set_constant('G_GRAVITY', standard_cgrav) - call gyre_set_constant('C_LIGHT', clight) - call gyre_set_constant('A_RADIATION', crad) + call set_constant('G_GRAVITY', standard_cgrav) + call set_constant('C_LIGHT', clight) + call set_constant('A_RADIATION', crad) - call gyre_set_constant('M_SUN', Msun) - call gyre_set_constant('R_SUN', Rsun) - call gyre_set_constant('L_SUN', Lsun) + call set_constant('M_SUN', Msun) + call set_constant('R_SUN', Rsun) + call set_constant('L_SUN', Lsun) - call gyre_set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') + call set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') mode_l = 0 ! mode l (e.g. 0 for p modes, 1 for g modes) ! should match gyre.in mode l @@ -123,7 +123,7 @@ subroutine rsp_set_gyre_linear_analysis(id,restart,ierr) 'GYRE', 'gyre.data', global_data, point_data, ierr) if (ierr /= 0) return - call gyre_set_model(global_data, point_data, s%gyre_data_schema) + call set_model(global_data, point_data, s%gyre_data_schema) write(*, 100) 'order', 'freq (Hz)', 'P (sec)', & 'P (min)', 'P (day)', 'growth (day)', '(4pi*im/re)' @@ -136,9 +136,9 @@ subroutine rsp_set_gyre_linear_analysis(id,restart,ierr) ipar(4) = 3 ! max number of modes to output per call ipar(5) = 0 ! num_written - call gyre_get_modes(mode_l, process_mode_, ipar, rpar) + call get_modes(mode_l, process_mode_, ipar, rpar) - call gyre_final() + call final() amix1 = s% x_ctrl(4) ! s% RSP_fraction_1st_overtone amix2 = s% x_ctrl(5) ! s% RSP_fraction_2nd_overtone diff --git a/star/test_suite/semiconvection/README.rst b/star/test_suite/semiconvection/README.rst index 335cbb727..96f2c575c 100644 --- a/star/test_suite/semiconvection/README.rst +++ b/star/test_suite/semiconvection/README.rst @@ -5,11 +5,11 @@ semiconvection ************** This test case checks placement of the convective and semiconvective boundaries when using the Ledoux criterion and predictive mixing, -see |MESA V|. The test vehicle is with a 1.5 Msun, Z=0.02 metallicity, model. +see |MESA V|. The test vehicle is with a 1.5 |Msun|, Z=0.02 metallicity, model. This test case has 1 part. Click to see a larger version of a plot. -* Part 1 (``inlist_semiconvection``) loads a pre-built 1.5 Msun, Z=0.02 metallicity, model from test case :ref:`make_zams_high_mass`. New initial model generation should use the supplied ``inlist_to_ZAMS``. The model is then evolved until the central hydrogen mass fraction drops below 0.4. At this time the convective core has almost reached its maximum mass extension, and there is a semiconvective layer above the convective core. The ``run_star_extars.f90`` then checks the mixing types at three points (0.12, 0.135, and 0.15 Msun), where the convective types should be convection, semiconvection, and no mixing. In addition, the ``run_star_extars.f90`` checks the average temperature and density between two points in the star : +* Part 1 (``inlist_semiconvection``) loads a pre-built 1.5 |Msun|, Z=0.02 metallicity, model from test case :ref:`make_zams_high_mass`. New initial model generation should use the supplied ``inlist_to_ZAMS``. The model is then evolved until the central hydrogen mass fraction drops below 0.4. At this time the convective core has almost reached its maximum mass extension, and there is a semiconvective layer above the convective core. The ``run_star_extars.f90`` then checks the mixing types at three points (0.12, 0.135, and 0.15 |Msun|), where the convective types should be convection, semiconvection, and no mixing. In addition, the ``run_star_extars.f90`` checks the average temperature and density between two points in the star : .. code-block:: console @@ -25,7 +25,7 @@ This test case has 1 part. Click to see a larger version of a plot. all values are within tolerances -Note that the choice made for the inital mixture (a09 in this test +Note that the choice made for the initial mixture (a09 in this test case) and for the nuclear reaction network (here: pp_and_cno_extras.net) influence the growth of the convective core. The values used in this test case for the diff --git a/star/test_suite/split_burn_big_net/README.rst b/star/test_suite/split_burn_big_net/README.rst index 9a89737c3..8204f1030 100644 --- a/star/test_suite/split_burn_big_net/README.rst +++ b/star/test_suite/split_burn_big_net/README.rst @@ -4,7 +4,7 @@ split_burn_big_net ****************** -This test suite example checks the use of MESA's split burn capabilites in a 25 |Msun| star, during silicon burning +This test suite example checks the use of MESA's split burn capabilities in a 25 |Msun| star, during silicon burning Physical checks =============== diff --git a/star/test_suite/starspots/README.rst b/star/test_suite/starspots/README.rst index 4ec0ed87b..f80abafd3 100644 --- a/star/test_suite/starspots/README.rst +++ b/star/test_suite/starspots/README.rst @@ -4,18 +4,36 @@ starspots ****************** -This test suite case evolves a 1 solar mass, solar metallicity (Z=0.02) model to an age of 0.8 Gyr using MESA's implementation of the YREC (Yale Rotating Evolution Code) SPOTS formalism introduced by Somers et al. (2020; ApJ). +This test suite case evolves a 0.9 |Msun|, solar metallicity (Z=0.02) model +to an age of 24.63 Gyr using MESA's implementation of the +YREC (Yale Rotating Evolution Code) SPOTS formalism introduced by +`Somers et al. (2020; ApJ) `__ +Compare to Figure 15 in Section 7 of MESA Instrument Paper VI. -The impedence of the surface flux due to magnetic pressure from starspots is parameterized in the style of an atmospheric boundary modification. -As first described by Somers et al. (2015; ApJ), the degree of "spottiness" on the stellar surface is characterized using two parameters: -* SPOTF (hereafter fspot): a coverage fraction, or "spot filling factor" (in the notation of the YREC documentation); and +The impedence of the surface flux due to magnetic pressure from starspots is parameterized +in the style of an atmospheric boundary modification. As first described by +`Somers et al. (2015; ApJ) `__, +the degree of "spottiness" on the stellar surface is characterized using two parameters: -* SPOTX (hereafter xspot): the temperature contrast between the spotted and unspotted regions: xspot = T_spot/T_photosphere. +* SPOTF (hereafter ``fspot``): a coverage fraction, or "spot filling factor" (in the notation of the YREC documentation); and -Currently, x_ctrl(1) corresponds to fspot, and x_ctrl(2) corresponds to xspot. The coverage fraction is set to fspot = 0.34 (for consistency with observations of low-mass stars: Cao et al., 2022) and the temperature contrast is set to xspot = 0.85 (also from fits to observations). +* SPOTX (hereafter ``xspot``): the temperature contrast between the spotted and unspotted regions: xspot = T_spot/T_photosphere. + +The coverage fraction is set to ``fspot = 0.34`` +(for consistency with observations of low-mass stars: +`Cao et al., 2022 `__) +and the temperature contrast is set to ``xspot = 0.85`` (also from fits to observations). -Detailed discussion of this functionality can be found in MESA Instrument Paper VI: Starspots +Detailed discussion of this functionality can be found in +`MESA Instrument Paper VI: Starspots `__. + +A plot of the HR diagram for the problem is included below: + +.. image:: ../../../star/test_suite/starspots/docs/hr_starspots_001496.svg + :width: 100% + -Last-Updated: 2022-07-28 by Meridith Joyce +Last-Updated: 09Aug2024 by Meridith Joyce +Last-Run: 06Aug2024 (MESA 7890d305) by pmocz on C916PXT6XW in 629 seconds using 8 threads. diff --git a/star/test_suite/starspots/docs/hr_starspots_001496.svg b/star/test_suite/starspots/docs/hr_starspots_001496.svg new file mode 100644 index 000000000..ac9cbdbec --- /dev/null +++ b/star/test_suite/starspots/docs/hr_starspots_001496.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/star/test_suite/starspots/inlist_starspots b/star/test_suite/starspots/inlist_starspots index 4ea11c6d7..df1f3213b 100644 --- a/star/test_suite/starspots/inlist_starspots +++ b/star/test_suite/starspots/inlist_starspots @@ -5,146 +5,162 @@ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &star_job - history_columns_file = 'history_master.list' - profile_columns_file = 'profile_master.list' - - required_termination_code_string = 'max_age' + history_columns_file = 'history_master.list' + profile_columns_file = 'profile_master.list' - save_pulse_data_when_terminate = .false. + required_termination_code_string = 'max_age' - create_pre_main_sequence_model = .true. - pre_ms_relax_to_start_radiative_core = .false. !.true. ! by default, but it should not be!!! + save_pulse_data_when_terminate = .false. + create_pre_main_sequence_model = .true. + pre_ms_relax_to_start_radiative_core = .false. !.true. ! by default, but it should not be!!! - ! save a model at the end of the run - save_model_when_terminate = .true. - save_model_filename = 'final.mod' + ! save a model at the end of the run + save_model_when_terminate = .true. + save_model_filename = 'final.mod' - new_rotation_flag = .false. + new_rotation_flag = .false. - pre_ms_T_c = 3d5 ! default -- any lower doesn't work - pre_ms_check_radiative_core_min_mass = 0.3d0 ! default is 0.3d0 - pre_ms_check_radiative_core_Lnuc_div_L_limit = 1d-6 + pre_ms_T_c = 3d5 ! default -- any lower doesn't work + pre_ms_check_radiative_core_min_mass = 0.3d0 ! default is 0.3d0 + pre_ms_check_radiative_core_Lnuc_div_L_limit = 1d-6 + set_uniform_initial_composition = .true. - set_uniform_initial_composition = .true. + initial_h1 = 0.7349 + initial_h2 = 2.75d-5 ! Lodders 2009 + initial_he3 = 8.5d-5 ! Lodders 2009 + initial_he4 = 0.24 - initial_h1 = 0.7349 - initial_h2 = 2.75d-5 ! Lodders 2009 - initial_he3 = 8.5d-5 ! Lodders 2009 - initial_he4 = 0.24 + initial_zfracs = 6 !! scaling of the rest of the elements according to someone's solar abundance + ! display on-screen plots + pgstar_flag = .true. + save_pgstar_files_when_terminate = .true. - initial_zfracs = 6 !! scaling of the rest of the elements according to someone's solar abundance + ! network + change_net = .true. + new_net_name= 'pp_extras.net' ! - ! display on-screen plots - pgstar_flag = .false. - - !network - change_net = .true. - new_net_name= 'pp_extras.net' ! - -/ !end of star_job namelist +/ ! end of star_job namelist &eos / &kap - Zbase = 0.0200 !0.014 + Zbase = 0.0200 !0.014 - !opacities with AGSS09 abundances - kap_file_prefix = 'a09' - kap_lowT_prefix = 'lowT_fa05_a09p' - kap_CO_prefix = 'a09_co' + ! opacities with AGSS09 abundances + kap_file_prefix = 'a09' + kap_lowT_prefix = 'lowT_fa05_a09p' + kap_CO_prefix = 'a09_co' / &controls - star_history_name = 'history.data' - - max_age = 0.8d9 + star_history_name = 'history.data' - use_other_mlt_results = .true. !.true. - use_other_surface_PT = .true. !.True. - - x_ctrl(1) = 0.34d0 ! fspot - x_ctrl(2) = 0.85d0 ! xspot - - atm_option = 'table' - atm_table = 'photosphere' + max_age = 24.63d9 !26d9 !0.8d9 + do_starspots = .true. + fspot = 0.34d0 + xspot = 0.85d0 + + atm_option = 'table' + atm_table = 'photosphere' - warn_when_large_rel_run_E_err = 99d0 !0.02d0 - log_directory = 'LOGS' - write_profiles_flag = .false. + warn_when_large_rel_run_E_err = 99d0 !0.02d0 + log_directory = 'LOGS' + write_profiles_flag = .false. + max_num_profile_models = -1 + history_interval = 1 + terminal_interval = 100 + write_header_frequency = 10 + photo_digits = 5 + photo_interval = 100 - max_num_profile_models = -1 - history_interval = 1 - terminal_interval = 100 - write_header_frequency = 10 - photo_digits = 5 - photo_interval = 100 + ! starting specifications + initial_mass = 0.9 ! in Msun units + min_timestep_limit=0 + max_model_number = -1 !1500 - ! starting specifications - initial_mass = 1.0 ! in Msun units - min_timestep_limit=0 - max_model_number = -1!1500 - + cool_wind_RGB_scheme = 'Reimers' + cool_wind_AGB_scheme = 'Blocker' + RGB_to_AGB_wind_switch = 1d-4 + Reimers_scaling_factor = 0.1 + Blocker_scaling_factor = 0.2 + max_wind = 1d-3 - cool_wind_RGB_scheme = 'Reimers' - cool_wind_AGB_scheme = 'Blocker' - RGB_to_AGB_wind_switch = 1d-4 - Reimers_scaling_factor = 0.1 - Blocker_scaling_factor = 0.2 - max_wind = 1d-3 + mixing_length_alpha = 1.9500 + MLT_option = 'Henyey' - mixing_length_alpha = 1.9500 !1.95 - MLT_option = 'Henyey' + do_element_diffusion = .false. + report_solver_progress = .false. - do_element_diffusion = .false. - report_solver_progress = .false. + ! Solver + use_gold2_tolerances = .true. - ! Solver - use_gold2_tolerances = .true. - - ! Timestep and grid - mesh_delta_coeff = 0.8 - time_delta_coeff = 1.0 !0.8 !0.5 + ! Timestep and grid + mesh_delta_coeff = 0.8 + time_delta_coeff = 1.0 !0.8 !0.5 - varcontrol_target = 1e-4 - !max_allowed_nz = 50000 + varcontrol_target = 1e-4 + !max_allowed_nz = 50000 - !to help with convergence - okay_to_reduce_gradT_excess = .true. - Pextra_factor = 2.0 + ! to help with convergence + okay_to_reduce_gradT_excess = .true. + Pextra_factor = 2.0 !------------------------------------------- !! convective overshoot, new formalism !------------------------------------------- - overshoot_scheme(:) = 'exponential' ! ``exponential``, ``step``, ``other`` - overshoot_zone_type(:) = 'any' ! ``burn_H``, ``burn_He``, ``burn_Z``, ``nonburn``, ``any`` - overshoot_zone_loc(:) = 'any' ! ``core``, ``shell``, ``any`` - overshoot_bdy_loc(:) = 'any' ! ``bottom``, ``top``, ``any`` + overshoot_scheme(:) = 'exponential' ! ``exponential``, ``step``, ``other`` + overshoot_zone_type(:) = 'any' ! ``burn_H``, ``burn_He``, ``burn_Z``, ``nonburn``, ``any`` + overshoot_zone_loc(:) = 'any' ! ``core``, ``shell``, ``any`` + overshoot_bdy_loc(:) = 'any' ! ``bottom``, ``top``, ``any`` - ! Amount of overshooting from edge of convective zone - ! These are arrays of size ``NUM_OVERSHOOT_PARAM_SETS`` which is defined in - ! ``star_data/public/star_data_def.inc`` (currently 16) + ! Amount of overshooting from edge of convective zone + ! These are arrays of size ``NUM_OVERSHOOT_PARAM_SETS`` which is defined in + ! ``star_data/public/star_data_def.inc`` (currently 16) - overshoot_f(:) = 0.014d0 - overshoot_f0(:) = 0.004d0 + overshoot_f(:) = 0.014d0 + overshoot_f0(:) = 0.004d0 - ! Convergence checking - use_gold_tolerances = .true. - + ! Convergence checking + use_gold_tolerances = .true. - max_number_retries = -1 !1000 !100!100 - max_model_number = 10000 !-1 + max_number_retries = -1 !1000 !100 + max_model_number = 10000 !-1 - !better resolution of the Henyey hook - delta_lg_XH_cntr_max = -1 + ! better resolution of the Henyey hook + delta_lg_XH_cntr_max = -1 +/ ! end of controls namelist -/ ! end of controls namelist +&pgstar + + pgstar_interval = 50 + + ! device + file_white_on_black_flag = .true. + file_device = 'vcps' ! postscript + file_extension = 'ps' + + HR_win_flag = .true. ! switch to .true. to visualize in real-time + HR_file_flag = .true. + HR_file_dir = 'pgstar_out' + HR_file_prefix = 'hr_starspots_' + HR_file_interval = 50 + HR_win_width = 9 + HR_win_aspect_ratio = 1.0 + HR_title = 'HR' + + ! set static plot bounds + HR_logT_min = 3.55 + HR_logT_max = 3.78 + HR_logL_min = -0.7 + HR_logL_max = 2.0 +/ ! end of pgstar namelist diff --git a/star/test_suite/starspots/inlist_starspots_header b/star/test_suite/starspots/inlist_starspots_header index 5af82e6f7..a4c8dc792 100644 --- a/star/test_suite/starspots/inlist_starspots_header +++ b/star/test_suite/starspots/inlist_starspots_header @@ -1,41 +1,41 @@ &star_job - mesa_dir = '../../..' + mesa_dir = '../../..' - read_extra_star_job_inlist(2) = .true. - extra_star_job_inlist_name(2) = 'inlist_starspots' + read_extra_star_job_inlist(2) = .true. + extra_star_job_inlist_name(2) = 'inlist_starspots' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_starspots' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_starspots' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_starspots' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_starspots' / ! end of kap namelist &controls - read_extra_controls_inlist(1) = .true. - extra_controls_inlist_name(1)= 'inlist_starspots' + read_extra_controls_inlist(1) = .true. + extra_controls_inlist_name(1)= 'inlist_starspots' / ! end of controls namelist &pgstar - read_extra_pgstar_inlist(1) = .true. - extra_pgstar_inlist_name(1)= 'inlist_starspots' + read_extra_pgstar_inlist(1) = .true. + extra_pgstar_inlist_name(1)= 'inlist_starspots' / ! end of pgstar namelist diff --git a/star/test_suite/starspots/src/run_star_extras.f90 b/star/test_suite/starspots/src/run_star_extras.f90 index cd61e1ec1..89743ce76 100644 --- a/star/test_suite/starspots/src/run_star_extras.f90 +++ b/star/test_suite/starspots/src/run_star_extras.f90 @@ -1,6 +1,6 @@ ! *********************************************************************** ! -! Copyright (C) 2010-2019 Bill Paxton & The MESA Team +! Copyright (C) 2011 The MESA Team ! ! this file is part of mesa. ! @@ -26,20 +26,17 @@ module run_star_extras use star_def use const_def use math_lib - use chem_def !! maybe taking up uncessary space but whatever + use auto_diff - implicit none - real(dp) :: fspot, xspot, PB_i, Teff_local include "test_suite_extras_def.inc" - + + ! these routines are called by the standard run_star check_model contains include "test_suite_extras.inc" - - - ! these routines are called by the standard run_star check_model + subroutine extras_controls(id, ierr) integer, intent(in) :: id @@ -48,21 +45,7 @@ subroutine extras_controls(id, ierr) ierr = 0 call star_ptr(id, s, ierr) if (ierr /= 0) return - - ! this is the place to set any procedure pointers you want to change - ! e.g., other_wind, other_mixing, other_energy (see star_data.inc) - - ! the extras functions in this file will not be called - ! unless you set their function pointers as done below. - ! otherwise we use a null_ version which does nothing (except warn). - - - fspot = s% x_ctrl(1) - xspot = s% x_ctrl(2) - - s% extras_startup => extras_startup - s% extras_start_step => extras_start_step s% extras_check_model => extras_check_model s% extras_finish_step => extras_finish_step s% extras_after_evolve => extras_after_evolve @@ -70,18 +53,9 @@ subroutine extras_controls(id, ierr) s% data_for_extra_history_columns => data_for_extra_history_columns s% how_many_extra_profile_columns => how_many_extra_profile_columns s% data_for_extra_profile_columns => data_for_extra_profile_columns - - s% how_many_extra_history_header_items => how_many_extra_history_header_items - s% data_for_extra_history_header_items => data_for_extra_history_header_items - s% how_many_extra_profile_header_items => how_many_extra_profile_header_items - s% data_for_extra_profile_header_items => data_for_extra_profile_header_items - - s% other_surface_PT => starspot_tweak_PT - s% other_mlt_results => YREC_spots_other_mlt_results - end subroutine extras_controls - - + + subroutine extras_startup(id, restart, ierr) integer, intent(in) :: id logical, intent(in) :: restart @@ -93,153 +67,18 @@ subroutine extras_startup(id, restart, ierr) call test_suite_startup(s, restart, ierr) end subroutine extras_startup - - integer function extras_start_step(id) + + subroutine extras_after_evolve(id, ierr) integer, intent(in) :: id - integer :: ierr - real(dp) :: mu_ideal_gas, R2 !! pi can be deleted + integer, intent(out) :: ierr type (star_info), pointer :: s - real(dp) :: power_he_burn, power_c_burn, power_neutrinos, & - center_h1, center_he4, ocz_top_mass, ocz_bot_mass, & - ocz_top_radius, ocz_bot_radius!, mass_difference_prev !! no!! - integer :: nz, j, i, k, k_ocz_top, k_ocz_bot, n_conv_bdy -! include 'formats' + real(dp) :: dt ierr = 0 call star_ptr(id, s, ierr) if (ierr /= 0) return - extras_start_step = 0 - - !! to use constants as defined in MESA, import const_def and call - !! variables by their names there - - ! set PB_i here and then other_mlt will know about it, because - ! quantities set here are carried over the course of a timestep, - ! AKA all newton iterations - - mu_ideal_gas = s% mu(1) !1.00794d0 ! for hydrogen, 1 gram per mole - !write(*,*) 'MESA def, my def: ', s% mu(1), mu_ideal_gas - - R2 = pow2(s%R(1)) - Teff_local = pow(s%L(1)/(pi4*boltz_sigma*R2), 0.25d0) - PB_i = (cgas* s%rho(1)/mu_ideal_gas) * (1.0 - xspot) * Teff_local - - end function extras_start_step - - -!----------------------------------------------------------------------------------------- -! -! YREC routines -! -!---------------------------------------------------------------------------------------- - subroutine YREC_spots_other_mlt_results(id, k, MLT_option, & ! NOTE: k=0 is a valid arg - r, L, T, P, opacity, rho, chiRho, chiT, Cp, gradr, grada, scale_height, & - iso, XH1, cgrav, m, gradL_composition_term, mixing_length_alpha, & - alpha_semiconvection, thermohaline_coeff, & - mixing_type, gradT, Y_face, conv_vel, D, Gamma, ierr) - use const_def, only: dp - use auto_diff - integer, intent(in) :: id - integer, intent(in) :: k - ! integer, intent(out) :: ierr - ! type (star_info), pointer :: s - ! integer :: nz, j - character (len=*), intent(in) :: MLT_option - type(auto_diff_real_star_order1), intent(in) :: & - r, L, T, P, opacity, rho, chiRho, chiT, Cp, gradr, grada, scale_height - integer, intent(in) :: iso - real(dp), intent(in) :: & - XH1, cgrav, m, gradL_composition_term, & - mixing_length_alpha, alpha_semiconvection, thermohaline_coeff - integer, intent(out) :: mixing_type - type(auto_diff_real_star_order1), intent(out) :: & - gradT, Y_face, conv_vel, D, Gamma - integer, intent(out) :: ierr - type(auto_diff_real_star_order1) :: xspot_of_r !, xspot4 - type(auto_diff_real_star_order1) :: gradr_spot - !ierr = 0 - ! ------------------------------ 10/26/21 - type (star_info), pointer :: s - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - - !------------------------------ - !if (s% star_age >= 10d0) then - if (.not. s% doing_relax .and. .not. s% doing_first_model_of_run) then - xspot_of_r = (P - PB_i)/P - gradr_spot = gradr/( fspot*pow4(xspot_of_r) + 1d0 - fspot) - else - gradr_spot = gradr - end if - - call star_mlt_results(id, k, MLT_option, & - r, L, T, P, opacity, rho, chiRho, chiT, Cp, gradr_spot, grada, scale_height, & - iso, XH1, cgrav, m, gradL_composition_term, mixing_length_alpha, & - alpha_semiconvection, thermohaline_coeff, & - mixing_type, gradT, Y_face, conv_vel, D, Gamma, ierr) - end subroutine YREC_spots_other_mlt_results - - - subroutine starspot_tweak_PT(id, skip_partials, & - lnT_surf, dlnT_dL, dlnT_dlnR, dlnT_dlnM, dlnT_dlnkap, & - lnP_surf, dlnP_dL, dlnP_dlnR, dlnP_dlnM, dlnP_dlnkap, ierr) - - use const_def, only: dp - - - integer, intent(in) :: id - logical, intent(in) :: skip_partials - - logical :: need_atm_Psurf, need_atm_Tsurf - - real(dp), intent(out) :: & - lnT_surf, dlnT_dL, dlnT_dlnR, dlnT_dlnM, dlnT_dlnkap, & - lnP_surf, dlnP_dL, dlnP_dlnR, dlnP_dlnM, dlnP_dlnkap - integer, intent(out) :: ierr - - ! For my tweaks - real(dp) :: alp !, fspot, xspot - - ! Call the stock get_surf_PT - type (star_info), pointer :: s - real(dp) :: L_init - - include 'formats' - - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - - need_atm_Psurf = .true. - need_atm_Tsurf = .true. - - alp = 1d0 - fspot + fspot*pow4(xspot) - - ! This is the surface-average value for luminosity - L_init = s% L(1) - - ! Set the surface L to the unspotted, ambient L - s% L(1) = s% L(1) / alp - - ! Now, set the Teff. Used in atm table lookup to set boundary conditions - s% Teff = pow(s% L(1)/(pi4*s% r(1)*s% r(1)*boltz_sigma), 0.25_dp) - - ! Set everything with Lamb. - call star_get_surf_PT(id, skip_partials, need_atm_Psurf, need_atm_Tsurf, & - lnT_surf, dlnT_dL, dlnT_dlnR, dlnT_dlnM, dlnT_dlnkap, & - lnP_surf, dlnP_dL, dlnP_dlnR, dlnP_dlnM, dlnP_dlnkap, & - ierr) - - s% Teff = pow(L_init/(pi4*s% r(1)*s% r(1)*boltz_sigma), 0.25_dp) - s% L(1) = L_init - - end subroutine starspot_tweak_PT - -!------------------------------------------------------------------------------ -! -! end YREC routines -! -!------------------------------------------------------------------------------ + call test_suite_after_evolve(s, ierr) + end subroutine extras_after_evolve + ! returns either keep_going, retry, or terminate. integer function extras_check_model(id) @@ -249,18 +88,7 @@ integer function extras_check_model(id) ierr = 0 call star_ptr(id, s, ierr) if (ierr /= 0) return - extras_check_model = keep_going - - - if (.false. .and. s% star_mass_h1 < 0.35d0) then - ! stop when star hydrogen mass drops to specified level - extras_check_model = terminate - write(*, *) 'have reached desired hydrogen mass' - return - end if - - ! by default, indicate where (in the code) MESA terminated - if (extras_check_model == terminate) s% termination_code = t_extras_check_model + extras_check_model = keep_going end function extras_check_model @@ -271,11 +99,10 @@ integer function how_many_extra_history_columns(id) ierr = 0 call star_ptr(id, s, ierr) if (ierr /= 0) return - how_many_extra_history_columns = 0 end function how_many_extra_history_columns - + subroutine data_for_extra_history_columns(id, n, names, vals, ierr) integer, intent(in) :: id, n character (len=maxlen_history_column_name) :: names(n) @@ -285,16 +112,11 @@ subroutine data_for_extra_history_columns(id, n, names, vals, ierr) ierr = 0 call star_ptr(id, s, ierr) if (ierr /= 0) return - - ! note: do NOT add the extras names to history_columns.list - ! the history_columns.list is only for the built-in history column options. - ! it must not include the new column names you are adding here. - - end subroutine data_for_extra_history_columns integer function how_many_extra_profile_columns(id) + use star_def, only: star_info integer, intent(in) :: id integer :: ierr type (star_info), pointer :: s @@ -306,6 +128,8 @@ end function how_many_extra_profile_columns subroutine data_for_extra_profile_columns(id, n, nz, names, vals, ierr) + use star_def, only: star_info, maxlen_profile_column_name + use const_def, only: dp integer, intent(in) :: id, n, nz character (len=maxlen_profile_column_name) :: names(n) real(dp) :: vals(nz,n) @@ -316,56 +140,9 @@ subroutine data_for_extra_profile_columns(id, n, nz, names, vals, ierr) call star_ptr(id, s, ierr) if (ierr /= 0) return end subroutine data_for_extra_profile_columns - - - integer function how_many_extra_history_header_items(id) - integer, intent(in) :: id - integer :: ierr - type (star_info), pointer :: s - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - how_many_extra_history_header_items = 0 - end function how_many_extra_history_header_items - - - subroutine data_for_extra_history_header_items(id, n, names, vals, ierr) - integer, intent(in) :: id, n - character (len=maxlen_history_column_name) :: names(n) - real(dp) :: vals(n) - type(star_info), pointer :: s - integer, intent(out) :: ierr - ierr = 0 - call star_ptr(id,s,ierr) - if(ierr/=0) return - end subroutine data_for_extra_history_header_items - - - integer function how_many_extra_profile_header_items(id) - integer, intent(in) :: id - integer :: ierr - type (star_info), pointer :: s - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - how_many_extra_profile_header_items = 0 - end function how_many_extra_profile_header_items - - - subroutine data_for_extra_profile_header_items(id, n, names, vals, ierr) - integer, intent(in) :: id, n - character (len=maxlen_profile_column_name) :: names(n) - real(dp) :: vals(n) - type(star_info), pointer :: s - integer, intent(out) :: ierr - ierr = 0 - call star_ptr(id,s,ierr) - if(ierr/=0) return - end subroutine data_for_extra_profile_header_items - + ! returns either keep_going or terminate. - ! note: cannot request retry; extras_check_model can do that. integer function extras_finish_step(id) integer, intent(in) :: id integer :: ierr @@ -374,27 +151,9 @@ integer function extras_finish_step(id) call star_ptr(id, s, ierr) if (ierr /= 0) return extras_finish_step = keep_going - - ! to save a profile, - ! s% need_to_save_profiles_now = .true. - ! to update the star log, - ! s% need_to_update_history_now = .true. - - ! see extras_check_model for information about custom termination codes - ! by default, indicate where (in the code) MESA terminated - if (extras_finish_step == terminate) s% termination_code = t_extras_finish_step end function extras_finish_step - subroutine extras_after_evolve(id, ierr) - integer, intent(in) :: id - integer, intent(out) :: ierr - type (star_info), pointer :: s - ierr = 0 - call star_ptr(id, s, ierr) - if (ierr /= 0) return - call test_suite_after_evolve(s, ierr) - end subroutine extras_after_evolve end module run_star_extras diff --git a/star/test_suite/test_memory/README.rst b/star/test_suite/test_memory/README.rst index 92328618a..551911e28 100644 --- a/star/test_suite/test_memory/README.rst +++ b/star/test_suite/test_memory/README.rst @@ -17,7 +17,7 @@ Rather, valgrind must be launched by hand: valgrind --leak-check=full --error-limit=no ./test_memory -To hide a number of false positives, due to internal gfortran issues, one can also use the supplied supression file ``mesa.supp``: +To hide a number of false positives, due to internal gfortran issues, one can also use the supplied suppression file ``mesa.supp``: .. code-block:: console @@ -27,9 +27,9 @@ Other usefull valgrind options: .. code-block:: console - --show-leak-kinds=all --track-origins=yes : To add additonal output + --show-leak-kinds=all --track-origins=yes : To add additional output --log-file=valgrind.out : Redirect valgrind's output to the file ``valgrind.out'' - --gen-suppressions=all : Generates supression rules as valgrind runs, helpful when you want to edit mesa.supp + --gen-suppressions=all : Generates suppression rules as valgrind runs, helpful when you want to edit mesa.supp Last-Updated: 03Jul2021 (MESA 094ff71) by fxt. diff --git a/star/test_suite/timing/README.rst b/star/test_suite/timing/README.rst index 9ed591c12..e9101ad93 100644 --- a/star/test_suite/timing/README.rst +++ b/star/test_suite/timing/README.rst @@ -10,7 +10,7 @@ This test case has 2 part2. * Part 1 (``inlist_zams``) builds a 1.5 Msun, Z=0.02 metallicity and evolves it to the zero-age main sequence. -* Part 2 (``inlist_timing``) continues the evolutioon until the central mass fraction of hydrogen drops below 0.5. To get a counter and timing breakdown the star_job namelist parameter ``first_model_for_timing=2`` is set. At the end of the run, various counters and timings are written to the terminal: +* Part 2 (``inlist_timing``) continues the evolution until the central mass fraction of hydrogen drops below 0.5. To get a counter and timing breakdown the star_job namelist parameter ``first_model_for_timing=2`` is set. At the end of the run, various counters and timings are written to the terminal: .. code-block:: console diff --git a/star/test_suite/twin_studies/README.rst b/star/test_suite/twin_studies/README.rst index 6166fb0b9..a676af1fd 100644 --- a/star/test_suite/twin_studies/README.rst +++ b/star/test_suite/twin_studies/README.rst @@ -10,7 +10,7 @@ The test vehicle is a pair of 15 Msun, Z=0.02 metallicity, models one with overs ``inlist_multi_stars_job`` and the ``run_star_extras.f90`` control the overall flow. For star 1, ``inlist_to_end_core_he_burn_header``, ``inlist_common``, ``inlist_mass_Z_wind_rotation``, ``inlist_to_end_core_he_burn`` and ``inlist_star1`` are read. The same is done for star 2, but with ``inlist_star2`` which turns off overshooting being read. -A pre-built 15 Msun, Z=0.02 metallicity, is then loaded for each model. Both models evolve simultaneouly for 1.013e7 year. +A pre-built 15 Msun, Z=0.02 metallicity, is then loaded for each model. Both models evolve simultaneously for 1.013e7 year. Star 1, with overshooting, reaches the ending age in 80 steps: diff --git a/star/test_suite/tzo/inlist_pgstar b/star/test_suite/tzo/inlist_pgstar old mode 100755 new mode 100644 diff --git a/star/test_suite/wd_c_core_ignition/README.rst b/star/test_suite/wd_c_core_ignition/README.rst index 3a2faf623..8e1c1f449 100644 --- a/star/test_suite/wd_c_core_ignition/README.rst +++ b/star/test_suite/wd_c_core_ignition/README.rst @@ -4,7 +4,7 @@ wd_c_core_ignition ****************** -This test case the checks the onset of a thermonuclear runaway in an accreting Chandrasekhar mass carobon-oxygen white dwarf. +This test case the checks the onset of a thermonuclear runaway in an accreting Chandrasekhar mass carbon-oxygen white dwarf. This test case has 2 parts. Click to see a larger version of a plot. @@ -14,7 +14,7 @@ This test case has 2 parts. Click to see a larger version of a plot. :width: 100% -* Part 2 (``inlist_wd_c_core_ignition``) continues the evolution by accreting a carbon-oxygen miture with the same mass fractions as the surface at a rate of 1e-9 Msun/yr. As the white dwarf mass nears the Chandrasekhar mass, carbon burning causes the interior to become convective (the simmering phase of standard paradign Type Ia supernova). The run terminates when the power generated by nuclear reactions exceeds 1e8 Lsun: +* Part 2 (``inlist_wd_c_core_ignition``) continues the evolution by accreting a carbon-oxygen mixture with the same mass fractions as the surface at a rate of 1e-9 Msun/yr. As the white dwarf mass nears the Chandrasekhar mass, carbon burning causes the interior to become convective (the simmering phase of standard paradign Type Ia supernova). The run terminates when the power generated by nuclear reactions exceeds 1e8 Lsun: .. image:: ../../../star/test_suite/wd_c_core_ignition/docs/track1_000747.svg diff --git a/star/test_suite/wd_nova_burst/README.rst b/star/test_suite/wd_nova_burst/README.rst index b0caf99d2..caed02106 100644 --- a/star/test_suite/wd_nova_burst/README.rst +++ b/star/test_suite/wd_nova_burst/README.rst @@ -36,86 +36,16 @@ and when the luminosity falls below 1e3 Lsun a nova cycle is considered finished have finished burst -.. image:: ../../../star/test_suite/wd_nova_burst/docs/grid8_000586.svg +.. image:: ../../../star/test_suite/wd_nova_burst/docs/wd_nova_burst_grid.svg :width: 100% -|br| -pgstar commands used for the plots above: +The Python script used to create the figures above: -.. code-block:: console - - &pgstar - - file_white_on_black_flag = .true. ! white_on_black flags -- true means white foreground color on black background - !file_device = 'png' ! png - !file_extension = 'png' - - file_device = 'vcps' ! postscript - file_extension = 'ps' - - pgstar_interval = 1 - - Grid8_win_flag = .true. - Grid8_win_width = 12 - Grid8_title = 'wd_nova_burst' - - Summary_Burn_xaxis_name = 'logxq' - Summary_Burn_xaxis_reversed = .true. - Summary_Burn_xmin = -14 ! -101d0 ! only used if /= -101d0 - Summary_Burn_xmax = -3 ! -101d0 ! only used if /= -101d0 - Summary_Burn_title = ' ' - - - Abundance_title = ' ' - Abundance_xaxis_name = 'logxq' - Abundance_xaxis_reversed = .true. - Abundance_xmin = -14 ! -101d0 ! only used if /= -101d0 - Abundance_xmax = -3 ! -101d0 ! only used if /= -101d0 - Abundance_txt_scale = 0.8 - Abundance_legend_max_cnt = 0 - - HR_title = ' ' - HR_txt_scale = 0.8 - HR_logT_min = 4.5 - HR_logT_max = 6.0 - HR_logL_min = -1.0 - HR_logL_max = 5.0 - - - TRho_title = ' ' - TRho_txt_scale = 0.8 - TRho_logT_min = -101d0 - TRho_logT_max = -101d0 - TRho_logRho_min = -101d0 - TRho_logRho_max = -101d0 - - - TRho_Profile_title = ' ' - TRho_Profile_txt_scale = 0.7 - TRho_Profile_xmin = -8.0 - TRho_Profile_xmax = 9.0 - TRho_Profile_ymin = 5.0 - TRho_Profile_ymax = 9.0 - - Text_Summary1_name(5,2) = 'time_step_sec' - Text_Summary1_name(6,2) = 'max_tau_conv' - - Grid8_file_flag = .true. - Grid8_file_dir = 'pgstar_out' - Grid8_file_prefix = 'grid8_' - Grid8_file_interval = 10000 - Grid8_file_width = -1 - Grid8_file_aspect_ratio = -1 - - / ! end of pgstar namelist - - - -Last-Updated: 08Jul2021 (MESA 094ff71) by fxt. +.. literalinclude:: ../../../star/test_suite/wd_nova_burst/plot.py + :language: python -.. # define a hard line break for HTML -.. |br| raw:: html +Last-Updated: 07Aug2024 (MESA 0b40398b) by wmwolf. -
+Last-Run: 07Aug2024 (MESA 0b40398b) by wmwolf on Hercules in 431 seconds using 20 threads. diff --git a/star/test_suite/wd_nova_burst/docs/wd_nova_burst_grid.svg b/star/test_suite/wd_nova_burst/docs/wd_nova_burst_grid.svg new file mode 100644 index 000000000..5ee57a994 --- /dev/null +++ b/star/test_suite/wd_nova_burst/docs/wd_nova_burst_grid.svg @@ -0,0 +1,8443 @@ + + + + + + + + 2024-08-07T10:36:47.644034 + image/svg+xml + + + Matplotlib v3.8.1, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/star/test_suite/wd_nova_burst/inlist_pgstar b/star/test_suite/wd_nova_burst/inlist_pgstar new file mode 100644 index 000000000..d4cf93dbc --- /dev/null +++ b/star/test_suite/wd_nova_burst/inlist_pgstar @@ -0,0 +1,64 @@ +&pgstar + + ! device + file_white_on_black_flag = .true. + file_device = 'vcps' ! postscript + file_extension = 'ps' + !file_device = 'png' ! png + !file_extension = 'png' + + pgstar_interval = 1 + + Grid8_win_flag = .true. + Grid8_win_width = 12 + Grid8_title = 'wd_nova_burst' + + Summary_Burn_xaxis_name = 'logxq' + Summary_Burn_xaxis_reversed = .true. + Summary_Burn_xmin = -14 ! -101d0 ! only used if /= -101d0 + Summary_Burn_xmax = -3 ! -101d0 ! only used if /= -101d0 + Summary_Burn_title = ' ' + + + Abundance_title = ' ' + Abundance_xaxis_name = 'logxq' + Abundance_xaxis_reversed = .true. + Abundance_xmin = -14 ! -101d0 ! only used if /= -101d0 + Abundance_xmax = -3 ! -101d0 ! only used if /= -101d0 + Abundance_txt_scale = 0.8 + Abundance_legend_max_cnt = 0 + + HR_title = ' ' + HR_txt_scale = 0.8 + HR_logT_min = 4.5 + HR_logT_max = 6.0 + HR_logL_min = -1.0 + HR_logL_max = 5.0 + + + TRho_title = ' ' + TRho_txt_scale = 0.8 + TRho_logT_min = -101d0 + TRho_logT_max = -101d0 + TRho_logRho_min = -101d0 + TRho_logRho_max = -101d0 + + + TRho_Profile_title = ' ' + TRho_Profile_txt_scale = 0.7 + TRho_Profile_xmin = -8.0 + TRho_Profile_xmax = 9.0 + TRho_Profile_ymin = 5.0 + TRho_Profile_ymax = 9.0 + + Text_Summary1_name(5,2) = 'time_step_sec' + Text_Summary1_name(6,2) = 'max_tau_conv' + + Grid8_file_flag = .true. + Grid8_file_dir = 'pgstar_out' + Grid8_file_prefix = 'grid8_' + Grid8_file_interval = 10000 + Grid8_file_width = -1 + Grid8_file_aspect_ratio = -1 + +/ ! end of pgstar namelist diff --git a/star/test_suite/wd_nova_burst/inlist_setup b/star/test_suite/wd_nova_burst/inlist_setup index cb46aa22a..ee9e1c644 100644 --- a/star/test_suite/wd_nova_burst/inlist_setup +++ b/star/test_suite/wd_nova_burst/inlist_setup @@ -4,35 +4,35 @@ &star_job - show_log_description_at_start = .false. - - load_saved_model = .true. - load_model_filename = '1.1M_lgTc_7.7.mod' ! from make_o_ne_wd test case + show_log_description_at_start = .false. - save_model_when_terminate = .true. - save_model_filename = 'ready.mod' - required_termination_code_string = 'max_age' - - change_initial_net = .true. - new_net_name = 'cno_extras_o18_to_mg26_plus_fe56.net' - auto_extend_net = .false. + load_saved_model = .true. + load_model_filename = '1.1M_lgTc_7.7.mod' ! from make_o_ne_wd test case - change_v_flag = .true. - new_v_flag = .true. + save_model_when_terminate = .true. + save_model_filename = 'ready.mod' + required_termination_code_string = 'max_age' - set_tau_factor = .true. - set_to_this_tau_factor = 30 + change_initial_net = .true. + new_net_name = 'cno_extras_o18_to_mg26_plus_fe56.net' + auto_extend_net = .false. - set_initial_dt = .true. - years_for_initial_dt = 1d6 + change_v_flag = .true. + new_v_flag = .true. - set_initial_age = .true. - initial_age = 0 + set_tau_factor = .true. + set_to_this_tau_factor = 30 - set_initial_model_number = .true. - initial_model_number = 0 + set_initial_dt = .true. + years_for_initial_dt = 1d6 - !pgstar_flag = .true. + set_initial_age = .true. + initial_age = 0 + + set_initial_model_number = .true. + initial_model_number = 0 + + !pgstar_flag = .true. / ! end of star_job namelist @@ -42,126 +42,126 @@ / &kap - Zbase = 0.02d0 + Zbase = 0.02d0 - use_Type2_opacities = .true. + use_Type2_opacities = .true. / ! end of kap namelist &controls - ! limit max_model_number as part of test_suite - max_model_number = 1800 ! 1300 - - max_age = 1d7 - + ! limit max_model_number as part of test_suite + max_model_number = 1800 ! 1300 + + max_age = 1d7 + ! solver - energy_eqn_option = 'eps_grav' - use_gold2_tolerances = .true. + energy_eqn_option = 'eps_grav' + use_gold2_tolerances = .true. + + limit_for_rel_error_in_energy_conservation = 1d-5 + hard_limit_for_rel_error_in_energy_conservation = 1d-3 + + use_gold_tolerances = .false. + warning_limit_for_max_residual = 1d99 + convergence_ignore_equL_residuals = .true. + + + mass_change_full_on_dt = 1d-6 ! (seconds) + mass_change_full_off_dt = 1d-6 ! (seconds) - limit_for_rel_error_in_energy_conservation = 1d-5 - hard_limit_for_rel_error_in_energy_conservation = 1d-3 + ! NOTE: for super eddington wind, + ! we use Ledd averaged over mass to optical depth tau = 100 + super_eddington_scaling_factor = 1 + ! parameter for mass loss driven by super Eddington luminosity + super_eddington_wind_Ledd_factor = 1 + ! multiply Ledd by this factor when computing super Eddington wind + ! e.g., if this is 2, then only get wind when L > 2*Ledd - use_gold_tolerances = .false. - warning_limit_for_max_residual = 1d99 - convergence_ignore_equL_residuals = .true. + mixing_length_alpha = 1.9 + MLT_option = 'Henyey' + use_Ledoux_criterion = .true. + alpha_semiconvection = 1d-3 + thermohaline_coeff = 1d3 - mass_change_full_on_dt = 1d-6 ! (seconds) - mass_change_full_off_dt = 1d-6 ! (seconds) + star_mass_max_limit = 1.301d0 - ! NOTE: for super eddington wind, - ! we use Ledd averaged over mass to optical depth tau = 100 - super_eddington_scaling_factor = 1 - ! parameter for mass loss driven by super Eddington luminosity - super_eddington_wind_Ledd_factor = 1 - ! multiply Ledd by this factor when computing super Eddington wind - ! e.g., if this is 2, then only get wind when L > 2*Ledd + !mass_change = 1d-9 + accrete_same_as_surface = .false. + accretion_h1 = 0.7000 ! Estimate Nomoto 2007 + accretion_h2 = 0 + accretion_he3 = 0.292910D-04 + accretion_he4 = 0.279971 ! Estimated Nomoto 2007 + accretion_zfracs = 4 ! Lodders 03 - mixing_length_alpha = 1.9 - MLT_option = 'Henyey' + min_timestep_limit = 1d-12 - use_Ledoux_criterion = .true. - alpha_semiconvection = 1d-3 - thermohaline_coeff = 1d3 + xa_function_species(1) = 'h1' ! name of nuclide as defined in chem_def + xa_function_weight(1) = 20 + xa_function_param(1) = 1d-6 + xa_function_species(2) = 'he4' ! name of nuclide as defined in chem_def + xa_function_weight(2) = 20 + xa_function_param(2) = 1d-2 - star_mass_max_limit = 1.301d0 - - !mass_change = 1d-9 - accrete_same_as_surface = .false. - accretion_h1 = 0.7000 ! Estimate Nomoto 2007 - accretion_h2 = 0 - accretion_he3 = 0.292910D-04 - accretion_he4 = 0.279971 ! Estimated Nomoto 2007 - accretion_zfracs = 4 ! Lodders 03 - - min_timestep_limit = 1d-12 + delta_lgL_H_limit = 0.1 ! limit for magnitude of change in lgL_H + lgL_H_burn_min = -0.5 ! ignore changes in lgL_H if value is less than this - xa_function_species(1) = 'h1' ! name of nuclide as defined in chem_def - xa_function_weight(1) = 20 - xa_function_param(1) = 1d-6 - xa_function_species(2) = 'he4' ! name of nuclide as defined in chem_def - xa_function_weight(2) = 20 - xa_function_param(2) = 1d-2 + delta_lgL_He_limit = 0.25 ! limit for magnitude of change in lgL_He + lgL_He_burn_min = 2.5 ! ignore changes in lgL_He if value is less than this - delta_lgL_H_limit = 0.1 ! limit for magnitude of change in lgL_H - lgL_H_burn_min = -0.5 ! ignore changes in lgL_H if value is less than this + delta_lgRho_limit = 1 ! limit for magnitude of max change in log10 density at any point + delta_lgRho_hard_limit = -1 - delta_lgL_He_limit = 0.25 ! limit for magnitude of change in lgL_He - lgL_He_burn_min = 2.5 ! ignore changes in lgL_He if value is less than this - - delta_lgRho_limit = 1 ! limit for magnitude of max change in log10 density at any point - delta_lgRho_hard_limit = -1 + delta_lgT_limit = 0.5 + delta_lgL_limit = 0.05 + delta_lgTeff_limit = 0.10 - delta_lgT_limit = 0.5 - delta_lgL_limit = 0.05 - delta_lgTeff_limit = 0.10 - - delta_lgL_nuc_limit = 0.05 - delta_lgL_nuc_hard_limit = 0.10 - lgL_nuc_burn_min = -3d0 + delta_lgL_nuc_limit = 0.05 + delta_lgL_nuc_hard_limit = 0.10 + lgL_nuc_burn_min = -3d0 - atm_option = 'T_tau' - atm_T_tau_relation = 'Eddington' - atm_T_tau_opacity = 'fixed' - Pextra_factor = 4 + atm_option = 'T_tau' + atm_T_tau_relation = 'Eddington' + atm_T_tau_opacity = 'fixed' + Pextra_factor = 4 - !varcontrol_target = 3d-4 + !varcontrol_target = 3d-4 - mesh_delta_coeff = 1.0 - max_allowed_nz = 20000 + mesh_delta_coeff = 1.0 + max_allowed_nz = 20000 - num_trace_history_values = 2 - trace_history_value_name(1) = 'rel_E_err' - trace_history_value_name(2) = 'log_rel_run_E_err' + num_trace_history_values = 2 + trace_history_value_name(1) = 'rel_E_err' + trace_history_value_name(2) = 'log_rel_run_E_err' - photo_interval = 50 - profile_interval = 50 - history_interval = 5 - terminal_interval = 10 - write_header_frequency = 10 + photo_interval = 50 + profile_interval = 50 + history_interval = 5 + terminal_interval = 10 + write_header_frequency = 10 / ! end of controls namelist &pgstar - Grid8_win_flag = .true. - Grid8_win_width = 7 - Summary_Burn_xaxis_name = 'logxq' - Summary_Burn_xaxis_reversed = .true. - Summary_Burn_xmin = -14 ! -101d0 ! only used if /= -101d0 - Summary_Burn_xmax = -3 ! -101d0 ! only used if /= -101d0 - Abundance_xaxis_name = 'logxq' - Abundance_xaxis_reversed = .true. - Abundance_xmin = -14 ! -101d0 ! only used if /= -101d0 - Abundance_xmax = -3 ! -101d0 ! only used if /= -101d0 + Grid8_win_flag = .true. + Grid8_win_width = 7 + Summary_Burn_xaxis_name = 'logxq' + Summary_Burn_xaxis_reversed = .true. + Summary_Burn_xmin = -14 ! -101d0 ! only used if /= -101d0 + Summary_Burn_xmax = -3 ! -101d0 ! only used if /= -101d0 + Abundance_xaxis_name = 'logxq' + Abundance_xaxis_reversed = .true. + Abundance_xmin = -14 ! -101d0 ! only used if /= -101d0 + Abundance_xmax = -3 ! -101d0 ! only used if /= -101d0 / ! end of pgstar namelist diff --git a/star/test_suite/wd_nova_burst/inlist_setup_header b/star/test_suite/wd_nova_burst/inlist_setup_header index 74cab97c4..c31f63313 100644 --- a/star/test_suite/wd_nova_burst/inlist_setup_header +++ b/star/test_suite/wd_nova_burst/inlist_setup_header @@ -2,24 +2,24 @@ &star_job - read_extra_star_job_inlist(2) = .true. - extra_star_job_inlist_name(2) = 'inlist_setup' + read_extra_star_job_inlist(2) = .true. + extra_star_job_inlist_name(2) = 'inlist_setup' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_setup' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_setup' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_setup' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_setup' / ! end of kap namelist @@ -27,8 +27,8 @@ &controls - read_extra_controls_inlist(2) = .true. - extra_controls_inlist_name(2)= 'inlist_setup' + read_extra_controls_inlist(2) = .true. + extra_controls_inlist_name(2)= 'inlist_setup' / ! end of controls namelist @@ -36,7 +36,7 @@ &pgstar - read_extra_pgstar_inlist(2) = .true. - extra_pgstar_inlist_name(2)= 'inlist_setup' + read_extra_pgstar_inlist(2) = .true. + extra_pgstar_inlist_name(2)= 'inlist_setup' / ! end of pgstar namelist diff --git a/star/test_suite/wd_nova_burst/inlist_wd_nova_burst b/star/test_suite/wd_nova_burst/inlist_wd_nova_burst index b9a6219db..e354063b9 100644 --- a/star/test_suite/wd_nova_burst/inlist_wd_nova_burst +++ b/star/test_suite/wd_nova_burst/inlist_wd_nova_burst @@ -4,35 +4,35 @@ &star_job - show_log_description_at_start = .false. - - load_saved_model = .true. - load_model_filename = 'ready.mod' ! from running inlist_setup + show_log_description_at_start = .false. - save_model_when_terminate = .true. - save_model_filename = 'final.mod' - required_termination_code_string = 'extras_check_model' + load_saved_model = .true. + load_model_filename = 'ready.mod' ! from running inlist_setup + + save_model_when_terminate = .true. + save_model_filename = 'final.mod' + required_termination_code_string = 'extras_check_model' ! save_model_when_terminate = .true. ! save_model_filename = 'start_of_wd_nova_burst.mod' ! required_termination_code_string = 'max_model_number' - set_initial_age = .true. - initial_age = 0 + set_initial_age = .true. + initial_age = 0 - set_initial_model_number = .true. - initial_model_number = 0 + set_initial_model_number = .true. + initial_model_number = 0 - set_tau_factor = .true. - set_to_this_tau_factor = 30 + set_tau_factor = .true. + set_to_this_tau_factor = 30 - set_initial_cumulative_energy_error = .true. - new_cumulative_energy_error = 0d0 + set_initial_cumulative_energy_error = .true. + new_cumulative_energy_error = 0d0 - set_initial_dt = .true. - years_for_initial_dt = 1d-5 + set_initial_dt = .true. + years_for_initial_dt = 1d-5 - !pgstar_flag = .true. + !pgstar_flag = .true. / ! end of star_job namelist @@ -42,127 +42,127 @@ &kap - Zbase = 0.02d0 + Zbase = 0.02d0 - use_Type2_opacities = .true. + use_Type2_opacities = .true. / ! end of kap namelist &controls - ! limit max_model_number as part of test_suite - !max_model_number = 223 - max_model_number = 2250 - + ! limit max_model_number as part of test_suite + !max_model_number = 223 + max_model_number = 2250 + ! solver - energy_eqn_option = 'eps_grav' - - use_gold2_tolerances = .false. - - limit_for_rel_error_in_energy_conservation = 1d-5 - hard_limit_for_rel_error_in_energy_conservation = 1d-3 - - warning_limit_for_max_residual = 1d99 - convergence_ignore_equL_residuals = .true. - - - mass_change_full_on_dt = 1d-6 ! (seconds) - mass_change_full_off_dt = 1d-6 ! (seconds) - - ! NOTE: for super eddington wind, - ! we use Ledd averaged over mass to optical depth tau = 100 - super_eddington_scaling_factor = 1 - ! parameter for mass loss driven by super Eddington luminosity - super_eddington_wind_Ledd_factor = 1 - ! multiply Ledd by this factor when computing super Eddington wind - ! e.g., if this is 2, then only get wind when L > 2*Ledd - - mixing_length_alpha = 1.9 - MLT_option = 'TDC' - - use_Ledoux_criterion = .true. - alpha_semiconvection = 1d-3 - thermohaline_coeff = 1d3 - - mass_change = 1d-9 - accrete_same_as_surface = .false. - accretion_h1 = 0.7000 ! Estimate Nomoto 2007 - accretion_h2 = 0 - accretion_he3 = 0.292910D-04 - accretion_he4 = 0.279971 ! Estimated Nomoto 2007 - accretion_zfracs = 4 ! Lodders 03 - - min_timestep_limit = 1d-12 - - xa_function_species(1) = 'h1' ! name of nuclide as defined in chem_def - xa_function_weight(1) = 20 - xa_function_param(1) = 1d-6 - xa_function_species(2) = 'he4' ! name of nuclide as defined in chem_def - xa_function_weight(2) = 20 - xa_function_param(2) = 1d-2 - - delta_lgL_H_limit = 0.1 ! limit for magnitude of change in lgL_H - lgL_H_burn_min = -0.5 ! ignore changes in lgL_H if value is less than this - - delta_lgL_He_limit = 0.25 ! limit for magnitude of change in lgL_He - lgL_He_burn_min = 2.5 ! ignore changes in lgL_He if value is less than this - - delta_lgRho_limit = 1 ! limit for magnitude of max change in log10 density at any point - delta_lgRho_hard_limit = -1 - - delta_lgT_limit = 0.5 - delta_lgL_limit = 0.05 - delta_lgTeff_limit = 0.10 - - delta_lgL_nuc_limit = 0.02 - delta_lgL_nuc_hard_limit = 0.20 - lgL_nuc_burn_min = -3d0 - - atm_option = 'T_tau' - atm_T_tau_relation = 'Eddington' - atm_T_tau_opacity = 'fixed' - Pextra_factor = 120 ! 4 * tau_factor - - !varcontrol_target = 3d-4 - - max_q_for_conv_timescale = 0.999999999d0 - - mesh_delta_coeff = 1.0 - max_allowed_nz = 20000 - - num_trace_history_values = 2 - trace_history_value_name(1) = 'rel_E_err' - trace_history_value_name(2) = 'log_rel_run_E_err' - - photo_interval = 50 - profile_interval = 50 - history_interval = 5 - terminal_interval = 10 - write_header_frequency = 10 - + energy_eqn_option = 'eps_grav' + + use_gold2_tolerances = .false. + + limit_for_rel_error_in_energy_conservation = 1d-5 + hard_limit_for_rel_error_in_energy_conservation = 1d-3 + + warning_limit_for_max_residual = 1d99 + convergence_ignore_equL_residuals = .true. + + + mass_change_full_on_dt = 1d-6 ! (seconds) + mass_change_full_off_dt = 1d-6 ! (seconds) + + ! NOTE: for super eddington wind, + ! we use Ledd averaged over mass to optical depth tau = 100 + super_eddington_scaling_factor = 1 + ! parameter for mass loss driven by super Eddington luminosity + super_eddington_wind_Ledd_factor = 1 + ! multiply Ledd by this factor when computing super Eddington wind + ! e.g., if this is 2, then only get wind when L > 2*Ledd + + mixing_length_alpha = 1.9 + MLT_option = 'TDC' + + use_Ledoux_criterion = .true. + alpha_semiconvection = 1d-3 + thermohaline_coeff = 1d3 + + mass_change = 1d-9 + accrete_same_as_surface = .false. + accretion_h1 = 0.7000 ! Estimate Nomoto 2007 + accretion_h2 = 0 + accretion_he3 = 0.292910D-04 + accretion_he4 = 0.279971 ! Estimated Nomoto 2007 + accretion_zfracs = 4 ! Lodders 03 + + min_timestep_limit = 1d-12 + + xa_function_species(1) = 'h1' ! name of nuclide as defined in chem_def + xa_function_weight(1) = 20 + xa_function_param(1) = 1d-6 + xa_function_species(2) = 'he4' ! name of nuclide as defined in chem_def + xa_function_weight(2) = 20 + xa_function_param(2) = 1d-2 + + delta_lgL_H_limit = 0.1 ! limit for magnitude of change in lgL_H + lgL_H_burn_min = -0.5 ! ignore changes in lgL_H if value is less than this + + delta_lgL_He_limit = 0.25 ! limit for magnitude of change in lgL_He + lgL_He_burn_min = 2.5 ! ignore changes in lgL_He if value is less than this + + delta_lgRho_limit = 1 ! limit for magnitude of max change in log10 density at any point + delta_lgRho_hard_limit = -1 + + delta_lgT_limit = 0.5 + delta_lgL_limit = 0.05 + delta_lgTeff_limit = 0.10 + + delta_lgL_nuc_limit = 0.02 + delta_lgL_nuc_hard_limit = 0.20 + lgL_nuc_burn_min = -3d0 + + atm_option = 'T_tau' + atm_T_tau_relation = 'Eddington' + atm_T_tau_opacity = 'fixed' + Pextra_factor = 120 ! 4 * tau_factor + + !varcontrol_target = 3d-4 + + max_q_for_conv_timescale = 0.999999999d0 + + mesh_delta_coeff = 1.0 + max_allowed_nz = 20000 + + num_trace_history_values = 2 + trace_history_value_name(1) = 'rel_E_err' + trace_history_value_name(2) = 'log_rel_run_E_err' + + photo_interval = 50 + profile_interval = 50 + history_interval = 5 + terminal_interval = 10 + write_header_frequency = 10 + / ! end of controls namelist &pgstar - Grid8_win_flag = .true. - Grid8_win_width = 7 - Summary_Burn_xaxis_name = 'logxq' - Summary_Burn_xaxis_reversed = .true. - Summary_Burn_xmin = -14 ! -101d0 ! only used if /= -101d0 - Summary_Burn_xmax = -3 ! -101d0 ! only used if /= -101d0 - Abundance_xaxis_name = 'logxq' - Abundance_xaxis_reversed = .true. - Abundance_xmin = -14 ! -101d0 ! only used if /= -101d0 - Abundance_xmax = -3 ! -101d0 ! only used if /= -101d0 - - Text_Summary1_name(5,2) = 'time_step_sec' - Text_Summary1_name(6,2) = 'max_tau_conv' - !Text_Summary1_name(7,2) = 'cz_bot_radius' - !Text_Summary1_name(8,2) = 'cz_top_radius' + Grid8_win_flag = .true. + Grid8_win_width = 7 + Summary_Burn_xaxis_name = 'logxq' + Summary_Burn_xaxis_reversed = .true. + Summary_Burn_xmin = -14 ! -101d0 ! only used if /= -101d0 + Summary_Burn_xmax = -3 ! -101d0 ! only used if /= -101d0 + Abundance_xaxis_name = 'logxq' + Abundance_xaxis_reversed = .true. + Abundance_xmin = -14 ! -101d0 ! only used if /= -101d0 + Abundance_xmax = -3 ! -101d0 ! only used if /= -101d0 + + Text_Summary1_name(5,2) = 'time_step_sec' + Text_Summary1_name(6,2) = 'max_tau_conv' + !Text_Summary1_name(7,2) = 'cz_bot_radius' + !Text_Summary1_name(8,2) = 'cz_top_radius' / ! end of pgstar namelist diff --git a/star/test_suite/wd_nova_burst/inlist_wd_nova_burst_header b/star/test_suite/wd_nova_burst/inlist_wd_nova_burst_header index d15b65c35..0a8fe6886 100644 --- a/star/test_suite/wd_nova_burst/inlist_wd_nova_burst_header +++ b/star/test_suite/wd_nova_burst/inlist_wd_nova_burst_header @@ -2,24 +2,24 @@ &star_job - read_extra_star_job_inlist(2) = .true. - extra_star_job_inlist_name(2) = 'inlist_wd_nova_burst' + read_extra_star_job_inlist(2) = .true. + extra_star_job_inlist_name(2) = 'inlist_wd_nova_burst' / ! end of star_job namelist &eos - read_extra_eos_inlist(1) = .true. - extra_eos_inlist_name(1) = 'inlist_wd_nova_burst' + read_extra_eos_inlist(1) = .true. + extra_eos_inlist_name(1) = 'inlist_wd_nova_burst' / ! end of eos namelist &kap - read_extra_kap_inlist(1) = .true. - extra_kap_inlist_name(1) = 'inlist_wd_nova_burst' + read_extra_kap_inlist(1) = .true. + extra_kap_inlist_name(1) = 'inlist_wd_nova_burst' / ! end of kap namelist @@ -27,8 +27,8 @@ &controls - read_extra_controls_inlist(2) = .true. - extra_controls_inlist_name(2)= 'inlist_wd_nova_burst' + read_extra_controls_inlist(2) = .true. + extra_controls_inlist_name(2)= 'inlist_wd_nova_burst' / ! end of controls namelist @@ -36,7 +36,7 @@ &pgstar - read_extra_pgstar_inlist(2) = .true. - extra_pgstar_inlist_name(2)= 'inlist_wd_nova_burst' + read_extra_pgstar_inlist(2) = .true. + extra_pgstar_inlist_name(2)= 'inlist_wd_nova_burst' / ! end of pgstar namelist diff --git a/star/test_suite/wd_nova_burst/plot.py b/star/test_suite/wd_nova_burst/plot.py new file mode 100644 index 000000000..79c072468 --- /dev/null +++ b/star/test_suite/wd_nova_burst/plot.py @@ -0,0 +1,207 @@ +import matplotlib.pyplot as plt +import numpy as np +import os +import mesa_reader as mr + +# if the directory plt_out/ does not exits, make it +if not os.path.exists("plt_out"): + os.makedirs("plt_out") + +# "MESA" styles for plotting +# note that this requires having a LaTeX installation locally. +# If you don't have that, you can comment out the "text.usetex" line. +plt.rcParams['figure.figsize'] = (3.38, 2.535) +plt.rcParams['lines.markersize'] = 4 +plt.rcParams['lines.linewidth'] = 1.5 +plt.rcParams["text.usetex"] = True +plt.rcParams["font.size"] = 10 +plt.rcParams["font.family"] = "serif" +plt.rcParams["font.serif"] = "Computer Modern Roman" +plt.rcParams['axes.titlesize'] = 'medium' +plt.rcParams['axes.labelsize'] = 'medium' +plt.rcParams['legend.fontsize'] = 8 +plt.rcParams['legend.frameon'] = False +plt.rcParams['figure.dpi'] = 300 + +plt.rcParams['xtick.direction'] = 'in' +plt.rcParams['ytick.direction'] = 'in' +plt.rcParams['xtick.top'] = True +plt.rcParams['ytick.right'] = True +plt.rcParams['xtick.minor.visible'] = True +plt.rcParams['ytick.minor.visible'] = True + +plt.rcParams['savefig.bbox'] = 'tight' +plt.rcParams['savefig.pad_inches'] = 0.1 +plt.rcParams['savefig.dpi'] = 300 +plt.rcParams['savefig.format'] = 'svg' + +plt.rcParams['axes.formatter.use_mathtext'] = True + +# read in the history data from MESA +l = mr.MesaLogDir("LOGS") +h = l.history +p = l.profile_data() + +import matplotlib.pyplot as plt +from matplotlib.gridspec import GridSpec + +# Create a figure +fig = plt.figure(figsize=(10, 6)) + +# Create a GridSpec with 6 rows and 3 columns +gs_outer = fig.add_gridspec(1,2, width_ratios=[1, 2]) +gs_left = gs_outer[0].subgridspec(2, 1, hspace=0.3) +gs_right = gs_outer[1].subgridspec(3, 2, hspace=0, wspace=0.75) + +# First column: Two plots of roughly equal height +ax1 = fig.add_subplot(gs_left[0]) +ax2 = fig.add_subplot(gs_left[1]) + +# Second column: Three stacked axes sharing the same x-axis +ax3 = fig.add_subplot(gs_right[0, 0]) +ax4 = fig.add_subplot(gs_right[1, 0]) +ax5 = fig.add_subplot(gs_right[2, 0]) + +# Third column: Three stacked axes sharing a different x-axis +ax6 = fig.add_subplot(gs_right[0, 1]) +ax7 = fig.add_subplot(gs_right[1, 1]) +ax8 = fig.add_subplot(gs_right[2, 1]) + +# HR diagram +ax1.loglog(h.Teff, h.L) +ax1.set_xlabel(r"Effective Temperature [K]") +ax1.set_ylabel(r"Luminosity [$L_{\odot}$]") +ax1.invert_xaxis() +# add marker to last point +ax1.plot(h.Teff[-1], h.L[-1], 'o', color='C3') + +# T-Rho Profile +# load data from MESA_DIR and save to arrays in T-Rho space +plot_info_dir = os.path.join(os.environ['MESA_DIR'], 'data/star_data/plot_info') + +# degeneracy data +psi4_file = os.path.join(plot_info_dir, 'psi4.data') +psi4_data = np.genfromtxt(psi4_file) +psi4_xs = 10**np.array(psi4_data.T[0]) +psi4_ys = 10**np.array(psi4_data.T[1]) + +# hydrogen burn line +hydrogen_burn_file = os.path.join(plot_info_dir, 'hydrogen_burn.data') +hydrogen_burn_data = np.genfromtxt(hydrogen_burn_file) +hydrogen_burn_xs = 10**np.array(hydrogen_burn_data.T[0]) +hydrogen_burn_ys = 10**np.array(hydrogen_burn_data.T[1]) + +# helium burn line +helium_burn_file = os.path.join(plot_info_dir, 'helium_burn.data') +helium_burn_data = np.genfromtxt(helium_burn_file) +helium_burn_xs = 10**np.array(helium_burn_data.T[0]) +helium_burn_ys = 10**np.array(helium_burn_data.T[1]) + +# plot raw T-Rho data; sets limits for us +ax2.loglog(p.Rho, p.T) + +# plot psi4 and hydrogen burn lines +# preserve limits... shouldn't have to do it like this, but +# autoscale commands always seem to fail. +x_left, x_right = ax2.get_xlim() +y_bottom, y_top = ax2.get_ylim() +ax2.plot(psi4_xs, psi4_ys, color='lightgrey', ls=':', zorder=-5) +ax2.plot(hydrogen_burn_xs, hydrogen_burn_ys, ls='--', color='lightgrey', zorder=-5) +ax2.plot(helium_burn_xs, helium_burn_ys, ls='--', color='lightgrey', zorder=-5) +ax2.set_xlim(x_left, x_right) +ax2.set_ylim(y_bottom, y_top) +ax2.set_xlabel(r"Density [g/cm$^3$]") +ax2.set_ylabel(r"Temperature [K]") + +# plot strong burning zones +high_burning = np.where(p.eps_nuc > 1e7, True, False) +mid_burning = np.where((p.eps_nuc > 1e3) & (p.eps_nuc < 1e7), True, False) +low_burning = np.where((p.eps_nuc > 1) & (p.eps_nuc < 1e3), True, False) +# temporarily set butt style to round +save_capstyle = plt.rcParams['lines.solid_capstyle'] +plt.rcParams['lines.solid_capstyle'] = 'round' +ax2.plot(p.Rho[high_burning], p.T[high_burning], marker='o', ls='', ms=6, color='C3', zorder=-1) +ax2.plot([], [], lw=6, color='C3', label=r"$\epsilon_{\mathrm{nuc}} > 10^7\,\mathrm{erg/g/s}$") +ax2.plot(p.Rho[mid_burning], p.T[mid_burning], marker='o', ls='', ms=4.5, color='C1', zorder=-2) +ax2.plot([], [], color='C1', lw=4.5, label=r"$\epsilon_{\mathrm{nuc}} > 10^3\,\mathrm{erg/g/s}$") +ax2.plot(p.Rho[low_burning], p.T[low_burning], marker='o', ls='', ms=3, color='goldenrod', zorder=-3) +ax2.plot([], [], color='goldenrod', lw=3, label=r"$\epsilon_{\mathrm{nuc}} > 1\,\mathrm{erg/g/s}$") +ax2.legend(loc='lower right') +# restore capstyle +plt.rcParams['lines.solid_capstyle'] = save_capstyle + +# time series for last 5 years +window = 5 + +# top panel: photospheric and H-burning luminosities +mask = h.star_age > (max(h.star_age) - window) +ax3.set_title("Last 5 Years") +ax3.semilogy(h.star_age[mask], h.L[mask], label=r"$L$") +ax3.semilogy(h.star_age[mask], h.LH[mask], ls='--', label=r"$L_{\mathrm{H}}$") +ax3.set_ylabel(r"Luminosity [$L_{\odot}$]") +ax3.legend(loc='upper left') +ax3.set_xticklabels([]) + +# temperature and radius +ax4.semilogy(h.star_age[mask], h.Teff[mask], label=r'$T_{\mathrm{eff}}$') +ax4.semilogy([], [], label=r'$R$', ls='--', color='C1') +ax4.legend(loc='upper left') +ax4b = ax4.twinx() +ax4b.semilogy(h.star_age[mask], h.R[mask], ls='--', color='C1') +ax4.set_ylabel(r"Eff. Temp. [K]", color='C0') +ax4b.set_ylabel('Radius [$R_{\odot}$]', color='C1') +ax4.set_xticklabels([]) + +# mass loss and envelope mass +ax5.semilogy(h.star_age[mask], h.star_mass[mask] - h.he_core_mass[mask], label=r'$\Delta M_{\mathrm{H}}$') +ax5.semilogy([], [], ls='--', label=r'$|\dot{M}|$') +ax5.legend(loc='center left') +ax5.set_ylabel(r"Envelope Mass [$M_{\odot}$]", color='C0') +ax5b = ax5.twinx() +ax5b.semilogy(h.star_age[mask], h.abs_mdot[mask], ls='--', color='C1') +ax5b.set_ylabel(r"$\left\vert\dot{M}\right\vert$ [$M_{\odot}$/yr]", color='C1') + +ax5.set_xlabel(r"Star Age [yr]") + +# profile at the end of the simulation +# first up, common isotope mass fractions +xm = p.star_mass - p.mass +for iso in ['h1', 'he4', 'c12', 'n14', 'o16']: + element = ''.join([i for i in iso if not i.isdigit()]).capitalize() + mass_number = ''.join([i for i in iso if i.isdigit()]) + tex_iso = r"${}^{" + mass_number + r"}$" + element + ax6.loglog(xm, p.data(iso), label=tex_iso) + +ax6.set_title("Final Profile") +ax6.set_ylim(4e-5, 1.5) +ax6.legend(loc='lower left') +ax6.set_ylabel(r"Mass Fraction") +ax6.set_xticklabels([]) + +# nuclear energy generation rates +ax7.loglog(xm, p.eps_nuc, label=r"$\epsilon_{\mathrm{nuc}}$") +ax7.loglog(xm, p.pp, ls='--', label=r"$\epsilon_{\mathrm{pp}}$") +ax7.loglog(xm, p.cno, ls=':', label=r"$\epsilon_{\mathrm{CNO}}$") +ax7.legend(loc='upper right') +ax7.set_ylabel(r"Specific Power [erg/g/s]") +ax7.set_xticklabels([]) +ax7.set_ylim(1e-6, 1e10) + +# basic thermodynamic quantities +ax8.loglog(xm, p.Rho, label='$\\rho$') +ax8.loglog([], [], ls='--', label='$T$') +ax8.set_ylim(2e-3, 2e6) +ax8.set_ylabel(r"Density [g/cm$^3$]", color='C0') +ax8b = ax8.twinx() +ax8b.loglog(xm, p.T, ls='--', color='C1') +ax8b.set_ylim(2e6, 1.25e8) +ax8b.set_ylabel(r"Temperature [K]", color='C1') +ax8.legend(loc='upper right') + +for ax in [ax6, ax7, ax8]: + ax.set_xlim(8e-4, 1e-10) +ax8.set_xlabel(r"Exterior Mass Coordinate [M$_{\odot}$]") + + +fig.savefig("plt_out/wd_nova_burst_grid.svg") + diff --git a/star/test_suite/zams_to_cc_80/gyre.in b/star/test_suite/zams_to_cc_80/gyre.in deleted file mode 100644 index e27703b48..000000000 --- a/star/test_suite/zams_to_cc_80/gyre.in +++ /dev/null @@ -1,32 +0,0 @@ -&model -/ - -&mode - l = 0 -/ - -&osc - nonadiabatic = .TRUE. -/ - -&rot -/ - -&num - diff_scheme = 'MAGNUS_GL2' -/ - -&scan - grid_type = 'LINEAR' - freq_min = 0.5 - freq_max = 5.0 - freq_min_units = 'ACOUSTIC_DELTA' - freq_max_units = 'ACOUSTIC_DELTA' - n_freq = 50 -/ - -&grid - w_osc = 10 - w_exp = 2 - w_ctr = 10 -/ diff --git a/star/test_suite/zams_to_cc_80/inlist_common b/star/test_suite/zams_to_cc_80/inlist_common index 5cfecd75c..a559aec6d 100644 --- a/star/test_suite/zams_to_cc_80/inlist_common +++ b/star/test_suite/zams_to_cc_80/inlist_common @@ -191,7 +191,7 @@ limit_for_rel_error_in_energy_conservation = 1d-7 hard_limit_for_rel_error_in_energy_conservation = 1d-6 - never_skip_hard_limits = .true + never_skip_hard_limits = .true. min_xa_hard_limit = -1d-5 min_xa_hard_limit_for_highT = -3d-5 diff --git a/star/test_suite/zams_to_cc_80/src/run_star_extras.f90 b/star/test_suite/zams_to_cc_80/src/run_star_extras.f90 index 70b5accc7..2cf66b188 100644 --- a/star/test_suite/zams_to_cc_80/src/run_star_extras.f90 +++ b/star/test_suite/zams_to_cc_80/src/run_star_extras.f90 @@ -27,7 +27,6 @@ module run_star_extras use const_def use math_lib use auto_diff - use gyre_lib implicit none @@ -40,18 +39,6 @@ module run_star_extras !alpha_other = s% x_ctrl(22) !H_limit = s% x_ctrl(23) -!gyre - !x_logical_ctrl(37) = .false. ! if true, then run GYRE - !x_integer_ctrl(1) = 2 ! output GYRE info at this step interval - !x_logical_ctrl(1) = .false. ! save GYRE info whenever save profile - !x_integer_ctrl(2) = 2 ! max number of modes to output per call - !x_logical_ctrl(2) = .false. ! output eigenfunction files - !x_integer_ctrl(3) = 0 ! mode l (e.g. 0 for p modes, 1 for g modes) - !x_integer_ctrl(4) = 1 ! order - !x_ctrl(1) = 0.158d-05 ! freq ~ this (Hz) - !x_ctrl(2) = 0.33d+03 ! growth < this (days) - - contains include "test_suite_extras.inc" @@ -121,22 +108,6 @@ subroutine extras_startup(id, restart, ierr) if (.not. s% x_logical_ctrl(37)) return - ! Initialize GYRE - - call gyre_init('gyre.in') - - ! Set constants - - call gyre_set_constant('G_GRAVITY', standard_cgrav) - call gyre_set_constant('C_LIGHT', clight) - call gyre_set_constant('A_RADIATION', crad) - - call gyre_set_constant('M_SUN', Msun) - call gyre_set_constant('R_SUN', Rsun) - call gyre_set_constant('L_SUN', Lsun) - - call gyre_set_constant('GYRE_DIR', TRIM(mesa_dir)//'/gyre/gyre') - end subroutine extras_startup @@ -170,7 +141,6 @@ subroutine extras_after_evolve(id, ierr) end select call test_suite_after_evolve(s, ierr) if (.not. s% x_logical_ctrl(37)) return - call gyre_final() end subroutine extras_after_evolve @@ -239,8 +209,6 @@ subroutine data_for_extra_profile_columns(id, n, nz, names, vals, ierr) end do end subroutine data_for_extra_profile_columns - include 'gyre_in_mesa_extras_finish_step.inc' - ! returns either keep_going or terminate. integer function extras_finish_step(id) integer, intent(in) :: id @@ -251,7 +219,6 @@ integer function extras_finish_step(id) if (ierr /= 0) return extras_finish_step = keep_going if (.not. s% x_logical_ctrl(37)) return - extras_finish_step = gyre_in_mesa_extras_finish_step(id) if (extras_finish_step == terminate) & s% termination_code = t_extras_finish_step end function extras_finish_step diff --git a/star_data/make/makefile_base b/star_data/make/makefile_base index a2bc458c8..f45ff6973 100644 --- a/star_data/make/makefile_base +++ b/star_data/make/makefile_base @@ -108,11 +108,6 @@ FULLDEPS ?= yes # However, for when one is playing around with internals, in a way that doesn't # affect public interfaces, it can be a time-saving measure to use order-only checking. -# reminders for Bill: the name of the file must be the same as the name of the module - # and no upper case letters in filenames. - # use COMPILE_LEGACY for old files that do not comply with f2008 standards. - # use .f for fixed format, .f90 for free - ifeq ($(filter clean,$(MAKECMDGOALS)),) DEPEND_DIRS = .:$(MOD_PUBLIC_DIR):$(MOD_PRIVATE_DIR) diff --git a/star_data/private/star_controls.inc b/star_data/private/star_controls.inc index 00cdac22c..855cc6a5f 100644 --- a/star_data/private/star_controls.inc +++ b/star_data/private/star_controls.inc @@ -432,6 +432,10 @@ logical :: use_T_tau_gradr_factor + ! starspots + logical :: do_starspots + real(dp) :: fspot, xspot + ! mass gain or loss real(dp) :: mass_change diff --git a/stella/res/stella_extras.f90 b/stella/res/stella_extras.f90 index ae516ea3b..c4b9939c3 100644 --- a/stella/res/stella_extras.f90 +++ b/stella/res/stella_extras.f90 @@ -13,11 +13,11 @@ program main implicit none integer :: i,j,k,zone,denjmax,idum,ierr - real*8, allocatable,dimension(:,:) :: & + real(dp), allocatable,dimension(:,:) :: & r,v,temp,den,kap,tempr,xm,smooth,tau,lum,n_bar,n_e - real*8, allocatable,dimension(:) :: & + real(dp), allocatable,dimension(:) :: & t,m,dm,h,he,c,n,o,ne,na,mg,al,si,s,ar,ca,fe,ni - real*8 :: dum,time,X,sum_tau,tauph,tau_extra,denmax,gdepos + real(dp) :: dum,time,X,sum_tau,tauph,tau_extra,denmax,gdepos character*132 runname,filestr,fname,test_str character*256 line, my_mesa_dir diff --git a/touch b/touch index afb48ead0..f39220bbe 100755 --- a/touch +++ b/touch @@ -27,7 +27,7 @@ do_one colors do_one const do_one eos do_one gyre -do_one hdf5io +do_one forum do_one interp_1d do_one interp_2d do_one ionization diff --git a/turb/make/makefile_base b/turb/make/makefile_base index e0f02317a..05b3ad991 100644 --- a/turb/make/makefile_base +++ b/turb/make/makefile_base @@ -58,7 +58,7 @@ nodeps : $(.DEFAULT_GOAL) ################################################################# # -# COMPULATION RULES +# COMPILATION RULES COMPILE_LEGACY = $(filter-out -std=f2008, $(COMPILE_TO_DEPLOY)) diff --git a/turb/private/tdc.f90 b/turb/private/tdc.f90 index d58eaf1d1..01d7e015f 100644 --- a/turb/private/tdc.f90 +++ b/turb/private/tdc.f90 @@ -245,8 +245,8 @@ subroutine bracket_plus_Newton_search(info, scale, Y_is_positive, Zlb, Zub, Y_fa integer, intent(out) :: tdc_num_iters integer, intent(out) :: ierr - type(auto_diff_real_tdc) :: Y, Z, Q, Q_lb, Q_ub, Qc, Z_new, correction, lower_bound_Z, upper_bound_Z - type(auto_diff_real_tdc) :: dQdZ, Q0 + type(auto_diff_real_tdc) :: Y, Z, Q, Qc, Z_new, correction, lower_bound_Z, upper_bound_Z + type(auto_diff_real_tdc) :: dQdZ integer :: iter, line_iter logical :: converged, have_derivatives, corr_has_derivatives real(dp), parameter :: correction_tolerance = 1d-13 diff --git a/turb/private/tdc_support.f90 b/turb/private/tdc_support.f90 index fc9372fc9..25795ebc1 100644 --- a/turb/private/tdc_support.f90 +++ b/turb/private/tdc_support.f90 @@ -566,7 +566,7 @@ function eval_Af(dt, A0, xi0, xi1, xi2) result(Af) real(dp), intent(in) :: dt type(auto_diff_real_tdc), intent(in) :: A0, xi0, xi1, xi2 type(auto_diff_real_tdc) :: Af ! output - type(auto_diff_real_tdc) :: J2, J, Jt4, num, den, y_for_atan, root, lk + type(auto_diff_real_tdc) :: J2, J, Jt4, num, den, y_for_atan, root J2 = pow2(xi1) - 4d0 * xi0 * xi2 diff --git a/turb/test/src/test_turb.f90 b/turb/test/src/test_turb.f90 index 4e609463c..ef9b77c15 100644 --- a/turb/test/src/test_turb.f90 +++ b/turb/test/src/test_turb.f90 @@ -84,7 +84,6 @@ subroutine compare_TDC_and_Cox_MLT() character(len=3) :: MLT_option integer :: mixing_type, ierr, tdc_num_iters logical :: report - integer :: j include 'formats' @@ -155,7 +154,7 @@ subroutine check_TDC() real(dp) :: mixing_length_alpha, conv_vel_start, alpha_TDC_DAMP, alpha_TDC_DAMPR, alpha_TDC_PtdVdt, dt, cgrav, m, scale type(auto_diff_real_star_order1) :: & r, L, T, P, opacity, rho, dV, chiRho, chiT, Cp, gradr, grada, scale_height, gradL - type(auto_diff_real_star_order1) :: gradT, Y_face, conv_vel, D, Gamma + type(auto_diff_real_star_order1) :: gradT, Y_face, conv_vel, D integer :: mixing_type, ierr, tdc_num_iters logical :: report integer :: j diff --git a/utils/makefile_header b/utils/makefile_header index c2cb98a7e..2760066f1 100644 --- a/utils/makefile_header +++ b/utils/makefile_header @@ -131,9 +131,12 @@ SKIP_NAN_TRAPS = YES #SKIP_NAN_TRAPS = NO # if not SKIP_NAN_TRAPS, then also add $(FCtrapNANs) to FCbasic2 -FCbasic = -Wno-uninitialized -fno-range-check -fmax-errors=7 $(SPECIAL_FC_FLAGS) $(FCbasic2) +FCbasic = -Wno-uninitialized -fno-range-check -fmax-errors=7 -fdiagnostics-color $(SPECIAL_FC_FLAGS) $(FCbasic2) FCbasic2 = -fprotect-parens -fno-sign-zero -fbacktrace -ggdb -finit-real=snan +# For debugging, you may want to try some of these options: +# -Wall -Wextra -Wimplicit-interface -Wno-unused-function -fPIC -g -fcheck=all,no-array-temps -fbacktrace -ffpe-trap=invalid,zero,overflow -finit-real=snan -finit-integer=-99999999 + # Set the fortran standard to compile against, files that can't be compiled to the standard and are # unfixable should add a statement like: $(filter-out -std=f2008, $(COMPILE)) # to filter out the option in their makefile @@ -144,7 +147,7 @@ FCstandard = -std=f2008 -Wno-error=tabs FCimpno = -fimplicit-none FCchecks = -fbounds-check -Wuninitialized -Warray-bounds -FCwarn = -Wunused-value -W -Wno-compare-reals -Wno-unused-parameter -Wno-function-elimination +FCwarn = -Wunused-value -W -Wno-compare-reals -Wno-unused-parameter -Wno-function-elimination -Waliasing #FCwarn = -Wunused-value -Werror -W -Wno-compare-reals -Wno-unused-parameter FCtrapNANs = -ffpe-trap=invalid,overflow,zero # -Wno-unused-parameter @@ -247,7 +250,7 @@ LOCAL_LIB_DIR = $(PACKAGE_DIR)/make MESA_LIB_DIR = $(MESA_DIR)/lib MESA_INCLUDE_DIR = $(MESA_DIR)/include TEST_INCLUDES = -I$(LOCAL_LIB_DIR) -I$(PACKAGE_DIR)/public -I$(MESA_INCLUDE_DIR) -TEST_COMPILE_FLAGS = $(FCbasic) $(FCopenmp) $(TEST_INCLUDES) $(FCchecks) $(FCdebug) $(LIB_FLAGS) -c +TEST_COMPILE_FLAGS = $(FCbasic) $(FCopenmp) $(TEST_INCLUDES) $(FCchecks) $(FCdebug) $(LIB_FLAGS) $(FCstandard) $(FCimpno) -c TEST_COMPILE = $(FC) $(TEST_COMPILE_FLAGS) $(LD_FLAGS) # Library lists / linking commands @@ -257,7 +260,7 @@ LOAD_MATRIX_INT = $(addprefix -l,$(LIBS_MATRIX)) LOAD_MATRIX_EXT = $(LOAD_CRMATH) $(LOAD_LAPACK95) $(LOAD_LAPACK) $(LOAD_BLAS) LOAD_MATRIX = $(LOAD_MATRIX_INT) $(LOAD_MATRIX_EXT) -LIBS_MESA_NUMERICS = interp_2d interp_1d num auto_diff hdf5io $(LIBS_MATRIX) +LIBS_MESA_NUMERICS = interp_2d interp_1d num auto_diff forum $(LIBS_MATRIX) LOAD_MESA_NUMERICS_INT = $(addprefix -l,$(LIBS_MESA_NUMERICS)) LOAD_MESA_NUMERICS_EXT = $(LOAD_MATRIX_EXT) $(LOAD_HDF5) LOAD_MESA_NUMERICS = $(LOAD_MESA_NUMERICS_INT) $(LOAD_MESA_NUMERICS_EXT) @@ -272,7 +275,7 @@ LOAD_MESA_MACRO_INT = $(addprefix -l,$(LIBS_MESA_MACRO)) LOAD_MESA_MACRO_EXT = $(LOAD_MESA_MICRO_EXT) LOAD_MESA_MACRO = $(LOAD_MESA_MACRO_INT) $(LOAD_MESA_MACRO_EXT) -LIBS_MESA_STAR_SUPPORT = gyre $(LIBS_MESA_MACRO) +LIBS_MESA_STAR_SUPPORT = $(LIBS_GYRE) $(LIBS_MESA_MACRO) LOAD_MESA_STAR_SUPPORT_INT = $(addprefix -l,$(LIBS_MESA_STAR_SUPPORT)) LOAD_MESA_STAR_SUPPORT_EXT = $(LOAD_MESA_MACRO_EXT) $(LD_FLAGS) LOAD_MESA_STAR_SUPPORT = $(LOAD_MESA_STAR_SUPPORT_INT) $(LOAD_MESA_STAR_SUPPORT_EXT) @@ -294,6 +297,13 @@ LOAD_MESA_STAR = $(LOAD_MESA_STAR_INT) $(LOAD_MESA_STAR_EXT) LIBS_MESA_BINARY = binary $(LIBS_MESA_STAR) LOAD_MESA_BINARY_INT = -L$(MESA_LIB_DIR) $(addprefix -l,$(LIBS_MESA_BINARY)) +ifeq ($(USE_GYRE),YES) + LIBS_GYRE = gyre_mesa gyre +else + LIBS_GYRE = gyre_mesa +endif +LOAD_GYRE = -L$(MESA_LIB_DIR) $(addprefix -l,$(LIBS_GYRE)) + ifeq ($(USE_PGSTAR),YES) LOAD_MESA_BINARY_EXT = $(LOAD_STAR_MODS_EXT) $(LOAD_PGPLOT) else diff --git a/utils/private/utils_c_system.c b/utils/private/utils_c_system.c index d8b9f047a..209aa3577 100644 --- a/utils/private/utils_c_system.c +++ b/utils/private/utils_c_system.c @@ -23,251 +23,195 @@ //! //! *********************************************************************** -#include -#include -#include -#include /* mkdir(2) */ +#include "utils_c_system.h" +#include #include #include -#include -#include -#include #include -#include -#include "utils_c_system.h" +#include +#include +#include +#include /* mkdir(2) */ +#include +#include -static const int SUCCESS=0; -static const int PATHLEN=4096; -static const char TEMPLATE[]="/.temp-XXXXXX"; -static const int LEN_TEMP=strlen(TEMPLATE); +#define PATHLEN 4096 +static const int SUCCESS = 0; +static const char TEMPLATE[] = ".temp-XXXXXX"; /* Makes a single directory at path (mkdir path) */ -int c_mkdir(const char * restrict path) { - - // If folder already exists return, don't relay on EEXIST as sometimes EACCES happens first - if(is_dir(path)==1) +int c_mkdir(const char *restrict path) { + + // If folder already exists return, don't relay on EEXIST as sometimes + // EACCES happens first + if (is_dir(path) == 1) { return SUCCESS; - + } + if (mkdir(path, S_IRWXU) != SUCCESS) { - if (errno != EEXIST){ - printf("MKDIR error on '%s' Errno %d :: %s\n",path, errno, strerror(errno)); - return -1; - } + if (errno != EEXIST) { + printf("MKDIR error on '%s' Errno %d :: %s\n", path, errno, + strerror(errno)); + return -1; + } } return SUCCESS; } -/* Makes a directory at path, potentially making needed parent directories (mkdir -p path) */ -int c_mkdir_p(const char * restrict path) { +/* Makes a directory at path, potentially making needed parent directories + * (mkdir -p path) */ +int c_mkdir_p(const char *restrict path) { char _path[PATHLEN]; - char *p; - - // If folder already exists return, don't relay on EEXIST as sometimes EACCES happens first - if(is_dir(path)==1) + char *p; + + // If folder already exists return, don't relay on EEXIST as sometimes + // EACCES happens first + if (is_dir(path) == 1) { return SUCCESS; + } + + if (strlen(path) >= PATHLEN) { + return -1; + } + + strcpy(_path, path); - strncpy(_path, path,PATHLEN); - /* Iterate the string */ for (p = _path + 1; *p; p++) { if (*p == '/') { /* Temporarily truncate */ *p = '\0'; - if(c_mkdir(_path) != SUCCESS) + if (c_mkdir(_path) != SUCCESS) { return -1; + } *p = '/'; } - } - if(c_mkdir(_path) != SUCCESS) + } + if (c_mkdir(_path) != SUCCESS) { return -1; + } return SUCCESS; } - -int is_dir(const char * restrict path) { - DIR* dir = opendir(path); - if(dir){ +int is_dir(const char *restrict path) { + DIR *dir = opendir(path); + if (dir) { closedir(dir); return 1; } else { return 0; } - } - /* Moves file src to dest (mv src dest) * if src and dest are on the same filesystem, then mv the files * if not, copy src to a temp file on same filesystem as dest then mv the temp - * file to dest, this prevents the filesystem ever being in a inconsistent state. - * dest either does not exist or does exist and is "full", thus we prevent problems - * with other programs reading the file before its finished being written. + * file to dest, this prevents the filesystem ever being in a inconsistent + * state. dest either does not exist or does exist and is "full", thus we + * prevent problems with other programs reading the file before its finished + * being written. */ -int c_mv(const char * restrict src, const char * restrict dest) { - char realSrc[PATHLEN], realDest[PATHLEN]; - char *tmp; - char destDir[PATHLEN], srcFile[PATHLEN], temp[PATHLEN], copy[PATHLEN]; - struct stat srcStat, destStat, destDirStat; - int remove_dest, fTemp, index; - bool dbg = false; - - remove_dest = 0; - /* Get real paths for files */ - realpath(src, realSrc); - - /* Cant use realpath as file might not exist yet */ - strncpy(realDest,dest,PATHLEN); - - if (stat(realDest,&destStat) == 0) - if (!S_ISREG(destStat.st_mode)) - strncat(realDest,"/",PATHLEN - strlen(realDest) - 1); - - if(dbg){ - printf("mv %s to %s\n",src, dest); - printf("mv %s to %s\n",realSrc, realDest); +int c_mv(const char *restrict src, const char *restrict dest) { + char dest_temp[PATHLEN]; + + if (rename(src, dest) == SUCCESS) { + return SUCCESS; } - - /* Get folder where output will go */ - strncpy(copy, realDest, PATHLEN); - tmp = dirname(copy); - strncpy(destDir, tmp, PATHLEN-1); - - /* If destination folder does not end in a / add one */ - index = strlen(destDir); - if(index > PATHLEN-2) - return -2; - - if(strcmp(&destDir[index],"/") != 0){ - destDir[index+1] = '/'; - destDir[index+2] = '\0'; + + if (errno != EXDEV) { + return -1; } - - /* Get basename of input file */ - strncpy(copy, realSrc, PATHLEN); - tmp = basename(copy); - strncpy(srcFile, tmp, PATHLEN-1); - - if(dbg) - printf("+ %s %s %s %s\n",srcFile, realSrc, destDir, realDest); - - /* Does input file exist? */ - if (stat(realSrc,&srcStat) < 0) + + if (strlen(dest) >= PATHLEN) { return -1; - - /* Does output exist? */ - if (stat(realDest,&destStat) == 0){ - if(dbg) - printf("** %s %s\n", realDest, srcFile); - - /* Check if folder*/ - if (S_ISREG(destStat.st_mode)){ - /* If a file allready, mark for removal*/ - remove_dest = 1; - } else { - /* is folder, append src filename to foldername */ - strcat(realDest, srcFile); + } + + strcpy(dest_temp, dest); + + size_t i = strlen(dest); + while (i) { + if (dest_temp[i - 1] == '/') { + break; } - } - if(dbg) - printf("*** %s %s\n",destDir, realDest); - - /* Get stat for output folder */ - if(stat(destDir, &destDirStat)) - return -2; - - /* is src and dest on the same file system? */ - if (srcStat.st_dev == destDirStat.st_dev){ - /* Delete output file if it exists */ - if(remove_dest) - remove(realDest); - - if(dbg) - printf("%s %s\n", realSrc, realDest); - /* Move src to dest */ - if(rename(realSrc, realDest) != SUCCESS) - return -3; - - } else{ - /* Copy src to a temp file on dest then move to final location */ - - /* Build temporay filename */ - strncpy(temp, destDir, PATHLEN - LEN_TEMP); - strncat(temp, TEMPLATE, PATHLEN - strlen(temp) - 1); - - /* Make temp file */ - fTemp = mkstemp(temp); - if (fTemp < 0) - goto error; - /* Just need the file made dont need the file descriptor */ - close(fTemp); - - /* Copy data to temp file */ - if (c_cp(realSrc, temp) != SUCCESS) - goto error; - - /* Delete output file if it exists */ - if(remove_dest) - remove(realDest); - - /* Move from temp to final dest */ - if(rename(temp, realDest) != SUCCESS) - goto error; - - /* Remove orignal */ - remove(realSrc); + + i--; + } + + if (strlen(TEMPLATE) >= PATHLEN - i) { + return -1; + } + + strcpy(dest_temp + i, TEMPLATE); + + int fd = mkstemp(dest_temp); + + if (fd == -1) { + return -1; + } + + close(fd); + + if (c_cp(src, dest_temp) != SUCCESS) { + remove(dest_temp); + return -1; } - + + if (rename(dest_temp, dest) != SUCCESS) { + remove(dest_temp); + return -1; + } + + remove(src); + return SUCCESS; - - error: - remove(temp); - if(fTemp >= 0) - close(fTemp); - return -8; - } - /* copies file src to dest (cp src dest) */ -int c_cp(const char * restrict src, const char * restrict dest) -{ - const int BUF_SIZE=4096; +int c_cp(const char *restrict src, const char *restrict dest) { + const int BUF_SIZE = 4096; int fd_src, fd_dest; char buf[BUF_SIZE]; ssize_t numRead; - const int dbg=false; + const int dbg = false; - if(dbg) - printf("cp %s to %s\n",src,dest); + if (dbg) { + printf("cp %s to %s\n", src, dest); + } fd_src = open(src, O_RDONLY); - if (fd_src < 0) + if (fd_src < 0) { return -1; + } - fd_dest = open(dest, O_CREAT | O_WRONLY | O_TRUNC,S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP |S_IROTH); - if (fd_dest < 0) + fd_dest = open(dest, O_CREAT | O_WRONLY | O_TRUNC, + S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH); + if (fd_dest < 0) { goto error; + } - while ((numRead = read(fd_src, buf, BUF_SIZE)) > 0){ - if (write(fd_dest, buf, numRead) != numRead) + while ((numRead = read(fd_src, buf, BUF_SIZE)) > 0) { + if (write(fd_dest, buf, numRead) != numRead) { goto error; + } } - - if(numRead == -1) + + if (numRead == -1) { goto error; - + } + close(fd_src); close(fd_dest); - + return SUCCESS; - error: - close(fd_src); - if (fd_dest >= 0) - close(fd_dest); - return -2; +error: + close(fd_src); + if (fd_dest >= 0) { + close(fd_dest); + } + return -2; } diff --git a/utils/private/utils_c_system.h b/utils/private/utils_c_system.h index 6f9b0153d..2f6819975 100644 --- a/utils/private/utils_c_system.h +++ b/utils/private/utils_c_system.h @@ -23,8 +23,8 @@ //! //! *********************************************************************** -int c_mkdir(const char * restrict path); -int c_mkdir_p(const char * restrict path); -int c_mv(const char * restrict src, const char * restrict dest); -int c_cp(const char * restrict src, const char * restrict dest); -int is_dir(const char * restrict path); +int c_mkdir(const char *restrict path); +int c_mkdir_p(const char *restrict path); +int c_mv(const char *restrict src, const char *restrict dest); +int c_cp(const char *restrict src, const char *restrict dest); +int is_dir(const char *restrict path); diff --git a/utils/private/utils_dict.f90 b/utils/private/utils_dict.f90 index 58bda6395..5078ccada 100644 --- a/utils/private/utils_dict.f90 +++ b/utils/private/utils_dict.f90 @@ -458,7 +458,7 @@ recursive subroutine do_enter_hash(dict, hash, hash_size, collisions) integer, intent(in) :: hash_size integer, intent(inout) :: collisions type (integer_dict), pointer :: node, next - integer :: hashkey, size, i + integer :: hashkey, i logical :: okay if (.not. associated(dict)) return node => dict diff --git a/utils/private/utils_idict.f90 b/utils/private/utils_idict.f90 index c582b934a..7a9d14b5a 100644 --- a/utils/private/utils_idict.f90 +++ b/utils/private/utils_idict.f90 @@ -461,7 +461,7 @@ recursive subroutine do_enter_hash(idict, hash, hash_size, collisions) integer, intent(in) :: hash_size integer, intent(inout) :: collisions type (integer_idict), pointer :: node, next - integer :: hashkey, size, i + integer :: hashkey, i logical :: okay if (.not. associated(idict)) return node => idict diff --git a/utils/public/utils_lib.f90 b/utils/public/utils_lib.f90 index 1a4bc5d94..acdff16d6 100644 --- a/utils/public/utils_lib.f90 +++ b/utils/public/utils_lib.f90 @@ -73,6 +73,7 @@ subroutine get_compiler_version(compiler_name,compiler_version_name) character(len=*) :: compiler_name, compiler_version_name integer :: intel_compiler_build_date = 0, gcc_major = 0, gcc_minor = 0, gcc_patch = 0 character(len=3) :: gcc_major_string, gcc_minor_string, gcc_patch_string + if (.false.) intel_compiler_build_date = 0 #ifdef __INTEL_COMPILER compiler_name = "ifort" intel_compiler_build_date = __INTEL_COMPILER_BUILD_DATE @@ -620,7 +621,6 @@ integer function token(iounit, n, i, buffer, string) integer, intent(inout) :: i ! number of characters already read from buffer character (len=*), intent(inout) :: buffer ! line of text from input file character (len=*), intent(inout) :: string ! holds string or name for string or name token - character (len=1) :: tab_str integer :: info, j, j1, j2, l, str_len diff --git a/utils/test/src/test_utils.f90 b/utils/test/src/test_utils.f90 index 3bc3e9826..9f01d3c5b 100644 --- a/utils/test/src/test_utils.f90 +++ b/utils/test/src/test_utils.f90 @@ -15,91 +15,6 @@ program test_utils contains - - - subroutine test(ierr) - integer, intent(out) :: ierr - real(dp), dimension(:,:), pointer :: a - real(dp) :: x, y - integer :: i - ierr = 0 - - !write(*,*) 'start test on mic' - !flush(6) - - allocate(a(10,20),stat=ierr) - if (ierr /= 0) then - write(*,*) 'alloc2 failed on mic' - write(*,'(A)') - flush(6) - return - end if - deallocate(a,stat=ierr) - if (ierr /= 0) then - write(*,*) 'deallocate(a,stat=ierr) failed on mic' - write(*,'(A)') - flush(6) - return - end if - - call alloc2(10,20,a,ierr) - if (ierr /= 0) then - write(*,*) 'alloc2 failed on mic' - write(*,'(A)') - flush(6) - return - end if - - call enlarge_if_needed_2(a,12,30,1,ierr) - if (ierr /= 0) then - write(*,*) 'enlarge_if_needed_2 failed on mic' - write(*,'(A)') - flush(6) - return - end if - - a(1,1) = -1 - a = 0 - - ! NOTE: don't write NaN or Infinity - ! since compilers don't all agree on text representations - ! and you'll get bogus failure for the ndiff check. - - x = a(1,2) - if (is_bad(x)) then - write(*,*) 'x', x - write(*,*) 'bad num', is_bad(x) - write(*,'(A)') - flush(6) - ierr = -1 - return - end if - - y = 1d99 - do i=1,10 - y = y**2 - end do - if (.not. is_bad(y)) then - write(*,*) 'y', y - write(*,*) 'bad num', is_bad(y) - write(*,'(A)') - flush(6) - ierr = -1 - return - end if - - deallocate(a,stat=ierr) - if (ierr /= 0) then - write(*,*) 'deallocate failed on mic' - write(*,'(A)') - flush(6) - return - end if - - !write(*,*) 'done test on mic' - !flush(6) - - end subroutine test subroutine test_dict