abstract type UFDivisionPotential <: EoSModel end


is_splittable(::UFDivisionPotential) = false

struct WCADivision <: UFDivisionPotential end
struct BHDivision <: UFDivisionPotential end

abstract type UFTheoryModel{T<:UFDivisionPotential} <: EoSModel end



function ϵₓ(model::UFTheoryModel,V,T,z)
    

end

function σₓ(model::UFTheoryModel,V,T,z)


end
function I_f(model::UFTheoryModel,V,T,z,ϵₓ,σₓ,C)

end

function I_i(model::UFTheoryModel,V,T,z,ϵₓ,σₓ,C)

end
const UFTheoryConsts = (
    Iu_LJ_WCA =[
-0.37447216 -0.00081593 -0.53140336 0.06813345
 -0.01631296 0.01735490 -0.48321813 -0.10811097
 -0.11968918 0.06900995 -0.09297811 -0.05479239
 0.42113581 -0.11298284 0.06698083 0.13611539
 -0.13660913 0.02263133 0.00933081 0.21970435],

    Iu_LJ_BH =[
-0.88956910 0.00410326 -0.00176185 0.12604517
-0.45301169 0.09609255 -0.00939335 0.13116768
-0.02908313 0.14360795 -0.04132516 0.14642522
0.12098751 0.02496398 -0.00397194 0.12907731
0.16797647 -0.15518686 0.03169724 0.14408187],

Iu_Mie_WCA =[
-1.78056093 -3.16686373 7.68360475 -93.60419002
-0.01668085 0.36495829 -2.35505504 -14.95211664
1.43501852 -3.17823271 -2.65975346 -1.68622036
0.00771078 -0.71067776 3.37028434 1.73371125
-0.75639404 -4.01519074 6.52257588 -34.61784393
0.04103887 -0.56727066 2.18602934 14.15314345
0.48329816 0.19213347 7.61859331 -9.92811362
-0.05943504 1.70951783 5.12258334 -49.19660269
0.29800680 -0.04245160 11.33527039 -5.89983990
-0.03863233 0.63090719 -0.33588296 -24.96073802
-0.40370239 -0.63858832 9.01192466 -41.33876761
-0.12403302 0.18998693 -14.73978776 151.80982268
0.07958646 1.79956210 1.22984038 -32.09818586
-0.03238907 -0.02204735 -0.27406920 -4.38812980
-0.00158420 -0.92021684 15.17385932 2.83803911
0.77885655 -22.86944530 110.24039194 205.53391110
0.10810701 1.32984049 -6.75001640 -76.40272812
0.15279280 -1.40020406 1.84877442 -2.70192234
-0.26259091 0.76348918 0.25624963 24.26218002
0.25097389 -0.09398157 -2.42094525 9.05317197
],

If_Mie_WCA = [
    -0.00676215 0.35802345 -4.68894827 21.71301236
0.00576239 -0.19869030 3.52670932 -21.52329250
-0.01585189 -0.02353289 -0.38046094 -2.22940520
0.01688067 -0.14880487 1.27641823 2.81305965
0.46266889 4.14762330 16.29605943 40.66463742
0.21097529 0.29711213 -10.88510499 108.50376227
0.16099600 0.07601413 -14.07795812 68.10396204
-0.17351007 0.40133563 -3.10110242 -13.06800562
-0.00259994 1.38844039 -5.72096750 29.61608733
-0.06312554 6.15404500 -2.00412098 -55.95330391
0.28768461 -2.07560237 -34.73499062 -16.16371594
-0.04182885 -1.73566128 -13.79223815 304.28754909
0.12463286 -1.06919900 0.00000075 51.67574708
-0.18247949 1.07222692 -4.09891917 -0.00001846
0.09499683 0.38741975 12.47877072 100.23721592
0.00802157 0.99105527 -14.01113384 -124.75984338
-0.04486163 1.30492578 -3.81392000 -6.69041253
0.08329549 0.61403648 -4.27136752 -10.04750594
],
If_LJ_WCA = [
0.00326607 -0.00631528 -0.00134063 0.00803155 -0.00412890
0.98177233 0.37428833 -0.02613570 -0.23353006 0.11235306
0.09812966 0.44943620 0.18812166 -0.04076140 -0.19168200
0.10917110 -0.10567363 -0.01328055 0.04651761 0.01508000
0.00246771 0.06797539 -0.00376730 0.08330469 -0.06683759
],

If_LJ_BH = [
0.00048683 -0.00971268 0.00731929 -0.00108245 0.00299320
0.87965112 0.29643192 -0.15355144 -0.18000878 0.04834741
0.22925638 0.24842618 0.10330378 -0.02903055 -0.09036307
0.01554676 -0.01605316 0.02748238 -0.00863994 -0.09759044
0.02629016 0.02591591 -0.01051095 0.01659820 0.0116228
],
)

#mie fluid,BH division. LJ fluid is just a particular case
function dHS_BH(T̄ ,m)
    a = (72564575e-01,1.44851940e-02,-4.47700974e-04)
    b = (2.41366577e-01,9.94732182e-03,-2.83801421e-04,-2.48237845e-06)
    c = (1.44734716e-03,-4.97470110e-05,2.32705654e-07)
    A = evalpoly(a,m)
    B = evalpoly(b,m)
    C = evalpoly(c,m)
    return (one(T̄) + A*T̄)/evalpoly((one(B),B,C),T̄)
end

#mie fluid, WCA (BFC),
function dHS_WCA(T̄,m)
    m == 12 && return 2/(1+sqrt(T̄))^(1/6)
    a = (0.0,7.08059224e-01, 5.52970256e-01, 5.33848228e-01)
    b = (0.0,2.37463060e-01, 1.91956811e-01, -3.99938968e-02)
    c = (0.0,5.75476615e-01, 8.20345330e-01, 5.03543986e-01)
    d = (0.0,4.90928991e-01, 1.49870438e-01, -3.71426331e-02)
    e = (0.0,8.15769030e-03, -3.43788879e-03, 4.81941979e-04)
    minv = 1/m
    A = evalpoly(a,minv)
    B = evalpoly(b,minv)
    C = evalpoly(c,minv)
    D = evalpoly(d,minv)
    E = evalpoly(e,minv)
    y = T̄-1
    num = (one(m),A,B)
    den = (one(m),C,D,E)
    return evalpoly(num,y)/evalpoly(den,y)
end
