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: #34 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: #34 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 MonomerNe
: Number of monomers in an entanglement lengthRatio
: Ratio weight fraction occupied by componentArchitecture
: Polymer architecture type (e.g. Linear, Star, Comb, etc.)Num. of polymer
: Number of polymers to generate of the above architecture typeNum. generations
: Number of generations (for Cayley architecture type only)Distr.
: Molecular weight distribution (e.g. Monodisperse, LogNormal, etc.)Mw
: Weight-average molecular weightPDI
: 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(0x556300fca4f0)>, 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 ifattr
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: #34 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 modulustau_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 timeMe
\(\equiv M_\mathrm e^\mathrm G = \dfrac 4 5 \dfrac{\rho R T} {G_N^0}\): Entanglement molecular weightalpha
: 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 modulustau_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 timeMe
\(\equiv M_\mathrm e^\mathrm G = \dfrac 4 5 \dfrac{\rho R T} {G_N^0}\): Entanglement molecular weightalpha
: 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: #34 type=Signal, signature=signal_request_dist(PyObject), parameters=PyObject #35 type=Signal, signature=signal_request_polymer(PyObject), parameters=PyObject #36 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 skewnessb
: 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: #34 type=Signal, signature=signal_request_dist(PyObject), parameters=PyObject #35 type=Signal, signature=signal_request_polymer(PyObject), parameters=PyObject #36 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: #34 type=Signal, signature=signal_request_dist(PyObject), parameters=PyObject #35 type=Signal, signature=signal_request_polymer(PyObject), parameters=PyObject #36 type=Signal, signature=signal_request_arm(PyObject), parameters=PyObject #37 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 ModulustauD
: Orientation relaxation timetauS
: Stretch Relxation timetau_as
: Typical time the sticker spends associatedtau_free
: Typical time the sticker spends freelmax
: Maximum extensibilitybeta
: CCR coefficientdelta
: CCR exponentZ
: Entanglement numberr_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 moderatio_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 modulusphi0i
: 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: #34 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 modulusbeta
\(\equiv\beta_\text{CCR}\): Rolie-Poly CCR parameterdelta
\(\equiv\delta\): Rolie-Poly CCR exponentphi_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: #34 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 modulusbeta
\(\equiv\beta_\text{CCR}\): Rolie-Poly CCR parameterdelta
\(\equiv\delta\): Rolie-Poly CCR exponentphi_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:
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.
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.
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:
The infinite sums in the double-reptation model are truncated using a numerical tolerance level.
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: #34 type=Signal, signature=signal_request_dist(PyObject), parameters=PyObject #35 type=Signal, signature=signal_request_polymer(PyObject), parameters=PyObject #36 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