From f668856e96249cbe6571b252eee97d765a17e350 Mon Sep 17 00:00:00 2001 From: "Federico E. Benelli" Date: Mon, 14 Oct 2024 11:10:18 -0300 Subject: [PATCH 01/40] removed fitting procedures and programs, will go to another lib --- app/fit.f90 | 108 ---------------- src/fitting/fit_kij_lij.f90 | 98 -------------- src/fitting/fit_nrtl_mhv.f90 | 55 -------- src/fitting/fitting.f90 | 200 ----------------------------- test/test_fitting/test_fitting.f90 | 146 --------------------- test/test_runner.f90 | 11 +- 6 files changed, 1 insertion(+), 617 deletions(-) delete mode 100644 app/fit.f90 delete mode 100644 src/fitting/fit_kij_lij.f90 delete mode 100644 src/fitting/fit_nrtl_mhv.f90 delete mode 100644 src/fitting/fitting.f90 delete mode 100644 test/test_fitting/test_fitting.f90 diff --git a/app/fit.f90 b/app/fit.f90 deleted file mode 100644 index d62e871fa..000000000 --- a/app/fit.f90 +++ /dev/null @@ -1,108 +0,0 @@ -program main - !! Binary system parameter optimization - use yaeos, only: EquilibriumState, pr, ArModel, SoaveRedlichKwong, CubicEoS, saturation_pressure, PengRobinson78 - use forsus, only: Substance, forsus_dir - use yaeos__fitting, only: FittingProblem, error_function, optimize - use yaeos__optimizers_powell_wrap, only: PowellWrapper - integer, parameter :: nc = 2 - integer :: i, infile, iostat - - type(EquilibriumState), allocatable :: exp_points(:) - type(EquilibriumState) :: point - - type(Substance) :: sus(nc) - - type(PowellWrapper) :: opt - - class(ArModel), allocatable :: model - - real(pr) :: T, P, x1, y1, told, error - character(len=14) :: kind - - ! ========================================================================== - ! Setup components and read data file - ! -------------------------------------------------------------------------- - forsus_dir = "build/dependencies/forsus/data/json" - sus(1) = Substance("nitrogen", only=["critical"]) - sus(2) = Substance("n-octane", only=["critical"]) - - allocate (exp_points(0)) - open (newunit=infile, file="fit_case", iostat=iostat) - do - read (infile, *, iostat=iostat) kind, t, p, x1, y1 - if (iostat /= 0) exit - select case (kind) - case ("bubble", "dew", "liquid-liquid") - point = EquilibriumState( & - kind=kind, T=T, P=P, x=[x1, 1 - x1], y=[y1, 1 - y1], & - Vx=0._pr, Vy=0._pr, iters=0, beta=0._pr & - ) - end select - exp_points = [exp_points, point] - end do - close (infile) - - ! ========================================================================== - ! Setup optimization problem and call the optimization function - ! -------------------------------------------------------------------------- - - ! First set up the model to be used - model = PengRobinson78(& - sus%critical%critical_temperature%value, & - sus%critical%critical_pressure%value/1e5, & - sus%critical%acentric_factor%value & - ) - - call fit_kij_lij(model, exp_points) - - call exit - - ! =========================================================================== - ! Write out results and experimental values - ! --------------------------------------------------------------------------- - told = exp_points(1)%T - do i = 1, size(exp_points) - point = saturation_pressure( & - model, exp_points(i)%x, exp_points(i)%t, kind="bubble", & - p0=exp_points(i)%p, y0=exp_points(i)%y & - ) - if (told /= point%t) write (*, "(/)") - print *, exp_points(i)%x(1), exp_points(i)%y(1), exp_points(i)%P, & - point%x(1), point%y(1), point%P - told = point%T - end do - -contains - - subroutine fit_kij_lij(model, exp_points) - use yaeos__fitting_fit_kij_lij, only: FitKijLij - class(ArModel), intent(in) :: model - type(EquilibriumState), intent(in) :: exp_points(:) - type(FitKijLij) :: prob - integer, parameter :: np=2 - real(pr) :: X(np) - ! Set up the optimization problem settings - prob = FitKijLij(& - model=model, experimental_points=exp_points, & - verbose=.true., fit_kij=.true., fit_lij=.true. & - ) - - ! Set up the experimental points - prob%experimental_points = exp_points - - ! Fit Kij and Lij - prob%fit_kij = .true. - prob%fit_lij = .true. - prob%verbose = .true. - - ! Initial X value - X = 0.01 - opt%parameter_step = [0.01, 0.01] - print *, "X0:", X - error = optimize(X, opt, prob) - print *, "FO:", error - print *, "Xf:", X - - call prob%get_model_from_X(X) - end subroutine fit_kij_lij -end program main diff --git a/src/fitting/fit_kij_lij.f90 b/src/fitting/fit_kij_lij.f90 deleted file mode 100644 index a9663e653..000000000 --- a/src/fitting/fit_kij_lij.f90 +++ /dev/null @@ -1,98 +0,0 @@ -module yaeos__fitting_fit_kij_lij - !! Binary interaction parameters fitting problem. - use yaeos__fitting, only: pr, FittingProblem, ArModel - implicit none - - integer, parameter :: nc=2 - type, extends(FittingProblem) :: FitKijLij - !! # Binary Interaction Parameters of Cubic EoS fitting problem - !! Fit the binary interaction parameters of a mixtures. - !! - !! # Description - !! Fitting setup for quadratic combining rules, it is possible to select - !! which parameters will be optimized with the `fit_lij` and `fit_kij` - !! attributes. - !! - !! # Examples - !! - !! ## Fit the kij BIP - !! - !! ```fortran - !! type(CubicEoS) :: model ! Model to fit - !! type(FitKijLij) :: fitting_problem ! Fitting problem specification - !! type(EquilibriumState) :: exp_data(3) - !! real(pr) :: X(2) ! parameter variables - !! real(pr) :: error - !! - !! ! - !! - !! model = PengRobinson76(tc, pc, w) ! Model to fit - !! - !! fitting_problem%exp_data = exp_data - !! fitting_problem%model = model - !! fitting_problem%fit_kij = .true. - !! - !! X = 0 ! initial values == 0 - !! err = optimize(X, fitting_problem) - !! ``` - !! - !! # References - !! - logical :: fit_lij = .false. !! Fit the \(l_{ij}\) parameter - logical :: fit_kij = .false. !! Fit the \(k_{ij}\) parameter - logical :: fit_kij_exp_t = .false. !! Fit \(k_{ij}(T)\) - contains - procedure :: get_model_from_X => model_from_X - end type FitKijLij - -contains - - subroutine model_from_X(problem, X) - use yaeos, only: pr, CubicEoS, QMR, QMR_RKPR - use yaeos__models_ar_cubic_quadratic_mixing, only: QMRTD - real(pr), intent(in) :: X(:) - class(FitKijLij), intent(in out) :: problem - - real(pr) :: kij(nc, nc), lij(nc, nc), Tref(nc,nc) - - if (size(X) > 3) error stop 1 - - kij = 0 - lij = 0 - - if (problem%fit_kij .and. problem%fit_lij) then - kij(1, 2) = X(1) - kij(2, 1) = kij(1, 2) - lij(1, 2) = X(2) - lij(2, 1) = lij(1, 2) - else if (problem%fit_kij) then - kij = 0 - kij(1, 2) = X(1) - kij(2, 1) = kij(1, 2) - else if (problem%fit_lij) then - lij = 0 - lij(1, 2) = X(1) - lij(2, 1) = lij(2, 1) - end if - - associate(model => problem%model) - select type (model) - class is (CubicEoS) - associate (mr => model%mixrule) - select type(mr) - type is (QMR) - if (problem%fit_kij) mr%k = kij - if (problem%fit_lij) mr%l = lij - type is (QMR_RKPR) - if (problem%fit_kij) mr%k = kij - if (problem%fit_lij) mr%l = lij - type is (QMRTD) - if (problem%fit_kij) mr%k = kij ! kinf - if (problem%fit_kij) mr%k0 = lij ! k0 - end select - end associate - end select - end associate - end subroutine model_from_X -end module yaeos__fitting_fit_kij_lij - diff --git a/src/fitting/fit_nrtl_mhv.f90 b/src/fitting/fit_nrtl_mhv.f90 deleted file mode 100644 index a3e2ee77e..000000000 --- a/src/fitting/fit_nrtl_mhv.f90 +++ /dev/null @@ -1,55 +0,0 @@ -module yaeos__fitting_fit_nrtl_mhv - use yaeos__constants, only: pr - use yaeos__fitting, only: FittingProblem - use yaeos__models, only: ArModel, NRTL, CubicEoS, MHV - use forsus, only: Substance - implicit none - - integer, parameter :: nc = 2 - - type, extends(FittingProblem) :: FitMHVNRTL - logical :: fit_nrtl = .false. - logical :: fit_lij = .false. - contains - procedure :: get_model_from_X => model_from_X - end type FitMHVNRTL - -contains - - subroutine model_from_X(problem, X) - use yaeos, only: R, RKPR, PengRobinson78, ArModel, QMR, CubicEoS - use yaeos__models_ar_cubic_quadratic_mixing, only: RKPR_D1mix - class(FitMHVNRTL), intent(in out) :: problem - real(pr), intent(in) :: X(:) - type(NRTL) :: ge - - real(pr) :: a(nc, nc), b(nc, nc), c(nc, nc) - - a=0; b=0; c=0 - - a(1, 2) = x(1) - a(2, 1) = x(2) - - b(1, 2) = x(3) - b(2, 1) = x(4) - - c(1, 2) = x(5) - c(2, 1) = x(6) - - ge = NRTL(a, b, c) - - associate (model => problem%model) - select type(model) - class is (CubicEoS) - associate(mr => model%mixrule) - select type (mr) - class is (MHV) - if (problem%fit_lij) mr%l(1, 2) = x(7) - if (problem%fit_lij) mr%l(2, 1) = x(7) - if (problem%fit_nrtl) mr%ge = ge - end select - end associate - end select - end associate - end subroutine model_from_X -end module yaeos__fitting_fit_nrtl_mhv diff --git a/src/fitting/fitting.f90 b/src/fitting/fitting.f90 deleted file mode 100644 index 12c2cfe74..000000000 --- a/src/fitting/fitting.f90 +++ /dev/null @@ -1,200 +0,0 @@ -module yaeos__fitting - use yaeos__constants, only: pr - use yaeos__models, only: ArModel - use yaeos__equilibria, only: & - EquilibriumState, saturation_pressure, saturation_temperature, flash - use yaeos__optimizers, only: Optimizer, obj_func - use ieee_arithmetic, only: isnan => ieee_is_nan - implicit none - - type, abstract :: FittingProblem - !! # Fitting problem setting - !! - !! # Description - !! This derived type holds all the relevant information for a parameter - !! optimization problem. It keeps the base model structure that will be - !! optimized and a procedure `get_model_from_X` that should reconstruct - !! the model with the desired parameters to optimize. - class(ArModel), allocatable :: model - !! Residual Helmholtz Model to fit - type(EquilibriumState), allocatable :: experimental_points(:) - !! Experimental points to fit - logical :: verbose = .false. - !! If true log the fitting process - contains - procedure(model_from_X), deferred :: get_model_from_X - end type FittingProblem - - abstract interface - subroutine model_from_X(problem, X) - !! Function that returns a setted model from the parameters vector - import ArModel, FittingProblem, pr - class(FittingProblem), intent(in out) :: problem - !! Fitting problem to optimize - real(pr), intent(in) :: X(:) - !! Vector of parameters to fit - end subroutine model_from_X - end interface - -contains - - real(pr) function optimize(X, opt, data) result(y) - real(pr), intent(in out) :: X(:) - !! Vector of parameters to fit - class(Optimizer), intent(in out) :: opt - !! Optimizer object, bsaed on the `Optimizer` class from - !! `yaeos__optimizers` - class(FittingProblem), optional, intent(in out) :: data - !! Fitting problem to optimize - call opt%optimize(error_function, X, y, data) - end function optimize - - subroutine error_function(X, Fobj, dF, func_data) - !! # `error_function` - !! Error function for phase-equilibria optimization. Using two-phase - !! points and an error function of: - !! - !! \[ - !! FO = \sum_i (\frac{P_i^{exp} - P_i^{calc}}{P_i^{exp}})^2 - !! + \sum_i (y_i^{exp} - y_i^{calc})**2 - !! + \sum_i (x_i^{exp} - x_i^{calc})**2 - !! \] - use yaeos__math, only: sq_error - use yaeos__equilibria_saturation_points, only: max_iterations - real(pr), intent(in) :: X(:) !! Vector of parameters - real(pr), intent(out) :: Fobj !! Objective function - real(pr), optional, intent(out) :: dF(:) - !! Gradient of the objective function, only exists to be consistent - !! with the `Optimizer` class API - class(*), optional, intent(in out):: func_data - - type(EquilibriumState) :: model_point !! Each solved point - type(EquilibriumState) :: exp_point - - integer :: i - logical :: pt_converged - integer :: n_nconv - - if (present(dF)) error stop 1 - - select type(func_data) - class is (FittingProblem) - block - real(pr) :: fobjs(size(func_data%experimental_points)) - - ! Update the problem model to the new vector of parameters - call func_data%get_model_from_X(X) - - n_nconv = 0 - fobj = 0 - ! Calculate each point and calculate its error. - ! if at some point there is a NaN value, assign a big number - - do i=1, size(func_data%experimental_points) - associate( model => func_data%model ) - - exp_point = func_data%experimental_points(i) - - select case(exp_point%kind) - case("bubble") - model_point = saturation_pressure(& - model, exp_point%x, exp_point%t, kind="bubble", & - p0=exp_point%p, y0=exp_point%y) - case("dew") - model_point = saturation_pressure(& - model, exp_point%y, exp_point%t, kind="dew", & - p0=exp_point%p, y0=exp_point%x) - case("liquid-liquid") - model_point = saturation_pressure(& - model, exp_point%x, exp_point%t, kind="liquid-liquid", & - p0=exp_point%p, y0=exp_point%y) - end select - - - if (model_point%iters > max_iterations .or. isnan(model_point%P)) then - ! If the point did not converge, calculate the phase - ! envelope and get the closest point - call calc_pt_envel(model, exp_point, model_point, pt_converged) - - fobjs(i) = sq_error(exp_point%p, model_point%p) + sq_error(exp_point%T, model_point%T) - - if (.not. pt_converged) then - n_nconv = n_nconv + 1 - fobjs(i) = maxval(func_data%experimental_points%P) - end if - - else - ! Calculate the error - fobjs(i) = sq_error(exp_point%p, model_point%p) - end if - ! print *, exp_point%T, model_point%T, exp_point%P, model_point%P, fobjs(i) - - if (isnan(fobjs(i))) fobjs(i) = 1e25 - end associate - end do - - - fobjs = fobjs * func_data%experimental_points%P - fobj = sum(fobjs)/size(fobjs) - - if (func_data%verbose) then - write(*, "(I3,2x(E20.9),2x, '[',*(E15.6,','))", advance="no") n_nconv, fobj, X - write(*, "(']', /, '==========================================')") - end if - - end block - end select - - end subroutine error_function - - subroutine calc_pt_envel(model, exp_point, model_point, converged) - use yaeos__math, only: sq_error, interpol - use yaeos__equilibria, only: PTEnvel2, EquilibriumState, pt_envelope_2ph, k_wilson - use yaeos__equilibria_saturation_points, only: max_iterations - class(ArModel), intent(in) :: model - type(EquilibriumState), intent(in) :: exp_point - type(EquilibriumState), intent(out) :: model_point - logical, intent(out) :: converged - - type(PTEnvel2) :: env - type(EquilibriumState) :: init - integer :: pos - integer, allocatable :: msk(:) - - real(pr) :: z(size(exp_point%x)) - - select case(exp_point%kind) - case("bubble") - z = exp_point%x - case("dew") - z = exp_point%y - case("liquid-liquid") - z = exp_point%x - end select - - init = saturation_temperature(model, z, P=1.0_pr, kind="dew", T0=500._pr) - if (init%iters > max_iterations) then - init = saturation_pressure(model, z, T=150._pr, kind="bubble") - end if - env = pt_envelope_2ph(model, z, init, points=2000) - - if (size(env%points) > 50) then - converged = .true. - pos = minloc(abs(env%points%T - exp_point%T), dim=1) - - ! Find closest point to the experimental point - pos = minloc((env%points%T - exp_point%T)**2 + (env%points%P - exp_point%P)**2, dim=1) - model_point = env%points(pos) - - ! Interpolation - !model_point%P = interpol(env%points(pos)%T, env%points(pos+1)%T, & - ! env%points(pos+1)%P, env%points(pos+1)%P, exp_point%T) - - ! if (abs(model_point%T - exp_point%T) > 5) then - ! converged = .false. - ! end if - else - converged = .false. - end if - end subroutine calc_pt_envel -end module yaeos__fitting diff --git a/test/test_fitting/test_fitting.f90 b/test/test_fitting/test_fitting.f90 deleted file mode 100644 index 0ebf2eb57..000000000 --- a/test/test_fitting/test_fitting.f90 +++ /dev/null @@ -1,146 +0,0 @@ -module test_fitting - use yaeos, only: pr - use testdrive, only: new_unittest, unittest_type, error_type, check - use auxiliar_functions, only: allclose, rel_error - implicit none - -contains - subroutine collect_suite(testsuite) - !> Collection of tests - type(unittest_type), allocatable, intent(out) :: testsuite(:) - - testsuite = [& - new_unittest("FitKijLij", test_fit_kij_lij), & - new_unittest("FitMHVNRTL", test_fit_MHV_NRTL) & - ] - end subroutine collect_suite - - subroutine test_fit_kij_lij(error) - use yaeos__fitting, only: optimize, error_function - use yaeos__fitting_fit_kij_lij, only: FitKijLij - use yaeos__models, only: ArModel, SoaveRedlichKwong - use yaeos__equilibria, only: EquilibriumState - use yaeos__optimizers_nelder_mead, only: NelderMead - type(error_type), allocatable, intent(out) :: error - class(ArModel), allocatable :: model - type(EquilibriumState) :: exp_points - type(NelderMead) :: opt - - real(pr) :: Tc(2) = [126.2, 568.7] - real(pr) :: pc(2) = [33.98, 24.90] - real(pr) :: w(2) = [3.7e-2_pr, 0.397_pr] - real(pr) :: X(2) = [0, 0] - real(pr) :: err0, err_kij, err_kij_lij - - type(FitKijLij) :: fitting_problem - - exp_points = & - EquilibriumState( & - kind="bubble", T=344.5_pr, P=23.9_pr, & - x=[0.0309_pr, 1 - 0.0309_pr], y=[0.9883_pr, 1 - 0.9883_pr], & - Vx=0._pr, Vy=0._pr, beta=0.0_pr & - ) - - fitting_problem%model = SoaveRedlichKwong(tc, pc, w) - fitting_problem%experimental_points = [exp_points] - fitting_problem%verbose = .true. - - opt%parameter_step = [1, 1] - opt%kcount = 1e9 - opt%konvge = 100 - opt%convergence_tolerance = 1e-5 - - - call error_function(x, err0, func_data=fitting_problem) - - fitting_problem%fit_kij = .true. - fitting_problem%fit_lij = .false. - X = 0 - err_kij = optimize(X, opt, fitting_problem) - - call check(error, err_kij < err0) - - fitting_problem%fit_lij = .true. - fitting_problem%verbose = .false. - - X = 0 - err_kij_lij = optimize(X, opt, fitting_problem) - - print *, err0, err_kij, err_kij_lij - - call check(error, err_kij_lij < err0) - end subroutine - - subroutine test_fit_mhv_nrtl(error) - use yaeos__optimizers_powell_wrap, only: PowellWrapper - use yaeos__optimizers_nelder_mead, only: NelderMead - use yaeos__fitting, only: optimize, error_function - use yaeos__fitting_fit_nrtl_mhv, only: FitMHVNRTL - use yaeos__models, only: CubicEoS, GeModel, NRTL, SoaveRedlichKwong, MHV - use yaeos__equilibria, only: EquilibriumState - use yaeos, only: PTEnvel2, pt_envelope_2ph, saturation_pressure, saturation_temperature - type(error_type), allocatable, intent(out) :: error - type(CubicEoS) :: model - type(NRTL) :: ge_model - type(MHV) :: mixrule - type(EquilibriumState) :: exp_point - - real(pr) :: Tc(2) = [647.13, 514.0] - real(pr) :: pc(2) = [220.55, 61.37] - real(pr) :: w(2) = [0.344861, 0.643558] - real(pr), allocatable :: X(:) - real(pr) :: err0, err_lij, err_ge, err_ge_lij - - type(FitMHVNRTL) :: fitting_problem - type(PowellWrapper) :: opt - type(PTEnvel2) :: env - - exp_point = EquilibriumState( & - kind="bubble", T=437._pr, P=25.36_pr, & - x=[0.21_pr, 1 - 0.21_pr], y=[0.4_pr, 0.6_pr], & - Vx=0._pr, Vy=0._pr, beta=0.0_pr & - ) - - - ! Provide initials for the NRTL model - ! reshape (a11 a12 a21 a22) - ge_model%a=reshape([0.0, 3.458, -0.80, 0.0], [2, 2]) - ge_model%b=reshape([0.0, -586.0, 246.0, 0.0], [2, 2]) - ge_model%c=reshape([0.0, 0.3, 0.3, 0.0], [2, 2]) - - model = SoaveRedlichKwong(tc, pc, w) - mixrule = MHV(ge=ge_model, q=-0.593_pr, b=model%b) - deallocate(model%mixrule) - model%mixrule = mixrule - - fitting_problem%experimental_points = [exp_point] - fitting_problem%verbose = .true. - - X = [3.458, -0.8, -586.0, 246.0, 0.3, 0.3, -0.15] - opt%parameter_step = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001] - fitting_problem%model = model - fitting_problem%fit_lij = .true. - call error_function(x, err0, func_data=fitting_problem) - err_lij = optimize(X, opt, fitting_problem) - - fitting_problem%verbose = .false. - X = [3.458, -0.8, -586.0, 246.0, 0.3, 0.3, 0.0] - fitting_problem%model = model - fitting_problem%fit_lij = .false. - fitting_problem%fit_nrtl = .true. - err_ge = optimize(X, opt, fitting_problem) - - X = [3.458, -0.8, -586.0, 246.0, 0.3, 0.3, 0.0] - fitting_problem%model = model - fitting_problem%fit_lij = .true. - fitting_problem%fit_nrtl = .true. - err_ge_lij = optimize(X, opt, fitting_problem) - - print *, err0, err_lij, err_ge, err_ge_lij - - call check(error, err_lij < err0) - call check(error, err_ge_lij < err_lij) - call check(error, err_ge < err_lij) - - end subroutine -end module test_fitting diff --git a/test/test_runner.f90 b/test/test_runner.f90 index b4278e72e..db1dcd45f 100644 --- a/test/test_runner.f90 +++ b/test/test_runner.f90 @@ -30,11 +30,6 @@ program tester use test_tape_nrtl, only: suite_nrtl => collect_suite use test_uniquac, only: suite_uniquac => collect_suite - ! ========================================================================= - ! Fitting procedures tests - ! ------------------------------------------------------------------------- - use test_fitting, only: suite_fitting => collect_suite - use stdlib_ansi, only: style_bold, fg_color_green, fg_color_red, operator(//), style_reset implicit none @@ -71,11 +66,7 @@ program tester new_testsuite("PSRK", suite_psrk_ge), & new_testsuite("UNIFACParameters", suite_unifac_parameters), & new_testsuite("NRTL", suite_nrtl), & - new_testsuite("UNIQUAC", suite_uniquac), & - ! ===================================================================== - ! Fitting procedures tests - ! --------------------------------------------------------------------- - new_testsuite("Fitting", suite_fitting) & + new_testsuite("UNIQUAC", suite_uniquac) & ] From 808cda097c7a1f50c73076b13f1290557a0a557b Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Fri, 18 Oct 2024 16:09:25 -0300 Subject: [PATCH 02/40] MC alpha func --- src/models/residual_helmholtz/ar_models.f90 | 13 ++-- .../cubic/alphas/alphas.f90 | 15 +++-- test/test_psrk.f90 | 65 +++++++++++++++++++ 3 files changed, 78 insertions(+), 15 deletions(-) create mode 100644 test/test_psrk.f90 diff --git a/src/models/residual_helmholtz/ar_models.f90 b/src/models/residual_helmholtz/ar_models.f90 index 04f9dfc69..3e69e3a7a 100644 --- a/src/models/residual_helmholtz/ar_models.f90 +++ b/src/models/residual_helmholtz/ar_models.f90 @@ -291,23 +291,18 @@ subroutine fugacity_pt(eos, & end subroutine fugacity_pt subroutine fugacity_vt(eos, & - n, V, T, P, lnPhi, dlnPhidP, dlnPhidT, dlnPhidn, dPdV, dPdT, dPdn & + n, V, T, P, lnPhi, & + dlnPhidP, dlnPhidT, dlnPhidn, & + dPdV, dPdT, dPdn & ) !! Calculate fugacity coefficent given volume and temperature. - !! - !!@note - !!While the natural output variable is \(ln \phi_i P\). The calculated - !!derivatives will be the derivatives of the fugacity coefficient - !!\(ln \phi_i\) - !!@endnote - !! class(ArModel) :: eos !! Model real(pr), intent(in) :: n(:) !! Mixture mole numbers real(pr), intent(in) :: V !! Volume [L] real(pr), intent(in) :: T !! Temperature [K] real(pr), optional, intent(out) :: P !! Pressure [bar] - real(pr), optional, intent(out) :: lnPhi(size(n)) !! \(\ln(\phi_i*P)\) vector + real(pr), optional, intent(out) :: lnPhi(size(n)) !! \(\ln(\phi_i)\) vector real(pr), optional, intent(out) :: dlnPhidT(size(n)) !! \(ln(phi_i)\) Temp derivative real(pr), optional, intent(out) :: dlnPhidP(size(n)) !! \(ln(phi_i)\) Presssure derivative real(pr), optional, intent(out) :: dlnPhidn(size(n), size(n)) !! \(ln(phi_i)\) compositional derivative diff --git a/src/models/residual_helmholtz/cubic/alphas/alphas.f90 b/src/models/residual_helmholtz/cubic/alphas/alphas.f90 index 31b9b7486..1481b8444 100644 --- a/src/models/residual_helmholtz/cubic/alphas/alphas.f90 +++ b/src/models/residual_helmholtz/cubic/alphas/alphas.f90 @@ -72,6 +72,8 @@ subroutine alpha_mc(self, Tr, a, dadt, dadt2) real(pr) :: sqrt_Tr(size(Tr)) + real(pr) :: u(size(Tr)), dudt(size(Tr)), dudt2(size(Tr)) + sqrt_Tr = 1 - sqrt(Tr) ! The associate statement allows to abreviate the expresions @@ -81,12 +83,13 @@ subroutine alpha_mc(self, Tr, a, dadt, dadt2) dadT = c1*(c1*(sqrt(Tr) - 1) - 1)/sqrt(Tr) dadT2 = (1.0_pr/2.0_pr)*c1*(c1 + 1)/Tr**(1.5_pr) elsewhere - a = (1 + c1 * (sqrt_Tr) + c2 * (sqrt_Tr) + c3 * (sqrt_Tr))**2 - dadt = (c1 + c2 + c3) * (c1*(sqrt(Tr) - 1) & - + c2*(sqrt(Tr) - 1) + c3*(sqrt(Tr) - 1) - 1)/sqrt(Tr) - dadt2 = (1.0_pr/2.0_pr) * (& - c1**2 + 2*c1*c2 + 2*c1*c3 & - + c1 + c2**2 + 2*c2*c3 + c2 + c3**2 + c3)/Tr**(3.0_pr/2.0_pr) + u = -c1*(sqrt(Tr) - 1) + c2*(sqrt(Tr) - 1)**2 - c3*(sqrt(Tr) - 1)**3 + 1 + dudt = (1.0_pr/2.0_pr)*(-c1 + 2*c2*(sqrt(Tr) - 1) - 3*c3*(sqrt(Tr) - 1)**2) /sqrt(Tr) + dudt2 = (1.0_pr/4.0_pr)*(-3*Tr*c3 + c1 + 2*c2 + 3*c3)/Tr**(3.0_pr/2.0_pr) + + a = u**2 + dadt = 2*u*dudt + dadt2 = 2*(dudt**2 + u*dudt2) end where end associate end subroutine alpha_mc diff --git a/test/test_psrk.f90 b/test/test_psrk.f90 new file mode 100644 index 000000000..535ccd03d --- /dev/null +++ b/test/test_psrk.f90 @@ -0,0 +1,65 @@ +program main + !! Running a PSRK cubic equation of state example/test + use yaeos + + implicit none + + ! =========================================================================== + ! Definition of variables that will be used + ! --------------------------------------------------------------------------- + type(CubicEoS) :: eos + type(Groups) :: molecules(2) + type(EquilibriumState) :: sat + type(PTEnvel2) :: env + real(pr) :: tc(2), pc(2), w(2), n(2) + real(pr) :: C(2, 3) + + real(pr) :: v, lnphi(2) + + real(pr) :: pressures(7) = [40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0] + real(pr) :: temperatures(7) = [450.0, 460.0, 470.0, 480.0, 490.0, 500.0, 510.0] + + integer :: i + + ! =========================================================================== + ! Definition of required parameters + ! --------------------------------------------------------------------------- + + ! Critical constants + tc = [304.21_pr, 553.8_pr] + pc = [7.383e6_pr, 4.080358e6_pr] / 1e5 + w = [0.223621_pr, 0.213_pr] + + ! Molecules groups + molecules(1)%groups_ids = [117] + molecules(1)%number_of_groups = [1] + + molecules(2)%groups_ids = [2] + molecules(2)%number_of_groups = [6] + + ! Mathias-Copeman parameters + C(1, :) = [0.8255_pr, 0.16755_pr, -1.7039_pr] + C(2, :) = [0.84082_pr, -0.39847_pr, 0.94148_pr] + + + ! Setting up the equation of state + eos = PSRK(& + tc=tc, & + pc=pc, & + w=w, & + molecules=molecules, & + c1=C(:, 1), c2=C(:, 2), c3=C(:, 3) & + ) + + ! Molar numbers of each component + n = [60, 40] + + do i=1,7 + call eos%lnphi_pt(n=n, P=pressures(i), T=temperatures(i), lnphi=lnphi, root_type="stable") + call eos%volume(n=n, P=pressures(i), T=temperatures(i), V=V, root_type="stable") + sat = saturation_pressure(eos, n, temperatures(i), kind="bubble", p0=130._pr) + + print *, pressures(i), temperatures(i), exp(lnphi) + print *, pressures(i), temperatures(i), V + end do +end program main From f20640e841c42b4bdc2ca6001d28693dd219d742 Mon Sep 17 00:00:00 2001 From: Salvador Date: Mon, 21 Oct 2024 15:59:40 -0300 Subject: [PATCH 03/40] new psrk test, all parameters are ok --- .../group_contribution/psrk_parameters.f90 | 2712 +++++------ .../ar_models/cubics/test_psrk.f90 | 44 +- .../ge_models/test_psrk_parameters.f90 | 4059 +++++++++++++++++ test/test_runner.f90 | 2 + 4 files changed, 5442 insertions(+), 1375 deletions(-) create mode 100644 test/test_implementations/ge_models/test_psrk_parameters.f90 diff --git a/src/models/excess_gibbs/group_contribution/psrk_parameters.f90 b/src/models/excess_gibbs/group_contribution/psrk_parameters.f90 index bbbf1ff16..427a07262 100644 --- a/src/models/excess_gibbs/group_contribution/psrk_parameters.f90 +++ b/src/models/excess_gibbs/group_contribution/psrk_parameters.f90 @@ -56,49 +56,73 @@ type(GeGCModelParameters) function PSRKParameters() ! PSRK subgroups Rs ! ------------------------------------------------------------------------ PSRKParameters%subgroups_Rs = [& - 0.9011, 0.6744, 0.4469, 0.2195, 1.3454, 1.1167, 1.1173, 0.8886, & - 0.5313, 0.3652, 1.2663, 1.0396, 0.8121, 1. , 1.4311, 0.92 , & - 0.8952, 1.6724, 1.4457, 0.998 , 1.9031, 1.6764, 1.242 , 1.145 , & - 0.9183, 0.6908, 0.9183, 1.5959, 1.3692, 1.1417, 1.4337, 1.207 , & - 0.9795, 1.1865, 0.9597, 1.06 , 2.9993, 2.8332, 2.667 , 1.8701, & - 1.6434, 1.3013, 1.528 , 1.4654, 1.238 , 1.0106, 2.2564, 2.0606, & - 1.8016, 2.87 , 2.6401, 3.39 , 1.1562, 2.0086, 1.7818, 1.5544, & - 1.4199, 2.057 , 1.877 , 1.651 , 3.168 , 2.4088, 1.264 , 0.9492, & - 1.292 , 1.0613, 2.8266, 2.3144, 0.791 , 0.6605, 0.6948, 3.0856, & - 2.6322, 1.406 , 1.0105, 0.615 , 1.38 , 1.6035, 1.4443, 1.2853, & - 1.047 , 1.4838, 1.303 , 1.1044, 3.981 , 3.0356, 2.2287, 2.406 , & - 1.6493, 1.8174, 1.967 , 2.1721, 2.6243, 1.4515, 2.1905, 1.9637, & - 2.8589, 2.6322, 2.4054, 2.1226, 1.8952, 1.613 , 1.3863, 1.1589, & - 3.474 , 2.8569, 2.6908, 2.5247, 1.3564, 0.791 , 0.851 , 0.711 , & - 0.416 , 1.235 , 0.856 , 1.177 , 1.3 , 1.1292, 0.733 , 0.37 , & - 1.343 , 0.716 , 0.98 , 2.374 , 0.885 , 0.886 , 1.12 , 1.13 , & - 1.016 , 1.056 , 1.058 , 1.393 , 1.6785, 1.425 , 1.199 , 1.3652, & - 1.1378, 0.9104, 1.5926, 1.1378, 0.6829, 0.75 , 1.53 , 1.9 , & - 1.2 , 1. , 1.78 , 1.1 , 1.48 , 0.9147] + 0.9011_pr, 0.6744_pr, 0.4469_pr, 0.2195_pr, 1.3454_pr, & + 1.1167_pr, 1.1173_pr, 0.8886_pr, 0.5313_pr, 0.3652_pr, & + 1.2663_pr, 1.0396_pr, 0.8121_pr, 1.0_pr, 1.4311_pr, & + 0.92_pr, 0.8952_pr, 1.6724_pr, 1.4457_pr, 0.998_pr, & + 1.9031_pr, 1.6764_pr, 1.242_pr, 1.145_pr, 0.9183_pr, & + 0.6908_pr, 0.9183_pr, 1.5959_pr, 1.3692_pr, 1.1417_pr, & + 1.4337_pr, 1.207_pr, 0.9795_pr, 1.1865_pr, 0.9597_pr, & + 1.06_pr, 2.9993_pr, 2.8332_pr, 2.667_pr, 1.8701_pr, & + 1.6434_pr, 1.3013_pr, 1.528_pr, 1.4654_pr, 1.238_pr, & + 1.0106_pr, 2.2564_pr, 2.0606_pr, 1.8016_pr, 2.87_pr, & + 2.6401_pr, 3.39_pr, 1.1562_pr, 2.0086_pr, 1.7818_pr, & + 1.5544_pr, 1.4199_pr, 2.057_pr, 1.877_pr, 1.651_pr, & + 3.168_pr, 2.4088_pr, 1.264_pr, 0.9492_pr, 1.292_pr, & + 1.0613_pr, 2.8266_pr, 2.3144_pr, 0.791_pr, 0.6605_pr, & + 0.6948_pr, 3.0856_pr, 2.6322_pr, 1.406_pr, 1.0105_pr, & + 0.615_pr, 1.38_pr, 1.6035_pr, 1.4443_pr, 1.2853_pr, & + 1.047_pr, 1.4838_pr, 1.303_pr, 1.1044_pr, 3.981_pr, & + 3.0356_pr, 2.2287_pr, 2.406_pr, 1.6493_pr, 1.8174_pr, & + 1.967_pr, 2.1721_pr, 2.6243_pr, 1.4515_pr, 2.1905_pr, & + 1.9637_pr, 2.8589_pr, 2.6322_pr, 2.4054_pr, 2.1226_pr, & + 1.8952_pr, 1.613_pr, 1.3863_pr, 1.1589_pr, 3.474_pr, & + 2.8569_pr, 2.6908_pr, 2.5247_pr, 1.3564_pr, 0.791_pr, & + 0.851_pr, 0.711_pr, 0.416_pr, 1.235_pr, 0.856_pr, & + 1.177_pr, 1.3_pr, 1.1292_pr, 0.733_pr, 0.37_pr, & + 1.343_pr, 0.716_pr, 0.98_pr, 2.374_pr, 0.885_pr, & + 0.886_pr, 1.12_pr, 1.13_pr, 1.016_pr, 1.056_pr, & + 1.058_pr, 1.393_pr, 1.6785_pr, 1.425_pr, 1.199_pr, & + 1.3652_pr, 1.1378_pr, 0.9104_pr, 1.5926_pr, 1.1378_pr, & + 0.6829_pr, 0.75_pr, 1.53_pr, 1.9_pr, 1.2_pr, & + 1.0_pr, 1.78_pr, 1.1_pr, 1.48_pr, 0.9147_pr & + ] ! ======================================================================== ! PSRK subgroups Qs ! ------------------------------------------------------------------------ PSRKParameters%subgroups_Qs = [& - 0.848 , 0.54 , 0.228 , 0. , 1.176 , 0.867 , 0.988 , 0.676 , & - 0.4 , 0.12 , 0.968 , 0.66 , 0.348 , 1.2 , 1.432 , 1.4 , & - 0.68 , 1.488 , 1.18 , 0.948 , 1.728 , 1.42 , 1.188 , 1.088 , & - 0.78 , 0.468 , 1.1 , 1.544 , 1.236 , 0.924 , 1.244 , 0.936 , & - 0.624 , 0.94 , 0.632 , 0.816 , 2.113 , 1.833 , 1.553 , 1.724 , & - 1.416 , 1.224 , 1.532 , 1.264 , 0.952 , 0.724 , 1.988 , 1.684 , & - 1.448 , 2.41 , 2.184 , 2.91 , 0.844 , 1.868 , 1.56 , 1.248 , & - 1.104 , 1.65 , 1.676 , 1.368 , 2.484 , 2.248 , 0.992 , 0.832 , & - 1.088 , 0.784 , 2.472 , 2.052 , 0.724 , 0.485 , 0.524 , 2.736 , & - 2.12 , 1.38 , 0.92 , 0.46 , 1.2 , 1.2632, 1.0063, 0.7494, & - 0.4099, 1.0621, 0.7639, 0.4657, 3.2 , 2.644 , 1.916 , 2.116 , & - 1.416 , 1.648 , 1.828 , 2.1 , 2.376 , 1.796 , 1.488 , 2.428 , & - 2.12 , 1.812 , 1.8120, 1.904 , 1.592 , 1.368 , 1.06 , 0.748 , & - 2.796 , 2.14 , 1.86 , 1.58 , 1.3098, 0.72 , 0.778 , 0.828 , & - 0.571 , 1.202 , 0.93 , 1.116 , 0.982 , 1.124 , 0.849 , 0.527 , & - 1.164 , 0.62 , 0.888 , 2.056 , 0.985 , 0.986 , 1.12 , 1.13 , & - 1.216 , 1.256 , 1.258 , 1.208 , 1.316 , 1.06 , 0.752 , 1.008 , & - 0.696 , 0.468 , 1.32 , 0.78 , 0.24 , 0.88 , 1.44 , 1.66 , & - 1.19 , 1.1 , 1.82 , 1.27 , 1.34 , 0.614] + 0.848_pr, 0.54_pr, 0.228_pr, 0.0_pr, 1.176_pr, & + 0.867_pr, 0.988_pr, 0.676_pr, 0.4_pr, 0.12_pr, & + 0.968_pr, 0.66_pr, 0.348_pr, 1.2_pr, 1.432_pr, & + 1.4_pr, 0.68_pr, 1.488_pr, 1.18_pr, 0.948_pr, & + 1.728_pr, 1.42_pr, 1.188_pr, 1.088_pr, 0.78_pr, & + 0.468_pr, 1.1_pr, 1.544_pr, 1.236_pr, 0.924_pr, & + 1.244_pr, 0.936_pr, 0.624_pr, 0.94_pr, 0.632_pr, & + 0.816_pr, 2.113_pr, 1.833_pr, 1.553_pr, 1.724_pr, & + 1.416_pr, 1.224_pr, 1.532_pr, 1.264_pr, 0.952_pr, & + 0.724_pr, 1.988_pr, 1.684_pr, 1.448_pr, 2.41_pr, & + 2.184_pr, 2.91_pr, 0.844_pr, 1.868_pr, 1.56_pr, & + 1.248_pr, 1.104_pr, 1.65_pr, 1.676_pr, 1.368_pr, & + 2.484_pr, 2.248_pr, 0.992_pr, 0.832_pr, 1.088_pr, & + 0.784_pr, 2.472_pr, 2.052_pr, 0.724_pr, 0.485_pr, & + 0.524_pr, 2.736_pr, 2.12_pr, 1.38_pr, 0.92_pr, & + 0.46_pr, 1.2_pr, 1.2632_pr, 1.0063_pr, 0.7494_pr, & + 0.4099_pr, 1.0621_pr, 0.7639_pr, 0.4657_pr, 3.2_pr, & + 2.644_pr, 1.916_pr, 2.116_pr, 1.416_pr, 1.648_pr, & + 1.828_pr, 2.1_pr, 2.376_pr, 1.248_pr, 1.796_pr, & + 1.488_pr, 2.428_pr, 2.12_pr, 1.812_pr, 1.904_pr, & + 1.592_pr, 1.368_pr, 1.06_pr, 0.748_pr, 2.796_pr, & + 2.14_pr, 1.86_pr, 1.58_pr, 1.3098_pr, 0.72_pr, & + 0.778_pr, 0.828_pr, 0.571_pr, 1.202_pr, 0.93_pr, & + 1.116_pr, 0.982_pr, 1.124_pr, 0.849_pr, 0.527_pr, & + 1.164_pr, 0.62_pr, 0.888_pr, 2.056_pr, 0.985_pr, & + 0.986_pr, 1.12_pr, 1.13_pr, 1.216_pr, 1.256_pr, & + 1.258_pr, 1.208_pr, 1.316_pr, 1.06_pr, 0.752_pr, & + 1.008_pr, 0.696_pr, 0.468_pr, 1.32_pr, 0.78_pr, & + 0.24_pr, 0.88_pr, 1.44_pr, 1.66_pr, 1.19_pr, & + 1.1_pr, 1.82_pr, 1.27_pr, 1.34_pr, 0.614_pr & + ] ! ======================================================================== ! PSRK aij ! ------------------------------------------------------------------------ @@ -2747,1320 +2771,1302 @@ type(GeGCModelParameters) function PSRKParameters() ! PSRK cij ! ------------------------------------------------------------------------ PSRKParameters%maingroups_cij = reshape([& - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, -0.00179_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, -0.00201_pr, 0.01265_pr, -0.00156_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.02256_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00802_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00008_pr, 0.00131_pr, -0.00512_pr, & - -0.09761_pr, 0.00000_pr, 0.00945_pr, 0.00013_pr, 0.07115_pr, & - -0.03308_pr, 0.00000_pr, 0.00000_pr, -0.00530_pr, 0.00000_pr, & - 0.00612_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, -0.01156_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00058_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00463_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, -0.00260_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.01032_pr, -0.01225_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.06494_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - -0.01245_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.03447_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00319_pr, -0.01655_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, -0.01956_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00130_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00106_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00664_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, -0.00693_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.04718_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - -0.01405_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.04632_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, -0.01930_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - -0.00297_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, -0.00074_pr, 0.00894_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, -0.01247_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, 0.00000_pr, & - 0.00000_pr & - - ],[nmg,nmg]) + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, -0.0017906_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, -0.0020106_pr, 0.012651_pr, -0.0015601_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.022564_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0080196_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 7.6678e-05_pr, 0.0013099_pr, -0.005122_pr, -0.097615_pr, & + 0.0_pr, 0.0094502_pr, 0.00013033_pr, 0.07115_pr, -0.03308_pr, & + 0.0_pr, 0.0_pr, -0.0053_pr, 0.0_pr, 0.006117_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, -0.01156_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.00057918_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0046309_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, -0.0026029_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.010324_pr, -0.01225_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.06494_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, -0.012451_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.034469_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0031901_pr, -0.016546_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, -0.019561_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0013022_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0010576_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0066383_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, -0.006931_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.04718_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, -0.014048_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.046316_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, -0.0193_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, -0.002973_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, -0.000736_pr, 0.0089373_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, -0.01247_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, 0.0_pr, & + 0.0_pr],[nmg,nmg]) end function PSRKParameters end module yaeos__models_ge_group_contribution_psrk_parameters diff --git a/test/test_implementations/ar_models/cubics/test_psrk.f90 b/test/test_implementations/ar_models/cubics/test_psrk.f90 index ce658e0fc..93d7d94cc 100644 --- a/test/test_implementations/ar_models/cubics/test_psrk.f90 +++ b/test/test_implementations/ar_models/cubics/test_psrk.f90 @@ -59,7 +59,7 @@ subroutine test_psrk_cons_mixture(error) ArTV=ArTV, ArV2=ArV2, ArT2=ArT2, ArVn=ArVn, ArTn=ArTn, Arn2=Arn2) call numeric_ar_derivatives(& - model, n, v, t, d_n = 0.01_pr, d_v = 0.01_pr, d_t = 0.01_pr, & + model, n, v, t, d_n = 0.01_pr, d_v = 0.0001_pr, d_t = 0.01_pr, & Ar=Ar_num, ArV=ArV_num, ArT=ArT_num, ArTV=ArTV_num, ArV2=ArV2_num, & ArT2=ArT2_num, Arn=Arn_num, ArVn=ArVn_num, ArTn=ArTn_num, & Arn2=Arn2_num & @@ -70,19 +70,19 @@ subroutine test_psrk_cons_mixture(error) ) ! Numeric derivatives - call check(error, rel_error(Ar, Ar_num) < 1e-4) - call check(error, rel_error(ArV, ArV_num) < 1e-3) - call check(error, rel_error(ArT, ArT_num) < 1e-4) - call check(error, allclose(Arn, Arn_num, 1e-4_pr)) - call check(error, rel_error(ArV2, ArV2_num) < 1e-3) - call check(error, rel_error(ArT2, ArT2_num) < 1e-4) - call check(error, rel_error(ArTV, ArTV_num) < 1e-3) - call check(error, allclose(ArVn, ArVn_num, 1e-4_pr)) - call check(error, allclose(ArTn, ArTn_num, 1e-4_pr)) - call check(error, maxval(rel_error(Arn2, Arn2_num)) < 1e-4) + call check(error, rel_error(Ar, Ar_num) < 1e-10) + call check(error, rel_error(ArV, ArV_num) < 1e-5) + call check(error, rel_error(ArT, ArT_num) < 1e-5) + call check(error, allclose(Arn, Arn_num, 1e-5_pr)) + call check(error, rel_error(ArV2, ArV2_num) < 1e-5) + call check(error, rel_error(ArT2, ArT2_num) < 1e-6) + call check(error, rel_error(ArTV, ArTV_num) < 1e-6) + call check(error, allclose(ArVn, ArVn_num, 1e-6_pr)) + call check(error, allclose(ArTn, ArTn_num, 1e-6_pr)) + call check(error, maxval(rel_error(Arn2, Arn2_num)) < 1e-5) ! Consistency tests - call check(error, abs(eq31) <= 1e-13) + call check(error, abs(eq31) <= 1e-12) call check(error, maxval(abs(eq33)) < 1e-13) call check(error, maxval(abs(eq34)) < 1e-13) call check(error, abs(eq36) <= 1e-13) @@ -128,7 +128,7 @@ subroutine test_psrk_cons_pure(error) ArTV=ArTV, ArV2=ArV2, ArT2=ArT2, ArVn=ArVn, ArTn=ArTn, Arn2=Arn2) call numeric_ar_derivatives(& - model, n, v, t, d_n = 0.0001_pr, d_v = 0.0001_pr, d_t = 0.001_pr, & + model, n, v, t, d_n = 0.001_pr, d_v = 0.001_pr, d_t = 0.001_pr, & Ar=Ar_num, ArV=ArV_num, ArT=ArT_num, ArTV=ArTV_num, ArV2=ArV2_num, & ArT2=ArT2_num, Arn=Arn_num, ArVn=ArVn_num, ArTn=ArTn_num, & Arn2=Arn2_num & @@ -139,16 +139,16 @@ subroutine test_psrk_cons_pure(error) ) ! Numeric derivatives - call check(error, rel_error(Ar, Ar_num) < 1e-4) - call check(error, rel_error(ArV, ArV_num) < 1e-3) - call check(error, rel_error(ArT, ArT_num) < 1e-4) - call check(error, allclose(Arn, Arn_num, 1e-4_pr)) - call check(error, rel_error(ArV2, ArV2_num) < 1e-2) + call check(error, rel_error(Ar, Ar_num) < 1e-10) + call check(error, rel_error(ArV, ArV_num) < 1e-6) + call check(error, rel_error(ArT, ArT_num) < 1e-6) + call check(error, allclose(Arn, Arn_num, 1e-6_pr)) + call check(error, rel_error(ArV2, ArV2_num) < 1e-4) call check(error, rel_error(ArT2, ArT2_num) < 1e-4) - call check(error, rel_error(ArTV, ArTV_num) < 1e-3) - call check(error, allclose(ArVn, ArVn_num, 1e-3_pr)) - call check(error, allclose(ArTn, ArTn_num, 1e-3_pr)) - call check(error, maxval(rel_error(Arn2, Arn2_num)) < 1e-4) + call check(error, rel_error(ArTV, ArTV_num) < 1e-6) + call check(error, allclose(ArVn, ArVn_num, 1e-5_pr)) + call check(error, allclose(ArTn, ArTn_num, 1e-5_pr)) + call check(error, maxval(rel_error(Arn2, Arn2_num)) < 1e-5) ! Consistency tests call check(error, abs(eq31) <= 1e-13) diff --git a/test/test_implementations/ge_models/test_psrk_parameters.f90 b/test/test_implementations/ge_models/test_psrk_parameters.f90 new file mode 100644 index 000000000..849396882 --- /dev/null +++ b/test/test_implementations/ge_models/test_psrk_parameters.f90 @@ -0,0 +1,4059 @@ +module test_psrk_parameters + use yaeos, only: pr + use testdrive, only: new_unittest, unittest_type, error_type, check + use auxiliar_functions, only: allclose, rel_error + implicit none + +contains + subroutine collect_suite(testsuite) + !> Collection of tests + type(unittest_type), allocatable, intent(out) :: testsuite(:) + + testsuite = [ & + new_unittest("Test PSRK Subgroups", test_psrk_subgroups), & + new_unittest("Test PSRK Main groups interaction", test_psrk_main_groups) & + ] + end subroutine collect_suite + + subroutine test_psrk_subgroups(error) + use yaeos__models_ge_group_contribution_model_parameters, only: GeGCModelParameters + use yaeos__models_ge_group_contribution_psrk_parameters, only: PSRKParameters + + type(error_type), allocatable, intent(out) :: error + + type(GeGCModelParameters) :: parameters + integer :: sg_ids(150), mg_ids(150) + real(pr) :: rs(150), qs(150) + + integer :: i + + parameters = PSRKParameters() + + ! ======================================================================== + ! All the UNIFAC subgroups ids randomly shuffled + ! ------------------------------------------------------------------------ + sg_ids = [& + 70, 38, 61, 106, 110, 15, 94, 16, 23, 104, 126, 146, 28, 136, 71, & + 105, 25, 8, 53, 5, 111, 147, 101, 148, 48, 135, 76, 42, 26, 34, & + 51, 33, 139, 144, 67, 73, 12, 138, 37, 132, 62, 46, 107, 7, 32, & + 20, 118, 13, 100, 79, 69, 9, 17, 10, 6, 102, 84, 19, 108, 87, & + 109, 21, 114, 2, 68, 82, 31, 24, 3, 39, 72, 40, 131, 56, 74, & + 95, 117, 58, 142, 49, 66, 29, 141, 90, 63, 35, 41, 54, 130, 134, & + 128, 115, 75, 122, 116, 50, 14, 47, 86, 119, 121, 143, 103, 44, 81, & + 36, 125, 96, 137, 27, 133, 93, 45, 127, 149, 97, 57, 112, 145, 92, & + 55, 18, 99, 59, 89, 113, 60, 1, 77, 88, 120, 140, 80, 129, 78, & + 123, 30, 124, 91, 65, 85, 64, 52, 22, 83, 43, 11, 4, 98, 152 & + ] + + ! ======================================================================== + ! Check main group search + ! ------------------------------------------------------------------------ + mg_ids = [& + 2, 18, 30, 50, 34, 6, 46, 7, 12, 48, 70, 82, 14, 51, 38, & + 49, 13, 2, 25, 2, 55, 83, 47, 84, 22, 29, 40, 20, 13, 16, & + 23, 15, 51, 80, 35, 39, 4, 51, 18, 76, 31, 21, 50, 2, 15, & + 10, 57, 4, 47, 42, 37, 3, 8, 3, 2, 48, 43, 9, 50, 45, & + 2, 11, 61, 1, 36, 43, 15, 13, 1, 18, 39, 19, 75, 26, 40, & + 46, 56, 28, 78, 22, 34, 14, 51, 45, 32, 16, 19, 26, 74, 29, & + 72, 60, 40, 66, 59, 23, 5, 22, 45, 58, 65, 79, 48, 21, 42, & + 17, 69, 46, 51, 13, 77, 45, 21, 71, 85, 46, 27, 63, 81, 45, & + 26, 9, 46, 29, 45, 62, 29, 1, 41, 45, 62, 51, 42, 73, 42, & + 67, 14, 68, 45, 34, 44, 33, 24, 11, 43, 20, 4, 1, 46, 14 & + ] + + do i=1,size(sg_ids) + call check(error, parameters%get_subgroup_maingroup(sg_ids(i)) == mg_ids(i)) + end do + + ! ======================================================================== + ! Test R value of each subgroup + ! ------------------------------------------------------------------------ + rs = [& + 0.6605_pr, 2.8332_pr, 3.168_pr, 2.8569_pr, 0.791_pr, & + 1.4311_pr, 1.4515_pr, 0.92_pr, 1.242_pr, 1.1589_pr, & + 0.886_pr, 1.0_pr, 1.5959_pr, 1.3652_pr, 0.6948_pr, & + 3.474_pr, 0.9183_pr, 0.8886_pr, 1.1562_pr, 1.3454_pr, & + 0.851_pr, 1.78_pr, 1.8952_pr, 1.1_pr, 2.0606_pr, & + 1.199_pr, 0.615_pr, 1.3013_pr, 0.6908_pr, 1.1865_pr, & + 2.6401_pr, 0.9795_pr, 1.5926_pr, 1.9_pr, 2.8266_pr, & + 2.6322_pr, 1.0396_pr, 0.9104_pr, 2.9993_pr, 1.393_pr, & + 2.4088_pr, 1.0106_pr, 2.6908_pr, 1.1173_pr, 1.207_pr, & + 0.998_pr, 1.1292_pr, 0.8121_pr, 2.1226_pr, 1.4443_pr, & + 0.791_pr, 0.5313_pr, 0.8952_pr, 0.3652_pr, 1.1167_pr, & + 1.613_pr, 1.1044_pr, 1.4457_pr, 2.5247_pr, 2.2287_pr, & + 1.3564_pr, 1.9031_pr, 1.235_pr, 0.6744_pr, 2.3144_pr, & + 1.4838_pr, 1.4337_pr, 1.145_pr, 0.4469_pr, 2.667_pr, & + 3.0856_pr, 1.8701_pr, 1.058_pr, 1.5544_pr, 1.406_pr, & + 2.1905_pr, 1.3_pr, 2.057_pr, 0.75_pr, 1.8016_pr, & + 1.0613_pr, 1.3692_pr, 0.6829_pr, 1.8174_pr, 1.264_pr, & + 0.9597_pr, 1.6434_pr, 2.0086_pr, 1.056_pr, 1.425_pr, & + 1.13_pr, 0.856_pr, 1.0105_pr, 0.716_pr, 1.177_pr, & + 2.87_pr, 1.0_pr, 2.2564_pr, 3.0356_pr, 0.733_pr, & + 1.343_pr, 1.53_pr, 1.3863_pr, 1.4654_pr, 1.047_pr, & + 1.06_pr, 0.885_pr, 1.9637_pr, 1.1378_pr, 0.9183_pr, & + 1.6785_pr, 2.6243_pr, 1.238_pr, 1.12_pr, 1.48_pr, & + 2.8589_pr, 1.4199_pr, 0.711_pr, 1.2_pr, 2.1721_pr, & + 1.7818_pr, 1.6724_pr, 2.4054_pr, 1.877_pr, 1.6493_pr, & + 0.416_pr, 1.651_pr, 0.9011_pr, 1.38_pr, 2.406_pr, & + 0.37_pr, 1.1378_pr, 1.2853_pr, 1.016_pr, 1.6035_pr, & + 0.98_pr, 1.1417_pr, 2.374_pr, 1.967_pr, 1.292_pr, & + 3.981_pr, 0.9492_pr, 3.39_pr, 1.6764_pr, 1.303_pr, & + 1.528_pr, 1.2663_pr, 0.2195_pr, 2.6322_pr, 0.9147_pr & + ] + + do i=1,size(sg_ids) + call check(error, abs(parameters%get_subgroup_R(sg_ids(i)) - rs(i)) < 1e-10) + end do + + ! ======================================================================== + ! Test Q value of each subgroup + ! ------------------------------------------------------------------------ + qs = [& + 0.485_pr, 1.833_pr, 2.484_pr, 2.14_pr, 0.72_pr, & + 1.432_pr, 1.248_pr, 1.4_pr, 1.188_pr, 0.748_pr, & + 0.986_pr, 1.1_pr, 1.544_pr, 1.008_pr, 0.524_pr, & + 2.796_pr, 0.78_pr, 0.676_pr, 0.844_pr, 1.176_pr, & + 0.778_pr, 1.82_pr, 1.592_pr, 1.27_pr, 1.684_pr, & + 0.752_pr, 0.46_pr, 1.224_pr, 0.468_pr, 0.94_pr, & + 2.184_pr, 0.624_pr, 1.32_pr, 1.66_pr, 2.472_pr, & + 2.12_pr, 0.66_pr, 0.468_pr, 2.113_pr, 1.208_pr, & + 2.248_pr, 0.724_pr, 1.86_pr, 0.988_pr, 0.936_pr, & + 0.948_pr, 1.124_pr, 0.348_pr, 1.904_pr, 1.0063_pr, & + 0.724_pr, 0.4_pr, 0.68_pr, 0.12_pr, 0.867_pr, & + 1.368_pr, 0.4657_pr, 1.18_pr, 1.58_pr, 1.916_pr, & + 1.3098_pr, 1.728_pr, 1.202_pr, 0.54_pr, 2.052_pr, & + 1.0621_pr, 1.244_pr, 1.088_pr, 0.228_pr, 1.553_pr, & + 2.736_pr, 1.724_pr, 1.258_pr, 1.248_pr, 1.38_pr, & + 1.796_pr, 0.982_pr, 1.65_pr, 0.88_pr, 1.448_pr, & + 0.784_pr, 1.236_pr, 0.24_pr, 1.648_pr, 0.992_pr, & + 0.632_pr, 1.416_pr, 1.868_pr, 1.256_pr, 1.06_pr, & + 1.13_pr, 0.93_pr, 0.92_pr, 0.62_pr, 1.116_pr, & + 2.41_pr, 1.2_pr, 1.988_pr, 2.644_pr, 0.849_pr, & + 1.164_pr, 1.44_pr, 1.06_pr, 1.264_pr, 0.4099_pr, & + 0.816_pr, 0.985_pr, 1.488_pr, 0.696_pr, 1.1_pr, & + 1.316_pr, 2.376_pr, 0.952_pr, 1.12_pr, 1.34_pr, & + 2.428_pr, 1.104_pr, 0.828_pr, 1.19_pr, 2.1_pr, & + 1.56_pr, 1.488_pr, 1.812_pr, 1.676_pr, 1.416_pr, & + 0.571_pr, 1.368_pr, 0.848_pr, 1.2_pr, 2.116_pr, & + 0.527_pr, 0.78_pr, 0.7494_pr, 1.216_pr, 1.2632_pr, & + 0.888_pr, 0.924_pr, 2.056_pr, 1.828_pr, 1.088_pr, & + 3.2_pr, 0.832_pr, 2.91_pr, 1.42_pr, 0.7639_pr, & + 1.532_pr, 0.968_pr, 0.0_pr, 2.12_pr, 0.614_pr & + ] + + do i=1,size(sg_ids) + call check(error, abs(parameters%get_subgroup_Q(sg_ids(i)) - qs(i)) < 1e-10) + end do + end subroutine test_psrk_subgroups + + subroutine test_psrk_main_groups(error) + use yaeos__models_ge_group_contribution_model_parameters, only: GeGCModelParameters + use yaeos__models_ge_group_contribution_psrk_parameters, only: PSRKParameters + + type(error_type), allocatable, intent(out) :: error + + type(GeGCModelParameters) :: parameters + + integer :: ddbst_ij(956, 2) + real(pr) :: ddbst_aij(956, 2), ddbst_bij(956, 2), ddbst_cij(956, 2) + real(pr) :: Aij, Aji, Bij, Bji, Cij, Cji + + integer :: i, j, k, l, isg, jsg + + parameters = PSRKParameters() + + ddbst_ij = transpose(reshape([& + 1, 2, & + 1, 3, & + 1, 4, & + 1, 5, & + 1, 6, & + 1, 7, & + 1, 8, & + 1, 9, & + 1, 10, & + 1, 11, & + 1, 12, & + 1, 13, & + 1, 14, & + 1, 15, & + 1, 16, & + 1, 17, & + 1, 18, & + 1, 19, & + 1, 20, & + 1, 21, & + 1, 22, & + 1, 23, & + 1, 24, & + 1, 25, & + 1, 26, & + 1, 27, & + 1, 28, & + 1, 29, & + 1, 30, & + 1, 31, & + 1, 32, & + 1, 33, & + 1, 34, & + 1, 35, & + 1, 36, & + 1, 37, & + 1, 38, & + 1, 39, & + 1, 40, & + 1, 41, & + 1, 42, & + 1, 43, & + 1, 44, & + 1, 45, & + 1, 46, & + 1, 47, & + 1, 48, & + 1, 49, & + 1, 50, & + 1, 51, & + 1, 55, & + 1, 56, & + 1, 57, & + 1, 58, & + 1, 59, & + 1, 60, & + 1, 61, & + 1, 62, & + 1, 63, & + 1, 65, & + 1, 66, & + 1, 67, & + 1, 68, & + 1, 69, & + 1, 70, & + 1, 71, & + 1, 72, & + 1, 74, & + 1, 75, & + 1, 76, & + 1, 77, & + 1, 79, & + 1, 83, & + 1, 85, & + 2, 3, & + 2, 4, & + 2, 5, & + 2, 6, & + 2, 7, & + 2, 8, & + 2, 9, & + 2, 10, & + 2, 11, & + 2, 12, & + 2, 13, & + 2, 14, & + 2, 15, & + 2, 16, & + 2, 17, & + 2, 18, & + 2, 19, & + 2, 20, & + 2, 21, & + 2, 22, & + 2, 23, & + 2, 24, & + 2, 25, & + 2, 26, & + 2, 28, & + 2, 29, & + 2, 30, & + 2, 33, & + 2, 34, & + 2, 35, & + 2, 36, & + 2, 37, & + 2, 38, & + 2, 39, & + 2, 40, & + 2, 41, & + 2, 44, & + 2, 46, & + 2, 47, & + 2, 48, & + 2, 49, & + 2, 51, & + 2, 55, & + 2, 56, & + 2, 57, & + 2, 59, & + 2, 60, & + 2, 62, & + 2, 63, & + 2, 65, & + 2, 67, & + 2, 69, & + 2, 71, & + 2, 72, & + 2, 83, & + 3, 4, & + 3, 5, & + 3, 6, & + 3, 7, & + 3, 8, & + 3, 9, & + 3, 10, & + 3, 11, & + 3, 12, & + 3, 13, & + 3, 14, & + 3, 15, & + 3, 16, & + 3, 17, & + 3, 18, & + 3, 19, & + 3, 20, & + 3, 21, & + 3, 22, & + 3, 23, & + 3, 24, & + 3, 25, & + 3, 26, & + 3, 27, & + 3, 28, & + 3, 29, & + 3, 30, & + 3, 31, & + 3, 32, & + 3, 33, & + 3, 34, & + 3, 35, & + 3, 36, & + 3, 37, & + 3, 38, & + 3, 39, & + 3, 40, & + 3, 41, & + 3, 42, & + 3, 43, & + 3, 44, & + 3, 45, & + 3, 47, & + 3, 49, & + 3, 50, & + 3, 51, & + 3, 55, & + 3, 56, & + 3, 57, & + 3, 58, & + 3, 59, & + 3, 60, & + 3, 61, & + 3, 62, & + 3, 63, & + 3, 65, & + 3, 67, & + 3, 69, & + 3, 74, & + 3, 75, & + 3, 76, & + 3, 83, & + 4, 5, & + 4, 6, & + 4, 7, & + 4, 8, & + 4, 9, & + 4, 10, & + 4, 11, & + 4, 12, & + 4, 13, & + 4, 14, & + 4, 15, & + 4, 16, & + 4, 17, & + 4, 18, & + 4, 19, & + 4, 20, & + 4, 21, & + 4, 22, & + 4, 23, & + 4, 24, & + 4, 25, & + 4, 26, & + 4, 27, & + 4, 28, & + 4, 29, & + 4, 30, & + 4, 31, & + 4, 32, & + 4, 33, & + 4, 34, & + 4, 35, & + 4, 36, & + 4, 37, & + 4, 38, & + 4, 39, & + 4, 41, & + 4, 44, & + 4, 47, & + 4, 49, & + 4, 50, & + 4, 51, & + 4, 55, & + 4, 56, & + 4, 57, & + 4, 58, & + 4, 60, & + 4, 61, & + 4, 62, & + 4, 63, & + 4, 65, & + 4, 67, & + 4, 69, & + 4, 74, & + 4, 75, & + 4, 76, & + 4, 83, & + 5, 6, & + 5, 7, & + 5, 8, & + 5, 9, & + 5, 10, & + 5, 11, & + 5, 12, & + 5, 13, & + 5, 14, & + 5, 15, & + 5, 16, & + 5, 17, & + 5, 18, & + 5, 19, & + 5, 20, & + 5, 21, & + 5, 22, & + 5, 23, & + 5, 24, & + 5, 25, & + 5, 26, & + 5, 27, & + 5, 28, & + 5, 29, & + 5, 30, & + 5, 31, & + 5, 32, & + 5, 33, & + 5, 34, & + 5, 35, & + 5, 36, & + 5, 37, & + 5, 38, & + 5, 39, & + 5, 41, & + 5, 42, & + 5, 44, & + 5, 45, & + 5, 46, & + 5, 47, & + 5, 49, & + 5, 50, & + 5, 51, & + 5, 55, & + 5, 56, & + 5, 57, & + 5, 58, & + 5, 59, & + 5, 60, & + 5, 61, & + 5, 62, & + 5, 63, & + 5, 65, & + 5, 69, & + 5, 72, & + 5, 74, & + 5, 83, & + 6, 7, & + 6, 8, & + 6, 9, & + 6, 10, & + 6, 11, & + 6, 12, & + 6, 13, & + 6, 14, & + 6, 15, & + 6, 16, & + 6, 17, & + 6, 18, & + 6, 19, & + 6, 20, & + 6, 21, & + 6, 22, & + 6, 23, & + 6, 24, & + 6, 25, & + 6, 26, & + 6, 28, & + 6, 29, & + 6, 31, & + 6, 32, & + 6, 33, & + 6, 34, & + 6, 35, & + 6, 36, & + 6, 37, & + 6, 38, & + 6, 39, & + 6, 41, & + 6, 45, & + 6, 48, & + 6, 49, & + 6, 50, & + 6, 51, & + 6, 55, & + 6, 56, & + 6, 57, & + 6, 58, & + 6, 59, & + 6, 60, & + 6, 61, & + 6, 62, & + 6, 63, & + 6, 65, & + 6, 74, & + 6, 77, & + 6, 81, & + 7, 8, & + 7, 9, & + 7, 10, & + 7, 11, & + 7, 12, & + 7, 13, & + 7, 14, & + 7, 15, & + 7, 16, & + 7, 17, & + 7, 18, & + 7, 19, & + 7, 20, & + 7, 21, & + 7, 22, & + 7, 23, & + 7, 24, & + 7, 25, & + 7, 26, & + 7, 27, & + 7, 28, & + 7, 30, & + 7, 31, & + 7, 34, & + 7, 35, & + 7, 36, & + 7, 39, & + 7, 41, & + 7, 42, & + 7, 44, & + 7, 46, & + 7, 47, & + 7, 49, & + 7, 51, & + 7, 55, & + 7, 56, & + 7, 57, & + 7, 58, & + 7, 59, & + 7, 60, & + 7, 61, & + 7, 62, & + 7, 63, & + 7, 65, & + 7, 67, & + 7, 69, & + 7, 73, & + 7, 74, & + 7, 75, & + 7, 76, & + 7, 80, & + 7, 81, & + 8, 9, & + 8, 10, & + 8, 11, & + 8, 13, & + 8, 17, & + 8, 18, & + 8, 20, & + 8, 24, & + 8, 25, & + 8, 28, & + 8, 31, & + 8, 41, & + 8, 44, & + 8, 50, & + 8, 56, & + 8, 57, & + 8, 60, & + 8, 62, & + 9, 10, & + 9, 11, & + 9, 12, & + 9, 13, & + 9, 15, & + 9, 16, & + 9, 17, & + 9, 18, & + 9, 19, & + 9, 20, & + 9, 21, & + 9, 22, & + 9, 23, & + 9, 24, & + 9, 25, & + 9, 26, & + 9, 27, & + 9, 28, & + 9, 29, & + 9, 30, & + 9, 31, & + 9, 32, & + 9, 33, & + 9, 34, & + 9, 35, & + 9, 37, & + 9, 39, & + 9, 41, & + 9, 42, & + 9, 47, & + 9, 50, & + 9, 51, & + 9, 55, & + 9, 56, & + 9, 57, & + 9, 60, & + 9, 61, & + 9, 62, & + 9, 63, & + 9, 65, & + 9, 67, & + 10, 11, & + 10, 12, & + 10, 13, & + 10, 20, & + 10, 21, & + 10, 22, & + 10, 23, & + 10, 32, & + 10, 36, & + 10, 37, & + 10, 39, & + 10, 41, & + 10, 51, & + 10, 56, & + 10, 57, & + 10, 60, & + 10, 62, & + 11, 12, & + 11, 13, & + 11, 15, & + 11, 16, & + 11, 17, & + 11, 19, & + 11, 20, & + 11, 21, & + 11, 22, & + 11, 23, & + 11, 24, & + 11, 25, & + 11, 26, & + 11, 28, & + 11, 30, & + 11, 31, & + 11, 32, & + 11, 33, & + 11, 34, & + 11, 35, & + 11, 36, & + 11, 37, & + 11, 39, & + 11, 41, & + 11, 47, & + 11, 51, & + 11, 56, & + 11, 62, & + 11, 65, & + 11, 74, & + 11, 85, & + 12, 13, & + 12, 18, & + 12, 19, & + 12, 20, & + 12, 23, & + 12, 24, & + 12, 25, & + 12, 29, & + 12, 37, & + 12, 39, & + 12, 41, & + 12, 51, & + 12, 56, & + 12, 62, & + 13, 14, & + 13, 15, & + 13, 16, & + 13, 18, & + 13, 19, & + 13, 20, & + 13, 21, & + 13, 22, & + 13, 23, & + 13, 24, & + 13, 25, & + 13, 26, & + 13, 28, & + 13, 29, & + 13, 30, & + 13, 31, & + 13, 32, & + 13, 33, & + 13, 34, & + 13, 35, & + 13, 37, & + 13, 38, & + 13, 39, & + 13, 41, & + 13, 42, & + 13, 51, & + 13, 55, & + 13, 56, & + 13, 57, & + 13, 58, & + 13, 60, & + 13, 61, & + 13, 62, & + 13, 63, & + 13, 65, & + 13, 72, & + 14, 15, & + 14, 16, & + 14, 17, & + 14, 19, & + 14, 21, & + 14, 24, & + 14, 25, & + 14, 29, & + 14, 39, & + 14, 42, & + 14, 43, & + 14, 55, & + 14, 62, & + 15, 16, & + 15, 19, & + 15, 24, & + 15, 25, & + 15, 38, & + 15, 41, & + 15, 42, & + 15, 43, & + 15, 55, & + 15, 62, & + 15, 65, & + 16, 22, & + 16, 23, & + 16, 24, & + 16, 25, & + 16, 35, & + 16, 38, & + 16, 39, & + 16, 55, & + 16, 62, & + 16, 65, & + 17, 18, & + 17, 19, & + 17, 20, & + 17, 21, & + 17, 22, & + 17, 24, & + 17, 25, & + 17, 27, & + 17, 31, & + 17, 39, & + 17, 41, & + 18, 19, & + 18, 20, & + 18, 22, & + 18, 23, & + 18, 24, & + 18, 27, & + 18, 33, & + 18, 37, & + 18, 38, & + 18, 50, & + 18, 56, & + 18, 57, & + 18, 60, & + 18, 62, & + 18, 63, & + 18, 65, & + 18, 85, & + 19, 21, & + 19, 22, & + 19, 23, & + 19, 24, & + 19, 25, & + 19, 26, & + 19, 28, & + 19, 29, & + 19, 31, & + 19, 33, & + 19, 34, & + 19, 36, & + 19, 37, & + 19, 39, & + 19, 41, & + 19, 47, & + 19, 55, & + 19, 56, & + 19, 58, & + 19, 62, & + 19, 81, & + 20, 21, & + 20, 22, & + 20, 23, & + 20, 24, & + 20, 25, & + 20, 30, & + 20, 32, & + 20, 33, & + 20, 35, & + 20, 37, & + 20, 39, & + 20, 41, & + 20, 46, & + 20, 56, & + 20, 57, & + 20, 61, & + 20, 63, & + 20, 65, & + 20, 74, & + 20, 75, & + 20, 76, & + 21, 22, & + 21, 23, & + 21, 24, & + 21, 25, & + 21, 26, & + 21, 27, & + 21, 28, & + 21, 29, & + 21, 33, & + 21, 37, & + 21, 41, & + 21, 51, & + 21, 56, & + 21, 74, & + 21, 75, & + 22, 23, & + 22, 24, & + 22, 25, & + 22, 26, & + 22, 32, & + 22, 33, & + 22, 35, & + 22, 37, & + 22, 41, & + 22, 47, & + 22, 56, & + 22, 63, & + 22, 74, & + 22, 75, & + 23, 24, & + 23, 25, & + 23, 28, & + 23, 30, & + 23, 32, & + 23, 35, & + 23, 37, & + 23, 41, & + 23, 44, & + 23, 48, & + 23, 51, & + 23, 55, & + 23, 56, & + 23, 65, & + 23, 75, & + 23, 76, & + 23, 85, & + 24, 25, & + 24, 26, & + 24, 27, & + 24, 28, & + 24, 30, & + 24, 32, & + 24, 33, & + 24, 34, & + 24, 35, & + 24, 36, & + 24, 37, & + 24, 38, & + 24, 39, & + 24, 41, & + 24, 43, & + 24, 47, & + 24, 48, & + 24, 50, & + 24, 51, & + 24, 59, & + 24, 62, & + 24, 74, & + 24, 75, & + 24, 76, & + 24, 80, & + 25, 26, & + 25, 27, & + 25, 33, & + 25, 41, & + 25, 44, & + 25, 47, & + 25, 55, & + 25, 56, & + 25, 61, & + 25, 62, & + 25, 75, & + 25, 76, & + 26, 27, & + 26, 28, & + 26, 31, & + 26, 32, & + 26, 33, & + 26, 34, & + 26, 37, & + 26, 39, & + 26, 41, & + 26, 45, & + 26, 50, & + 27, 32, & + 27, 33, & + 27, 65, & + 27, 75, & + 28, 29, & + 28, 32, & + 28, 37, & + 28, 41, & + 28, 45, & + 28, 48, & + 28, 56, & + 28, 57, & + 28, 61, & + 28, 62, & + 28, 77, & + 29, 35, & + 29, 39, & + 29, 44, & + 29, 48, & + 29, 57, & + 29, 61, & + 29, 77, & + 30, 41, & + 30, 56, & + 31, 35, & + 31, 39, & + 31, 41, & + 31, 44, & + 31, 47, & + 31, 51, & + 31, 56, & + 31, 57, & + 31, 60, & + 31, 61, & + 31, 62, & + 32, 41, & + 33, 35, & + 33, 41, & + 33, 56, & + 33, 74, & + 34, 35, & + 34, 37, & + 34, 39, & + 34, 44, & + 34, 55, & + 34, 56, & + 35, 39, & + 35, 41, & + 36, 37, & + 36, 39, & + 36, 41, & + 36, 81, & + 37, 39, & + 37, 41, & + 37, 44, & + 37, 48, & + 37, 55, & + 37, 65, & + 38, 40, & + 38, 83, & + 39, 40, & + 39, 41, & + 39, 56, & + 39, 57, & + 39, 60, & + 39, 62, & + 39, 65, & + 39, 67, & + 40, 45, & + 40, 56, & + 40, 59, & + 40, 62, & + 40, 68, & + 40, 72, & + 40, 73, & + 40, 83, & + 41, 47, & + 41, 56, & + 42, 43, & + 43, 60, & + 43, 74, & + 44, 56, & + 44, 57, & + 44, 60, & + 44, 61, & + 44, 62, & + 44, 63, & + 44, 65, & + 45, 56, & + 45, 57, & + 45, 59, & + 45, 60, & + 45, 62, & + 45, 68, & + 45, 69, & + 45, 74, & + 46, 56, & + 46, 61, & + 46, 65, & + 47, 51, & + 47, 56, & + 47, 57, & + 47, 61, & + 47, 62, & + 48, 57, & + 48, 61, & + 48, 77, & + 50, 62, & + 51, 56, & + 51, 57, & + 51, 60, & + 51, 62, & + 51, 72, & + 55, 56, & + 55, 57, & + 55, 59, & + 55, 60, & + 55, 62, & + 55, 70, & + 55, 72, & + 56, 57, & + 56, 58, & + 56, 59, & + 56, 60, & + 56, 61, & + 56, 62, & + 56, 63, & + 56, 65, & + 56, 67, & + 56, 68, & + 56, 69, & + 56, 79, & + 57, 59, & + 57, 60, & + 57, 61, & + 57, 62, & + 57, 63, & + 57, 65, & + 57, 67, & + 57, 69, & + 57, 71, & + 57, 77, & + 57, 83, & + 58, 59, & + 58, 60, & + 58, 67, & + 58, 69, & + 58, 70, & + 58, 71, & + 58, 84, & + 59, 60, & + 59, 62, & + 59, 63, & + 59, 69, & + 59, 70, & + 59, 71, & + 59, 83, & + 60, 61, & + 60, 62, & + 60, 63, & + 60, 65, & + 60, 66, & + 60, 67, & + 60, 69, & + 60, 70, & + 60, 71, & + 60, 83, & + 61, 62, & + 61, 63, & + 61, 77, & + 62, 63, & + 62, 65, & + 62, 69, & + 62, 83, & + 63, 69, & + 65, 74, & + 65, 79, & + 66, 71, & + 66, 82, & + 67, 68, & + 67, 69, & + 67, 72, & + 67, 74, & + 68, 83, & + 69, 70, & + 69, 78, & + 70, 71, & + 70, 72, & + 71, 72, & + 72, 74, & + 73, 74, & + 73, 78, & + 73, 79, & + 74, 79, & + 79, 85 & + ], [2, 956])) + + + ddbst_aij = transpose(reshape([& + 86.02_pr, -35.36_pr, & + 61.13_pr, -11.12_pr, & + 76.5_pr, -69.7_pr, & + 986.5_pr, 156.4_pr, & + 674.8_pr, 50.155_pr, & + 1318.0_pr, 300.0_pr, & + 1333.0_pr, 275.8_pr, & + 476.4_pr, 26.76_pr, & + 677.0_pr, 505.7_pr, & + 232.1_pr, 114.8_pr, & + 507.0_pr, 329.3_pr, & + 251.5_pr, 83.36_pr, & + 391.5_pr, -30.48_pr, & + 255.7_pr, 65.33_pr, & + 206.6_pr, -83.98_pr, & + 920.7_pr, 1139.0_pr, & + 287.77_pr, -101.56_pr, & + 597.0_pr, 24.82_pr, & + 663.5_pr, 315.3_pr, & + 35.93_pr, 91.46_pr, & + 53.76_pr, 34.01_pr, & + 24.9_pr, 36.7_pr, & + 104.3_pr, -78.45_pr, & + 11.44_pr, 106.8_pr, & + 661.5_pr, -32.69_pr, & + 543.0_pr, 5541.0_pr, & + -54.433_pr, 180.28_pr, & + 287.38_pr, -61.863_pr, & + 354.55_pr, -25.31_pr, & + 3025.0_pr, 139.93_pr, & + 335.8_pr, 128.0_pr, & + 479.5_pr, -31.52_pr, & + 27.139_pr, 4518.2998_pr, & + 526.5_pr, 50.49_pr, & + 689.0_pr, -165.9_pr, & + -4.189_pr, 47.41_pr, & + 125.8_pr, -5.132_pr, & + 485.3_pr, -31.95_pr, & + -2.859_pr, 147.3_pr, & + 387.1_pr, 529.0_pr, & + -450.4_pr, -34.36_pr, & + 252.7_pr, 110.2_pr, & + 220.3_pr, 13.89_pr, & + -5.869_pr, 30.74_pr, & + 390.9_pr, 27.97_pr, & + 553.3_pr, -11.92_pr, & + 298.62_pr, -57.788_pr, & + 216.1_pr, -23.61_pr, & + 92.99_pr, -8.479_pr, & + 591.04_pr, -102.09_pr, & + 2054.3_pr, 1243.9_pr, & + 919.8_pr, -38.672_pr, & + -39.101_pr, 68.141_pr, & + -19.628_pr, 104.28_pr, & + 120.0_pr, -145.0_pr, & + 271.12_pr, 3.7506_pr, & + 893.01_pr, 742.31_pr, & + 613.3_pr, 315.96_pr, & + -78.389_pr, 165.81_pr, & + 481.7_pr, 105.3_pr, & + 270.9_pr, -178.5_pr, & + 205.51_pr, 7.1644_pr, & + 172.9_pr, 27.87_pr, & + 558.0_pr, 78.06_pr, & + 10.94_pr, 102.35_pr, & + -24.42_pr, 22.15_pr, & + -29.86_pr, 30.14_pr, & + -123.4_pr, 504.1_pr, & + 54.02_pr, 35.64_pr, & + -88.341_pr, 274.74_pr, & + 270.32_pr, -171.06_pr, & + 678.27_pr, -284.66_pr, & + 184.05_pr, 12.039_pr, & + 562.89_pr, -134.73_pr, & + 38.81_pr, 3.446_pr, & + 74.15_pr, -113.6_pr, & + 524.1_pr, 457.0_pr, & + 787.6_pr, -12.52_pr, & + 270.6_pr, 496.1_pr, & + 526.1_pr, 217.5_pr, & + 182.6_pr, 42.92_pr, & + 448.75_pr, 56.3_pr, & + 37.85_pr, 132.1_pr, & + 333.5_pr, 110.4_pr, & + 214.5_pr, 26.51_pr, & + 240.9_pr, 1.163_pr, & + 163.9_pr, -28.7_pr, & + 61.11_pr, -25.38_pr, & + 749.3_pr, 2000.0_pr, & + 280.5_pr, -47.63_pr, & + 336.9_pr, -40.62_pr, & + 318.9_pr, 1264.0_pr, & + -36.87_pr, 40.25_pr, & + 58.55_pr, -23.5_pr, & + -13.99_pr, 51.06_pr, & + -109.7_pr, 160.9_pr, & + 100.1_pr, 70.32_pr, & + 357.5_pr, -1.996_pr, & + 76.3_pr, 16.623_pr, & + 281.67_pr, -74.469_pr, & + 262.9_pr, 82.64_pr, & + 183.8_pr, 174.6_pr, & + 74.051_pr, 211.88_pr, & + 179.0_pr, 64.07_pr, & + -52.87_pr, 573.0_pr, & + -66.46_pr, 124.2_pr, & + 359.3_pr, -131.7_pr, & + -70.45_pr, 249.0_pr, & + 449.4_pr, 62.4_pr, & + 48.33_pr, 1397.0_pr, & + 86.46_pr, -16.11_pr, & + 200.2_pr, 9.755_pr, & + 268.1_pr, 132.4_pr, & + 224.31_pr, -62.736_pr, & + 62.56_pr, 161.1_pr, & + 282.09_pr, -68.78_pr, & + 2287.5_pr, 2381.1001_pr, & + -52.107_pr, 148.57_pr, & + 38.602_pr, 18.78_pr, & + 406.8_pr, 38.76_pr, & + -231.09_pr, 667.1_pr, & + 585.0_pr, 399.44_pr, & + -241.56_pr, -364.32_pr, & + 405.7_pr, -1136.0_pr, & + 330.7_pr, -152.0_pr, & + 465.5_pr, 116.2_pr, & + 63.78_pr, 69.48_pr, & + 16.35_pr, -5.815_pr, & + 372.06_pr, 497.34_pr, & + 167.0_pr, -146.8_pr, & + 636.1_pr, 89.6_pr, & + 1500.1_pr, -305.9_pr, & + 903.8_pr, 362.3_pr, & + 1329.0_pr, 25.34_pr, & + 25.77_pr, 140.1_pr, & + 347.3_pr, 23.39_pr, & + 5.994_pr, 85.84_pr, & + 287.1_pr, 18.12_pr, & + 32.14_pr, 52.13_pr, & + 161.7_pr, -44.85_pr, & + 122.8_pr, -22.31_pr, & + 90.49_pr, -223.9_pr, & + 648.2_pr, 247.5_pr, & + -4.449_pr, 31.87_pr, & + 212.5_pr, -22.97_pr, & + 537.4_pr, 62.32_pr, & + -18.81_pr, 4.68_pr, & + -144.4_pr, 121.3_pr, & + -231.9_pr, 288.5_pr, & + 3.0_pr, -4.7_pr, & + 187.0_pr, -97.27_pr, & + 168.04_pr, 10.38_pr, & + 194.9_pr, 1824.0_pr, & + 52.068_pr, 21.497_pr, & + -10.43_pr, 28.41_pr, & + -64.69_pr, 157.29_pr, & + 210.366_pr, 221.4_pr, & + 113.3_pr, 58.68_pr, & + 261.3_pr, -154.2_pr, & + 406.59_pr, -117.14_pr, & + 169.9_pr, -2.504_pr, & + 383.9_pr, -123.6_pr, & + -259.1_pr, 395.8_pr, & + 389.3_pr, -237.2_pr, & + 245.6_pr, -133.9_pr, & + 22.67_pr, 140.6_pr, & + 103.5_pr, 317.6_pr, & + -432.3_pr, 787.9_pr, & + 238.9_pr, 234.4_pr, & + 30.04_pr, -23.88_pr, & + -88.11_pr, 167.9_pr, & + 333.3_pr, -86.88_pr, & + -59.58_pr, 142.9_pr, & + -39.16_pr, 23.93_pr, & + 35.973_pr, 70.567_pr, & + 998.74_pr, 534.6_pr, & + 219.25_pr, -29.4_pr, & + 131.51_pr, -65.123_pr, & + 285.26_pr, -0.6989_pr, & + 322.7_pr, -133.4_pr, & + 309.59_pr, 58.687_pr, & + 49.132_pr, -98.107_pr, & + 734.87_pr, 16.884_pr, & + 680.05_pr, -252.61_pr, & + 30.72_pr, 65.28_pr, & + 301.7_pr, 87.12_pr, & + 678.4_pr, -46.77_pr, & + -59.15_pr, -127.0_pr, & + -70.13_pr, -131.4_pr, & + 115.8_pr, -135.7_pr, & + 87.262_pr, 3329.2_pr, & + 803.2_pr, 25.82_pr, & + 603.25_pr, -44.5_pr, & + 5695.0_pr, 377.6_pr, & + 884.9_pr, 244.2_pr, & + -52.1_pr, 365.8_pr, & + 586.8_pr, 106.0_pr, & + 5688.0_pr, -170.0_pr, & + 197.8_pr, 428.0_pr, & + 213.1_pr, 65.69_pr, & + 19.02_pr, 296.4_pr, & + -49.29_pr, 223.0_pr, & + 23.5_pr, 109.9_pr, & + 664.2_pr, 762.8_pr, & + 52.8_pr, 49.8_pr, & + 6096.0_pr, -138.4_pr, & + 872.3_pr, 89.86_pr, & + -114.14_pr, 122.91_pr, & + -111.0_pr, 140.78_pr, & + -80.25_pr, 69.9_pr, & + -141.3_pr, 134.7_pr, & + -211.0_pr, 402.5_pr, & + 3629.0_pr, -97.05_pr, & + 4448.0_pr, -127.8_pr, & + -9.451_pr, 40.675_pr, & + 393.6_pr, 19.56_pr, & + 48.49_pr, 128.8_pr, & + 4975.0_pr, 150.64_pr, & + 259.0_pr, 26.41_pr, & + 210.0_pr, 1112.0_pr, & + -147.47_pr, 774.87_pr, & + 4284.0_pr, -143.2_pr, & + -119.2_pr, 397.4_pr, & + -282.5_pr, 419.1_pr, & + 101.4_pr, -157.3_pr, & + 5629.0_pr, -240.2_pr, & + 69.26_pr, 615.8_pr, & + 46.38_pr, 6.214_pr, & + 421.9_pr, -19.45_pr, & + -203.6_pr, 274.1_pr, & + 184.9_pr, 2.845_pr, & + 4.6162_pr, 1475.9_pr, & + 594.75_pr, 432.46_pr, & + 296.88_pr, 249.32_pr, & + 37.876_pr, 5.5762_pr, & + 130.37_pr, 384.98_pr, & + -303.76_pr, 406.32_pr, & + 23.158_pr, 40.011_pr, & + 320.0_pr, 126.44_pr, & + 348.35_pr, -16.621_pr, & + -187.6_pr, 284.6_pr, & + -70.5_pr, 139.8_pr, & + 411.5_pr, -156.9_pr, & + 50.8_pr, -204.7_pr, & + -58.42_pr, -74.1_pr, & + 220.72_pr, -179.19_pr, & + 3339.6001_pr, -68.983_pr, & + -137.1_pr, 249.1_pr, & + 353.5_pr, -229.1_pr, & + -259.7_pr, -451.6_pr, & + 84.0_pr, 164.5_pr, & + -203.6_pr, 529.0_pr, & + 101.1_pr, 245.4_pr, & + 267.8_pr, 139.4_pr, & + 28.06_pr, 237.7_pr, & + 8.642_pr, -242.8_pr, & + 42.7_pr, -150.0_pr, & + -323.0_pr, 28.6_pr, & + -52.39_pr, -17.4_pr, & + 170.029_pr, -132.3_pr, & + 6.712_pr, 185.4_pr, & + 199.0_pr, -151.0_pr, & + 75.62_pr, 562.2_pr, & + 65.28_pr, 527.6_pr, & + -98.12_pr, 742.1_pr, & + 143.1_pr, 856.3_pr, & + 123.5_pr, 325.7_pr, & + 256.5_pr, 261.6_pr, & + 157.1_pr, 561.6_pr, & + 488.9_pr, 609.8_pr, & + 147.5_pr, 461.6_pr, & + -120.46_pr, 521.63_pr, & + -318.93_pr, 267.6_pr, & + 313.5_pr, 501.3_pr, & + 202.1_pr, 524.9_pr, & + 727.8_pr, 68.95_pr, & + -202.1_pr, -25.87_pr, & + 74.27_pr, 389.3_pr, & + 225.8_pr, 738.9_pr, & + 44.78_pr, 649.7_pr, & + -143.9_pr, 64.16_pr, & + 190.3_pr, 88.63_pr, & + -817.7_pr, 1913.0_pr, & + -504.2_pr, 796.9_pr, & + 72.96_pr, 794.4_pr, & + -382.7_pr, 394.8_pr, & + -248.3_pr, 517.5_pr, & + 104.7_pr, -61.2_pr, & + 57.65_pr, 682.5_pr, & + 217.22_pr, 1210.0_pr, & + -252.04_pr, -245.9_pr, & + 510.64_pr, 148.16_pr, & + 671.69_pr, 516.17_pr, & + 2018.6_pr, 382.59_pr, & + -568.2_pr, 223.6_pr, & + 589.2_pr, 2836.8999_pr, & + -111.34_pr, 3156.0_pr, & + 2847.3999_pr, 2357.2_pr, & + 2138.3999_pr, 505.73_pr, & + 436.0_pr, -231.6_pr, & + 3222.5_pr, 3694.7_pr, & + 470.09_pr, 559.06_pr, & + -1058.0_pr, -1455.0_pr, & + 4479.7998_pr, 4760.2998_pr, & + -180.95_pr, 289.6_pr, & + -101.7_pr, -265.2_pr, & + 23.39_pr, 108.65_pr, & + 306.42_pr, -340.18_pr, & + -10.72_pr, 249.63_pr, & + 179.7_pr, 227.8_pr, & + -128.6_pr, 238.4_pr, & + 359.3_pr, -481.65_pr, & + -20.98_pr, -370.3_pr, & + 53.9_pr, -406.8_pr, & + 489.7_pr, -118.1_pr, & + 580.48_pr, -378.24_pr, & + 53.28_pr, 162.6_pr, & + -202.0_pr, 339.8_pr, & + -38.32_pr, 529.0_pr, & + -102.54_pr, 669.9_pr, & + -139.35_pr, 649.1_pr, & + -44.76_pr, 709.6_pr, & + -28.25_pr, 612.8_pr, & + 75.14_pr, 252.56_pr, & + -31.09_pr, 914.2_pr, & + 17.5_pr, 448.6_pr, & + -119.2_pr, 240.8_pr, & + 212.1_pr, 431.3_pr, & + 106.3_pr, 494.7_pr, & + -189.07_pr, 4040.7_pr, & + -399.3_pr, 695.0_pr, & + -5.224_pr, 218.8_pr, & + 33.47_pr, 528.0_pr, & + -48.25_pr, 645.9_pr, & + -172.4_pr, 172.2_pr, & + 165.7_pr, 171.0_pr, & + -52.1_pr, 762.7_pr, & + 37.63_pr, 420.0_pr, & + -59.4_pr, -89.24_pr, & + -46.01_pr, 597.8_pr, & + 9.5251_pr, 196.54_pr, & + 138.95_pr, -490.47_pr, & + -72.04_pr, 414.57_pr, & + 553.56_pr, 2534.3999_pr, & + 1061.4_pr, -516.85_pr, & + 213.64_pr, -8.5326_pr, & + 190.24_pr, 2389.2_pr, & + -33.079_pr, 307.19_pr, & + 250.05_pr, 2136.6001_pr, & + 261.54_pr, 231.32_pr, & + -352.2_pr, 264.2_pr, & + -1128.0_pr, -501.4_pr, & + -15.335_pr, 609.43_pr, & + 101.79_pr, -101.54_pr, & + 324.5_pr, -601.8_pr, & + -195.4_pr, 472.5_pr, & + -116.0_pr, 480.8_pr, & + 72.87_pr, 200.8_pr, & + 0.0_pr, 0.0_pr, & + 540.5_pr, -314.7_pr, & + 48.89_pr, -330.4_pr, & + 168.0_pr, -448.2_pr, & + 304.0_pr, -598.8_pr, & + 243.2_pr, -341.6_pr, & + 459.0_pr, -332.9_pr, & + 112.6_pr, 242.8_pr, & + -14.09_pr, -66.17_pr, & + 325.44_pr, 698.24_pr, & + 370.4_pr, 708.69_pr, & + 353.68_pr, 826.76_pr, & + 497.54_pr, 1201.0_pr, & + 133.9_pr, -274.5_pr, & + 220.6_pr, 417.9_pr, & + 399.5_pr, 360.7_pr, & + 887.1_pr, 1081.0_pr, & + 188.026_pr, 23.484_pr, & + 12.72_pr, -137.4_pr, & + 752.0_pr, 3842.5_pr, & + -139.0_pr, -240.0_pr, & + 160.8_pr, 386.6_pr, & + 319.0_pr, -287.1_pr, & + -197.5_pr, 284.4_pr, & + -363.8_pr, 180.2_pr, & + -452.2_pr, 832.2_pr, & + 835.6_pr, -509.3_pr, & + 139.6_pr, -205.7_pr, & + 407.9_pr, -384.3_pr, & + -159.2_pr, 767.82_pr, & + -655.58_pr, -395.59_pr, & + -1163.5_pr, 1720.6_pr, & + -1573.2_pr, -1149.1_pr, & + -2181.8999_pr, -1899.6_pr, & + -318.89_pr, 200.01_pr, & + -3123.3999_pr, 1459.6_pr, & + 724.93_pr, -8.1881_pr, & + -1531.6_pr, 5564.1001_pr, & + -1665.5_pr, -6058.1001_pr, & + -745.7_pr, 3889.0_pr, & + -2965.0_pr, 4980.0_pr, & + 85.79_pr, -1262.0_pr, & + -2832.0_pr, -1641.0_pr, & + -2197.8_pr, -796.4_pr, & + -1026.7_pr, -954.65_pr, & + 696.36_pr, -1270.5_pr, & + 525.98_pr, 944.1_pr, & + 261.73_pr, 79.524_pr, & + -356.1_pr, -133.1_pr, & + -271.1_pr, -155.6_pr, & + -449.4_pr, -36.72_pr, & + -162.8742_pr, -178.5461_pr, & + 119.9_pr, -253.1_pr, & + -305.5_pr, -341.6_pr, & + 408.9_pr, -11.0_pr, & + 1827.0_pr, 10000.0_pr, & + 6915.0_pr, 622.3_pr, & + 8483.5_pr, 1421.3_pr, & + -687.1_pr, 838.4_pr, & + -494.2_pr, -167.3_pr, & + -659.0_pr, -234.7_pr, & + 1005.0_pr, 810.5_pr, & + 695.7_pr, 628.8_pr, & + 824.71_pr, 2290.5_pr, & + 1503.5_pr, 1419.0_pr, & + 4027.5_pr, 3988.6001_pr, & + -37.36_pr, 128.0_pr, & + -213.7_pr, 372.2_pr, & + -190.4_pr, 385.4_pr, & + -103.6_pr, 191.1_pr, & + -174.2_pr, 394.6_pr, & + -169.0_pr, 225.3_pr, & + 6201.0_pr, -450.3_pr, & + 7.341_pr, 29.1_pr, & + 481.7_pr, -287.5_pr, & + 669.4_pr, -297.8_pr, & + -191.69_pr, 286.28_pr, & + -130.3_pr, 82.86_pr, & + -354.55_pr, 552.1_pr, & + -39.2_pr, 372.0_pr, & + -119.8_pr, 518.4_pr, & + 137.5_pr, -142.61_pr, & + 548.5_pr, -101.5_pr, & + 216.138_pr, 303.657_pr, & + -46.28_pr, 160.6_pr, & + -163.7_pr, 317.5_pr, & + 71.46_pr, 135.4_pr, & + 53.59_pr, 138.0_pr, & + 245.2_pr, -142.6_pr, & + -65.229_pr, -160.7_pr, & + -44.58_pr, 110.4_pr, & + -34.57_pr, -40.9_pr, & + -61.7_pr, 97.04_pr, & + -18.8_pr, 123.4_pr, & + -588.9_pr, 992.4_pr, & + 37.54_pr, 156.4_pr, & + -162.6_pr, 278.8_pr, & + 70.16_pr, -72.036_pr, & + 0.1619_pr, 341.49_pr, & + 132.28_pr, 18.074_pr, & + 536.92_pr, -0.8632_pr, & + 646.47_pr, 649.52_pr, & + 7.6453_pr, -119.69_pr, & + 679.19_pr, 1602.1_pr, & + 416.9_pr, 621.0_pr, & + -320.9_pr, -361.8_pr, & + 224.7_pr, -46.78_pr, & + -110.3_pr, 185.1_pr, & + 766.0_pr, -236.5_pr, & + 304.1_pr, -7.838_pr, & + 497.5_pr, -165.5_pr, & + 751.9_pr, -47.51_pr, & + 67.52_pr, 190.6_pr, & + -483.7_pr, 242.8_pr, & + 117.0_pr, 245.9_pr, & + -339.2_pr, 354.0_pr, & + 172.4_pr, 183.8_pr, & + -268.8_pr, 13.89_pr, & + -275.5_pr, 577.5_pr, & + 173.78_pr, -2.6891_pr, & + -162.0_pr, 340.0_pr, & + 415.9_pr, 867.5_pr, & + 1310.9_pr, 1455.7_pr, & + -3401.0_pr, -74.96_pr, & + -241.8_pr, 1167.0_pr, & + -235.7_pr, 461.3_pr, & + -73.5_pr, 136.0_pr, & + -196.7_pr, 2888.6001_pr, & + 475.5_pr, -294.8_pr, & + 494.6_pr, -266.6_pr, & + 660.2_pr, -256.3_pr, & + -34.74_pr, 35.38_pr, & + 108.85_pr, -132.95_pr, & + -209.66_pr, 176.45_pr, & + 54.57_pr, 129.49_pr, & + 442.4_pr, -171.1_pr, & + -81.13_pr, 129.3_pr, & + 183.046_pr, 243.775_pr, & + 202.25_pr, -146.31_pr, & + -101.7_pr, 152.0_pr, & + 148.3_pr, 21.92_pr, & + 18.88_pr, 24.37_pr, & + 1184.6_pr, -327.44_pr, & + 52.08_pr, 41.57_pr, & + -28.61_pr, 175.53_pr, & + -275.2_pr, 611.3_pr, & + 85.33_pr, -82.12_pr, & + 560.2_pr, -234.9_pr, & + 151.8_pr, -3.444_pr, & + 152.49_pr, -132.47_pr, & + 818.72_pr, -742.2_pr, & + 717.2_pr, 347.0_pr, & + -385.6_pr, 31.83_pr, & + -863.4_pr, -269.0_pr, & + 39.903_pr, -98.18_pr, & + -234.0_pr, 457.3_pr, & + -233.4_pr, 554.4_pr, & + -47.25_pr, 99.37_pr, & + -268.1_pr, 193.9_pr, & + -126.2_pr, 235.6_pr, & + 179.7_pr, 351.9_pr, & + 24.28_pr, 383.3_pr, & + 103.9_pr, 201.5_pr, & + -11.4_pr, 134.5_pr, & + 308.9_pr, -116.7_pr, & + -122.3_pr, 145.4_pr, & + 333.0_pr, -189.89_pr, & + -560.6_pr, 606.2_pr, & + 1892.0_pr, 1843.0_pr, & + -78.36_pr, 222.1_pr, & + 251.5_pr, -56.08_pr, & + 5422.2998_pr, -194.1_pr, & + 213.2_pr, -156.1_pr, & + -18.51_pr, 38.81_pr, & + 664.6_pr, -338.5_pr, & + 301.14_pr, 225.39_pr, & + 137.77_pr, -197.71_pr, & + -154.3_pr, -20.93_pr, & + 47.67_pr, 113.9_pr, & + 134.8_pr, -25.15_pr, & + 95.18_pr, -94.49_pr, & + 140.896_pr, 112.382_pr, & + -8.538_pr, 63.71_pr, & + 170.1_pr, -87.31_pr, & + -20.11_pr, 9.207_pr, & + -149.5_pr, 476.6_pr, & + -202.3_pr, 736.4_pr, & + -177.71_pr, -198.49_pr, & + 128.8_pr, -93.51_pr, & + 240.2_pr, -217.9_pr, & + -273.95_pr, 167.3_pr, & + 254.8_pr, -158.2_pr, & + 417.0_pr, -247.8_pr, & + 1338.0_pr, 448.5_pr, & + 109.27_pr, -28.097_pr, & + 322.12_pr, -106.55_pr, & + 2795.3_pr, -350.71_pr, & + 197.09_pr, 70.093_pr, & + 147.51_pr, 1986.8_pr, & + 3191.3_pr, 266.63_pr, & + -96.1_pr, -178.3_pr, & + 687.9_pr, 325.5_pr, & + 382.82_pr, 881.01_pr, & + -568.5_pr, -480.9_pr, & + 430.2_pr, 199.9_pr, & + -107.2_pr, 127.4_pr, & + -41.11_pr, 38.89_pr, & + -200.7_pr, -15.07_pr, & + 358.9_pr, -157.3_pr, & + -82.92_pr, 131.2_pr, & + -99.81_pr, 261.1_pr, & + 30.05_pr, 108.5_pr, & + -70.14_pr, 106.7_pr, & + -164.0_pr, 49.7_pr, & + -664.4_pr, 961.8_pr, & + 275.9_pr, -125.2_pr, & + 43.048_pr, 49.145_pr, & + 997.2_pr, 607.2_pr, & + -189.2_pr, 865.9_pr, & + 147.1_pr, -108.5_pr, & + 71.23_pr, 91.13_pr, & + -18.93_pr, 102.2_pr, & + 570.9_pr, -198.8_pr, & + -38.77_pr, 284.5_pr, & + 448.1_pr, 1464.2_pr, & + -1327.0_pr, 1603.8_pr, & + 17.885_pr, 27.888_pr, & + 2378.0_pr, 1273.0_pr, & + -628.26_pr, -497.83_pr, & + -73.85_pr, -141.4_pr, & + -352.9_pr, -293.7_pr, & + -262.0_pr, 316.9_pr, & + -181.9_pr, 2951.0_pr, & + 243.1_pr, -257.2_pr, & + -196.312_pr, 116.478_pr, & + 22.05_pr, -185.2_pr, & + 74.728_pr, -45.258_pr, & + 1678.0_pr, 308.9_pr, & + -935.4_pr, -730.22_pr, & + 89.7_pr, 117.4_pr, & + -281.6_pr, 777.4_pr, & + -396.0_pr, 493.8_pr, & + 287.0_pr, 429.7_pr, & + -111.0_pr, 140.8_pr, & + 882.0_pr, 898.2_pr, & + 617.5_pr, 334.9_pr, & + -139.3_pr, 134.9_pr, & + 0.1004_pr, 192.3_pr, & + -334.4_pr, 343.7_pr, & + -89.42_pr, -22.1_pr, & + -169.67_pr, 134.28_pr, & + -153.7_pr, -313.5_pr, & + -351.6_pr, 587.3_pr, & + -114.73_pr, 18.98_pr, & + -205.3_pr, 368.5_pr, & + 2845.0_pr, 2475.0_pr, & + -60.78_pr, -42.71_pr, & + 160.7_pr, 281.6_pr, & + -158.8_pr, 159.8_pr, & + -136.6_pr, 221.4_pr, & + 43.717_pr, -109.83_pr, & + 208.55_pr, 226.85_pr, & + 337.77_pr, 132.98_pr, & + 634.45_pr, -68.653_pr, & + 378.0_pr, -28.75_pr, & + -442.89_pr, -369.7_pr, & + 0.0902_pr, -75.338_pr, & + 4.933_pr, 54.32_pr, & + -152.7_pr, 258.6_pr, & + -15.62_pr, 74.04_pr, & + -54.86_pr, 491.95_pr, & + -4.624_pr, 363.5_pr, & + -0.515_pr, 0.283_pr, & + 230.852_pr, 335.743_pr, & + 0.4604_pr, 161.0_pr, & + 177.5_pr, 169.6_pr, & + -62.17_pr, 136.9_pr, & + -203.02_pr, 329.12_pr, & + 81.57_pr, -42.31_pr, & + -55.77_pr, 335.2_pr, & + -151.5_pr, 150.6_pr, & + 120.3_pr, -61.6_pr, & + 16.23_pr, 119.2_pr, & + -268.2_pr, 504.6_pr, & + 307.1_pr, -231.3_pr, & + 434.74_pr, -7.7389_pr, & + 891.7_pr, -53.75_pr, & + -245.39_pr, 188.14_pr, & + 13.41_pr, 519.1_pr, & + -44.7_pr, 543.3_pr, & + 39.63_pr, 504.2_pr, & + 183.4_pr, 631.0_pr, & + -79.08_pr, 993.4_pr, & + -208.9_pr, 570.6_pr, & + 228.4_pr, 616.6_pr, & + -95.0_pr, 5256.0_pr, & + -463.6_pr, -180.2_pr, & + -11.16_pr, 898.2_pr, & + -228.0_pr, -97.77_pr, & + -337.0_pr, 1179.0_pr, & + -322.3_pr, -70.25_pr, & + 73.859_pr, 50.349_pr, & + 1102.1_pr, 698.17_pr, & + -85.001_pr, 671.59_pr, & + 301.76_pr, -263.27_pr, & + -150.5_pr, 197.5_pr, & + -659.5_pr, 36.34_pr, & + -500.1_pr, -491.1_pr, & + 2051.6001_pr, -549.4_pr, & + 108.31_pr, -84.53_pr, & + 249.15_pr, -157.1_pr, & + 62.42_pr, 11.8_pr, & + 153.0_pr, -129.7_pr, & + 32.73_pr, 113.0_pr, & + 86.2_pr, 1971.0_pr, & + 450.088_pr, -73.092_pr, & + 59.02_pr, -27.94_pr, & + 344.4_pr, -262.3_pr, & + -168.2_pr, 383.2_pr, & + 63.67_pr, 182.2_pr, & + 31.401_pr, -66.608_pr, & + -6.3973_pr, 41.589_pr, & + -42.71_pr, -89.89_pr, & + -73.25_pr, -35.08_pr, & + 0.0_pr, 0.0_pr, & + 56.33_pr, 17.97_pr, & + 223.1_pr, -8.309_pr, & + 108.9_pr, -9.639_pr, & + 177.6_pr, -40.82_pr, & + 315.9_pr, -174.5_pr, & + 215.0_pr, -215.0_pr, & + -91.8_pr, 301.9_pr, & + -96.87_pr, 305.4_pr, & + 361.1_pr, -194.7_pr, & + 337.09_pr, -132.38_pr, & + 284.02_pr, 288.17_pr, & + 20.5_pr, -77.94_pr, & + 69.71_pr, -65.42_pr, & + -30.1_pr, 51.9_pr, & + 192.1_pr, -0.2266_pr, & + 116.612_pr, -26.058_pr, & + -64.38_pr, 48.484_pr, & + 86.4_pr, 21.76_pr, & + 363.7_pr, -343.6_pr, & + 111.2_pr, -149.8_pr, & + 255.8_pr, -193.0_pr, & + -35.68_pr, -196.2_pr, & + 565.9_pr, -363.1_pr, & + 126.47_pr, -291.14_pr, & + -237.66_pr, 709.31_pr, & + 128.3_pr, -29.29_pr, & + 366.7_pr, -54.69_pr, & + 53.86_pr, -50.14_pr, & + 92.002_pr, -17.588_pr, & + 81.611_pr, -36.23_pr, & + -75.97_pr, 248.4_pr, & + 490.88_pr, -34.68_pr, & + 534.7_pr, 514.6_pr, & + 132.2_pr, -60.71_pr, & + 546.68_pr, -133.16_pr, & + 247.8_pr, 48.49_pr, & + 146.6_pr, 77.55_pr, & + 222.38_pr, 195.84_pr, & + 337.7_pr, -58.43_pr, & + 369.49_pr, -85.148_pr, & + 187.1_pr, -134.2_pr, & + 215.2_pr, -124.6_pr, & + 498.6_pr, -186.7_pr, & + 256.5_pr, 335.7_pr, & + 233.1_pr, 70.81_pr, & + 423.1_pr, 3.163_pr, & + 63.95_pr, -11.3_pr, & + 108.5_pr, -79.34_pr, & + 259.39_pr, -43.834_pr, & + -191.54_pr, 378.87_pr, & + 589.06_pr, 290.17_pr, & + 220.2_pr, -60.5_pr, & + 65.79_pr, 29.53_pr, & + -80.976_pr, 323.47_pr, & + -34.521_pr, 236.96_pr, & + 132.7_pr, 132.9_pr, & + 2213.0_pr, -123.1_pr, & + 593.4_pr, -185.3_pr, & + -71.18_pr, 956.1_pr, & + -209.7_pr, 161.5_pr, & + 434.1_pr, 7.082_pr, & + 347.79_pr, 152.67_pr, & + 299.0_pr, -78.4_pr, & + 69.383_pr, 157.35_pr, & + 477.45_pr, 17.6_pr, & + 180.5_pr, 78.05_pr, & + 537.5_pr, -105.78_pr, & + 533.2_pr, -85.12_pr, & + 320.2_pr, 277.8_pr, & + 139.822_pr, 481.348_pr, & + 304.3_pr, 64.28_pr, & + 10.17_pr, 125.3_pr, & + -27.701_pr, 174.433_pr, & + 10.76_pr, 379.4_pr, & + -223.1_pr, 223.6_pr, & + 248.4_pr, -124.7_pr, & + -218.9_pr, 844.0_pr, & + -4.565_pr, 176.3_pr, & + 2990.0_pr, 2448.0_pr, & + -124.0_pr, 4288.0_pr, & + -115.1_pr, 359.3_pr, & + 256.0_pr, -79.88_pr, & + 0.0_pr, 0.0_pr, & + 292.7_pr, -27.45_pr, & + -47.37_pr, 167.9_pr, & + 469.8_pr, 885.5_pr, & + 130.13_pr, 446.14_pr, & + 0.0_pr, 0.0_pr, & + 575.8_pr, 276.4_pr, & + 214.1_pr, 42.987_pr, & + 162.98_pr, 14.907_pr, & + 774.56_pr, 353.99_pr, & + 0.0_pr, 0.0_pr, & + 31.66_pr, 85.7_pr, & + 78.92_pr, -71.0_pr, & + 1004.2_pr, -274.1_pr, & + -18.27_pr, 6.971_pr, & + 338.87_pr, 26.901_pr, & + -0.1486_pr, 87.264_pr, & + 0.0_pr, 0.0_pr, & + 43.37_pr, -64.28_pr, & + 405.1_pr, -168.2_pr, & + -417.2_pr, 535.8_pr, & + 302.2_pr, -191.7_pr, & + 347.8_pr, -264.3_pr, & + -262.0_pr, 262.0_pr, & + -353.5_pr, 515.8_pr, & + 137.27_pr, 156.35_pr, & + 52.1_pr, 1985.0_pr, & + 283.8_pr, 1390.0_pr, & + 1390.3_pr, -150.8_pr, & + 521.38_pr, -186.4_pr, & + 1158.0_pr, 135.7_pr, & + 68.55_pr, 288.1_pr, & + 32.9_pr, -111.2_pr, & + -195.1_pr, 627.7_pr, & + 100.31_pr, 39.267_pr, & + -23.91_pr, -80.8_pr, & + 137.4_pr, -121.0_pr, & + 2073.2_pr, 631.5_pr, & + -119.8_pr, 6.699_pr, & + -22.589_pr, -125.98_pr, & + 32.648_pr, -173.86_pr, & + -10.699_pr, -9.775_pr, & + -97.71_pr, 136.6_pr, & + 153.7_pr, -29.34_pr, & + -208.8_pr, 837.2_pr, & + -8.804_pr, 5.15_pr, & + 423.4_pr, -53.91_pr, & + 8.7996_pr, -67.392_pr, & + 255.0_pr, -137.7_pr, & + 730.8_pr, -198.0_pr, & + 26.35_pr, -66.31_pr, & + -32.1039_pr, 83.4508_pr, & + 713.9_pr, -547.63_pr, & + 365.54_pr, -43.958_pr, & + -117.17_pr, 185.6_pr, & + 37.65_pr, -4.7649_pr, & + -5.579_pr, 55.8_pr, & + 72.31_pr, -28.65_pr, & + 360.1_pr, -213.9_pr, & + 400.7_pr, -106.8_pr, & + 616.3_pr, -86.3_pr, & + 641.6_pr, 366.1_pr, & + -1013.7_pr, 165.65_pr, & + -52.82_pr, 260.3_pr, & + 111.8_pr, -32.17_pr, & + 332.65_pr, -213.34_pr, & + -338.3_pr, 705.6_pr, & + 330.73_pr, 136.8_pr, & + -74.07_pr, 516.7_pr, & + 250.2_pr, 65.97_pr, & + 1204.0_pr, 86.243_pr, & + 288.2_pr, -158.17_pr, & + 122.4_pr, 101.2_pr, & + 183.65_pr, -5.8025_pr, & + -2166.0_pr, 745.3_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -209.22_pr, 57.144_pr, & + 204.8_pr, 52.71_pr, & + 456.4_pr, 113.21_pr, & + -94.959_pr, -164.86_pr, & + 826.49_pr, 14.904_pr, & + 767.11_pr, 373.02_pr, & + -233.85_pr, -382.92_pr, & + 95.548_pr, -30.027_pr, & + 349.0_pr, -186.9_pr, & + 384.2_pr, -193.1_pr, & + -255.14_pr, 209.42_pr, & + 598.8_pr, -78.75_pr, & + -81.7_pr, 250.5_pr, & + 285.4_pr, -62.4_pr, & + 356.0_pr, -148.9_pr, & + 316.9_pr, -174.0_pr, & + 121.9_pr, -363.4_pr, & + -667.3_pr, -137.8_pr, & + 211.09_pr, -241.64_pr, & + 355.5_pr, -167.1_pr, & + 369.7_pr, 76.05_pr, & + 330.8_pr, -240.0_pr, & + 1177.0_pr, -27.1_pr, & + 350.68_pr, 146.01_pr, & + -151.94_pr, -20.807_pr, & + 0.0_pr, 0.0_pr, & + 200.48_pr, -361.75_pr, & + -1329.9_pr, 531.64_pr, & + 29.477_pr, 444.81_pr, & + 43.461_pr, -3.2734_pr, & + 762.73_pr, 528.38_pr, & + 208.66_pr, 234.81_pr, & + -1397.6_pr, -1361.7_pr, & + 1080.3_pr, 4278.7002_pr, & + 590.21_pr, 1453.4_pr, & + 973.45_pr, 1900.0_pr, & + 1339.0_pr, 1893.1_pr, & + 1369.3_pr, -144.22_pr, & + 259.1_pr, 522.6_pr, & + 73.563_pr, 196.16_pr, & + 208.14_pr, 32.043_pr, & + 568.2_pr, -201.6_pr, & + -580.82_pr, 694.28_pr, & + 78.98_pr, 114.96_pr, & + 838.06_pr, 3048.8999_pr, & + 161.54_pr, 4.2038_pr, & + 180.2_pr, 69.85_pr, & + -108.91_pr, 144.4_pr, & + 38.274_pr, 198.92_pr, & + 565.2_pr, 55.66_pr, & + 234.93_pr, 109.11_pr, & + 17.425_pr, 11.868_pr, & + 64.108_pr, 11.865_pr, & + 511.99_pr, 278.1_pr, & + 253.92_pr, 128.55_pr, & + 62.419_pr, 1.6233_pr, & + 44.22_pr, 394.7_pr, & + -27.596_pr, 211.01_pr, & + 364.3_pr, -2897.0_pr, & + 14.38_pr, -5.56_pr, & + 271.31_pr, -103.94_pr, & + 72.986_pr, 142.06_pr, & + -7.7202_pr, 32.631_pr, & + -23.358_pr, 44.349_pr, & + 535.78_pr, -1101.9_pr, & + 449.9418_pr, -162.7075_pr, & + 130.5_pr, 153.8_pr, & + 43.11_pr, 40.49_pr, & + 448.22_pr, 373.66_pr, & + 11.986_pr, 2.1214_pr, & + 190.87_pr, 4196.2002_pr, & + 64.1_pr, -18.703_pr, & + 217.2_pr, 4536.0_pr, & + 120.5_pr, 209.3_pr, & + -21.61_pr, 54.02_pr, & + 97.117_pr, -58.35_pr, & + 862.84_pr, 648.2_pr, & + 77.701_pr, 247.42_pr, & + 25.06_pr, 6.423_pr, & + -37.18_pr, 1287.0_pr, & + 412.6_pr, 140.9_pr, & + -112.9_pr, 558.3_pr, & + 154.6_pr, 319.7_pr, & + 69.59_pr, 67.28_pr, & + 110.3_pr, -19.7_pr, & + 19.597_pr, 85.38_pr, & + 628.0_pr, 137.0_pr, & + 665.7_pr, 116.97_pr, & + 75.68_pr, 229.32_pr, & + 863.18_pr, 494.67_pr, & + 276.4_pr, 863.2_pr, & + 62.017_pr, 372.0_pr, & + 166.92_pr, 522.68_pr, & + 203.4_pr, 177.9_pr, & + -112.6_pr, 18.86_pr, & + 308.78_pr, 471.48_pr, & + 353.0_pr, 593.3_pr, & + 4516.5_pr, -3859.3_pr, & + 0.792_pr, 280.06_pr, & + 607.5_pr, 44.3_pr, & + 101.9_pr, 209.8_pr, & + -27.216_pr, 76.955_pr, & + -243.01_pr, 534.14_pr, & + 44.729_pr, 109.55_pr, & + 168.03_pr, 273.45_pr, & + 145.2_pr, 160.53_pr, & + 1731.3_pr, 366.81_pr, & + 278.6_pr, -121.3_pr, & + 218.8_pr, 184.0_pr, & + 169.99_pr, 613.1_pr, & + 158.2_pr, 630.21_pr, & + 515.25_pr, 783.19_pr, & + 2.0069_pr, 132.0_pr, & + 584.43_pr, -205.3_pr], [2, 956])) + + + ddbst_bij = transpose(reshape([& + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.7396_pr, -0.1287_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -3.4233_pr, 17.412_pr, & + -3.9132_pr, 0.8615_pr, & + 0.8459_pr, -0.7386_pr, & + 1.8192_pr, -1.2191_pr, & + -1.4549_pr, 4.9782_pr, & + -0.9903_pr, 0.3229_pr, & + -3.1342_pr, -5.7074_pr, & + -2.5418_pr, -0.4563_pr, & + 1.8727_pr, -1.149_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -1.499_pr, 1.391_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 1.5473_pr, -1.1151_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 5.8221_pr, -8.0999_pr, & + -0.8727_pr, -0.5806_pr, & + 1.2296_pr, 0.8134_pr, & + 0.4285_pr, 3.198_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -0.101_pr, 0.212_pr, & + -0.9896_pr, -1.6778_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -2.6423_pr, 0.872_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -1.6454_pr, -0.8484_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -0.2073_pr, -0.9249_pr, & + 0.0_pr, 0.0_pr, & + 63.323_pr, -2.1163_pr, & + 2.1966_pr, -1.523_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0199_pr, -3.8511_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 8.079_pr, 8.133_pr, & + 2.681_pr, -5.2997_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -4.7829_pr, -9.2193_pr, & + -1.2561_pr, 1.1696_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.335_pr, -0.0476_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 1.0667_pr, -0.2461_pr, & + 5.4765_pr, -4.3437_pr, & + 11.993_pr, 5.8604_pr, & + 14.238_pr, 58.045_pr, & + 2.8368_pr, 12.19_pr, & + 20.683_pr, -7.6407_pr, & + -0.0136_pr, -0.2077_pr, & + 12.174_pr, -27.41_pr, & + 13.772_pr, 31.281_pr, & + 2.442_pr, -9.325_pr, & + 17.8_pr, -8.251_pr, & + 3.623_pr, 3.371_pr, & + 9.663_pr, 7.456_pr, & + 5.2282_pr, -0.2825_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0696_pr, -2.9588_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -1.4761_pr, 1.8879_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.3813_pr, 0.4315_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 13.11_pr, 1.156_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -3.5627_pr, 2.9173_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.962_pr, 0.4559_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -0.1098_pr, -0.6121_pr, & + 15.524_pr, -1.1326_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 2.6956_pr, 1.1376_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -0.0585_pr, -0.8047_pr, & + 0.0_pr, 0.0_pr, & + -0.8191_pr, -0.3666_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -0.8372_pr, 0.8674_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 2.6354_pr, -1.6026_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 1.7024_pr, -0.9138_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -1.3117_pr, -0.4555_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 2.2203_pr, -1.3662_pr, & + -0.88_pr, 0.504_pr, & + 0.0_pr, 0.0_pr, & + -0.2617_pr, 0.6203_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -1.91_pr, 1.203_pr, & + 1.284_pr, -0.753_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -0.5043_pr, 0.0038_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 19.011_pr, -0.1675_pr, & + 3.2325_pr, -0.8032_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -1.9075_pr, 3.1197_pr, & + 0.0_pr, 0.0_pr, & + -0.0302_pr, 3.415_pr, & + 0.1403_pr, 11.556_pr, & + -2.5805_pr, 5.0788_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 3.6997_pr, -3.0173_pr, & + 0.0_pr, 0.0_pr, & + -1.0158_pr, -10.247_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -1.1761_pr, -0.23_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -0.6512_pr, 27.48_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -2.9826_pr, 6.9864_pr, & + -3.0489_pr, 1.38_pr, & + -0.609_pr, -0.853_pr, & + 0.0_pr, 0.0_pr, & + -3.535_pr, -2.6684_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -0.553_pr, -1.315_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -2.1569_pr, -0.3007_pr, & + 0.0_pr, 0.0_pr, & + -0.7726_pr, 0.5795_pr, & + -0.4654_pr, -1.714_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -0.3527_pr, -0.7528_pr, & + 0.0_pr, 0.0_pr, & + -0.0012_pr, -0.3801_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0033_pr, -0.5351_pr, & + -12.309_pr, -8.1869_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 5.4092_pr, -1.5559_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -0.9455_pr, -0.3501_pr, & + -2.12_pr, 1.53_pr, & + 140.84_pr, 4.0664_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 4.6709_pr, -1.4647_pr, & + 0.0_pr, 0.0_pr, & + -0.603_pr, -0.151_pr, & + -5.7368_pr, -1.3366_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr & + ], [2, 956])) + + + ddbst_cij = transpose(reshape([& + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0046309_pr, -0.0017906_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0031901_pr, -0.0020106_pr, & + 0.0013022_pr, 0.012651_pr, & + 0.0066383_pr, -0.0015601_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -0.016546_pr, 0.022564_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.010324_pr, 0.0080196_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.00057918_pr, 7.6678e-05_pr, & + -0.0026029_pr, 0.0013099_pr, & + -0.01225_pr, -0.005122_pr, & + -0.012451_pr, -0.097615_pr, & + 0.0_pr, 0.0_pr, & + -0.019561_pr, 0.0094502_pr, & + 0.0010576_pr, 0.00013033_pr, & + -0.006931_pr, 0.07115_pr, & + -0.014048_pr, -0.03308_pr, & + 0.0_pr, 0.0_pr, & + -0.0193_pr, -0.0053_pr, & + -0.002973_pr, 0.006117_pr, & + -0.01247_pr, -0.01156_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + -0.000736_pr, 0.06494_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0089373_pr, 0.034469_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.046316_pr, 0.04718_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr, & + 0.0_pr, 0.0_pr], [2, 956])) + + + do k=1,956 + i = ddbst_ij(k, 1) + j = ddbst_ij(k, 2) + + Aij = parameters%get_maingroups_aij(i, j) + Aji = parameters%get_maingroups_aij(j, i) + + Bij = parameters%get_maingroups_bij(i, j) + Bji = parameters%get_maingroups_bij(j, i) + + Cij = parameters%get_maingroups_cij(i, j) + Cji = parameters%get_maingroups_cij(j, i) + + call check(error, abs(Aij - ddbst_aij(k, 1)) < 1e-10_pr) + call check(error, abs(Aji - ddbst_aij(k, 2)) < 1e-10_pr) + + call check(error, abs(Bij - ddbst_bij(k, 1)) < 1e-10_pr) + call check(error, abs(Bji - ddbst_bij(k, 2)) < 1e-10_pr) + + call check(error, abs(Cij - ddbst_cij(k, 1)) < 1e-10_pr) + call check(error, abs(Cji - ddbst_cij(k, 2)) < 1e-10_pr) + + ! Check the first occurrence of a subgroup with main groups i, j + do l=1,size(parameters%subgroups_ids) + if (parameters%get_subgroup_maingroup(parameters%subgroups_ids(l)) == i) then + isg = parameters%subgroups_ids(l) + cycle + end if + end do + + do l=1,size(parameters%subgroups_ids) + if (parameters%get_subgroup_maingroup(parameters%subgroups_ids(l)) == j) then + jsg = parameters%subgroups_ids(l) + cycle + end if + end do + + Aij = parameters%get_subgroups_aij(isg, jsg) + Aji = parameters%get_subgroups_aij(jsg, isg) + + Bij = parameters%get_subgroups_bij(isg, jsg) + Bji = parameters%get_subgroups_bij(jsg, isg) + + Cij = parameters%get_subgroups_cij(isg, jsg) + Cji = parameters%get_subgroups_cij(jsg, isg) + + call check(error, abs(Aij - ddbst_aij(k, 1)) < 1e-10_pr) + call check(error, abs(Aji - ddbst_aij(k, 2)) < 1e-10_pr) + + call check(error, abs(Bij - ddbst_bij(k, 1)) < 1e-10_pr) + call check(error, abs(Bji - ddbst_bij(k, 2)) < 1e-10_pr) + + call check(error, abs(Cij - ddbst_cij(k, 1)) < 1e-10_pr) + call check(error, abs(Cji - ddbst_cij(k, 2)) < 1e-10_pr) + end do + end subroutine test_psrk_main_groups +end module test_psrk_parameters diff --git a/test/test_runner.f90 b/test/test_runner.f90 index db1dcd45f..4fb04b142 100644 --- a/test/test_runner.f90 +++ b/test/test_runner.f90 @@ -27,6 +27,7 @@ program tester use test_unifac, only: suite_unifac => collect_suite use test_psrk_ge, only: suite_psrk_ge => collect_suite use test_unifac_parameters, only: suite_unifac_parameters => collect_suite + use test_psrk_parameters, only: suite_psrk_parameters => collect_suite use test_tape_nrtl, only: suite_nrtl => collect_suite use test_uniquac, only: suite_uniquac => collect_suite @@ -65,6 +66,7 @@ program tester new_testsuite("UNIFAC", suite_unifac), & new_testsuite("PSRK", suite_psrk_ge), & new_testsuite("UNIFACParameters", suite_unifac_parameters), & + new_testsuite("PSRKParameters", suite_psrk_parameters), & new_testsuite("NRTL", suite_nrtl), & new_testsuite("UNIQUAC", suite_uniquac) & ] From 5c53d12e5527455663115cf5d293512ce947a884 Mon Sep 17 00:00:00 2001 From: salvador Date: Mon, 21 Oct 2024 22:10:37 -0300 Subject: [PATCH 04/40] keep working tomorrow --- .../residual_helmholtz/cubic_eos/test_psrk.py | 1 + .../ar_models/cubics/test_psrk.f90 | 222 +++++++++++++++++- 2 files changed, 222 insertions(+), 1 deletion(-) create mode 100644 python/tests/models/residual_helmholtz/cubic_eos/test_psrk.py diff --git a/python/tests/models/residual_helmholtz/cubic_eos/test_psrk.py b/python/tests/models/residual_helmholtz/cubic_eos/test_psrk.py new file mode 100644 index 000000000..479eac969 --- /dev/null +++ b/python/tests/models/residual_helmholtz/cubic_eos/test_psrk.py @@ -0,0 +1 @@ +from yaeos import psrk \ No newline at end of file diff --git a/test/test_implementations/ar_models/cubics/test_psrk.f90 b/test/test_implementations/ar_models/cubics/test_psrk.f90 index 93d7d94cc..b42c4629c 100644 --- a/test/test_implementations/ar_models/cubics/test_psrk.f90 +++ b/test/test_implementations/ar_models/cubics/test_psrk.f90 @@ -11,7 +11,11 @@ subroutine collect_suite(testsuite) testsuite = [ & new_unittest("Test PSRK Ar consistency mix", test_psrk_cons_mixture), & - new_unittest("Test PSRK Ar consistency pure", test_psrk_cons_pure) & + new_unittest("Test PSRK Ar consistency pure", test_psrk_cons_pure), & + new_unittest("Test PSRK paper 2005 1", test_psrk_paper2005_1), & + new_unittest("Test PSRK paper 2005 2", test_psrk_paper2005_2), & + new_unittest("Test PSRK paper 2005 3", test_psrk_paper2005_3), & + new_unittest("Test PSRK paper 2005 4", test_psrk_paper2005_4) & ] end subroutine collect_suite @@ -158,4 +162,220 @@ subroutine test_psrk_cons_pure(error) call check(error, abs(eq37) <= 1e-13) end subroutine test_psrk_cons_pure + subroutine test_psrk_paper2005_1(error) + use yaeos, only: pr, PSRK, ArModel, Groups, saturation_pressure + use yaeos, only: EquilibriumState + type(error_type), allocatable, intent(out) :: error + real(pr) :: x1_exp(14), y1_exp(16), pbub_exp(14), pdew_exp(16), t + integer :: i, j + type(EquilibriumState) :: bubble, dew + + class(ArModel), allocatable :: model + real(pr) :: tc(2), pc(2), w(2), C(2,3) + type(Groups) :: molecules(2) + + tc = [456.8_pr, 647.3_pr] + pc = [53.9049_pr, 220.48321_pr] + w = [0.407_pr, 0.344_pr] + C(1,:) = [1.62716_pr, -5.00731_pr, 10.34189_pr] + C(2,:) = [1.0783_pr, -0.58321_pr, 0.54619_pr] + + x1_exp = [0.00754_pr, 0.04774_pr, 0.07538_pr, 0.12312_pr, & + 0.17839_pr, 0.26382_pr, 0.33668_pr, 0.4196_pr, 0.5402_pr, & + 0.63317_pr, 0.74623_pr, 0.86935_pr, 0.94221_pr, 0.97739_pr] + + pbub_exp = [0.06384039999999999_pr, 0.2374065_pr, & + 0.32718200000000003_pr, 0.4349127_pr, 0.5067332_pr, & + 0.5645884999999999_pr, 0.5865337_pr, 0.5985037_pr, 0.6104738_pr, & + 0.6244389_pr, 0.6503741_pr, 0.6962594_pr, 0.7341646000000001_pr, & + 0.7541146999999999_pr] + + y1_exp = [0.01759_pr, 0.19849_pr, 0.3593_pr, 0.5_pr, & + 0.57789_pr, 0.68844_pr, 0.76382_pr, 0.83417_pr, 0.88442_pr, & + 0.91457_pr, 0.94472_pr, 0.95729_pr, 0.96482_pr, 0.97236_pr, & + 0.9799_pr, 0.98995_pr] + + pdew_exp = [0.021945100000000002_pr, 0.035910199999999996_pr, & + 0.0478803_pr, 0.0578554_pr, 0.06384039999999999_pr, & + 0.07182039999999999_pr, 0.09177060000000001_pr, & + 0.12169579999999999_pr, 0.1715711_pr, 0.2354115_pr, & + 0.3431421_pr, 0.42892769999999997_pr, 0.5087282_pr, & + 0.6024938_pr, 0.6663342_pr, 0.7261845_pr] + + molecules(1)%groups_ids = [145] + molecules(1)%number_of_groups = [1] + molecules(2)%groups_ids = [16] + molecules(2)%number_of_groups = [1] + + model = PSRK(tc, pc, w, molecules, c1=C(:, 1), c2=C(:, 2), c3=C(:, 3)) + t = 291.15_pr + + do i=1,14 + bubble = saturation_pressure(model, [x1_exp(i), 1-x1_exp(i)], t, kind="bubble", p0=pbub_exp(i)) + call check(error, abs(bubble%p-pbub_exp(i)) < 4e-3) + end do + + do j = 1,16 + dew = saturation_pressure(model, [y1_exp(j), 1-y1_exp(j)], t, kind="dew", p0=pdew_exp(j)) + call check(error, abs(dew%p-pdew_exp(j)) < 2e-2) + end do + end subroutine test_psrk_paper2005_1 + + subroutine test_psrk_paper2005_2(error) + use yaeos, only: pr, PSRK, ArModel, Groups, saturation_pressure + use yaeos, only: EquilibriumState + type(error_type), allocatable, intent(out) :: error + real(pr) :: x1_exp(12), y1_exp(16), pbub_exp(12), pdew_exp(16), t + integer :: i, j + type(EquilibriumState) :: bubble, dew + + class(ArModel), allocatable :: model + real(pr) :: tc(2), pc(2), w(2), C(2,3) + type(Groups) :: molecules(2) + + tc = [324.6_pr, 417.0_pr] + pc = [83.0865_pr, 77.007_pr] + w = [0.12_pr, 0.073_pr] + C(1,:) = [0.66635_pr, 0.35497_pr, -1.3766_pr] + C(2,:) = [0.55192_pr, 0.01934_pr, 0.59414_pr] + + x1_exp = [0.01942_pr, 0.07864_pr, 0.14284_pr, 0.20951_pr, 0.28609_pr, & + 0.36516_pr, 0.44671_pr, 0.53322_pr, 0.62219_pr, 0.73341_pr, 0.84957_pr, 0.96077_pr] + + pbub_exp = [4.6423_pr, 6.8492_pr, 8.8347_pr, 10.746199999999998_pr, & + 12.5833_pr, 14.2728_pr, 15.814699999999998_pr, 17.43_pr, 19.045_pr, & + 21.027_pr, 23.229799999999997_pr, 25.506600000000002_pr] + + y1_exp = [0.06402_pr, 0.1432_pr, 0.23227_pr, 0.30896_pr, 0.39059_pr, & + 0.45983_pr, 0.54885_pr, 0.6131_pr, 0.67487_pr, 0.72425_pr, 0.77361_pr, & + 0.818_pr, 0.86483_pr, 0.91409_pr, 0.9535_pr, 0.9806_pr] + + pdew_exp = [4.049300000000001_pr, 4.412_pr, 4.9215_pr, 5.4318_pr, & + 6.089099999999999_pr, 6.8210999999999995_pr, 7.9939_pr, 9.1686_pr, & + 10.564499999999999_pr, 12.0351_pr, 13.874200000000002_pr, & + 15.861099999999999_pr, 18.2901_pr, 21.2348_pr, 23.5907_pr, 25.136599999999998_pr] + + molecules(1)%groups_ids = [130] + molecules(1)%number_of_groups = [1] + molecules(2)%groups_ids = [143] + molecules(2)%number_of_groups = [1] + + model = PSRK(tc, pc, w, molecules, c1=C(:, 1), c2=C(:, 2), c3=C(:, 3)) + t = 273.15_pr + + do i=1,12 + bubble = saturation_pressure(model, [x1_exp(i), 1-x1_exp(i)], t, kind="bubble", p0=pbub_exp(i)) + call check(error, rel_error(bubble%p,pbub_exp(i)) < 1.1e-2) + end do + + do j = 1,16 + dew = saturation_pressure(model, [y1_exp(j), 1-y1_exp(j)], t, kind="dew", p0=pdew_exp(j)) + call check(error, rel_error(dew%p,pdew_exp(j)) < 7e-3) + end do + end subroutine test_psrk_paper2005_2 + + subroutine test_psrk_paper2005_3(error) + use yaeos, only: pr, PSRK, ArModel, Groups, saturation_pressure + use yaeos, only: EquilibriumState + type(error_type), allocatable, intent(out) :: error + real(pr) :: x1_exp(13), y1_exp(13), pbub_exp(13), pdew_exp(13), t + integer :: i, j + type(EquilibriumState) :: bubble, dew + + class(ArModel), allocatable :: model + real(pr) :: tc(2), pc(2), w(2), C(2,3) + type(Groups) :: molecules(2) + + tc = [324.6_pr, 417.0_pr] + pc = [83.0865_pr, 77.007_pr] + w = [0.12_pr, 0.073_pr] + C(1,:) = [0.66635_pr, 0.35497_pr, -1.3766_pr] + C(2,:) = [0.55192_pr, 0.01934_pr, 0.59414_pr] + + x1_exp = [0.02719_pr, 0.10883_pr, 0.17316_pr, 0.24987_pr, 0.31174_pr, & + 0.36618_pr, 0.42805_pr, 0.50477_pr, 0.58149_pr, 0.67553_pr, 0.81659_pr, & + 0.89826_pr, 0.96508_pr] + + pbub_exp = [0.514_pr, 0.9501999999999999_pr, 1.2403_pr, 1.5295_pr, & + 1.7460999999999998_pr, 1.8895_pr, 2.0322999999999998_pr, 2.1741_pr, & + 2.3896_pr, 2.62_pr, 2.8882000000000003_pr, 3.1033_pr, 3.2458_pr] + + y1_exp = [0.02968_pr, 0.10641_pr, 0.18561_pr, 0.26977_pr, 0.35888_pr, & + 0.41581_pr, 0.52719_pr, 0.61876_pr, 0.69548_pr, 0.79446_pr, 0.86621_pr, & + 0.92062_pr, 0.97006_pr] + + pdew_exp = [0.2927_pr, 0.287_pr, 0.3549_pr, 0.3487_pr, 0.4158_pr, & + 0.4116_pr, 0.4771_pr, 0.6178_pr, 0.7595000000000001_pr, 1.1208_pr, & + 1.5578_pr, 2.1434_pr, 2.8769_pr] + + molecules(1)%groups_ids = [130] + molecules(1)%number_of_groups = [1] + molecules(2)%groups_ids = [143] + molecules(2)%number_of_groups = [1] + + model = PSRK(tc, pc, w, molecules, c1=C(:, 1), c2=C(:, 2), c3=C(:, 3)) + t = 213.15_pr + + do i=1,13 + bubble = saturation_pressure(model, [x1_exp(i), 1-x1_exp(i)], t, kind="bubble", p0=pbub_exp(i)) + call check(error, rel_error(bubble%p,pbub_exp(i)) < 1e-1) + end do + + do j = 1,13 + dew = saturation_pressure(model, [y1_exp(j), 1-y1_exp(j)], t, kind="dew", p0=pdew_exp(j)) + call check(error, rel_error(dew%p,pdew_exp(j)) < 0.2) + end do + end subroutine test_psrk_paper2005_3 + + subroutine test_psrk_paper2005_4(error) + use yaeos, only: pr, PSRK, ArModel, Groups, saturation_pressure + use yaeos, only: EquilibriumState + type(error_type), allocatable, intent(out) :: error + real(pr) :: x1_exp(10), y1_exp(12), pbub_exp(10), pdew_exp(12), t + integer :: i, j + type(EquilibriumState) :: bubble, dew + + class(ArModel), allocatable :: model + real(pr) :: tc(2), pc(2), w(2), C(2,3) + type(Groups) :: molecules(2) + + tc = [440.0_pr, 523.2_pr] + pc = [91.1925_pr, 38.300850000000004_pr] + w = [0.318_pr, 0.363_pr] + C(1,:) = [0.96273_pr, 0.10351_pr, -1.6102_pr] + C(2,:) = [1.0408_pr, -0.17686_pr, 0.49506_pr] + + x1_exp = [0.03202_pr, 0.12562_pr, 0.24877_pr, 0.34975_pr, 0.46798_pr, & + 0.58867_pr, 0.68473_pr, 0.80049_pr, 0.94089_pr, 0.9803_pr] + + pbub_exp = [0.014705900000000001_pr, 0.0392157_pr, 0.0784314_pr, & + 0.11764709999999999_pr, 0.17279409999999998_pr, 0.2389706_pr, & + 0.2965686_pr, 0.372549_pr, 0.4607843_pr, 0.48284309999999997_pr] + + y1_exp = [0.03695_pr, 0.13547_pr, 0.26601_pr, 0.45074_pr, 0.61576_pr, & + 0.74877_pr, 0.85714_pr, 0.94335_pr, 0.97291_pr, 0.98768_pr, 0.99261_pr, 1.0_pr] + + pdew_exp = [0.0073529_pr, 0.0085784_pr, 0.009803899999999999_pr, & + 0.013480399999999998_pr, 0.019607799999999998_pr, 0.0281863_pr, & + 0.0465686_pr, 0.09313729999999999_pr, 0.1446078_pr, & + 0.21446079999999998_pr, 0.2830882_pr, 0.47058819999999996_pr] + + molecules(1)%groups_ids = [149] + molecules(1)%number_of_groups = [1] + molecules(2)%groups_ids = [1, 2, 21] + molecules(2)%number_of_groups = [1, 1, 1] + + model = PSRK(tc, pc, w, molecules, c1=C(:, 1), c2=C(:, 2), c3=C(:, 3)) + t = 251.95_pr + + do i=1,10 + bubble = saturation_pressure(model, [x1_exp(i), 1-x1_exp(i)], t, kind="bubble", p0=pbub_exp(i)) + call check(error, rel_error(bubble%p,pbub_exp(i)) < 2e-2) + end do + + do j = 1,12 + dew = saturation_pressure(model, [y1_exp(j), 1-y1_exp(j)], t, kind="dew", p0=pdew_exp(j)) + call check(error, rel_error(dew%p,pdew_exp(j)) < 1e-1) + end do + end subroutine test_psrk_paper2005_4 end module test_psrk From 176654b8fbb3728a953cb7d2d13763a3e0f979e1 Mon Sep 17 00:00:00 2001 From: Salvador Date: Tue, 22 Oct 2024 12:11:32 -0300 Subject: [PATCH 05/40] more test PSRK agains original paper, add UNIFAC test to python, nbsphinx_execute --- python/docs/source/conf.py | 3 + .../tests/models/gibbs_excess/test_unifac.py | 17 + .../residual_helmholtz/cubic_eos/test_psrk.py | 392 +++++++++++++++++- .../mixing_rules/test_cubicmixrule.py | 10 + 4 files changed, 421 insertions(+), 1 deletion(-) create mode 100644 python/tests/models/gibbs_excess/test_unifac.py create mode 100644 python/tests/models/residual_helmholtz/mixing_rules/test_cubicmixrule.py diff --git a/python/docs/source/conf.py b/python/docs/source/conf.py index ed6d2d67d..4b4a3e3b1 100644 --- a/python/docs/source/conf.py +++ b/python/docs/source/conf.py @@ -50,6 +50,9 @@ # ============================================================================= # EXTRA CONF # ============================================================================= +# nbsphinx +nbsphinx_execute = "always" + autodoc_member_order = "bysource" bibtex_bibfiles = ["refs.bib"] diff --git a/python/tests/models/gibbs_excess/test_unifac.py b/python/tests/models/gibbs_excess/test_unifac.py new file mode 100644 index 000000000..0b17db593 --- /dev/null +++ b/python/tests/models/gibbs_excess/test_unifac.py @@ -0,0 +1,17 @@ +import numpy as np + +from yaeos import UNIFACVLE + + +def test_against_caleb_thermo(): + t = 150 + n = [20.0, 70.0, 10.0] + + groups = [{1: 2}, {1: 1, 2: 1, 14: 1}, {28: 1}] + + model = UNIFACVLE(groups) + + ln_gammas_expected = [0.84433781, -0.19063836, -2.93925506] + ln_gammas = model.ln_gamma(n, t) + + assert np.allclose(ln_gammas, ln_gammas_expected, atol=1e-8) diff --git a/python/tests/models/residual_helmholtz/cubic_eos/test_psrk.py b/python/tests/models/residual_helmholtz/cubic_eos/test_psrk.py index 479eac969..1c3d7a11a 100644 --- a/python/tests/models/residual_helmholtz/cubic_eos/test_psrk.py +++ b/python/tests/models/residual_helmholtz/cubic_eos/test_psrk.py @@ -1 +1,391 @@ -from yaeos import psrk \ No newline at end of file +import numpy as np + +from yaeos import PSRK + + +def test_psrk_paper2005_1(): + tc = [456.8, 647.3] + pc = [53.9049, 220.48321] + w = [0.407, 0.344] + + c1 = [1.62716, 1.0783] + c2 = [-5.00731, -0.58321] + c3 = [10.34189, 0.54619] + + grps = [{145: 1}, {16: 1}] + + model = PSRK(tc, pc, w, grps, c1, c2, c3) + + x1_exp = [ + 0.00754, + 0.04774, + 0.07538, + 0.12312, + 0.17839, + 0.26382, + 0.33668, + 0.4196, + 0.5402, + 0.63317, + 0.74623, + 0.86935, + 0.94221, + 0.97739, + ] + + pbub_exp = [ + 0.06384039999999999, + 0.2374065, + 0.32718200000000003, + 0.4349127, + 0.5067332, + 0.5645884999999999, + 0.5865337, + 0.5985037, + 0.6104738, + 0.6244389, + 0.6503741, + 0.6962594, + 0.7341646000000001, + 0.7541146999999999, + ] + + y1_exp = [ + 0.01759, + 0.19849, + 0.3593, + 0.5, + 0.57789, + 0.68844, + 0.76382, + 0.83417, + 0.88442, + 0.91457, + 0.94472, + 0.95729, + 0.96482, + 0.97236, + 0.9799, + 0.98995, + ] + + pdew_exp = [ + 0.021945100000000002, + 0.035910199999999996, + 0.0478803, + 0.0578554, + 0.06384039999999999, + 0.07182039999999999, + 0.09177060000000001, + 0.12169579999999999, + 0.1715711, + 0.2354115, + 0.3431421, + 0.42892769999999997, + 0.5087282, + 0.6024938, + 0.6663342, + 0.7261845, + ] + + t = 291.15 + + pbub = [] + for i, x in enumerate(x1_exp): + sol = model.saturation_pressure([x, 1 - x], t, p0=pbub_exp[i]) + pbub.append(sol["P"]) + + assert np.allclose(pbub, pbub_exp, atol=4e-3) + + pdew = [] + for i, y in enumerate(y1_exp): + sol = model.saturation_pressure( + [y, 1 - y], t, kind="dew", p0=pdew_exp[i] + ) + pdew.append(sol["P"]) + + assert np.allclose(pdew, pdew_exp, atol=2e-2) + + +def test_psrk_paper2005_2(): + tc = [324.6, 417.0] + pc = [83.0865, 77.007] + w = [0.12, 0.073] + + c1 = [0.66635, 0.55192] + c2 = [0.35497, 0.01934] + c3 = [-1.3766, 0.59414] + + grps = [{130: 1}, {143: 1}] + + x1_exp = [ + 0.01942, + 0.07864, + 0.14284, + 0.20951, + 0.28609, + 0.36516, + 0.44671, + 0.53322, + 0.62219, + 0.73341, + 0.84957, + 0.96077, + ] + + pbub_exp = [ + 4.6423, + 6.8492, + 8.8347, + 10.746199999999998, + 12.5833, + 14.2728, + 15.814699999999998, + 17.43, + 19.045, + 21.027, + 23.229799999999997, + 25.506600000000002, + ] + + y1_exp = [ + 0.06402, + 0.1432, + 0.23227, + 0.30896, + 0.39059, + 0.45983, + 0.54885, + 0.6131, + 0.67487, + 0.72425, + 0.77361, + 0.818, + 0.86483, + 0.91409, + 0.9535, + 0.9806, + ] + + pdew_exp = [ + 4.049300000000001, + 4.412, + 4.9215, + 5.4318, + 6.089099999999999, + 6.8210999999999995, + 7.9939, + 9.1686, + 10.564499999999999, + 12.0351, + 13.874200000000002, + 15.861099999999999, + 18.2901, + 21.2348, + 23.5907, + 25.136599999999998, + ] + + model = PSRK(tc, pc, w, grps, c1, c2, c3) + + t = 273.15 + + pbub = [] + for i, x in enumerate(x1_exp): + sol = model.saturation_pressure([x, 1 - x], t, p0=pbub_exp[i]) + pbub.append(sol["P"]) + + assert np.allclose(pbub, pbub_exp, rtol=1.1e-2) + + pdew = [] + for i, y in enumerate(y1_exp): + sol = model.saturation_pressure( + [y, 1 - y], t, kind="dew", p0=pdew_exp[i] + ) + pdew.append(sol["P"]) + + assert np.allclose(pdew, pdew_exp, rtol=7e-3) + + +def test_psrk_paper2005_3(): + tc = [324.6, 417.0] + pc = [83.0865, 77.007] + w = [0.12, 0.073] + + c1 = [0.66635, 0.55192] + c2 = [0.35497, 0.01934] + c3 = [-1.3766, 0.59414] + + grps = [{130: 1}, {143: 1}] + + x1_exp = [ + 0.02719, + 0.10883, + 0.17316, + 0.24987, + 0.31174, + 0.36618, + 0.42805, + 0.50477, + 0.58149, + 0.67553, + 0.81659, + 0.89826, + 0.96508, + ] + + pbub_exp = [ + 0.514, + 0.9501999999999999, + 1.2403, + 1.5295, + 1.7460999999999998, + 1.8895, + 2.0322999999999998, + 2.1741, + 2.3896, + 2.62, + 2.8882000000000003, + 3.1033, + 3.2458, + ] + + y1_exp = [ + 0.02968, + 0.10641, + 0.18561, + 0.26977, + 0.35888, + 0.41581, + 0.52719, + 0.61876, + 0.69548, + 0.79446, + 0.86621, + 0.92062, + 0.97006, + ] + + pdew_exp = [ + 0.2927, + 0.287, + 0.3549, + 0.3487, + 0.4158, + 0.4116, + 0.4771, + 0.6178, + 0.7595000000000001, + 1.1208, + 1.5578, + 2.1434, + 2.8769, + ] + + model = PSRK(tc, pc, w, grps, c1, c2, c3) + + t = 213.15 + + pbub = [] + for i, x in enumerate(x1_exp): + sol = model.saturation_pressure([x, 1 - x], t, p0=pbub_exp[i]) + pbub.append(sol["P"]) + + assert np.allclose(pbub, pbub_exp, rtol=1e-1) + + pdew = [] + for i, y in enumerate(y1_exp): + sol = model.saturation_pressure( + [y, 1 - y], t, kind="dew", p0=pdew_exp[i] + ) + pdew.append(sol["P"]) + + assert np.allclose(pdew, pdew_exp, rtol=0.2) + + +def test_psrk_paper2005_4(): + tc = [440.0, 523.2] + pc = [91.1925, 38.300850000000004] + w = [0.318, 0.363] + + c1 = [0.96273, 1.0408] + c2 = [0.10351, -0.17686] + c3 = [-1.6102, 0.49506] + + grps = [{149: 1}, {1: 1, 2: 1, 21: 1}] + + x1_exp = [ + 0.03202, + 0.12562, + 0.24877, + 0.34975, + 0.46798, + 0.58867, + 0.68473, + 0.80049, + 0.94089, + 0.9803, + ] + + pbub_exp = [ + 0.014705900000000001, + 0.0392157, + 0.0784314, + 0.11764709999999999, + 0.17279409999999998, + 0.2389706, + 0.2965686, + 0.372549, + 0.4607843, + 0.48284309999999997, + ] + + y1_exp = [ + 0.03695, + 0.13547, + 0.26601, + 0.45074, + 0.61576, + 0.74877, + 0.85714, + 0.94335, + 0.97291, + 0.98768, + 0.99261, + 1.0, + ] + + pdew_exp = [ + 0.0073529, + 0.0085784, + 0.009803899999999999, + 0.013480399999999998, + 0.019607799999999998, + 0.0281863, + 0.0465686, + 0.09313729999999999, + 0.1446078, + 0.21446079999999998, + 0.2830882, + 0.47058819999999996, + ] + + model = PSRK(tc, pc, w, grps, c1, c2, c3) + + t = 251.95 + + pbub = [] + for i, x in enumerate(x1_exp): + sol = model.saturation_pressure([x, 1 - x], t, p0=pbub_exp[i]) + pbub.append(sol["P"]) + + assert np.allclose(pbub, pbub_exp, rtol=2e-2) + + pdew = [] + for i, y in enumerate(y1_exp): + sol = model.saturation_pressure( + [y, 1 - y], t, kind="dew", p0=pdew_exp[i] + ) + pdew.append(sol["P"]) + + assert np.allclose(pdew, pdew_exp, rtol=1) diff --git a/python/tests/models/residual_helmholtz/mixing_rules/test_cubicmixrule.py b/python/tests/models/residual_helmholtz/mixing_rules/test_cubicmixrule.py new file mode 100644 index 000000000..06e37f695 --- /dev/null +++ b/python/tests/models/residual_helmholtz/mixing_rules/test_cubicmixrule.py @@ -0,0 +1,10 @@ +import pytest + +from yaeos import QMR + + +def test_making_it_explode(): + mr = QMR([[0.0, 0.1], [0.1, 0.0]], [[0.0, 0.1], [0.1, 0.0]]) + + with pytest.raises(NotImplementedError): + super(QMR, mr).set_mixrule(0) From 6abc0bff87b6db79ead4e54a2d4d75acf3934d50 Mon Sep 17 00:00:00 2001 From: Salvador Date: Tue, 22 Oct 2024 13:08:31 -0300 Subject: [PATCH 06/40] CI --- .github/workflows/CI.yml | 2 +- .github/workflows/docs.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index a7058f397..3656a250c 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -78,7 +78,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - python-version: ["3.12"] + python-version: ["3.10", "3.11", "3.12"] toolchain: - {compiler: gcc, version: 13} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 5abf63a4b..35b6d77f1 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -20,6 +20,7 @@ jobs: sudo apt install -y gfortran-${GCC_V} python3-dev graphviz pandoc sudo pip install ford markdown pip install -r python/docs/requirements.txt + pip install python/ - name: Build Developer Documentation run: | From ab7440c5e0aacda0b68ab7a705d4abb984df4608 Mon Sep 17 00:00:00 2001 From: Salvador Date: Tue, 22 Oct 2024 13:22:49 -0300 Subject: [PATCH 07/40] CI --- .github/workflows/CI.yml | 2 +- .github/workflows/docs.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 3656a250c..a7058f397 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -78,7 +78,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - python-version: ["3.10", "3.11", "3.12"] + python-version: ["3.12"] toolchain: - {compiler: gcc, version: 13} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 35b6d77f1..ecd98dc75 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -20,6 +20,7 @@ jobs: sudo apt install -y gfortran-${GCC_V} python3-dev graphviz pandoc sudo pip install ford markdown pip install -r python/docs/requirements.txt + pip install -r python/requirements-build.txt pip install python/ - name: Build Developer Documentation From a15b859c0159b82df2581078bda19d9b2cea568c Mon Sep 17 00:00:00 2001 From: Salvador Date: Tue, 22 Oct 2024 14:12:38 -0300 Subject: [PATCH 08/40] consistency PSRK with Aij Bij Cij used --- test/test_implementations/ge_models/test_psrk.f90 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/test_implementations/ge_models/test_psrk.f90 b/test/test_implementations/ge_models/test_psrk.f90 index 6ad6574ac..3830f4159 100644 --- a/test/test_implementations/ge_models/test_psrk.f90 +++ b/test/test_implementations/ge_models/test_psrk.f90 @@ -62,9 +62,9 @@ subroutine test_psrk_cons_mix(error) molecules(3)%groups_ids = [9, 11] molecules(3)%number_of_groups = [5, 1] - ! ! Cyclohexane [CH2] - molecules(4)%groups_ids = [2] - molecules(4)%number_of_groups = [6] + ! ! Carbon dioxide [CO2] + molecules(4)%groups_ids = [117] + molecules(4)%number_of_groups = [1] parameters = PSRKParameters() @@ -227,15 +227,15 @@ subroutine test_against_caleb_thermo(error) ! ------------------------------------------------------------------------ ! Ge - print *, Ge/n_t + !print *, Ge/n_t call check(error, abs(Ge / n_t - (-3.223992676822129_pr)) <= 1e-5) ! Gen - print *, Gen + !print *, Gen call check(error, allclose(Gen, [10.53032277_pr, -2.37758326_pr, -36.65748951_pr], 1e-5_pr)) ! ln_gammas - print *, Gen/R/T, ln_gammas + !print *, Gen/R/T, ln_gammas call check(error, allclose(Gen / R / T, [0.84433781_pr, -0.19063836_pr, -2.93925506_pr], 1e-5_pr)) call check(error, allclose(ln_gammas, [0.84433781_pr, -0.19063836_pr, -2.93925506_pr], 1e-5_pr)) From 663c5a3f86056580d07ab0c981d051186d4fdeb1 Mon Sep 17 00:00:00 2001 From: "Federico E. Benelli" Date: Tue, 22 Oct 2024 14:54:40 -0300 Subject: [PATCH 09/40] Full Newton sat solvers --- src/equilibria/saturations_points.f90 | 169 ++++---------- src/models/residual_helmholtz/ar_models.f90 | 123 +++++++++- src/models/solvers/saturation_point.f90 | 234 ++++++++++++++++++-- src/models/solvers/volume.f90 | 5 +- test/test_fugacity_vt.f90 | 63 ++++++ test/test_saturation_solver.f90 | 101 +++++++++ 6 files changed, 540 insertions(+), 155 deletions(-) create mode 100644 test/test_fugacity_vt.f90 create mode 100644 test/test_saturation_solver.f90 diff --git a/src/equilibria/saturations_points.f90 b/src/equilibria/saturations_points.f90 index 94cf42d75..959f1484e 100644 --- a/src/equilibria/saturations_points.f90 +++ b/src/equilibria/saturations_points.f90 @@ -31,6 +31,7 @@ type(EquilibriumState) function saturation_pressure(model, n, t, kind, p0, y0, m !! - Dew point: `kind="dew"` !! - Liquid-Liquid point: `kind="liquid-liquid"` use stdlib_optval, only: optval + use yaeos__m_s_sp, only: solve_TP class(ArModel), target, intent(in) :: model real(pr), intent(in) :: n(:) !! Composition vector [moles / molar fraction] real(pr), intent(in) :: t !! Temperature [K] @@ -39,7 +40,7 @@ type(EquilibriumState) function saturation_pressure(model, n, t, kind, p0, y0, m real(pr), optional, intent(in) :: y0(:) !! Initial composition integer, optional, intent(in) :: max_iters !! Maximum number of iterations - real(pr) :: p, vy, vz + real(pr) :: P real(pr) :: k(size(n)), y(size(n)), z(size(n)), lnk(size(n)) real(pr) :: lnfug_y(size(n)), dlnphi_dp_y(size(n)) @@ -100,7 +101,6 @@ type(EquilibriumState) function saturation_pressure(model, n, t, kind, p0, y0, m if (all(k < 1e-9_pr) .or. all(abs(k-1) < tol)) exit - f = sum(z*k) - 1 step = f/sum(z * k * (dlnphi_dp_z - dlnphi_dp_y)) @@ -114,29 +114,23 @@ type(EquilibriumState) function saturation_pressure(model, n, t, kind, p0, y0, m end do ! ======================================================================== if (its > iters_first_step) then - fsolve: block - use yaeos__math_continuation, only: full_newton - real(pr) :: X(size(n)+2) - real(pr) :: S, dS, dXdS(size(n)+2) - real(pr) :: F(size(n)+2), dF(size(n)+2, size(n)+2), dFdS(size(n)+2) - integer :: ns - - ns = size(n)+1 - K = k_wilson(model, T, P) - if (kind == "dew") K =1/K - X = log([K, T, P]) - S = X(ns) - - hidden_kind = kind - hidden_model => model - hidden_z = z - - its = 0 - call full_newton(foo, its, X, ns, S, dS, dXdS, 1, max_iterations, F, dF, dFdS, tol=1.e-5_pr) - K = exp(X(:size(n))) - P = exp(X(size(n)+2)) - y = K*z - end block fsolve + block + real(pr) :: X(size(n)+2), S + integer :: ns, nc + nc = size(n) + X(:nc) = log(y/z) + X(nc+1) = log(T) + X(nc+2) = log(P) + ns = nc+1 + S = X(ns) + + call solve_TP(model, kind, z, X, ns, S, tol, max_iterations, its) + + P = exp(X(nc+2)) + y = z * exp(X(:nc)) + call model%volume(n=n, P=P, T=T, V=Vz, root_type=main) + call model%volume(n=y, P=P, T=T, V=Vy, root_type=incipient) + end block end if select case(kind) @@ -166,7 +160,7 @@ type(EquilibriumState) function saturation_temperature(model, n, p, kind, t0, y0 !! - Dew point: `kind="dew"` !! - Liquid-Liquid point: `kind="liquid-liquid"` use stdlib_optval, only: optval - use yaeos__math_continuation, only: full_newton + use yaeos__m_s_sp, only: solve_TP class(ArModel), target, intent(in) :: model real(pr), intent(in) :: n(:) !! Composition vector [moles / molar fraction] real(pr), intent(in) :: p !! Pressure [bar] @@ -259,27 +253,23 @@ type(EquilibriumState) function saturation_temperature(model, n, p, kind, t0, y0 end do ! ======================================================================== if (its > iters_first_step) then - fsolve: block - real(pr) :: X(size(n)+2) - real(pr) :: S, dS, dXdS(size(n)+2) - real(pr) :: F(size(n)+2), dF(size(n)+2, size(n)+2), dFdS(size(n)+2) - integer :: ns - - ns = size(n)+2 - K = k_wilson(model, T, P) - if (kind == "dew") K =1/K - X = log([K, T, P]) - S = X(ns) - - hidden_kind = kind - hidden_model => model - hidden_z = z - - call full_newton(foo, its, X, ns, S, dS, dXdS, 1, max_iterations, F, dF, dFdS, tol=tol) - K = exp(X(:size(n))) - T = exp(X(size(n)+1)) - y = K*z - end block fsolve + block + real(pr) :: X(size(n)+2), S + integer :: ns, nc + nc = size(n) + X(:nc) = log(y/z) + X(nc+1) = log(T) + X(nc+2) = log(P) + ns = nc+2 + S = X(ns) + + call solve_TP(model, kind, z, X, ns, S, tol, max_iterations, its) + + T = exp(X(nc+1)) + y = z * exp(X(:nc)) + call model%volume(n=n, P=P, T=T, V=Vz, root_type=main) + call model%volume(n=y, P=P, T=T, V=Vy, root_type=incipient) + end block end if select case(kind) @@ -296,91 +286,6 @@ type(EquilibriumState) function saturation_temperature(model, n, p, kind, t0, y0 iters=its, y=y, x=z, vx=vz, vy=vy, t=t, p=p, beta=0._pr& ) end select - - end function saturation_temperature - subroutine foo(X, ns, S, F, dF, dFdS) - !! Function that needs to be solved at each envelope point - real(pr), intent(in) :: X(:) - integer, intent(in) :: ns - real(pr), intent(in) :: S - - real(pr), intent(out) :: F(:) - real(pr), intent(out) :: dF(:, :) - real(pr), intent(out) :: dFdS(:) - - character(len=14) :: kind_z, kind_y - - real(pr) :: y(size(X)-2) - real(pr) :: lnPhi_z(size(X)-2), lnPhi_y(size(X)-2) - real(pr) :: dlnphi_dt_z(size(X)-2), dlnphi_dt_y(size(X)-2) - real(pr) :: dlnphi_dp_z(size(X)-2), dlnphi_dp_y(size(X)-2) - real(pr) :: dlnphi_dn_z(size(X)-2, size(X)-2), dlnphi_dn_y(size(X)-2, size(X)-2) - - real(pr) :: T, P, K(size(X)-2) - - real(pr) :: z(size(X)-2) - - integer :: i, j, nc - - nc = size(X)-2 - - F = 0 - dF = 0 - - K = exp(X(:nc)) - T = exp(X(nc+1)) - P = exp(X(nc+2)) - - z = hidden_z - y = K*z - - select case(hidden_kind) - case ("bubble") - kind_z = "liquid" - kind_y = "vapor" - case ("dew") - kind_z = "vapor" - kind_y = "liquid" - case ("liquid-liquid") - kind_z = "liquid" - kind_y = "liquid" - case default - kind_z = "stable" - kind_y = "stable" - end select - - call hidden_model%lnphi_pt(& - z, P, T, V=Vz, root_type=kind_z, & - lnPhi=lnphi_z, dlnPhidt=dlnphi_dt_z, & - dlnPhidp=dlnphi_dp_z, dlnphidn=dlnphi_dn_z & - ) - call hidden_model%lnphi_pt(& - y, P, T, V=Vy, root_type=kind_y, & - lnPhi=lnphi_y, dlnPhidt=dlnphi_dt_y, & - dlnPhidp=dlnphi_dp_y, dlnphidn=dlnphi_dn_y & - ) - - F(:nc) = X(:nc) + lnPhi_y - lnPhi_z - F(nc + 1) = sum(y - z) - F(nc + 2) = X(ns) - S - - ! Jacobian Matrix - do j=1,nc - df(:nc, j) = dlnphi_dn_y(:, j) * y(j) - df(j, j) = dF(j, j) + 1 - end do - - df(:nc, nc + 1) = T * (dlnphi_dt_y - dlnphi_dt_z) - df(:nc, nc + 2) = P * (dlnphi_dp_y - dlnphi_dp_z) - - df(nc + 1, :nc) = y - - df(nc + 2, :) = 0 - df(nc + 2, ns) = 1 - - dFdS = 0 - dFdS(nc+2) = -1 - end subroutine foo end module yaeos__equilibria_saturation_points diff --git a/src/models/residual_helmholtz/ar_models.f90 b/src/models/residual_helmholtz/ar_models.f90 index 3e69e3a7a..b0db88214 100644 --- a/src/models/residual_helmholtz/ar_models.f90 +++ b/src/models/residual_helmholtz/ar_models.f90 @@ -49,8 +49,9 @@ module yaeos__models_ar contains procedure(abs_residual_helmholtz), deferred :: residual_helmholtz procedure(abs_volume_initializer), deferred :: get_v0 - procedure :: lnphi_vt => fugacity_vt - procedure :: lnphi_pt => fugacity_pt + procedure :: lnphi_vt + procedure :: lnphi_pt + procedure :: lnfug_vt procedure :: pressure procedure :: volume procedure :: enthalpy_residual_vt @@ -249,7 +250,7 @@ subroutine pressure(eos, n, V, T, P, dPdV, dPdT, dPdn) if (present(dPdn)) dPdn(:) = R*T/V - ArVn(:) end subroutine pressure - subroutine fugacity_pt(eos, & + subroutine lnphi_pt(eos, & n, P, T, V, root_type, lnPhi, dlnPhidP, dlnPhidT, dlnPhidn, dPdV, dPdT, dPdn & ) !! Calculate logarithm of fugacity, given pressure and temperature. @@ -288,9 +289,9 @@ subroutine fugacity_pt(eos, & if(abs(P_in - P) > 1e-2) then write(error_unit, *) "WARN: possible bad root solving: ", P_in, P end if - end subroutine fugacity_pt + end subroutine lnphi_pt - subroutine fugacity_vt(eos, & + subroutine lnphi_vt(eos, & n, V, T, P, lnPhi, & dlnPhidP, dlnPhidT, dlnPhidn, & dPdV, dPdT, dPdn & @@ -379,7 +380,117 @@ subroutine fugacity_vt(eos, & if (present(dPdV)) dPdV = dPdV_in if (present(dPdT)) dPdT = dPdT_in if (present(dPdn)) dPdn = dPdn_in - end subroutine fugacity_vt + end subroutine lnphi_vt + + subroutine lnfug_vt(eos, & + n, V, T, P, lnf, & + dlnfdV, dlnfdT, dlnfdn, & + dPdV, dPdT, dPdn & + ) + use yaeos__math, only: derivative_dxk_dni + !! Calculate fugacity coefficent given volume and temperature. + class(ArModel) :: eos !! Model + real(pr), intent(in) :: n(:) !! Mixture mole numbers + real(pr), intent(in) :: V !! Volume [L] + real(pr), intent(in) :: T !! Temperature [K] + + real(pr), optional, intent(out) :: P !! Pressure [bar] + real(pr), optional, intent(out) :: lnf(size(n)) !! \(\ln(\f_i)\) vector + real(pr), optional, intent(out) :: dlnfdT(size(n)) !! \(ln(f_i)\) Temp derivative + real(pr), optional, intent(out) :: dlnfdV(size(n)) !! \(ln(f_i)\) Volume derivative + real(pr), optional, intent(out) :: dlnfdn(size(n), size(n)) !! \(ln(f_i)\) compositional derivative + real(pr), optional, intent(out) :: dPdV !! \(\frac{dP}{dV}\) + real(pr), optional, intent(out) :: dPdT !! \(\frac{dP}{dT}\) + real(pr), optional, intent(out) :: dPdn(:) !! \(\frac{dP}{dn_i}\) + + real(pr) :: Ar, ArTV, ArV, ArV2 + + real(pr) :: lnPhi(size(n)) !! \(\ln(\phi_i)\) vector + real(pr) :: dlnPhidT(size(n)) !! \(ln(phi_i)\) Temp derivative + real(pr) :: dlnPhidP(size(n)) !! \(ln(phi_i)\) Presssure derivative + real(pr) :: dlnPhidn(size(n), size(n)) !! \(ln(phi_i)\) compositional derivative + + real(pr) :: dxk_dni(size(n), size(n)) + + real(pr), dimension(size(n)) :: Arn, ArVn, ArTn + real(pr) :: Arn2(size(n), size(n)) + + real(pr) :: dPdV_in, dPdT_in, dPdn_in(size(n)) + real(pr) :: P_in + + real(pr) :: RT, Z + + real(pr) :: totn + integer :: nc, i, j + + totn = sum(n) + nc = size(n) + + RT = R*T + + if (present(lnf) .and. .not. (& + present(dlnfdn) & + .or. present(dlnfdV) & + .or. present(dlnfdT) & + )) then + call eos%residual_helmholtz(n, v, t, Arn=Arn, ArV=ArV) + + P_in = totn*RT/V - ArV + + where (n /= 0) + lnf = log(n/totn) + Arn/RT - log(V/(totn*RT)) + endwhere + + if (present(P)) P = P_in + + return + else if (present(dlnfdn)) then + call eos%residual_helmholtz(& + n, V, T, Ar=Ar, ArV=ArV, ArV2=ArV2, ArTV=ArTV, & + Arn=Arn, ArVn=ArVn, ArTn=ArTn, Arn2=Arn2 & + ) + else + call eos%residual_helmholtz(& + n, V, T, Ar=Ar, ArV=ArV, ArV2=ArV2, ArTV=ArTV, & + Arn=Arn, ArVn=ArVn, ArTn=ArTn & + ) + end if + + P_in = totn*RT/V - ArV + Z = P_in*V/(totn*RT) + if (present(P)) P = P_in + + dPdV_in = -ArV2 - RT*totn/V**2 + dPdT_in = -ArTV + totn*R/V + dPdn_in = RT/V - ArVn + + if (present(lnf)) then + where (n /= 0) + lnf = log(n/totn) + Arn/RT - log(V/(totn*RT)) + endwhere + end if + + if (present(dlnfdV)) then + dlnfdV = -dPdn_in/RT + end if + + if (present(dlnfdT)) then + dlnfdT = (ArTn - Arn/T)/RT + 1._pr/T + end if + + if (present(dlnfdn)) then + do i = 1, nc + do j=1,nc + dlnfdn(i, j) = Arn2(i, j)/RT + end do + dlnfdn(i, i) = dlnfdn(i, i) + 1/n(i) + end do + end if + + if (present(dPdV)) dPdV = dPdV_in + if (present(dPdT)) dPdT = dPdT_in + if (present(dPdn)) dPdn = dPdn_in + end subroutine lnfug_vt subroutine enthalpy_residual_vt(eos, n, V, T, Hr, HrT, HrV, Hrn) !! Calculate residual enthalpy given volume and temperature. diff --git a/src/models/solvers/saturation_point.f90 b/src/models/solvers/saturation_point.f90 index 2e0a0971d..120a185b6 100644 --- a/src/models/solvers/saturation_point.f90 +++ b/src/models/solvers/saturation_point.f90 @@ -6,36 +6,238 @@ module yaeos__m_s_sp contains - subroutine saturation_F(model, X, ns, S, F) + subroutine saturation_F(model, z, X, ns, S, F, dF) class(ArModel), intent(in) :: model real(pr), intent(in) :: X(:) integer, intent(in) :: ns real(pr), intent(in) :: S real(pr), intent(out) :: F(:) + real(pr), optional, intent(out) :: dF(:, :) ! Variables - real(pr) :: T, V_main, V_inc + real(pr) :: T, Vz, Vy real(pr) :: z(size(model)) + ! Main phase variables + real(pr) :: lnfug_z(size(model)), dlnfug_dn_z(size(model), size(model)) + real(pr) :: dlnfug_dT_z(size(model)), dlnfug_dV_z(size(model)) + real(pr) :: dlnfug_dP_z(size(model)) + real(pr) :: Pz, dPdTz, dPdVz, dPdn_z(size(z)) - ! Incipient phase variables + ! incipient phase variables real(pr) :: y(size(z)) - real(pr) :: lnphi_inc(size(model)) + real(pr) :: lnfug_y(size(model)), dlnfug_dn_y(size(model), size(model)) + real(pr) :: dlnfug_dT_y(size(model)), dlnfug_dV_y(size(model)) + real(pr) :: dlnfug_dP_y(size(model)) + real(pr) :: Py, dPdTy, dPdVy, dPdn_y(size(z)) - real(pr) :: lnphi_main(size(model)) - real(pr) :: P_main, P_inc - - integer :: nc + integer :: j, nc nc = size(z) - y = z * exp(lnK) - - call model%lnphi_vt(z, V_main, T, P_main, lnPhi=lnphi_main) - call model%lnphi_vt(y, V_inc, T, P_inc, lnPhi=lnphi_inc) + y = z * exp(X(:nc)) + Vz = exp(X(nc+1)) + Vy = exp(X(nc+2)) + T = X(nc+3) + + if (present(df)) then + call model%lnfug_vt(& + n=z, V=Vz, T=T, P=Pz, dPdT=dPdTz, dPdV=dPdVz, dPdn=dPdn_z, & + lnf=lnfug_z, & + dlnfdV=dlnfug_dV_z, dlnfdT=dlnfug_dT_z, dlnfdn=dlnfug_dn_z & + ) + + call model%lnfug_vt(& + n=y, V=Vy, T=T, P=Py, dPdT=dPdTy, dPdV=dPdVy, dPdn=dPdn_y, & + lnf=lnfug_y, & + dlnfdV=dlnfug_dV_y, dlnfdT=dlnfug_dT_y, dlnfdn=dlnfug_dn_y & + ) + else + call model%lnfug_vt(n=z, V=Vz, T=T, P=Pz, lnf=lnfug_z) + call model%lnfug_vt(n=y, V=Vy, T=T, P=Py, lnf=lnfug_y) + end if + + F = 0 - F(1:nc) = lnK - lnphi_main + lnphi_inc + F(:nc) = lnfug_y - lnfug_z F(nc + 1) = sum(y - z) - F(nc + 2) = P_main - P_inc - end subroutine -end module \ No newline at end of file + F(nc + 2) = Py - Pz + F(nc + 3) = X(ns) - S + + if (present(dF)) then + dF = 0 + + ! isofugacity + do j=1,nc + df(:nc, j) = y(j) * dlnfug_dn_y(:, j) + end do + + dF(:nc, nc+1) = -dlnfug_dV_z * Vz + dF(:nc, nc+2) = dlnfug_dV_y * Vy + dF(:nc, nc+3) = dlnfug_dT_y - dlnfug_dT_z + + ! mass balance + df(nc+1, :nc) = y + + ! pressure equality + df(nc+2, :nc) = y * dPdn_y + df(nc+2, nc+1) = -dPdVz * Vz + df(nc+2, nc+2) = dPdVy * Vy + df(nc+2, nc+3) = dPdTy - dPdTz + + df(nc+3, ns) = 1 + end if + end subroutine saturation_F + + subroutine saturation_TP(model, kind, z, X, ns, S, F, dF, dFdS) + class(ArModel), intent(in) :: model + character(len=*), intent(in) :: kind + real(pr), intent(in) :: z(size(model)) + + real(pr), intent(in) :: X(:) + integer, intent(in) :: ns + real(pr), intent(in) :: S + + real(pr), intent(out) :: F(:) + real(pr), intent(out) :: dF(:, :) + real(pr), intent(out) :: dFdS(:) + + character(len=14) :: kind_z, kind_y + + real(pr) :: y(size(X)-2) + real(pr) :: Vz, Vy + real(pr) :: lnPhi_z(size(X)-2), lnPhi_y(size(X)-2) + real(pr) :: dlnphi_dt_z(size(X)-2), dlnphi_dt_y(size(X)-2) + real(pr) :: dlnphi_dp_z(size(X)-2), dlnphi_dp_y(size(X)-2) + real(pr) :: dlnphi_dn_z(size(X)-2, size(X)-2), dlnphi_dn_y(size(X)-2, size(X)-2) + + real(pr) :: T, P, K(size(X)-2) + + integer :: i, j, nc + + nc = size(X)-2 + + F = 0 + dF = 0 + + K = exp(X(:nc)) + T = exp(X(nc+1)) + P = exp(X(nc+2)) + + y = K*z + + select case(kind) + case ("bubble") + kind_z = "liquid" + kind_y = "vapor" + case ("dew") + kind_z = "vapor" + kind_y = "liquid" + case ("liquid-liquid") + kind_z = "liquid" + kind_y = "liquid" + case default + kind_z = "stable" + kind_y = "stable" + end select + + call model%lnphi_pt(& + z, P, T, V=Vz, root_type=kind_z, & + lnPhi=lnphi_z, dlnPhidt=dlnphi_dt_z, & + dlnPhidp=dlnphi_dp_z, dlnphidn=dlnphi_dn_z & + ) + call model%lnphi_pt(& + y, P, T, V=Vy, root_type=kind_y, & + lnPhi=lnphi_y, dlnPhidt=dlnphi_dt_y, & + dlnPhidp=dlnphi_dp_y, dlnphidn=dlnphi_dn_y & + ) + + F(:nc) = X(:nc) + lnPhi_y - lnPhi_z + F(nc + 1) = sum(y - z) + F(nc + 2) = X(ns) - S + + ! Jacobian Matrix + do j=1,nc + df(:nc, j) = dlnphi_dn_y(:, j) * y(j) + df(j, j) = dF(j, j) + 1 + end do + + df(:nc, nc + 1) = T * (dlnphi_dt_y - dlnphi_dt_z) + df(:nc, nc + 2) = P * (dlnphi_dp_y - dlnphi_dp_z) + + df(nc + 1, :nc) = y + + df(nc + 2, :) = 0 + df(nc + 2, ns) = 1 + + dFdS = 0 + dFdS(nc+2) = -1 + end subroutine saturation_TP + + subroutine solve_TP(model, kind, z, X, ns, S, tol, max_iterations, its) + use yaeos__math, only: solve_system + class(ArModel), intent(in) :: model + character(len=*), intent(in) :: kind + real(pr), intent(in) :: z(:) + real(pr), intent(inout) :: X(:) + integer, intent(in) :: ns + real(pr), intent(in) :: S + real(pr), intent(in) :: tol + integer, intent(in) :: max_iterations + integer, intent(out) :: its + + real(pr) :: F(size(X)) + real(pr) :: dF(size(X), size(X)) + real(pr) :: dFdS(size(X)) + real(pr) :: dx(size(X)) + + its = 0 + do while (its < max_iterations) + call saturation_TP(model, kind, z, X, ns, S, F, dF, dFdS) + if (all(abs(F) < tol)) exit + + dX = solve_system(dF, -F) + X = X + dX + + do while (any(isnan(F))) + X = X - dx*0.9 + call saturation_TP(model, kind, z, X, ns, S, F, dF, dFdS) + end do + its = its + 1 + end do + + end subroutine solve_TP + + subroutine solve_VxVyT(model, z, X, ns, S, tol, max_iterations, its) + use yaeos__math, only: solve_system + class(ArModel), intent(in) :: model + real(pr), intent(in) :: z(:) + real(pr), intent(inout) :: X(:) + integer, intent(in) :: ns + real(pr), intent(in) :: S + real(pr), intent(in) :: tol + integer, intent(in) :: max_iterations + integer, intent(out) :: its + + real(pr) :: F(size(X)) + real(pr) :: dF(size(X), size(X)) + real(pr) :: dFdS(size(X)) + real(pr) :: dx(size(X)) + + its = 0 + do while (its < max_iterations) + call saturation_F(model, z, X, ns, S, F, dF) + if (all(abs(F) < tol)) exit + + dX = solve_system(dF, -F) + + X = X + dX + + do while (any(isnan(F))) + X = X - 0.9_pr * dx + call saturation_F(model, z, X, ns, S, F, dF) + end do + its = its + 1 + end do + end subroutine solve_VxVyT +end module yaeos__m_s_sp diff --git a/src/models/solvers/volume.f90 b/src/models/solvers/volume.f90 index f66591a31..704b10617 100644 --- a/src/models/solvers/volume.f90 +++ b/src/models/solvers/volume.f90 @@ -116,7 +116,10 @@ subroutine solve_point(P, V, Pcalc, AT, iter) iter = 0 DEL = 1 pcalc = 2*p - do while(abs(DEL) > 1.e-10_pr .and. iter < maximum_iterations) + do while(& + abs(DEL) > 1.e-10_pr & + .and. iter < maximum_iterations & + ) V = B/ZETA iter = iter + 1 call eos%residual_helmholtz(n, V, T, Ar=Ar, ArV=ArV, ArV2=ArV2) diff --git a/test/test_fugacity_vt.f90 b/test/test_fugacity_vt.f90 new file mode 100644 index 000000000..2759d2a82 --- /dev/null +++ b/test/test_fugacity_vt.f90 @@ -0,0 +1,63 @@ +program main + !! Test the calculation of fugacity. Compared to numerical derivatives of + !! manual calculations using the fugacity coefficient routine. + use yaeos + use fixtures_models, only: binary_PR76 + implicit none + class(ArModel), allocatable :: model + + integer, parameter :: nc = 2 + + real(pr) :: n(nc), V, T, P, lnf(nc), dlnfdt(nc), dlnfdv(nc), dlnfdn(nc,nc) + real(pr) :: numdiff(nc), numdiff_dn(nc, nc), dx, dn(nc), lnfdn(nc) + + integer :: i + + model = binary_PR76() + n = [8, 5] + T = 200._pr + V = model%get_v0(n, P, T)*5 + + call model%lnfug_vt(& + n=n, V=V, T=T, lnf=lnf, & + P=P, dlnfdt=dlnfdt, & + dlnfdv=dlnfdv, dlnfdn=dlnfdn) + + print *, "lnf" + print *, lnf + print *, lnfug(n, V, T) + + dx = 0.0001 + print *, "dt" + numdiff = (lnfug(n, V, T+dx) - lnfug(n, V, T))/dx + print *, dlnfdt + print *, numdiff + + print *, "dv" + dx = 0.0001_pr + numdiff = (lnfug(n, V+dx, T ) - lnfug(n, V, T))/dx + print *, dlnfdv + print *, numdiff + + print *, "dn" + do i=1,nc + dn = 0.0_pr + dn(i) = 0.000001_pr + numdiff_dn(i, :) = (lnfug(n+dn, V, T) - lnfug(n, V, T))/dn(i) + end do + + print *, dlnfdn + print *, numdiff_dn + +contains + + function lnfug(n, V, T) + real(pr), intent(in) :: n(:), V, T + real(pr) :: lnfug(nc) + + real(pr) :: lnphi(nc), P + + call model%lnphi_vt(n, V, T, lnphi=lnphi, P=P) + lnfug = log(n/sum(n)) + lnphi + log(P) + end function +end program main \ No newline at end of file diff --git a/test/test_saturation_solver.f90 b/test/test_saturation_solver.f90 new file mode 100644 index 000000000..c7c51bba4 --- /dev/null +++ b/test/test_saturation_solver.f90 @@ -0,0 +1,101 @@ +program main + use yaeos + use yaeos__math, only: solve_system + use yaeos__m_s_sp, only: saturation_F, saturation_TP, solve_TP, solve_VxVyT + use fixtures_models, only: binary_PR76 + use fortime, only: timer + + implicit none + + class(ArModel), allocatable :: model + type(EquilibriumState) :: sat + + integer, parameter :: nc = 2, nf = nc + 3 + + real(pr) :: n(nc), T, P, Vy, Vz, X(nf), S, F(nf), df(nf,nf) + real(pr) :: dx(nf), dFnum(nf, nf), Fdx(nf), dftmp(nf,nf) + real(pr) :: Px, Py + integer :: i, ns + type(timer) :: tim + + model = binary_PR76() + + n = [0.5, 0.5] + + T = 200._pr + + sat = saturation_pressure(model, n, T=T, kind="bubble") + + print *, "saturation_pressure" + print *, sat%iters, sat%x, sat%y, sat%P + + print *, "solve yVxVy" + + ! call numdiff + + call VxVy + call TP + +contains + + subroutine numdiff + Vz = sat%Vx! *0.9 + Vy = sat%Vy + call model%pressure(n=n, V=Vz, T=T, P=P) + + X(:nc) = log(sat%y/sat%x) + X(nc+1) = Vz + X(nc+2) = Vy + X(nc+3) = T + S = T + ns = nc+3 + dx = 0 + call saturation_F(model, n, X, ns, S, F, dF) + + print *, F + print *, "numdiff" + do i=1,nf + dx = 0 + dx(i) = 1e-9 + + call saturation_F(model, n, X+dx, ns, S, Fdx, dFtmp) + dFnum(:, i) = (Fdx - F) / dx(i) + + print *, dfnum(:, i) + print *, df(:, i) + print *, "==========================" + end do + end subroutine numdiff + + subroutine VxVy + real(pr) :: X(nc+3), S, tol=1e-10 + integer :: ns, its + X(1) = 1.0 + X(2) = 0.5 + X(3) = log(0.1) + X(4) = log(0.7) + X(5) = T + + ns = 5 + S = X(ns) + + call solve_VxVyT(model, n, X, ns, S, tol, 100, its) + print *, its, n*exp(X(:nc)), exp(X(nc+1)), exp(X(nc+2)), X(5) + end subroutine VxVy + + subroutine TP + real(pr) :: X(nc+2), S, tol=1e-10 + integer :: its, ns + print *, "solve_TP" + X(1) = log(1.0) + X(2) = log(0.1) + X(3) = log(T) + X(4) = log(200.0) + ns = 3 + + S = X(ns) + + call solve_TP(model, "bubble", n, X, ns, S, tol, 100, its) + print *, its, n*exp(X(:nc)), exp(X(nc+1:)) + end subroutine TP +end program main From 69c3219004020d48deb9830605cbe1b8c97bb3e1 Mon Sep 17 00:00:00 2001 From: "Federico E. Benelli" Date: Tue, 22 Oct 2024 15:27:16 -0300 Subject: [PATCH 10/40] testm --- .../boundaries/phase_envelopes_pt.f90 | 9 ++- test/test_psrk.f90 | 65 ------------------- 2 files changed, 4 insertions(+), 70 deletions(-) delete mode 100644 test/test_psrk.f90 diff --git a/src/equilibria/boundaries/phase_envelopes_pt.f90 b/src/equilibria/boundaries/phase_envelopes_pt.f90 index c0ba69cb1..2bd7183e6 100644 --- a/src/equilibria/boundaries/phase_envelopes_pt.f90 +++ b/src/equilibria/boundaries/phase_envelopes_pt.f90 @@ -238,10 +238,10 @@ subroutine update_spec(X, ns, S, dS, dXdS, step_iters) ] & ) - do while(maxval(abs(dXdS(:nc)*dS)) > 0.07) + do while(maxval(abs(dXdS(:nc)*dS)) > 0.1 * maxval(abs(X(:nc)))) dS = 0.7*dS end do - + call save_point(X, step_iters) call detect_critical(X, dXdS, ns, S, dS) end subroutine update_spec @@ -316,9 +316,8 @@ subroutine detect_critical(X, dXdS, ns, S, dS) inner = 0 do while (& - maxval(abs(X(:nc))) < 0.1 & - .and. inner < 500& - .and. abs(Vz - Vy) < 0.1) + maxval(abs(X(:nc))) < 0.06 & + .and. inner < 5000) ! If near a critical point, jump over it inner = inner + 1 diff --git a/test/test_psrk.f90 b/test/test_psrk.f90 deleted file mode 100644 index 535ccd03d..000000000 --- a/test/test_psrk.f90 +++ /dev/null @@ -1,65 +0,0 @@ -program main - !! Running a PSRK cubic equation of state example/test - use yaeos - - implicit none - - ! =========================================================================== - ! Definition of variables that will be used - ! --------------------------------------------------------------------------- - type(CubicEoS) :: eos - type(Groups) :: molecules(2) - type(EquilibriumState) :: sat - type(PTEnvel2) :: env - real(pr) :: tc(2), pc(2), w(2), n(2) - real(pr) :: C(2, 3) - - real(pr) :: v, lnphi(2) - - real(pr) :: pressures(7) = [40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0] - real(pr) :: temperatures(7) = [450.0, 460.0, 470.0, 480.0, 490.0, 500.0, 510.0] - - integer :: i - - ! =========================================================================== - ! Definition of required parameters - ! --------------------------------------------------------------------------- - - ! Critical constants - tc = [304.21_pr, 553.8_pr] - pc = [7.383e6_pr, 4.080358e6_pr] / 1e5 - w = [0.223621_pr, 0.213_pr] - - ! Molecules groups - molecules(1)%groups_ids = [117] - molecules(1)%number_of_groups = [1] - - molecules(2)%groups_ids = [2] - molecules(2)%number_of_groups = [6] - - ! Mathias-Copeman parameters - C(1, :) = [0.8255_pr, 0.16755_pr, -1.7039_pr] - C(2, :) = [0.84082_pr, -0.39847_pr, 0.94148_pr] - - - ! Setting up the equation of state - eos = PSRK(& - tc=tc, & - pc=pc, & - w=w, & - molecules=molecules, & - c1=C(:, 1), c2=C(:, 2), c3=C(:, 3) & - ) - - ! Molar numbers of each component - n = [60, 40] - - do i=1,7 - call eos%lnphi_pt(n=n, P=pressures(i), T=temperatures(i), lnphi=lnphi, root_type="stable") - call eos%volume(n=n, P=pressures(i), T=temperatures(i), V=V, root_type="stable") - sat = saturation_pressure(eos, n, temperatures(i), kind="bubble", p0=130._pr) - - print *, pressures(i), temperatures(i), exp(lnphi) - print *, pressures(i), temperatures(i), V - end do -end program main From 3360048a7961704535ede44660f92db436945423 Mon Sep 17 00:00:00 2001 From: "Federico E. Benelli" Date: Thu, 24 Oct 2024 23:19:34 -0300 Subject: [PATCH 11/40] critical point solver, soon --- test/test_critical.f90 | 352 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 352 insertions(+) create mode 100644 test/test_critical.f90 diff --git a/test/test_critical.f90 b/test/test_critical.f90 new file mode 100644 index 000000000..dce0d90bc --- /dev/null +++ b/test/test_critical.f90 @@ -0,0 +1,352 @@ +module yaeos__equilibria_critical + use yaeos__constants, only: pr + use yaeos__models, only: ArModel + use stdlib_linalg, only: eigh + + implicit none + + type :: CriticalLine + real(pr), allocatable :: a(:) + real(pr), allocatable :: z0(:) + real(pr), allocatable :: zi(:) + real(pr), allocatable :: P(:) + real(pr), allocatable :: V(:) + real(pr), allocatable :: T(:) + end type CriticalLine + +contains + + type(CriticalLine) function critical_line(model, a0, z0, zi) + use yaeos__math_continuation, only: continuation + class(ArModel), intent(in) :: model + real(pr), intent(in) :: a0 + real(pr), intent(in) :: z0(:) + real(pr), intent(in) :: zi(:) + + real(pr) :: u(size(z0)), u_new(size(z0)) + + real(pr), allocatable :: XS(:, :) + real(pr) :: X0(3), T, P, V + + integer :: i, j, ns, last_point + u = [0.3_pr, 0.5_pr, 0.2_pr] + + T = sum(model%components%Tc * z0) + P = sum(model%components%Pc * z0) + call model%volume(n=z0, P=P, T=T, V=V, root_type="stable") + + X0 = [a0, v, T] + X0(2:3) = log(X0(2:3)) + + ns = 1 + + u = [(1, i=1, size(z0))] + u = u/sum(u) + + XS = continuation(& + f=foo, X0=X0, ns0=ns, S0=X0(ns), & + dS0=0.1_pr, max_points=50, solver_tol=1e-15_pr & + ) + + last_point = 0 + do i=1, size(XS, 1) + if (all(abs(XS(i, :)) < 0.001)) exit + last_point = i + 1 + end do + + XS = XS(1:last_point-1, :) + + critical_line%a = XS(:, 1) + critical_line%z0 = z0 + critical_line%zi = zi + critical_line%V = (XS(:, 2)) + critical_line%T = (XS(:, 3)) + + allocate(critical_line%P(size(critical_line%a))) + do i=1, size(critical_line%a) + ! z = critical_line%a(i)*zi + (1-critical_line%a(i))*z0 + + ! call model%pressure(& + ! n=z, V=critical_line%V(i), T=critical_line%T(i), & + ! P=critical_line%P(i)) + end do + + contains + + subroutine foo(X, ns, S, F, dF, dFdS) + real(pr), intent(in) :: X(:) + integer, intent(in) :: ns + real(pr), intent(in) :: S + real(pr), intent(out) :: F(:) + real(pr), intent(out) :: dF(:, :) + real(pr), intent(out) :: dFdS(:) + real(pr) :: l1 + + real(pr) :: z(size(u)) + + if (X(1) > 1) then + return + end if + + z = X(1) * zi + (1 - X(1)) * z0 + F = F_critical(model=model, X=X, ns=ns, S=S, z0=z0, zi=zi, u=u) + dF = dF_critical(model=model, X=X, ns=ns, S=S, z0=z0, zi=zi, u=u) + l1 = lambda1(model=model, X=X, s=0.0_pr, z0=z0, zi=zi, u=u, u_new=u_new) + dFdS = 0 + dFdS(size(dFdS)) = -1 + end subroutine foo + end function critical_line + + + real(pr) function lambda1(model, X, s, z0, zi, u, u_new) + class(ArModel), intent(in) :: model + real(pr), intent(in) :: z0(:) + real(pr), intent(in) :: zi(:) + real(pr), intent(in) :: s + real(pr), intent(in) :: X(3) + real(pr), intent(in) :: u(:) + real(pr), optional, intent(out) :: u_new(:) + + real(pr) :: n(size(z0)), V, T + real(pr) :: dlnf_dn(size(z0), size(z0)) + real(pr) :: lambda(size(z0)), vectors(size(z0), size(z0)) + + integer :: i, j, nc + real(pr) :: M(size(z0), size(z0)), z(size(z0)) + + nc = size(z0) + + z = X(1) * zi + (1-X(1))*z0 + n = z + s * u * sqrt(z) + V = exp(X(2)) + T = exp(X(3)) + + call model%lnfug_vt(n=n, V=V, T=T, dlnfdn=dlnf_dn) + + do i=1,nc + do j=1,nc + M(i, j) = sqrt(z(i)*z(j)) * dlnf_dn(i, j) + end do + end do + + call eigh(A=M, lambda=lambda, vectors=vectors) + lambda1 = minval(lambda) + if (present(u_new)) u_new = vectors(:, minloc(lambda, dim=1)) + end function lambda1 + + function F_critical(model, X, ns, S, z0, zi, u) + class(ArModel), intent(in) :: model + real(pr), intent(in) :: X(3) + integer, intent(in) :: ns + real(pr), intent(in) :: S + real(pr), intent(in) :: z0(:) + real(pr), intent(in) :: zi(:) + real(pr), intent(in) :: u(:) + + real(pr) :: F_critical(3) + real(pr) :: z(size(u)) + + real(pr), parameter :: eps=1e-5_pr + + z = X(1) * zi + (1-X(1)) * z0 + F_critical(1) = lambda1(model=model, X=X, s=0.0_pr, z0=z0, zi=zi, u=u) + F_critical(2) = (& + lambda1(model=model, X=X, s= eps, zi=zi, z0=z0, u=u) & + - lambda1(model=model, X=X, s=-eps, zi=zi, z0=z0, u=u))/(2*eps) + F_critical(3) = X(ns) - S + end function F_critical + + function df_critical(model, X, ns, S, z0, zi, u) + class(ArModel), intent(in) :: model + real(pr), intent(in) :: X(3) + integer, intent(in) :: ns + real(pr), intent(in) :: S + real(pr), intent(in) :: z0(:) + real(pr), intent(in) :: zi(:) + real(pr), intent(in) :: u(:) + real(pr) :: df_critical(3, 3) + + real(pr), parameter :: eps=1e-5_pr + + real(pr) :: dx(3), F1(3), F2(3) + + integer :: i + + df_critical = 0 + do i=1,3 + dx = 0 + dx(i) = eps + F2 = F_critical(model, X+dx, ns, S, z0, zi, u) + F1 = F_critical(model, X-dx, ns, S, z0, zi, u) + df_critical(:, i) = (F2 - F1)/(2*eps) + end do + df_critical(3, :) = 0 + df_critical(3, ns) = 1 + end function df_critical + + subroutine solve_cp(model, X, ns, S, z0, zi, u) + use yaeos__math, only: solve_system + class(ArModel), intent(in) :: model + real(pr), intent(inout) :: X(3) + integer, intent(in) :: ns + real(pr), intent(in) :: S + real(pr), intent(in) :: z0(:) + real(pr), intent(in) :: zi(:) + real(pr), intent(in out) :: u(:) + + real(pr) :: F(3), df(3, 3), dX(3) + + real(pr) :: z(size(z0)), u_new(size(z0)), l + integer :: i + + do i=1,250 + F = F_critical(model, X, ns, S, z0, zi, u) + df = df_critical(model, X, ns, S, z0, zi, u) + dX = solve_system(A=df, b=-F) + + do while(maxval(abs(dX/X)) > 1e-1) + dX = dX/10 + end do + + if (maxval(abs(X)) < 1e-7) exit + + X = X + dX + l = lambda1(model, X, 0.0_pr, z0, zi, u, u_new) + u = u_new + end do + + end subroutine solve_cp +end module yaeos__equilibria_critical + +program main + use yaeos + use yaeos__math, only: solve_system + use stdlib_linalg, only: eigh + use fixtures_models, only: binary_PR76 + use yaeos__equilibria_critical, only: lambda1, F_critical, df_critical, CriticalLine, critical_line, solve_cp + implicit none + + integer, parameter :: nc=3 + + type(CubicEoS) :: model + type(EquilibriumState) :: sat + type(PTEnvel2) :: env + + type(CriticalLine) :: cl + + real(pr) :: V, T, P, a + real(pr) :: z(nc) + real(pr) :: z0(nc) + real(pr) :: zi(nc) + + real(pr) :: u(nc), u_new(nc) + integer :: ns + real(pr) :: S + + real(pr) :: F(3), X(3), dX(3), dF(3, 3), l + integer :: i, j + + ! ============================================================== + ! Initial + ! -------------------------------------------------------------- + model = get_model() + z0 = [0.3_pr, 0.1_pr, 0.6_pr] + zi = [0, 1, 0] + + u = [0.3_pr, 0.5_pr, 0.2_pr] + a = 5./100. + z = a*zi + (1-a)*z0 + + T = sum(model%components%Tc * z) + P = sum(model%components%Pc * z) + call model%volume(n=z, P=P, T=T, V=V, root_type="stable") + + ! sat = saturation_pressure(model, z, T=150._pr, kind="bubble") + ! env = pt_envelope_2ph(model, z, sat) + ! write(1, *) env + + cl = critical_line(model, a, z0, zi) + do i=1, size(cl%a) + write(2, *) cl%a(i), cl%V(i), cl%T(i), cl%P(i) + end do + + X = [a, log(V), log(T)] + ns = 1 + S = X(ns) + + open(4, file="envlops") + do j=1, 99, 5 + a = real(j, pr)/100 + z = a*zi + (1-a)*z0 + X = [a, X(2), X(3)] + S = X(ns) + + ! sat = saturation_pressure(model, z, T=150._pr, kind="bubble") + ! env = pt_envelope_2ph(model, z, sat) + ! do i=1,size(env%points) + ! write(4, *) a, env%points(i)%T, env%points(i)%P + ! end do + + write(4, *) + write(4, *) + + + ! X = [a, log(V), log(T)] + ! F = F_critical(model, X, ns, S, z0, zi, u) + ! df = df_critical(model, X, ns, S, z0, zi, u) + ! dX = solve_system(A=df, b=-F) + ! do while(maxval(abs(dX/X)) > 1e-1) + ! dX = dX/10 + ! end do + + ! print *, X + ! print *, dX + + ! X = X + dX + ! l = lambda1(model, X, 0.0_pr, z, u, u_new) + ! F = F_critical(model, X, ns, S, z0, zi, u) + ! print *, X + + + ! X = [a, log(V), log(T)] + ! u = [0.3_pr, 0.5_pr, 0.2_pr] + call solve_cp(model, X, ns, S, z0, zi, u) + + ! do i=1,250 + ! F = F_critical(model, X, ns, S, z0, zi, u) + ! df = df_critical(model, X, ns, S, z0, zi, u) + + ! dX = solve_system(A=df, b=-F) + + ! do while(maxval(abs(dX/X)) > 1e-1) + ! dX = dX/10 + ! end do + + ! if (maxval(abs(X)) < 1e-7) exit + + ! X = X + dX + ! l = lambda1(model, X, 0.0_pr, z, u, u_new) + ! u = u_new + ! end do + + ! call solve_cp(model, X, ns, S, z0, zi, u) + + print *, X(1), exp(X(2:3)), sum(abs(F)) + + call model%pressure(n=z, V=exp(X(2)), T=exp(X(3)), P=P) + write(11, *) X(1), X(2), X(3), P + ! write(3, *) a, env%cps + end do + +contains + + type(CubicEoS) function get_model() + use yaeos__models, only: SoaveRedlichKwong + real(pr) :: tc(3), pc(3), w(3) + Tc= [190.564, 304.21, 617.7] + Pc= [45.99, 73.83000000000001, 21.1] + w= [0.0115478, 0.223621, 0.492328] + ! Vc= [0.09859999999999998, 0.09399999999999999, 0.5999999999999999] + get_model = SoaveRedlichKwong(tc, pc, w) + end function get_model +end program main From e34de2f20dd8606c6209fcbfc947f08aabb9f3f1 Mon Sep 17 00:00:00 2001 From: "Federico E. Benelli" Date: Thu, 24 Oct 2024 23:20:19 -0300 Subject: [PATCH 12/40] critical point solver, soon --- test/test_critical.f90 | 41 +---------------------------------------- 1 file changed, 1 insertion(+), 40 deletions(-) diff --git a/test/test_critical.f90 b/test/test_critical.f90 index dce0d90bc..f2900863c 100644 --- a/test/test_critical.f90 +++ b/test/test_critical.f90 @@ -290,47 +290,8 @@ program main write(4, *) write(4, *) - - ! X = [a, log(V), log(T)] - ! F = F_critical(model, X, ns, S, z0, zi, u) - ! df = df_critical(model, X, ns, S, z0, zi, u) - ! dX = solve_system(A=df, b=-F) - ! do while(maxval(abs(dX/X)) > 1e-1) - ! dX = dX/10 - ! end do - - ! print *, X - ! print *, dX - - ! X = X + dX - ! l = lambda1(model, X, 0.0_pr, z, u, u_new) - ! F = F_critical(model, X, ns, S, z0, zi, u) - ! print *, X - - - ! X = [a, log(V), log(T)] - ! u = [0.3_pr, 0.5_pr, 0.2_pr] call solve_cp(model, X, ns, S, z0, zi, u) - - ! do i=1,250 - ! F = F_critical(model, X, ns, S, z0, zi, u) - ! df = df_critical(model, X, ns, S, z0, zi, u) - - ! dX = solve_system(A=df, b=-F) - - ! do while(maxval(abs(dX/X)) > 1e-1) - ! dX = dX/10 - ! end do - - ! if (maxval(abs(X)) < 1e-7) exit - - ! X = X + dX - ! l = lambda1(model, X, 0.0_pr, z, u, u_new) - ! u = u_new - ! end do - - ! call solve_cp(model, X, ns, S, z0, zi, u) - + F = F_critical(model, x, ns, s, z0, zi, u) print *, X(1), exp(X(2:3)), sum(abs(F)) call model%pressure(n=z, V=exp(X(2)), T=exp(X(3)), P=P) From c2a275998894fcc7058a347e34c116e85f87d534 Mon Sep 17 00:00:00 2001 From: "Federico E. Benelli" Date: Fri, 25 Oct 2024 08:16:21 -0300 Subject: [PATCH 13/40] seems to be working --- test/test_critical.f90 | 92 +++++++++++++++++------------------------- 1 file changed, 38 insertions(+), 54 deletions(-) diff --git a/test/test_critical.f90 b/test/test_critical.f90 index f2900863c..039806527 100644 --- a/test/test_critical.f90 +++ b/test/test_critical.f90 @@ -18,6 +18,7 @@ module yaeos__equilibria_critical type(CriticalLine) function critical_line(model, a0, z0, zi) use yaeos__math_continuation, only: continuation + use yaeos__math, only: solve_system class(ArModel), intent(in) :: model real(pr), intent(in) :: a0 real(pr), intent(in) :: z0(:) @@ -26,10 +27,10 @@ type(CriticalLine) function critical_line(model, a0, z0, zi) real(pr) :: u(size(z0)), u_new(size(z0)) real(pr), allocatable :: XS(:, :) - real(pr) :: X0(3), T, P, V + real(pr) :: X0(3), T, P, V, z(size(z0)) integer :: i, j, ns, last_point - u = [0.3_pr, 0.5_pr, 0.2_pr] + u = z0 T = sum(model%components%Tc * z0) P = sum(model%components%Pc * z0) @@ -37,7 +38,6 @@ type(CriticalLine) function critical_line(model, a0, z0, zi) X0 = [a0, v, T] X0(2:3) = log(X0(2:3)) - ns = 1 u = [(1, i=1, size(z0))] @@ -45,30 +45,31 @@ type(CriticalLine) function critical_line(model, a0, z0, zi) XS = continuation(& f=foo, X0=X0, ns0=ns, S0=X0(ns), & - dS0=0.1_pr, max_points=50, solver_tol=1e-15_pr & + dS0=0.1_pr, max_points=50, solver_tol=1e-5_pr & ) last_point = 0 do i=1, size(XS, 1) + print *, XS(i, 1), exp(XS(i, 2:3)) if (all(abs(XS(i, :)) < 0.001)) exit last_point = i + 1 end do XS = XS(1:last_point-1, :) - critical_line%a = XS(:, 1) critical_line%z0 = z0 critical_line%zi = zi - critical_line%V = (XS(:, 2)) - critical_line%T = (XS(:, 3)) + critical_line%a = XS(:, 1) + critical_line%V = exp(XS(:, 2)) + critical_line%T = exp(XS(:, 3)) allocate(critical_line%P(size(critical_line%a))) do i=1, size(critical_line%a) - ! z = critical_line%a(i)*zi + (1-critical_line%a(i))*z0 + z = critical_line%a(i)*zi + (1-critical_line%a(i))*z0 - ! call model%pressure(& - ! n=z, V=critical_line%V(i), T=critical_line%T(i), & - ! P=critical_line%P(i)) + call model%pressure(& + n=z, V=critical_line%V(i), T=critical_line%T(i), & + P=critical_line%P(i)) end do contains @@ -82,16 +83,16 @@ subroutine foo(X, ns, S, F, dF, dFdS) real(pr), intent(out) :: dFdS(:) real(pr) :: l1 - real(pr) :: z(size(u)) + real(pr) :: z(size(u)), Xsol(3) if (X(1) > 1) then return end if - z = X(1) * zi + (1 - X(1)) * z0 - F = F_critical(model=model, X=X, ns=ns, S=S, z0=z0, zi=zi, u=u) - dF = dF_critical(model=model, X=X, ns=ns, S=S, z0=z0, zi=zi, u=u) + F = F_critical(model, X, ns, S, z0, zi, u) + df = df_critical(model, X, ns, S, z0, zi, u) l1 = lambda1(model=model, X=X, s=0.0_pr, z0=z0, zi=zi, u=u, u_new=u_new) + u = u_new dFdS = 0 dFdS(size(dFdS)) = -1 end subroutine foo @@ -148,7 +149,6 @@ function F_critical(model, X, ns, S, z0, zi, u) real(pr), parameter :: eps=1e-5_pr - z = X(1) * zi + (1-X(1)) * z0 F_critical(1) = lambda1(model=model, X=X, s=0.0_pr, z0=z0, zi=zi, u=u) F_critical(2) = (& lambda1(model=model, X=X, s= eps, zi=zi, z0=z0, u=u) & @@ -180,8 +180,8 @@ function df_critical(model, X, ns, S, z0, zi, u) F1 = F_critical(model, X-dx, ns, S, z0, zi, u) df_critical(:, i) = (F2 - F1)/(2*eps) end do - df_critical(3, :) = 0 - df_critical(3, ns) = 1 + ! df_critical(3, :) = 0 + ! df_critical(3, ns) = 1 end function df_critical subroutine solve_cp(model, X, ns, S, z0, zi, u) @@ -208,7 +208,7 @@ subroutine solve_cp(model, X, ns, S, z0, zi, u) dX = dX/10 end do - if (maxval(abs(X)) < 1e-7) exit + if (maxval(abs(X)) < 1e-5) exit X = X + dX l = lambda1(model, X, 0.0_pr, z0, zi, u, u_new) @@ -223,10 +223,11 @@ program main use yaeos__math, only: solve_system use stdlib_linalg, only: eigh use fixtures_models, only: binary_PR76 - use yaeos__equilibria_critical, only: lambda1, F_critical, df_critical, CriticalLine, critical_line, solve_cp + use yaeos__equilibria_critical, only: & + lambda1, F_critical, df_critical, CriticalLine, critical_line, solve_cp implicit none - integer, parameter :: nc=3 + integer, parameter :: nc=2 type(CubicEoS) :: model type(EquilibriumState) :: sat @@ -235,68 +236,51 @@ program main type(CriticalLine) :: cl real(pr) :: V, T, P, a + real(pr) :: z(nc) real(pr) :: z0(nc) real(pr) :: zi(nc) - real(pr) :: u(nc), u_new(nc) + real(pr) :: u(nc) integer :: ns real(pr) :: S - real(pr) :: F(3), X(3), dX(3), dF(3, 3), l + real(pr) :: F(3), X(3) integer :: i, j - ! ============================================================== - ! Initial - ! -------------------------------------------------------------- - model = get_model() - z0 = [0.3_pr, 0.1_pr, 0.6_pr] - zi = [0, 1, 0] + model = binary_PR76() + z0 = [0, 1] + zi = [1, 0] + u = [1, 0] - u = [0.3_pr, 0.5_pr, 0.2_pr] - a = 5./100. - z = a*zi + (1-a)*z0 - - T = sum(model%components%Tc * z) - P = sum(model%components%Pc * z) - call model%volume(n=z, P=P, T=T, V=V, root_type="stable") - - ! sat = saturation_pressure(model, z, T=150._pr, kind="bubble") - ! env = pt_envelope_2ph(model, z, sat) - ! write(1, *) env + a = real(1, pr)/100._pr cl = critical_line(model, a, z0, zi) do i=1, size(cl%a) write(2, *) cl%a(i), cl%V(i), cl%T(i), cl%P(i) end do + z = a*zi + (1-a)*z0 + T = sum(model%components%Tc * z) + P = sum(model%components%Pc * z) + call model%volume(n=z, P=P, T=T, V=V, root_type="stable") X = [a, log(V), log(T)] ns = 1 S = X(ns) - open(4, file="envlops") do j=1, 99, 5 a = real(j, pr)/100 z = a*zi + (1-a)*z0 + sat = saturation_pressure(model, z, T=150._pr, kind="bubble") + env = pt_envelope_2ph(model, z, sat) X = [a, X(2), X(3)] S = X(ns) - ! sat = saturation_pressure(model, z, T=150._pr, kind="bubble") - ! env = pt_envelope_2ph(model, z, sat) - ! do i=1,size(env%points) - ! write(4, *) a, env%points(i)%T, env%points(i)%P - ! end do - - write(4, *) - write(4, *) - call solve_cp(model, X, ns, S, z0, zi, u) F = F_critical(model, x, ns, s, z0, zi, u) - print *, X(1), exp(X(2:3)), sum(abs(F)) - call model%pressure(n=z, V=exp(X(2)), T=exp(X(3)), P=P) - write(11, *) X(1), X(2), X(3), P - ! write(3, *) a, env%cps + write(11, *) X(1), exp(X(2)), exp(X(3)), P + write(1, *) a, env%cps end do contains From 5e05b6f8b71ed4642dd6eca45dfabdd57f8cb02a Mon Sep 17 00:00:00 2001 From: "Federico E. Benelli" Date: Fri, 25 Oct 2024 11:42:17 -0300 Subject: [PATCH 14/40] critical --- test/test_critical.f90 | 98 ++++++++++++++++++++++++++++++------------ 1 file changed, 71 insertions(+), 27 deletions(-) diff --git a/test/test_critical.f90 b/test/test_critical.f90 index 039806527..803f71bb6 100644 --- a/test/test_critical.f90 +++ b/test/test_critical.f90 @@ -16,13 +16,14 @@ module yaeos__equilibria_critical contains - type(CriticalLine) function critical_line(model, a0, z0, zi) + type(CriticalLine) function critical_line(model, a0, z0, zi, dS0) use yaeos__math_continuation, only: continuation use yaeos__math, only: solve_system class(ArModel), intent(in) :: model real(pr), intent(in) :: a0 real(pr), intent(in) :: z0(:) real(pr), intent(in) :: zi(:) + real(pr), intent(in) :: dS0 real(pr) :: u(size(z0)), u_new(size(z0)) @@ -42,15 +43,16 @@ type(CriticalLine) function critical_line(model, a0, z0, zi) u = [(1, i=1, size(z0))] u = u/sum(u) + u = zi XS = continuation(& f=foo, X0=X0, ns0=ns, S0=X0(ns), & - dS0=0.1_pr, max_points=50, solver_tol=1e-5_pr & + dS0=dS0, max_points=2500, solver_tol=1e-5_pr, & + update_specification=update_specification & ) last_point = 0 do i=1, size(XS, 1) - print *, XS(i, 1), exp(XS(i, 2:3)) if (all(abs(XS(i, :)) < 0.001)) exit last_point = i + 1 end do @@ -96,6 +98,27 @@ subroutine foo(X, ns, S, F, dF, dFdS) dFdS = 0 dFdS(size(dFdS)) = -1 end subroutine foo + + subroutine update_specification(X, ns, S, dS, dXdS, iterations) + real(pr), intent(in out) :: X(:) !! Vector of variables \(X\) + integer, intent(in out) :: ns !! Position of specified variable + real(pr), intent(in out) :: S !! Specification variable value + real(pr), intent(in out) :: dS !! Step of specification in the method + real(pr), intent(in out) :: dXdS(:) !! \(\frac{dX}{dS}\) + integer, intent(in) :: iterations !! Iterations needed to converge point + + ns = maxloc(abs(dXdS), dim=1) + dS = dXdS(ns)*dS + dXdS = dXdS/dXdS(ns) + do while(abs(dXdS(1)*dS) > 0.06_pr & + .or. abs(dXdS(2)*dS) > 0.1_pr & + .or. abs(dXdS(3)*dS) > 0.1_pr & + ) + dS = dS/2 + end do + print *, ns, X(ns) + dXdS(ns)*dS, dS + end subroutine update_specification + end function critical_line @@ -147,7 +170,10 @@ function F_critical(model, X, ns, S, z0, zi, u) real(pr) :: F_critical(3) real(pr) :: z(size(u)) - real(pr), parameter :: eps=1e-5_pr + real(pr), parameter :: eps=1e-10_pr + + if(any(zi * X(1) + z0 * (1-X(1))<0) ) return + F_critical(1) = lambda1(model=model, X=X, s=0.0_pr, z0=z0, zi=zi, u=u) F_critical(2) = (& @@ -227,7 +253,7 @@ program main lambda1, F_critical, df_critical, CriticalLine, critical_line, solve_cp implicit none - integer, parameter :: nc=2 + integer, parameter :: nc=5 type(CubicEoS) :: model type(EquilibriumState) :: sat @@ -248,17 +274,28 @@ program main real(pr) :: F(3), X(3) integer :: i, j - model = binary_PR76() - z0 = [0, 1] - zi = [1, 0] - u = [1, 0] + ! model = binary_PR76() + ! z0 = [0, 1] + ! zi = [1, 0] + ! u = [1, 0] + model = get_model() + z0 = [0.0, 0.4, 0.3, 0.2, 0.1] + zi = [1, 0, 0, 0, 0] + a = real(1, pr)/100._pr - - cl = critical_line(model, a, z0, zi) + cl = critical_line(model, a, z0, zi, 0.1_pr) do i=1, size(cl%a) write(2, *) cl%a(i), cl%V(i), cl%T(i), cl%P(i) end do + write (2, *) + write (2, *) + + ! a = real(99, pr)/100._pr + ! cl = critical_line(model, a, z0, zi, -0.001_pr) + ! do i=1, size(cl%a) + ! write(2, *) cl%a(i), cl%V(i), cl%T(i), cl%P(i) + ! end do z = a*zi + (1-a)*z0 T = sum(model%components%Tc * z) @@ -268,30 +305,37 @@ program main ns = 1 S = X(ns) - do j=1, 99, 5 + + open(unit=4, file="pt") + do j=1, 99 a = real(j, pr)/100 z = a*zi + (1-a)*z0 - sat = saturation_pressure(model, z, T=150._pr, kind="bubble") + sat = saturation_temperature(model, z, P=0.01_pr, kind="dew") env = pt_envelope_2ph(model, z, sat) - X = [a, X(2), X(3)] - S = X(ns) - - call solve_cp(model, X, ns, S, z0, zi, u) - F = F_critical(model, x, ns, s, z0, zi, u) - call model%pressure(n=z, V=exp(X(2)), T=exp(X(3)), P=P) - write(11, *) X(1), exp(X(2)), exp(X(3)), P - write(1, *) a, env%cps + + do i=1,size(env%points) + write(4, *) a, env%points(i)%T, env%points(i)%P + end do + write(4, *) end do + close(4) contains type(CubicEoS) function get_model() use yaeos__models, only: SoaveRedlichKwong - real(pr) :: tc(3), pc(3), w(3) - Tc= [190.564, 304.21, 617.7] - Pc= [45.99, 73.83000000000001, 21.1] - w= [0.0115478, 0.223621, 0.492328] - ! Vc= [0.09859999999999998, 0.09399999999999999, 0.5999999999999999] - get_model = SoaveRedlichKwong(tc, pc, w) + real(pr) :: tc(nc), pc(nc), w(nc), kij(nc,nc) + ! Tc= [190.564, 304.21, 617.7] + ! Pc= [45.99, 73.83000000000001, 21.1] + ! w= [0.0115478, 0.223621, 0.492328] + + Tc= [304.21, 190.564, 425.12, 617.7, 874.0] + Pc= [73.83000000000001, 45.99, 37.96, 21.1, 6.800000000000001] + w= [0.223621, 0.0115478, 0.200164, 0.492328, 1.52596] + + kij = 0 + kij(1, :) = 0.12 + kij(:, 1) = 0.12 + get_model = SoaveRedlichKwong(tc, pc, w, kij=kij) end function get_model end program main From 24ae73c94a6f9a917e6c32a8f8535ce0b62d7e4d Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 27 Oct 2024 12:26:21 -0300 Subject: [PATCH 15/40] test critical lines and single points --- test/test_critical.f90 | 349 ++++++----------------------------------- 1 file changed, 49 insertions(+), 300 deletions(-) diff --git a/test/test_critical.f90 b/test/test_critical.f90 index 803f71bb6..5272984c0 100644 --- a/test/test_critical.f90 +++ b/test/test_critical.f90 @@ -1,264 +1,14 @@ -module yaeos__equilibria_critical - use yaeos__constants, only: pr - use yaeos__models, only: ArModel - use stdlib_linalg, only: eigh - - implicit none - - type :: CriticalLine - real(pr), allocatable :: a(:) - real(pr), allocatable :: z0(:) - real(pr), allocatable :: zi(:) - real(pr), allocatable :: P(:) - real(pr), allocatable :: V(:) - real(pr), allocatable :: T(:) - end type CriticalLine - -contains - - type(CriticalLine) function critical_line(model, a0, z0, zi, dS0) - use yaeos__math_continuation, only: continuation - use yaeos__math, only: solve_system - class(ArModel), intent(in) :: model - real(pr), intent(in) :: a0 - real(pr), intent(in) :: z0(:) - real(pr), intent(in) :: zi(:) - real(pr), intent(in) :: dS0 - - real(pr) :: u(size(z0)), u_new(size(z0)) - - real(pr), allocatable :: XS(:, :) - real(pr) :: X0(3), T, P, V, z(size(z0)) - - integer :: i, j, ns, last_point - u = z0 - - T = sum(model%components%Tc * z0) - P = sum(model%components%Pc * z0) - call model%volume(n=z0, P=P, T=T, V=V, root_type="stable") - - X0 = [a0, v, T] - X0(2:3) = log(X0(2:3)) - ns = 1 - - u = [(1, i=1, size(z0))] - u = u/sum(u) - u = zi - - XS = continuation(& - f=foo, X0=X0, ns0=ns, S0=X0(ns), & - dS0=dS0, max_points=2500, solver_tol=1e-5_pr, & - update_specification=update_specification & - ) - - last_point = 0 - do i=1, size(XS, 1) - if (all(abs(XS(i, :)) < 0.001)) exit - last_point = i + 1 - end do - - XS = XS(1:last_point-1, :) - - critical_line%z0 = z0 - critical_line%zi = zi - critical_line%a = XS(:, 1) - critical_line%V = exp(XS(:, 2)) - critical_line%T = exp(XS(:, 3)) - - allocate(critical_line%P(size(critical_line%a))) - do i=1, size(critical_line%a) - z = critical_line%a(i)*zi + (1-critical_line%a(i))*z0 - - call model%pressure(& - n=z, V=critical_line%V(i), T=critical_line%T(i), & - P=critical_line%P(i)) - end do - - contains - - subroutine foo(X, ns, S, F, dF, dFdS) - real(pr), intent(in) :: X(:) - integer, intent(in) :: ns - real(pr), intent(in) :: S - real(pr), intent(out) :: F(:) - real(pr), intent(out) :: dF(:, :) - real(pr), intent(out) :: dFdS(:) - real(pr) :: l1 - - real(pr) :: z(size(u)), Xsol(3) - - if (X(1) > 1) then - return - end if - - F = F_critical(model, X, ns, S, z0, zi, u) - df = df_critical(model, X, ns, S, z0, zi, u) - l1 = lambda1(model=model, X=X, s=0.0_pr, z0=z0, zi=zi, u=u, u_new=u_new) - u = u_new - dFdS = 0 - dFdS(size(dFdS)) = -1 - end subroutine foo - - subroutine update_specification(X, ns, S, dS, dXdS, iterations) - real(pr), intent(in out) :: X(:) !! Vector of variables \(X\) - integer, intent(in out) :: ns !! Position of specified variable - real(pr), intent(in out) :: S !! Specification variable value - real(pr), intent(in out) :: dS !! Step of specification in the method - real(pr), intent(in out) :: dXdS(:) !! \(\frac{dX}{dS}\) - integer, intent(in) :: iterations !! Iterations needed to converge point - - ns = maxloc(abs(dXdS), dim=1) - dS = dXdS(ns)*dS - dXdS = dXdS/dXdS(ns) - do while(abs(dXdS(1)*dS) > 0.06_pr & - .or. abs(dXdS(2)*dS) > 0.1_pr & - .or. abs(dXdS(3)*dS) > 0.1_pr & - ) - dS = dS/2 - end do - print *, ns, X(ns) + dXdS(ns)*dS, dS - end subroutine update_specification - - end function critical_line - - - real(pr) function lambda1(model, X, s, z0, zi, u, u_new) - class(ArModel), intent(in) :: model - real(pr), intent(in) :: z0(:) - real(pr), intent(in) :: zi(:) - real(pr), intent(in) :: s - real(pr), intent(in) :: X(3) - real(pr), intent(in) :: u(:) - real(pr), optional, intent(out) :: u_new(:) - - real(pr) :: n(size(z0)), V, T - real(pr) :: dlnf_dn(size(z0), size(z0)) - real(pr) :: lambda(size(z0)), vectors(size(z0), size(z0)) - - integer :: i, j, nc - real(pr) :: M(size(z0), size(z0)), z(size(z0)) - - nc = size(z0) - - z = X(1) * zi + (1-X(1))*z0 - n = z + s * u * sqrt(z) - V = exp(X(2)) - T = exp(X(3)) - - call model%lnfug_vt(n=n, V=V, T=T, dlnfdn=dlnf_dn) - - do i=1,nc - do j=1,nc - M(i, j) = sqrt(z(i)*z(j)) * dlnf_dn(i, j) - end do - end do - - call eigh(A=M, lambda=lambda, vectors=vectors) - lambda1 = minval(lambda) - if (present(u_new)) u_new = vectors(:, minloc(lambda, dim=1)) - end function lambda1 - - function F_critical(model, X, ns, S, z0, zi, u) - class(ArModel), intent(in) :: model - real(pr), intent(in) :: X(3) - integer, intent(in) :: ns - real(pr), intent(in) :: S - real(pr), intent(in) :: z0(:) - real(pr), intent(in) :: zi(:) - real(pr), intent(in) :: u(:) - - real(pr) :: F_critical(3) - real(pr) :: z(size(u)) - - real(pr), parameter :: eps=1e-10_pr - - if(any(zi * X(1) + z0 * (1-X(1))<0) ) return - - - F_critical(1) = lambda1(model=model, X=X, s=0.0_pr, z0=z0, zi=zi, u=u) - F_critical(2) = (& - lambda1(model=model, X=X, s= eps, zi=zi, z0=z0, u=u) & - - lambda1(model=model, X=X, s=-eps, zi=zi, z0=z0, u=u))/(2*eps) - F_critical(3) = X(ns) - S - end function F_critical - - function df_critical(model, X, ns, S, z0, zi, u) - class(ArModel), intent(in) :: model - real(pr), intent(in) :: X(3) - integer, intent(in) :: ns - real(pr), intent(in) :: S - real(pr), intent(in) :: z0(:) - real(pr), intent(in) :: zi(:) - real(pr), intent(in) :: u(:) - real(pr) :: df_critical(3, 3) - - real(pr), parameter :: eps=1e-5_pr - - real(pr) :: dx(3), F1(3), F2(3) - - integer :: i - - df_critical = 0 - do i=1,3 - dx = 0 - dx(i) = eps - F2 = F_critical(model, X+dx, ns, S, z0, zi, u) - F1 = F_critical(model, X-dx, ns, S, z0, zi, u) - df_critical(:, i) = (F2 - F1)/(2*eps) - end do - ! df_critical(3, :) = 0 - ! df_critical(3, ns) = 1 - end function df_critical - - subroutine solve_cp(model, X, ns, S, z0, zi, u) - use yaeos__math, only: solve_system - class(ArModel), intent(in) :: model - real(pr), intent(inout) :: X(3) - integer, intent(in) :: ns - real(pr), intent(in) :: S - real(pr), intent(in) :: z0(:) - real(pr), intent(in) :: zi(:) - real(pr), intent(in out) :: u(:) - - real(pr) :: F(3), df(3, 3), dX(3) - - real(pr) :: z(size(z0)), u_new(size(z0)), l - integer :: i - - do i=1,250 - F = F_critical(model, X, ns, S, z0, zi, u) - df = df_critical(model, X, ns, S, z0, zi, u) - dX = solve_system(A=df, b=-F) - - do while(maxval(abs(dX/X)) > 1e-1) - dX = dX/10 - end do - - if (maxval(abs(X)) < 1e-5) exit - - X = X + dX - l = lambda1(model, X, 0.0_pr, z0, zi, u, u_new) - u = u_new - end do - - end subroutine solve_cp -end module yaeos__equilibria_critical - program main + !! Test the calculation of critical lines use yaeos - use yaeos__math, only: solve_system - use stdlib_linalg, only: eigh - use fixtures_models, only: binary_PR76 - use yaeos__equilibria_critical, only: & - lambda1, F_critical, df_critical, CriticalLine, critical_line, solve_cp + use yaeos__equilibria_critical, only: CriticalLine, critical_line, solve_cp implicit none - integer, parameter :: nc=5 + integer, parameter :: nc=12 type(CubicEoS) :: model type(EquilibriumState) :: sat type(PTEnvel2) :: env - type(CriticalLine) :: cl real(pr) :: V, T, P, a @@ -271,71 +21,70 @@ program main integer :: ns real(pr) :: S - real(pr) :: F(3), X(3) + real(pr) :: X(3) integer :: i, j - ! model = binary_PR76() - ! z0 = [0, 1] - ! zi = [1, 0] - ! u = [1, 0] - model = get_model() - z0 = [0.0, 0.4, 0.3, 0.2, 0.1] - zi = [1, 0, 0, 0, 0] - - a = real(1, pr)/100._pr - cl = critical_line(model, a, z0, zi, 0.1_pr) - do i=1, size(cl%a) - write(2, *) cl%a(i), cl%V(i), cl%T(i), cl%P(i) - end do - write (2, *) - write (2, *) - - ! a = real(99, pr)/100._pr - ! cl = critical_line(model, a, z0, zi, -0.001_pr) - ! do i=1, size(cl%a) - ! write(2, *) cl%a(i), cl%V(i), cl%T(i), cl%P(i) - ! end do + ! Calculate the composition at at specified alpha + a = real(1, pr)/100._pr z = a*zi + (1-a)*z0 + + ! Get the full phase envelope of the fluid + sat = saturation_temperature(model, z, P=0.01_pr, kind="dew") + env = pt_envelope_2ph(model, z, sat) + + ! Calculate the critical point T = sum(model%components%Tc * z) P = sum(model%components%Pc * z) call model%volume(n=z, P=P, T=T, V=V, root_type="stable") - X = [a, log(V), log(T)] - ns = 1 - S = X(ns) - - open(unit=4, file="pt") - do j=1, 99 - a = real(j, pr)/100 + ! Solve a critical point + X = [a, log(V), log(T)] + u = [(1, i=1, size(z0))] + u = u/sum(u) + call solve_cp(model, X, 1, X(1), z0, zi, u) + V = exp(X(2)); T = exp(X(3)) + call model%pressure(z, V=V, T=T, P=P) + + if (sum([T, P] - [env%cps(1)%T, env%cps(1)%P])**2 > 1e-2) then + print *, "Critical point failed" + stop 1 + end if + + ! Now test the critical lines + cl = critical_line(model, a, z0, zi, 0.01_pr) + do i=1,5 + a = cl%a(i) z = a*zi + (1-a)*z0 sat = saturation_temperature(model, z, P=0.01_pr, kind="dew") env = pt_envelope_2ph(model, z, sat) - do i=1,size(env%points) - write(4, *) a, env%points(i)%T, env%points(i)%P - end do - write(4, *) + if (sum(([cl%T(i), cl%P(i)] - [env%cps(1)%T, env%cps(1)%P]))**2 > 1e-2) then + print *, "Critical line failed" + stop 1 + end if end do - close(4) contains - type(CubicEoS) function get_model() - use yaeos__models, only: SoaveRedlichKwong real(pr) :: tc(nc), pc(nc), w(nc), kij(nc,nc) - ! Tc= [190.564, 304.21, 617.7] - ! Pc= [45.99, 73.83000000000001, 21.1] - ! w= [0.0115478, 0.223621, 0.492328] - - Tc= [304.21, 190.564, 425.12, 617.7, 874.0] - Pc= [73.83000000000001, 45.99, 37.96, 21.1, 6.800000000000001] - w= [0.223621, 0.0115478, 0.200164, 0.492328, 1.52596] - + z0=[0.0656,0.3711,0.0538,0.0373,0.0261,0.0187,& + 0.0218,0.1791,0.091,0.0605,0.0447,0.0302] + zi=[1.0,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.] + + tc=[304.088888888889,190.6,305.4,369.8,425.2,469.6,507.4,616.2,& + 698.9,770.4,853.1,1001.2] + pc=[73.7343491450634,45.9196083838941,48.7516547159404,42.3795504688362, & + 37.9291919470491,33.6811224489796,29.6353419746277,28.8261858797573,& + 19.3186017650303,16.5876999448428,15.2728212906784,14.6659542195256] + w= [0.228,0.008,0.098,0.152,0.193,0.251,0.296,& + 0.454,0.787,1.048,1.276,1.299] kij = 0 - kij(1, :) = 0.12 - kij(:, 1) = 0.12 - get_model = SoaveRedlichKwong(tc, pc, w, kij=kij) + kij(1, 2) = 0.12 + kij(1, 3:) = 0.15 + kij(:, 1) = kij(1, :) + + get_model = PengRobinson78(tc, pc, w, kij=kij) end function get_model end program main From cce6ce65c6336307e9e1d2884d7a8f6f4688ec6e Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 27 Oct 2024 12:27:02 -0300 Subject: [PATCH 16/40] this default step setter causes more troubles than helping --- src/math/continuation.f90 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/math/continuation.f90 b/src/math/continuation.f90 index b96c4fb4f..4807701e2 100644 --- a/src/math/continuation.f90 +++ b/src/math/continuation.f90 @@ -155,7 +155,6 @@ function continuation(& ns = maxloc(abs(dXdS), dim=1) dS = dXdS(ns)*dS dXdS = dXdS/dXdS(ns) - dS = sign(minval(abs([0.05_pr, dS])), dS) end if if (present(postprocess)) then @@ -204,7 +203,7 @@ subroutine full_newton(& X0 = X newton: do iters = 1, max_iters ! Converged point - if (maxval(abs(dx)) < tol .or. maxval(abs(F)) < 1e-7) exit newton + if (maxval(abs(dx)) < tol .or. maxval(abs(F)) < 1e-13) exit newton call fun(X, ns, S, F, dF, dFdS) if (maxval(abs(F)) < tol) exit From 80ace5546960bf42fd93da147d0f8b9100383fa2 Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 27 Oct 2024 12:27:26 -0300 Subject: [PATCH 17/40] Methods to calculate critical points and critical lines --- src/equilibria/critical.f90 | 244 ++++++++++++++++++++++++++++++++++++ 1 file changed, 244 insertions(+) create mode 100644 src/equilibria/critical.f90 diff --git a/src/equilibria/critical.f90 b/src/equilibria/critical.f90 new file mode 100644 index 000000000..daf0318de --- /dev/null +++ b/src/equilibria/critical.f90 @@ -0,0 +1,244 @@ +module yaeos__equilibria_critical + use yaeos__constants, only: pr + use yaeos__models, only: ArModel + + implicit none + + type :: CriticalLine + real(pr), allocatable :: a(:) + real(pr), allocatable :: z0(:) + real(pr), allocatable :: zi(:) + real(pr), allocatable :: P(:) + real(pr), allocatable :: V(:) + real(pr), allocatable :: T(:) + end type CriticalLine + +contains + + type(CriticalLine) function critical_line(model, a0, z0, zi, dS0) + use yaeos__math_continuation, only: continuation + use yaeos__math, only: solve_system + class(ArModel), intent(in) :: model + real(pr), intent(in) :: a0 + real(pr), intent(in) :: z0(:) + real(pr), intent(in) :: zi(:) + real(pr), intent(in) :: dS0 + + real(pr) :: u(size(z0)), u_new(size(z0)) + + real(pr), allocatable :: XS(:, :) + real(pr) :: X0(3), T, P, V, z(size(z0)) + + integer :: i, j, ns, last_point + u = z0 + + T = sum(model%components%Tc * z0) + P = sum(model%components%Pc * z0) + call model%volume(n=z0, P=P, T=T, V=V, root_type="stable") + + X0 = [a0, v, T] + X0(2:3) = log(X0(2:3)) + ns = 1 + + call solve_cp(model, X0, ns, X0(ns), z0, zi, u) + + u = [(1, i=1, size(z0))] + u = u/sum(u) + u = zi + + XS = continuation(& + f=foo, X0=X0, ns0=ns, S0=X0(ns), & + dS0=dS0, max_points=2500, solver_tol=1e-5_pr, & + update_specification=update_specification & + ) + + last_point = 0 + do i=1, size(XS, 1) + if (all(abs(XS(i, :)) < 0.001)) exit + last_point = i + 1 + end do + + XS = XS(1:last_point-1, :) + + critical_line%z0 = z0 + critical_line%zi = zi + critical_line%a = XS(:, 1) + critical_line%V = exp(XS(:, 2)) + critical_line%T = exp(XS(:, 3)) + + allocate(critical_line%P(size(critical_line%a))) + do i=1, size(critical_line%a) + z = critical_line%a(i)*zi + (1-critical_line%a(i))*z0 + + call model%pressure(& + n=z, V=critical_line%V(i), T=critical_line%T(i), & + P=critical_line%P(i)) + end do + + contains + + subroutine foo(X, ns, S, F, dF, dFdS) + real(pr), intent(in) :: X(:) + integer, intent(in) :: ns + real(pr), intent(in) :: S + real(pr), intent(out) :: F(:) + real(pr), intent(out) :: dF(:, :) + real(pr), intent(out) :: dFdS(:) + real(pr) :: l1 + + real(pr) :: z(size(u)), Xsol(3) + + if (X(1) > 1) then + return + end if + + F = F_critical(model, X, ns, S, z0, zi, u) + df = df_critical(model, X, ns, S, z0, zi, u) + l1 = lambda1(model=model, X=X, s=0.0_pr, z0=z0, zi=zi, u=u, u_new=u_new) + u = u_new + dFdS = 0 + dFdS(size(dFdS)) = -1 + end subroutine foo + + subroutine update_specification(X, ns, S, dS, dXdS, iterations) + real(pr), intent(in out) :: X(:) !! Vector of variables \(X\) + integer, intent(in out) :: ns !! Position of specified variable + real(pr), intent(in out) :: S !! Specification variable value + real(pr), intent(in out) :: dS !! Step of specification in the method + real(pr), intent(in out) :: dXdS(:) !! \(\frac{dX}{dS}\) + integer, intent(in) :: iterations !! Iterations needed to converge point + + integer :: other(2) = [2,3] + + ns = maxloc(abs(dXdS), dim=1) + dS = dXdS(ns)*dS + dXdS = dXdS/dXdS(ns) + end subroutine update_specification + + end function critical_line + + real(pr) function lambda1(model, X, s, z0, zi, u, u_new) + use stdlib_linalg, only: eigh, linalg_state_type + class(ArModel), intent(in) :: model + real(pr), intent(in) :: z0(:) + real(pr), intent(in) :: zi(:) + real(pr), intent(in) :: s + real(pr), intent(in) :: X(3) + real(pr), intent(in) :: u(:) + real(pr), optional, intent(out) :: u_new(:) + + real(pr) :: n(size(z0)), V, T + real(pr) :: dlnf_dn(size(z0), size(z0)) + real(pr) :: lambda(size(z0)), vectors(size(z0), size(z0)) + + type(linalg_state_type) :: stat + + integer :: i, j, nc + real(pr) :: M(size(z0), size(z0)), z(size(z0)) + + nc = size(z0) + + z = X(1) * zi + (1-X(1))*z0 + n = z + s * u * sqrt(z) + V = exp(X(2)) + T = exp(X(3)) + + call model%lnfug_vt(n=n, V=V, T=T, dlnfdn=dlnf_dn) + + do i=1,nc + do j=1,nc + M(i, j) = sqrt(z(i)*z(j)) * dlnf_dn(i, j) + end do + end do + + call eigh(A=M, lambda=lambda, vectors=vectors, err=stat) + if (.not. stat%ok()) write(*, *) stat%print_msg() + lambda1 = minval(lambda) + if (present(u_new)) u_new = vectors(:, minloc(lambda, dim=1)) + end function lambda1 + + function F_critical(model, X, ns, S, z0, zi, u) + class(ArModel), intent(in) :: model + real(pr), intent(in) :: X(3) + integer, intent(in) :: ns + real(pr), intent(in) :: S + real(pr), intent(in) :: z0(:) + real(pr), intent(in) :: zi(:) + real(pr), intent(in) :: u(:) + + real(pr) :: F_critical(3) + real(pr) :: z(size(u)) + + real(pr), parameter :: eps=1e-10_pr + + if(any(zi * X(1) + z0 * (1-X(1))<0) ) return + + + F_critical(1) = lambda1(model=model, X=X, s=0.0_pr, z0=z0, zi=zi, u=u) + F_critical(2) = (& + lambda1(model=model, X=X, s= eps, zi=zi, z0=z0, u=u) & + - lambda1(model=model, X=X, s=-eps, zi=zi, z0=z0, u=u))/(2*eps) + F_critical(3) = X(ns) - S + end function F_critical + + function df_critical(model, X, ns, S, z0, zi, u) + class(ArModel), intent(in) :: model + real(pr), intent(in) :: X(3) + integer, intent(in) :: ns + real(pr), intent(in) :: S + real(pr), intent(in) :: z0(:) + real(pr), intent(in) :: zi(:) + real(pr), intent(in) :: u(:) + real(pr) :: df_critical(3, 3) + + real(pr), parameter :: eps=1e-5_pr + + real(pr) :: dx(3), F1(3), F2(3) + + integer :: i + + df_critical = 0 + do i=1,3 + dx = 0 + dx(i) = eps + F2 = F_critical(model, X+dx, ns, S, z0, zi, u) + F1 = F_critical(model, X-dx, ns, S, z0, zi, u) + df_critical(:, i) = (F2 - F1)/(2*eps) + end do + ! df_critical(3, :) = 0 + ! df_critical(3, ns) = 1 + end function df_critical + + subroutine solve_cp(model, X, ns, S, z0, zi, u) + use yaeos__math, only: solve_system + class(ArModel), intent(in) :: model + real(pr), intent(inout) :: X(3) + integer, intent(in) :: ns + real(pr), intent(in) :: S + real(pr), intent(in) :: z0(:) + real(pr), intent(in) :: zi(:) + real(pr), intent(in out) :: u(:) + + real(pr) :: F(3), df(3, 3), dX(3) + + real(pr) :: z(size(z0)), u_new(size(z0)), l + integer :: i + + do i=1,250 + F = F_critical(model, X, ns, S, z0, zi, u) + df = df_critical(model, X, ns, S, z0, zi, u) + dX = solve_system(A=df, b=-F) + + do while(maxval(abs(dX/X)) > 1e-1) + dX = dX/10 + end do + + if (maxval(abs(X)) < 1e-5) exit + + X = X + dX + l = lambda1(model, X, 0.0_pr, z0, zi, u, u_new) + u = u_new + end do + + end subroutine solve_cp +end module yaeos__equilibria_critical \ No newline at end of file From 2b76d7ca3cf57ffc48eba45ebb947b940faa0dc9 Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 27 Oct 2024 12:28:04 -0300 Subject: [PATCH 18/40] This should've been intent in --- .../boundaries/phase_envelopes_pt.f90 | 53 +++++++++++++++++-- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/src/equilibria/boundaries/phase_envelopes_pt.f90 b/src/equilibria/boundaries/phase_envelopes_pt.f90 index 2bd7183e6..2e275b59d 100644 --- a/src/equilibria/boundaries/phase_envelopes_pt.f90 +++ b/src/equilibria/boundaries/phase_envelopes_pt.f90 @@ -49,7 +49,8 @@ function pt_envelope_2ph(& !! Thermodyanmic model real(pr), intent(in) :: z(:) !! Vector of molar fractions - type(EquilibriumState) :: first_point + type(EquilibriumState), intent(in) :: first_point + !! Initial point of the envelope integer, optional, intent(in) :: points !! Maxmimum number of points, defaults to 500 integer, optional, intent(in) :: iterations @@ -238,9 +239,9 @@ subroutine update_spec(X, ns, S, dS, dXdS, step_iters) ] & ) - do while(maxval(abs(dXdS(:nc)*dS)) > 0.1 * maxval(abs(X(:nc)))) - dS = 0.7*dS - end do + ! do while(maxval(abs(dXdS(:nc)*dS)) > 0.1 * maxval(abs(X(:nc)))) + ! dS = 0.7*dS + ! end do call save_point(X, step_iters) call detect_critical(X, dXdS, ns, S, dS) @@ -393,4 +394,48 @@ subroutine write_PTEnvel2(pt2, unit, iotype, v_list, iostat, iomsg) end do end subroutine write_PTEnvel2 + type(PTEnvel2) function find_hpl(model, z, T0, P0) + class(ArModel), intent(in) :: model + real(pr), intent(in) :: z(:), T0, P0 + + integer :: i + real(pr) :: y(size(z)) + real(pr) :: lnphi_y(size(z)), lnphi_z(size(z)) + type(EquilibriumState) :: fr + real(pr) :: diffs(size(z)), Ts(size(z)), T, P + integer :: ncomp, nc + + nc = size(z) + P = P0 + do ncomp=1,nc + T = T0 + y = 0 + y(ncomp) = 1 + do i=500, 100, -10 + T = real(i, pr) + call model%lnphi_pt(z, P, T, root_type="liquid", lnPhi=lnphi_z) + call model%lnphi_pt(y, P, T, root_type="liquid", lnPhi=lnphi_y) + diffs(ncomp) = log(z(ncomp)) + lnphi_z(ncomp) - log(y(ncomp)) - lnphi_y(ncomp) + if (diffs(ncomp) > 0) exit + end do + Ts(ncomp) = T + end do + + T = maxval(Ts, mask=diffs>0) + ncomp = findloc(Ts, T, dim=1) + + y=0 + y(ncomp) = 1 + + fr%x = z + fr%y = y + 1e-5 + fr%y = fr%y/sum(fr%y) + fr%T = T + fr%P = P + fr%kind = "liquid-liquid" + find_hpl = pt_envelope_2ph( & + model, z, fr, & + specified_variable_0=nc+2, delta_0=-5.0_pr, iterations=1000) + end function + end module yaeos__equilibria_boundaries_phase_envelopes_pt From b831b4de7a3ecb8b7403c952051cab8c65ca3a42 Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 27 Oct 2024 12:28:17 -0300 Subject: [PATCH 19/40] expose critical solvers --- src/equilibria/equilibria.f90 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/equilibria/equilibria.f90 b/src/equilibria/equilibria.f90 index 02384cfde..f686d73b1 100644 --- a/src/equilibria/equilibria.f90 +++ b/src/equilibria/equilibria.f90 @@ -14,9 +14,12 @@ module yaeos__equilibria use yaeos__equilibria_saturation_points, only:& saturation_pressure, saturation_temperature + ! Critical points + use yaeos__equilibria_critical, only: critical_line, CriticalLine, solve_cp + ! Phase equilibria boundaries use yaeos__equilibria_boundaries_phase_envelopes_pt, only:& - PTEnvel2, pt_envelope_2ph + PTEnvel2, pt_envelope_2ph, find_hpl use yaeos__equilibria_boundaries_phase_envelopes_px, only:& PXEnvel2, px_envelope_2ph From ec912d1f52a9f614ac86ff96a5caa49cc57d7fd5 Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 27 Oct 2024 13:00:39 -0300 Subject: [PATCH 20/40] dooor stuck, door stuck --- python/docs/source/tutorial/more_calculations.ipynb | 9 --------- 1 file changed, 9 deletions(-) diff --git a/python/docs/source/tutorial/more_calculations.ipynb b/python/docs/source/tutorial/more_calculations.ipynb index b69a9e1d5..5f176ee9e 100644 --- a/python/docs/source/tutorial/more_calculations.ipynb +++ b/python/docs/source/tutorial/more_calculations.ipynb @@ -20,15 +20,6 @@ "pure component. Let's use carbon dioxide." ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%pip install yaeos" - ] - }, { "cell_type": "code", "execution_count": 14, From fdaf9b8f66003114319efdff7b6e21b8e09bbb2d Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 27 Oct 2024 18:26:42 -0300 Subject: [PATCH 21/40] z = [1, 0] is no longer valid to calculate a sat point --- .../source/tutorial/more_calculations.ipynb | 178 ++++++++++++++---- 1 file changed, 142 insertions(+), 36 deletions(-) diff --git a/python/docs/source/tutorial/more_calculations.ipynb b/python/docs/source/tutorial/more_calculations.ipynb index 5f176ee9e..41a62e14e 100644 --- a/python/docs/source/tutorial/more_calculations.ipynb +++ b/python/docs/source/tutorial/more_calculations.ipynb @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -31,7 +31,7 @@ "Text(0, 0.5, 'Pressure [bar]')" ] }, - "execution_count": 14, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" }, @@ -94,22 +94,22 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'x': array([1.]),\n", - " 'y': array([1.00000563]),\n", - " 'Vx': 0.047274015789694014,\n", - " 'Vy': 225.60748624499604,\n", + " 'y': array([1.]),\n", + " 'Vx': 0.04668949889514575,\n", + " 'Vy': 0.9534768478028306,\n", " 'T': 250.0,\n", - " 'P': 17.916481601359543,\n", + " 'P': 17.916706382439905,\n", " 'beta': 0.0}" ] }, - "execution_count": 15, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -131,14 +131,14 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "17.916481601359543 bar\n" + "17.916706382439905 bar\n" ] } ], @@ -168,7 +168,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -200,22 +200,22 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'x': array([0.5, 0.5]),\n", - " 'y': array([0.96800412, 0.03199696]),\n", - " 'Vx': 0.0652408635277093,\n", - " 'Vy': 146.15829716092955,\n", + " 'y': array([0.96800305, 0.03199695]),\n", + " 'Vx': 0.06509074642359831,\n", + " 'Vy': 2.2963934571796805,\n", " 'T': 250.0,\n", - " 'P': 8.269678810727767,\n", + " 'P': 8.269690420348901,\n", " 'beta': 0.0}" ] }, - "execution_count": 18, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -226,7 +226,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -241,7 +241,7 @@ " 'beta': 1.0}" ] }, - "execution_count": 19, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -281,22 +281,128 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 7, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1e-05, 0.99999)\n", + "(0.010110808080808081, 0.9898891919191919)\n", + "(0.020211616161616163, 0.9797883838383838)\n", + "(0.030312424242424245, 0.9696875757575758)\n", + "(0.04041323232323233, 0.9595867676767676)\n", + "(0.050514040404040415, 0.9494859595959596)\n", + "(0.060614848484848494, 0.9393851515151515)\n", + "(0.07071565656565656, 0.9292843434343434)\n", + "(0.08081646464646465, 0.9191835353535354)\n", + "(0.09091727272727274, 0.9090827272727273)\n", + "(0.10101808080808082, 0.8989819191919192)\n", + "(0.11111888888888889, 0.8888811111111111)\n", + "(0.12121969696969698, 0.878780303030303)\n", + "(0.13132050505050508, 0.8686794949494949)\n", + "(0.14142131313131315, 0.8585786868686869)\n", + "(0.15152212121212125, 0.8484778787878787)\n", + "(0.16162292929292932, 0.8383770707070707)\n", + "(0.1717237373737374, 0.8282762626262626)\n", + "(0.1818245454545455, 0.8181754545454545)\n", + "(0.19192535353535356, 0.8080746464646464)\n", + "(0.20202616161616166, 0.7979738383838384)\n", + "(0.21212696969696973, 0.7878730303030302)\n", + "(0.2222277777777778, 0.7777722222222222)\n", + "(0.2323285858585859, 0.767671414141414)\n", + "(0.24242939393939397, 0.757570606060606)\n", + "(0.25253020202020204, 0.747469797979798)\n", + "(0.26263101010101014, 0.7373689898989899)\n", + "(0.27273181818181824, 0.7272681818181818)\n", + "(0.2828326262626263, 0.7171673737373737)\n", + "(0.2929334343434344, 0.7070665656565656)\n", + "(0.3030342424242425, 0.6969657575757575)\n", + "(0.3131350505050505, 0.6868649494949495)\n", + "(0.3232358585858586, 0.6767641414141414)\n", + "(0.3333366666666667, 0.6666633333333333)\n", + "(0.34343747474747477, 0.6565625252525252)\n", + "(0.35353828282828287, 0.6464617171717171)\n", + "(0.36363909090909097, 0.636360909090909)\n", + "(0.373739898989899, 0.626260101010101)\n", + "(0.3838407070707071, 0.616159292929293)\n", + "(0.3939415151515152, 0.6060584848484848)\n", + "(0.4040423232323233, 0.5959576767676766)\n", + "(0.41414313131313135, 0.5858568686868686)\n", + "(0.42424393939393945, 0.5757560606060605)\n", + "(0.43434474747474755, 0.5656552525252525)\n", + "(0.4444455555555556, 0.5555544444444445)\n", + "(0.4545463636363637, 0.5454536363636363)\n", + "(0.4646471717171718, 0.5353528282828282)\n", + "(0.47474797979797984, 0.5252520202020201)\n", + "(0.48484878787878793, 0.5151512121212121)\n", + "(0.49494959595959603, 0.505050404040404)\n", + "(0.505050404040404, 0.494949595959596)\n", + "(0.5151512121212122, 0.4848487878787878)\n", + "(0.5252520202020202, 0.4747479797979798)\n", + "(0.5353528282828283, 0.46464717171717174)\n", + "(0.5454536363636364, 0.4545463636363636)\n", + "(0.5555544444444445, 0.44444555555555554)\n", + "(0.5656552525252525, 0.4343447474747475)\n", + "(0.5757560606060607, 0.42424393939393934)\n", + "(0.5858568686868687, 0.4141431313131313)\n", + "(0.5959576767676767, 0.40404232323232325)\n", + "(0.6060584848484849, 0.3939415151515151)\n", + "(0.616159292929293, 0.38384070707070705)\n", + "(0.626260101010101, 0.373739898989899)\n", + "(0.6363609090909091, 0.36363909090909086)\n", + "(0.6464617171717172, 0.3535382828282828)\n", + "(0.6565625252525252, 0.34343747474747477)\n", + "(0.6666633333333334, 0.3333366666666666)\n", + "(0.6767641414141414, 0.32323585858585857)\n", + "(0.6868649494949495, 0.3131350505050505)\n", + "(0.6969657575757576, 0.3030342424242424)\n", + "(0.7070665656565657, 0.29293343434343433)\n", + "(0.7171673737373737, 0.2828326262626263)\n", + "(0.7272681818181819, 0.27273181818181813)\n", + "(0.7373689898989899, 0.2626310101010101)\n", + "(0.747469797979798, 0.25253020202020204)\n", + "(0.7575706060606061, 0.2424293939393939)\n", + "(0.7676714141414142, 0.23232858585858585)\n", + "(0.7777722222222222, 0.2222277777777778)\n", + "(0.7878730303030304, 0.21212696969696965)\n", + "(0.7979738383838384, 0.2020261616161616)\n", + "(0.8080746464646466, 0.19192535353535345)\n", + "(0.8181754545454546, 0.1818245454545454)\n", + "(0.8282762626262626, 0.17172373737373736)\n", + "(0.8383770707070708, 0.1616229292929292)\n", + "(0.8484778787878788, 0.15152212121212116)\n", + "(0.8585786868686869, 0.14142131313131312)\n", + "(0.868679494949495, 0.13132050505050497)\n", + "(0.8787803030303031, 0.12121969696969692)\n", + "(0.8888811111111111, 0.11111888888888888)\n", + "(0.8989819191919193, 0.10101808080808072)\n", + "(0.9090827272727273, 0.09091727272727268)\n", + "(0.9191835353535354, 0.08081646464646464)\n", + "(0.9292843434343435, 0.07071565656565648)\n", + "(0.9393851515151516, 0.06061484848484844)\n", + "(0.9494859595959596, 0.050514040404040395)\n", + "(0.9595867676767678, 0.04041323232323224)\n", + "(0.9696875757575758, 0.030312424242424196)\n", + "(0.9797883838383838, 0.020211616161616153)\n", + "(0.989889191919192, 0.010110808080807998)\n", + "(0.99999, 9.99999999995449e-06)\n" + ] + }, { "data": { "text/plain": [ "(0.0, 18.0)" ] }, - "execution_count": 20, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -319,7 +425,7 @@ "model = PengRobinson78(Tc, Pc, w)\n", "\n", "# Mole compositions from 0 to 1 for CO2\n", - "z_co2 = np.linspace(0.0, 1.0, 100)\n", + "z_co2 = np.linspace(0.00001, 0.99999, 100)\n", "z_butane = 1.0 - z_co2\n", "\n", "t = 250 # K\n", @@ -360,7 +466,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -375,7 +481,7 @@ " 'beta': 0.3873990240956161}" ] }, - "execution_count": 21, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -406,7 +512,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -415,13 +521,13 @@ "(0.0, 18.0)" ] }, - "execution_count": 22, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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", + "image/png": "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O/r06cOTJ08AUKvVlClThvXr13Pp0iUmT57MhAkTWLduHQDJycl06dKFpk2bcu7cOY4ePcrAgQNRqTSTjR08eJB+/foxfPhwLl26xI8//oifnx9fffXVa70nQoiCIyE5hTEbzjFjexBqBd6tXYbVA+tT3NpM36HlHm1Tl12u3UKaugqobdu26TQVtW3blvXr16db9vlFXsuWLcuiRYuoW7cu0dHRWFlZERYWRs2aNalTpw6gqfF40ejRo2nfvj2g+cCvWrUqV69epVKlSgBUrFgRW9tX/w9kwYIFjB8/nm7dugHwww8/8Ndff73y9QBWrVqFWq3m119/xczMjKpVq3L79m0+++yzl57bqFEjxo0bB0CFChU4fPgw3377LS1bttSW6d+/P7169QJg5syZLFq0iBMnTtCmTRuMjY3x9fXVlvXw8ODo0aOsW7eOHj16EBUVRWRkJB06dKBcuXIAVK5cWVve19eXcePG4ePjA2i+b9OnT2fs2LFMmTLltd4XIUT+9+BZPJ/+cZozYREYqODL9lUY0Mhd+89RoaROgcRozdemNqDOndtI4lNANW/enKVLl2q3LS0tMyybWtsRGBjI06dPUas1P01hYWFUqVKFzz77jHfeeYczZ87QqlUrunTpQsOGDXWuUb16de3XpUppOtM9ePBAm/hcvnz5lV9LZGQk4eHhvPHGG9p9RkZG1KlTB0VRXvm6QUFBVK9eHTOz//47atCgQZbOfbFcgwYN0jSzPf+eWFpaYmNjo9OEuGTJEn777TfCwsKIi4sjMTFR27zn4OBA//79ad26NS1btqRFixb06NFD+94GBgZy+PBhnRqelJQU4uPjiY2NxcKigCw4KITItnO3Ixj4+2nuRcVjY2bEd71r0aRCwenD+cpSm7lA09QVm5Art5GmrgLK0tIST09P7SP1A/NFMTExtG7dGhsbG1auXMnJkye1TUiJiYmAprbo5s2bjBw5krt37/L222+naRIyNv5vkbvU/zhSE6i8YmBgkCYRSkpKytMYnvf8ewKa9yX1PVmzZg2jR4/mww8/5O+//yYgIIABAwZo33OAZcuWcfToURo2bMjatWupUKECx44dAzTNdL6+vgQEBGgf58+fJyQkRCeRE0IULpvP3uHdH45yLyqeck6WbBnyZtFIeuC/Zi4jMzAyzbXbSOJTyF2+fJnHjx8ze/Zs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", "text/plain": [ "
" ] @@ -492,7 +598,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -518,7 +624,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -527,7 +633,7 @@ "dict_keys(['Ts', 'Ps', 'Tcs', 'Pcs'])" ] }, - "execution_count": 24, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -552,7 +658,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -561,13 +667,13 @@ "Text(0, 0.5, 'Pressure [bar]')" ] }, - "execution_count": 25, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -599,7 +705,7 @@ ], "metadata": { "kernelspec": { - "display_name": "yaeos", + "display_name": "thermo", "language": "python", "name": "python3" }, @@ -613,7 +719,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.6" } }, "nbformat": 4, From d38d6b08bb5a916256d44267c80ddb3d7c3713c3 Mon Sep 17 00:00:00 2001 From: "Federico E. Benelli" Date: Mon, 28 Oct 2024 10:41:53 -0300 Subject: [PATCH 22/40] Initial step of the GPEC algorithm --- app/gpec.f90 | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 app/gpec.f90 diff --git a/app/gpec.f90 b/app/gpec.f90 new file mode 100644 index 000000000..ee89b4505 --- /dev/null +++ b/app/gpec.f90 @@ -0,0 +1,104 @@ +program gpec + !! Implementation of the Global Phase Equilibrium (GPEC) algorithm + use forsus, only: Substance, forsus_default_dir, forsus_dir + use yaeos + implicit none + + integer, parameter :: nc = 2 !! Number of components + + type(Substance) :: sus(nc) !! Substances + class(ArModel), allocatable :: model !! Thermodynamic model to use + + type(EquilibriumState) :: sat_point !! Saturation point + type(PTEnvel2) :: psats(2) !! Saturation curves + type(CriticalLine) :: cl + + real(pr) :: z(nc) !! Molar fractions + real(pr) :: a !! Fraction between component 1 and 2 + real(pr), parameter :: z0(nc) = [1-epsilon(1.0), epsilon(1.0)] !! Component 1 molar fractions + real(pr), parameter :: zi(nc) = [epsilon(1.0), 1-epsilon(1.0)] !! Component 2 molar fractions + real(pr) :: P !! Pressure [bar] + real(pr) :: T !! Temperature [K] + real(pr) :: V !! Volume [L/mol] + + integer :: diagram_type !! Diagram type + + integer :: i, j + + forsus_dir = "build/dependencies/forsus/" // forsus_default_dir + + ! =========================================================================== + ! Set up the model + ! --------------------------------------------------------------------------- + model = get_model_nrtl_mhv() + ! sus(1) = Substance("methane") + ! sus(2) = Substance("n-butane") + ! model = PengRobinson76(& + ! Tc=sus%critical%critical_temperature%value, & + ! Pc=sus%critical%critical_pressure%value/1e5, & + ! w=sus%critical%acentric_factor%value & + ! ) + + ! =========================================================================== + ! Calculate both saturation curves + ! --------------------------------------------------------------------------- + do i=0,1 + z = i*zi + (1-i)*z0 + sat_point = saturation_temperature(model, z, P=0.1_pr, kind="bubble") + psats(i+1) = pt_envelope_2ph(model, z, sat_point) + end do + print *, psats(1) + print *, "" + print *, "" + print *, psats(2) + + ! =========================================================================== + ! Calculate the first critical line (2 -> 1) + ! --------------------------------------------------------------------------- + cl = critical_line(model, a0=0.99_pr, z0=z0, zi=zi, dS0=-0.01_pr) + + do i=1,size(cl%a) + print *, cl%a(i), cl%T(i), cl%P(i), cl%V(i) + end do + call exit + + if (cl%a(size(cl%a)) < 1e-3) then + type_1_or_2 : block + ! Search for LLV + ! IF LLV + diagram_type = 1 + ! ELSE + diagram_type = 2 + end block type_1_or_2 + else + + end if + +contains + +type(CubicEoS) function get_model_nrtl_mhv() result(model) + type(MHV) :: mr + type(NRTL) :: ge + real(pr) :: a(nc,nc), b(nc,nc), c(nc,nc) + real(pr) :: tc(nc), pc(nc), w(nc) + + a=0; b=0; c=0 + + tc = [304.21_pr, 727.0_pr] + pc = [73.83_pr, 25.6_pr] + w = [0.223621_pr, 0.427556_pr] + + a(1, 2) = -2.8089495558489754 + a(2, 1) = -1.8212821725264361 + b(1, 2) = 1230.0987703604858 + b(2, 1) = 313.79150482742654 + c(1, 2) = 0.49412348866462708 + c(2, 1) = 0.49412348866462708 + + model = PengRobinson76(tc, pc, w) + ge = NRTL(a, b, c) + mr = MHV(ge=ge, b=model%b, q=-0.53_pr) + deallocate(model%mixrule) + model%mixrule = mr + end function get_model_nrtl_mhv +end program gpec From 16b35ec2e7d9e172479ff528048dbbc32e024eb0 Mon Sep 17 00:00:00 2001 From: "Federico E. Benelli" Date: Tue, 29 Oct 2024 15:46:00 -0300 Subject: [PATCH 23/40] Critical points on Python-API --- c_interface/yaeos_c.f90 | 21 ++++++ python/yaeos/core.py | 26 ++++++++ src/equilibria/critical.f90 | 116 ++++++++++++++++++++++++++++------ src/equilibria/equilibria.f90 | 3 +- 4 files changed, 147 insertions(+), 19 deletions(-) diff --git a/c_interface/yaeos_c.f90 b/c_interface/yaeos_c.f90 index fcb388a55..40e307dd5 100644 --- a/c_interface/yaeos_c.f90 +++ b/c_interface/yaeos_c.f90 @@ -41,6 +41,7 @@ module yaeos_c public :: flash, flash_grid public :: saturation_pressure public :: pt2_phase_envelope + public :: critical_point type :: ArModelContainer !! Container type for ArModels @@ -416,9 +417,29 @@ subroutine Cp_residual_vt(id, n, V, T, Cp) call ar_models(id)%model%cp_residual_vt(n, V, T, Cp) end subroutine Cp_residual_vt + ! ========================================================================== ! Phase equilibria ! -------------------------------------------------------------------------- + subroutine critical_point(id, z0, zi, spec, max_iters, x, T, P, V) + use yaeos, only: EquilibriumState, fcritical_point => critical_point + integer(c_int), intent(in) :: id + real(c_double), intent(in) :: z0(:) + real(c_double), intent(in) :: zi(:) + character(len=*), intent(in) :: spec + integer, intent(in) :: max_iters + real(c_double), intent(out) :: x(size(z0)) + real(c_double), intent(out) :: T + real(c_double), intent(out) :: P + real(c_double), intent(out) :: V + + real(c_double) :: y(size(z0)), Vx, Vy, beta + + type(EquilibriumState) :: crit + crit = fcritical_point(model=ar_models(id)%model, z0=z0, zi=zi, spec=spec, max_iters=max_iters) + call equilibria_state_to_arrays(crit, x, y, P, T, V, Vy, beta) + end subroutine critical_point + subroutine equilibria_state_to_arrays(eq_state, x, y, P, T, Vx, Vy, beta) use yaeos, only: EquilibriumState type(EquilibriumState) :: eq_state diff --git a/python/yaeos/core.py b/python/yaeos/core.py index 0d6a494b7..d91c5b1bc 100644 --- a/python/yaeos/core.py +++ b/python/yaeos/core.py @@ -1082,6 +1082,32 @@ def phase_envelope_pt( return res + def critical_point(self, z, max_iters=100) -> dict: + """Critical point calculation. + + Calculate the critical point of a mixture. At a given composition + + Parameters + ---------- + z: array_like + Global mole fractions + max_iters: int, optional + + Returns + ------- + dict + Critical point calculation result dictionary with keys: + - Tc: critical temperature [K] + - Pc: critical pressure [bar] + - Vc: critical volume [L] + """ + + *x, t, p, v = yaeos_c.critical_point( + self.id, z0=z, zi=[0, 0], spec="z", max_iters=max_iters + ) + + return {"Tc": t, "Pc": p, "Vc": v} + def __del__(self) -> None: """Delete the model from the available models list (Fortran side).""" yaeos_c.make_available_ar_models_list(self.id) diff --git a/src/equilibria/critical.f90 b/src/equilibria/critical.f90 index daf0318de..8ba41fa76 100644 --- a/src/equilibria/critical.f90 +++ b/src/equilibria/critical.f90 @@ -1,6 +1,7 @@ module yaeos__equilibria_critical use yaeos__constants, only: pr use yaeos__models, only: ArModel + use yaeos__equilibria_equilibrium_state, only: EquilibriumState implicit none @@ -18,6 +19,7 @@ module yaeos__equilibria_critical type(CriticalLine) function critical_line(model, a0, z0, zi, dS0) use yaeos__math_continuation, only: continuation use yaeos__math, only: solve_system + use yaeos__equilibria_equilibrium_state, only: EquilibriumState class(ArModel), intent(in) :: model real(pr), intent(in) :: a0 real(pr), intent(in) :: z0(:) @@ -29,18 +31,23 @@ type(CriticalLine) function critical_line(model, a0, z0, zi, dS0) real(pr), allocatable :: XS(:, :) real(pr) :: X0(3), T, P, V, z(size(z0)) + type(EquilibriumState) :: first + integer :: i, j, ns, last_point - u = z0 + ! u = z0 + ! u = zi + u = (z0 + zi)/sum(z0 + zi) + z = a0*zi + (1-a0)*z0 - T = sum(model%components%Tc * z0) - P = sum(model%components%Pc * z0) - call model%volume(n=z0, P=P, T=T, V=V, root_type="stable") + T = sum(model%components%Tc * z) + P = sum(model%components%Pc * z) + call model%volume(n=z, P=P, T=T, V=V, root_type="stable") X0 = [a0, v, T] X0(2:3) = log(X0(2:3)) ns = 1 - call solve_cp(model, X0, ns, X0(ns), z0, zi, u) + ! call solve_cp(model, X0, ns, X0(ns), z0, zi, u) u = [(1, i=1, size(z0))] u = u/sum(u) @@ -108,13 +115,17 @@ subroutine update_specification(X, ns, S, dS, dXdS, iterations) real(pr), intent(in out) :: dXdS(:) !! \(\frac{dX}{dS}\) integer, intent(in) :: iterations !! Iterations needed to converge point - integer :: other(2) = [2,3] - ns = maxloc(abs(dXdS), dim=1) dS = dXdS(ns)*dS dXdS = dXdS/dXdS(ns) - end subroutine update_specification + if (exp(X(2)) < 0.1) then + ! If the volume is too small, reduce the step size + do while(abs(dXdS(2)*dS) > abs(0.01 * X(2))) + dS = dS/2 + end do + end if + end subroutine update_specification end function critical_line real(pr) function lambda1(model, X, s, z0, zi, u, u_new) @@ -150,7 +161,7 @@ real(pr) function lambda1(model, X, s, z0, zi, u, u_new) M(i, j) = sqrt(z(i)*z(j)) * dlnf_dn(i, j) end do end do - + call eigh(A=M, lambda=lambda, vectors=vectors, err=stat) if (.not. stat%ok()) write(*, *) stat%print_msg() lambda1 = minval(lambda) @@ -209,22 +220,81 @@ function df_critical(model, X, ns, S, z0, zi, u) ! df_critical(3, ns) = 1 end function df_critical - subroutine solve_cp(model, X, ns, S, z0, zi, u) + type(EquilibriumState) function critical_point(& + model, z0, zi, spec, & + max_iters, u0, V0, T0, a0 & + ) use yaeos__math, only: solve_system class(ArModel), intent(in) :: model - real(pr), intent(inout) :: X(3) - integer, intent(in) :: ns - real(pr), intent(in) :: S real(pr), intent(in) :: z0(:) real(pr), intent(in) :: zi(:) - real(pr), intent(in out) :: u(:) + character(len=*), intent(in) :: spec + integer, intent(in) :: max_iters + + real(pr), optional, intent(in) :: V0 + real(pr), optional, intent(in) :: T0 + real(pr), optional, intent(in) :: a0 - real(pr) :: F(3), df(3, 3), dX(3) + real(pr), optional, intent(in) :: u0(:) + + real(pr) :: X(3) + integer :: ns + real(pr) :: S + real(pr) :: F(3), df(3, 3), dX(3), u(size(z0)) + real(pr) :: V, T, P real(pr) :: z(size(z0)), u_new(size(z0)), l integer :: i - do i=1,250 + ! ======================================================================== + ! Handle the input + ! ------------------------------------------------------------------------ + if (present(a0)) then + X(1) = a0 + else + X(1) = 0.0_pr + end if + + z = X(1)*zi + (1-X(1))*z0 + + if (present(u0)) then + u = u0 + else + u = (z0 + zi)/sum(z0 + zi) + end if + + if (present(T0)) then + X(3) = log(T0) + else + X(3) = log(sum(model%components%Tc * z)) + end if + + if (present(V0)) then + X(2) = log(V0) + else + call model%volume(& + n=z, P=sum(model%components%Pc * z), T=exp(X(3)), V=X(2), root_type="stable") + X(2) = log(X(2)) + end if + + select case (spec) + case("z") + ns = 1 + S = X(1) + case("V") + ns = 2 + S = X(2) + case("T") + ns = 3 + S = X(3) + case default + stop "Invalid specification" + end select + + ! ======================================================================== + ! Solve the system of equations + ! ------------------------------------------------------------------------ + do i=1,max_iters F = F_critical(model, X, ns, S, z0, zi, u) df = df_critical(model, X, ns, S, z0, zi, u) dX = solve_system(A=df, b=-F) @@ -238,7 +308,17 @@ subroutine solve_cp(model, X, ns, S, z0, zi, u) X = X + dX l = lambda1(model, X, 0.0_pr, z0, zi, u, u_new) u = u_new + + critical_point%iters = i end do - end subroutine solve_cp -end module yaeos__equilibria_critical \ No newline at end of file + critical_point%x = z + critical_point%y = z + critical_point%Vx = exp(X(2)) + critical_point%Vy = exp(X(2)) + critical_point%T = exp(X(3)) + call model%pressure(n=z, V=critical_point%Vx, T=critical_point%T, P=critical_point%P) + critical_point%kind = "critical" + + end function critical_point +end module yaeos__equilibria_critical diff --git a/src/equilibria/equilibria.f90 b/src/equilibria/equilibria.f90 index f686d73b1..ecedb5471 100644 --- a/src/equilibria/equilibria.f90 +++ b/src/equilibria/equilibria.f90 @@ -15,7 +15,8 @@ module yaeos__equilibria saturation_pressure, saturation_temperature ! Critical points - use yaeos__equilibria_critical, only: critical_line, CriticalLine, solve_cp + use yaeos__equilibria_critical, only: & + critical_line, CriticalLine, critical_point ! Phase equilibria boundaries use yaeos__equilibria_boundaries_phase_envelopes_pt, only:& From a710aea7708b70cbde860768a90b9380fdd19ff6 Mon Sep 17 00:00:00 2001 From: "Federico E. Benelli" Date: Tue, 29 Oct 2024 16:36:44 -0300 Subject: [PATCH 24/40] test --- test/test_critical.f90 | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/test/test_critical.f90 b/test/test_critical.f90 index 5272984c0..2af97852d 100644 --- a/test/test_critical.f90 +++ b/test/test_critical.f90 @@ -1,13 +1,12 @@ program main !! Test the calculation of critical lines use yaeos - use yaeos__equilibria_critical, only: CriticalLine, critical_line, solve_cp implicit none integer, parameter :: nc=12 type(CubicEoS) :: model - type(EquilibriumState) :: sat + type(EquilibriumState) :: sat, crit type(PTEnvel2) :: env type(CriticalLine) :: cl @@ -18,11 +17,8 @@ program main real(pr) :: zi(nc) real(pr) :: u(nc) - integer :: ns - real(pr) :: S - real(pr) :: X(3) - integer :: i, j + integer :: i model = get_model() @@ -41,13 +37,9 @@ program main ! Solve a critical point X = [a, log(V), log(T)] - u = [(1, i=1, size(z0))] - u = u/sum(u) - call solve_cp(model, X, 1, X(1), z0, zi, u) - V = exp(X(2)); T = exp(X(3)) - call model%pressure(z, V=V, T=T, P=P) + crit = critical_point(model, z0, zi, spec="z", max_iters=300, a0=a) - if (sum([T, P] - [env%cps(1)%T, env%cps(1)%P])**2 > 1e-2) then + if (sum([crit%T, crit%P] - [env%cps(1)%T, env%cps(1)%P])**2 > 1e-2) then print *, "Critical point failed" stop 1 end if From 778ada713f009d067875b225364e0d45b4740cf2 Mon Sep 17 00:00:00 2001 From: "Federico E. Benelli" Date: Tue, 29 Oct 2024 16:37:01 -0300 Subject: [PATCH 25/40] example --- .../source/tutorial/more_calculations.ipynb | 171 ++++++------------ src/equilibria/critical.f90 | 1 + 2 files changed, 61 insertions(+), 111 deletions(-) diff --git a/python/docs/source/tutorial/more_calculations.ipynb b/python/docs/source/tutorial/more_calculations.ipynb index 41a62e14e..caa6a09d7 100644 --- a/python/docs/source/tutorial/more_calculations.ipynb +++ b/python/docs/source/tutorial/more_calculations.ipynb @@ -284,112 +284,6 @@ "execution_count": 7, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(1e-05, 0.99999)\n", - "(0.010110808080808081, 0.9898891919191919)\n", - "(0.020211616161616163, 0.9797883838383838)\n", - "(0.030312424242424245, 0.9696875757575758)\n", - "(0.04041323232323233, 0.9595867676767676)\n", - "(0.050514040404040415, 0.9494859595959596)\n", - "(0.060614848484848494, 0.9393851515151515)\n", - "(0.07071565656565656, 0.9292843434343434)\n", - "(0.08081646464646465, 0.9191835353535354)\n", - "(0.09091727272727274, 0.9090827272727273)\n", - "(0.10101808080808082, 0.8989819191919192)\n", - "(0.11111888888888889, 0.8888811111111111)\n", - "(0.12121969696969698, 0.878780303030303)\n", - "(0.13132050505050508, 0.8686794949494949)\n", - "(0.14142131313131315, 0.8585786868686869)\n", - "(0.15152212121212125, 0.8484778787878787)\n", - "(0.16162292929292932, 0.8383770707070707)\n", - "(0.1717237373737374, 0.8282762626262626)\n", - "(0.1818245454545455, 0.8181754545454545)\n", - "(0.19192535353535356, 0.8080746464646464)\n", - "(0.20202616161616166, 0.7979738383838384)\n", - "(0.21212696969696973, 0.7878730303030302)\n", - "(0.2222277777777778, 0.7777722222222222)\n", - "(0.2323285858585859, 0.767671414141414)\n", - "(0.24242939393939397, 0.757570606060606)\n", - "(0.25253020202020204, 0.747469797979798)\n", - "(0.26263101010101014, 0.7373689898989899)\n", - "(0.27273181818181824, 0.7272681818181818)\n", - "(0.2828326262626263, 0.7171673737373737)\n", - "(0.2929334343434344, 0.7070665656565656)\n", - "(0.3030342424242425, 0.6969657575757575)\n", - "(0.3131350505050505, 0.6868649494949495)\n", - "(0.3232358585858586, 0.6767641414141414)\n", - "(0.3333366666666667, 0.6666633333333333)\n", - "(0.34343747474747477, 0.6565625252525252)\n", - "(0.35353828282828287, 0.6464617171717171)\n", - "(0.36363909090909097, 0.636360909090909)\n", - "(0.373739898989899, 0.626260101010101)\n", - "(0.3838407070707071, 0.616159292929293)\n", - "(0.3939415151515152, 0.6060584848484848)\n", - "(0.4040423232323233, 0.5959576767676766)\n", - "(0.41414313131313135, 0.5858568686868686)\n", - "(0.42424393939393945, 0.5757560606060605)\n", - "(0.43434474747474755, 0.5656552525252525)\n", - "(0.4444455555555556, 0.5555544444444445)\n", - "(0.4545463636363637, 0.5454536363636363)\n", - "(0.4646471717171718, 0.5353528282828282)\n", - "(0.47474797979797984, 0.5252520202020201)\n", - "(0.48484878787878793, 0.5151512121212121)\n", - "(0.49494959595959603, 0.505050404040404)\n", - "(0.505050404040404, 0.494949595959596)\n", - "(0.5151512121212122, 0.4848487878787878)\n", - "(0.5252520202020202, 0.4747479797979798)\n", - "(0.5353528282828283, 0.46464717171717174)\n", - "(0.5454536363636364, 0.4545463636363636)\n", - "(0.5555544444444445, 0.44444555555555554)\n", - "(0.5656552525252525, 0.4343447474747475)\n", - "(0.5757560606060607, 0.42424393939393934)\n", - "(0.5858568686868687, 0.4141431313131313)\n", - "(0.5959576767676767, 0.40404232323232325)\n", - "(0.6060584848484849, 0.3939415151515151)\n", - "(0.616159292929293, 0.38384070707070705)\n", - "(0.626260101010101, 0.373739898989899)\n", - "(0.6363609090909091, 0.36363909090909086)\n", - "(0.6464617171717172, 0.3535382828282828)\n", - "(0.6565625252525252, 0.34343747474747477)\n", - "(0.6666633333333334, 0.3333366666666666)\n", - "(0.6767641414141414, 0.32323585858585857)\n", - "(0.6868649494949495, 0.3131350505050505)\n", - "(0.6969657575757576, 0.3030342424242424)\n", - "(0.7070665656565657, 0.29293343434343433)\n", - "(0.7171673737373737, 0.2828326262626263)\n", - "(0.7272681818181819, 0.27273181818181813)\n", - "(0.7373689898989899, 0.2626310101010101)\n", - "(0.747469797979798, 0.25253020202020204)\n", - "(0.7575706060606061, 0.2424293939393939)\n", - "(0.7676714141414142, 0.23232858585858585)\n", - "(0.7777722222222222, 0.2222277777777778)\n", - "(0.7878730303030304, 0.21212696969696965)\n", - "(0.7979738383838384, 0.2020261616161616)\n", - "(0.8080746464646466, 0.19192535353535345)\n", - "(0.8181754545454546, 0.1818245454545454)\n", - "(0.8282762626262626, 0.17172373737373736)\n", - "(0.8383770707070708, 0.1616229292929292)\n", - "(0.8484778787878788, 0.15152212121212116)\n", - "(0.8585786868686869, 0.14142131313131312)\n", - "(0.868679494949495, 0.13132050505050497)\n", - "(0.8787803030303031, 0.12121969696969692)\n", - "(0.8888811111111111, 0.11111888888888888)\n", - "(0.8989819191919193, 0.10101808080808072)\n", - "(0.9090827272727273, 0.09091727272727268)\n", - "(0.9191835353535354, 0.08081646464646464)\n", - "(0.9292843434343435, 0.07071565656565648)\n", - "(0.9393851515151516, 0.06061484848484844)\n", - "(0.9494859595959596, 0.050514040404040395)\n", - "(0.9595867676767678, 0.04041323232323224)\n", - "(0.9696875757575758, 0.030312424242424196)\n", - "(0.9797883838383838, 0.020211616161616153)\n", - "(0.989889191919192, 0.010110808080807998)\n", - "(0.99999, 9.99999999995449e-06)\n" - ] - }, { "data": { "text/plain": [ @@ -603,7 +497,7 @@ "outputs": [], "source": [ "env = model.phase_envelope_pt(\n", - " z=[0.5, 0.5], kind=\"bubble\", max_points=600, t0=100.0, p0=4.0\n", + " z=[0.5, 0.5], kind=\"bubble\", max_points=600, t0=150.0, p0=4.0\n", ")" ] }, @@ -658,7 +552,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -667,13 +561,13 @@ "Text(0, 0.5, 'Pressure [bar]')" ] }, - "execution_count": 12, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHHCAYAAACvJxw8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABTDklEQVR4nO3deVxU5f4H8M+wDZtsiiAKoomigpAghJZooqDeXNJUxDVv5s01tXBL1PKaqYWZS93KfTejNMUQ15RccMkVvSaCC+AGCMr+/P7wx7mOMxwYHRhGP+/Xa146zzznnO85DM7Hc57zjEIIIUBEREREGhnpuwAiIiKi6oxhiYiIiEgGwxIRERGRDIYlIiIiIhkMS0REREQyGJaIiIiIZDAsEREREclgWCIiIiKSwbBEREREJINhiciAuLu7Y8iQIfouw+CVlJTAy8sLs2fPrvJtnz9/HiYmJjh79myVb7siFAoFRo0ape8y9GrTpk1wcHBATk5OlW+7X79+6NOnT5Vvl+QxLFG1t2LFCigUCulhbm6Oxo0bY9SoUUhPTwfwOEQ82aesx4oVK/S7My+J7OxszJw5Ez4+PrC2toaFhQW8vLwQGRmJmzdvqvXfvn07wsLCULNmTennO3HiRNy9e1et79atW9G3b180bNgQlpaWaNKkCSZMmIDMzMwK17d+/XqkpqaqhYL8/HxERkbCxcUFFhYWCAwMRFxcXIXWOWPGDI3vOXNzc5V+zZo1Q9euXTF9+vQK12vo/v3vfyMmJkbfZVRIcXExoqKiMHr0aFhbW6u8dvjwYbz++uuwtLSEs7MzxowZU+FAVda/SZ9//rlKv8jISPz00084ffq0zvaJnp+JvgsgqqhZs2ahQYMGyMvLwx9//IGlS5dix44dOHv2LKKjo1X+0dqxYwfWr1+Pr776CrVq1ZLaW7durY/SXyp///03QkJCkJKSgnfeeQfDhw+HmZkZ/vrrL/zwww/4+eefcenSJan/xIkTsWDBAvj4+CAyMhIODg44ceIEvvnmG2zYsAHx8fFo0qSJ1H/48OFwcXHBgAED4ObmhjNnzuCbb77Bjh07cOLECVhYWJRb47x589CvXz/Y2tqqtA8ZMgRbtmzBuHHj4OHhgRUrVqBLly7Yu3cvXn/99Qrt/9KlS1U+ZI2NjdX6jBgxAl26dMGVK1fwyiuvVGi9huzf//43evfujR49eui7lHJt27YNSUlJGD58uEr7qVOn0KFDBzRt2hRffvklrl+/jvnz5+Py5cvYuXNnhdbdsWNHDBo0SKXt1VdfVXvu7++PBQsWYNWqVc+3M6Q7gqiaW758uQAgjh07ptI+fvx4AUCsW7dObZl58+YJAOLq1atVVGXVqF+/vhg8eLC+yyhTYWGh8PHxEZaWluLgwYNqr2dlZYkpU6ZIz9etWycAiL59+4qioiKVvkeOHBGWlpbC29tbFBYWSu179+5VW+/KlSsFAPGf//yn3BpPnDghAIjdu3erbQ+AmDdvntT26NEj8corr4igoKBy1xsVFSUAiNu3b5fbt6CgQNjb24tPPvmk3L5VDYAYOXKkTtdpZWVVrd+3T+rWrZt4/fXX1do7d+4s6tSpI7KysqS2//znPwKA2LVrV7nr1ea4zp8/X1hZWYkHDx5UvHCqVLwMRwbrzTffBABcvXpVZ+vcuXMn3njjDVhZWaFGjRro2rUrzp07p9JnyJAhsLa2xo0bN9CjRw9YW1vD0dEREydORHFxMQCgsLAQDg4OGDp0qNo2srOzYW5ujokTJ0pt+fn5iIqKQqNGjaBUKuHq6oqPP/4Y+fn55db8999/45133oGDgwMsLS3x2muv4bffflPps2/fPigUCmzcuBFTpkyBs7MzrKys0K1bN6Smpqqt88iRIwgLC4OtrS0sLS0RHByMQ4cOlVtL6eWDqVOnajwTY2NjozJOaObMmbC3t8d3332ndgYmICAAkZGROHPmDLZs2SK1t2vXTm29PXv2BABcuHCh3BpjYmJgZmaGtm3bqrRv2bIFxsbGKmcUzM3NMWzYMCQkJGg8TpoIIZCdnQ0hRJl9TE1N0a5dO/zyyy8VWmdFlV6yPnToEMaPHw9HR0dYWVmhZ8+euH37tlbrWrt2LZo0aQJzc3P4+fnhwIEDKq8PGTIE7u7uasuVXo4spVAokJubi5UrV0qXnkrH3V27dg0ffPABmjRpAgsLC9SsWRPvvPMOkpOTn2u/KvJ7rEleXh5iY2MREhKi0p6dnY24uDgMGDAANjY2UvugQYNgbW2NTZs2lbvuUo8ePUJeXp5sn44dOyI3N7fCl4Cp8jEskcG6cuUKAKBmzZo6Wd/q1avRtWtXWFtbY+7cufjkk09w/vx5vP7662r/eBcXFyM0NBQ1a9bE/PnzERwcjAULFuC7774D8PjDsGfPnoiJiUFBQYHKsjExMcjPz0e/fv0APB5s3K1bN8yfPx9vvfUWFi1ahB49euCrr75C3759ZWtOT09H69atsWvXLnzwwQeYPXs28vLy0K1bN/z8889q/WfPno3ffvsNkZGRGDNmDOLi4hASEoJHjx5Jffbs2YO2bdsiOzsbUVFR+Pe//43MzEy8+eabOHr0qGw9v/76KwBg4MCBsv0A4PLly0hKSkL37t1VPoCeVHrJYvv27bLrSktLAwCVS65lOXz4MLy8vGBqaqrSfvLkSTRu3FitloCAAACPL8NURMOGDWFra4saNWpgwIAB0ri6p/n5+eHs2bPIzs6u0Hq1MXr0aJw+fRpRUVH417/+hW3btmk1aHv//v0YN24cBgwYgFmzZuHu3bsICwt7pkHpq1evhlKpxBtvvIHVq1dj9erVeP/99wEAx44dw+HDh9GvXz98/fXXGDFiBOLj49GuXTs8fPjwmfZLm9/jpyUmJqKgoAAtW7ZUaT9z5gyKiorg7++v0m5mZgZfX1+cPHmyQsdixYoVsLKygoWFBZo1a4Z169Zp7NesWTNYWFhU6D8oVEX0fWqLqDyll+F2794tbt++LVJTU8WGDRtEzZo1hYWFhbh+/braMtpehnvw4IGws7MT7733nkp7WlqasLW1VWkfPHiwACBmzZql0vfVV18Vfn5+0vNdu3YJAGLbtm0q/bp06SIaNmwoPV+9erUwMjJSu2y1bNkyAUAcOnRIanv6Mty4ceMEAJVlHzx4IBo0aCDc3d1FcXGxEOLxpSsAom7duiI7O1vqu2nTJgFALFy4UAghRElJifDw8BChoaGipKRE6vfw4UPRoEED0bFjxzKO4P+Oga2trWyfUjExMQKA+Oqrr2T72djYiJYtW8r2GTZsmDA2NhaXLl0qd7v16tUTvXr1Umtv3ry5ePPNN9Xaz507JwCIZcuWya43OjpajBo1Sqxdu1Zs2bJFjB07VpiYmAgPDw+VSzelSi9BHjlypNyaK6r0dyUkJETl5/fhhx8KY2NjkZmZWe46AAgA4vjx41LbtWvXhLm5uejZs6fUNnjwYFG/fn215UsvRz6prMtwDx8+VGtLSEgQAMSqVau03i9tfo81+f777wUAcebMGZX2zZs3CwDiwIEDasu88847wtnZWXa9QgjRunVrER0dLX755RexdOlS4eXlJQCIJUuWaOzfuHFj0blz53LXS1WDZ5bIYISEhMDR0RGurq7o168frK2t8fPPP6Nu3brPve64uDhkZmYiPDwcd+7ckR7GxsYIDAzE3r171ZYZMWKEyvM33ngDf//9t/T8zTffRK1atbBx40ap7f79+4iLi1M5Y7R582Y0bdoUnp6eKtsuvcyoadulduzYgYCAAJVLXtbW1hg+fDiSk5Nx/vx5lf6DBg1CjRo1pOe9e/dGnTp1sGPHDgCPz55cvnwZ/fv3x927d6VacnNz0aFDBxw4cAAlJSVl1pOdna2yfjkPHjwAgHL716hRQ/bsy7p16/DDDz9gwoQJ8PDwKHe7d+/ehb29vVr7o0ePoFQq1dpL72Z78uybJmPHjsWiRYvQv39/9OrVC9HR0Vi5ciUuX76MJUuWqPUvreHOnTvl1qyt4cOHq1wKe+ONN1BcXIxr165VaPmgoCD4+flJz93c3NC9e3fs2rVLutSsC08Oxi8sLMTdu3fRqFEj2NnZ4cSJE2r9y9uvZ/k9flLp3ZdPvz9Kf/ZlvT/Ke28AwKFDhzB27Fh069YNI0aMQGJiIry8vDBlyhSNy9vb21fKe4OeDe+GI4OxePFiNG7cGCYmJnByckKTJk1gZKSbvH/58mUA/xsH9bSnL82Ym5vD0dFRpc3e3h7379+XnpuYmKBXr15Yt24d8vPzoVQqsXXrVhQWFqqEpcuXL+PChQtq6yuVkZFRZt3Xrl1DYGCgWnvTpk2l1728vKT2p8OEQqFAo0aNpMsTpcdh8ODBZW4zKytLY9gAHh+nJwOjnNKQVBqayvLgwQPUrl1b42sHDx7EsGHDEBoaqtWcSULDeCILCwuNY8RKx5dU5C67p/Xv3x8TJkzA7t27MWnSJI01PPnh/7SCggLcu3dPpc3R0VHjHXZPcnNzU3le+vMqfX9mZWWpfECbmZnBwcFBeq4pdDZu3BgPHz7E7du34ezsLLv9inr06BHmzJmD5cuX48aNGyo/l6ysLLX+5e2Xtr/HZXn6/VH6sy/r/fEs7w0zMzOMGjVKCk5Pj/ETQsi+N6hqMSyRwQgICFAbM6ArpWdLVq9erfGDwMRE9VelvA+rUv369cO3336LnTt3okePHti0aRM8PT3h4+Ojsm1vb298+eWXGtfh6upa0d14bqXHYd68efD19dXY5+m5Z57k6emJkydPIjU1tdy6SwPdX3/9VWafa9euITs7G82aNVN77fTp0+jWrRu8vLywZcsWtZ9RWWrWrKkSakvVqVMHN27cUGu/desWAMDFxaVC63+aq6urWuAB/vcBLzfO6vDhw2jfvr1K29WrVzUOrH5SWe/P0hAwduxYrFy5UmoPDg7Gvn37ZNf5tLI+yLU58zR69GgsX74c48aNQ1BQEGxtbaFQKNCvXz+NZzDL2y9tf4+fVjr+8f79+6hXr57UXqdOHQD/ey886datW8/13gBQ5vujImdKqWowLBEB0lw3tWvXVrsT5nm0bdsWderUwcaNG/H6669jz549mDp1qtq2T58+jQ4dOmj9P8n69esjKSlJrf3ixYvS608q/Z93KSEE/vvf/6JFixZSLcDj/4E/y3F46623sH79eqxZswaTJ0+W7du4cWM0btwYMTExWLhwocbLcaXzzPzjH/9Qab9y5QrCwsJQu3Zt7NixQzbAPc3T01PjHZS+vr7Yu3cvsrOzVc5AHDlyRHpdW0IIJCcnq82lAzwOPUZGRmjcuHGZy/v4+KjdEaWLszoff/wxBgwYID1/+kzh0+8TALh06RIsLS2lM6D29vYaJwLVdKmvrPf1li1bMHjwYCxYsEBqy8vL02qC0Sc97++xp6cngMc/G29vb6ndy8sLJiYmOH78uMrs2gUFBTh16tQzz7hdehb26bPKRUVFSE1NRbdu3Z5pvaR7HLNEBCA0NBQ2Njb497//jcLCQrXXtb3tupSRkRF69+6Nbdu2YfXq1SgqKlK7w61Pnz64ceMG/vOf/6gt/+jRI+Tm5pa5/i5duuDo0aNISEiQ2nJzc/Hdd9/B3d1d7YzMqlWrVC57bdmyBbdu3ULnzp0BPL5D65VXXsH8+fM1zkxc3nHo3bs3vL29MXv2bJWaSj148EAlLE6fPh3379/HiBEj1M5IJCYmYu7cufDy8kKvXr2k9rS0NHTq1AlGRkbYtWtXmZcvyxIUFISzZ8+qXVLp3bs3iouLpTsagceXXZYvX47AwECVM2UpKSlSIC2l6dgsXboUt2/fRlhYmNpriYmJaN68udrEmE+yt7dHSEiIyuPpGcGfRbNmzVTW+eT4JABISEhQGTOUmpqKX375BZ06dZLO7rzyyivIyspSOTN469YtjXdhWllZaQxAxsbGape8Fi1a9Mzjop7399jPzw9mZmY4fvy4SrutrS1CQkKwZs0ald+f1atXIycnB++8847U9vDhQ1y8eFFlvJGm7T548ADR0dGoVauW2vE/f/488vLyOIluNcIzS0R4fCZl6dKlGDhwIFq2bIl+/frB0dERKSkp+O2339CmTRt88803z7Tuvn37YtGiRYiKioK3t7d0+anUwIEDsWnTJowYMQJ79+5FmzZtUFxcjIsXL2LTpk3YtWtXmZcfJ02ahPXr16Nz584YM2YMHBwcsHLlSly9ehU//fST2pguBwcHvP766xg6dCjS09MRHR2NRo0a4b333gPwONx9//336Ny5M5o3b46hQ4eibt26uHHjBvbu3QsbGxts27atzH01NTXF1q1bERISgrZt26JPnz5o06YNTE1Nce7cOaxbtw729vbS+KKIiAgcO3YMCxcuxPnz5xEREQF7e3ucOHECP/74I2rWrIktW7ao3OYfFhaGv//+Gx9//DH++OMP/PHHH9JrTk5O6Nixo+zPo3v37vj000+xf/9+dOrUSWoPDAzEO++8g8mTJyMjIwONGjXCypUrkZycjB9++EFlHYMGDcL+/ftVPujr16+Pvn37wtvbG+bm5vjjjz+wYcMG+Pr6SrfKlyosLMT+/fvxwQcfyNaqL15eXggNDcWYMWOgVCqlAeozZ86U+vTr1w+RkZHo2bMnxowZg4cPH2Lp0qVo3Lix2uBsPz8/7N69G19++SVcXFzQoEEDBAYG4h//+AdWr14NW1tbNGvWDAkJCdi9e/czTwfyvL/H5ubm6NSpE3bv3o1Zs2apvDZ79my0bt0awcHBGD58OK5fv44FCxagU6dOKmH46NGjaN++PaKiojBjxgwAj8dbxsTE4K233oKbmxtu3bqFH3/8ESkpKVi9ejXMzMxUthUXFwdLS8ty38tUhfR0Fx5RhZU1g7ecZ53Be+/evSI0NFTY2toKc3Nz8corr4ghQ4ao3EY9ePBgYWVlpbasplumhXh8O76rq6sAID777DON2y0oKBBz584VzZs3F0qlUtjb2ws/Pz8xc+ZMldvONc3gfeXKFdG7d29hZ2cnzM3NRUBAgNi+fbvafgEQ69evF5MnTxa1a9cWFhYWomvXruLatWtq9Zw8eVK8/fbbombNmkKpVIr69euLPn36iPj4eNnjV+r+/fti+vTpwtvbW1haWgpzc3Ph5eUlJk+eLG7duqXWPyYmRnTs2FHY29sLpVIpGjVqJCZMmKBxNmz8/63tmh7BwcEVqq9FixZi2LBhau2PHj0SEydOFM7OzkKpVIpWrVqJ2NhYtX7BwcFqP+t//vOfolmzZqJGjRrC1NRUNGrUSERGRqpM1VBq586dAoC4fPlyheqtqLJ+V0p//ppmP38a/n+m6TVr1ggPDw+hVCrFq6++qnHZ33//XXh5eQkzMzPRpEkTsWbNGo2/BxcvXhRt27YVFhYWAoD0Hr5//74YOnSoqFWrlrC2thahoaHi4sWLau9zbferIr/HZdm6datQKBQiJSVF7bWDBw+K1q1bC3Nzc+Ho6ChGjhyp9vMtrSkqKkrlOHXs2FE4OzsLU1NTYWdnJzp16lTm71NgYKAYMGBAubVS1VEIITPNLBG9EPbt24f27dtj8+bN6N27t77L0bvVq1dj5MiRSElJgZ2dXZVvv0ePHlAoFBovWZF+FRcXo1mzZujTpw8+/fTTKt/+qVOn0LJlS5w4ceKZxslR5eCYJSJ66URERMDNzQ2LFy+u8m1fuHAB27dv18sHMZXP2NgYs2bNwuLFizWO26tsn3/+OXr37s2gVM3wzBLRS4BnloiInh3PLBERERHJ4JklIiIiIhk8s0REREQkg2GJiIiISAYnpdSBkpIS3Lx5EzVq1OAXHxIRERkIIQQePHgAFxcX2S9mZ1jSgZs3b1bpl50SERGR7qSmpqp8efLTGJZ0oPQLQFNTU1W+gJOIiIiqr+zsbLi6umr8Iu8nMSzpQOmlNxsbG4YlIiIiA1PeEBoO8CYiIiKSwbBEREREJINhiYiIiEgGxywREZFBKy4uRmFhob7LoGrI1NQUxsbGz70ehiUiIjJIQgikpaUhMzNT36VQNWZnZwdnZ+fnmgeRYYmIiAxSaVCqXbs2LC0tOSkwqRBC4OHDh8jIyAAA1KlT55nXxbBEREQGp7i4WApKNWvW1Hc5VE1ZWFgAADIyMlC7du1nviTHAd5ERGRwSscoWVpa6rkSqu5K3yPPM66NYYmIiAwWL71ReXTxHmFYIiIiIpLBsERERPSSmTFjBnx9ffVdhsFgWCIiIqpCQ4YMgUKhUHuEhYXpuzQqA++GIyIiqmJhYWFYvny5SptSqdRTNVQenlkiIiKqYkqlEs7OzioPe3t7AI8HJH///ffo2bMnLC0t4eHhgV9//RUAUFJSgnr16mHp0qUq6zt58iSMjIxw7do1AEBmZib++c9/wtHRETY2NnjzzTdx+vTpMuspKSnBrFmzUK9ePSiVSvj6+iI2NlZ6PTk5GQqFAhs2bEDr1q1hbm4OLy8v7N+/X2U9Z8+eRefOnWFtbQ0nJycMHDgQd+7c0ckx0yeGJSIiMnhCCDwsKNLLQwih8/2ZOXMm+vTpg7/++gtdunRBREQE7t27ByMjI4SHh2PdunUq/deuXYs2bdqgfv36AIB33nkHGRkZ2LlzJxITE9GyZUt06NAB9+7d07i9hQsXYsGCBZg/fz7++usvhIaGolu3brh8+bJKv48++ggTJkzAyZMnERQUhLfeegt3794F8Digvfnmm3j11Vdx/PhxxMbGIj09HX369NH58alqClEZP+WXTHZ2NmxtbZGVlQUbGxt9l0NE9MLLy8vD1atX0aBBA5ibm+NhQRGaTd+ll1rOzwqFpVnFR7UMGTIEa9asgbm5uUr7lClTMGXKFCgUCkybNg2ffvopACA3NxfW1tbYuXMnwsLCcOrUKbRs2RLJyclwc3NDSUkJ3NzcMG3aNIwYMQJ//PEHunbtioyMDJVLe40aNcLHH3+M4cOHY8aMGYiJicGpU6cAAHXr1sXIkSMxZcoUqX9AQABatWqFxYsXIzk5GQ0aNMDnn3+OyMhIAEBRUREaNGiA0aNH4+OPP8Znn32GgwcPYteu//0crl+/DldXVyQlJaFx48ZaH1tdePq98qSKfn5zzBIREVEVa9++vdqlNAcHB+nvLVq0kP5uZWUFGxsb6Ws7fH190bRpU6xbtw6TJk3C/v37kZGRgXfeeQcAcPr0aeTk5KjNbP7o0SNcuXJFrZbs7GzcvHkTbdq0UWlv06aN2qW7oKAg6e8mJibw9/fHhQsXpO3u3bsX1tbWatu4cuWK3sKSLjAsERGRwbMwNcb5WaF627a2rKys0KhRozJfNzU1VXmuUChQUlIiPY+IiJDC0rp16xAWFiaFo5ycHNSpUwf79u1TW6+dnZ3WtVZUTk4O3nrrLcydO1fttef5XrbqgGGJiIgMnkKh0OpSmKHr378/pk2bhsTERGzZsgXLli2TXmvZsiXS0tJgYmICd3f3ctdlY2MDFxcXHDp0CMHBwVL7oUOHEBAQoNL3zz//RNu2bQE8vgyXmJiIUaNGSdv96aef4O7uDhOTF+tnwQHeREREVSw/Px9paWkqD23uGnN3d0fr1q0xbNgwFBcXo1u3btJrISEhCAoKQo8ePfD7778jOTkZhw8fxtSpU3H8+HGN6/voo48wd+5cbNy4EUlJSZg0aRJOnTqFsWPHqvRbvHgxfv75Z1y8eBEjR47E/fv38e677wIARo4ciXv37iE8PBzHjh3DlStXsGvXLgwdOhTFxcXPcJSqjxcr+hERERmA2NhYtUtTTZo0wcWLFyu8joiICHzwwQcYNGgQLCwspHaFQoEdO3Zg6tSpGDp0KG7fvg1nZ2e0bdsWTk5OGtc1ZswYZGVlYcKECcjIyECzZs3w66+/wsPDQ6Xf559/js8//xynTp1Co0aN8Ouvv6JWrVoAIJ2dioyMRKdOnZCfn4/69esjLCwMRkaGfW6Gd8PpAO+GIyKqWnJ3OJHuld4Nd/LkSYP7mhRd3A1n2FGPiIiIqJIxLBERERHJ4JglIiIikuXu7l4pM5UbCp5ZIiIiIpLBsEREREQkg2GJiIiISAbDEhEREZEMhiUiIiIiGQxLRERERDIYloiIiAzAvn37oFAokJmZKdvP3d0d0dHROttuu3btMG7cOJ2tT5Pk5GQoFAqcOnWqUrfzrBiWiIiIqlBaWhpGjx6Nhg0bQqlUwtXVFW+99Rbi4+Nll2vdujVu3boFW1tbAMCKFStgZ2en1u/YsWMYPnx4ZZReaVxdXXHr1i14eXlVeJkZM2ZU2VevcFJKIiJ6+cyYARgbA598ov7ap58CxcWP++hYcnIy2rRpAzs7O8ybNw/e3t4oLCzErl27MHLkyDK/SLewsBBmZmZwdnYudxuOjo66LrvSGRsbV2jf9IVnloiI6OVjbAxMn/44GD3p008ftxsbV8pmP/jgAygUChw9ehS9evVC48aN0bx5c4wfPx5//vmn1E+hUGDp0qXo1q0brKysMHv2bJXLcPv27cPQoUORlZUFhUIBhUKBGf8f7p6+DJeZmYn3338fTk5OMDc3h5eXF7Zv3w4AuHv3LsLDw1G3bl1YWlrC29sb69ev12qfSs/wfPvtt3B1dYWlpSX69OmDrKwsqU9JSQlmzZqFevXqQalUwtfXF7GxsdLrT1+GK93X+Ph4+Pv7w9LSEq1bt0ZSUhKAx2fVZs6cidOnT0v7v2LFCq3q1gbDEhERvXw++QSYNUs1MJUGpVmzNJ9xek737t1DbGwsRo4cCSsrK7XXn76kNmPGDPTs2RNnzpzBu+++q/Ja69atER0dDRsbG9y6dQu3bt3CxIkT1dZZUlKCzp0749ChQ1izZg3Onz+Pzz//HMb/Hwbz8vLg5+eH3377DWfPnsXw4cMxcOBAHD16VKt9++9//4tNmzZh27ZtiI2NxcmTJ/HBBx9Iry9cuBALFizA/Pnz8ddffyE0NBTdunXD5cuXZdc7depULFiwAMePH4eJiYl0HPr27YsJEyagefPm0v737dtXq5q1wctwRET0cioNRNOnA599BhQUVFpQAh4HCiEEPD09K9S/f//+GDp0qPT877//lv5uZmYGW1tbKBQK2ctXu3fvxtGjR3HhwgU0btwYANCwYUPp9bp166qErNGjR2PXrl3YtGkTAgICKrxveXl5WLVqFerWrQsAWLRoEbp27YoFCxbA2dkZ8+fPR2RkJPr16wcAmDt3Lvbu3Yvo6GgsXry4zPXOnj0bwcHBAIBJkyaha9euyMvLg4WFBaytrWFiYlIll+94ZomIiF5en3wCmJk9DkpmZpUWlABo/UW0/v7+z73NU6dOoV69elJQelpxcTE+/fRTeHt7w8HBAdbW1ti1axdSUlK02o6bm5sUlAAgKCgIJSUlSEpKQnZ2Nm7evIk2bdqoLNOmTRtcuHBBdr0tWrSQ/l6nTh0AQEZGhla16QLDEhERvbw+/fR/QamgQH0Mkw55eHhAoVCUOYj7aZou1WnLwsJC9vV58+Zh4cKFiIyMxN69e3Hq1CmEhoaioKDgubetC6amptLfFQoFgMeXFqsawxIREb2cnhyjlJ+vPoZJxxwcHBAaGorFixcjNzdX7fXy5k96mpmZGYqLi2X7tGjRAtevX8elS5c0vn7o0CF0794dAwYMgI+PDxo2bFhmXzkpKSm4efOm9PzPP/+EkZERmjRpAhsbG7i4uODQoUNq227WrJnW2ypVkf3XFYYlIiJ6+WgazK1p0LeOLV68GMXFxQgICMBPP/2Ey5cv48KFC/j6668RFBSk1brc3d2Rk5OD+Ph43LlzBw8fPlTrExwcjLZt26JXr16Ii4vD1atXsXPnTulONA8PD8TFxeHw4cO4cOEC3n//faSnp2u9X+bm5hg8eDBOnz6NgwcPYsyYMejTp480nuijjz7C3LlzsXHjRiQlJWHSpEk4deoUxo4dq/W2ntz/q1ev4tSpU7hz5w7y8/OfeV3lYVgiIqKXT3Gx5sHcpYGpks5YNGzYECdOnED79u0xYcIEeHl5oWPHjoiPj8fSpUu1Wlfr1q0xYsQI9O3bF46Ojvjiiy809vvpp5/QqlUrhIeHo1mzZvj444+lMzLTpk1Dy5YtERoainbt2sHZ2Rk9evTQer8aNWqEt99+G126dEGnTp3QokULLFmyRHp9zJgxGD9+PCZMmABvb2/Exsbi119/hYeHh9bbKtWrVy+EhYWhffv2cHR01HrKA20ohLYjzkhNdnY2bG1tkZWVBRsbG32XQ0T0wsvLy8PVq1fRoEEDmJub67ucl9qMGTMQExNTbb+qRO69UtHPb4M7s7R48WK4u7vD3NwcgYGB5c4FsXnzZnh6esLc3Bze3t7YsWNHmX1HjBgBhUKh0+/UISIiIsNmUGFp48aNGD9+PKKionDixAn4+PggNDS0zNsIDx8+jPDwcAwbNgwnT55Ejx490KNHD5w9e1at788//4w///wTLi4ulb0bREREZEAM6jJcYGAgWrVqhW+++QbA49sHXV1dMXr0aEyaNEmtf9++fZGbmytN6w4Ar732Gnx9fbFs2TKp7caNGwgMDMSuXbvQtWtXjBs3TqtvWOZlOCKiqsXLcFRRL9VluIKCAiQmJiIkJERqMzIyQkhICBISEjQuk5CQoNIfAEJDQ1X6l5SUYODAgfjoo4/QvHnzyimeiIiIDJbBfN3JnTt3UFxcDCcnJ5V2JyenMif4SktL09g/LS1Nej537lyYmJhgzJgxFa4lPz9f5RbF7OzsCi9LRES6Y0AXR0hPdPEeMZgzS5UhMTERCxcuxIoVK6SZQStizpw5sLW1lR6urq6VWCURET2tdGZnTXMLET2p9D3y5Gzg2jKYM0u1atWCsbGx2mRZ6enpZX6JnrOzs2z/gwcPIiMjA25ubtLrxcXFmDBhAqKjo5GcnKxxvZMnT8b48eOl59nZ2QxMRERVyNjYGHZ2dtINPpaWllr9p5defEIIPHz4EBkZGbCzs4OxsfEzr8tgwpKZmRn8/PwQHx8vTZhVUlKC+Ph4jBo1SuMyQUFBiI+PVxmsHRcXJ82SOnDgQI1jmgYOHKjyTc9PUyqVUCqVz7dDRET0XEr/46uPL1Ylw2FnZ1fmSZWKMpiwBADjx4/H4MGD4e/vj4CAAERHRyM3N1cKNoMGDULdunUxZ84cAMDYsWMRHByMBQsWoGvXrtiwYQOOHz+O7777DgBQs2ZN1KxZU2UbpqamcHZ2RpMmTap254iISCsKhQJ16tRB7dq1UVhYqO9yqBoyNTV9rjNKpQwqLPXt2xe3b9/G9OnTkZaWBl9fX8TGxkqDuFNSUmBk9L9hWK1bt8a6deswbdo0TJkyBR4eHoiJiYGXl5e+doGIiHTM2NhYJx+IRGUxqHmWqivOs0RERGR4Xrh5loiIiIj0gWGJiIiISAbDEhEREZEMhiUiIiIiGQxLRERERDIYloiIiIhkMCwRERERyWBYIiIiIpLBsEREREQkg2GJiIiISAbDEhEREZEMhiUiIiIiGQxLRERERDIYloiIiIhkMCwRERERyWBYIiIiIpLBsEREREQkg2GJiIiISAbDEhEREZEMhiUiIiIiGQxLRERERDIYloiIiIhkMCwRERERyWBYIiIiIpLBsEREREQkg2GJiIiISAbDEhEREZEMhiUiIiIiGQxLRERERDIYloiIiIhkMCwRERERyWBYIiIiIpLBsEREREQkg2GJiIiISAbDEhEREZEMhiUiIiIiGQxLRERERDIYloiIiIhkMCwRERERyWBYIiIiIpLBsEREREQkg2GJiIiISAbDEhEREZEMhiUiIiIiGQxLRERERDIYloiIiIhkMCwRERERyWBYIiIiIpLBsEREREQkg2GJiIiISAbDEhEREZEMhiUiIiIiGQxLRERERDIYloiIiIhkMCwRERERyWBYIiIiIpJhcGFp8eLFcHd3h7m5OQIDA3H06FHZ/ps3b4anpyfMzc3h7e2NHTt2SK8VFhYiMjIS3t7esLKygouLCwYNGoSbN29W9m4QERGRgTCosLRx40aMHz8eUVFROHHiBHx8fBAaGoqMjAyN/Q8fPozw8HAMGzYMJ0+eRI8ePdCjRw+cPXsWAPDw4UOcOHECn3zyCU6cOIGtW7ciKSkJ3bp1q8rdIiIiompMIYQQ+i6iogIDA9GqVSt88803AICSkhK4urpi9OjRmDRpklr/vn37Ijc3F9u3b5faXnvtNfj6+mLZsmUat3Hs2DEEBATg2rVrcHNzq1Bd2dnZsLW1RVZWFmxsbJ5hz4iIiKiqVfTz22DOLBUUFCAxMREhISFSm5GREUJCQpCQkKBxmYSEBJX+ABAaGlpmfwDIysqCQqGAnZ2dTuomIiIiw2ai7wIq6s6dOyguLoaTk5NKu5OTEy5evKhxmbS0NI3909LSNPbPy8tDZGQkwsPDZRNmfn4+8vPzpefZ2dkV3Q0iIiIyMAZzZqmyFRYWok+fPhBCYOnSpbJ958yZA1tbW+nh6upaRVUSERFRVTOYsFSrVi0YGxsjPT1dpT09PR3Ozs4al3F2dq5Q/9KgdO3aNcTFxZU77mjy5MnIysqSHqmpqc+wR0RERGQIDCYsmZmZwc/PD/Hx8VJbSUkJ4uPjERQUpHGZoKAglf4AEBcXp9K/NChdvnwZu3fvRs2aNcutRalUwsbGRuVBRERELyaDGbMEAOPHj8fgwYPh7++PgIAAREdHIzc3F0OHDgUADBo0CHXr1sWcOXMAAGPHjkVwcDAWLFiArl27YsOGDTh+/Di+++47AI+DUu/evXHixAls374dxcXF0ngmBwcHmJmZ6WdHiYiIqNowqLDUt29f3L59G9OnT0daWhp8fX0RGxsrDeJOSUmBkdH/Tpa1bt0a69atw7Rp0zBlyhR4eHggJiYGXl5eAIAbN27g119/BQD4+vqqbGvv3r1o165dlewXERERVV8GNc9SdcV5loiIiAzPCzfPEhEREZE+MCwRERERyWBYIiIiIpLBsEREREQkg2GJiIiISAbDEhEREZEMhiUiIiIiGQxLRERERDIYloiIiIhkMCwRERERyWBYIiIiIpLBsEREREQkg2GJiIiISAbDEhEREZEMk4p0Gj9+vNYrnjZtGhwcHLRejoiIiKg6UQghRHmdjIyMEBQUBDMzswqt9I8//kBSUhIaNmz43AUaguzsbNja2iIrKws2Njb6LoeIiIgqoKKf3xU6swQAP//8M2rXrl2hvjVq1KjoaomIiIiqtQqNWVq+fDlsbW0rvNJvv/0WTk5Oz1wUERERUXVRoctwpYqLi3Ho0CG0aNECdnZ2lViWYeFlOCIiIsNT0c9vre6GMzY2RqdOnXD//v3nLpCIiIjIEGg9dYCXlxf+/vvvyqiFiIiIqNrROix99tlnmDhxIrZv345bt24hOztb5UFERET0ItFqzBLweBoBaWGFQvq7EAIKhQLFxcW6q85AcMwSERGR4dH51AGl9u7d+1yFERERERkSrcNScHBwZdRBREREVC1pHZZKPXz4ECkpKSgoKFBpb9GixXMXRURERFRdaB2Wbt++jaFDh2Lnzp0aX38ZxywRERHRi0vru+HGjRuHzMxMHDlyBBYWFoiNjcXKlSvh4eGBX3/9tTJqJCIiItIbrc8s7dmzB7/88gv8/f1hZGSE+vXro2PHjrCxscGcOXPQtWvXyqiTiIiISC+0PrOUm5srfaGuvb09bt++DQDw9vbGiRMndFsdERERkZ5pHZaaNGmCpKQkAICPjw++/fZb3LhxA8uWLUOdOnV0XiARERGRPml9GW7s2LG4desWACAqKgphYWFYu3YtzMzMsGLFCl3XR0RERKRXWs/g/bSHDx/i4sWLcHNzQ61atXRVl0HhDN5ERESGp9Jm8H6SEAIWFhZo2bLl86yGiIiIqNrSeswSAPzwww/w8vKCubk5zM3N4eXlhe+//17XtRERERHpndZnlqZPn44vv/wSo0ePRlBQEAAgISEBH374IVJSUjBr1iydF0lERESkL1qPWXJ0dMTXX3+N8PBwlfb169dj9OjRuHPnjk4LNAQcs0RERGR4Kvr5rfVluMLCQvj7+6u1+/n5oaioSNvVEREREVVrWoelgQMHYunSpWrt3333HSIiInRSFBEREVF1UaExS+PHj5f+rlAo8P333+P333/Ha6+9BgA4cuQIUlJSMGjQoMqpkoiIiEhPKhSWTp48qfLcz88PAHDlyhUAQK1atVCrVi2cO3dOx+URERER6VeFwtLevXsruw4iIiKiaumZ5lkiIiIiellUKCy9/fbbyM7OrvBKIyIikJGR8cxFEREREVUXFZpnydjYGJcuXYKjo2O5KxRCwNXVFadOnULDhg11UmR1x3mWiIiIDI9OvxtOCIHGjRvrrDgiIiIiQ1FpA7zr1q2r9TJERERE1U2FwlJwcHBl10FERERULfFuOCIiIiIZDEtEREREMhiWiIiIiGQwLBERERHJeKawVFRUhN27d+Pbb7/FgwcPAAA3b95ETk6OTosjIiIi0rcK3Q33pGvXriEsLAwpKSnIz89Hx44dUaNGDcydOxf5+flYtmxZZdRJREREpBdan1kaO3Ys/P39cf/+fVhYWEjtPXv2RHx8vE6LIyIiItI3rc8sHTx4EIcPH4aZmZlKu7u7O27cuKGzwoiIiIiqA63PLJWUlKC4uFit/fr166hRo4ZOiiIiIiKqLrQOS506dUJ0dLT0XKFQICcnB1FRUejSpYsua9No8eLFcHd3h7m5OQIDA3H06FHZ/ps3b4anpyfMzc3h7e2NHTt2qLwuhMD06dNRp04dWFhYICQkBJcvX67MXSAiIiIDonVYmj9/Pg4dOoRmzZohLy8P/fv3ly7BzZ07tzJqlGzcuBHjx49HVFQUTpw4AR8fH4SGhiIjI0Nj/8OHDyM8PBzDhg3DyZMn0aNHD/To0QNnz56V+nzxxRf4+uuvsWzZMhw5cgRWVlYIDQ1FXl5epe4LERERGQaFEEJou1BRURE2btyI06dPIycnBy1btkRERITKgO/KEBgYiFatWuGbb74B8PiSoKurK0aPHo1Jkyap9e/bty9yc3Oxfft2qe21116Dr68vli1bBiEEXFxcMGHCBEycOBEAkJWVBScnJ6xYsQL9+vWrUF3Z2dmwtbVFVlYWbGxsdLCnREREVNkq+vmt1QDvwsJCeHp6Yvv27YiIiEBERMRzF1pRBQUFSExMxOTJk6U2IyMjhISEICEhQeMyCQkJGD9+vEpbaGgoYmJiAABXr15FWloaQkJCpNdtbW0RGBiIhISEMsNSfn4+8vPzpefZ2dnPultERERUzWl1Gc7U1FRvl6fu3LmD4uJiODk5qbQ7OTkhLS1N4zJpaWmy/Uv/1GadADBnzhzY2tpKD1dXV633h4iIiAyD1mOWRo4ciblz56KoqKgy6jEIkydPRlZWlvRITU3Vd0lERERUSbSeZ+nYsWOIj4/H77//Dm9vb1hZWam8vnXrVp0V96RatWrB2NgY6enpKu3p6elwdnbWuIyzs7Ns/9I/09PTUadOHZU+vr6+ZdaiVCqhVCqfZTeIiIjIwGh9ZsnOzg69evVCaGgoXFxcVC5H2draVkaNAAAzMzP4+fmpzBJeUlKC+Ph4BAUFaVwmKChIbVbxuLg4qX+DBg3g7Oys0ic7OxtHjhwpc51ERET0ctH6zNLy5csro44KGT9+PAYPHgx/f38EBAQgOjoaubm5GDp0KABg0KBBqFu3LubMmQPg8VezBAcHY8GCBejatSs2bNiA48eP47vvvgPweI6ocePG4bPPPoOHhwcaNGiATz75BC4uLujRo4e+dpOIiIiqEa3Dkj717dsXt2/fxvTp05GWlgZfX1/ExsZKA7RTUlJgZPS/k2WtW7fGunXrMG3aNEyZMgUeHh6IiYmBl5eX1Ofjjz9Gbm4uhg8fjszMTLz++uuIjY2Fubl5le8fERERVT9az7PUoEEDKBSKMl//+++/n7soQ8N5loiIiAxPpcyzBADjxo1TeV5YWIiTJ08iNjYWH330kdaFEhEREVVnWoelsWPHamxfvHgxjh8//twFEREREVUnWt8NV5bOnTvjp59+0tXqiIiIiKoFnYWlLVu2wMHBQVerIyIiIqoWtL4M9+qrr6oM8BZCIC0tDbdv38aSJUt0WhwRERGRvmkdlp6ef8jIyAiOjo5o164dPD09dVUXERERUbWg9dQBpI5TBxARERmein5+az1m6cSJEzhz5oz0/JdffkGPHj0wZcoUFBQUPFu1RERERNWU1mHp/fffx6VLlwA8noCyb9++sLS0xObNm/Hxxx/rvEAiIiIifdI6LF26dAm+vr4AgM2bNyM4OBjr1q3DihUrOHUAERERvXC0DktCCJSUlAAAdu/ejS5dugAAXF1dcefOHd1WR0RERKRnWoclf39/fPbZZ1i9ejX279+Prl27AgCuXr0qfaEtERER0YtC67AUHR2NEydOYNSoUZg6dSoaNWoE4PGklK1bt9Z5gURERET6pLOpA/Ly8mBsbAxTU1NdrM6gcOoAIiIiw1NpUwekpqbi+vXr0vOjR49i3LhxWLVq1UsZlIiIiOjFpnVY6t+/P/bu3QsASEtLQ8eOHXH06FFMnToVs2bN0nmBRERERPqkdVg6e/YsAgICAACbNm2Cl5cXDh8+jLVr12LFihW6ro+IiIhIr7QOS4WFhVAqlQAeTx3QrVs3AICnpydu3bql2+qIiIiI9EzrsNS8eXMsW7YMBw8eRFxcHMLCwgAAN2/eRM2aNXVeIBEREZE+aR2W5s6di2+//Rbt2rVDeHg4fHx8AAC//vqrdHmOiIiI6EXxTFMHFBcXIzs7G/b29lJbcnIyLC0tUbt2bZ0WaAg4dQAREZHhqbSpA4DHX3mSmJiIb7/9Fg8ePAAAmJmZwdLS8tmqJSIiIqqmTLRd4Nq1awgLC0NKSgry8/PRsWNH1KhRA3PnzkV+fj6WLVtWGXUSERER6YXWZ5bGjh0Lf39/3L9/HxYWFlJ7z549ER8fr9PiiIiIiPRN6zNLBw8exOHDh2FmZqbS7u7ujhs3buisMCIiIqLqQOszSyUlJSguLlZrv379OmrUqKGTooiIiIiqC63DUqdOnRAdHS09VygUyMnJQVRUFLp06aLL2oiIiIj0TuupA1JTUxEWFgYhBC5fvgx/f39cvnwZtWrVwoEDBzh1AKcOICIiMggV/fx+pnmWioqKsHHjRpw+fRo5OTlo2bIlIiIiVAZ8v0wYloiIiAxPpYSlwsJCeHp6Yvv27WjatKlOCn0RMCwREREZnkqZlNLU1BR5eXnPXRwRERGRodB6gPfIkSMxd+5cFBUVVUY9RERERNWK1vMsHTt2DPHx8fj999/h7e0NKysrlde3bt2qs+KIiIiI9E3rsGRnZ4devXpVRi1ERERE1Y7WYWn58uWVUQcRERFRtVThMUslJSWYO3cu2rRpg1atWmHSpEl49OhRZdZGREREpHcVDkuzZ8/GlClTYG1tjbp162LhwoUYOXJkZdZGREREpHcVDkurVq3CkiVLsGvXLsTExGDbtm1Yu3YtSkpKKrM+IiIiIr2qcFhKSUlR+e63kJAQKBQK3Lx5s1IKIyIiIqoOKhyWioqKYG5urtJmamqKwsJCnRdFREREVF1U+G44IQSGDBkCpVIpteXl5WHEiBEqcy1xniUiIiJ6kVQ4LA0ePFitbcCAATothoiIiKi6qXBY4vxKRERE9DLS+rvhiIiIiF4mDEtEREREMhiWiIiIiGQwLBERERHJYFgiIiIiksGwRERERCSDYYmIiIhIBsMSERERkQyGJSIiIiIZDEtEREREMhiWiIiIiGQwLBERERHJYFgiIiIikmEwYenevXuIiIiAjY0N7OzsMGzYMOTk5Mguk5eXh5EjR6JmzZqwtrZGr169kJ6eLr1++vRphIeHw9XVFRYWFmjatCkWLlxY2btCREREBsRgwlJERATOnTuHuLg4bN++HQcOHMDw4cNll/nwww+xbds2bN68Gfv378fNmzfx9ttvS68nJiaidu3aWLNmDc6dO4epU6di8uTJ+Oabbyp7d4iIiMhAKIQQQt9FlOfChQto1qwZjh07Bn9/fwBAbGwsunTpguvXr8PFxUVtmaysLDg6OmLdunXo3bs3AODixYto2rQpEhIS8Nprr2nc1siRI3HhwgXs2bOnwvVlZ2fD1tYWWVlZsLGxeYY9JCIioqpW0c9vgzizlJCQADs7OykoAUBISAiMjIxw5MgRjcskJiaisLAQISEhUpunpyfc3NyQkJBQ5raysrLg4OAgW09+fj6ys7NVHkRERPRiMoiwlJaWhtq1a6u0mZiYwMHBAWlpaWUuY2ZmBjs7O5V2JyenMpc5fPgwNm7cWO7lvTlz5sDW1lZ6uLq6VnxniIiIyKDoNSxNmjQJCoVC9nHx4sUqqeXs2bPo3r07oqKi0KlTJ9m+kydPRlZWlvRITU2tkhqJiIio6pnoc+MTJkzAkCFDZPs0bNgQzs7OyMjIUGkvKirCvXv34OzsrHE5Z2dnFBQUIDMzU+XsUnp6utoy58+fR4cOHTB8+HBMmzat3LqVSiWUSmW5/YiIiMjw6TUsOTo6wtHRsdx+QUFByMzMRGJiIvz8/AAAe/bsQUlJCQIDAzUu4+fnB1NTU8THx6NXr14AgKSkJKSkpCAoKEjqd+7cObz55psYPHgwZs+erYO9IiIioheJQdwNBwCdO3dGeno6li1bhsLCQgwdOhT+/v5Yt24dAODGjRvo0KEDVq1ahYCAAADAv/71L+zYsQMrVqyAjY0NRo8eDeDx2CTg8aW3N998E6GhoZg3b560LWNj4wqFuFK8G46IiMjwVPTzW69nlrSxdu1ajBo1Ch06dICRkRF69eqFr7/+Wnq9sLAQSUlJePjwodT21VdfSX3z8/MRGhqKJUuWSK9v2bIFt2/fxpo1a7BmzRqpvX79+khOTq6S/SIiIqLqzWDOLFVnPLNERERkeF6oeZaIiIiI9IVhiYiIiEgGwxIRERGRDIYlIiIiIhkMS0REREQyGJaIiIiIZDAsEREREclgWCIiIiKSwbBEREREJINhiYiIiEgGwxIRERGRDIYlIiIiIhkMS0REREQyGJaIiIiIZDAsEREREclgWCIiIiKSwbBEREREJINhiYiIiEgGwxIRERGRDIYlIiIiIhkMS0REREQyGJaIiIiIZDAsEREREclgWCIiIiKSwbBEREREJINhiYiIiEgGwxIRERGRDIYlIiIiIhkMS0REREQyGJaIiIiIZDAsEREREclgWCIiIiKSwbBEREREJINhiYiIiEgGwxIRERGRDIYlIiIiIhkMS0REREQyGJaIiIiIZDAsEREREclgWCIiIiKSwbBEREREJINhiYiIiEgGwxIRERGRDIYlIiIiIhkMS0REREQyGJaIiIiIZDAsEREREclgWCIiIiKSwbBEREREJINhiYiIiEgGwxIRERGRDIYlIiIiIhkMS0REREQyGJaIiIiIZDAsEREREclgWCIiIiKSYTBh6d69e4iIiICNjQ3s7OwwbNgw5OTkyC6Tl5eHkSNHombNmrC2tkavXr2Qnp6use/du3dRr149KBQKZGZmVsIeEBERkSEymLAUERGBc+fOIS4uDtu3b8eBAwcwfPhw2WU+/PBDbNu2DZs3b8b+/ftx8+ZNvP322xr7Dhs2DC1atKiM0omIiMiAKYQQQt9FlOfChQto1qwZjh07Bn9/fwBAbGwsunTpguvXr8PFxUVtmaysLDg6OmLdunXo3bs3AODixYto2rQpEhIS8Nprr0l9ly5dio0bN2L69Ono0KED7t+/Dzs7uwrXl52dDVtbW2RlZcHGxub5dpaIiIiqREU/vw3izFJCQgLs7OykoAQAISEhMDIywpEjRzQuk5iYiMLCQoSEhEhtnp6ecHNzQ0JCgtR2/vx5zJo1C6tWrYKRUcUOR35+PrKzs1UeRERE9GIyiLCUlpaG2rVrq7SZmJjAwcEBaWlpZS5jZmamdobIyclJWiY/Px/h4eGYN28e3NzcKlzPnDlzYGtrKz1cXV212yEiIiIyGHoNS5MmTYJCoZB9XLx4sdK2P3nyZDRt2hQDBgzQermsrCzpkZqaWkkVEhERkb6Z6HPjEyZMwJAhQ2T7NGzYEM7OzsjIyFBpLyoqwr179+Ds7KxxOWdnZxQUFCAzM1Pl7FJ6erq0zJ49e3DmzBls2bIFAFA6fKtWrVqYOnUqZs6cqXHdSqUSSqWyIrtIREREBk6vYcnR0RGOjo7l9gsKCkJmZiYSExPh5+cH4HHQKSkpQWBgoMZl/Pz8YGpqivj4ePTq1QsAkJSUhJSUFAQFBQEAfvrpJzx69Eha5tixY3j33Xdx8OBBvPLKK8+7e0RERPQC0GtYqqimTZsiLCwM7733HpYtW4bCwkKMGjUK/fr1k+6Eu3HjBjp06IBVq1YhICAAtra2GDZsGMaPHw8HBwfY2Nhg9OjRCAoKku6EezoQ3blzR9qeNnfDERER0YvLIMISAKxduxajRo1Chw4dYGRkhF69euHrr7+WXi8sLERSUhIePnwotX311VdS3/z8fISGhmLJkiX6KJ+IiIgMlEHMs1TdcZ4lIiIiw/NCzbNEREREpC8MS0REREQyGJaIiIiIZDAsEREREclgWCIiIiKSwbBEREREJINhiYiIiEgGwxIRERGRDIYlIiIiIhkMS0REREQyGJaIiIiIZDAsEREREclgWCIiIiKSwbBEREREJINhiYiIiEgGwxIRERGRDIYlIiIiIhkMS0REREQyGJaIiIiIZDAsEREREclgWCIiIiKSwbBEREREJINhiYiIiEgGwxIRERGRDIYlIiIiIhkMS0REREQyGJaIiIiIZDAsEREREclgWCIiIiKSwbBEREREJINhiYiIiEgGwxIRERGRDIYlIiIiIhkMS0REREQyGJaIiIiIZDAsEREREclgWCIiIiKSwbBEREREJINhiYiIiEgGwxIRERGRDIYlIiIiIhkMS0REREQyGJaIiIiIZJjou4AXgRACAJCdna3nSoiIiKiiSj+3Sz/Hy8KwpAMPHjwAALi6uuq5EiIiItLWgwcPYGtrW+brClFenKJylZSU4ObNm6hRowYUCoW+y9Gr7OxsuLq6IjU1FTY2Nvou54XF41x1eKyrBo9z1eBxViWEwIMHD+Di4gIjo7JHJvHMkg4YGRmhXr16+i6jWrGxseEvYhXgca46PNZVg8e5avA4/4/cGaVSHOBNREREJINhiYiIiEgGwxLplFKpRFRUFJRKpb5LeaHxOFcdHuuqweNcNXicnw0HeBMRERHJ4JklIiIiIhkMS0REREQyGJaIiIiIZDAsEREREclgWCKt3bt3DxEREbCxsYGdnR2GDRuGnJwc2WXy8vIwcuRI1KxZE9bW1ujVqxfS09M19r179y7q1asHhUKBzMzMStgDw1AZx/n06dMIDw+Hq6srLCws0LRpUyxcuLCyd6VaWbx4Mdzd3WFubo7AwEAcPXpUtv/mzZvh6ekJc3NzeHt7Y8eOHSqvCyEwffp01KlTBxYWFggJCcHly5crcxcMgi6Pc2FhISIjI+Ht7Q0rKyu4uLhg0KBBuHnzZmXvRrWn6/fzk0aMGAGFQoHo6GgdV22ABJGWwsLChI+Pj/jzzz/FwYMHRaNGjUR4eLjsMiNGjBCurq4iPj5eHD9+XLz22muidevWGvt2795ddO7cWQAQ9+/fr4Q9MAyVcZx/+OEHMWbMGLFv3z5x5coVsXr1amFhYSEWLVpU2btTLWzYsEGYmZmJH3/8UZw7d0689957ws7OTqSnp2vsf+jQIWFsbCy++OILcf78eTFt2jRhamoqzpw5I/X5/PPPha2trYiJiRGnT58W3bp1Ew0aNBCPHj2qqt2qdnR9nDMzM0VISIjYuHGjuHjxokhISBABAQHCz8+vKner2qmM93OprVu3Ch8fH+Hi4iK++uqrSt6T6o9hibRy/vx5AUAcO3ZMatu5c6dQKBTixo0bGpfJzMwUpqamYvPmzVLbhQsXBACRkJCg0nfJkiUiODhYxMfHv9RhqbKP85M++OAD0b59e90VX40FBASIkSNHSs+Li4uFi4uLmDNnjsb+ffr0EV27dlVpCwwMFO+//74QQoiSkhLh7Ows5s2bJ72emZkplEqlWL9+fSXsgWHQ9XHW5OjRowKAuHbtmm6KNkCVdZyvX78u6tatK86ePSvq16/PsCSE4GU40kpCQgLs7Ozg7+8vtYWEhMDIyAhHjhzRuExiYiIKCwsREhIitXl6esLNzQ0JCQlS2/nz5zFr1iysWrVK9gsNXwaVeZyflpWVBQcHB90VX00VFBQgMTFR5fgYGRkhJCSkzOOTkJCg0h8AQkNDpf5Xr15FWlqaSh9bW1sEBgbKHvMXWWUcZ02ysrKgUChgZ2enk7oNTWUd55KSEgwcOBAfffQRmjdvXjnFG6CX+xOJtJaWlobatWurtJmYmMDBwQFpaWllLmNmZqb2j5qTk5O0TH5+PsLDwzFv3jy4ublVSu2GpLKO89MOHz6MjRs3Yvjw4Tqpuzq7c+cOiouL4eTkpNIud3zS0tJk+5f+qc06X3SVcZyflpeXh8jISISHh7+0XwZbWcd57ty5MDExwZgxY3RftAFjWCIAwKRJk6BQKGQfFy9erLTtT548GU2bNsWAAQMqbRvVgb6P85POnj2L7t27IyoqCp06daqSbRI9r8LCQvTp0wdCCCxdulTf5bxQEhMTsXDhQqxYsQIKhULf5VQrJvougKqHCRMmYMiQIbJ9GjZsCGdnZ2RkZKi0FxUV4d69e3B2dta4nLOzMwoKCpCZmaly1iM9PV1aZs+ePThz5gy2bNkC4PEdRgBQq1YtTJ06FTNnznzGPate9H2cS50/fx4dOnTA8OHDMW3atGfaF0NTq1YtGBsbq92Fqen4lHJ2dpbtX/pneno66tSpo9LH19dXh9Ubjso4zqVKg9K1a9ewZ8+el/asElA5x/ngwYPIyMhQObtfXFyMCRMmIDo6GsnJybrdCUOi70FTZFhKBx4fP35catu1a1eFBh5v2bJFart48aLKwOP//ve/4syZM9Ljxx9/FADE4cOHy7yz40VWWcdZCCHOnj0rateuLT766KPK24FqKiAgQIwaNUp6XlxcLOrWrSs7IPYf//iHSltQUJDaAO/58+dLr2dlZXGAt46PsxBCFBQUiB49eojmzZuLjIyMyincwOj6ON+5c0fl3+EzZ84IFxcXERkZKS5evFh5O2IAGJZIa2FhYeLVV18VR44cEX/88Yfw8PBQuaX9+vXrokmTJuLIkSNS24gRI4Sbm5vYs2ePOH78uAgKChJBQUFlbmPv3r0v9d1wQlTOcT5z5oxwdHQUAwYMELdu3ZIeL8uHz4YNG4RSqRQrVqwQ58+fF8OHDxd2dnYiLS1NCCHEwIEDxaRJk6T+hw4dEiYmJmL+/PniwoULIioqSuPUAXZ2duKXX34Rf/31l+jevTunDtDxcS4oKBDdunUT9erVE6dOnVJ57+bn5+tlH6uDyng/P413wz3GsERau3v3rggPDxfW1tbCxsZGDB06VDx48EB6/erVqwKA2Lt3r9T26NEj8cEHHwh7e3thaWkpevbsKW7dulXmNhiWKuc4R0VFCQBqj/r161fhnunXokWLhJubmzAzMxMBAQHizz//lF4LDg4WgwcPVum/adMm0bhxY2FmZiaaN28ufvvtN5XXS0pKxCeffCKcnJyEUqkUHTp0EElJSVWxK9WaLo9z6Xtd0+PJ9//LSNfv56cxLD2mEOL/B4cQERERkRreDUdEREQkg2GJiIiISAbDEhEREZEMhiUiIiIiGQxLRERERDIYloiIiIhkMCwRERERyWBYIiIyMPv27ZO+eLlHjx5aLTtkyBBp2ZiYmEqpj+hFw7BERM+l9IO3rMeMGTP0XaLOubu7Izo6Wt9lICkpCStWrJCeDxkyRC08bdmyBebm5liwYAEAYOHChbh161YVVklk+Ez0XQARGbYnP3g3btyI6dOnIykpSWqztrbWR1laE0KguLgYJiZV989iQUEBzMzMnnn52rVrw87OrszXv//+e4wcORLLli3D0KFDAQC2trawtbV95m0SvYx4ZomInouzs7P0sLW1hUKhUGnbsGEDmjZtCnNzc3h6emLJkiXSssnJyVAoFNi0aRPeeOMNWFhYoFWrVrh06RKOHTsGf39/WFtbo3Pnzrh9+7a0XOkZlJkzZ8LR0RE2NjYYMWIECgoKpD4lJSWYM2cOGjRoAAsLC/j4+GDLli3S66WXsnbu3Ak/Pz8olUr88ccfuHLlCrp37w4nJydYW1ujVatW2L17t7Rcu3btcO3aNXz44YfS2TMAmDFjBnx9fVWOTXR0NNzd3dXqnj17NlxcXNCkSRMAQGpqKvr06QM7Ozs4ODige/fuSE5Ofq6fyxdffIHRo0djw4YNUlAiomfDM0tEVGnWrl2L6dOn45tvvsGrr76KkydP4r333oOVlRUGDx4s9YuKikJ0dDTc3Nzw7rvvon///qhRowYWLlwIS0tL9OnTB9OnT8fSpUulZeLj42Fubo59+/YhOTkZQ4cORc2aNTF79mwAwJw5c7BmzRosW7YMHh4eOHDgAAYMGABHR0cEBwdL65k0aRLmz5+Phg0bwt7eHqmpqejSpQtmz54NpVKJVatW4a233kJSUhLc3NywdetW+Pj4YPjw4Xjvvfe0Pibx8fGwsbFBXFwcAKCwsBChoaEICgrCwYMHYWJigs8++wxhYWH466+/nunMU2RkJJYsWYLt27ejQ4cOWi9PRE/R8xf5EtELZPny5cLW1lZ6/sorr4h169ap9Pn0009FUFCQEOJ/3yb//fffS6+vX79eABDx8fFS25w5c0STJk2k54MHDxYODg4iNzdXalu6dKmwtrYWxcXFIi8vT1haWorDhw+rbHvYsGEiPDxcCCHE3r17BQARExNT7n41b95cLFq0SHqu6ZvYo6KihI+Pj0rbV199JerXr69St5OTk8jPz5faVq9eLZo0aSJKSkqktvz8fGFhYSF27dqlsZ7S2u/fv6/SPnjwYGFmZqZ2/DQBIH7++WfZPkT0GM8sEVGlyM3NxZUrVzBs2DCVMzBFRUVqY2ZatGgh/d3JyQkA4O3trdKWkZGhsoyPjw8sLS2l50FBQcjJyUFqaipycnLw8OFDdOzYUWWZgoICvPrqqypt/v7+Ks9zcnIwY8YM/Pbbb7h16xaKiorw6NEjpKSkaLP7ZfL29lY5W3T69Gn897//RY0aNVT65eXl4cqVK1qvv0WLFrhz5w6ioqIQEBBgMGPGiKozhiUiqhQ5OTkAgP/85z8IDAxUec3Y2FjluampqfT30jFAT7eVlJRove3ffvsNdevWVXlNqVSqPLeyslJ5PnHiRMTFxWH+/Plo1KgRLCws0Lt3b5XxUJoYGRlBCKHSVlhYqNbv6e3l5OTAz88Pa9euVevr6Ogou01N6tatiy1btqB9+/YICwvDzp071YIYEWmHYYmIKoWTkxNcXFzw999/IyIiQufrP336NB49egQLCwsAwJ9//glra2u4urrCwcEBSqUSKSkpKuOTKuLQoUMYMmQIevbsCeBxmHl6sLWZmRmKi4tV2hwdHZGWlgYhhBT4Tp06Ve72WrZsiY0bN6J27dqwsbHRqtay1K9fH/v375cCU2xsLAMT0XPg3XBEVGlmzpyJOXPm4Ouvv8alS5dw5swZLF++HF9++eVzr7ugoADDhg3D+fPnsWPHDkRFRWHUqFEwMjJCjRo1MHHiRHz44YdYuXIlrly5ghMnTmDRokVYuXKl7Ho9PDywdetWnDp1CqdPn0b//v3Vzmq5u7vjwIEDuHHjBu7cuQPg8V1yt2/fxhdffIErV65g8eLF2LlzZ7n7ERERgVq1aqF79+44ePAgrl69in379mHMmDG4fv36Mx8fV1dX7Nu3DxkZGQgNDUV2dvYzr4voZcewRESV5p///Ce+//57LF++HN7e3ggODsaKFSvQoEGD5153hw4d4OHhgbZt26Jv377o1q2bygSYn376KT755BPMmTMHTZs2RVhYGH777bdyt/3ll1/C3t4erVu3xltvvYXQ0FC0bNlSpc+sWbOQnJyMV155RbpU1rRpUyxZsgSLFy+Gj48Pjh49iokTJ5a7H5aWljhw4ADc3Nzw9ttvo2nTphg2bBjy8vKe+0xTvXr1sG/fPty5c4eBieg5KMTTF9mJiKq5IUOGIDMz86X9uo59+/ahffv2uH//vuyklHIUCgV+/vlnrb8uhehlxDNLREQGql69eggPD9dqmREjRvAOOSIt8cwSERmcl/3M0qNHj3Djxg0Aj79OxtnZucLLZmRkSJfj6tSpo3Z3HhGpY1giIiIiksHLcEREREQyGJaIiIiIZDAsEREREclgWCIiIiKSwbBEREREJINhiYiIiEgGwxIRERGRDIYlIiIiIhkMS0REREQy/g+hpdD9gCvdAAAAAABJRU5ErkJggg==", + "image/png": "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nx4nJ6dHPpco23LvEb1eL4mPEEJYsFIzqisrK4sff/yRF198EY1GQ1hYGHq9ng4dOpiOCQwMJCAggL17997zPDqdjpSUFLPHg0jzlngQuUeEEKJsKDWJz9q1a0lKSmLo0KFATt8bOzs73N3dzY7z8fEhLi7unueZOXMmWq3W9JB1uoQQQgiRq9QkPt9//z1du3alUqVKj3SeSZMmkZycbHpER0cXUYTiblOnTqVRo0ZqhyGEEEIUWKlIfC5fvsyWLVv4v//7P1OZr68vWVlZeYaZx8fH4+vre89z2dvbm9blKsvrcw0dOhSNRpPn0aVLF7VDE0IIIUqtUjGPz6JFi/D29qZ79+6msqZNm2Jra8vWrVvp168fABEREURFRREaGqpWqKVKly5dWLRokVmZvb29StEIIYSwZCmZejKzDDjYWeNsZ4O1Vdns26h6jY/RaGTRokUMGTIEG5t/8zCtVsvw4cMZN24c27ZtIywsjGHDhhEaGlokI7rKAnt7e3x9fc0eFSpUAHI643733Xf06dMHJycnateuze+//w7kXPMqVaqwYMECs/MdOXIEKysr09xKSUlJ/N///R9eXl64ubnRrl07jh49es94jEYj06dPp0qVKtjb29OoUSM2btxo2n/p0iU0Gg3Lly+nVatWODg4EBwczI4dO8zOc+LECbp27YqLiws+Pj48//zzXLt2rUiumRBCiBxZ2Ub+OBbLyKVhPD77bxpM/YsWH26lwdS/CJ6yieGLD3L25TcwTp+e/wnefx+mTi3RmIuC6onPli1biIqK4sUXX8yz77PPPuM///kP/fr1o02bNvj6+vLrr78WWyyKopCRla3KQ1GUIn8/06ZNY8CAARw7doxu3boxePBgbty4gZWVFYMGDWLZsmVmx//000+0bt2aqlWrAvD000+TkJDAhg0bCAsLo0mTJrRv354bN27k+3rz5s1jzpw5fPLJJxw7dozOnTvTs2dPIiMjzY578803eeONNzhy5AihoaH06NGD69evAznJVrt27WjcuDGHDh1i48aNxMfHM2DAgCK/PkIIUR7FJWfy0cYztJq1lVHLDrPxZBxXbt4CILeS55bewNYzCaw7EY/VlCmkvTvF/CTvvw+TJ4MFTu+hUYrjG7cUSUlJQavVkpycnKe/T2ZmJhcvXqR69eo4ODiQkZVN0ORNqsR5anpnnOwK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", "text/plain": [ "
" ] @@ -701,6 +595,61 @@ "plt.xlabel(\"Temperature [K]\")\n", "plt.ylabel(\"Pressure [bar]\")" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Calculation of critical points" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 0.0000000000000000 -2.0510876135399840 5.8989379894302418 \n" + ] + } + ], + "source": [ + "import yaeos\n", + "\n", + "*x, T, P, V = yaeos.yaeos_c.critical_point(\n", + " model.id, z0=[0.5, 0.5], zi=[0, 0], spec=\"z\", max_iters=100\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -719,7 +668,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.6" + "version": "3.12.5" } }, "nbformat": 4, diff --git a/src/equilibria/critical.f90 b/src/equilibria/critical.f90 index 8ba41fa76..4a02120cc 100644 --- a/src/equilibria/critical.f90 +++ b/src/equilibria/critical.f90 @@ -314,6 +314,7 @@ type(EquilibriumState) function critical_point(& critical_point%x = z critical_point%y = z + critical_point%beta = 0 critical_point%Vx = exp(X(2)) critical_point%Vy = exp(X(2)) critical_point%T = exp(X(3)) From 8cc2af4a66fc21bd5e0667b5a3a6e7f4780c773b Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sat, 9 Nov 2024 21:26:07 -0300 Subject: [PATCH 26/40] muchom --- app/critical.f90 | 136 +++++++++++ app/gpec.f90 | 34 ++- c_interface/yaeos_c.f90 | 52 ++++- src/equilibria/critical.f90 | 290 ++++++++++++++++-------- src/equilibria/equilibria.f90 | 2 +- src/equilibria/saturations_points.f90 | 5 +- src/math/continuation.f90 | 2 +- src/math/math.f90 | 10 + src/models/solvers/saturation_point.f90 | 6 + test/test_coso.f90 | 30 +++ test/test_critical.f90 | 9 +- 11 files changed, 458 insertions(+), 118 deletions(-) create mode 100644 app/critical.f90 create mode 100644 test/test_coso.f90 diff --git a/app/critical.f90 b/app/critical.f90 new file mode 100644 index 000000000..966dbe314 --- /dev/null +++ b/app/critical.f90 @@ -0,0 +1,136 @@ +program main + !! Test the calculation of critical lines + use yaeos + use yaeos__math, only: solve_system + use stdlib_linalg, only: eigh + use yaeos__equilibria_critical, only: & + lambda1, F_critical, df_critical, CriticalLine, critical_line, critical_point + implicit none + + integer, parameter :: nc=12 + + type(CubicEoS) :: model + type(EquilibriumState) :: sat, crit + type(PTEnvel2) :: env + type(CriticalLine) :: cl + + real(pr) :: V, T, P, a + + real(pr) :: z(nc) + real(pr) :: z0(nc) + real(pr) :: zi(nc) + + real(pr) :: u(nc) + integer :: ns + real(pr) :: S + + real(pr) :: F(3), X(3) + integer :: i, j + + model = get_model() + + a = real(1, pr)/100._pr + print *, "1stCL" + cl = critical_line(model, a, z0, zi, 0.1_pr) + do i=1, size(cl%a) + write(2, *) cl%a(i), cl%V(i), cl%T(i), cl%P(i) + end do + write (2, *) + write (2, *) + + print *, "2ndCL" + a = 0.001 + cl = critical_line(model, a0=a, z0=zi, zi=z0, dS0=0.01_pr) + do i=1, size(cl%a) + write(2, *) 1-cl%a(i), cl%V(i), cl%T(i), cl%P(i) + end do + + z = a*zi + (1-a)*z0 + T = sum(model%components%Tc * z) + P = sum(model%components%Pc * z) + call model%volume(n=z, P=P, T=T, V=V, root_type="stable") + X = [a, log(V), log(T)] + ns = 1 + S = X(ns) + + a = 0.9 + z = a*zi + (1-a)*z0 + + sat = saturation_temperature(model, z, P=0.01_pr, kind="dew") + env = pt_envelope_2ph(model, z, sat) + write(20, *) env + write(21, *) env + + + + open(unit=4, file="pt") + open(unit=60, file="pt_cp") + open(unit=61, file="pt_hpl") + +! !$OMP PARALLEL DO PRIVATE(j, a, z, sat, env, i) shared(model, z0, zi) + do j=9999999, 999999999, 1000000 + print *, j + a = real(j, pr)/1000000000 + z = a*zi + (1-a)*z0 + sat = saturation_temperature(model, z, P=0.01_pr, kind="dew") + env = pt_envelope_2ph(model, z, sat) + + do i=1,size(env%points) + write(4, *) a, env%points(i)%T, env%points(i)%P + end do + write(4, *) + write(4, *) + + write(60, *) a, env%cps + + env = find_hpl(model, z, t0=500._pr, P0=1000._pr) + do i=1,size(env%points) + write(61, *) a, env%points(i)%T, env%points(i)%P + end do + write(61, *) + write(61, *) + end do +! !$OMP END PARALLEL DO + close(4) + close(60) + close(61) +contains + + type(CubicEoS) function get_model() + real(pr) :: tc(nc), pc(nc), w(nc), kij(nc,nc) + z0=[0.0656,0.3711,0.0538,0.0373,0.0261,0.0187,0.0218,0.1791,0.091,0.0605,0.0447,0.0302] + ! zi=[0.1775,0.3878,0.188,0.2196,0.0271,0.,0.,0.,0.,0.,0.,0.] + ! zi=[0.,-0.1,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.] + zi=[1.0,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.] + + tc=[304.088888888889,190.6,305.4,369.8,425.2,469.6,507.4,616.2,698.9,770.4,853.1,1001.2] + pc=[73.7343491450634,45.9196083838941,48.7516547159404,42.3795504688362, & + 37.9291919470491,33.6811224489796,29.6353419746277,28.8261858797573,& + 19.3186017650303,16.5876999448428,15.2728212906784,14.6659542195256] + w= [0.228,0.008,0.098,0.152,0.193,0.251,0.296,0.454,0.787,1.048,1.276,1.299] + kij = 0 + kij(1, 2) = 0.12 + kij(1, 3:) = 0.15 + kij(:, 1) = kij(1, :) + + get_model = PengRobinson78(tc, pc, w, kij=kij) + end function get_model + ! type(CubicEoS) function get_model() + ! use yaeos__models, only: SoaveRedlichKwong + ! real(pr) :: tc(nc), pc(nc), w(nc), kij(nc,nc) + ! ! Tc= [190.564, 304.21, 617.7] + ! ! Pc= [45.99, 73.83000000000001, 21.1] + ! ! w= [0.0115478, 0.223621, 0.492328] + ! z0 = [0.0, 0.4, 0.3, 0.2, 0.1] + ! zi = [0.3, 0.7, 0.0, 0.0, 0.0] + ! + ! Tc= [304.21, 190.564, 425.12, 617.7, 874.0] + ! Pc= [73.83000000000001, 45.99, 37.96, 21.1, 6.800000000000001] + ! w= [0.223621, 0.0115478, 0.200164, 0.492328, 1.52596] + ! + ! kij = 0 + ! kij(1, :) = 0.12 + ! kij(:, 1) = 0.12 + ! get_model = SoaveRedlichKwong(tc, pc, w, kij=kij) + ! end function get_model +end program main diff --git a/app/gpec.f90 b/app/gpec.f90 index ee89b4505..e4836772a 100644 --- a/app/gpec.f90 +++ b/app/gpec.f90 @@ -23,7 +23,7 @@ program gpec integer :: diagram_type !! Diagram type - integer :: i, j + integer :: i forsus_dir = "build/dependencies/forsus/" // forsus_default_dir @@ -56,11 +56,18 @@ program gpec ! Calculate the first critical line (2 -> 1) ! --------------------------------------------------------------------------- cl = critical_line(model, a0=0.99_pr, z0=z0, zi=zi, dS0=-0.01_pr) - do i=1,size(cl%a) - print *, cl%a(i), cl%T(i), cl%P(i), cl%V(i) + write(1, *) cl%a(i), cl%T(i), cl%P(i), cl%V(i) end do + call exit + + ! cl = critical_line(model, a0=0.001_pr, z0=z0, zi=zi, dS0=0.001_pr) + ! do i=1,size(cl%a) + ! write(2, *) cl%a(i), cl%T(i), cl%P(i), cl%V(i) + ! end do + + call plot_pts([(real(i,pr)/100, i=1,99,10)]) if (cl%a(size(cl%a)) < 1e-3) then type_1_or_2 : block @@ -76,7 +83,7 @@ program gpec contains -type(CubicEoS) function get_model_nrtl_mhv() result(model) + type(CubicEoS) function get_model_nrtl_mhv() result(model) type(MHV) :: mr type(NRTL) :: ge real(pr) :: a(nc,nc), b(nc,nc), c(nc,nc) @@ -101,4 +108,23 @@ type(CubicEoS) function get_model_nrtl_mhv() result(model) deallocate(model%mixrule) model%mixrule = mr end function get_model_nrtl_mhv + + subroutine plot_pts(zs) + real(pr), intent(in) :: zs(:) + type(EquilibriumState) :: sat + type(PTEnvel2) :: env + integer :: i + real(pr) :: z(nc) + + do i=1,size(zs) + z = z0*zs(i) + zi*(1-zs(i)) + sat = saturation_pressure(model, z, T=200._pr, kind="bubble") + env = pt_envelope_2ph(model, z, sat) + write(i+10, *) env + + sat = saturation_temperature(model, z, P=0.01_pr, kind="dew") + env = pt_envelope_2ph(model, z, sat) + write(i+10, *) env + end do + end subroutine end program gpec diff --git a/c_interface/yaeos_c.f90 b/c_interface/yaeos_c.f90 index 40e307dd5..6adfddb6a 100644 --- a/c_interface/yaeos_c.f90 +++ b/c_interface/yaeos_c.f90 @@ -39,9 +39,9 @@ module yaeos_c ! Phase equilibria public :: flash, flash_grid - public :: saturation_pressure + public :: saturation_pressure, saturation_temperature public :: pt2_phase_envelope - public :: critical_point + public :: critical_point, critical_line type :: ArModelContainer !! Container type for ArModels @@ -440,6 +440,39 @@ subroutine critical_point(id, z0, zi, spec, max_iters, x, T, P, V) call equilibria_state_to_arrays(crit, x, y, P, T, V, Vy, beta) end subroutine critical_point + subroutine critical_line(id, a0, da0, z0, zi, max_points, as, Vs, Ts, Ps) + use yaeos, only: EquilibriumState, CriticalLine, fcritical_line => critical_line + integer(c_int), intent(in) :: id + real(c_double), intent(in) :: z0(:) + real(c_double), intent(in) :: zi(:) + real(c_double), intent(in) :: a0 + real(c_double), intent(in) :: da0 + integer, intent(in) :: max_points + real(c_double), intent(out) :: as(max_points) + real(c_double), intent(out) :: Ts(max_points) + real(c_double), intent(out) :: Ps(max_points) + real(c_double), intent(out) :: Vs(max_points) + + type(CriticalLine) :: cl + + integer :: i + + as = makenan() + Ts = makenan() + Ps = makenan() + Vs = makenan() + + print *, da0 + cl = fcritical_line(model=ar_models(id)%model, a0=a0, z0=z0, zi=zi, ds0=da0) + + do i=1,size(cl%a) + as(i) = cl%a(i) + Ts(i) = cl%T(i) + Ps(i) = cl%P(i) + Vs(i) = cl%V(i) + end do + end subroutine critical_line + subroutine equilibria_state_to_arrays(eq_state, x, y, P, T, Vx, Vy, beta) use yaeos, only: EquilibriumState type(EquilibriumState) :: eq_state @@ -561,7 +594,7 @@ subroutine pt2_phase_envelope(id, z, kind, max_points, Ts, Ps, tcs, pcs, T0, P0) real(c_double), intent(out) :: Tcs(5), Pcs(5) real(c_double), optional, intent(in) :: T0, P0 - real(8) :: makenan, nan + real(8) :: nan type(EquilibriumState) :: sat type(PTEnvel2) :: env @@ -569,10 +602,8 @@ subroutine pt2_phase_envelope(id, z, kind, max_points, Ts, Ps, tcs, pcs, T0, P0) real(c_double) :: T, P - makenan=0 - neval = neval + 1 - nan = makenan/makenan + nan = makenan() Ts = nan Ps = nan Tcs = nan @@ -663,4 +694,13 @@ subroutine flash_grid(id, z, Ts, Ps, xs, ys, Vxs, Vys, betas, parallel) end do end if end subroutine flash_grid + + ! ========================================================================== + ! Auxiliar + ! -------------------------------------------------------------------------- + function makenan() + real(c_double) :: makenan + makenan = 0 + makenan = makenan/makenan + end function end module yaeos_c diff --git a/src/equilibria/critical.f90 b/src/equilibria/critical.f90 index 4a02120cc..240f0d577 100644 --- a/src/equilibria/critical.f90 +++ b/src/equilibria/critical.f90 @@ -6,36 +6,103 @@ module yaeos__equilibria_critical implicit none type :: CriticalLine - real(pr), allocatable :: a(:) - real(pr), allocatable :: z0(:) - real(pr), allocatable :: zi(:) - real(pr), allocatable :: P(:) - real(pr), allocatable :: V(:) - real(pr), allocatable :: T(:) + !! # CriticalLine + !! + !! ## Description + !! This derived type is used to store a critical line between two fluids. + !! The critical line is calculated using the `critical_line` function. It + !! uses the continuation method. + !! + !! ## Examples + !! A critical line can be calculated between two fluids using the + !! `critical_line` function. + !! In this example we calculate the critical of a binary mixture of + !! carbon dioxide and bicyclohexyl. + !! + !! ```fortran + !! use yaeos + !! implicit none + !! type(CubicEoS) :: model + !! type(CriticalLine) :: cl + !! real(pr) :: z0(2), zi(2) + !! + !! z0 = [1, 0] ! Pure carbon dioxide + !! zi = [0, 1] ! Pure bicyclohexyl + !! + !! ! Setup the model + !! tc = [304.21_pr, 727.0_pr] + !! pc = [73.83_pr, 25.6_pr] + !! w = [0.223621_pr, 0.427556_pr] + !! model = PengRobinson76(tc, pc, w) + !! ! Calculate the critical line + !! cl = critical_line(model, a0=0.99_pr, z0=z0, zi=zi, dS0=-0.01_pr) + !! ``` + real(pr), allocatable :: a(:) !! Molar fraction of the second fluid + real(pr), allocatable :: z0(:) !! Molar fractions of the first fluid + real(pr), allocatable :: zi(:) !! Molar fractions of the second fluid + real(pr), allocatable :: P(:) !! Pressure [bar] + real(pr), allocatable :: V(:) !! Volume [L/mol] + real(pr), allocatable :: T(:) !! Temperature [K] end type CriticalLine + type, private :: CPSpecs + integer :: a=1 + integer :: V=2 + integer :: T=3 + integer :: P=4 + end type + + type(CPSpecs), parameter :: CPSpec = CPSpecs() + contains - type(CriticalLine) function critical_line(model, a0, z0, zi, dS0) + type(CriticalLine) function critical_line(model, a0, z0, zi, dS0, max_points, maxP) + !! # critical_line + !! + !! ## Description + !! Calculates the critical line between two mixtures using the + !! continuation method. The two mixtures compositions are restricted to + !! the relation between them, by a parameter \(\alpha\), which represents + !! the molar fraction of the second fluid with respect to the whole + !! mixture. use yaeos__math_continuation, only: continuation use yaeos__math, only: solve_system use yaeos__equilibria_equilibrium_state, only: EquilibriumState - class(ArModel), intent(in) :: model - real(pr), intent(in) :: a0 - real(pr), intent(in) :: z0(:) - real(pr), intent(in) :: zi(:) - real(pr), intent(in) :: dS0 + class(ArModel), intent(in) :: model !! Equation of state model + real(pr), intent(in) :: a0 !! Initial \(\alpha\) value + real(pr), intent(in) :: z0(:) !! Molar fractions of the first fluid + real(pr), intent(in) :: zi(:) !! Molar fractions of the second fluid + real(pr), intent(in) :: dS0 !! Initial step size + integer, optional, intent(in) :: max_points !! Maximum number of points + real(pr), optional, intent(in) :: maxP !! Maximum pressure + + real(pr) :: u(size(z0)) !! eigen-vector + real(pr) :: u_new(size(z0)) !! eigen-vector + + real(pr), allocatable :: XS(:, :) !! Full set of solved points - real(pr) :: u(size(z0)), u_new(size(z0)) + real(pr) :: X0(4), T, P, V, z(size(z0)) - real(pr), allocatable :: XS(:, :) - real(pr) :: X0(3), T, P, V, z(size(z0)) + integer :: i, j, ns, last_point, npoints - type(EquilibriumState) :: first + real(pr) :: max_P + + ! ======================================================================== + ! Handle the input + ! ------------------------------------------------------------------------ + + if (present(max_points)) then + npoints = max_points + else + npoints = 1000 + end if + + if (present(maxP)) then + max_P = maxP + else + max_P = 2500 + end if - integer :: i, j, ns, last_point - ! u = z0 - ! u = zi u = (z0 + zi)/sum(z0 + zi) z = a0*zi + (1-a0)*z0 @@ -43,22 +110,19 @@ type(CriticalLine) function critical_line(model, a0, z0, zi, dS0) P = sum(model%components%Pc * z) call model%volume(n=z, P=P, T=T, V=V, root_type="stable") - X0 = [a0, v, T] - X0(2:3) = log(X0(2:3)) + X0 = [a0, log([v, T, P])] ns = 1 - ! call solve_cp(model, X0, ns, X0(ns), z0, zi, u) - - u = [(1, i=1, size(z0))] - u = u/sum(u) - u = zi - + ! ======================================================================== + ! Calculate the points + ! ------------------------------------------------------------------------ XS = continuation(& f=foo, X0=X0, ns0=ns, S0=X0(ns), & - dS0=dS0, max_points=2500, solver_tol=1e-5_pr, & + dS0=dS0, max_points=npoints, solver_tol=1e-5_pr, & update_specification=update_specification & ) + ! Find the last true converged point last_point = 0 do i=1, size(XS, 1) if (all(abs(XS(i, :)) < 0.001)) exit @@ -115,28 +179,40 @@ subroutine update_specification(X, ns, S, dS, dXdS, iterations) real(pr), intent(in out) :: dXdS(:) !! \(\frac{dX}{dS}\) integer, intent(in) :: iterations !! Iterations needed to converge point + + ns = maxloc(abs(dXdS), dim=1) dS = dXdS(ns)*dS dXdS = dXdS/dXdS(ns) - - if (exp(X(2)) < 0.1) then - ! If the volume is too small, reduce the step size - do while(abs(dXdS(2)*dS) > abs(0.01 * X(2))) - dS = dS/2 - end do + if (exp(X(4)) > max_P) then + dS = 0 end if + end subroutine update_specification end function critical_line - real(pr) function lambda1(model, X, s, z0, zi, u, u_new) + real(pr) function lambda1(model, X, s, z0, zi, u, u_new, P) + !! # lambda1 + !! + !! Calculation of the first restriction of a critical point + !! + !! \[ + !! \lambda_1(s) = \frac{d^2tpd}{ds^2} = 0 + !! \] use stdlib_linalg, only: eigh, linalg_state_type class(ArModel), intent(in) :: model - real(pr), intent(in) :: z0(:) - real(pr), intent(in) :: zi(:) + real(pr), intent(in) :: z0(:) !! Molar fractions of the first fluid + real(pr), intent(in) :: zi(:) !! Molar fractions of the second fluid real(pr), intent(in) :: s - real(pr), intent(in) :: X(3) + !! Distance between the two fluids compositions to the main composition + real(pr), intent(in) :: X(4) !! Vector of variables real(pr), intent(in) :: u(:) + !! Eigen-vector that defines the direction between the two compositions + !! \[ n_i = z_i + s u_i \sqrt{z_i} \] real(pr), optional, intent(out) :: u_new(:) + !! Eigen-vector corresponding to the smallest eigenvalue of the matrix + !! \[ M_{ij} = \sqrt{z_i z_j} \frac{\partial \ln f_i}{\partial n_j} \] + real(pr), optional, intent(out) :: P !! Pressure of the system [bar] real(pr) :: n(size(z0)), V, T real(pr) :: dlnf_dn(size(z0), size(z0)) @@ -145,7 +221,7 @@ real(pr) function lambda1(model, X, s, z0, zi, u, u_new) type(linalg_state_type) :: stat integer :: i, j, nc - real(pr) :: M(size(z0), size(z0)), z(size(z0)) + real(pr) :: M(size(z0), size(z0)), z(size(z0)), Pin nc = size(z0) @@ -154,7 +230,7 @@ real(pr) function lambda1(model, X, s, z0, zi, u, u_new) V = exp(X(2)) T = exp(X(3)) - call model%lnfug_vt(n=n, V=V, T=T, dlnfdn=dlnf_dn) + call model%lnfug_vt(n=n, V=V, T=T, dlnfdn=dlnf_dn, P=Pin) do i=1,nc do j=1,nc @@ -163,84 +239,115 @@ real(pr) function lambda1(model, X, s, z0, zi, u, u_new) end do call eigh(A=M, lambda=lambda, vectors=vectors, err=stat) - if (.not. stat%ok()) write(*, *) stat%print_msg() - lambda1 = minval(lambda) - if (present(u_new)) u_new = vectors(:, minloc(lambda, dim=1)) + if (.not. stat%ok()) then + write(*, *) stat%print_msg() + end if + + lambda1 = lambda(minloc(abs(lambda), dim=1)) + if (present(u_new)) u_new = vectors(:, minloc(abs(lambda), dim=1)) + if (present(P)) P = Pin end function lambda1 function F_critical(model, X, ns, S, z0, zi, u) - class(ArModel), intent(in) :: model - real(pr), intent(in) :: X(3) - integer, intent(in) :: ns - real(pr), intent(in) :: S - real(pr), intent(in) :: z0(:) - real(pr), intent(in) :: zi(:) - real(pr), intent(in) :: u(:) - - real(pr) :: F_critical(3) + !! # F_critical + !! + !! ## Description + !! Function that should be equal to zero at a critical point is found. + !! The second criticality condition is calculated as a numerical + !! derivative with `eps=1e-10`. + !! + !! \[ + !! F = \begin{bmatrix} + !! \lambda_1(s) \\ + !! \frac{\partial \lambda_1(s+\epsilon) - \lambda_1(s-\epsilon)}{2\epsilon} \\ + !! \ln P - X_4 \\ + !! X_{ns} - S + !! \end{bmatrix} = 0 + !! \] + class(ArModel), intent(in) :: model !! Equation of state model + real(pr), intent(in) :: X(4) !! Vector of variables + integer, intent(in) :: ns !! Position of the specification variable + real(pr), intent(in) :: S !! Specification variable value + real(pr), intent(in) :: z0(:) !! Molar fractions of the first fluid + real(pr), intent(in) :: zi(:) !! Molar fractions of the second fluid + real(pr), intent(in) :: u(:) !! Eigen-vector + + real(pr) :: F_critical(4) real(pr) :: z(size(u)) + real(pr) :: V, T, P + real(pr), parameter :: eps=1e-10_pr - if(any(zi * X(1) + z0 * (1-X(1))<0) ) return + V = exp(X(2)) + T = exp(X(3)) + z = X(1) * zi + (1-X(1)) * z0 + if(any(z < 0) ) return - F_critical(1) = lambda1(model=model, X=X, s=0.0_pr, z0=z0, zi=zi, u=u) + F_critical(1) = lambda1(model=model, X=X, s=0.0_pr, z0=z0, zi=zi, u=u, P=P) F_critical(2) = (& lambda1(model=model, X=X, s= eps, zi=zi, z0=z0, u=u) & - lambda1(model=model, X=X, s=-eps, zi=zi, z0=z0, u=u))/(2*eps) - F_critical(3) = X(ns) - S + F_critical(3) = log(P) - X(4) + F_critical(4) = X(ns) - S end function F_critical function df_critical(model, X, ns, S, z0, zi, u) - class(ArModel), intent(in) :: model - real(pr), intent(in) :: X(3) - integer, intent(in) :: ns - real(pr), intent(in) :: S - real(pr), intent(in) :: z0(:) - real(pr), intent(in) :: zi(:) - real(pr), intent(in) :: u(:) - real(pr) :: df_critical(3, 3) + !! # df_critical + !! + !! ## Description + !! Calculates the Jacobian of the critical point function `F_critical`. + class(ArModel), intent(in) :: model !! Equation of state model + real(pr), intent(in) :: X(4) !! Vector of variables + integer, intent(in) :: ns !! Position of the specification variable + real(pr), intent(in) :: S !! Specification variable value + real(pr), intent(in) :: z0(:) !! Molar fractions of the first fluid + real(pr), intent(in) :: zi(:) !! Molar fractions of the second fluid + real(pr), intent(in) :: u(:) !! Eigen-vector + real(pr) :: df_critical(4, 4) !! Jacobian of the critical point function real(pr), parameter :: eps=1e-5_pr - real(pr) :: dx(3), F1(3), F2(3) + real(pr) :: dx(4), F1(4), F2(4) integer :: i df_critical = 0 - do i=1,3 + do i=1,4 dx = 0 dx(i) = eps F2 = F_critical(model, X+dx, ns, S, z0, zi, u) F1 = F_critical(model, X-dx, ns, S, z0, zi, u) df_critical(:, i) = (F2 - F1)/(2*eps) end do - ! df_critical(3, :) = 0 - ! df_critical(3, ns) = 1 end function df_critical type(EquilibriumState) function critical_point(& - model, z0, zi, spec, & - max_iters, u0, V0, T0, a0 & + model, z0, zi, spec, S, max_iters, u0, V0, T0, a0 & ) + !! # critical_point + !! + !! ## Description + !! Calculates a single critical point of a mixture using a Newton-Raphson + !! method. It is possible to specify different variables to be fixed with + !! the `spec` argument. use yaeos__math, only: solve_system - class(ArModel), intent(in) :: model - real(pr), intent(in) :: z0(:) - real(pr), intent(in) :: zi(:) - character(len=*), intent(in) :: spec - integer, intent(in) :: max_iters - - real(pr), optional, intent(in) :: V0 - real(pr), optional, intent(in) :: T0 - real(pr), optional, intent(in) :: a0 - - real(pr), optional, intent(in) :: u0(:) - - real(pr) :: X(3) + class(ArModel), intent(in) :: model !! Equation of state model + real(pr), intent(in) :: z0(:) !! Molar fractions of the first fluid + real(pr), intent(in) :: zi(:) !! Molar fractions of the second fluid + integer, intent(in) :: spec !! Specification `[1:"z", 2:"V", 3:"T", 4:"P"]` + real(pr), intent(in) :: S !! Specification value + integer, intent(in) :: max_iters !! Maxiumum number of iterations + + real(pr), optional, intent(in) :: V0 !! Initial volume [L/mol]. + real(pr), optional, intent(in) :: T0 !! Initial temperature [K]. + real(pr), optional, intent(in) :: a0 !! Initial \(\alpha\) value + real(pr), optional, intent(in) :: u0(:) !! Initial eigen-vector + + real(pr) :: X(4) integer :: ns - real(pr) :: S - real(pr) :: F(3), df(3, 3), dX(3), u(size(z0)) + real(pr) :: F(4), df(4, 4), dX(4), u(size(z0)) real(pr) :: V, T, P real(pr) :: z(size(z0)), u_new(size(z0)), l @@ -277,19 +384,8 @@ type(EquilibriumState) function critical_point(& X(2) = log(X(2)) end if - select case (spec) - case("z") - ns = 1 - S = X(1) - case("V") - ns = 2 - S = X(2) - case("T") - ns = 3 - S = X(3) - case default - stop "Invalid specification" - end select + X(4) = log(sum(model%components%Pc * z)) + ns = spec ! ======================================================================== ! Solve the system of equations diff --git a/src/equilibria/equilibria.f90 b/src/equilibria/equilibria.f90 index ecedb5471..b95857354 100644 --- a/src/equilibria/equilibria.f90 +++ b/src/equilibria/equilibria.f90 @@ -16,7 +16,7 @@ module yaeos__equilibria ! Critical points use yaeos__equilibria_critical, only: & - critical_line, CriticalLine, critical_point + critical_line, CriticalLine, critical_point, CPSpec ! Phase equilibria boundaries use yaeos__equilibria_boundaries_phase_envelopes_pt, only:& diff --git a/src/equilibria/saturations_points.f90 b/src/equilibria/saturations_points.f90 index 959f1484e..4f6ac71dd 100644 --- a/src/equilibria/saturations_points.f90 +++ b/src/equilibria/saturations_points.f90 @@ -12,10 +12,6 @@ module yaeos__equilibria_saturation_points integer :: iters_first_step = 100 real(pr) :: step_tol = 0.1_pr - class(ArModel), pointer, private :: hidden_model - real(pr), private, allocatable :: hidden_z(:) - character(len=14), private :: hidden_kind - real(pr), private :: Vz, Vy contains @@ -93,6 +89,7 @@ type(EquilibriumState) function saturation_pressure(model, n, t, kind, p0, y0, m ! Solve point ! ------------------------------------------------------------------------ do its=1, iters_first_step + ! print *, "sat solving", z, T, P y = k*z call model%lnphi_pt(y, P, T, vy, incipient, lnPhi=lnfug_y, dlnphidp=dlnphi_dp_y) call model%lnphi_pt(z, P, T, vz, main, lnPhi=lnfug_z, dlnphidp=dlnphi_dp_z) diff --git a/src/math/continuation.f90 b/src/math/continuation.f90 index 4807701e2..d7c0507fd 100644 --- a/src/math/continuation.f90 +++ b/src/math/continuation.f90 @@ -203,7 +203,7 @@ subroutine full_newton(& X0 = X newton: do iters = 1, max_iters ! Converged point - if (maxval(abs(dx)) < tol .or. maxval(abs(F)) < 1e-13) exit newton + ! if (maxval(abs(dx)) < tol .or. maxval(abs(F)) < 1e-13) exit newton call fun(X, ns, S, F, dF, dFdS) if (maxval(abs(F)) < tol) exit diff --git a/src/math/math.f90 b/src/math/math.f90 index d5b1af54a..b9a2b169b 100644 --- a/src/math/math.f90 +++ b/src/math/math.f90 @@ -138,6 +138,16 @@ function derivative_d2xk_dnidnj(n) result(d2xk_dnidnj) end do end function derivative_d2xk_dnidnj + ! subroutine eigen(A, values, vectors, stat) + ! use stdlib_linalg, only: eigh, linalg_state_type + ! real(pr), intent(in) :: A(:,:) + ! real(pr), intent(out) :: values(:) + ! real(pr), optional, intent(out) :: vectors(:,:) + ! integer, intent(out) :: stat + ! + ! call eigh(A=A, lambda=values, vectors=vectors) + ! end subroutine + subroutine newton_1d(f, x, tol, max_iters) procedure(f_1d) :: f real(pr), intent(in out) :: x diff --git a/src/models/solvers/saturation_point.f90 b/src/models/solvers/saturation_point.f90 index 120a185b6..3bc0c8b07 100644 --- a/src/models/solvers/saturation_point.f90 +++ b/src/models/solvers/saturation_point.f90 @@ -186,6 +186,8 @@ subroutine solve_TP(model, kind, z, X, ns, S, tol, max_iterations, its) integer, intent(in) :: max_iterations integer, intent(out) :: its + integer :: innits + real(pr) :: F(size(X)) real(pr) :: dF(size(X), size(X)) real(pr) :: dFdS(size(X)) @@ -199,10 +201,14 @@ subroutine solve_TP(model, kind, z, X, ns, S, tol, max_iterations, its) dX = solve_system(dF, -F) X = X + dX + innits = 0 do while (any(isnan(F))) + innits = innits + 1 + if (innits > 100) exit X = X - dx*0.9 call saturation_TP(model, kind, z, X, ns, S, F, dF, dFdS) end do + its = its + 1 end do diff --git a/test/test_coso.f90 b/test/test_coso.f90 new file mode 100644 index 000000000..b29602146 --- /dev/null +++ b/test/test_coso.f90 @@ -0,0 +1,30 @@ +program main + use yaeos + type(CriticalLine) :: cl + type(CubicEoS) :: model + real(pr) :: zi(2), z0(2), tc(2), pc(2), w(2), eps + integer :: i + + zi = [0.1_pr, 0.9_pr] + + tc = [304.21, 727.0] + pc = [73.83, 25.6] + w = [0.223621, 0.427556] + + model = PengRobinson76(tc, pc, w) + + eps = 1e-3 + zi = [1-epsilon(eps), eps] + z0 = [eps, 1 -eps] + + cl = critical_line(model, a0=eps, z0=z0, zi=zi, ds0=1e-3_pr) + + ! print *, size(cl%a) + + do i=1,size(cl%a) + print *, cl%a(i), cl%T(i), cl%P(i), cl%V(i) + end do + + ! yaeos.yaeos_c.critical_line(model.id, a0=eps, da0=1e-3, z0=z0, zi=zi, max_points=100) + +end program \ No newline at end of file diff --git a/test/test_critical.f90 b/test/test_critical.f90 index 2af97852d..22ded68bf 100644 --- a/test/test_critical.f90 +++ b/test/test_critical.f90 @@ -16,8 +16,6 @@ program main real(pr) :: z0(nc) real(pr) :: zi(nc) - real(pr) :: u(nc) - real(pr) :: X(3) integer :: i model = get_model() @@ -36,8 +34,7 @@ program main call model%volume(n=z, P=P, T=T, V=V, root_type="stable") ! Solve a critical point - X = [a, log(V), log(T)] - crit = critical_point(model, z0, zi, spec="z", max_iters=300, a0=a) + crit = critical_point(model, z0, zi, S=a, spec=CPSpec%a, max_iters=300, a0=a) if (sum([crit%T, crit%P] - [env%cps(1)%T, env%cps(1)%P])**2 > 1e-2) then print *, "Critical point failed" @@ -45,8 +42,10 @@ program main end if ! Now test the critical lines - cl = critical_line(model, a, z0, zi, 0.01_pr) + cl = critical_line(model, a0=a, z0=z0, zi=zi, dS0=0.01_pr) + do i=1,5 + print *, "env", i a = cl%a(i) z = a*zi + (1-a)*z0 sat = saturation_temperature(model, z, P=0.01_pr, kind="dew") From 42e5384c0e4782f4d8f728f975071ee15b2f092d Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 10 Nov 2024 03:22:22 -0300 Subject: [PATCH 27/40] crit --- c_interface/yaeos_c.f90 | 7 +++++-- python/yaeos/core.py | 32 ++++++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/c_interface/yaeos_c.f90 b/c_interface/yaeos_c.f90 index 6adfddb6a..0eff528b4 100644 --- a/c_interface/yaeos_c.f90 +++ b/c_interface/yaeos_c.f90 @@ -426,7 +426,7 @@ subroutine critical_point(id, z0, zi, spec, max_iters, x, T, P, V) integer(c_int), intent(in) :: id real(c_double), intent(in) :: z0(:) real(c_double), intent(in) :: zi(:) - character(len=*), intent(in) :: spec + integer, intent(in) :: spec integer, intent(in) :: max_iters real(c_double), intent(out) :: x(size(z0)) real(c_double), intent(out) :: T @@ -434,9 +434,12 @@ subroutine critical_point(id, z0, zi, spec, max_iters, x, T, P, V) real(c_double), intent(out) :: V real(c_double) :: y(size(z0)), Vx, Vy, beta + real(c_double) :: S type(EquilibriumState) :: crit - crit = fcritical_point(model=ar_models(id)%model, z0=z0, zi=zi, spec=spec, max_iters=max_iters) + + S = 0 + crit = fcritical_point(model=ar_models(id)%model, z0=z0, zi=zi, S=S, spec=spec, max_iters=max_iters) call equilibria_state_to_arrays(crit, x, y, P, T, V, Vy, beta) end subroutine critical_point diff --git a/python/yaeos/core.py b/python/yaeos/core.py index d91c5b1bc..96de9fc69 100644 --- a/python/yaeos/core.py +++ b/python/yaeos/core.py @@ -941,7 +941,7 @@ def saturation_pressure( def saturation_temperature( self, z, pressure: float, kind: str = "bubble", t0: float = 0 ) -> dict: - """Saturation pressure at specified temperature. + """Saturation temperature at specified pressure. Arguments --------- @@ -958,7 +958,7 @@ def saturation_temperature( Returns ------- dict - Saturation pressure calculation result dictionary with keys: + Saturation temperature calculation result dictionary with keys: - x: heavy phase mole fractions - y: light phase mole fractions - Vx: heavy phase volume [L] @@ -996,7 +996,7 @@ def saturation_temperature( print(model.saturation_temperature(np.array([0.5, 0.5]), 12.99)) """ - t, x, y, volume_x, volume_y, beta = yaeos_c.saturation_pressure( + t, x, y, volume_x, volume_y, beta = yaeos_c.saturation_temperature( id=self.id, z=z, p=pressure, kind=kind, t0=t0 ) @@ -1103,11 +1103,35 @@ def critical_point(self, z, max_iters=100) -> dict: """ *x, t, p, v = yaeos_c.critical_point( - self.id, z0=z, zi=[0, 0], spec="z", max_iters=max_iters + self.id, z0=z, zi=[0, 0], spec=1, max_iters=max_iters ) return {"Tc": t, "Pc": p, "Vc": v} + def critical_line(self, z0, zi, a0=1e-5, da0=1e-2, max_points=1000): + """Critical Line calculation. + + Calculate the critical line between two compositions + + Parameters + ---------- + z0: array_like + Initial global mole fractions + zi: array_like + Final global mole fractions + a0: float, optional + Initial molar fraction of composition `i` + da0: float, optional + Step for molar fraction of composition `i` + max_poitns: int, optional + Maximum number of points to calculate + """ + alphas, vs, ts, ps = yaeos_c.critical_line( + self.id, a0=a0, da0=da0, z0=z0, zi=zi, max_points=max_points + ) + + return {"a": alphas, "T": ts, "P": ps, "V": vs} + def __del__(self) -> None: """Delete the model from the available models list (Fortran side).""" yaeos_c.make_available_ar_models_list(self.id) From b6bf4f5aac368a9b54b4b265f09f39ee784a3a00 Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 10 Nov 2024 18:22:48 -0300 Subject: [PATCH 28/40] fix example --- c_interface/yaeos_c.f90 | 1 - .../source/tutorial/more_calculations.ipynb | 75 +++++++++++++++---- 2 files changed, 62 insertions(+), 14 deletions(-) diff --git a/c_interface/yaeos_c.f90 b/c_interface/yaeos_c.f90 index 0eff528b4..7a136de47 100644 --- a/c_interface/yaeos_c.f90 +++ b/c_interface/yaeos_c.f90 @@ -465,7 +465,6 @@ subroutine critical_line(id, a0, da0, z0, zi, max_points, as, Vs, Ts, Ps) Ps = makenan() Vs = makenan() - print *, da0 cl = fcritical_line(model=ar_models(id)%model, a0=a0, z0=z0, zi=zi, ds0=da0) do i=1,size(cl%a) diff --git a/python/docs/source/tutorial/more_calculations.ipynb b/python/docs/source/tutorial/more_calculations.ipynb index caa6a09d7..21a85bbc7 100644 --- a/python/docs/source/tutorial/more_calculations.ipynb +++ b/python/docs/source/tutorial/more_calculations.ipynb @@ -552,7 +552,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -561,13 +561,13 @@ "Text(0, 0.5, 'Pressure [bar]')" ] }, - "execution_count": 22, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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nx4nJ6dHPpco23LvEb1eL4mPEEJYsFIzqisrK4sff/yRF198EY1GQ1hYGHq9ng4dOpiOCQwMJCAggL17997zPDqdjpSUFLPHg0jzlngQuUeEEKJsKDWJz9q1a0lKSmLo0KFATt8bOzs73N3dzY7z8fEhLi7unueZOXMmWq3W9JB1uoQQQgiRq9QkPt9//z1du3alUqVKj3SeSZMmkZycbHpER0cXUYTiblOnTqVRo0ZqhyGEEEIUWKlIfC5fvsyWLVv4v//7P1OZr68vWVlZeYaZx8fH4+vre89z2dvbm9blKsvrcw0dOhSNRpPn0aVLF7VDE0IIIUqtUjGPz6JFi/D29qZ79+6msqZNm2Jra8vWrVvp168fABEREURFRREaGqpWqKVKly5dWLRokVmZvb29StEIIYSwZCmZejKzDDjYWeNsZ4O1Vdns26h6jY/RaGTRokUMGTIEG5t/8zCtVsvw4cMZN24c27ZtIywsjGHDhhEaGlokI7rKAnt7e3x9fc0eFSpUAHI643733Xf06dMHJycnateuze+//w7kXPMqVaqwYMECs/MdOXIEKysr09xKSUlJ/N///R9eXl64ubnRrl07jh49es94jEYj06dPp0qVKtjb29OoUSM2btxo2n/p0iU0Gg3Lly+nVatWODg4EBwczI4dO8zOc+LECbp27YqLiws+Pj48//zzXLt2rUiumRBCiBxZ2Ub+OBbLyKVhPD77bxpM/YsWH26lwdS/CJ6yieGLD3L25TcwTp+e/wnefx+mTi3RmIuC6onPli1biIqK4sUXX8yz77PPPuM///kP/fr1o02bNvj6+vLrr78WWyyKopCRla3KQ1GUIn8/06ZNY8CAARw7doxu3boxePBgbty4gZWVFYMGDWLZsmVmx//000+0bt2aqlWrAvD000+TkJDAhg0bCAsLo0mTJrRv354bN27k+3rz5s1jzpw5fPLJJxw7dozOnTvTs2dPIiMjzY578803eeONNzhy5AihoaH06NGD69evAznJVrt27WjcuDGHDh1i48aNxMfHM2DAgCK/PkIIUR7FJWfy0cYztJq1lVHLDrPxZBxXbt4CILeS55bewNYzCaw7EY/VlCmkvTvF/CTvvw+TJ4MFTu+hUYrjG7cUSUlJQavVkpycnKe/T2ZmJhcvXqR69eo4ODiQkZVN0ORNqsR5anpnnOwK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", + "image/png": "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", "text/plain": [ "
" ] @@ -603,6 +603,30 @@ "## Calculation of critical points" ] }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'x': [array([0.5, 0.5])],\n", + " 'Tc': 386.00611264806923,\n", + " 'Pc': 68.31106458125285,\n", + " 'Vc': 0.18457847277073952}" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Calculation of the critical point at z = [0.5, 0.5]\n", + "model.critical_point(z=[0.5, 0.5])" + ] + }, { "cell_type": "code", "execution_count": 19, @@ -612,36 +636,61 @@ "name": "stdout", "output_type": "stream", "text": [ - " 0.0000000000000000 -2.0510876135399840 5.8989379894302418 \n" + " 1.0000000000000000E-002\n" ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "import yaeos\n", + "cl = model.critical_line(z0=[1, 0], zi=[0, 1])\n", "\n", - "*x, T, P, V = yaeos.yaeos_c.critical_point(\n", - " model.id, z0=[0.5, 0.5], zi=[0, 0], spec=\"z\", max_iters=100\n", - ")" + "plt.plot(cl[\"a\"], cl[\"P\"])\n", + "\n", + "plt.xlabel(r\"$x_2$\")\n", + "plt.ylabel(r\"$P [bar]$\")\n", + "plt.show()" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "0.0" + "Text(0, 0.5, '$P [bar]$')" ] }, - "execution_count": 18, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "P" + "plt.plot(cl[\"T\"], cl[\"P\"])\n", + "\n", + "plt.xlabel(r\"$T [K]$\")\n", + "plt.ylabel(r\"$P [bar]$\")" ] }, { @@ -668,7 +717,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.5" + "version": "3.12.7" } }, "nbformat": 4, From ebd31a8723eb8cda2a78e3f8872e4ab1b0b10a4b Mon Sep 17 00:00:00 2001 From: "Federico E. Benelli" Date: Tue, 12 Nov 2024 16:38:55 -0300 Subject: [PATCH 29/40] this seems to help --- src/equilibria/auxiliar.f90 | 17 +++++-- .../boundaries/phase_envelopes_pt.f90 | 51 +++++++++++++++++-- src/equilibria/rachford_rice.f90 | 32 +++++++++--- src/equilibria/saturations_points.f90 | 23 ++++++++- src/models/solvers/saturation_point.f90 | 5 ++ 5 files changed, 111 insertions(+), 17 deletions(-) diff --git a/src/equilibria/auxiliar.f90 b/src/equilibria/auxiliar.f90 index 7ea871753..b9e216c8a 100644 --- a/src/equilibria/auxiliar.f90 +++ b/src/equilibria/auxiliar.f90 @@ -5,8 +5,12 @@ module yaeos__equilibria_auxiliar implicit none contains + function k_wilson(model, T, P) result(K) - !! K-factors regressión done by Wilson, used for initialization. + !! # K_wilson + !! + !! ## Description + !! K-factors regression done by Wilson, used for initialization. class(BaseModel), intent(in) :: model real(pr), intent(in) :: T real(pr), intent(in) :: P @@ -18,9 +22,14 @@ function k_wilson(model, T, P) result(K) end function k_wilson real(pr) function P_wilson(model, z, T) result(P) - class(BaseModel), intent(in) :: model - real(pr), intent(in) :: z(:) - real(pr), intent(in) :: T + !! # P_wilson + !! + !! ## Description + !! Calculate the pressure at a given T of a mixture using the Wilson + !! equation. + class(BaseModel), intent(in) :: model !! Model of the mixture. + real(pr), intent(in) :: z(:) !! Mole fractions of the components. + real(pr), intent(in) :: T !! Temperature [K]. P = 1.0_pr/sum(& z*model%components%Pc & diff --git a/src/equilibria/boundaries/phase_envelopes_pt.f90 b/src/equilibria/boundaries/phase_envelopes_pt.f90 index 2e275b59d..87324ee00 100644 --- a/src/equilibria/boundaries/phase_envelopes_pt.f90 +++ b/src/equilibria/boundaries/phase_envelopes_pt.f90 @@ -103,6 +103,10 @@ function pt_envelope_2ph(& X(:nc) = log(first_point%x/z) end select + where(z == 0) + X(:nc) = 0 + end where + X(nc+1) = log(first_point%T) X(nc+2) = log(first_point%P) S0 = X(ns) @@ -191,6 +195,15 @@ subroutine foo(X, ns, S, F, dF, dFdS) df(:nc, nc + 2) = P * (dlnphi_dp_y - dlnphi_dp_z) df(nc + 1, :nc) = y + + do i=1,nc + if (z(i) == 0) then + F(i) = 0 + df(:, i) = 0 + ! df(i, :) = 0 + df(i, i) = 1 + end if + end do df(nc + 2, :) = 0 df(nc + 2, ns) = 1 @@ -238,6 +251,10 @@ subroutine update_spec(X, ns, S, dS, dXdS, step_iters) abs(dS)*3/step_iters & ] & ) + + do while(abs(dXdS(ns)*dS) < 0.1 .and. ns > nc) + dS = dS*2 + end do ! do while(maxval(abs(dXdS(:nc)*dS)) > 0.1 * maxval(abs(X(:nc)))) ! dS = 0.7*dS @@ -321,7 +338,6 @@ subroutine detect_critical(X, dXdS, ns, S, dS) .and. inner < 5000) ! If near a critical point, jump over it inner = inner + 1 - S = S + dS X = X + dXdS*dS end do @@ -395,8 +411,22 @@ subroutine write_PTEnvel2(pt2, unit, iotype, v_list, iostat, iomsg) end subroutine write_PTEnvel2 type(PTEnvel2) function find_hpl(model, z, T0, P0) - class(ArModel), intent(in) :: model - real(pr), intent(in) :: z(:), T0, P0 + !! # find_hpl + !! + !! ## Description + !! Find a liquid-liquid phase boundary on the PT plane. At a specified + !! pressure. + !! The procedure consists in looking for the temperature at which the + !! fugacity of a component in the mixture is higher than the fugacity + !! of the same component in a pure phase. This is done for each component + !! in the mixture. The component with the highest temperature is selected + !! as it should be the first one appearing. If all components have a + !! negative difference then the mixture is probably stable at all + !! temperatures. + class(ArModel), intent(in) :: model !! Equation of state model + real(pr), intent(in) :: z(:) !! Mole fractions + real(pr), intent(in) :: T0 !! Initial temperature [K] + real(pr), intent(in) :: P0 !! Search pressure [bar] integer :: i real(pr) :: y(size(z)) @@ -407,20 +437,31 @@ type(PTEnvel2) function find_hpl(model, z, T0, P0) nc = size(z) P = P0 + do ncomp=1,nc - T = T0 y = 0 y(ncomp) = 1 - do i=500, 100, -10 + + do i=int(T0), 1, -10 T = real(i, pr) call model%lnphi_pt(z, P, T, root_type="liquid", lnPhi=lnphi_z) call model%lnphi_pt(y, P, T, root_type="liquid", lnPhi=lnphi_y) + + ! Fugacity of the component ncomp + ! z * phi_i_mixture / phi_i_pure + ! if eq > 1 then the fugacity in the mixture is above the pure, + ! so the component is more stable on another phase diffs(ncomp) = log(z(ncomp)) + lnphi_z(ncomp) - log(y(ncomp)) - lnphi_y(ncomp) if (diffs(ncomp) > 0) exit end do + Ts(ncomp) = T end do + if (all(diffs < 0)) then + return + end if + T = maxval(Ts, mask=diffs>0) ncomp = findloc(Ts, T, dim=1) diff --git a/src/equilibria/rachford_rice.f90 b/src/equilibria/rachford_rice.f90 index 147b631f4..3c5264e12 100644 --- a/src/equilibria/rachford_rice.f90 +++ b/src/equilibria/rachford_rice.f90 @@ -3,6 +3,9 @@ module yaeos__equilibria_rachford_rice implicit none contains subroutine betato01(z, K) + !! # betato01 + !! + !! ## Description !! Modify K-factor values to assure that \(\beta\) lies between (0,1) implicit none real(pr), intent(in) :: z(:) !! Molar fractions of the system @@ -31,6 +34,9 @@ subroutine betato01(z, K) end subroutine betato01 subroutine betalimits(z, K, bmin, bmax) + !! # betalimits + !! + !! ## Description !! Define beta limits to avoid overshooting when solving the Rachford-Rice !! equation. !! @@ -57,13 +63,22 @@ subroutine betalimits(z, K, bmin, bmax) end subroutine betalimits subroutine rachford_rice(z, K, beta, rr, drrdb) - !! Rachford-Rice equation for a two phase system - real(pr), intent(in) :: z(:) - real(pr), intent(in) :: K(:) - real(pr), intent(in) :: beta + !! # rachford_rice + !! + !! ## Description + !! Rachford-Rice equation for a two phase system. This equation is used to + !! calculate the \(\beta\) value that satisfies the mass balance + !! between two phases. + !! + !! \[ + !! rr(\beta) = \sum_i \frac{z_i(K_i - 1)}{1 + \beta(K_i - 1)}] + !! \] + real(pr), intent(in) :: z(:) !! Mole fractions vector + real(pr), intent(in) :: K(:) !! K-factors + real(pr), intent(in) :: beta !! \(\beta\) value - real(pr), intent(out) :: rr - real(pr), intent(out) :: drrdb + real(pr), intent(out) :: rr !! Rachford-Rice function value + real(pr), intent(out) :: drrdb !! Derivative of the Rachford-Rice function real(pr) :: denom(size(z)) @@ -73,7 +88,10 @@ subroutine rachford_rice(z, K, beta, rr, drrdb) end subroutine rachford_rice subroutine solve_rr(z, K, beta, beta_min, beta_max) - !! Solve the Rachford-Rice Equation. + !! # solve_rr + !! + !! ## Description + !! Solve the Rachford-Rice Equation using the Newton method. real(pr), intent(in) :: z(:) !! Mole fractions vector real(pr), intent(in) :: K(:) !! K-factors real(pr), intent(out) :: beta_min !! Lower limit for \(\beta\) diff --git a/src/equilibria/saturations_points.f90 b/src/equilibria/saturations_points.f90 index 4f6ac71dd..489b9b7f5 100644 --- a/src/equilibria/saturations_points.f90 +++ b/src/equilibria/saturations_points.f90 @@ -17,8 +17,11 @@ module yaeos__equilibria_saturation_points contains type(EquilibriumState) function saturation_pressure(model, n, t, kind, p0, y0, max_iters) + !! # saturation_pressure + !! !! Saturation pressure calculation function. !! + !! ## Description !! Calculates the saturation pressure of a multicomponent mixture with !! a given molar composition `n`. !! It is possible to calculate: @@ -26,6 +29,16 @@ type(EquilibriumState) function saturation_pressure(model, n, t, kind, p0, y0, m !! - Bubble point: `kind="bubble"` !! - Dew point: `kind="dew"` !! - Liquid-Liquid point: `kind="liquid-liquid"` + !! + !! It will first try to converge a solution using a \(1D\) Newton method to + !! solve the equation + !! \[ + !! f(P) = \sum_i z_i K_i - 1 = 0 + !! \] + !! + !! updating \(K_i\) at each step as the ratio of fugacities of the phases. + !! If the solution does not converge, it will use a full Newton method to + !! solve the system of equations using the variables \(K_i\) and \(\ln P\). use stdlib_optval, only: optval use yaeos__m_s_sp, only: solve_TP class(ArModel), target, intent(in) :: model @@ -89,7 +102,6 @@ type(EquilibriumState) function saturation_pressure(model, n, t, kind, p0, y0, m ! Solve point ! ------------------------------------------------------------------------ do its=1, iters_first_step - ! print *, "sat solving", z, T, P y = k*z call model%lnphi_pt(y, P, T, vy, incipient, lnPhi=lnfug_y, dlnphidp=dlnphi_dp_y) call model%lnphi_pt(z, P, T, vz, main, lnPhi=lnfug_z, dlnphidp=dlnphi_dp_z) @@ -156,6 +168,15 @@ type(EquilibriumState) function saturation_temperature(model, n, p, kind, t0, y0 !! - Bubble point: `kind="bubble"` !! - Dew point: `kind="dew"` !! - Liquid-Liquid point: `kind="liquid-liquid"` + !! It will first try to converge a solution using a \(1D\) Newton method to + !! solve the equation + !! \[ + !! f(P) = \sum_i z_i K_i - 1 = 0 + !! \] + !! + !! updating \(K_i\) at each step as the ratio of fugacities of the phases. + !! If the solution does not converge, it will use a full Newton method to + !! solve the system of equations using the variables \(K_i\) and \(\ln T\). use stdlib_optval, only: optval use yaeos__m_s_sp, only: solve_TP class(ArModel), target, intent(in) :: model diff --git a/src/models/solvers/saturation_point.f90 b/src/models/solvers/saturation_point.f90 index 3bc0c8b07..540ab8e8d 100644 --- a/src/models/solvers/saturation_point.f90 +++ b/src/models/solvers/saturation_point.f90 @@ -199,6 +199,11 @@ subroutine solve_TP(model, kind, z, X, ns, S, tol, max_iterations, its) if (all(abs(F) < tol)) exit dX = solve_system(dF, -F) + + do while(maxval(abs(dX/X)) > 1) + dX = dX / 2 + end do + X = X + dX innits = 0 From daaa11153888a8af087182c84c16175a9a1f01b1 Mon Sep 17 00:00:00 2001 From: "Federico E. Benelli" Date: Fri, 15 Nov 2024 16:51:07 -0300 Subject: [PATCH 30/40] fixed HV, saturation points calculator needs fixing --- app/gpec.f90 | 44 +++++++---- c_interface/yaeos_c.f90 | 13 +++ .../boundaries/phase_envelopes_pt.f90 | 24 +++--- .../boundaries/phase_envelopes_px.f90 | 21 ++--- src/equilibria/critical.f90 | 2 +- src/equilibria/saturations_points.f90 | 14 ++-- src/math/continuation.f90 | 3 +- src/math/linalg.f90 | 2 +- .../cubic/mixing_rules/huron_vidal.f90 | 22 ++++-- src/models/solvers/saturation_point.f90 | 53 ++++++------- test/test_coso.f90 | 30 ------- test/test_critical.f90 | 18 ++--- test/test_fugacity_vt.f90 | 26 +++--- test/test_huron_vidal.f90 | 79 ++++++++++++++++--- test/test_saturation.f90 | 3 + test/test_saturation_solver.f90 | 59 +++++++++----- 16 files changed, 255 insertions(+), 158 deletions(-) delete mode 100644 test/test_coso.f90 diff --git a/app/gpec.f90 b/app/gpec.f90 index e4836772a..d07e91909 100644 --- a/app/gpec.f90 +++ b/app/gpec.f90 @@ -15,11 +15,12 @@ program gpec real(pr) :: z(nc) !! Molar fractions real(pr) :: a !! Fraction between component 1 and 2 - real(pr), parameter :: z0(nc) = [1-epsilon(1.0), epsilon(1.0)] !! Component 1 molar fractions - real(pr), parameter :: zi(nc) = [epsilon(1.0), 1-epsilon(1.0)] !! Component 2 molar fractions + real(pr), parameter :: z0(nc) = [1, 0] !! Component 1 molar fractions + real(pr), parameter :: zi(nc) = [0, 1] !! Component 2 molar fractions real(pr) :: P !! Pressure [bar] real(pr) :: T !! Temperature [K] real(pr) :: V !! Volume [L/mol] + real(pr) :: S integer :: diagram_type !! Diagram type @@ -30,27 +31,40 @@ program gpec ! =========================================================================== ! Set up the model ! --------------------------------------------------------------------------- - model = get_model_nrtl_mhv() - ! sus(1) = Substance("methane") - ! sus(2) = Substance("n-butane") - ! model = PengRobinson76(& - ! Tc=sus%critical%critical_temperature%value, & - ! Pc=sus%critical%critical_pressure%value/1e5, & - ! w=sus%critical%acentric_factor%value & - ! ) + ! model = get_model_nrtl_mhv() + sus(1) = Substance("methane") + sus(2) = Substance("n-butane") + model = PengRobinson76(& + Tc=sus%critical%critical_temperature%value, & + Pc=sus%critical%critical_pressure%value/1e5, & + w=sus%critical%acentric_factor%value & + ) ! =========================================================================== ! Calculate both saturation curves ! --------------------------------------------------------------------------- + print *, model%components%Tc + print *, model%components%Pc do i=0,1 - z = i*zi + (1-i)*z0 - sat_point = saturation_temperature(model, z, P=0.1_pr, kind="bubble") - psats(i+1) = pt_envelope_2ph(model, z, sat_point) + sat_point = critical_point(model, z0, zi, S=S, spec=CPSpec%a, max_iters=1000, a0=S) + + print *, sat_point%iters, sat_point + psats(i+1) = pt_envelope_2ph(model, z, sat_point, delta_0=-0.1_pr) + end do + call exit + + print *, "Psat 1" + do i=1,size(psats(1)%points) + print *, psats(1)%points(i)%T, psats(1)%points(i)%P end do - print *, psats(1) + print *, "" print *, "" - print *, psats(2) + + print *, "Psat 2" + do i=1,size(psats(2)%points) + print *, psats(2)%points(i)%T, psats(2)%points(i)%P + end do ! =========================================================================== ! Calculate the first critical line (2 -> 1) diff --git a/c_interface/yaeos_c.f90 b/c_interface/yaeos_c.f90 index 7a136de47..d0421c6b2 100644 --- a/c_interface/yaeos_c.f90 +++ b/c_interface/yaeos_c.f90 @@ -318,6 +318,19 @@ end subroutine psrk ! ========================================================================== ! Thermodynamic properties ! -------------------------------------------------------------------------- + subroutine residual_helmholtz(id, n, v, t, ar, ArT, ArV, ArTV, ArV2, ArT2, Arn, ArVn, ArTn, Arn2) + integer(c_int), intent(in) :: id + real(c_double), intent(in) :: n(:), v, t + real(c_double), intent(out) :: ar + real(c_double), optional, intent(out) :: & + ArT, ArV, ArTV, ArV2, ArT2, Arn(size(n)), ArVn(size(n)), ArTn(size(n)), Arn2(size(n), size(n)) + + call ar_models(id)%model%residual_helmholtz(& + n=n, V=V, T=T, & + Ar=Ar, ArV=ArV, ArT=ArT, ArTV=ArTV, & + ArV2=ARV2, ArT2=ArT2, Arn=Arn, ArVn=ArVn, ArTn=ArTn, Arn2=Arn2) + end subroutine + subroutine lnphi_vt(id, n, v, t, lnphi, dlnphidp, dlnphidt, dlnphidn) integer(c_int), intent(in) :: id real(c_double), intent(in) :: n(:), v, t diff --git a/src/equilibria/boundaries/phase_envelopes_pt.f90 b/src/equilibria/boundaries/phase_envelopes_pt.f90 index 87324ee00..623a81413 100644 --- a/src/equilibria/boundaries/phase_envelopes_pt.f90 +++ b/src/equilibria/boundaries/phase_envelopes_pt.f90 @@ -35,7 +35,7 @@ module yaeos__equilibria_boundaries_phase_envelopes_pt function pt_envelope_2ph(& model, z, first_point, & points, iterations, delta_0, specified_variable_0, & - solver, stop_conditions & + solver, stop_conditions, maximum_pressure & ) result(envelopes) !! PT two-phase envelope calculation procedure. !! @@ -66,6 +66,8 @@ function pt_envelope_2ph(& !! Specify solver for each point, defaults to a full newton procedure procedure(continuation_stopper), optional :: stop_conditions !! Function that returns true if the continuation method should stop + real(pr), optional, intent(in) :: maximum_pressure + !! Maximum pressure to calculate [bar] type(PTEnvel2) :: envelopes ! ------------------------------------------------------------------------ @@ -117,7 +119,7 @@ function pt_envelope_2ph(& ! ------------------------------------------------------------------------ XS = continuation(& foo, X, ns0=ns, S0=S0, & - dS0=dS0, max_points=max_points, solver_tol=1.e-9_pr, & + dS0=dS0, max_points=max_points, solver_tol=1.e-7_pr, & update_specification=update_spec, & solver=solver, stop=stop_conditions & ) @@ -252,13 +254,17 @@ subroutine update_spec(X, ns, S, dS, dXdS, step_iters) ] & ) - do while(abs(dXdS(ns)*dS) < 0.1 .and. ns > nc) - dS = dS*2 + do while(abs(dXdS(nc+1)*dS) < 0.01 .and. abs(dXdS(nc+2)*dS) < 0.01) + dS = dS * 1.1 end do - - ! do while(maxval(abs(dXdS(:nc)*dS)) > 0.1 * maxval(abs(X(:nc)))) - ! dS = 0.7*dS - ! end do + + do while(maxval(abs(dXdS(:nc)*dS)) > 0.1 * maxval(abs(X(:nc)))) + dS = 0.7*dS + end do + + if (present(maximum_pressure)) then + if (X(nc+2) > log(maximum_pressure)) dS = 0 + end if call save_point(X, step_iters) call detect_critical(X, dXdS, ns, S, dS) @@ -334,7 +340,7 @@ subroutine detect_critical(X, dXdS, ns, S, dS) inner = 0 do while (& - maxval(abs(X(:nc))) < 0.06 & + maxval(abs(X(:nc))) < 0.01 & .and. inner < 5000) ! If near a critical point, jump over it inner = inner + 1 diff --git a/src/equilibria/boundaries/phase_envelopes_px.f90 b/src/equilibria/boundaries/phase_envelopes_px.f90 index c2ffd6199..acde0092f 100644 --- a/src/equilibria/boundaries/phase_envelopes_px.f90 +++ b/src/equilibria/boundaries/phase_envelopes_px.f90 @@ -111,6 +111,8 @@ function px_envelope_2ph(& X(nc+1) = log(first_point%P) X(nc+2) = alpha0 S0 = X(ns) + ! print *, X, S0 + ! call exit allocate(envelopes%points(0), envelopes%cps(0), envelopes%alpha(0)) test_numdiff: block @@ -124,7 +126,7 @@ function px_envelope_2ph(& do i=1,size(X) dx = 0 - dx(i) = 1.e-3_pr * X(i) + dx(i) = 1.e-5_pr * X(i) call foo(X - dx, ns, S0, FdX, df, dFdS) call foo(X + dx, ns, S0, FdX2, df, dFdS) call foo(X, ns, S0, F, df, dFdS) @@ -140,7 +142,7 @@ function px_envelope_2ph(& loc = maxloc(abs(numdiff - df)) print *, loc print *, df(loc(1), loc(2)), numdiff(loc(1), loc(2)) - ! error stop 1 + error stop 1 end if end block test_numdiff @@ -150,7 +152,7 @@ function px_envelope_2ph(& ! ------------------------------------------------------------------------ XS = continuation(& foo, X, ns0=ns, S0=S0, & - dS0=dS0, max_points=max_points, solver_tol=1.e-9_pr, & + dS0=dS0, max_points=max_points, solver_tol=1.e-5_pr, & update_specification=update_spec, & solver=solver, stop=stop_conditions & ) @@ -220,9 +222,10 @@ recursive subroutine foo(X, ns, S, F, dF, dFdS) ! Jacobian Matrix do i = 1, nc do j = 1, nc - df(i, j) = y(j)*dlnphi_dn_y(i, j) + df(i, j) = y(j) * dlnphi_dn_y(i, j) end do df(i, i) = df(i, i) + 1 + df(i, nc + 2) = sum(K*dlnphi_dn_y(i, :)*dzda - dlnphi_dn_z(i, :)*dzda) end do @@ -260,8 +263,7 @@ subroutine update_spec(X, ns, S, dS, dXdS, step_iters) ! - Update dS wrt specification units ! - Set step ! --------------------------------------------------------------------- - write(1, *) X - if (maxval(abs(X(:nc))) < 0.5_pr) then + if (maxval(abs(X(:nc))) < 0.1_pr .and. abs(Vz - Vy) < 0.01) then ns = maxloc(abs(dXdS(:nc)), dim=1) maxdS = 0.01_pr else @@ -271,6 +273,7 @@ subroutine update_spec(X, ns, S, dS, dXdS, step_iters) dS = dXdS(ns) * dS dXdS = dXdS/dXdS(ns) + dS = sign(1.0_pr, dS) * minval([ & max(sqrt(abs(X(ns))/10._pr), 0.1_pr), & @@ -278,10 +281,8 @@ subroutine update_spec(X, ns, S, dS, dXdS, step_iters) ] & ) - dS = sign(1.0_pr, dS) * maxval([abs(dS), maxdS]) - - do while(abs(dXdS(nc+2)*dS) > 0.1_pr .or. abs(dXdS(nc+1)*dS) > 0.1_pr) - dS = dS/2 + do while (maxval(abs(dXdS(:nc)*dS)) < 0.05) + dS = dS*1.1_pr end do call save_point(X, step_iters) diff --git a/src/equilibria/critical.f90 b/src/equilibria/critical.f90 index 240f0d577..411db6082 100644 --- a/src/equilibria/critical.f90 +++ b/src/equilibria/critical.f90 @@ -359,7 +359,7 @@ type(EquilibriumState) function critical_point(& if (present(a0)) then X(1) = a0 else - X(1) = 0.0_pr + X(1) = 0.5_pr end if z = X(1)*zi + (1-X(1))*z0 diff --git a/src/equilibria/saturations_points.f90 b/src/equilibria/saturations_points.f90 index 489b9b7f5..3198e16eb 100644 --- a/src/equilibria/saturations_points.f90 +++ b/src/equilibria/saturations_points.f90 @@ -1,5 +1,5 @@ module yaeos__equilibria_saturation_points - use yaeos__constants, only: pr + use yaeos__constants, only: pr, R use yaeos__models, only: ArModel use yaeos__equilibria_equilibrium_state, only: EquilibriumState use yaeos__equilibria_auxiliar, only: k_wilson @@ -7,13 +7,11 @@ module yaeos__equilibria_saturation_points implicit none - real(pr) :: tol = 1e-9_pr + real(pr) :: tol = 1e-6_pr integer :: max_iterations = 2000 - integer :: iters_first_step = 100 + integer :: iters_first_step = 15 real(pr) :: step_tol = 0.1_pr - real(pr), private :: Vz, Vy - contains type(EquilibriumState) function saturation_pressure(model, n, t, kind, p0, y0, max_iters) @@ -54,12 +52,13 @@ type(EquilibriumState) function saturation_pressure(model, n, t, kind, p0, y0, m real(pr) :: k(size(n)), y(size(n)), z(size(n)), lnk(size(n)) real(pr) :: lnfug_y(size(n)), dlnphi_dp_y(size(n)) real(pr) :: lnfug_z(size(n)), dlnphi_dp_z(size(n)) + real(pr) :: Vz, Vy character(len=50) :: incipient character(len=50) :: main real(pr) :: f, step - integer :: its, iterations, i + integer :: its, iterations ! ======================================================================= ! Handle arguments @@ -270,7 +269,8 @@ type(EquilibriumState) function saturation_temperature(model, n, p, kind, t0, y0 if (abs(step) < tol .and. abs(f) < tol) exit end do ! ======================================================================== - if (its > iters_first_step) then + !if (its >= iters_first_step) then + if (.true.) then block real(pr) :: X(size(n)+2), S integer :: ns, nc diff --git a/src/math/continuation.f90 b/src/math/continuation.f90 index d7c0507fd..9826de269 100644 --- a/src/math/continuation.f90 +++ b/src/math/continuation.f90 @@ -203,10 +203,9 @@ subroutine full_newton(& X0 = X newton: do iters = 1, max_iters ! Converged point - ! if (maxval(abs(dx)) < tol .or. maxval(abs(F)) < 1e-13) exit newton + if (maxval(abs(dx)) < tol .or. maxval(abs(F)) < tol) exit newton call fun(X, ns, S, F, dF, dFdS) - if (maxval(abs(F)) < tol) exit dX = solve_system(dF, -F) diff --git a/src/math/linalg.f90 b/src/math/linalg.f90 index 72b9202d0..f44928915 100644 --- a/src/math/linalg.f90 +++ b/src/math/linalg.f90 @@ -39,7 +39,7 @@ end subroutine dgesv b_lapack = b call dgesv(n, nrhs, a_lapack, lda, ipiv, b_lapack, ldb, info) - if (info > 0) write(error_unit, *) "WARN: dgesv error" + ! if (info > 0) write(error_unit, *) "WARN: dgesv error" x = b_lapack end function solve_system diff --git a/src/models/residual_helmholtz/cubic/mixing_rules/huron_vidal.f90 b/src/models/residual_helmholtz/cubic/mixing_rules/huron_vidal.f90 index b08bb5f9d..68b7d3416 100644 --- a/src/models/residual_helmholtz/cubic/mixing_rules/huron_vidal.f90 +++ b/src/models/residual_helmholtz/cubic/mixing_rules/huron_vidal.f90 @@ -160,15 +160,24 @@ subroutine DmixHV(self, n, T, & n, T, Ge=Ge, GeT=GeT, GeT2=GeT2, Gen=Gen, GeTn=GeTn, Gen2=Gen2 & ) - f = sum(n*ai/bi) - Ge/L - fdt = sum(n*daidt/bi) - GeT/L + f = sum(n*ai/bi) - Ge/L + fdt = sum(n*daidt/bi) - GeT/L fdt2 = sum(n*daidt2/bi) - GeT2/L fdi = ai/bi - (Gen/L - dL * Ge/L**2) fdiT = daidt/bi - (GeTn/L - dL * GeT/L**2) do concurrent(i=1:nc, j=1:nc) - fdij(i, j) = Gen2(i, j)/L - dL(j) * Gen(i)/L**2 - (dL2(i,j) * Gen2(i,j)/L**2 + dL(i)*(Gen2(i,j)/L**2-Gen(i)/L * dL(j)/2)) + fdij(i, j) = & + Ge * dL2(i, j) / L**2 & + - 2 * Ge * dL(i) * dL(j) / L**3 & + - Gen2(i, j) / L & + + Gen(i) * dL(j) / L**2 & + + Gen(j) * dL(i) / L**2 + ! Gen2(i, j)/L & + ! - dL(j) * Gen(i)/L**2 & + ! - (dL2(i,j) * Gen2(i,j)/L**2 & + ! + dL(i)*(Gen2(i,j)/L**2-Gen(i)/L * dL(j)/2)) end do dDi = B*fdi + f*dBi @@ -178,8 +187,11 @@ subroutine DmixHV(self, n, T, & dDdT = fdT*B dDdT2 = fdT2*B dDij = fdij - do j=1,nc - dDij(:, j) = dBi(j)*fdi + B*fdij(:, j) + f*dBij(:, j) + fdi(j)*dBi + + do i=1,nc + do j=1,nc + dDij(i, j) = dBi(j)*fdi(i) + B*fdij(j, i) + f*dBij(i, j) + fdi(j)*dBi(i) + end do end do end subroutine DmixHV diff --git a/src/models/solvers/saturation_point.f90 b/src/models/solvers/saturation_point.f90 index 540ab8e8d..9a3d83439 100644 --- a/src/models/solvers/saturation_point.f90 +++ b/src/models/solvers/saturation_point.f90 @@ -31,6 +31,8 @@ subroutine saturation_F(model, z, X, ns, S, F, dF) real(pr) :: dlnfug_dP_y(size(model)) real(pr) :: Py, dPdTy, dPdVy, dPdn_y(size(z)) + real(pr) :: lnPspec + integer :: j, nc nc = size(z) @@ -38,7 +40,8 @@ subroutine saturation_F(model, z, X, ns, S, F, dF) y = z * exp(X(:nc)) Vz = exp(X(nc+1)) Vy = exp(X(nc+2)) - T = X(nc+3) + T = exp(X(nc+3)) + lnPspec = X(nc+4) if (present(df)) then call model%lnfug_vt(& @@ -62,7 +65,8 @@ subroutine saturation_F(model, z, X, ns, S, F, dF) F(:nc) = lnfug_y - lnfug_z F(nc + 1) = sum(y - z) F(nc + 2) = Py - Pz - F(nc + 3) = X(ns) - S + F(nc + 3) = lnPspec - log(Py) + F(nc + 4) = X(ns) - S if (present(dF)) then dF = 0 @@ -74,7 +78,7 @@ subroutine saturation_F(model, z, X, ns, S, F, dF) dF(:nc, nc+1) = -dlnfug_dV_z * Vz dF(:nc, nc+2) = dlnfug_dV_y * Vy - dF(:nc, nc+3) = dlnfug_dT_y - dlnfug_dT_z + dF(:nc, nc+3) = T * (dlnfug_dT_y - dlnfug_dT_z) ! mass balance df(nc+1, :nc) = y @@ -83,9 +87,15 @@ subroutine saturation_F(model, z, X, ns, S, F, dF) df(nc+2, :nc) = y * dPdn_y df(nc+2, nc+1) = -dPdVz * Vz df(nc+2, nc+2) = dPdVy * Vy - df(nc+2, nc+3) = dPdTy - dPdTz + df(nc+2, nc+3) = T*(dPdTy - dPdTz) + + df(nc+3, :nc) = -y * dPdn_y/Py + df(nc+3, nc+1) = 0 + df(nc+3, nc+2) = -dPdVy * Vy / Py + df(nc+3, nc+3) = -dPdTy * T / Py + df(nc+3, nc+4) = 1 - df(nc+3, ns) = 1 + df(nc+4, ns) = 1 end if end subroutine saturation_F @@ -193,27 +203,15 @@ subroutine solve_TP(model, kind, z, X, ns, S, tol, max_iterations, its) real(pr) :: dFdS(size(X)) real(pr) :: dx(size(X)) - its = 0 - do while (its < max_iterations) - call saturation_TP(model, kind, z, X, ns, S, F, dF, dFdS) - if (all(abs(F) < tol)) exit - dX = solve_system(dF, -F) - do while(maxval(abs(dX/X)) > 1) - dX = dX / 2 - end do + its= 0 + do while (its < max_iterations) + call saturation_TP(model=model, z=z, kind=kind, X=X, ns=ns, S=S, F=F, dF=dF, dFdS=dFdS) + dX = solve_system(dF, -F) X = X + dX - - innits = 0 - do while (any(isnan(F))) - innits = innits + 1 - if (innits > 100) exit - X = X - dx*0.9 - call saturation_TP(model, kind, z, X, ns, S, F, dF, dFdS) - end do - + if (all(abs(F) < tol)) exit its = its + 1 end do @@ -229,11 +227,14 @@ subroutine solve_VxVyT(model, z, X, ns, S, tol, max_iterations, its) real(pr), intent(in) :: tol integer, intent(in) :: max_iterations integer, intent(out) :: its - + + integer :: nc real(pr) :: F(size(X)) real(pr) :: dF(size(X), size(X)) real(pr) :: dFdS(size(X)) - real(pr) :: dx(size(X)) + real(pr) :: Xold(size(X)), dx(size(X)), dx_old(size(x)) + + nc = size(X) - 4 its = 0 do while (its < max_iterations) @@ -244,10 +245,6 @@ subroutine solve_VxVyT(model, z, X, ns, S, tol, max_iterations, its) X = X + dX - do while (any(isnan(F))) - X = X - 0.9_pr * dx - call saturation_F(model, z, X, ns, S, F, dF) - end do its = its + 1 end do end subroutine solve_VxVyT diff --git a/test/test_coso.f90 b/test/test_coso.f90 deleted file mode 100644 index b29602146..000000000 --- a/test/test_coso.f90 +++ /dev/null @@ -1,30 +0,0 @@ -program main - use yaeos - type(CriticalLine) :: cl - type(CubicEoS) :: model - real(pr) :: zi(2), z0(2), tc(2), pc(2), w(2), eps - integer :: i - - zi = [0.1_pr, 0.9_pr] - - tc = [304.21, 727.0] - pc = [73.83, 25.6] - w = [0.223621, 0.427556] - - model = PengRobinson76(tc, pc, w) - - eps = 1e-3 - zi = [1-epsilon(eps), eps] - z0 = [eps, 1 -eps] - - cl = critical_line(model, a0=eps, z0=z0, zi=zi, ds0=1e-3_pr) - - ! print *, size(cl%a) - - do i=1,size(cl%a) - print *, cl%a(i), cl%T(i), cl%P(i), cl%V(i) - end do - - ! yaeos.yaeos_c.critical_line(model.id, a0=eps, da0=1e-3, z0=z0, zi=zi, max_points=100) - -end program \ No newline at end of file diff --git a/test/test_critical.f90 b/test/test_critical.f90 index 22ded68bf..01b0fc87f 100644 --- a/test/test_critical.f90 +++ b/test/test_critical.f90 @@ -25,8 +25,8 @@ program main z = a*zi + (1-a)*z0 ! Get the full phase envelope of the fluid - sat = saturation_temperature(model, z, P=0.01_pr, kind="dew") - env = pt_envelope_2ph(model, z, sat) + sat = saturation_temperature(model, z, P=0.0001_pr, kind="dew") + env = pt_envelope_2ph(model, z, sat, maximum_pressure=1000._pr) ! Calculate the critical point T = sum(model%components%Tc * z) @@ -37,23 +37,21 @@ program main crit = critical_point(model, z0, zi, S=a, spec=CPSpec%a, max_iters=300, a0=a) if (sum([crit%T, crit%P] - [env%cps(1)%T, env%cps(1)%P])**2 > 1e-2) then - print *, "Critical point failed" - stop 1 + error stop "Critical point failed" end if ! Now test the critical lines - cl = critical_line(model, a0=a, z0=z0, zi=zi, dS0=0.01_pr) + cl = critical_line(model, a0=a, z0=z0, zi=zi, dS0=0.1_pr, max_points=5000) + do i=1,5 - print *, "env", i a = cl%a(i) z = a*zi + (1-a)*z0 - sat = saturation_temperature(model, z, P=0.01_pr, kind="dew") - env = pt_envelope_2ph(model, z, sat) + sat = saturation_temperature(model, z, P=0.1_pr, kind="dew") + env = pt_envelope_2ph(model, z, sat, maximum_pressure=1000._pr) if (sum(([cl%T(i), cl%P(i)] - [env%cps(1)%T, env%cps(1)%P]))**2 > 1e-2) then - print *, "Critical line failed" - stop 1 + error stop "Critical line failed" end if end do diff --git a/test/test_fugacity_vt.f90 b/test/test_fugacity_vt.f90 index 2759d2a82..6d470f041 100644 --- a/test/test_fugacity_vt.f90 +++ b/test/test_fugacity_vt.f90 @@ -23,31 +23,33 @@ program main P=P, dlnfdt=dlnfdt, & dlnfdv=dlnfdv, dlnfdn=dlnfdn) - print *, "lnf" - print *, lnf - print *, lnfug(n, V, T) + + if (sum(abs(lnf - lnfug(n, V, T))) > 1e-6) then + error stop "lnf failed" + end if dx = 0.0001 - print *, "dt" numdiff = (lnfug(n, V, T+dx) - lnfug(n, V, T))/dx - print *, dlnfdt - print *, numdiff + + if (sum(abs(dlnfdt - numdiff)) > 1e-6) then + error stop "dlnfdt failed" + end if - print *, "dv" dx = 0.0001_pr numdiff = (lnfug(n, V+dx, T ) - lnfug(n, V, T))/dx - print *, dlnfdv - print *, numdiff + if (sum(abs(dlnfdv - numdiff)) > 1e-4) then + error stop "dlnfdv failed" + end if - print *, "dn" do i=1,nc dn = 0.0_pr dn(i) = 0.000001_pr numdiff_dn(i, :) = (lnfug(n+dn, V, T) - lnfug(n, V, T))/dn(i) end do - print *, dlnfdn - print *, numdiff_dn + if (sum(abs(dlnfdn - numdiff_dn)) > 1e-6) then + error stop "dlnfdn failed" + end if contains diff --git a/test/test_huron_vidal.f90 b/test/test_huron_vidal.f90 index d3a17f202..f2d649611 100644 --- a/test/test_huron_vidal.f90 +++ b/test/test_huron_vidal.f90 @@ -11,15 +11,16 @@ program main real(pr) :: test_dDi(nc) = [44.282156269357145, 65.486908012229634] real(pr) :: test_dDidT(nc) = [-0.11932459578485301, -0.20145758095042413] real(pr) :: test_dDij(nc, nc) = reshape( & - [25.301358190454181, 49.027354964263466, & - 49.027354964263466, 69.601795054432472], [nc, nc]) + [26.205198410827229, 48.801394909170199, & + 48.801394909170199,69.658285068205771 ], [nc, nc]) real(pr) :: ai(nc), daidt(nc), daidt2(nc) - real(pr) :: n(nc), T, Tr(nc), Tc(nc) + real(pr) :: n(nc), T, Tr(nc), Tc(nc), dn(nc) - real(pr) :: D, dDdT, dDdT2, dDi(nc), dDidT(nc), dDij(nc,nc) + real(pr) :: D, dDdT, dDdT2, dDi(nc), dDidT(nc), dDij(nc,nc), dx type(CubicEoS) :: model + integer :: i, j model = binary_NRTL_SRK_HV() @@ -37,12 +38,51 @@ program main daidt2 = daidt2*model%ac/Tc**2 call model%mixrule%Dmix(n, T, ai, daidt, daidt2, D, dDdT, dDdT2, dDi, dDidT, dDij) - print *, D - print *, dDdT - print *, dDdT2 - print *, dDi - print *, dDidT - print *, dDij + + ! print *, "numdiff" + + ! print *, "dDdT", dDdT, (Dhv(n, T+0.01) - Dhv(n, T))/0.01 + ! print *, "dDdT2", dDdT2, (Dhv(n, T+0.01) - 2*Dhv(n, T) + Dhv(n, T-0.01))/(0.01**2) + + ! print *, "dDi" + do i = 1, nc + dn = 0 + dn(i) = 0.001 + ! print *, dDi(i), (Dhv(n + dn, T) - Dhv(n - dn, T))/(2 * dn(i)) + end do + + ! print *, "dDidT" + do i = 1, nc + dn = 0 + dn(i) = 0.005 + + print *, dDidT(i), (& + Dhv(n + dn, T + dn(i)) & + - Dhv(n + dn, T - dn(i)) & + - Dhv(n - dn, T + dn(i)) & + + Dhv(n - dn, T - dn(i)) & + )/(4 * dn(i)**2) + end do + + ! print *, "dDij" + + dn = 0 + dn(1) = 1e-5 + ! print *, dDij(1, 1), (Dhv(n + dn, T) - 2*Dhv(n, T) + Dhv(n - dn, T))/(dn(1)**2) + + dn = 0 + dn(2) = 1e-5 + ! print *, dDij(2, 2), (Dhv(n + dn, T) - 2*Dhv(n, T) + Dhv(n - dn, T))/(dn(2)**2) + + dx = 1e-6 + + ! print *, dDij(1, 2), (& + ! Dhv(n + [dx, dx], T) & + ! - Dhv(n + [-dx, dx], T) & + ! - Dhv(n + [dx, -dx], T) & + ! + Dhv(n + [-dx, -dx], T) & + ! )/(4 * dx **2) + if (.not. allclose([D], [test_D], test_tol)) error stop 1 if (.not. allclose([dDdT], [test_dDdT], test_tol)) error stop 1 @@ -51,6 +91,25 @@ program main if (.not. allclose([dDidT], [test_dDidT], test_tol)) error stop 1 if (.not. allclose([dDij], [test_dDij], test_tol)) error stop 1 +contains + + real(pr) function Dhv(n, T) + real(pr), intent(in) :: n(:), T + + real(pr) :: Tc(size(n)), Tr(size(n)) + real(pr), dimension(size(n)) :: ai, daidt, dadit2 + real(pr) :: D, dDdT, dDdT2, dDi(size(n)), dDidT(size(n)), dDij(size(n), size(n)) + + Tc = model%components%Tc + Tr = T/Tc + + call model%alpha%alpha(Tr, ai, daidt, daidt2) + ai = ai*model%ac + daidt = daidt*model%ac/Tc + daidt2 = daidt2*model%ac/Tc**2 + call model%mixrule%Dmix(n, T, ai, daidt, daidt2, D, dDdT, dDdT2, dDi, dDidT, dDij) + Dhv = D + end function end program main diff --git a/test/test_saturation.f90 b/test/test_saturation.f90 index 38cffa04f..65547f39d 100644 --- a/test/test_saturation.f90 +++ b/test/test_saturation.f90 @@ -102,6 +102,9 @@ subroutine test_dew_temperature(error) model = binary_PR76() dew = saturation_temperature(model, n, P, kind="dew", t0=250._pr) + + print *, dew + call check(error, abs(dew%P-P) < abs_tolerance) call check(error, abs(dew%T-T) < abs_tolerance) call check(error, maxval(abs(dew%x-x)) < abs_tolerance) diff --git a/test/test_saturation_solver.f90 b/test/test_saturation_solver.f90 index c7c51bba4..686ba71e6 100644 --- a/test/test_saturation_solver.f90 +++ b/test/test_saturation_solver.f90 @@ -9,14 +9,16 @@ program main class(ArModel), allocatable :: model type(EquilibriumState) :: sat + type(PTEnvel2) :: env - integer, parameter :: nc = 2, nf = nc + 3 + integer, parameter :: nc = 2, nf = nc + 4 real(pr) :: n(nc), T, P, Vy, Vz, X(nf), S, F(nf), df(nf,nf) real(pr) :: dx(nf), dFnum(nf, nf), Fdx(nf), dftmp(nf,nf) real(pr) :: Px, Py integer :: i, ns type(timer) :: tim + real(pr) :: et,st, t1, t2 model = binary_PR76() @@ -25,16 +27,28 @@ program main T = 200._pr sat = saturation_pressure(model, n, T=T, kind="bubble") + sat = saturation_temperature(model, n, P=20._pr, kind="bubble") - print *, "saturation_pressure" - print *, sat%iters, sat%x, sat%y, sat%P - - print *, "solve yVxVy" + print *, "saturation_pressure" + print *, sat%iters, sat%x, sat%y, sat%T, sat%P + ! call numdiff + call cpu_time(st) + print *, "solve yVxVy" call VxVy + call cpu_time(et) + t1 = et-st + print *, (et-st)*1e6, "us" + + call cpu_time(st) call TP + call cpu_time(et) + t2 = et-st + print *, (et-st)*1e6, "us" + + print *, t2/t1 contains @@ -44,9 +58,10 @@ subroutine numdiff call model%pressure(n=n, V=Vz, T=T, P=P) X(:nc) = log(sat%y/sat%x) - X(nc+1) = Vz - X(nc+2) = Vy - X(nc+3) = T + X(nc+1) = log(Vz) + X(nc+2) = log(Vy) + X(nc+3) = log(T) + X(nc+4) = log(P) S = T ns = nc+3 dx = 0 @@ -68,34 +83,42 @@ subroutine numdiff end subroutine numdiff subroutine VxVy - real(pr) :: X(nc+3), S, tol=1e-10 + real(pr) :: X(nc+4), S, tol=1e-10 integer :: ns, its X(1) = 1.0 X(2) = 0.5 X(3) = log(0.1) X(4) = log(0.7) - X(5) = T + X(5) = log(T) + X(6) = log(20.0) - ns = 5 + ns = 6 S = X(ns) - call solve_VxVyT(model, n, X, ns, S, tol, 100, its) - print *, its, n*exp(X(:nc)), exp(X(nc+1)), exp(X(nc+2)), X(5) + print *, "solveVxVyPT" + + call solve_VxVyT(model, n, X, ns, S, tol, 1000, its) + print *, its, n*exp(X(:nc)), exp(X(5)), exp(X(6)) end subroutine VxVy subroutine TP real(pr) :: X(nc+2), S, tol=1e-10 + + real(pr) :: lnphi_z(nc), lnphi_y(nc) + + real(pr) :: Vz, Vy, y(nc), Pz, Py integer :: its, ns print *, "solve_TP" X(1) = log(1.0) X(2) = log(0.1) - X(3) = log(T) - X(4) = log(200.0) - ns = 3 + X(3) = log(230.) + X(4) = log(20.0) + ns = 4 S = X(ns) - call solve_TP(model, "bubble", n, X, ns, S, tol, 100, its) - print *, its, n*exp(X(:nc)), exp(X(nc+1:)) + call solve_TP(model, "bubble", n, X, ns, S, tol, 1000, its) + y = n * exp(X(:nc)) + print *, its, y, exp(X(nc+1:)) end subroutine TP end program main From e1edcfca857431a93c6d77b42009753090d91804 Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 17 Nov 2024 20:48:05 -0300 Subject: [PATCH 31/40] improved solvers a bit --- .../boundaries/phase_envelopes_pt.f90 | 25 +++++--- src/equilibria/critical.f90 | 6 +- src/equilibria/saturations_points.f90 | 7 +-- src/math/continuation.f90 | 2 + test/test_critical.f90 | 63 ++++++++++++++++--- 5 files changed, 76 insertions(+), 27 deletions(-) diff --git a/src/equilibria/boundaries/phase_envelopes_pt.f90 b/src/equilibria/boundaries/phase_envelopes_pt.f90 index 623a81413..722ec65ca 100644 --- a/src/equilibria/boundaries/phase_envelopes_pt.f90 +++ b/src/equilibria/boundaries/phase_envelopes_pt.f90 @@ -107,7 +107,7 @@ function pt_envelope_2ph(& where(z == 0) X(:nc) = 0 - end where + end where X(nc+1) = log(first_point%T) X(nc+2) = log(first_point%P) @@ -197,7 +197,7 @@ subroutine foo(X, ns, S, F, dF, dFdS) df(:nc, nc + 2) = P * (dlnphi_dp_y - dlnphi_dp_z) df(nc + 1, :nc) = y - + do i=1,nc if (z(i) == 0) then F(i) = 0 @@ -254,10 +254,15 @@ subroutine update_spec(X, ns, S, dS, dXdS, step_iters) ] & ) - do while(abs(dXdS(nc+1)*dS) < 0.01 .and. abs(dXdS(nc+2)*dS) < 0.01) + ! Avoid small steps on T or P + do while(& + abs(dXdS(nc+1)*dS) < 0.05 & + .and. abs(dXdS(nc+2)*dS) < 0.05 & + .and. dS /= 0) dS = dS * 1.1 end do + ! Dont make big steps in compositions do while(maxval(abs(dXdS(:nc)*dS)) > 0.1 * maxval(abs(X(:nc)))) dS = 0.7*dS end do @@ -265,7 +270,7 @@ subroutine update_spec(X, ns, S, dS, dXdS, step_iters) if (present(maximum_pressure)) then if (X(nc+2) > log(maximum_pressure)) dS = 0 end if - + call save_point(X, step_iters) call detect_critical(X, dXdS, ns, S, dS) end subroutine update_spec @@ -340,7 +345,7 @@ subroutine detect_critical(X, dXdS, ns, S, dS) inner = 0 do while (& - maxval(abs(X(:nc))) < 0.01 & + maxval(abs(X(:nc))) < 0.07 & .and. inner < 5000) ! If near a critical point, jump over it inner = inner + 1 @@ -427,13 +432,13 @@ type(PTEnvel2) function find_hpl(model, z, T0, P0) !! of the same component in a pure phase. This is done for each component !! in the mixture. The component with the highest temperature is selected !! as it should be the first one appearing. If all components have a - !! negative difference then the mixture is probably stable at all + !! negative difference then the mixture is probably stable at all !! temperatures. class(ArModel), intent(in) :: model !! Equation of state model real(pr), intent(in) :: z(:) !! Mole fractions real(pr), intent(in) :: T0 !! Initial temperature [K] real(pr), intent(in) :: P0 !! Search pressure [bar] - + integer :: i real(pr) :: y(size(z)) real(pr) :: lnphi_y(size(z)), lnphi_z(size(z)) @@ -447,13 +452,13 @@ type(PTEnvel2) function find_hpl(model, z, T0, P0) do ncomp=1,nc y = 0 y(ncomp) = 1 - + do i=int(T0), 1, -10 T = real(i, pr) call model%lnphi_pt(z, P, T, root_type="liquid", lnPhi=lnphi_z) call model%lnphi_pt(y, P, T, root_type="liquid", lnPhi=lnphi_y) - ! Fugacity of the component ncomp + ! Fugacity of the component ncomp ! z * phi_i_mixture / phi_i_pure ! if eq > 1 then the fugacity in the mixture is above the pure, ! so the component is more stable on another phase @@ -483,6 +488,6 @@ type(PTEnvel2) function find_hpl(model, z, T0, P0) find_hpl = pt_envelope_2ph( & model, z, fr, & specified_variable_0=nc+2, delta_0=-5.0_pr, iterations=1000) - end function + end function find_hpl end module yaeos__equilibria_boundaries_phase_envelopes_pt diff --git a/src/equilibria/critical.f90 b/src/equilibria/critical.f90 index 411db6082..d6136c0ef 100644 --- a/src/equilibria/critical.f90 +++ b/src/equilibria/critical.f90 @@ -159,7 +159,7 @@ subroutine foo(X, ns, S, F, dF, dFdS) real(pr) :: z(size(u)), Xsol(3) - if (X(1) > 1) then + if (X(CPSpec%a) > 1) then return end if @@ -179,12 +179,10 @@ subroutine update_specification(X, ns, S, dS, dXdS, iterations) real(pr), intent(in out) :: dXdS(:) !! \(\frac{dX}{dS}\) integer, intent(in) :: iterations !! Iterations needed to converge point - - ns = maxloc(abs(dXdS), dim=1) dS = dXdS(ns)*dS dXdS = dXdS/dXdS(ns) - if (exp(X(4)) > max_P) then + if (exp(X(CPSpec%P)) > max_P) then dS = 0 end if diff --git a/src/equilibria/saturations_points.f90 b/src/equilibria/saturations_points.f90 index 3198e16eb..c4311c9f9 100644 --- a/src/equilibria/saturations_points.f90 +++ b/src/equilibria/saturations_points.f90 @@ -208,7 +208,7 @@ type(EquilibriumState) function saturation_temperature(model, n, p, kind, t0, y0 if (present (t0)) then t = t0 else - t = 150._pr + t = 250._pr end if if (present(y0)) then @@ -259,7 +259,7 @@ type(EquilibriumState) function saturation_temperature(model, n, p, kind, t0, y0 if (.not. ieee_is_finite(step) .or. ieee_is_nan(step)) exit - do while (abs(step) > 0.5*T .or. T - step < 0) + do while (T - step < 0) if (isnan(step)) step = 10 step = step/2 end do @@ -269,8 +269,7 @@ type(EquilibriumState) function saturation_temperature(model, n, p, kind, t0, y0 if (abs(step) < tol .and. abs(f) < tol) exit end do ! ======================================================================== - !if (its >= iters_first_step) then - if (.true.) then + if (its >= iters_first_step) then block real(pr) :: X(size(n)+2), S integer :: ns, nc diff --git a/src/math/continuation.f90 b/src/math/continuation.f90 index 9826de269..9dea31078 100644 --- a/src/math/continuation.f90 +++ b/src/math/continuation.f90 @@ -165,6 +165,8 @@ function continuation(& if (stop(X, ns, S, dS, dXdS, newton_its)) exit end if + if (dS == 0) exit + X = X + dXdS * dS S = X(ns) end do diff --git a/test/test_critical.f90 b/test/test_critical.f90 index 01b0fc87f..ce910f91b 100644 --- a/test/test_critical.f90 +++ b/test/test_critical.f90 @@ -1,21 +1,29 @@ program main !! Test the calculation of critical lines use yaeos + use yaeos__math, only: interpol + use fortime, only: Timer implicit none + + logical :: WRITE_FILES=.true. integer, parameter :: nc=12 + integer :: a_nearest + integer :: npt=6 type(CubicEoS) :: model type(EquilibriumState) :: sat, crit type(PTEnvel2) :: env type(CriticalLine) :: cl + type(Timer) :: tim - real(pr) :: V, T, P, a + real(pr) :: V, T, P, a, da real(pr) :: z(nc) real(pr) :: z0(nc) real(pr) :: zi(nc) + integer :: i model = get_model() @@ -25,8 +33,10 @@ program main z = a*zi + (1-a)*z0 ! Get the full phase envelope of the fluid - sat = saturation_temperature(model, z, P=0.0001_pr, kind="dew") + call tim%timer_start() + sat = saturation_temperature(model, z, P=0.1_pr, kind="dew") env = pt_envelope_2ph(model, z, sat, maximum_pressure=1000._pr) + call tim%timer_stop() ! Calculate the critical point T = sum(model%components%Tc * z) @@ -41,16 +51,33 @@ program main end if ! Now test the critical lines + print *, "CL" + call tim%timer_start() cl = critical_line(model, a0=a, z0=z0, zi=zi, dS0=0.1_pr, max_points=5000) + call tim%timer_stop() - - do i=1,5 - a = cl%a(i) + if (WRITE_FILES) call write_cl + + + da = (cl%a(size(cl%a)) - cl%a(1))/(npt+1) + do i=1,npt + a = cl%a(1) + da*i z = a*zi + (1-a)*z0 + call tim%timer_start() sat = saturation_temperature(model, z, P=0.1_pr, kind="dew") - env = pt_envelope_2ph(model, z, sat, maximum_pressure=1000._pr) + env = pt_envelope_2ph(model, z, sat, maximum_pressure=2000._pr, points=1000, delta_0=1.5_pr) + print *, "Envelope", i, size(env%points) + call tim%timer_stop() + if (WRITE_FILES) call write_env + + a_nearest = minloc(abs(cl%a - a), dim=1) - if (sum(([cl%T(i), cl%P(i)] - [env%cps(1)%T, env%cps(1)%P]))**2 > 1e-2) then + T = interpol(cl%a(a_nearest), cl%a(a_nearest+1), cl%T(a_nearest), cl%T(a_nearest+1), a) + P = interpol(cl%a(a_nearest), cl%a(a_nearest+1), cl%P(a_nearest), cl%P(a_nearest+1), a) + + if (maxval(([T, P] - [env%cps(1)%T, env%cps(1)%P])) > 10) then + write(*, *) [T, P] + write(*, *) [env%cps(1)%T, env%cps(1)%P] error stop "Critical line failed" end if end do @@ -63,12 +90,12 @@ type(CubicEoS) function get_model() zi=[1.0,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.] tc=[304.088888888889,190.6,305.4,369.8,425.2,469.6,507.4,616.2,& - 698.9,770.4,853.1,1001.2] + 698.9,770.4,853.1,1001.2] pc=[73.7343491450634,45.9196083838941,48.7516547159404,42.3795504688362, & 37.9291919470491,33.6811224489796,29.6353419746277,28.8261858797573,& 19.3186017650303,16.5876999448428,15.2728212906784,14.6659542195256] w= [0.228,0.008,0.098,0.152,0.193,0.251,0.296,& - 0.454,0.787,1.048,1.276,1.299] + 0.454,0.787,1.048,1.276,1.299] kij = 0 kij(1, 2) = 0.12 kij(1, 3:) = 0.15 @@ -76,4 +103,22 @@ type(CubicEoS) function get_model() get_model = PengRobinson78(tc, pc, w, kij=kij) end function get_model + + subroutine write_cl + do i=1,size(cl%a) + write(1, *) cl%a(i), cl%T(i), cl%P(i) + end do + write(1, *) + write(1, *) + end subroutine + + subroutine write_env + integer :: i + do i=1,size(env%points) + write(1, *) a, env%points(i)%T, env%points(i)%P + end do + write(1, *) + write(1, *) + call flush(1) + end subroutine write_env end program main From 5e527edb84fa79e11d31b85890663919c97759cd Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 17 Nov 2024 20:50:54 -0300 Subject: [PATCH 32/40] removed print, also the converged point varies a bit in composition --- test/test_saturation.f90 | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/test_saturation.f90 b/test/test_saturation.f90 index 65547f39d..93f9e8e71 100644 --- a/test/test_saturation.f90 +++ b/test/test_saturation.f90 @@ -89,7 +89,7 @@ subroutine test_dew_temperature(error) class(ArModel), allocatable :: model type(EquilibriumState) :: dew - real(pr) :: x(nc) = [6.7245630132141868E-002, 0.93275436999337613] + real(pr) :: x(nc) = [6.7257479103310133E-002, 0.93274263301184768] real(pr) :: y(nc) = [0.4, 0.6] real(pr) :: P = 10.867413040635611 @@ -103,8 +103,6 @@ subroutine test_dew_temperature(error) dew = saturation_temperature(model, n, P, kind="dew", t0=250._pr) - print *, dew - call check(error, abs(dew%P-P) < abs_tolerance) call check(error, abs(dew%T-T) < abs_tolerance) call check(error, maxval(abs(dew%x-x)) < abs_tolerance) From a98632df9d2d64b86968a9529b6c64eec5b52acf Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 17 Nov 2024 21:56:05 -0300 Subject: [PATCH 33/40] test find hpll line --- test/test_hpll.f90 | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 test/test_hpll.f90 diff --git a/test/test_hpll.f90 b/test/test_hpll.f90 new file mode 100644 index 000000000..b88b9e9a8 --- /dev/null +++ b/test/test_hpll.f90 @@ -0,0 +1,20 @@ +program main + use yaeos + use fixtures_models, only: binary_PR76 + implicit none + + type(CubicEoS) :: model + type(PTEnvel2) :: env + real(pr) :: z(2), T, P + + model = binary_PR76() + + z = [0.5_pr, 0.5_pr] + + env = find_hpl(model, z, T0=500._pr, p0=150._pr) + + if(abs(env%points(1)%T - 152.55) > 0.01) error stop "HPLL Failed T1" + if(abs(env%points(1)%P - 150) > 0.1) error stop "HPLL Failed T1" + if (abs(env%points(size(env%points))%P) > 0.1) error stop "HPLL Failed Pend" + +end program \ No newline at end of file From 9a79fd0ecd547ac1b5d2c31e0fc3e75970bb362b Mon Sep 17 00:00:00 2001 From: "Federico E. Benelli" Date: Fri, 22 Nov 2024 10:43:40 -0300 Subject: [PATCH 34/40] fix: handling of parameters for RKPR was broken --- c_interface/yaeos_c.f90 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/c_interface/yaeos_c.f90 b/c_interface/yaeos_c.f90 index d0421c6b2..ec11f5af2 100644 --- a/c_interface/yaeos_c.f90 +++ b/c_interface/yaeos_c.f90 @@ -287,14 +287,14 @@ subroutine rkpr(tc, pc, w, zc, delta_1, k, id) real(c_double), optional, intent(in) :: delta_1(size(tc)), k(size(tc)) integer(c_int), intent(out) :: id - if (present(delta_1) .and. present(k)) then - ar_model = fRKPR(tc, pc, w, zc, delta_1=delta_1, k=k) - elseif (present(delta_1)) then - ar_model = fRKPR(tc, pc, w, zc, delta_1=delta_1) - elseif (present(k)) then + if (all(delta_1 == 0) .and. all(k == 0)) then + ar_model = fRKPR(tc, pc, w, zc) + else if (all(delta_1 == 0)) then ar_model = fRKPR(tc, pc, w, zc, k=k) + else if (all(k == 0)) then + ar_model = fRKPR(tc, pc, w, zc, delta_1=delta_1) else - ar_model = fRKPR(tc, pc, w, zc) + ar_model = fRKPR(tc, pc, w, zc, delta_1=delta_1, k=k) end if call extend_ar_models_list(id) end subroutine rkpr From 264c8cdafc1f07d12e4bf67bdf9c31019b4f4b5a Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 24 Nov 2024 11:51:56 -0300 Subject: [PATCH 35/40] disabling stdlib_linalg for now, since it takes too much to compiler. --- app/critical.f90 | 1 - src/equilibria/critical.f90 | 13 ++++------ src/math/linalg.f90 | 49 +++++++++++++++++++++++++++++++++++++ test/test_critical.f90 | 1 + 4 files changed, 55 insertions(+), 9 deletions(-) diff --git a/app/critical.f90 b/app/critical.f90 index 966dbe314..abcf8c0c9 100644 --- a/app/critical.f90 +++ b/app/critical.f90 @@ -2,7 +2,6 @@ program main !! Test the calculation of critical lines use yaeos use yaeos__math, only: solve_system - use stdlib_linalg, only: eigh use yaeos__equilibria_critical, only: & lambda1, F_critical, df_critical, CriticalLine, critical_line, critical_point implicit none diff --git a/src/equilibria/critical.f90 b/src/equilibria/critical.f90 index d6136c0ef..9915a282c 100644 --- a/src/equilibria/critical.f90 +++ b/src/equilibria/critical.f90 @@ -197,7 +197,7 @@ real(pr) function lambda1(model, X, s, z0, zi, u, u_new, P) !! \[ !! \lambda_1(s) = \frac{d^2tpd}{ds^2} = 0 !! \] - use stdlib_linalg, only: eigh, linalg_state_type + use yaeos__math_linalg, only: eigen class(ArModel), intent(in) :: model real(pr), intent(in) :: z0(:) !! Molar fractions of the first fluid real(pr), intent(in) :: zi(:) !! Molar fractions of the second fluid @@ -216,7 +216,7 @@ real(pr) function lambda1(model, X, s, z0, zi, u, u_new, P) real(pr) :: dlnf_dn(size(z0), size(z0)) real(pr) :: lambda(size(z0)), vectors(size(z0), size(z0)) - type(linalg_state_type) :: stat + ! type(linalg_state_type) :: stat integer :: i, j, nc real(pr) :: M(size(z0), size(z0)), z(size(z0)), Pin @@ -236,10 +236,7 @@ real(pr) function lambda1(model, X, s, z0, zi, u, u_new, P) end do end do - call eigh(A=M, lambda=lambda, vectors=vectors, err=stat) - if (.not. stat%ok()) then - write(*, *) stat%print_msg() - end if + call eigen(A=M, eigenvalues=lambda, eigenvectors=vectors) lambda1 = lambda(minloc(abs(lambda), dim=1)) if (present(u_new)) u_new = vectors(:, minloc(abs(lambda), dim=1)) @@ -393,11 +390,11 @@ type(EquilibriumState) function critical_point(& df = df_critical(model, X, ns, S, z0, zi, u) dX = solve_system(A=df, b=-F) - do while(maxval(abs(dX/X)) > 1e-1) + do while(maxval(abs(dX)) > 1e-1) dX = dX/10 end do - if (maxval(abs(X)) < 1e-5) exit + if (maxval(abs(F)) < 1e-5) exit X = X + dX l = lambda1(model, X, 0.0_pr, z0, zi, u, u_new) diff --git a/src/math/linalg.f90 b/src/math/linalg.f90 index f44928915..07fbf1450 100644 --- a/src/math/linalg.f90 +++ b/src/math/linalg.f90 @@ -149,4 +149,53 @@ subroutine cubic_roots_rosendo(parameters, real_roots, complex_roots, flag) end if end subroutine + subroutine eigen(A, eigenvalues, eigenvectors) + !! # eigen + !! + !! # Description + !! Calculate the eigenvalues and eigenvectors of a real symmetric matrix + !! `A` using LAPACK's `dsyev`. The eigenvectors are stored in the columns + !! of `eigenvectors`. The eigenvalues are stored in `eigenvalues`. + + ! use stdlib_linalg, only: eigh, linalg_state_type + ! type(linalg_state_type) :: stat + real(pr), intent(in out) :: A(:, :) + real(pr), intent(out) :: eigenvalues(:) + real(pr), optional, intent(out) :: eigenvectors(:, :) + + interface + subroutine dsyev(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO) + character(1) :: JOBZ + character(1) :: UPLO + integer :: N + double precision :: A(lda, *) + integer :: lda + double precision :: W(*) + double precision :: WORK(*) + integer :: LWORK + integer :: INFO + end subroutine + end interface + integer :: istat + real(pr) :: work(size(A, 1)*10) + real(pr) :: Ain(size(A, 1), size(A, 1)) + integer :: n + + n = size(A, 1) + Ain = A + + call dsyev(jobz='V', uplo='U', n=n, A=Ain, lda=n, w=eigenvalues, & + work=work, lwork=size(work, 1), info=istat & + ) + eigenvectors = Ain + + ! call eigh(& + ! A=A, lambda=eigenvalues, vectors=eigenvectors, err=stat & + ! ) + + ! if (.not. stat%ok()) then + ! write(*, *) stat%print_msg() + ! end if + end subroutine + end module yaeos__math_linalg diff --git a/test/test_critical.f90 b/test/test_critical.f90 index ce910f91b..4188b5a56 100644 --- a/test/test_critical.f90 +++ b/test/test_critical.f90 @@ -83,6 +83,7 @@ program main end do contains + type(CubicEoS) function get_model() real(pr) :: tc(nc), pc(nc), w(nc), kij(nc,nc) z0=[0.0656,0.3711,0.0538,0.0373,0.0261,0.0187,& From 0e54f47ce97d8a46b2fb4d875e6c7e85a052b919 Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 24 Nov 2024 11:52:20 -0300 Subject: [PATCH 36/40] stdlib as fpm dependency instead of metapackage. Not sure which option is trully better --- fpm.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fpm.toml b/fpm.toml index 2789c5e09..b78592e47 100644 --- a/fpm.toml +++ b/fpm.toml @@ -21,7 +21,7 @@ implicit-external = false source-form = "free" [dependencies] -stdlib = "*" +stdlib = { git="https://github.com/fortran-lang/stdlib", branch="stdlib-fpm" } forbear = {git="https://github.com/szaghi/forbear"} json-fortran = {git="https://github.com/jacobwilliams/json-fortran"} forsus = {git="https://github.com/ipqa-research/forsus"} From 01eb93519fdf168991cbbab0171c2809a52c7ea1 Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 24 Nov 2024 11:55:26 -0300 Subject: [PATCH 37/40] test print --- test/test_huron_vidal.f90 | 93 ++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 45 deletions(-) diff --git a/test/test_huron_vidal.f90 b/test/test_huron_vidal.f90 index f2d649611..4d1d68ac8 100644 --- a/test/test_huron_vidal.f90 +++ b/test/test_huron_vidal.f90 @@ -24,7 +24,7 @@ program main model = binary_NRTL_SRK_HV() - print *, "HURON_VIDAL MIXING RULE" + write(*, *) "TESTING: HURON_VIDAL MIXING RULE" n = [0.2, 0.8] T = 150 @@ -39,42 +39,52 @@ program main call model%mixrule%Dmix(n, T, ai, daidt, daidt2, D, dDdT, dDdT2, dDi, dDidT, dDij) + if (.not. allclose([D], [test_D], test_tol)) error stop 1 + if (.not. allclose([dDdT], [test_dDdT], test_tol)) error stop 1 + if (.not. allclose([dDdT2], [test_dDdT2], test_tol)) error stop 1 + if (.not. allclose([dDi], [test_dDi], test_tol)) error stop 1 + if (.not. allclose([dDidT], [test_dDidT], test_tol)) error stop 1 + if (.not. allclose([dDij], [test_dDij], test_tol)) error stop 1 + + ! Below are the numerical derivatives used to generate the test values + + ! print *, "numdiff" ! print *, "dDdT", dDdT, (Dhv(n, T+0.01) - Dhv(n, T))/0.01 ! print *, "dDdT2", dDdT2, (Dhv(n, T+0.01) - 2*Dhv(n, T) + Dhv(n, T-0.01))/(0.01**2) ! print *, "dDi" - do i = 1, nc - dn = 0 - dn(i) = 0.001 - ! print *, dDi(i), (Dhv(n + dn, T) - Dhv(n - dn, T))/(2 * dn(i)) - end do + ! do i = 1, nc + ! dn = 0 + ! dn(i) = 0.001 + ! print *, dDi(i), (Dhv(n + dn, T) - Dhv(n - dn, T))/(2 * dn(i)) + ! end do ! print *, "dDidT" - do i = 1, nc - dn = 0 - dn(i) = 0.005 - - print *, dDidT(i), (& - Dhv(n + dn, T + dn(i)) & - - Dhv(n + dn, T - dn(i)) & - - Dhv(n - dn, T + dn(i)) & - + Dhv(n - dn, T - dn(i)) & - )/(4 * dn(i)**2) - end do + ! do i = 1, nc + ! dn = 0 + ! dn(i) = 0.005 + + ! print *, dDidT(i), (& + ! Dhv(n + dn, T + dn(i)) & + ! - Dhv(n + dn, T - dn(i)) & + ! - Dhv(n - dn, T + dn(i)) & + ! + Dhv(n - dn, T - dn(i)) & + ! )/(4 * dn(i)**2) + ! end do ! print *, "dDij" - dn = 0 - dn(1) = 1e-5 + ! dn = 0 + ! dn(1) = 1e-5 ! print *, dDij(1, 1), (Dhv(n + dn, T) - 2*Dhv(n, T) + Dhv(n - dn, T))/(dn(1)**2) - dn = 0 - dn(2) = 1e-5 + ! dn = 0 + ! dn(2) = 1e-5 ! print *, dDij(2, 2), (Dhv(n + dn, T) - 2*Dhv(n, T) + Dhv(n - dn, T))/(dn(2)**2) - dx = 1e-6 + ! dx = 1e-6 ! print *, dDij(1, 2), (& ! Dhv(n + [dx, dx], T) & @@ -84,32 +94,25 @@ program main ! )/(4 * dx **2) - if (.not. allclose([D], [test_D], test_tol)) error stop 1 - if (.not. allclose([dDdT], [test_dDdT], test_tol)) error stop 1 - if (.not. allclose([dDdT2], [test_dDdT2], test_tol)) error stop 1 - if (.not. allclose([dDi], [test_dDi], test_tol)) error stop 1 - if (.not. allclose([dDidT], [test_dDidT], test_tol)) error stop 1 - if (.not. allclose([dDij], [test_dDij], test_tol)) error stop 1 - -contains + ! contains - real(pr) function Dhv(n, T) - real(pr), intent(in) :: n(:), T + !real(pr) function Dhv(n, T) + ! real(pr), intent(in) :: n(:), T - real(pr) :: Tc(size(n)), Tr(size(n)) - real(pr), dimension(size(n)) :: ai, daidt, dadit2 - real(pr) :: D, dDdT, dDdT2, dDi(size(n)), dDidT(size(n)), dDij(size(n), size(n)) - - Tc = model%components%Tc - Tr = T/Tc + ! real(pr) :: Tc(size(n)), Tr(size(n)) + ! real(pr), dimension(size(n)) :: ai, daidt, dadit2 + ! real(pr) :: D, dDdT, dDdT2, dDi(size(n)), dDidT(size(n)), dDij(size(n), size(n)) + ! + ! Tc = model%components%Tc + ! Tr = T/Tc - call model%alpha%alpha(Tr, ai, daidt, daidt2) + ! call model%alpha%alpha(Tr, ai, daidt, daidt2) - ai = ai*model%ac - daidt = daidt*model%ac/Tc - daidt2 = daidt2*model%ac/Tc**2 + ! ai = ai*model%ac + ! daidt = daidt*model%ac/Tc + ! daidt2 = daidt2*model%ac/Tc**2 - call model%mixrule%Dmix(n, T, ai, daidt, daidt2, D, dDdT, dDdT2, dDi, dDidT, dDij) - Dhv = D - end function + ! call model%mixrule%Dmix(n, T, ai, daidt, daidt2, D, dDdT, dDdT2, dDi, dDidT, dDij) + ! Dhv = D + !end function end program main From 10366e1d8d1e9212d8d953904a12c4f647108fe5 Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 24 Nov 2024 12:05:41 -0300 Subject: [PATCH 38/40] testm --- test/aux.f90 | 19 +++++++++++++++++++ test/test_critical.f90 | 10 ++++++++-- test/test_huron_vidal.f90 | 11 ++++++++++- 3 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 test/aux.f90 diff --git a/test/aux.f90 b/test/aux.f90 new file mode 100644 index 000000000..36309b214 --- /dev/null +++ b/test/aux.f90 @@ -0,0 +1,19 @@ +module testing_aux + implicit none + +contains + + function test_title(str) + use stdlib_ansi, only: style_underline, style_reset, operator(//) + character(*), intent(in) :: str + character(100) :: test_title + test_title = style_underline // "TESTING: " // str // style_reset + end function + + function test_ok(str) + use stdlib_ansi, only: fg_color_green, style_reset, operator(//) + character(*), intent(in) :: str + character(100) :: test_ok + test_ok = fg_color_green // "OK: " // str // style_reset + end function +end module \ No newline at end of file diff --git a/test/test_critical.f90 b/test/test_critical.f90 index 4188b5a56..e73551fa5 100644 --- a/test/test_critical.f90 +++ b/test/test_critical.f90 @@ -3,9 +3,10 @@ program main use yaeos use yaeos__math, only: interpol use fortime, only: Timer + use testing_aux, only: test_ok, test_title implicit none - logical :: WRITE_FILES=.true. + logical :: WRITE_FILES=.false. integer, parameter :: nc=12 integer :: a_nearest @@ -26,6 +27,8 @@ program main integer :: i + write(*, *) test_title("CRITICAL POINTS AND LINES") + model = get_model() ! Calculate the composition at at specified alpha @@ -33,6 +36,7 @@ program main z = a*zi + (1-a)*z0 ! Get the full phase envelope of the fluid + print *, "Calculating PT envelope" call tim%timer_start() sat = saturation_temperature(model, z, P=0.1_pr, kind="dew") env = pt_envelope_2ph(model, z, sat, maximum_pressure=1000._pr) @@ -49,6 +53,7 @@ program main if (sum([crit%T, crit%P] - [env%cps(1)%T, env%cps(1)%P])**2 > 1e-2) then error stop "Critical point failed" end if + write(*, *) test_ok("Critical point") ! Now test the critical lines print *, "CL" @@ -66,7 +71,7 @@ program main call tim%timer_start() sat = saturation_temperature(model, z, P=0.1_pr, kind="dew") env = pt_envelope_2ph(model, z, sat, maximum_pressure=2000._pr, points=1000, delta_0=1.5_pr) - print *, "Envelope", i, size(env%points) + print *, "Running PT Envelope", i, size(env%points) call tim%timer_stop() if (WRITE_FILES) call write_env @@ -81,6 +86,7 @@ program main error stop "Critical line failed" end if end do + write(*, *) test_ok("Critical line compared to individual PT lines") contains diff --git a/test/test_huron_vidal.f90 b/test/test_huron_vidal.f90 index 4d1d68ac8..216ace2e9 100644 --- a/test/test_huron_vidal.f90 +++ b/test/test_huron_vidal.f90 @@ -2,6 +2,7 @@ program main use yaeos, only: pr, CubicEoS use fixtures_models, only: binary_NRTL_SRK_HV use auxiliar_functions, only: allclose + use testing_aux, only: test_ok, test_title integer, parameter :: nc = 2 real(pr) :: test_tol = 1e-7 @@ -24,7 +25,7 @@ program main model = binary_NRTL_SRK_HV() - write(*, *) "TESTING: HURON_VIDAL MIXING RULE" + write(*, *) test_title("HURON_VIDAL MIXING RULE") n = [0.2, 0.8] T = 150 @@ -40,11 +41,19 @@ program main call model%mixrule%Dmix(n, T, ai, daidt, daidt2, D, dDdT, dDdT2, dDi, dDidT, dDij) if (.not. allclose([D], [test_D], test_tol)) error stop 1 + write(*, *) test_ok("Huron-Vidal Mixing Rule: D") if (.not. allclose([dDdT], [test_dDdT], test_tol)) error stop 1 + write(*, *) test_ok("Huron-Vidal Mixing Rule: dDdT") if (.not. allclose([dDdT2], [test_dDdT2], test_tol)) error stop 1 + write(*, *) test_ok("Huron-Vidal Mixing Rule: dDdT2") if (.not. allclose([dDi], [test_dDi], test_tol)) error stop 1 + write(*, *) test_ok("Huron-Vidal Mixing Rule: dDi") if (.not. allclose([dDidT], [test_dDidT], test_tol)) error stop 1 + write(*, *) test_ok("Huron-Vidal Mixing Rule: dDidT") if (.not. allclose([dDij], [test_dDij], test_tol)) error stop 1 + write(*, *) test_ok("Huron-Vidal Mixing Rule: dDij") + + write(*, *) test_ok("Huron-Vidal Mixing Rule") ! Below are the numerical derivatives used to generate the test values From 4bb7bd24fa73a7bb654303869e74d2c7ec06e5c1 Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 24 Nov 2024 17:39:20 -0300 Subject: [PATCH 39/40] dont write --- test/test_critical.f90 | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/test/test_critical.f90 b/test/test_critical.f90 index e73551fa5..f4b835838 100644 --- a/test/test_critical.f90 +++ b/test/test_critical.f90 @@ -61,8 +61,7 @@ program main cl = critical_line(model, a0=a, z0=z0, zi=zi, dS0=0.1_pr, max_points=5000) call tim%timer_stop() - if (WRITE_FILES) call write_cl - + ! if (WRITE_FILES) call write_cl da = (cl%a(size(cl%a)) - cl%a(1))/(npt+1) do i=1,npt @@ -73,7 +72,7 @@ program main env = pt_envelope_2ph(model, z, sat, maximum_pressure=2000._pr, points=1000, delta_0=1.5_pr) print *, "Running PT Envelope", i, size(env%points) call tim%timer_stop() - if (WRITE_FILES) call write_env + ! if (WRITE_FILES) call write_env a_nearest = minloc(abs(cl%a - a), dim=1) @@ -111,21 +110,22 @@ type(CubicEoS) function get_model() get_model = PengRobinson78(tc, pc, w, kij=kij) end function get_model - subroutine write_cl - do i=1,size(cl%a) - write(1, *) cl%a(i), cl%T(i), cl%P(i) - end do - write(1, *) - write(1, *) - end subroutine - - subroutine write_env - integer :: i - do i=1,size(env%points) - write(1, *) a, env%points(i)%T, env%points(i)%P - end do - write(1, *) - write(1, *) - call flush(1) - end subroutine write_env + ! Write to files when internally testing + ! subroutine write_cl + ! do i=1,size(cl%a) + ! write(1, *) cl%a(i), cl%T(i), cl%P(i) + ! end do + ! write(1, *) + ! write(1, *) + ! end subroutine + + ! subroutine write_env + ! integer :: i + ! do i=1,size(env%points) + ! write(1, *) a, env%points(i)%T, env%points(i)%P + ! end do + ! write(1, *) + ! write(1, *) + ! call flush(1) + ! end subroutine write_env end program main From ba74458a7599bea7e127fbaa6ca9bfadf6e94558 Mon Sep 17 00:00:00 2001 From: fedebenelli Date: Sun, 24 Nov 2024 17:40:12 -0300 Subject: [PATCH 40/40] testm --- test/test_critical.f90 | 1 - 1 file changed, 1 deletion(-) diff --git a/test/test_critical.f90 b/test/test_critical.f90 index f4b835838..4d9cff4bb 100644 --- a/test/test_critical.f90 +++ b/test/test_critical.f90 @@ -24,7 +24,6 @@ program main real(pr) :: z0(nc) real(pr) :: zi(nc) - integer :: i write(*, *) test_title("CRITICAL POINTS AND LINES")