[82c299f] | 1 | r""" |
---|
[20c856a] | 2 | Definition |
---|
| 3 | ---------- |
---|
| 4 | |
---|
[82c299f] | 5 | Calculates the macroscopic scattering intensity for a multi-component |
---|
| 6 | homogeneous mixture of polymers using the Random Phase Approximation. |
---|
| 7 | This general formalism contains 10 specific cases |
---|
| 8 | |
---|
| 9 | Case 0: C/D binary mixture of homopolymers |
---|
| 10 | |
---|
| 11 | Case 1: C-D diblock copolymer |
---|
| 12 | |
---|
| 13 | Case 2: B/C/D ternary mixture of homopolymers |
---|
| 14 | |
---|
| 15 | Case 3: C/C-D mixture of a homopolymer B and a diblock copolymer C-D |
---|
| 16 | |
---|
| 17 | Case 4: B-C-D triblock copolymer |
---|
| 18 | |
---|
| 19 | Case 5: A/B/C/D quaternary mixture of homopolymers |
---|
| 20 | |
---|
| 21 | Case 6: A/B/C-D mixture of two homopolymers A/B and a diblock C-D |
---|
| 22 | |
---|
| 23 | Case 7: A/B-C-D mixture of a homopolymer A and a triblock B-C-D |
---|
| 24 | |
---|
| 25 | Case 8: A-B/C-D mixture of two diblock copolymers A-B and C-D |
---|
| 26 | |
---|
| 27 | Case 9: A-B-C-D tetra-block copolymer |
---|
| 28 | |
---|
[20c856a] | 29 | .. note:: |
---|
| 30 | These case numbers are different from those in the NIST SANS package! |
---|
[82c299f] | 31 | |
---|
[30b60d2] | 32 | The models are based on the papers by Akcasu *et al.* and by |
---|
| 33 | Hammouda assuming the polymer follows Gaussian statistics such |
---|
[4f9e288] | 34 | that $R_g^2 = n b^2/6$ where $b$ is the statistical segment length and $n$ is |
---|
| 35 | the number of statistical segment lengths. A nice tutorial on how these are |
---|
| 36 | constructed and implemented can be found in chapters 28 and 39 of Boualem |
---|
[30b60d2] | 37 | Hammouda's 'SANS Toolbox'. |
---|
[4f9e288] | 38 | |
---|
| 39 | In brief the macroscopic cross sections are derived from the general forms |
---|
| 40 | for homopolymer scattering and the multiblock cross-terms while the inter |
---|
| 41 | polymer cross terms are described in the usual way by the $\chi$ parameter. |
---|
| 42 | |
---|
[20c856a] | 43 | USAGE NOTES: |
---|
[82c299f] | 44 | |
---|
[20c856a] | 45 | * Only one case can be used at any one time. |
---|
| 46 | * The RPA (mean field) formalism only applies only when the multicomponent |
---|
| 47 | polymer mixture is in the homogeneous mixed-phase region. |
---|
| 48 | * **Component D is assumed to be the "background" component (ie, all contrasts |
---|
| 49 | are calculated with respect to component D).** So the scattering contrast |
---|
| 50 | for a C/D blend = [SLD(component C) - SLD(component D)]\ :sup:`2`. |
---|
[30b60d2] | 51 | * Depending on which case is being used, the number of fitting parameters can |
---|
[4f9e288] | 52 | vary. |
---|
| 53 | |
---|
| 54 | .. Note:: |
---|
| 55 | * In general the degrees of polymerization, the volume |
---|
| 56 | fractions, the molar volumes, and the neutron scattering lengths for each |
---|
| 57 | component are obtained from other methods and held fixed while The *scale* |
---|
| 58 | parameter should be held equal to unity. |
---|
[30b60d2] | 59 | * The variables are normally the segment lengths ($b_a$, $b_b$, |
---|
| 60 | etc.) and $\chi$ parameters ($K_{ab}$, $K_{ac}$, etc). |
---|
[82c299f] | 61 | |
---|
| 62 | References |
---|
| 63 | ---------- |
---|
| 64 | |
---|
[30b60d2] | 65 | A Z Akcasu, R Klein and B Hammouda, *Macromolecules*, 26 (1993) 4136. |
---|
| 66 | |
---|
| 67 | B. Hammouda, *Advances in Polymer Science* 106 (1993) 87. |
---|
| 68 | |
---|
| 69 | B. Hammouda, *SANS Toolbox* |
---|
| 70 | https://www.ncnr.nist.gov/staff/hammouda/the_sans_toolbox.pdf. |
---|
[4f9e288] | 71 | |
---|
| 72 | Authorship and Verification |
---|
| 73 | ---------------------------- |
---|
| 74 | |
---|
| 75 | * **Author:** Boualem Hammouda - NIST IGOR/DANSE **Date:** pre 2010 |
---|
| 76 | * **Converted to sasmodels by:** Paul Kienzle **Date:** July 18, 2016 |
---|
| 77 | * **Last Modified by:** Paul Butler **Date:** March 12, 2017 |
---|
| 78 | * **Last Reviewed by:** Paul Butler **Date:** March 12, 2017 |
---|
[82c299f] | 79 | """ |
---|
| 80 | |
---|
| 81 | from numpy import inf |
---|
| 82 | |
---|
| 83 | name = "rpa" |
---|
[20c856a] | 84 | title = "Random Phase Approximation" |
---|
[82c299f] | 85 | description = """ |
---|
| 86 | This formalism applies to multicomponent polymer mixtures in the |
---|
| 87 | homogeneous (mixed) phase region only. |
---|
| 88 | Case 0: C/D binary mixture of homopolymers |
---|
| 89 | Case 1: C-D diblock copolymer |
---|
| 90 | Case 2: B/C/D ternary mixture of homopolymers |
---|
| 91 | Case 3: B/C-D mixture of homopolymer b and diblock copolymer C-D |
---|
| 92 | Case 4: B-C-D triblock copolymer |
---|
| 93 | Case 5: A/B/C/D quaternary mixture of homopolymers |
---|
| 94 | Case 6: A/B/C-D mixture of two homopolymers A/B and a diblock C-D |
---|
| 95 | Case 7: A/B-C-D mixture of a homopolymer A and a triblock B-C-D |
---|
| 96 | Case 8: A-B/C-D mixture of two diblock copolymers A-B and C-D |
---|
| 97 | Case 9: A-B-C-D four-block copolymer |
---|
| 98 | See details in the model function help |
---|
| 99 | """ |
---|
[51ec7e8] | 100 | category = "shape-independent" |
---|
[82c299f] | 101 | |
---|
| 102 | CASES = [ |
---|
| 103 | "C+D binary mixture", |
---|
| 104 | "C:D diblock copolymer", |
---|
| 105 | "B+C+D ternary mixture", |
---|
| 106 | "B+C:D binary mixture", |
---|
| 107 | "B:C:D triblock copolymer", |
---|
| 108 | "A+B+C+D quaternary mixture", |
---|
| 109 | "A+B+C:D ternary mixture", |
---|
| 110 | "A+B:C:D binary mixture", |
---|
| 111 | "A:B+C:D binary mixture", |
---|
| 112 | "A:B:C:D quadblock copolymer", |
---|
| 113 | ] |
---|
| 114 | |
---|
| 115 | # ["name", "units", default, [lower, upper], "type","description"], |
---|
| 116 | parameters = [ |
---|
[a5b8477] | 117 | ["case_num", "", 1, [CASES], "", "Component organization"], |
---|
[69aa451] | 118 | |
---|
| 119 | ["N[4]", "", 1000.0, [1, inf], "", "Degree of polymerization"], |
---|
| 120 | ["Phi[4]", "", 0.25, [0, 1], "", "volume fraction"], |
---|
[20c856a] | 121 | ["v[4]", "mL/mol", 100.0, [0, inf], "", "molar volume"], |
---|
[69aa451] | 122 | ["L[4]", "fm", 10.0, [-inf, inf], "", "scattering length"], |
---|
| 123 | ["b[4]", "Ang", 5.0, [0, inf], "", "segment length"], |
---|
[82c299f] | 124 | |
---|
[ce176ca] | 125 | ["K12", "", -0.0004, [-inf, inf], "", "A:B interaction parameter"], |
---|
| 126 | ["K13", "", -0.0004, [-inf, inf], "", "A:C interaction parameter"], |
---|
| 127 | ["K14", "", -0.0004, [-inf, inf], "", "A:D interaction parameter"], |
---|
| 128 | ["K23", "", -0.0004, [-inf, inf], "", "B:C interaction parameter"], |
---|
| 129 | ["K24", "", -0.0004, [-inf, inf], "", "B:D interaction parameter"], |
---|
| 130 | ["K34", "", -0.0004, [-inf, inf], "", "C:D interaction parameter"], |
---|
[82c299f] | 131 | ] |
---|
| 132 | |
---|
| 133 | |
---|
| 134 | source = ["rpa.c"] |
---|
[51ec7e8] | 135 | single = False |
---|
[82c299f] | 136 | |
---|
[46ed760] | 137 | control = "case_num" |
---|
[bb73096] | 138 | HIDE_ALL = set("Phi4".split()) |
---|
| 139 | HIDE_A = set("N1 Phi1 v1 L1 b1 K12 K13 K14".split()).union(HIDE_ALL) |
---|
[ce176ca] | 140 | HIDE_AB = set("N2 Phi2 v2 L2 b2 K23 K24".split()).union(HIDE_A) |
---|
| 141 | def hidden(case_num): |
---|
[40a87fa] | 142 | """ |
---|
| 143 | Return a list of parameters to hide depending on the multiplicity parameter. |
---|
| 144 | """ |
---|
[fa4a994] | 145 | case_num = int(case_num+0.5) |
---|
[82c299f] | 146 | if case_num < 2: |
---|
| 147 | return HIDE_AB |
---|
[5cfda00] | 148 | elif case_num < 5: |
---|
| 149 | return HIDE_A |
---|
[82c299f] | 150 | else: |
---|
[bb73096] | 151 | return HIDE_ALL |
---|