polymers 0.3.7

Polymers Modeling Library
Documentation
"""
Single-chain models for polymer physics.
"""
module SingleChain

const ONE::Float64 = 1.0
const ZERO::Float64 = 1e-6
const POINTS::UInt128 = 64

function integrate(
    fun::Function,
    lower_lim::Float64,
    upper_lim::Float64,
    num_points::UInt128,
)
    dx = (upper_lim - lower_lim) / num_points
    return sum(map(fun, lower_lim .+ (0.5 .+ collect(range(0, num_points - 1))) * dx)) * dx
end

struct Parameters
    abs_tol::Float64
    rel_tol::Float64
    rel_tol_thermodynamic_limit::Float64
    log_log_tol::Float64
    log_log_scale::Float64
    number_of_loops::UInt32
    hinge_mass_reference::Float64
    hinge_mass_scale::Float64
    link_length_reference::Float64
    link_length_scale::Float64
    persistance_length_reference::Float64
    persistance_length_scale::Float64
    number_of_links_minimum::UInt8
    number_of_links_maximum::UInt8
    link_stiffness_reference::Float64
    link_stiffness_scale::Float64
    link_energy_reference::Float64
    link_energy_scale::Float64
    nondimensional_persistance_length_small::Float64
    nondimensional_link_stiffness_large::Float64
    nondimensional_link_stiffness_big::Float64
    nondimensional_link_stiffness_medium::Float64
    well_width_reference::Float64
    well_width_scale::Float64
    nondimensional_well_width_small::Float64
    nondimensional_end_to_end_length_per_link_reference::Float64
    nondimensional_end_to_end_length_per_link_scale::Float64
    nondimensional_end_to_end_length_per_link_small::Float64
    nondimensional_force_reference::Float64
    nondimensional_force_scale::Float64
    nondimensional_force_small::Float64
    nondimensional_potential_distance_reference::Float64
    nondimensional_potential_distance_scale::Float64
    nondimensional_potential_distance_small::Float64
    nondimensional_potential_distance_large_1::Float64
    nondimensional_potential_distance_large_2::Float64
    nondimensional_potential_stiffness_reference::Float64
    nondimensional_potential_stiffness_scale::Float64
    nondimensional_potential_stiffness_small::Float64
    nondimensional_potential_stiffness_large::Float64
    temperature_reference::Float64
    temperature_scale::Float64
end

parameters = Parameters(
    1e-7,
    1e-5,
    1e-1,
    5e-1,
    12e-1,
    8,
    1e0,
    1e-1,
    1e0,
    1e-2,
    25e-1,
    49e-1,
    0x08,
    0x19,
    5e5,
    99e4,
    5e4,
    99e3,
    2e-2,
    1e4,
    1e3,
    1e1,
    99e-2,
    5e-1,
    1e-2,
    5e-1,
    99e-2,
    25e-2,
    5e1,
    1e2,
    75e-2,
    1e0,
    2e0,
    33e-2,
    1e1,
    1e1 + 25e-1,
    1e0,
    2e0,
    1e-3,
    1e1,
    3e2,
    1e2,
)

include("ideal/mod.jl")
include("fjc/mod.jl")
include("efjc/mod.jl")
include("swfjc/mod.jl")
include("ufjc/mod.jl")
include("wlc/mod.jl")

end