Theories

TheoryArrhenius

Module TheoryArrhenius

class RepTate.theories.TheoryArrhenius.TheoryArrhenius(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Arrhenius Equation

  • Function
    \[a_T = \exp\left(\frac{E_a}{R} \left(\frac{1}{T} - \frac{1}{T_{ref}}\right) \right)\]
  • Parameters
    • \(E_a\): Activation Energy

    • \(T_{ref}\): Reference Temperature for the shift factors

    • \(R\): Gas Constant

calculate(f=None)[source]

Arrhenius function

citations = []

citations {list of str} – Articles that should be cited

description = 'Arrhenius Theory'

description {str} – Description of theory

single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryArrhenius" inherits "QTheory": )
thname = 'ArrheniusTheory'

thname {str} – Theory name

TheoryBasic

Module TheoryBasic

Module that defines the basic theories that should be available for all Applications.

class RepTate.theories.TheoryBasic.TheoryAlgebraicExpression(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

Fit a user algebraic expression with \(n\) parameters.

The expression can contain any of the following mathematical functions: sin, cos, tan, arccos, arcsin, arctan, arctan2, deg2rad, rad2deg, sinh, cosh, tanh, arcsinh, arccosh, arctanh, around, round, rint, floor, ceil,trunc, exp, log, log10, fabs, mod, e, pi, power, sqrt

It is the responsability of the user to input functions that make mathematical sense.

  • Function
    \[y(x) = f({A_i}, x, F_{params})\]
  • Parameters
    • \(n\): number of parameters.

    • \(A_i\): coefficeints of the algebraic expression

algebraicexpression(f=None)[source]

Actual function.

  • Function
    \[y(x) = f({A_i}, x)\]
description = 'Fit an algebraic expression with n parameters'

description {str} – Description of theory

do_error(line)[source]

Report the error of the current theory

Report the error of the current theory on all the files, taking into account the current selected xrange and yrange.

File error is calculated as the mean square of the residual, averaged over all points in the file. Total error is the mean square of the residual, averaged over all points in all files.

handle_expressionChanged(item)[source]

Handle a change in the algebraic expression

handle_spinboxValueChanged(value)[source]

Handle a change of the parameter ‘n’

html_help_file = 'http://reptate.readthedocs.io/manual/All_Theories/basic_theories.html#algebraic-expression'
set_param_value(name, value)[source]

Change a parameter value, in particular n

single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryAlgebraicExpression" inherits "QTheory": )
thname = 'Algebraic Expression'

thname {str} – Theory name

class RepTate.theories.TheoryBasic.TheoryExponential(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

Fit a single exponential decay to the data

  • Function
    \[y(x) = a \exp(-x/T)\]
  • Parameters
    • \(a\): prefactor.

    • \(T\): exponential “time” constant.

description = 'Fit Exponential'

description {str} – Description of theory

exponential(f=None)[source]

Function \(y(x) = a \exp(-x/T)\)

html_help_file = 'http://reptate.readthedocs.io/manual/All_Theories/basic_theories.html#exponential'
single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryExponential" inherits "QTheory": )
thname = 'Exponential'

thname {str} – Theory name

class RepTate.theories.TheoryBasic.TheoryPolynomial(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

Fit a polynomial of degree \(n\) to the data

  • Function
    \[y(x) = \sum_{i=0}^n A_i x^i\]
  • Parameters
    • \(n\): degree of the polynomial function.

    • \(A_i\): polynomial coefficeints.

description = 'Fit a polynomial of degree n'

description {str} – Description of theory

handle_spinboxValueChanged(value)[source]

Handle a change of the parameter ‘nmode’

html_help_file = 'http://reptate.readthedocs.io/manual/All_Theories/basic_theories.html#polynomial'
polynomial(f=None)[source]

Actual polynomial function.

\[y(x) = \sum_{i=0}^n A_i x^i\]
set_param_value(name, value)[source]

Change a parameter value, in particular n

single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryPolynomial" inherits "QTheory": )
thname = 'Polynomial'

thname {str} – Theory name

class RepTate.theories.TheoryBasic.TheoryPowerLaw(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

Fit a power law to the data

  • Function
    \[y(x) = a x^b\]
  • Parameters
    • \(a\): prefactor.

    • \(b\): exponent.

description = 'Fit Power Law'

description {str} – Description of theory

html_help_file = 'http://reptate.readthedocs.io/manual/All_Theories/basic_theories.html#power-law'
powerlaw(f=None)[source]

Actual function

  • Function
    \[y(x) = a x^b\]
single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryPowerLaw" inherits "QTheory": )
thname = 'Power Law'

thname {str} – Theory name

class RepTate.theories.TheoryBasic.TheoryTwoExponentials(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

Fit two single exponential decay to the data

  • Function
    \[y(x) = a_1 \exp(x/T_1) + a_2 \exp(-x/T_2)\]
  • Parameters
    • \(a_1\), \(a_2\): prefactors.

    • \(T_1\), \(T_2\): exponential “time” constants.

description = 'Fit two exponentials'

description {str} – Description of theory

html_help_file = 'http://reptate.readthedocs.io/manual/All_Theories/basic_theories.html#double-exponential'
single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryTwoExponentials" inherits "QTheory": )
thname = 'Two Exponentials'

thname {str} – Theory name

two_exponentials(f=None)[source]

Actual function

  • Function
    \[y(x) = a_1 \exp(x/T_1) + a_2 \exp(-x/T_2)\]

TheoryBobLVE

Module TheoryBobLVE

BobLVE file calculates the LVE of a given polymer configuration by Chinmay Das et al.

class RepTate.theories.TheoryBobLVE.TheoryBobLVE(name='ThBobLVE', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Analyse the relaxation of polymers read from a polymer configuration file using BoB v2.5 (Chinmay Das and Daniel Read). These files can be generated from the React application in RepTate.

The original documentation of BoB can be found here: https://sourceforge.net/projects/bob-rheology/files/bob-rheology/bob2.3/bob2.3.pdf/download.

calculate(f=None)[source]

Create polymer configuration file and calculate distribution characteristics

citations = ['Das C. et al., J. Rheol. 2006, 50, 207-234']

citations {list of str} – Articles that should be cited

create_bob_input_file(nlines, inpf)[source]

Create a file containing the input BoB parameters from the form dialog

description = 'Branch-On-Branch rheology'

description {str} – Description of theory

do_error(line='')[source]

This theory calculate the error by interpolating the theory solution

do_fit(line='')[source]

Minimize the error

doi = ['http://dx.doi.org/10.1122/1.2167487']

doicode {list of str} – Doi code of the article

get_file_name()[source]

Open a dialog to choose a file containing the polymer configuration for BoB

handle_btn_prio_senio(checked)[source]

Change do_priority_seniority

handle_help_button()[source]

When Help button of dialog box is clicked, show BoB manual (pdf)

handle_pb_ok()[source]

Define the OK button role. If something is wrong, keep the dialog open

html_help_file = 'https://reptate.readthedocs.io/manual/Applications/LVE/Theory/theory.html#bob-lve'
is_ascii(s)[source]

Check if s contains non ASCII characters

launch_param_dialog()[source]

Show a dialog to get the filename of the polymer configuration. This function is called via a Signal for multithread compatibility

num_file_lines(fname)[source]

Return the number of lines in the file fname

request_stop_computations()[source]

Called when user wants to terminate the current computation

setup_dialog()[source]

Load the form dialog from bob_LVE.py

signal_param_dialog
single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryBobLVE" inherits "QTheory": Methods:   #35 type=Signal, signature=signal_param_dialog(PyObject), parameters=PyObject )
thname = 'BOB'

thname {str} – Theory name

TheoryBobNLVE

Module TheoryBobNLVE

BobLVE file calculates the LVE of a given polymer configuration by Chinmay Das et al.

class RepTate.theories.TheoryBobNLVE.TheoryBobNLVE(name='ThBobLVE', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Predict the nonlinear rheology of “branch-on-branch” polymers, read from a polymer configuration file, using BoB v2.5 (Chinmay Das and Daniel Read). Polymer configuration files can be generated from the React application in RepTate.

The original documentation of BoB can be found here: https://sourceforge.net/projects/bob-rheology/files/bob-rheology/bob2.3/bob2.3.pdf/download.

calculate(f=None)[source]

Create polymer configuration file and calculate distribution characteristics

citations = ['Das C. et al., J. Rheol. 2006, 50, 207-234']

citations {list of str} – Articles that should be cited

create_bob_input_file(nlines, inpf)[source]

Create a file containing the input BoB parameters from the form dialog

description = 'Branch-On-Branch rheology'

description {str} – Description of theory

do_error(line='')[source]

This theory does not calculate the error

do_fit(line='')[source]

Minimize the error

doi = ['http://dx.doi.org/10.1122/1.2167487']

doicode {list of str} – Doi code of the article

get_file_name()[source]

Open a dialog to choose a file containing the polymer configuration for BoB

handle_help_button()[source]

When Help button of dialog box is clicked, show BoB manual (pdf)

handle_pb_ok()[source]

Define the OK button role. If something is wrong, keep the dialog open

html_help_file = 'https://reptate.readthedocs.io/manual/Applications/NLVE/Theory/theory.html#bob-nlve'
init_flow_mode()[source]

Find if data files are shear or extension

is_ascii(s)[source]

Check if s contains non ASCII characters

launch_param_dialog()[source]

Show a dialog to get the filename of the polymer configuration. This function is called via a Signal for multithread compatibility

num_file_lines(fname)[source]

Return the number of lines in the file fname

request_stop_computations()[source]

Called when user wants to terminate the current computation

select_extensional_flow()[source]
select_shear_flow()[source]
setup_dialog()[source]

Load the form dialog from bob_LVE.py

signal_param_dialog
single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryBobNLVE" inherits "QTheory": Methods:   #35 type=Signal, signature=signal_param_dialog(PyObject), parameters=PyObject )
thname = 'BOB'

thname {str} – Theory name

TheoryCarreauYasuda

Module TheoryCarreauYasuda

Carreau-Yasuda equation for the complex viscosity

class RepTate.theories.TheoryCarreauYasuda.TheoryCarreauYasuda(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

Fit the complex viscosity with the Carreau-Yasuda equation.

  • Function
    \[\eta^*(\omega) = \eta_\infty + (\eta_0-\eta_\infty)\left( 1 + (\lambda\omega)^a \right)^{(n-1)/a}\]
  • Parameters
    • \(\eta_0\): Viscosity at zero shear rate.

    • \(\eta_\infty\): Viscosity at infinite shear rate.

    • \(\lambda\): Relaxation time.

    • \(n\): Power law index.

    • \(a\): Dimensionless parameter (2 in most cases)

citations = []

citations {list of str} – Articles that should be cited

description = 'Carreau-Yasuda equation'

description {str} – Description of theory

doi = []

doicode {list of str} – Doi code of the article

function_CarreauYasuda(f=None)[source]

Carreau-Yasuda equation for the complex viscosity

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/LVE/Theory/theory.html#carreau-yasuda-equation'
single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryCarreauYasuda" inherits "QTheory": )
thname = 'Carreau-Yasuda'

thname {str} – Theory name

TheoryCreatePolyconf

Module TheoryCreatePolyconf

CreatePolyconf file for creating a polymer configuration file using BoB version 2.5 by Chinmay Das et al.

class RepTate.theories.TheoryCreatePolyconf.ArchitectureType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Enum

Type of polymer architecture and expected parameters as input for BoB

AsymStar = {'def': [2, 'Distr. long', 'Mw long (g/mol)', 'PDI long', '', 'Distr. short', 'Mw short', 'PDI short'], 'descr': 'Star with two arms of equal length and the third arm having a different length. Only 3 arm stars are created', 'name': 'Asymetric Star'}
Cayley3Arm = {'def': [10, 'Num. generation', '', 'Distr. gen0', 'Mw gen0 (g/mol)', 'PDI gen0'], 'descr': 'Cayley trees with 3 arm star inner core', 'name': 'Cayley 3-arm Core'}
Cayley4Arm = {'def': [12, 'Num. generation', '', 'Distr. gen0', 'Mw gen0 (g/mol)', 'PDI gen0'], 'descr': 'Cayley trees with 4 arm star inner core', 'name': 'Cayley 4-arm Core'}
CayleyLin = {'def': [11, 'Num. generation', '', 'Distr. gen0', 'Mw gen0 (g/mol)', 'PDI gen0'], 'descr': 'Cayley trees with linear inner core', 'name': 'Cayley Linear Core'}
CouplComb = {'def': [6, 'Distr. backbone', 'Mw backbone (g/mol)', 'PDI backbone', '', 'Distr. side', 'Mw side (g/mol)', 'PDI side', '', 'Num. arm'], 'descr': 'Attach two "Poisson combs" at some random point along the two backbones', 'name': 'Coupled Comb'}
FixComb = {'def': [5, 'Distr. backbone', 'Mw backbone (g/mol)', 'PDI backbone', '', 'Distr. side', 'Mw side (g/mol)', 'PDI side', '', 'Num. arm'], 'descr': 'Comb having fixed number of side arms connected at random places on the backbone', 'name': 'Fixed Comb'}
FromFile = {'def': [60, 'From file'], 'descr': 'User supplied pre-generated polymers file', 'name': 'From File'}
Gel = {'def': [25, 'Mn (g/mol)', 'Up Branch. proba.'], 'descr': 'Gelation ensemble', 'name': 'Gel'}
H = {'def': [3, 'Distr. side', 'Mw side (g/mol)', 'PDI side', '', 'Distr. cross', 'Mw cross', 'PDI cross'], 'descr': 'H polymers have one cross-bar and four segments attached to the crossbar', 'name': 'H Polymer'}
Linear = {'def': [0, 'Distr.', 'Mw (g/mol)', 'PDI'], 'descr': 'Linear polymer', 'name': 'Linear Polymer'}
MpeNum = {'def': [20, 'Mw (g/mol)', 'Branch/molecule'], 'descr': 'Metallocene catalyzed polyethylene with number-based sampling', 'name': 'MPE num-average'}
MpeWt = {'def': [21, 'Mw (g/mol)', 'Branch/molecule'], 'descr': 'Metallocene catalyzed polyethylene with weight-based sampling', 'name': 'MPE weight-average'}
PoissComb = {'def': [4, 'Distr. backbone', 'Mw backbone (g/mol)', 'PDI backbone', '', 'Distr. side', 'Mw side (g/mol)', 'PDI side', '', 'Num. arm'], 'descr': 'Comb having Poisson distr.ributed number of side arms connected at random places on the backbone', 'name': 'Poisson Comb'}
Proto = {'def': [40, 'Go to "Result" tab'], 'descr': 'Polymer prototype from file (user defined)', 'name': 'Prototype'}
Star = {'def': [1, 'Distr.', 'Mw (g/mol)', 'PDI', '', 'Num. arm'], 'descr': 'Star polymer', 'name': 'Star Polymer'}
class RepTate.theories.TheoryCreatePolyconf.DistributionType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Enum

Type of molecular weight distribution

Flory = 4
Gaussian = 1
LogNormal = 2
Monodisperse = 0
Poisson = 3
class RepTate.theories.TheoryCreatePolyconf.TheoryCreatePolyconf(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Create polymer configuration files using BoB v2.5 (Chinmay Das and Daniel Read). The configuration file created with this theory can then be analysed in the BoB LVE theory, in the LVE application of RepTate.

The original documentation of BoB can be found here: https://sourceforge.net/projects/bob-rheology/files/bob-rheology/bob2.3/bob2.3.pdf/download.

  • Parameters
    • M0 : Mass of a Monomer

    • Ne : Number of monomers in an entanglement length

    • Ratio : Ratio weight fraction occupied by component

    • Architecture : Polymer architecture type (e.g. Linear, Star, Comb, etc.)

    • Num. of polymer : Number of polymers to generate of the above architecture type

    • Num. generations : Number of generations (for Cayley architecture type only)

    • Distr. : Molecular weight distribution (e.g. Monodisperse, LogNormal, etc.)

    • Mw : Weight-average molecular weight

    • PDI : Polydispersity index (PDI \(=M_w/M_n\))

add_cb_distribution(name, layout, pol_dict, tip='')[source]

Add a new line to the form layout containing a QLabel widget for the parameter name and a QComboBox to change the parameter value

add_new_qline(name, default_val, layout, pol_dict, validator=<PySide6.QtGui.QDoubleValidator(0x55eb337c6650)>, tip='', editable=True)[source]

Add a new line to the form layout containing a QLabel widget for the parameter name and a QLineEdit to change the parameter value

calculate(f=None)[source]

Create polymer configuration file and calculate distribution characteristics

citations = ['Das C. et al, J. Rheol. 2006, 50, 207-234']

citations {list of str} – Articles that should be cited

create_new_tab(pol_id, pol_type)[source]

Return a new widget containing a form with all the parameters specific to the polymer type pol_type

description = 'Create and Save Polymer Configuration with BOB'

description {str} – Description of theory

do_error(line='')[source]

This theory does not calculate the error

doi = ['http://dx.doi.org/10.1122/1.2167487']

doicode {list of str} – Doi code of the article

dump_text_to_file(temp_file, text_widget)[source]

NOT USED ANYMORE. Use virtual files only. Dump the content of the “result” tab of the dialog box into a file temp_file

get_file_name()[source]

Launch a dialog for selecting a file where to save the result of the polymer configuration created by BoB. Return a string with a filename

get_file_path()[source]

Select a polyconf file for BoB to read

handle_add_component()[source]

Add a tab with new polymer component in the dialog box

handle_apply_button()[source]

When Apply button of dialog box is clicked, fill the “Result” widget with the data expected by BoB

handle_architecture_type_changed(current_name)[source]

Activate/Desactivate the ‘ngeneration’ widgets specific to the Cayley types. Called when the combobox ‘Architecture’ is changed

handle_btn_prio_senio(checked)[source]

Change do_priority_seniority

handle_close_polymer_tab(index)[source]

Close a tab and delete dictionary entry Called when the close-tab button is clicked

handle_help_button()[source]

When Help button of dialog box is clicked, show BoB manual (pdf)

handle_pb_ok()[source]

Define the OK button role. If something is wrong, keep the dialog open

html_help_file = 'https://reptate.readthedocs.io/manual/Applications/React/Theory/BoB_polyconf.html'
is_ascii(s)[source]

Check if s contains non ASCII characters

launch_param_dialog()[source]

Show the dialog to set-up number of the polymer components in the mix and all the relevant parameters for each component. This function is called via a Signal for multithread compatibility

poly_param_text(pol_dict, attr)[source]

Return a string containing the value of the parameter attr or a new line if attr is an empty string

request_stop_computations()[source]

Called when user wants to terminate the current computation

set_extra_lines(pol_type, layout, pol_dict)[source]

Add extra parameter lines related to the polymer architecture pol_type to the form layout

setup_dialog()[source]

Create the dialog to setup the polymer configuration

signal_param_dialog
single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryCreatePolyconf" inherits "QTheory": Methods:   #35 type=Signal, signature=signal_param_dialog(PyObject), parameters=PyObject )
sum_ratios()[source]

Return the (float) sum of the ratio of all polymer components or 1 if there are none

thname = 'BOB Architecture'

thname {str} – Theory name

TheoryDSMLinear

Module TheoryDSMLinear

class RepTate.theories.TheoryDSMLinear.TheoryDSMLinear(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Calculate the Discrete Slip Link theory for the linear rheology of linear entangled polymers.

  • Parameters

Gslfx(crossover_limits, data)[source]

Function to find crossover frequency from limits

Gstar(omega, params, Rouse=False)[source]

Calculates G* using DSM or Rouse parameters

calculate(f=None)[source]

CLUSTERED FIXED SLIP-LINK (CFSM) + ROUSE MODEL FOR LINEAR VISCOELASTICITY

PARAMETERS: > Mc - molecular weight of cluster > Nc - number of clusters > tau_c - time constant to compare CFSM results to experimental data > beta - entanglement activity parameter for input to DSM simulations > NK - number of Kuhn steps for input into DSM simulation > tau_K - time constant to compare DSM results to experimental data

citations = ['Katzarova, M. et al, Rheol Acta 2015, 54(3), 169-183.', 'Andreev, M. et al., J. Rheol. 2014, 58(3), 723-736']

citations {list of str} – Articles that should be cited

description = 'Clustered Fixed Slip Link theory for linear entangled polymers'

description {str} – Description of theory

do_error(line)[source]

Report the error of the current theory

Report the error of the current theory on all the files, taking into account the current selected xrange and yrange.

File error is calculated as the mean square of the residual, averaged over all points in the file. Total error is the mean square of the residual, averaged over all points in all files.

doi = ['https://doi.org/10.1007/s00397-015-0836-0', 'https://doi.org/10.1122%2F1.4869252']

doicode {list of str} – Doi code of the article

find_crossover_limits(data)[source]

Find the lower and upper limits of the crossover frequency

print_DSM_params()[source]

Print out parameters for DSM simulations

set_linear_params(Nc)[source]

Returns fixed parameters for calculating linear chain G* data

single_file = False
solveNc(x, Gx, Mw, rho, R, T)[source]

Function to solve for Nc from frequency crossover data (linear chains only)

staticMetaObject = PySide6.QtCore.QMetaObject("TheoryDSMLinear" inherits "QTheory": )
supp_prod(tau, alpha, i)[source]

Returns the product operator used in the G* calculation

tandelta(omega, data)[source]

Calculate the interpolated tan(delta)

thname = 'CFSM+Rouse'

thname {str} – Theory name

TheoryDTDStars

Module TheoryDTDStars

Dynamics Tube Dilution for Stars

class RepTate.theories.TheoryDTDStars.TheoryDTDStarsFreq(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Fit DTD Theory for stars. Theory of stress relaxation in star polymer melts with no adjustable parameters beyond those measurable in linear melts

  • Function

    See Milner-McLeish (1997) and Larson et al. (2003) for details.

  • Parameters
    • G0 \(\equiv G_N^0\): Plateau modulus

    • tau_e \(\equiv \tau_\mathrm e = \left(\dfrac{M_\mathrm e^\mathrm G}{M_0}\right)^2 \dfrac{\zeta b^2}{3\pi^2k_\mathrm B T}\): Entanglement equilibration time

    • Me \(\equiv M_\mathrm e^\mathrm G = \dfrac 4 5 \dfrac{\rho R T} {G_N^0}\): Entanglement molecular weight

    • alpha: Dilution exponent

    where:
    • \(\rho\): polymer density

    • \(\zeta\): monomeric friction coefficient

    • \(b\): monomer-based segment length

    • \(k_\mathrm B T\): thermal energy

    • \(M_0\): molar mass of an elementary segment

calculate(f=None)[source]

DTDStarsFreq function

citations = ['Milner S.T. and McLeish T.C.B., Macromolecules 1997, 30, 2159-2166']

citations {list of str} – Articles that should be cited

description = 'Dynamic Tube Dilution for stars, frequency domain'

description {str} – Description of theory

doi = ['http://dx.doi.org/10.1021/ma961559f']

doicode {list of str} – Doi code of the article

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/LVE/Theory/theory.html#dynamic-dilution-equation-for-stars'
single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryDTDStarsFreq" inherits "QTheory": )
thname = 'DTD Stars'

thname {str} – Theory name

class RepTate.theories.TheoryDTDStars.TheoryDTDStarsTime(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Fit DTD Theory for stars

  • Function

    See Milner-McLeish (1997) and Larson et al. (2003) for details.

  • Parameters
    • G0 \(\equiv G_N^0\): Plateau modulus

    • tau_e \(\equiv \tau_\mathrm e = \left(\dfrac{M_\mathrm e^\mathrm G}{M_0}\right)^2 \dfrac{\zeta b^2}{3\pi^2k_\mathrm B T}\): Entanglement equilibration time

    • Me \(\equiv M_\mathrm e^\mathrm G = \dfrac 4 5 \dfrac{\rho R T} {G_N^0}\): Entanglement molecular weight

    • alpha: Dilution exponent

    where:
    • \(\rho\): polymer density

    • \(\zeta\): monomeric friction coefficient

    • \(b\): monomer-based segment length

    • \(k_\mathrm B T\): thermal energy

    • \(M_0\): molar mass of an elementary segment

calculate(f=None)[source]

DTDStarsTime function

citations = ['Milner S.T. and McLeish T.C.B., Macromolecules 1997, 30, 2159-2166']

citations {list of str} – Articles that should be cited

description = 'Dynamic Tube Dilution for stars, time domain'

description {str} – Description of theory

doi = ['http://dx.doi.org/10.1021/ma961559f']

doicode {list of str} – Doi code of the article

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/Gt/Theory/theory.html#dtd-stars-time'
single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryDTDStarsTime" inherits "QTheory": )
thname = 'DTD Stars'

thname {str} – Theory name

TheoryDebye

Module TheoryDebye

Debye theory for neutron scattering from ideal polymer chains

class RepTate.theories.TheoryDebye.TheoryDebye(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Fit a Debye function to the small angle neutron scattering data of ideal polymer chains.

  • Function
    \[I(q) = \frac {(b_H-b_D)^2}{V} N \phi(1-\phi) g_D(R_g,q) + \mathrm{Bckgrnd}\]
    where:
    • \(N=M_w/M_\mathrm{mono}\) is the degree of polymerization of the chain (\(M_w\) is a parameter of the experimental data)

    • \(\phi\) is the volume fraction of deuterated chains (read from the file)

    • \(g_D(R_g,q)\) is the Debye function, given by

    \[g_D(R_g,q) = \frac{2}{(q^2R_g^2)^2}\left( q^2R_g^2 + exp(-q^2R_g^2) -1 \right)\]
  • Parameters
    • Contrast: This sets the magnitude of the scattering and is equal to \((b_H-b_D)^2/V\) where \(b_{H/D}\) is the scattering cross-section of the hydrogenous/deuterated monomer and \(V\) is the monomer volume.

    • \(C_{gyr}\): This sets the scale of the radius of gyration of the chain. For a given molecular weight, the radius of gyration is \(R_g^2=C_{gyr}M_w\). For many polymers, this value is available in the literature, but small adjustments may still be necessary to optimize the agreement with the experimental data.

    • \(M_\mathrm{mono}\): The molecular weight of a single monomer (should be known from the chain chemistry).

    • Bckgrnd: This sets the level of the background scattering. It can, in principle, be computed from known incoherent scattering cross sections but, in practice, there are often many other unknown contributions and therefore fitting is necessary.

    • \(\lambda\): It applies a simple strain measure by shifting the radius of gyration by a constant factor for all \(q\) values, \(R_g\to \lambda R_g\) (the Stretched button must be checked). This can be used to compare the microscopic deformation with the effect of a fully affine bulk deformation or to fit to the low \(q\) data to produce an effective radius of gyration under flow. Compression perpendicular to the flow direction can be modelled by setting \(\lambda<1\).

    • \(\chi\): Parameter to model the effect of a weak interaction between the hydrogenous and the deuterated monomers on the scattering, modelled within the random phase approximation [3] (the Non-Ideal Mix button must be checked). The scattered intensity is calculated according to the function below, in which \(\chi\) is independent of \(M_w\) and \(\phi\) but is expected to change with temperature. Typically, the effect of \(\chi\) is small, but this depends upon the temperature, degree of polymerization and deuterated fraction. For deuterated/hydrogenated polystyrene \(\chi\approx 1.7\cdot 10^{-4}\) at 160 degrees C, and it is expected to be smaller with increasing temperature.

      \[I(q) = \frac {(b_H-b_D)^2}{V} \left( \frac{1}{N \phi(1-\phi) g_D(R_g,q)}-2\chi \right)^{-1} + \mathrm{Bckgrnd} \]
calculateDebye(f=None)[source]

Debye function

citations = ['Debye P., J. Phys. Chem. 1947, 51, 18-32']

citations {list of str} – Articles that should be cited

description = 'Debye theory for neutron scattering from ideal polymer chains'

description {str} – Description of theory

do_error(line)[source]

Report the error of the current theory

Report the error of the current theory on all the files, taking into account the current selected xrange and yrange.

File error is calculated as the mean square of the residual, averaged over all points in the file. Total error is the mean square of the residual, averaged over all points in all files.

doi = ['http://dx.doi.org/10.1021/j150451a002']

doicode {list of str} – Doi code of the article

handle_tbutnonideal_triggered(checked)[source]

Handle Non-ideal

handle_tbutstretched_triggered(checked)[source]

Check Streched

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/SANS/Theory/theory.html#debye-function'
single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryDebye" inherits "QTheory": )
thname = 'Debye'

thname {str} – Theory name

TheoryDebyeModes

Module TheoryDebyeModes

Module that defines theories related to Debye modes, in the frequency and time domains.

class RepTate.theories.TheoryDebyeModes.TheoryDebyeModesFrequency(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

Fit a generalized Debye model to a frequency dependent relaxation function.

  • Function
    \[\begin{split}\begin{eqnarray} \epsilon'(\omega) & = & \epsilon_\infty + \sum_{1}^{n_{modes}} \Delta\epsilon_i \frac{1}{1+(\omega\tau_i)^2} \\ \epsilon''(\omega) & = & \sum_{1}^{n_{modes}} \Delta\epsilon_i \frac{\omega\tau_i}{1+(\omega\tau_i)^2} \end{eqnarray}\end{split}\]
  • Parameters
    • einf = \(\epsilon_{\infty}\): Unrelaxed permitivity

    • \(n_{modes}\): number of Debye modes equally distributed in logarithmic scale between \(\omega_{min}\) and \(\omega_{max}\).

    • logwmin = \(\log(\omega_{min})\): decimal logarithm of the minimum frequency.

    • logwmax = \(\log(\omega_{max})\): decimal logarithm of the maximum frequency.

    • logDei = \(\log(\Delta\epsilon_{i})\), where \(\Delta\epsilon_{i}=\epsilon_{s,i}-\epsilon_\infty\): decimal logarithm of the relaxation strength of Debye mode \(i\), where \(\epsilon_{s,i}\) is the static permitivity of mode \(i\).

DebyeModesFrequency(f=None)[source]

Actual function that calculates the thoery

Qhide_theory_extras(state)[source]

Uncheck the modeaction button. Called when curent theory is changed

citations = []

citations {list of str} – Articles that should be cited

description = 'Fit Debye modes'

description {str} – Description of theory

destructor()[source]

Called when the theory tab is closed

doi = []

doicode {list of str} – Doi code of the article

drag_mode(dx, dy)[source]

Move around modes

get_modes()[source]

Get the values of Maxwell Modes from this theory

graphicmodes_visible(state)[source]

Set visibility of graphic modes

handle_spinboxValueChanged(value)[source]

Handle a change of the parameter ‘nmode’

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/Dielectric/Theory/theory.html#debye-modes'
modesaction_change(checked)[source]

Change visibility of modes

plot_theory_stuff()[source]

Plot theory graphic modes

setup_graphic_modes()[source]

Setup graphic representation of modes

show_theory_extras(show=False)[source]

Called when the active theory is changed

single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryDebyeModesFrequency" inherits "QTheory": )
thname = 'Debye modes'

thname {str} – Theory name

update_modes()[source]

Do nothing

TheoryDieneCSTR

Module TheoryDieneCSTR

class RepTate.theories.TheoryDieneCSTR.TheoryDieneCSTR(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

DieneCSTR reaction theory

Calc(f=None)[source]

Calculate the theory

citations = ['Das C. et al., Macromol. Theory Simul., 26, 1700006 (2017)']

citations {list of str} – Articles that should be cited

description = 'The Diene CSTR reaction theory'

description {str} – Description of theory

destructor()[source]

Return arms to pool

do_error(line)[source]

This theory does not calculate the error

do_fit(line='')[source]

No fitting allowed in this theory

doi = ['https://doi.org/10.1002/mats.201700006']

doicode {list of str} – Doi code of the article

get_extra_data()[source]

set extra data

handle_btn_prio_senio(checked)[source]

Change do_priority_seniority

handle_edit_bob_settings()[source]

Open the BoB binnig settings dialog

handle_save_bob_configuration()[source]

Save polymer configuraions to a file

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/React/Theory/dieneCSTR.html'
request_stop_computations()[source]

Called when user wants to terminate the current computation

set_extra_data(extra_data)[source]

set extra data

show_theory_extras(checked)[source]
signal_request_arm
signal_request_dist
signal_request_polymer
single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryDieneCSTR" inherits "QTheory": Methods:   #35 type=Signal, signature=signal_request_dist(PyObject), parameters=PyObject   #36 type=Signal, signature=signal_request_polymer(PyObject), parameters=PyObject   #37 type=Signal, signature=signal_request_arm(PyObject), parameters=PyObject )
theory_buttons_disabled(state)[source]

Disable/Enable some theory buttons before/after calculation start.

thname = 'Diene CSTR'

thname {str} – Theory name

TheoryDiscrMWD

Module TheoryDiscrMWD

Module that defines the theory to discretize a molecular weight distribution.

class RepTate.theories.TheoryDiscrMWD.TheoryDiscrMWD(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

Discretize a Molecular Weight Distribution

Qhide_theory_extras(state)[source]

Uncheck the view_bins_button button and change button activation state. Called when curent theory is changed

calculate_moments(f, line='')[source]

Calculate the moments Mn, Mw, and Mz of a molecular mass distribution

citations = []

citations {list of str} – Articles that should be cited

description = 'Discretize a Molecular Weight Distribution'

description {str} – Description of theory

destructor()[source]

Called when the theory tab is closed

discretise_mwd(f=None)[source]

Discretize a molecular weight distribution

do_error(line)[source]

This theory does not calculate the error

do_fit(line='')[source]

Fit not allowed in this theory

do_save(dir, extra_txt='')[source]

Save discrete MWD

doi = []

doicode {list of str} – Doi code of the article

drag_bin(newx, newy)[source]

Move edges of the bins

get_mwd()[source]
graphic_bins_visible(state)[source]

Set visibility of graphic helpers

handle_spinboxValueChanged(value)[source]

Handle a change of the parameter ‘nbin’

handle_view_bins_button_triggered(checked)[source]

Set visibility of bins

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/MWD/Theory/theory.html#mwd-discretization'
plot_theory_stuff()[source]

Plot theory graphic helpers

set_bar_plot(visible=True)[source]

Hide/Show the bar plot

set_equally_spaced_bins()[source]

Find the first active file in the dataset and setup the bins

set_extra_data(extra_data)[source]

Define the extra_data dict and set the bin number Redefinition of the QTheory function

set_param_value(name, new_value)[source]

Set value of theory parameter

setup_graphic_bins()[source]

Setup graphic helpers for the theory

show_theory_extras(show=False)[source]

Called when the active theory is changed

single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryDiscrMWD" inherits "QTheory": )
thname = 'Discretize MWD'

thname {str} – Theory name

TheoryGEX

Module TheoryGEX

GEX file for creating a new theory

class RepTate.theories.TheoryGEX.TheoryGEX(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Generalized Exponential Function (GEX) for experimental molecular weight distributions.

  • Function
    \[W(M) = W_0 \frac{b}{M_0 \Gamma\left(\frac{a+1}{b}\right)} \left(\frac{M}{M_0}\right)^{a} \exp\left[ -\left(\frac{M}{M_0}\right)^b \right]\]
  • Parameters
    • logW0 \(\equiv\log_{10}(W_0)\): Normalization constant.

    • logM0 \(\equiv\log_{10}(M_0)\): Proportional to \(M_n\) and \(M_w\).

    • a : Parameter related to polydispersity and skewness

    • b : Parameter related to polydispersity and skewness

GEX(f=None)[source]

GEX function

citations = []

citations {list of str} – Articles that should be cited

description = 'Generalized Exponential Function distribution'

description {str} – Description of theory

do_error(line)[source]

Report the error of the current theory

Report the error of the current theory on all the files, taking into account the current selected xrange and yrange.

File error is calculated as the mean square of the residual, averaged over all points in the file. Total error is the mean square of the residual, averaged over all points in all files.

doi = []

doicode {list of str} – Doi code of the article

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/MWD/Theory/theory.html#generalized-exponential-function'
single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryGEX" inherits "QTheory": )
thname = 'GEX'

thname {str} – Theory name

TheoryGiesekus

Module TheoryGiesekus

Module for the Giesekus model for the non-linear flow of entangled polymers.

class RepTate.theories.TheoryGiesekus.TheoryGiesekus(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Multi-mode Giesekus Model (see Chapter 6 of [4]):

\[\begin{split}\boldsymbol \sigma &= \sum_{i=1}^n G_i \boldsymbol {A_i},\\ \dfrac {\mathrm D \boldsymbol A_i} {\mathrm D t} &= \boldsymbol \kappa \cdot \boldsymbol A_i + \boldsymbol A_i\cdot \boldsymbol \kappa ^T - \dfrac {1} {\tau_i} (\boldsymbol A_i - \boldsymbol I) - \dfrac {\alpha_i} {\tau_i} (\boldsymbol A_i - \boldsymbol I)^2,\end{split}\]
where for each mode \(i\):
  • \(G_i\): weight of mode \(i\)

  • \(\tau_i\): relaxation time of mode \(i\)

  • \(\alpha_i\): constant of proportionality mode \(i\)

  • Parameters
    • alpha_i \(\equiv \alpha_i\)

calculate_giesekus(f=None)[source]

Calculate Giesekus

calculate_giesekusLAOS(f=None)[source]

Calculate Giesekus for LAOS

citations = ['Giesekus H., Rheol. Acta 1966, 5, 29']

citations {list of str} – Articles that should be cited

description = 'Giesekus constitutive equation'

description {str} – Description of theory

doi = ['http://dx.doi.org/10.1007/BF01973575']

doicode {list of str} – Doi code of the article

edit_modes_window()[source]
get_modes()[source]

Get the values of Maxwell Modes from this theory

get_modes_reptate()[source]
handle_spinboxValueChanged(value)[source]
html_help_file = 'http://reptate.readthedocs.io/manual/Applications/NLVE/Theory/theory.html#multi-mode-giesekus-model'
init_flow_mode()[source]

Find if data files are shear or extension

n1_uext(p, times)[source]

Upper Convected Maxwell model in uniaxial extension. Returns N1 = (XX -YY) component of stress tensor

plot_modes_graph()[source]
select_extensional_flow()[source]
select_shear_flow()[source]
set_modes(tau, G)[source]

Set the values of Maxwell Modes from another theory

set_param_value(name, value)[source]

Set value of a theory parameter

sigma_xy_shear(p, times)[source]

Upper Convected Maxwell model in shear. Returns XY component of stress tensor

sigma_xy_shearLAOS(p, times)[source]

Giesekus model in LAOS

sigmadot_shear(sigma, times, p)[source]

Giesekus model in shear

sigmadot_shearLAOS(sigma, times, p)[source]

Giesekus model in shear

sigmadot_uext(sigma, times, p)[source]

Giesekus model in uniaxial extension

single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryGiesekus" inherits "QTheory": )
thname = 'Giesekus'

thname {str} – Theory name

TheoryGoPolyStrand

TheoryHavriliakNegamiModes

Module TheoryHavriliakNegamiModes

Module that defines theories related to Havriliak-Negami modes, in the frequency and time domains.

class RepTate.theories.TheoryHavriliakNegamiModes.TheoryHavriliakNegamiModesFrequency(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

Fit a generalized Havriliak-Negami model to a frequency dependent relaxation function.

  • Function
    \[\epsilon^* (\omega) = \epsilon_\infty + \frac{\Delta\epsilon}{\left[ 1 + \left( i\omega\tau\right)^\alpha\right]^\gamma}\]
  • Parameters
    • einf = \(\epsilon_{\infty}\): Unrelaxed permitivity

    • \(n_{modes}\): number of Havriliak-Negami modes equally distributed in logarithmic scale between \(\omega_{min}\) and \(\omega_{max}\).

    • logwmin = \(\log(\omega_{min})\): decimal logarithm of the minimum frequency.

    • logwmax = \(\log(\omega_{max})\): decimal logarithm of the maximum frequency.

    • logDei = \(\log(\Delta\epsilon_{i})\), where \(\Delta\epsilon_{i}=\epsilon_{s,i}-\epsilon_\infty\): decimal logarithm of the relaxation strength of Debye mode \(i\), where \(\epsilon_{s,i}\) is the static permitivity of mode \(i\).

    • \(\alpha\): Asymmetry parameter

    • \(\gamma\): Broadness parameter

HavriliakNegamiModesFrequency(f=None)[source]

Calculate the theory

Qhide_theory_extras(state)[source]

Uncheck the modeaction button. Called when curent theory is changed

citations = ['Havriliak S. and Negami S., Polymer 1967, 8, 161-210']

citations {list of str} – Articles that should be cited

description = 'Fit Havriliak-Negami modes'

description {str} – Description of theory

destructor()[source]

Called when the theory tab is closed

doi = ['http://dx.doi.org/10.1016/0032-3861(67)90021-3']

doicode {list of str} – Doi code of the article

drag_mode(dx, dy)[source]

Drag graphical modes

get_modes()[source]

Get the values of Maxwell Modes from this theory

graphicmodes_visible(state)[source]

Change visibility of modes

handle_spinboxValueChanged(value)[source]

Handle a change of the parameter ‘nmode’

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/Dielectric/Theory/theory.html#havriliak-negami-modes'
modesaction_change(checked)[source]

Change visibility of modes

plot_theory_stuff()[source]

Plot graphical helpers

setup_graphic_modes()[source]

Setup graphical helpers

show_theory_extras(show=False)[source]

Called when the active theory is changed

single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryHavriliakNegamiModesFrequency" inherits "QTheory": )
thname = 'Havriliak-Negami modes'

thname {str} – Theory name

update_modes()[source]

Do nothing

TheoryKWWModes

Module TheoryKWWModes

Module that defines theories related to Havriliak-Negami modes, in the frequency and time domains.

class RepTate.theories.TheoryKWWModes.TheoryKWWModesFrequency(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

Fit a Kohlrausch-Williams-Watts (KWW, stretched exponential) model to a frequency dependent relaxation function.

  • Function
    \[\epsilon (t) - \epsilon_\infty = \Delta\epsilon \left[ 1 - \exp \left( - \frac{t}{\tau} \right)^\beta\right]\]
  • Parameters
    • einf = \(\epsilon_{\infty}\): Unrelaxed permitivity

    • \(n_{modes}\): number of Havriliak-Negami modes equally distributed in logarithmic scale between \(\omega_{min}\) and \(\omega_{max}\).

    • logwmin = \(\log(\omega_{min})\): decimal logarithm of the minimum frequency.

    • logwmax = \(\log(\omega_{max})\): decimal logarithm of the maximum frequency.

    • logDei = \(\log(\Delta\epsilon_{i})\), where \(\Delta\epsilon_{i}=\epsilon_{s,i}-\epsilon_\infty\): decimal logarithm of the relaxation strength of Debye mode \(i\), where \(\epsilon_{s,i}\) is the static permitivity of mode \(i\).

    • \(\beta\): stretched exponential parameter

Note

It makes use of the libkww code, by Joachim Wuttke, CITE: doi:10.3390/a5040604

KWWModesFrequency(f=None)[source]

Calculate theory

Qhide_theory_extras(state)[source]

Uncheck the modeaction button. Called when curent theory is changed

citations = ['Kohlrausch, R. Annalen der Physik und Chemie 1854, 91, 56-82', 'Williams G. and Watts D.C., Trans. Faraday Soc. 1970, 66, 80-85']

citations {list of str} – Articles that should be cited

description = 'Fit Kohlrausch-Williams-Watts modes'

description {str} – Description of theory

destructor()[source]

Called when the theory tab is closed

doi = ['http://dx.doi.org/10.1002/andp.18541670203', 'http://dx.doi.org/10.1039/TF9706600080']

doicode {list of str} – Doi code of the article

drag_mode(dx, dy)[source]

Drag modes

get_modes()[source]

Get the values of Maxwell Modes from this theory

graphicmodes_visible(state)[source]

Change visibility of modes

handle_spinboxValueChanged(value)[source]

Handle a change of the parameter ‘nmode’

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/Dielectric/Theory/theory.html#kolhrauch-williams-watts-kww-modes'
modesaction_change(checked)[source]

Change mode visibility

plot_theory_stuff()[source]

Plot theory helpers

setup_graphic_modes()[source]

Setup graphical helpers

show_theory_extras(show=False)[source]

Called when the active theory is changed

single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryKWWModesFrequency" inherits "QTheory": )
thname = 'KWW modes'

thname {str} – Theory name

update_modes()[source]

Do nothing

TheoryLDPEBatch

Module TheoryTobitaBatch

TobitaBatch file for creating a new theory

class RepTate.theories.TheoryLDPEBatch.TheoryTobitaBatch(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

LDPE batch reaction theory

The LDPE batch reaction theory uses an algorithm described in the paper by H. Tobita (J. Pol. Sci. Part B, 39, 391-403 (2001)). It is designed for a batch reaction - in which the reagents are well mixed at the beginning and monomer is consumed as the reaction proceeds. It is equivalent to the “plug-flow” approximation for a tubular reactor. One possibility when modelling a real tubular reactor is to mix several batch reactions with different conversions.

Calc(f=None)[source]
citations = ['Tobita H., J. Pol. Sci. Part B 2001, 39, 391-403']

citations {list of str} – Articles that should be cited

description = 'The LDPE batch reaction theory'

description {str} – Description of theory

destructor()[source]

Return arms to pool

do_error(line)[source]

This theory does not calculate the error

do_fit(line='')[source]

No fitting allowed in this theory

doi = ['http://dx.doi.org/10.1002/1099-0488(20010115)39:4<391::AID-POLB1011>3.0.CO;2-3']

doicode {list of str} – Doi code of the article

get_extra_data()[source]

set extra data

handle_btn_prio_senio(checked)[source]

Change do_priority_seniority

handle_edit_bob_settings()[source]

Open the BoB binnig settings dialog

handle_save_bob_configuration()[source]

Save polymer configuraions to a file

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/React/Theory/tobitaLDPE.html'
request_stop_computations()[source]

Called when user wants to terminate the current computation

set_extra_data(extra_data)[source]

set extra data

show_theory_extras(checked)[source]
signal_request_arm
signal_request_dist
signal_request_polymer
single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryTobitaBatch" inherits "QTheory": Methods:   #35 type=Signal, signature=signal_request_dist(PyObject), parameters=PyObject   #36 type=Signal, signature=signal_request_polymer(PyObject), parameters=PyObject   #37 type=Signal, signature=signal_request_arm(PyObject), parameters=PyObject )
theory_buttons_disabled(state)[source]

Disable/Enable some theory buttons before/after calculation start.

thname = 'Tobita Batch'

thname {str} – Theory name

TheoryLikhtmanMcLeish2002

TheoryLogNormal

Module TheoryLogNormal

class RepTate.theories.TheoryLogNormal.TheoryLogNormal(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Log-Normal distribution: the logarithm of the molecular weight is normally distributed

  • Function
    \[W(M) = W_0 \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left[ - \frac{\left(\ln{M}-(\ln{M_0} + \sigma^2)\right)^2}{2\sigma^2} \right]\]
  • Parameters
    • logW0 \(\equiv\log_{10}(W_0)\): Normalization constant.

    • logM0 \(\equiv\log_{10}(M_0)\)

    • sigma \(\equiv\sigma\)

LogNormal(f=None)[source]

LogNormal function

citations = []

citations {list of str} – Articles that should be cited

description = 'LogNormal distribution'

description {str} – Description of theory

do_error(line)[source]

Report the error of the current theory

Report the error of the current theory on all the files, taking into account the current selected xrange and yrange.

File error is calculated as the mean square of the residual, averaged over all points in the file. Total error is the mean square of the residual, averaged over all points in all files.

doi = []

doicode {list of str} – Doi code of the article

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/MWD/Theory/theory.html#log-normal-distribution'
single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryLogNormal" inherits "QTheory": )
thname = 'LogNormal'

thname {str} – Theory name

TheoryMaxwellModes

Module TheoryMaxwellModes

Module that defines theories related to Maxwell modes, in the frequency and time domains.

class RepTate.theories.TheoryMaxwellModes.TheoryMaxwellModesFrequency(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

Fit a generalized Maxwell model to a frequency dependent relaxation function.

  • Function
    \[\begin{split}\begin{eqnarray} G'(\omega) & = & \sum_{1}^{n_{modes}} G_i \frac{(\omega\tau_i)^2}{1+(\omega\tau_i)^2} \\ G''(\omega) & = & \sum_{1}^{n_{modes}} G_i \frac{\omega\tau_i}{1+(\omega\tau_i)^2} \end{eqnarray}\end{split}\]
  • Parameters
    • \(n_{modes}\): number of Maxwell modes equally distributed in logarithmic scale between \(\omega_{min}\) and \(\omega_{max}\).

    • logwmin = \(\log(\omega_{min})\): decimal logarithm of the minimum frequency.

    • logwmax = \(\log(\omega_{max})\): decimal logarithm of the maximum frequency.

    • logGi = \(\log(G_{i})\): decimal logarithm of the amplitude of Maxwell mode \(i\).

MaxwellModesFrequency(f=None)[source]

Calculate the theory

Qhide_theory_extras(state)[source]

Uncheck the modeaction button. Called when curent theory is changed

citations = []

citations {list of str} – Articles that should be cited

description = 'Maxwell modes, frequency dependent'

description {str} – Description of theory

destructor()[source]

Called when the theory tab is closed

doi = []

doicode {list of str} – Doi code of the article

drag_mode(dx, dy)[source]

Drag modes around

get_modes()[source]

Get the values of Maxwell Modes from this theory

graphicmodes_visible(state)[source]

Change visibility of modes

handle_spinboxValueChanged(value)[source]

Handle a change of the parameter ‘nmodes’

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/LVE/Theory/theory.html#maxwell-modes'
modesaction_change(checked)[source]

Change visibility of modes

plot_theory_stuff()[source]

Plot theory helpers

set_param_value(name, value)[source]

Change other parameters when nmodes is changed, else call parent function

setup_graphic_modes()[source]

Setup graphic helpers

show_theory_extras(show=False)[source]

Called when the active theory is changed

single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryMaxwellModesFrequency" inherits "QTheory": )
thname = 'Maxwell Modes'

thname {str} – Theory name

update_modes()[source]

Do nothing

class RepTate.theories.TheoryMaxwellModes.TheoryMaxwellModesTime(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

Fit a generalized Maxwell model to a time dependent relaxation function.

  • Function
    \[\begin{eqnarray} G(t) & = & \sum_{i=1}^{n_{modes}} G_i \exp (-t/\tau_i) \end{eqnarray}\]
  • Parameters
    • \(n_{modes}\): number of Maxwell modes equally distributed in logarithmic scale between \(\omega_{min}\) and \(\omega_{max}\).

    • logtmin = \(\log(t_{min})\): decimal logarithm of the minimum time.

    • logtmax = \(\log(t_{max})\): decimal logarithm of the maximum time.

    • logGi = \(\log(G_{i})\): decimal logarithm of the amplitude of Maxwell mode \(i\).

MaxwellModesTime(f=None)[source]

Calculate the theory

Qhide_theory_extras(state)[source]

Uncheck the modeaction button. Called when curent theory is changed

citations = []

citations {list of str} – Articles that should be cited

description = 'Maxwell modes, time dependent'

description {str} – Description of theory

destructor()[source]

Called when the theory tab is closed

drag_mode(dx, dy)[source]

Drag modes around

get_modes()[source]

Get the values of Maxwell Modes from this theory

graphicmodes_visible(state)[source]

Change visibility of modes

handle_spinboxValueChanged(value)[source]

Handle a change of the parameter ‘nmodes’

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/Gt/Theory/theory.html#maxwell-modes'
modesaction_change(checked)[source]

Change visibility of modes

plot_theory_stuff()[source]

Plot theory helpers

set_param_value(name, value)[source]

Change other parameters when nmodes is changed, else call parent function

setup_graphic_modes()[source]

setup graphic helpers

show_theory_extras(show=False)[source]

Called when the active theory is changed

single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryMaxwellModesTime" inherits "QTheory": )
thname = 'Maxwell Modes'

thname {str} – Theory name

update_modes()[source]

Do nothing

TheoryMultiMetCSTR

Module TheoryMultiMetCSTR

class RepTate.theories.TheoryMultiMetCSTR.TheoryMultiMetCSTR(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

THEORY DOCUMENTATION IS MISSING

Calc(f=None)[source]

MultiMetCSTR function that returns the square of y

citations = ['Read D.J. and Soares J.B.P., Macromolecules 2003, 36, 10037–10051']

citations {list of str} – Articles that should be cited

description = 'Multiple Metallocene CSTR Reaction Theory'

description {str} – Description of theory

destructor()[source]

Return arms to pool

do_error(line)[source]

This theory does not calculate the error

do_fit(line='')[source]

No fitting allowed in this theory

doi = ['http://dx.doi.org/10.1021/ma030354l']

doicode {list of str} – Doi code of the article

get_extra_data()[source]

Called when saving project. Save parameters in extra_data dict

handle_btn_prio_senio(checked)[source]

Change do_priority_seniority

handle_edit_bob_settings()[source]

Open the BoB binnig settings dialog

handle_save_bob_configuration()[source]

Save polymer configuraions to a file

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/React/Theory/MetalloceneCSTR.html'
init_param_values()[source]

Initialise parameters with default values

request_stop_computations()[source]

Called when user wants to terminate the current computation

set_extra_data(extra_data)[source]

Called when loading a project, set saved parameter values

show_theory_extras(checked)[source]
signal_mulmet_dialog
signal_request_arm
signal_request_dist
signal_request_polymer
single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryMultiMetCSTR" inherits "QTheory": Methods:   #35 type=Signal, signature=signal_request_dist(PyObject), parameters=PyObject   #36 type=Signal, signature=signal_request_polymer(PyObject), parameters=PyObject   #37 type=Signal, signature=signal_request_arm(PyObject), parameters=PyObject   #38 type=Signal, signature=signal_mulmet_dialog(PyObject), parameters=PyObject )
theory_buttons_disabled(state)[source]

Disable/Enable some theory buttons before/after calculation start.

thname = 'Multi-Met CSTR'

thname {str} – Theory name

TheoryPETS

Module TheoryPETS

Module for the PETS theory for the non-linear flow of entangled polymers.

class RepTate.theories.TheoryPETS.TheoryPETS(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Preaveraged model for Entangled Telechelic Star polymers: This theory is intended for the prediction of non-linear transient flows of entangled telechelic (with sticky functional groups at the chain-ends) star polymers.

  • Parameters
    • G : Plateau Modulus

    • tauD : Orientation relaxation time

    • tauS : Stretch Relxation time

    • tau_as : Typical time the sticker spends associated

    • tau_free : Typical time the sticker spends free

    • lmax : Maximum extensibility

    • beta : CCR coefficient

    • delta : CCR exponent

    • Z : Entanglement number

    • r_a : Ratio of sticker size to tube diameter

PETS(f=None)[source]

Calculates the theory

Qhide_theory_extras(show)[source]

Uncheck the LVE button. Called when curent theory is changed

citations = ['Boudara, V.A.H, and D.J. Read, J. Rheol., 61, 339-362 (2017)']

citations {list of str} – Articles that should be cited

description = 'Preaveraged model for entangled telechelic star polymers'

description {str} – Description of theory

destructor()[source]

Called when the theory tab is closed

doi = ['http://dx.doi.org/10.1122/1.4974908']

doicode {list of str} – Doi code of the article

extra_graphic_visible(state)[source]

Change visibility of graphic helpers

get_extra_data()[source]

Set extra_data when saving project

get_modes()[source]

Get the values of Maxwell Modes from this theory

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/NLVE/Theory/theory.html#PETS-equation'
init_flow_mode()[source]

Find if data files are shear or extension

plot_theory_stuff()[source]

Plot theory helpers

select_extensional_flow()[source]
select_shear_flow()[source]
set_extra_data(extra_data)[source]

Set extra data when loading project

show_linear_envelope(state)[source]
show_theory_extras(show=False)[source]

Called when the active theory is changed

sigmadot_shear(vec, t, p)[source]

PETS differential equation under shear flow with stretching and finite extensibility if selected

sigmadot_uext(vec, t, p)[source]

PETS differential equation under uext flow with stretching and finite extensibility if selected

single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryPETS" inherits "QTheory": )
thname = 'PETS'

thname {str} – Theory name

TheoryPomPom

Module TheoryPomPom

Module for the Pom-Pom model for the non-linear flow of entangled polymers.

class RepTate.theories.TheoryPomPom.TheoryPomPom(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Multi-mode PomPom Model based on [5]:

\[\begin{split}\boldsymbol \sigma &= 3 \sum_{i=1}^n G_i \lambda_i^2(t) \boldsymbol S_i (t),\\ \boldsymbol S_i &= \dfrac{\boldsymbol A_i } {\mathrm{Tr} \boldsymbol A_i}\\ \dfrac {\mathrm D \boldsymbol A_i} {\mathrm D t} &= \boldsymbol \kappa \cdot \boldsymbol A_i + \boldsymbol A_i\cdot \boldsymbol \kappa ^T - \dfrac {1} {\tau_{\mathrm b, i}} (\boldsymbol A_i - \boldsymbol I), \\ \dfrac {\mathrm D \lambda_i} {\mathrm D t} &= \lambda_i (\boldsymbol \kappa : \boldsymbol S_i) - \dfrac {1} {\tau_{\mathrm s, i}} (\lambda_i - 1) \exp\left( \nu^* (\lambda_i - 1) \right),\end{split}\]

where, for each mode \(i\):

  • \(G_i\): weight of mode \(i\)

  • \(\tau_{\mathrm b, i}\): backbone orientation relaxation time of mode \(i\)

  • \(\tau_{\mathrm s, i}\): backbone stretch relaxation time of mode \(i\)

  • \(\nu_i^* = \dfrac{2}{q_i - 1}\)

  • \(q_i\): the number of dangling arms of each mode

  • Parameters

    • q_i \(\equiv q_i\): the number of dangling arms of each mode

    • ratio_i \(\equiv \dfrac{\tau_{\mathrm b, i}}{\tau_{\mathrm s, i}}\):

    the ratio of orientation to stretch relaxation times of each mode

calculate_PomPom(f=None)[source]

Calculate the theory

calculate_PomPomLAOS(f=None)[source]

Calculate the theory in LAOS

citations = ['McLeish T.C.B. and Larson R.G., J. Rheol. 1998, 42, 81-110']

citations {list of str} – Articles that should be cited

description = 'Pom-Pom constitutive equation'

description {str} – Description of theory

doi = ['http://dx.doi.org/10.1122/1.550933']

doicode {list of str} – Doi code of the article

edit_modes_window()[source]
get_modes()[source]

Get the values of Maxwell Modes from this theory

get_modes_reptate()[source]
handle_flowsolve_btn()[source]

Save theory parameters in FlowSolve format

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/NLVE/Theory/theory.html#multi-mode-pom-pom-model'
init_flow_mode()[source]

Find if data files are shear or extension

plot_modes_graph()[source]
select_extensional_flow()[source]
select_shear_flow()[source]
set_modes(tau, G)[source]

Set the values of Maxwell Modes from another theory

set_param_value(name, value)[source]

Set the value of theory parameters

sigmadot_shear(l, t, p)[source]

PomPom model in shear

sigmadot_shearLAOS(l, t, p)[source]

PomPom model in shear LAOS

sigmadot_uext(l, t, p)[source]

PomPom model in uniaxial extension

single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryPomPom" inherits "QTheory": )
thname = 'Pom-Pom'

thname {str} – Theory name

TheoryRDPLVE

Module TheoryRDPLVE

Template file for creating a new theory

class RepTate.theories.TheoryRDPLVE.TheoryRDPLVE(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Rolie-Double-Poly equation for the linear predictions of polydispere entangled linear polymers

  • Function
    \[\begin{split}\begin{eqnarray} G'(\omega) & = & \sum_{i=1}^{n_{modes}}\sum_{j=1}^{n_{modes}} G \phi_i \phi_j \frac{(\omega\tau)^2}{1+(\omega\tau)^2} \\ G''(\omega) & = & \sum_{i=1}^{n_{modes}}\sum_{j=1}^{n_{modes}} G \phi_i \phi_j \frac{\omega\tau}{1+(\omega\tau)^2} \end{eqnarray}\end{split}\]

    where, \(\tau = (\tau_{\text D,i}^{-1} + \tau_{\text D, j}^{-1})^{-1}\), and, if the “modulus correction” button is clicked, \(G=G_N^0 \times g(Z_\text{eff})\), with \(g\) the Likthman-McLeish CLF correction function, otherwise \(G=G_N^0\)

  • Parameters
    • nmodes : number of molecular mass components.

    • G_N^0 : Plateau modulus

    • phi0i : Volume fraction of component \(i\)

    • tauD0i : Reptation time of component \(i\)

Qhide_theory_extras(show)[source]

Called when current theory is changed

calculate(f=None)[source]

Calculate the theory

citations = []

citations {list of str} – Articles that should be cited

description = 'Linear ViscoElastic predictions of the Rolie-Double-Poly model'

description {str} – Description of theory

edit_modes_window()[source]
edit_mwd_modes()[source]
fZ(z)[source]

CLF correction function Likthman-McLeish (2002)

gZ(z)[source]

CLF correction function for modulus Likthman-McLeish (2002)

get_extra_data()[source]

Set extra_data when saving project

get_modes()[source]

Get the values of Maxwell Modes from this theory

get_modes_reptate()[source]
handle_with_gcorr_button(checked)[source]
html_help_file = 'http://reptate.readthedocs.io/manual/Applications/LVE/Theory/theory.html#rolie-double-poly-lve'
set_extra_data(extra_data)[source]

Set extra data when loading project

set_modes_from_mwd(m, phi)[source]

Set modes from MWD

set_param_value(name, value)[source]

Set the value of a theory parameter

single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryRDPLVE" inherits "QTheory": )
thname = 'RDP LVE'

thname {str} – Theory name

TheoryReactMix

Module TheoryReactMix

class RepTate.theories.TheoryReactMix.TheoryReactMix(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

BASIC THEORY DOCUMENTATION IS MISSING IN PYTHON FILE

Calc(f=None)[source]

ReactMix function

citations = []

citations {list of str} – Articles that should be cited

description = 'Combine other active React theories'

description {str} – Description of theory

do_error(line)[source]

This theory does not calculate the error

doi = []

doicode {list of str} – Doi code of the article

get_extra_data()[source]

Called when saving project. Save parameters in extra_data dict

handle_btn_prio_senio(checked)[source]

Change do_priority_seniority

handle_edit_bob_settings()[source]

Open the BoB binnig settings dialog

handle_save_bob_configuration()[source]

Save polymer configuraions to a file

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/React/Theory/mixture.html'
set_extra_data(extra_data)[source]

Called when loading a project, set saved parameter values

signal_mix_dialog
single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryReactMix" inherits "QTheory": Methods:   #35 type=Signal, signature=signal_mix_dialog(PyObject), parameters=PyObject )
theory_buttons_disabled(state)[source]

Enable/Disable theory buttons, typically called at the start and stop of a calculation. This is relevant in multithread mode only.

thname = 'React Mix'

thname {str} – Theory name

TheoryRetardationModes

Module TheoryRetardationModes

Module that defines theories related to Retardation modes, in the frequency and time domains.

class RepTate.theories.TheoryRetardationModes.TheoryRetardationModesTime(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

Fit a discrete Retardation spectrum to time dependent creep data

  • Function
    \[\gamma(t) = \sigma_0 \left( J_0 + \sum_{1}^{n_{modes}} J_i \left[ 1 - \exp\left(\frac{-t}{\tau_i}\right) \right] + \frac{t}{\eta_0} \right)\]
    where:
    • \(\sigma_0\): constant stress applied during the creep experiment.

  • Parameters
    • \(J_0\): Instantaneous compliance (logJini, in logarithmic scale).

    • \(\eta_0\): Terminal viscosity (logeta0, in logarithmic scale).

    • \(n_{modes}\): number of Retardation modes equally distributed in logarithmic scale between \(t_{min}\) and \(t_{max}\).

    • logtmin = \(\log(t_{min})\): decimal logarithm of the minimum time range for the modes.

    • logtmax = \(\log(t_{max})\): decimal logarithm of the maximum time.

    • logJi = \(\log(J_{i})\): decimal logarithm of the compliance of Retardation mode \(i\).

Qhide_theory_extras(state)[source]

Uncheck the modeaction button. Called when curent theory is changed

RetardationModesTime(f=None)[source]

Calculate the theory

citations = []

citations {list of str} – Articles that should be cited

description = 'Fit Retardation modes to time dependent creep data'

description {str} – Description of theory

destructor()[source]

Called when the theory tab is closed

doi = []

doicode {list of str} – Doi code of the article

drag_mode(dx, dy)[source]

Drag modes around

get_modes()[source]

Get the values of Maxwell Modes from this theory

graphicmodes_visible(state)[source]

Change visibility of modes

handle_spinboxValueChanged(value)[source]

Handle a change of the parameter ‘nmode’

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/Creep/Theory/theory.html#retardation-modes'
modesaction_change(checked)[source]

Change visibility of modes

plot_theory_stuff()[source]

Plot theory helpers

setup_graphic_modes()[source]

Setup graphic helpers

show_theory_extras(show=False)[source]

Called when the active theory is changed

single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryRetardationModesTime" inherits "QTheory": )
thname = 'Retardation Modes'

thname {str} – Theory name

update_modes()[source]

Do nothing

TheoryRolieDoublePoly

Module TheoryRolieDoublePoly

Module for the Rolie-Double-Poly theory for the non-linear flow of entangled polymers.

class RepTate.theories.TheoryRolieDoublePoly.TheoryRolieDoublePoly(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Rolie-Double-Poly equations for the nonlinear predictions of polydisperse melts of entangled linear polymers

  • Function
    \[\boldsymbol \sigma = G_N^0 \sum_i g(Z_{\text{eff},i}) \text{fene}(\lambda_i) \phi_i \boldsymbol A_i\]
    where
    \[\begin{split}\boldsymbol A_i &= \sum_j \phi_j \boldsymbol A_{ij}\\ \lambda_i &= \left( \dfrac{\text{Tr} \boldsymbol A_i}{3} \right)^{1/2}\\ \stackrel{\nabla}{\boldsymbol A_{ij}} &= -\dfrac{1}{\tau_{\mathrm d,i}} (\boldsymbol A_{ij} - \boldsymbol I) -\dfrac{2}{\tau_{\mathrm s,i}} \dfrac{\lambda_i - 1}{\lambda_i} \boldsymbol A_{ij} -\left( \dfrac{\beta_\text{th}}{\tau_{\mathrm d,j}} + \beta_\text{CCR}\dfrac{2}{\tau_{\mathrm s,j}} \dfrac{\lambda_j - 1}{\lambda_j}\lambda_i^{2\delta} \right) (\boldsymbol A_{ij} - \boldsymbol I)\\ \text{fene}(\lambda) &= \dfrac{1-1/\lambda_\text{max}^2}{1-\lambda^2/\lambda_\text{max}^2}\end{split}\]

    with \(\beta_\text{th}\) the thermal constrain release parameter, set to 1. If the “modulus correction” button is pressed, \(g(z) = 1- \dfrac{c_1}{z^{1/2}} + \dfrac{c_2}{z} + \dfrac{c_3}{z^{3/2}}\) is the Likhtman-McLeish CLF correction function to the modulus (\(c_1=1.69\), \(c_2=2\), \(c_3=-1.24\)), \(g(z) = 1\) otherwise; \(Z_{\text{eff},i}=Z_i\phi_{\text{dil},i}\) is the effective entanglement number of the molecular weight component \(i\), and \(\phi_{\text{dil},i}\) the dilution factor (\(\phi_{\text{dil},i}\leq \phi_i\)).

  • Parameters
    • GN0 \(\equiv G_N^0\): Plateau modulus

    • beta \(\equiv\beta_\text{CCR}\): Rolie-Poly CCR parameter

    • delta \(\equiv\delta\): Rolie-Poly CCR exponent

    • phi_i \(\equiv\phi_i\): Volume fraction of species \(i\)

    • tauD_i \(\equiv\tau_{\mathrm d,i}\): Reptation time of species \(i\) (including CLF)

    • tauR_i \(\equiv\tau_{\mathrm s,i}\): Stretch relaxation time of species \(i\)

    • lmax \(\equiv\lambda_\text{max}\): Maximum stretch ratio (active only when the “fene button” is pressed)

Qhide_theory_extras(show)[source]

Uncheck the LVE button. Called when curent theory is changed

RolieDoublePoly(f=None)[source]

Calculate the theory

calculate_fene(l_square, lmax)[source]

calculate finite extensibility function value

citations = ['Boudara V.A.H. et al., J. Rheol. 63, 71-91 (2019)']

citations {list of str} – Articles that should be cited

description = 'Rolie-Double-Poly const. eq. for polydisperse melts of entangled linear polymers'

description {str} – Description of theory

destructor()[source]

Called when the theory tab is closed

do_fit(line)[source]

Minimisation procedure disabled in this theory

doi = ['http://dx.doi.org/10.1122/1.5052320']

doicode {list of str} – Doi code of the article

edit_modes_window()[source]
edit_mwd_modes()[source]
extra_graphic_visible(state)[source]

Change visibility of graphic helpers

fZ(z)[source]

CLF correction function Likthman-McLeish (2002)

gZ(z)[source]

CLF correction function for modulus Likthman-McLeish (2002)

get_extra_data()[source]

Set extra_data when saving project

get_modes()[source]

Get the values of Maxwell Modes from this theory

get_modes_reptate()[source]
handle_flowsolve_btn()[source]

Save theory parameters in FlowSolve format

handle_with_fene_button(checked)[source]
handle_with_gcorr_button(checked)[source]
html_help_file = 'http://reptate.readthedocs.io/manual/Applications/NLVE/Theory/theory.html#rolie-double-poly-equations'
init_flow_mode()[source]

Find if data files are shear or extension

plot_theory_stuff()[source]

Plot theory helpers

select_extensional_flow()[source]
select_shear_flow()[source]
set_extra_data(extra_data)[source]

Set extra data when loading project

set_modes(tau, G)[source]

Set the values of Maxwell Modes from another theory

set_modes_from_mwd(m, phi)[source]

Set modes from MWD

set_param_value(name, value)[source]

Set the value of theory parameters

show_linear_envelope(state)[source]
show_theory_extras(show=False)[source]

Called when the active theory is changed

sigmadot_shear(sigma, t, p)[source]

Rolie-Poly differential equation under shear flow with stretching and finite extensibility if selected

sigmadot_uext(sigma, t, p)[source]

Rolie-Poly differential equation under uniaxial elongational flow with stretching and finite extensibility if selecter

single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryRolieDoublePoly" inherits "QTheory": )
thname = 'Rolie-Double-Poly'

thname {str} – Theory name

TheoryRoliePoly

Module TheoryRoliePoly

Module for the Rolie-Poly theory for the non-linear flow of entangled polymers.

class RepTate.theories.TheoryRoliePoly.TheoryRoliePoly(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Rolie-Poly theory MORE DETAILED DOCUMENTATION IS MISSING

Qhide_theory_extras(show)[source]

Uncheck the LVE button. Called when curent theory is changed

RoliePoly(f=None)[source]

Calculate the theory

RoliePolyLAOS(f=None)[source]

Calculate the theory for LAOS

calculate_fene(l_square, lmax)[source]

calculate finite extensibility function value

citations = ['Likhtman, A.E. & Graham, R.S., J. Non-Newtonian Fluid Mech., 2003, 114, 1-12']

citations {list of str} – Articles that should be cited

description = 'Rolie-Poly constitutive equation'

description {str} – Description of theory

destructor()[source]

Called when the theory tab is closed

doi = ['http://dx.doi.org/10.1016/S0377-0257(03)00114-9']

doicode {list of str} – Doi code of the article

edit_modes_window()[source]
extra_graphic_visible(state)[source]

Change visibility of theory helpers

get_extra_data()[source]

Set extra_data when saving project

get_modes()[source]

Get the values of Maxwell Modes from this theory

get_modes_reptate()[source]
handle_flowsolve_btn()[source]

Save theory parameters in FlowSolve format

handle_spinboxValueChanged(value)[source]
handle_with_fene_button(checked)[source]
html_help_file = 'http://reptate.readthedocs.io/manual/Applications/NLVE/Theory/theory.html#rolie-poly-equation'
init_flow_mode()[source]

Find if data files are shear or extension

plot_theory_stuff()[source]

Plot theory helpers

select_extensional_flow()[source]
select_shear_flow()[source]
set_extra_data(extra_data)[source]

Set extra data when loading project

set_modes(tau, G)[source]

Set the values of Maxwell Modes from another theory

set_param_value(name, value)[source]

Set the value of a theory parameter

show_linear_envelope(state)[source]
show_theory_extras(show=False)[source]

Called when the active theory is changed

sigmadot_shear(sigma, t, p)[source]

Rolie-Poly differential equation under shear flow with stretching and finite extensibility if selected

sigmadot_shearLAOS(sigma, t, p)[source]

Rolie-Poly differential equation under shear flow with stretching and finite extensibility if selected

sigmadot_shear_nostretch(sigma, t, p)[source]

Rolie-Poly differential equation under shear flow, without stretching

sigmadot_shear_nostretchLAOS(sigma, t, p)[source]

Rolie-Poly differential equation under shear flow, without stretching

sigmadot_uext(sigma, t, p)[source]

Rolie-Poly differential equation under uniaxial elongational flow with stretching and finite extensibility if selecter

sigmadot_uext_nostretch(sigma, t, p)[source]

Rolie-Poly differential equation under elongation flow, wihtout stretching

single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryRoliePoly" inherits "QTheory": )
thname = 'Rolie-Poly'

thname {str} – Theory name

TheoryRouse

Module TheoryRouseTime

RouseTime file for creating a new theory

class RepTate.theories.TheoryRouse.TheoryRouseFrequency(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Fit Rouse modes to a frequency dependent relaxation function

  • Function

    Continuous Rouse model (valid for “large” \(N\)):

    \[\begin{split}G'(\omega) &= G_0 \dfrac 1 N \sum_{p=1}^N \dfrac{(\omega\tau_p)^2} {1 + (\omega\tau_p)^2}\\ G''(\omega) &= G_0 \dfrac 1 N \sum_{p=1}^N \dfrac{\omega\tau_p} {1 + (\omega\tau_p)^2}\\ \tau_p &= \dfrac{N^2 \tau_0 }{ 2 p^2}\end{split}\]
  • Parameters
    • \(G_0 = ck_\mathrm B T\): “modulus”

    • \(\tau_0\): relaxation time of an elementary segment

    • \(M_0\): molar mass of an elementary segment

    where
    • \(c\): number of segments per unit volume

    • \(k_\mathrm B\): Boltzmann constant

    • \(T\): temperature

    • \(N=M_w/M_0\): number of segments par chain

    • \(M_w\): weight-average molecular mass

calculate(f=None)[source]

RouseFrequency function

citations = ['Rouse P.E. Jr, J. Chem. Phys. 1953, 21, 1272']

citations {list of str} – Articles that should be cited

description = 'Rouse model'

description {str} – Description of theory

doi = ['http://dx.doi.org/10.1063/1.1699180']

doicode {list of str} – Doi code of the article

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/LVE/Theory/theory.html#rouse-frequency'
single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryRouseFrequency" inherits "QTheory": )
thname = 'Rouse'

thname {str} – Theory name

class RepTate.theories.TheoryRouse.TheoryRouseTime(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Fit Rouse modes to a time dependent relaxation function

  • Function

    Continuous Rouse model (valid for “large” \(N\)):

    \[G(t) = G_0 \dfrac 1 N \sum_{p=1}^N \exp\left(\dfrac{-2p^2t}{N^2\tau_0}\right)\]
  • Parameters
    • \(G_0 = ck_\mathrm B T\): “modulus”

    • \(\tau_0\): relaxation time of an elementary segment

    • \(M_0\): molar mass of an elementary segment

    where
    • \(c\): number of segments per unit volume

    • \(k_\mathrm B\): Boltzmann constant

    • \(T\): temperature

    • \(N=M_w/M_0\): number of segments par chain

    • \(M_w\): weight-average molecular mass

calculate(f=None)[source]

RouseTime function

citations = ['Rouse P.E. Jr, J. Chem. Phys. 1953, 21, 1272']

citations {list of str} – Articles that should be cited

description = 'Rouse model'

description {str} – Description of theory

doi = ['http://dx.doi.org/10.1063/1.1699180']

doicode {list of str} – Doi code of the article

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/Gt/Theory/theory.html#rouse-time'
single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryRouseTime" inherits "QTheory": )
thname = 'Rouse'

thname {str} – Theory name

TheorySCCR

Module TheorySCCR

Module for the SCCR theory for the non-linear flow of entangled polymers.

class RepTate.theories.TheorySCCR.TheorySCCR(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Full SCCR theory for the Non-linear transient flow of linear entangled polymers.

  • Parameters
    • tau_e : Rouse time of one entanglement segment (of length \(M_e\).

    • Ge : Entanglement modulus.

    • Me : Entanglement molecular weight.

    • c_nu : Constraint release parameter.

    • R_S : Retraction rate parameter

Get_Recommended_N(cnu, z)[source]
SCCR(f=None)[source]

Calculates the theory

Set_beta_rcr(z, cnu)[source]
citations = ['Graham, R.S. et al., J. Rheol., 2003, 47, 1171-1200']

citations {list of str} – Articles that should be cited

description = 'SCCR theory for linear entangled polymers'

description {str} – Description of theory

do_fit(line)[source]

Minimisation procedure disabled in this theory

doi = ['http://dx.doi.org/10.1122/1.1595099']

doicode {list of str} – Doi code of the article

extra_graphic_visible(state)[source]

Do nothing

handle_recommendedN(checked)[source]
handle_spinboxValueChanged(value)[source]
html_help_file = 'http://reptate.readthedocs.io/manual/Applications/NLVE/Theory/theory.html#sccr-theory'
ind(k, i, j)[source]
Convert k,i,j (3D array) indices to ind (1D array), considering the symmetry of the problem
1 / (j=i diagonal)

/

2 / 4

/ / / 3 (j=self.N-i diagonal)

init_flow_mode()[source]

Find if data files are shear or extension

launch_get_MW_dialog()[source]
pde_shear(y, t)[source]
select_extensional_flow()[source]
select_shear_flow()[source]
set_extra_data(extra_data)[source]

Set extra data when loading project

set_yeq()[source]
show_theory_extras(show=False)[source]

Called when the active theory is changed

signal_get_MW
single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheorySCCR" inherits "QTheory": Methods:   #35 type=Signal, signature=signal_get_MW(PyObject), parameters=PyObject )
thname = 'GLaMM'

thname {str} – Theory name

TheoryShanbhagMaxwellModes

Module TheoryShanbhagMaxwellModes

Module that defines theories related to Maxwell modes, in the frequency and time domains based on the codes pyRespect-time (10.1002/mats.201900005) and pyRespect-frequency (10.3933/ApplRheol-23-24628)

class RepTate.theories.TheoryShanbhagMaxwellModes.PredictionMode(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Enum

Define which prediction we want to see

Parameters can be:
  • cont: Prediction from Continuous spectrum

  • disc: Prediction from Discrete spectrum

cont = 0
disc = 1
class RepTate.theories.TheoryShanbhagMaxwellModes.TheoryShanbhagMaxwellModesFrequency(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

Extract continuous and discrete relaxation spectra from complex modulus G*(w)

  • Parameters
    • plateau : is there a residual plateau in the data (default False).

    • ns : Number of grid points to represent the continuous spectrum (typical 50-100)

    • lamC : Specify lambda_C instead of using the one inferred from the L-curve (default 0, use the L-curve).

    • SmFacLam = Smoothing Factor.

    • MaxNumModes = Max Number of Modes (default 0, automatically determine the optimal number of modes).

    • lam_min = lower limit of lambda for lcurve calculation (default 1e-10).

    • lam_max = higher limit of lambda for lcurve calculation (default 1e3).

    • lamDensity = lambda density per decade (default 3, use 2 or more).

    • rho_cutoff = Threshold to avoid picking too small lambda for L-curve without (default 0).

    • deltaBaseWeightDist = how finely to sample BaseWeightDist (default 0.2).

    • minTauSpacing = how close do successive modes (tau2/tau1) have to be before we try to mege them (default 1.25).

FineTuneSolution(tau, w, Gexp, isPlateau)[source]

Given a spacing of modes tau, tries to do NLLS to fine tune it further If it fails, then it returns the old tau back Uses helper function: res_wG which computes residuals

GetWeights(H, w, s, wb)[source]

% % Function: GetWeights(input) % % Finds the weight of “each” mode by taking a weighted average of its contribution % to Gp and Gpp, mixed with an even distribution given by wb % % Input: H = CRS (ns * 1) % w = n*1 vector contains times % s = relaxation modes (ns * 1) % wb = weightBaseDist % % Output: wt = weight of each mode %

GridDensity(x, px, N)[source]

# # PROGRAM: GridDensity(input) # # Takes in a PDF or density function, and spits out a bunch of points in # accordance with the PDF # # Input: # x = vector of points. It need not be equispaced, # px = vector of same size as x: probability distribution or # density function. It need not be normalized but has to be positive. # N = Number of points >= 3. The end points of “x” are included # necessarily, # # Output: # z = Points distributed according to the density # hz = width of the “intervals” - useful to apportion domain to points # if you are doing quadrature with the results, for example. # # (c) Sachin Shanbhag, November 11, 2015 #

InitializeH(Gexp, s, kernMat, G0=0)[source]

Function: InitializeH(input)

Input: Gexp = 2n*1 vector [G’;G”],

s = relaxation modes, kernMat = matrix for faster kernel evaluation G0 = optional; if plateau is nonzero

Output: H = guessed H

G0 = optional guess if *argv is nonempty

MaxwellModes(z, w, Gexp, isPlateau)[source]

Function: MaxwellModes(input)

Solves the linear least squares problem to obtain the DRS

Input: z = points distributed according to the density,

t = n*1 vector contains times, Gexp = 2n*1 vector contains Gp and Gpp isPlateau = True if G0

eq 0

Output: g, tau = spectrum (array)

error = relative error between the input data and the G(t) inferred from the DRS condKp = condition number

Qhide_theory_extras(state)[source]

Uncheck the modeaction button. Called when curent theory is changed

ShanBhagMaxwellModesFrequency(f=None)[source]

Function that calculates the spectrum

citations = ['Takeh, A. and Shanbhag, S., Appl. Rheol. 2013, 23, 24628']

citations {list of str} – Articles that should be cited

costFcn_magic(par, g, tau, imode)[source]

“helper function for mergeModes; establishes cost function to minimize used only when magic = True

description = 'Relaxation spectra from dynamic moduli'

description {str} – Description of theory

destructor()[source]

Called when the theory tab is closed

do_error(line)[source]

Report the error of the current theory

Report the error of the current theory on all the files, taking into account the current selected xrange and yrange.

File error is calculated as the mean square of the residual, averaged over all points in the file. Total error is the mean square of the residual, averaged over all points in all files.

do_fit(line='')[source]

Minimize the error

doi = ['http://dx.doi.org/10.3933/ApplRheol-23-24628']

doicode {list of str} – Doi code of the article

getAmatrix(ns)[source]

Generate symmetric matrix A = L’ * L required for error analysis: helper function for lcurve in error determination

getBmatrix(H, kernMat, Gexp, *argv)[source]

get the Bmatrix required for error analysis; helper for lcurve() not explicitly accounting for G0 in Jr because otherwise I get underflow problems

getH(lam, Gexp, H, kernMat, G0=0)[source]

minimize_H V(lambda) := ||Gexp - kernel(H)||^2 + lambda * ||L H||^2

Inputlambda = regularization parameter ,

Gexp = experimental data, H = guessed H, kernMat = matrix for faster kernel evaluation G0 = optional

OutputH_lam, [G0]

Default uses Trust-Region Method with Jacobian supplied by jacobianLM

getKernMat(s, w)[source]

furnish kerMat() which helps faster kernel evaluation, given s, w Generates a 2n*ns matrix [(ws^2/1+ws^2) | (ws/1+ws)]’hs, which can be multiplied with exp(H) to get predicted G

get_modes()[source]

Get the values of Maxwell Modes from this theory

graphicmodes_visible(state)[source]

Change visibility of modes

handle_spinboxValueChanged(value)[source]

Handle a change of the parameter ‘nmodes’

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/LVE/Theory/theory.html#shanbhag-maxwell-modes'
jacobianLM(H, lam, Gexp, kernMat)[source]
HELPER FUNCTION: Gets Jacobian J

returns a (n+nl * ns) matrix Jr; (ns + 1) if G0 is also supplied.

Jr_(i, j) = dr_i/dH_j

It uses kernelD, which approximates dK_i/dH_j, where K is the kernel

kernelD(H, kernMat)[source]

Function: kernelD(input)

outputs the 2n*ns dimensional vector DK(H)(w) It approximates dK_i/dH_j = K * e(H_j):

Input: H = substituted CRS,

kernMat = matrix for faster kernel evaluation

Output: DK = Jacobian of H

kernel_prestore(H, kernMat, *argv)[source]

turbocharging kernel function evaluation by prestoring kernel matrix Date : 8/17/2018 Function: kernel_prestore(input) returns K*h, where h = exp(H)

Same as kernel, except prestoring hs, S, and W to improve speed 3x.

outputs the 2n*1 dimensional vector K(H)(w) which is comparable to G* = [G’|G”]’ 3/11/2019: returning Kh + G0

Input: H = substituted CRS,

kernMat = 2n*ns matrix [(ws^2/1+ws^2) | (ws/1+ws)]’*hs

lcurve(Gexp, Hgs, kernMat, *argv)[source]

Function: lcurve(input)

Input: Gexp = 2n*1 vector [Gt],

Hgs = guessed H, kernMat = matrix for faster kernel evaluation G0 = optionally

Output: lamC and 3 vectors of size npoints*1 contains a range of lambda, rho

and eta. “Elbow” = lamC is estimated using a NEW heuristic AND by Hansen method

March 2019: starting from large lambda to small cuts calculation time by a lot

also gives an error estimate

mergeModes_magic(g, tau, imode)[source]

merge modes imode and imode+1 into a single mode return gp and taup corresponding to this new mode used only when magic = True

modesaction_change(checked)[source]

Change visibility of modes

nnLLS(w, tau, Gexp, isPlateau)[source]

# # Helper subfunction which does the actual LLS problem # helps MaxwellModes #

normKern_magic(w, gn, taun, g1, tau1, g2, tau2)[source]

helper function: for costFcn and mergeModes used only when magic = True

oldLamC(lam, rho, eta)[source]
plateauaction_change(checked)[source]
plot_theory_stuff()[source]

Plot theory helpers

res_wG(tau, wexp, Gexp, isPlateau)[source]

Helper function for final optimization problem

residualLM(H, lam, Gexp, kernMat)[source]

% % HELPER FUNCTION: Gets Residuals r %

save_spectrum()[source]

Save Spectrum to a text file

select_cont_pred()[source]
select_disc_pred()[source]
setup_graphic_modes()[source]

Setup graphic helpers

show_theory_extras(show=False)[source]

Called when the active theory is changed

single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryShanbhagMaxwellModesFrequency" inherits "QTheory": )
thname = 'ReSpect'

thname {str} – Theory name

class RepTate.theories.TheoryShanbhagMaxwellModes.TheoryShanbhagMaxwellModesTime(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

Extract continuous and discrete relaxation spectra from relaxation modulus G(t)

  • Parameters
    • plateau : is there a residual plateau in the data (default False).

    • ns : Number of grid points to represent the continuous spectrum (typical 50-100)

    • lamC : Specify lambda_C instead of using the one inferred from the L-curve (default 0, use the L-curve).

    • SmFacLam = Smoothing Factor.

    • MaxNumModes = Max Number of Modes (default 0, automatically determine the optimal number of modes).

    • lam_min = lower limit of lambda for lcurve calculation (default 1e-10).

    • lam_max = higher limit of lambda for lcurve calculation (default 1e3).

    • lamDensity = lambda density per decade (default 3, use 2 or more).

    • rho_cutoff = Threshold to avoid picking too small lambda for L-curve without (default 0).

    • deltaBaseWeightDist = how finely to sample BaseWeightDist (default 0.2).

    • minTauSpacing = how close do successive modes (tau2/tau1) have to be before we try to mege them (default 1.25).

FineTuneSolution(tau, t, Gexp, isPlateau, estimateError=False)[source]

Given a spacing of modes tau, tries to do NLLS to fine tune it further If it fails, then it returns the old tau back

Uses helper function: res_tG which computes residuals

GetWeights(H, t, s, wb)[source]

% % Function: GetWeights(input) % % Finds the weight of “each” mode by taking a weighted average of its contribution % to G(t) % % Input: H = CRS (ns * 1) % t = n*1 vector contains times % s = relaxation modes (ns * 1) % wb = weightBaseDist % % Output: wt = weight of each mode %

GridDensity(x, px, N)[source]

# # PROGRAM: GridDensity(input) # # Takes in a PDF or density function, and spits out a bunch of points in # accordance with the PDF # # Input: # x = vector of points. It need not be equispaced, # px = vector of same size as x: probability distribution or # density function. It need not be normalized but has to be positive. # N = Number of points >= 3. The end points of “x” are included # necessarily, # # Output: # z = Points distributed according to the density # hz = width of the “intervals” - useful to apportion domain to points # if you are doing quadrature with the results, for example. # # (c) Sachin Shanbhag, November 11, 2015 #

InitializeH(Gexp, s, kernMat, *argv)[source]

Function: InitializeH(input)

Input: Gexp = n*1 vector [Gt],

s = relaxation modes, kernMat = matrix for faster kernel evaluation G0 = optional; if plateau is nonzero

Output: H = guessed H

G0 = optional guess if *argv is nonempty

MaxwellModes(z, t, Gt, isPlateau)[source]

Function: MaxwellModes(input)

Solves the linear least squares problem to obtain the DRS

Input: z = points distributed according to the density, [z = log(tau)]

t = n*1 vector contains times, Gt = n*1 vector contains G(t), isPlateau = True if G0

eq 0

Output: g, tau = spectrum (array)

error = relative error between the input data and the G(t) inferred from the DRS condKp = condition number

MaxwellModesTime(f=None)[source]

Calculate the theory

Qhide_theory_extras(state)[source]

Uncheck the modeaction button. Called when curent theory is changed

citations = ['Shanbhag, S., Macromolecular Theory and Simulations, 2019, 1900005']

citations {list of str} – Articles that should be cited

costFcn_magic(par, g, tau, imode)[source]

“helper function for mergeModes; establishes cost function to minimize

description = 'Relaxation spectra from relaxation modulus'

description {str} – Description of theory

destructor()[source]

Called when the theory tab is closed

do_error(line)[source]

Report the error of the current theory

Report the error of the current theory on all the files, taking into account the current selected xrange and yrange.

File error is calculated as the mean square of the residual, averaged over all points in the file. Total error is the mean square of the residual, averaged over all points in all files.

do_fit(line='')[source]

Minimize the error

doi = ['http://dx.doi.org/10.1002/mats.201900005']

doicode {list of str} – Doi code of the article

getAmatrix(ns)[source]

Generate symmetric matrix A = L’ * L required for error analysis: helper function for lcurve in error determination

getBmatrix(H, kernMat, Gexp, *argv)[source]

get the Bmatrix required for error analysis; helper for lcurve() not explicitly accounting for G0 in Jr because otherwise I get underflow problems

getH(lam, Gexp, H, kernMat, *argv)[source]

Purpose: Given a lambda, this function finds the H_lambda(s) that minimizes V(lambda)

V(lambda) := ||Gexp - kernel(H)||^2 + lambda * ||L H||^2

Inputlambda = regularization parameter ,

Gexp = experimental data, H = guessed H, kernMat = matrix for faster kernel evaluation G0 = optional

OutputH_lam, [G0]

Default uses Trust-Region Method with Jacobian supplied by jacobianLM

getKernMat(s, t)[source]

furnish kerMat() which helps faster kernel evaluation given s, t generates hs * exp(-T/S) [n * ns matrix], where hs = wi = weights for trapezoidal rule integration.

This matrix (K) times h = exp(H), Kh, is comparable with Gexp

get_modes()[source]

Get the values of Maxwell Modes from this theory

graphicmodes_visible(state)[source]

Change visibility of modes

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/Gt/Theory/theory.html#shanbhag-maxwell-modes'
jacobianLM(H, lam, Gexp, kernMat)[source]

HELPER FUNCTION for optimization: Get Jacobian J

returns a (n+nl * ns) matrix Jr; (ns + 1) if G0 is also supplied.

Jr_(i, j) = dr_i/dH_j

It uses kernelD, which approximates dK_i/dH_j, where K is the kernel

kernelD(H, kernMat)[source]

Function: kernelD(input)

outputs the (n*ns) dimensional matrix DK(H)(t) It approximates dK_i/dH_j = K * e(H_j):

Input: H = substituted CRS,

kernMat = matrix for faster kernel evaluation

Output: DK = Jacobian of H

kernel_prestore(H, kernMat, *argv)[source]

turbocharging kernel function evaluation by prestoring kernel matrix Function: kernel_prestore(input) returns K*h, where h = exp(H)

Same as kernel, except prestoring hs, S, and T to improve speed 3x.

outputs the n*1 dimensional vector K(H)(t) which is comparable to Gexp = Gt

3/11/2019: returning Kh + G0

Input: H = substituted CRS,

kernMat = n*ns matrix [w * exp(-T/S)]

lcurve(Gexp, Hgs, kernMat, *argv)[source]

Function: lcurve(input)

Input: Gexp = n*1 vector [Gt],

Hgs = guessed H, kernMat = matrix for faster kernel evaluation par = parameter dictionary G0 = optionally

Output: lamC and 3 vectors of size npoints*1 contains a range of lambda, rho

and eta. “Elbow” = lamC is estimated using a NEW heuristic AND by Hansen method

March 2019: starting from large lambda to small cuts calculation time by a lot

also gives an error estimate

mergeModes_magic(g, tau, imode)[source]

merge modes imode and imode+1 into a single mode return gp and taup corresponding to this new mode; 12/2018 - also tries finetuning before returning

uses helper functions: - normKern_magic() - costFcn_magic()

modesaction_change(checked)[source]

Change visibility of modes

nnLLS(t, tau, Gexp, isPlateau)[source]

# # Helper subfunction which does the actual LLS problem # helps MaxwellModes; relies on nnls #

normKern_magic(t, gn, taun, g1, tau1, g2, tau2)[source]

helper function: for costFcn and mergeModes

oldLamC(lam, rho, eta)[source]
plateauaction_change(checked)[source]
plot_theory_stuff()[source]

Plot theory helpers

res_tG(tau, texp, Gexp, isPlateau)[source]

Helper function for final optimization problem

residualLM(H, lam, Gexp, kernMat)[source]

HELPER FUNCTION: Gets Residuals r

Input: H = guessed H,

lambda = regularization parameter , Gexp = experimental data, kernMat = matrix for faster kernel evaluation G0 = plateau

Output: a set of n+nl residuals,

the first n correspond to the kernel the last nl correspond to the smoothness criterion

%

save_spectrum()[source]

Save Spectrum to a text file

select_cont_pred()[source]
select_disc_pred()[source]
setup_graphic_modes()[source]

Setup graphic helpers

show_theory_extras(show=False)[source]

Called when the active theory is changed

single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryShanbhagMaxwellModesTime" inherits "QTheory": )
thname = 'ReSpect'

thname {str} – Theory name

TheorySmoothPolyStrand

Module TheorySmoothPolyStrand

Module for the Smooth Poly STRAND model of polymer FIC (uses the Rolie-Double-Poly theory for the non-linear flow of entangled polymers).

class RepTate.theories.TheorySmoothPolyStrand.TheorySmoothPolyStrand(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Smooth-polyStrand model for flow-induced crystallisation in polydisperse melts of entangled linear polymers

  • Rheological model: The Rolie-Double-Poly model

Evolution of chain structure under flow is computed by the Rolie-Double-Poly model. Implementation and parameters are the same as in the NVLE application.
\[\boldsymbol \sigma = G_N^0 \sum_i g(Z_{\text{eff},i}) \text{fene}(\lambda_i) \phi_i \boldsymbol A_i\]
where
\[\begin{split}\boldsymbol A_i &= \sum_j \phi_j \boldsymbol A_{ij}\\ \lambda_i &= \left( \dfrac{\text{Tr} \boldsymbol A_i}{3} \right)^{1/2}\\ \stackrel{\nabla}{\boldsymbol A_{ij}} &= -\dfrac{1}{\tau_{\mathrm d,i}} (\boldsymbol A_{ij} - \boldsymbol I) -\dfrac{2}{\tau_{\mathrm s,i}} \dfrac{\lambda_i - 1}{\lambda_i} \boldsymbol A_{ij} -\left( \dfrac{\beta_\text{th}}{\tau_{\mathrm d,j}} + \beta_\text{CCR}\dfrac{2}{\tau_{\mathrm s,j}} \dfrac{\lambda_j - 1}{\lambda_j}\lambda_i^{2\delta} \right) (\boldsymbol A_{ij} - \boldsymbol I)\\ \text{fene}(\lambda) &= \dfrac{1-1/\lambda_\text{max}^2}{1-\lambda^2/\lambda_\text{max}^2}\end{split}\]

with \(\beta_\text{th}\) the thermal constrain release parameter, set to 1. If the “modulus correction” button is pressed, \(g(z) = 1- \dfrac{c_1}{z^{1/2}} + \dfrac{c_2}{z} + \dfrac{c_3}{z^{3/2}}\) is the Likhtman-McLeish CLF correction function to the modulus (\(c_1=1.69\), \(c_2=2\), \(c_3=-1.24\)), \(g(z) = 1\) otherwise; \(Z_{\text{eff},i}=Z_i\phi_{\text{dil},i}\) is the effective entanglement number of the molecular weight component \(i\), and \(\phi_{\text{dil},i}\) the dilution factor (\(\phi_{\text{dil},i}\leq \phi_i\)).

  • Nucleation model: The smooth-polyStrand model

This model takes the stress output from the Rolie-Double-Poly model for each mode, computes the flow-induced nucleation rate, using the Kuhn segment nematic order as the order parameter.

-Neglect quiescent nucleation button: this subtracts the quiescent nucleation rate and assumes all quiescent nucleation occurs from hetrogeneous nuclei.

-Average to single species button: this preaverages the chain configuration over all species in the melt and computes the nucleation rate with a single species based on this average.

  • Crystal evolution model: The Schneider rate equations

From the computed nucleation rate and the crystal growth rate, the model computes the evolution of total crystallinity using the Schneider rate equations [W. Schneider, A. Koppl, and J. Berger, Int. Polym. Proc.II 3, 151 (1988)]. This calculatiom uses the Avrami expression to account approximately for impingement.

  • Parameters

    Rheological

    • GN0 \(\equiv G_N^0\): Plateau modulus

    • beta \(\equiv\beta_\text{CCR}\): Rolie-Poly CCR parameter

    • delta \(\equiv\delta\): Rolie-Poly CCR exponent

    • phi_i \(\equiv\phi_i\): Volume fraction of species \(i\)

    • tauD_i \(\equiv\tau_{\mathrm d,i}\): Reptation time of species \(i\) (including CLF)

    • tauR_i \(\equiv\tau_{\mathrm s,i}\): Stretch relaxation time of species \(i\)

    • lmax \(\equiv\lambda_\text{max}\): Maximum stretch ratio (active only when the “fene button” is pressed)

    • Ne \(\equiv N_e\): Number of Kuhn steps between entanglements

    Quiescient Crystallisation

    • epsilonB \(\equiv \epsilon_B\): Bulk free energy gain of crystallisation per Kuhn step [dimensionless]

    • muS \(\equiv \mu_S\): Nucleus surface area cost [dimensionless]

    • tau0 \(\equiv \tau_0\): Kuhn step nucleation timescale [sec]

    • rhoK \(\equiv \rho_K\): Kuhn step density [\(\mu\mathrm{m}^{-3}\)]

    • G_C \(\equiv G_C\): Crystal growth rate [\(\mu\mathrm{m/sec}\)]

    • N_0 \(\equiv N_0\): Heterogeneous nucleation density [\(\mu\mathrm{m}^{-3}\)]

    Flow-induced crystallisation

    • Gamma \(\equiv \Gamma\): Prefactor connecting the Kuhn segment nematic order and the monomer entropy loss [dimensionless].

    • Kappa0 \(\equiv \kappa _0\): Free energy penalty for the nucleus surface roughness [dimensionless].

    • Qs0 \(\equiv Q_{s0}\): Parameter setting the volume of the search region for new stems joining the nucleus [dimensionless].

Qhide_theory_extras(show)[source]

Uncheck the LVE button. Called when curent theory is changed

RolieDoublePoly_Crystal(f=None)[source]

Calculate the theory

calculate_fene(l_square, lmax)[source]

calculate finite extensibility function value

citations = ['D.J. Read et al., Phys. Rev. Lett. 124, 147802 (2020)']

citations {list of str} – Articles that should be cited

computeFel(Fxx, Fyy, Fxy)[source]

Converts RDP configurations into a free energy change (via nematic order parameter

computeQuiescentBarrier()[source]

Calculates the GO model quiescent barrier and nucleation rate

description = 'Smooth-polySTRAND model for flow-induced nucleation'

description {str} – Description of theory

destructor()[source]

Called when the theory tab is closed

do_fit(line)[source]

Minimisation procedure disabled in this theory

doi = ['http://dx.doi.org/10.1103/PhysRevLett.124.147802']

doicode {list of str} – Doi code of the article

edit_modes_window()[source]
edit_mwd_modes()[source]
extra_graphic_visible(state)[source]

Change visibility of theory helpers

fZ(z)[source]

CLF correction function Likthman-McLeish (2002)

gZ(z)[source]

CLF correction function for modulus Likthman-McLeish (2002)

get_extra_data()[source]

Set extra_data when saving project

get_modes()[source]

Get the values of Maxwell Modes from this theory

get_modes_reptate()[source]
handle_flowsolve_btn()[source]

Save theory parameters in FlowSolve format

handle_with_fene_button(checked)[source]
handle_with_gcorr_button(checked)[source]
handle_with_noqu_button(checked)[source]
handle_with_single_button(checked)[source]
html_help_file = 'http://reptate.readthedocs.io/manual/Applications/Crystal/Theory/theory.html'
init_flow_mode()[source]

Find if data files are shear or extension

plot_theory_stuff()[source]

Plot theory helpers

select_extensional_flow()[source]
select_shear_flow()[source]
set_extra_data(extra_data)[source]

Set extra data when loading project

set_modes(tau, G)[source]

Set the values of Maxwell Modes from another theory

set_modes_from_mwd(m, phi)[source]

Set modes from MWD

set_param_value(name, value)[source]

Set the value of theory parameters

show_linear_envelope(state)[source]
show_theory_extras(show=False)[source]

Called when the active theory is changed

sigmadot_shear(sigma, t, p)[source]

Rolie-Poly differential equation under shear flow with stretching and finite extensibility if selected

sigmadot_uext(sigma, t, p)[source]

Rolie-Poly differential equation under uniaxial elongational flow with stretching and finite extensibility if selected

single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheorySmoothPolyStrand" inherits "QTheory": )
thname = 'Smooth-polySTRAND'

thname {str} – Theory name

TheoryStickyReptation

Module TheoryStickyReptation

Template file for creating a new theory

class RepTate.theories.TheoryStickyReptation.TheoryStickyReptation(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Fit the Sticky Reptation theory for the linear rheology of linear entangled polymers with a number of stickers that can form reversible intramolecular crosslinks.

  • Parameters
    • Ge : elastic plateau modulus.

    • Ze : number of entanglements per chain.

    • Zs : number of stickers per chain.

    • tau_s : sticker dissociation time.

    • alpha : dimensionless constant.

calculate(f=None)[source]

STICKY-REPTATION MODEL FOR LINEAR VISCOELASTICITY

  • PARAMETERS:
    • Ge: elastic modulus

    • tau_s: sticker dissociation time

    • Zs: number of stickers per chain

    • Ze: number of entanglements per chain

    • alpha: magnitude of the contour-length fluctuations in the double-reptation model. This is principle a universal dimensionless number with a value around ~10.

  • IMPORTANT:

      1. This sticky-reptation model assumes high Rouse frequencies not to affect the rheology at times of the order of the sticker time, due to which the rheology is independent of both the elementary (non-sticky) Rouse time, tau0, and the degree of polymerisation, N. See below.

      1. The results may be affected by numerical approximations, see below.

  • I. MODEL APPROXIMATION:

    • 1: The reptation time and Rouse relaxation after sticker dissociation are approximate. After sticker dissociation a strand of length N/Zs relaxes (a factor of two, to represent a strand of twice that length relaxes) is ignored. The reptation time is taken tau_rep=tau_s Zs^2*Ze, with the prefactor 3 ignored.

      1. The model assumes that the sticker dissociation time tau_s is much larger than tau0*(N/Zs)^2. The shape of the sticker plateau in G’ and G’’ is therefore not affected by the early-time Rouse relaxation, and is independent of tau0 and N: Including the high frequencies requires tau0 and N as additional parameters.

  • II. NUMERICAL SETTINGS:

      1. The infinite sums in the double-reptation model are truncated using a numerical tolerance level.

      1. To transform G(t) to G’(w) and G’’(w) a time range with a finite number of samples is defined. The time range and number of samples may affect the results.

citations = ['L. Leibler et al., Macromolecules, 1991, 24, 4701-4704']

citations {list of str} – Articles that should be cited

description = 'Sticky Reptation'

description {str} – Description of theory

doi = ['http://dx.doi.org/10.1021/ma00016a034']

doicode {list of str} – Doi code of the article

g_descloizeaux(x, tol)[source]
single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryStickyReptation" inherits "QTheory": )
thname = 'Sticky Reptation'

thname {str} – Theory name

TheoryTTS

TheoryTTS_Automatic

TheoryTemplate

Module TheoryTemplate

Template file for creating a new theory

class RepTate.theories.TheoryTemplate.TheoryTemplate(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

The basic documentation of the theory goes here. Please, add as much information as possible (references, equations, qualitative descriptions, etc.

calculate(f=None)[source]

THIS IS THE FUNCTION THAT CALCULATES THE THEORY

citations = []

citations {list of str} – Articles that should be cited

description = 'Template Theory'

description {str} – Description of theory

destructor()[source]

If the theory needs to clear up memory in a very special way, fill up the contents of this function. If not, you can safely delete it.

doi = []

doicode {list of str} – Doi code of the article

get_modes()[source]

If the theory provides Maxwell modes, fill this up (see examples in TheoryMaxwellModes. If the theory does not provide modes, simply delete this function.

set_modes()[source]

If the theory provides Maxwell modes, fill this up (see examples in TheoryMaxwellModes. If the theory does not provide modes, simply delete this function.

single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryTemplate" inherits "QTheory": )
thname = 'TemplateTheory'

thname {str} – Theory name

TheoryTobitaCSTR

Module TheoryTobitaCSTR

class RepTate.theories.TheoryTobitaCSTR.TheoryTobitaCSTR(name='', parent_dataset=None, ax=None)[source]

Bases: QTheory

LDPE CSTR reaction theory

The LDPE CSTR reaction theory uses an algorithm based on the one described in

the paper by H. Tobita (J. Pol. Sci. Part B, 39, 391-403 (2001)) for batch reactions. The algorithm is based upon a set of processes occuring in the reactor during free-radical polymerisation.

Calc(f=None)[source]

Calculate the theory

citations = ['Tobita H., J. Pol. Sci. Part B 2001, 39, 391-403']

citations {list of str} – Articles that should be cited

description = 'Tobita LDPE CSTR reaction theory'

description {str} – Description of theory

destructor()[source]

Return arms to pool

do_error(line)[source]

This theory does not calculate the error

do_fit(line='')[source]

No fitting allowed in this theory

doi = ['http://dx.doi.org/10.1002/1099-0488(20010115)39:4<391::AID-POLB1011>3.0.CO;2-3']

doicode {list of str} – Doi code of the article

get_extra_data()[source]

set extra data

handle_btn_prio_senio(checked)[source]

Change do_priority_seniority

handle_edit_bob_settings()[source]

Open the BoB binnig settings dialog

handle_save_bob_configuration()[source]

Save polymer configuraions to a file

html_help_file = 'http://reptate.readthedocs.io/manual/Applications/React/Theory/tobitaCSTR.html'
request_stop_computations()[source]

Called when user wants to terminate the current computation

set_extra_data(extra_data)[source]

set extra data

show_theory_extras(checked)[source]
signal_request_arm
signal_request_dist
signal_request_polymer
single_file = True
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryTobitaCSTR" inherits "QTheory": Methods:   #35 type=Signal, signature=signal_request_dist(PyObject), parameters=PyObject   #36 type=Signal, signature=signal_request_polymer(PyObject), parameters=PyObject   #37 type=Signal, signature=signal_request_arm(PyObject), parameters=PyObject )
theory_buttons_disabled(state)[source]

Disable/Enable some theory buttons before/after calculation start.

thname = 'Tobita CSTR'

thname {str} – Theory name

TheoryUCM

Module TheoryUCM

Module for the Upper Convected Maxwell model

class RepTate.theories.TheoryUCM.TheoryUCM(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Multi-mode Upper Convected Maxwell model (see Chapter 1 of [4]):

\[\begin{split}\boldsymbol \sigma &= \sum_{i=1}^n G_i \boldsymbol A_i\\ \dfrac {\mathrm D \boldsymbol A_i} {\mathrm D t} &= \boldsymbol \kappa \cdot \boldsymbol A_i + \boldsymbol A_i\cdot \boldsymbol \kappa ^T - \dfrac 1 {\tau_i} (\boldsymbol A_i - \boldsymbol I)\end{split}\]
  • Functions
    • Analytical solution in shear

      \[\eta^+(t) = \sum_{i=1}^n G_i \tau_i (1 - \exp(-t/\tau_i))\]
    • Analytical solution in uniaxial extension

      \[\eta^+_\mathrm E (t) = \dfrac 1 {\dot\varepsilon} \sum_{i=1}^n G_i (A_{xx, i}(t) - A_{yy, i}(t))\]

      with

      \[\begin{split}A_{xx, i}(t) &= \dfrac{ 1 - 2 \dot\varepsilon\tau_i \exp(-(1 - 2 \dot\varepsilon\tau_i) t / \tau_i) } {1 - 2 \dot\varepsilon\tau_i }\\ A_{yy, i}(t) &= \dfrac{ 1 + \dot\varepsilon\tau_i \exp(-(1 + \dot\varepsilon\tau_i)t/\tau_i) } { 1+ \dot\varepsilon\tau_i}\end{split}\]
    where for each mode \(i\):
    • \(G_i\): weight of mode \(i\)

    • \(\tau_i\): relaxation time of mode \(i\)

  • Parameters

    [none]

calculate_UCM(f=None)[source]

Calculate the theory

calculate_UCMLAOS(f=None)[source]

Calculate the theory for LAOS

citations = ['Oldroyd J.G., Proc. Roy. Soc. 1950, 200, 523-541']

citations {list of str} – Articles that should be cited

description = 'Upper-convected Maxwell constitutive equation'

description {str} – Description of theory

doi = ['http://dx.doi.org/10.1098/rspa.1950.0035']

doicode {list of str} – Doi code of the article

edit_modes_window()[source]
get_modes()[source]

Get the values of Maxwell Modes from this theory

get_modes_reptate()[source]
html_help_file = 'http://reptate.readthedocs.io/manual/Applications/NLVE/Theory/theory.html#multi-mode-upper-convected-maxwell-model'
init_flow_mode()[source]

Find if data files are shear or extension

n1_uext(p, times)[source]

Upper Convected Maxwell model in uniaxial extension. Returns N1 = (XX -YY) component of stress tensor

plot_modes_graph()[source]
select_extensional_flow()[source]
select_shear_flow()[source]
set_modes(tau, G)[source]

Set the values of Maxwell Modes from another theory

set_param_value(name, value)[source]

Set the value of a theory parameter

sigma_xy_shear(p, times)[source]

Upper Convected Maxwell model in shear. Returns XY component of stress tensor

single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryUCM" inherits "QTheory": )
thname = 'UCM'

thname {str} – Theory name

TheoryWLF

Module TheoryWLF

WLF file for creating a new theory

class RepTate.theories.TheoryWLF.TheoryWLF(name='', parent_dataset=None, axarr=None)[source]

Bases: QTheory

Time-temperature superposition based on a Williams-Landel-Ferry (WLF) equation with two parameters.

  • Function
    \[\begin{split}\begin{eqnarray} \omega(T_r) &= & a_T \omega(T) \\ G(T_r) &= & b_T G(T) \\ \log_{10} a_T &= & \frac{-B_1 (T-T_r)}{(B_2+T_r)(B_2+T)} \\ b_T &= & \frac{\rho(T_r)T_r}{\rho(T)T} = \frac{(1+\alpha T)(T_r+273.15)}{(1+\alpha T_r)(T+273.15)} \\ T_g &= &T_g^\infty - \frac{C_{T_g}}{M_w} \end{eqnarray}\end{split}\]
  • Parameters
    • \(T_r\): Reference temperature to which the experimental data will be shifted.

    • \(B_1\): Material parameter, corresponding to \(C_1\cdot C_2\), with \(C_1\) and \(C_2\) being the standard WLF material parameters.

    • \(B_2\): Material parameter, corresponding to \(C_2-T_r\), \(C_2\) being the standard WLF material parameter.

    • logalpha: Decimal logarithm of the thermal expansion coefficient of the polymer at 0 °C.

    • \(C_{T_g}\): Material parameter that describes the dependence of \(T_g\) with \(M_w\).

    • dx12: Fraction of 1-2 (vynil) units (valid for polybutadiene).

WLF(f=None)[source]

WLF function

citations = []

citations {list of str} – Articles that should be cited

description = 'Williams-Landel-Ferry'

description {str} – Description of theory

doi = []

doicode {list of str} – Doi code of the article

single_file = False
staticMetaObject = PySide6.QtCore.QMetaObject("TheoryWLF" inherits "QTheory": )
thname = 'WLF'

thname {str} – Theory name