source: sasmodels/sasmodels/models/rpa.py @ fa4a994

core_shell_microgelscostrafo411magnetic_modelticket-1257-vesicle-productticket_1156ticket_1265_superballticket_822_more_unit_tests
Last change on this file since fa4a994 was fa4a994, checked in by Paul Kienzle <pkienzle@…>, 6 years ago

round to case_num rather than assuming it is an integer

  • Property mode set to 100644
File size: 4.0 KB
Line 
1r"""
2Calculates the macroscopic scattering intensity for a multi-component
3homogeneous mixture of polymers using the Random Phase Approximation.
4This general formalism contains 10 specific cases
5
6Case 0: C/D binary mixture of homopolymers
7
8Case 1: C-D diblock copolymer
9
10Case 2: B/C/D ternary mixture of homopolymers
11
12Case 3: C/C-D mixture of a homopolymer B and a diblock copolymer C-D
13
14Case 4: B-C-D triblock copolymer
15
16Case 5: A/B/C/D quaternary mixture of homopolymers
17
18Case 6: A/B/C-D mixture of two homopolymers A/B and a diblock C-D
19
20Case 7: A/B-C-D mixture of a homopolymer A and a triblock B-C-D
21
22Case 8: A-B/C-D mixture of two diblock copolymers A-B and C-D
23
24Case 9: A-B-C-D tetra-block copolymer
25
26**NB: these case numbers are different from those in the NIST SANS package!**
27
28Only one case can be used at any one time.
29
30The RPA (mean field) formalism only applies only when the multicomponent
31polymer mixture is in the homogeneous mixed-phase region.
32
33**Component D is assumed to be the "background" component (ie, all contrasts
34are calculated with respect to component D).** So the scattering contrast
35for a C/D blend = [SLD(component C) - SLD(component D)]\ :sup:`2`.
36
37Depending on which case is being used, the number of fitting parameters - the
38segment lengths (ba, bb, etc) and $\chi$ parameters (Kab, Kac, etc) - vary.
39The *scale* parameter should be held equal to unity.
40
41The input parameters are the degrees of polymerization, the volume fractions,
42the specific volumes, and the neutron scattering length densities for each
43component.
44
45
46References
47----------
48
49A Z Akcasu, R Klein and B Hammouda, *Macromolecules*, 26 (1993) 4136
50"""
51
52from numpy import inf
53
54name = "rpa"
55title = "Random Phase Approximation - unfinished work in progress"
56description = """
57This formalism applies to multicomponent polymer mixtures in the
58homogeneous (mixed) phase region only.
59Case 0: C/D binary mixture of homopolymers
60Case 1: C-D diblock copolymer
61Case 2: B/C/D ternary mixture of homopolymers
62Case 3: B/C-D mixture of homopolymer b and diblock copolymer C-D
63Case 4: B-C-D triblock copolymer
64Case 5: A/B/C/D quaternary mixture of homopolymers
65Case 6: A/B/C-D mixture of two homopolymers A/B and a diblock C-D
66Case 7: A/B-C-D mixture of a homopolymer A and a triblock B-C-D
67Case 8: A-B/C-D mixture of two diblock copolymers A-B and C-D
68Case 9: A-B-C-D four-block copolymer
69See details in the model function help
70"""
71category = "shape-independent"
72
73CASES = [
74    "C+D binary mixture",
75    "C:D diblock copolymer",
76    "B+C+D ternary mixture",
77    "B+C:D binary mixture",
78    "B:C:D triblock copolymer",
79    "A+B+C+D quaternary mixture",
80    "A+B+C:D ternary mixture",
81    "A+B:C:D binary mixture",
82    "A:B+C:D binary mixture",
83    "A:B:C:D quadblock copolymer",
84]
85
86#   ["name", "units", default, [lower, upper], "type","description"],
87parameters = [
88    ["case_num", "", 1, [CASES], "", "Component organization"],
89
90    ["N[4]", "", 1000.0, [1, inf], "", "Degree of polymerization"],
91    ["Phi[4]", "", 0.25, [0, 1], "", "volume fraction"],
92    ["v[4]", "mL/mol", 100.0, [0, inf], "", "specific volume"],
93    ["L[4]", "fm", 10.0, [-inf, inf], "", "scattering length"],
94    ["b[4]", "Ang", 5.0, [0, inf], "", "segment length"],
95
96    ["K12", "", -0.0004, [-inf, inf], "", "A:B interaction parameter"],
97    ["K13", "", -0.0004, [-inf, inf], "", "A:C interaction parameter"],
98    ["K14", "", -0.0004, [-inf, inf], "", "A:D interaction parameter"],
99    ["K23", "", -0.0004, [-inf, inf], "", "B:C interaction parameter"],
100    ["K24", "", -0.0004, [-inf, inf], "", "B:D interaction parameter"],
101    ["K34", "", -0.0004, [-inf, inf], "", "C:D interaction parameter"],
102]
103
104
105source = ["rpa.c"]
106single = False
107
108control = "case_num"
109HIDE_NONE = set()
110HIDE_A = set("N1 Phi1 v1 L1 b1 K12 K13 K14".split())
111HIDE_AB = set("N2 Phi2 v2 L2 b2 K23 K24".split()).union(HIDE_A)
112def hidden(case_num):
113    """
114    Return a list of parameters to hide depending on the multiplicity parameter.
115    """
116    case_num = int(case_num+0.5)
117    if case_num < 2:
118        return HIDE_AB
119    elif case_num < 5:
120        return HIDE_A
121    else:
122        return HIDE_NONE
123
Note: See TracBrowser for help on using the repository browser.