LandauGinzburg
Loading...
Searching...
No Matches
field_spt.cpp
Go to the documentation of this file.
1
8#include "field_nicolai.hpp"
9
15
16
17Potential Scalar::superpotential_typecustom () const {
18 //
19 // lambda0 X^3 + lambda1 Y^3 + lambda2 Z^3 + lambda3 X Y Z
20 //
21 try {
22 if (num_f != 3)
23 throw "ERROR<Scalar::superpotential> Case SuperPotentialType::Custom: number of fields should be 3.";
24 if (lambda.size() != 4)
25 throw "ERROR<Scalar::superpotential> Case SuperPotentialType::Custom: size of VectorXd for couplings should be 4.";
26 //
27 Field X1 = conv_pw(1, 0); X1 *= 2.0 * lambda(0);
28 Field Y1 = conv_pw(1, 1); Y1 *= 2.0 * lambda(1);
29 Field Z1 = conv_pw(1, 2); Z1 *= 2.0 * lambda(2);
30
31 Field Xlm = conv_pw(1, 0); Xlm *= lambda(3);
32 Field Ylm = conv_pw(1, 1); Ylm *= lambda(3);
33 Field Zlm = conv_pw(1, 2); Zlm *= lambda(3);
34
35 Field res = X1;
39 return Potential {res.conf(), num_f};
40 //
41 } catch (const char *str) {
42 cerr << str << endl; return Potential {Li, num_f};
43 }
44}
45
46PotentialNR Scalar::superpotential_nr_typecustom () const {
47 //
48 // lambda0 X^3 + lambda1 Y^3 + lambda2 Z^3 + lambda3 X Y Z
49 //
50 try {
51 if (num_f != 3)
52 throw "ERROR<Scalar::superpotential_nr> Case SuperPotentialType::Custom: number of fields should be 3.";
53 if (lambda.size() != 4)
54 throw "ERROR<Scalar::superpotential_nr> Case SuperPotentialType::Custom: size of VectorXd for couplings should be 4.";
55 //
56 Field X1 = conv_pw(1, 0); X1 *= 2.0 * lambda(0);
57 Field Y1 = conv_pw(1, 1); Y1 *= 2.0 * lambda(1);
58 Field Z1 = conv_pw(1, 2); Z1 *= 2.0 * lambda(2);
59 Field Xlm = conv_pw(1, 0); Xlm *= lambda(3);
60 Field Ylm = conv_pw(1, 1); Ylm *= lambda(3);
61 Field Zlm = conv_pw(1, 2); Zlm *= lambda(3);
62 Field res1 = X1;
66
67 Field X2yz;
68 {
69 Field X2 = conv_pw(2, 0); X2 *= lambda(0);
70 Field YZ = conv(1, 2); YZ *= lambda(3);
71 MatrixXcd m = X2.conf() + YZ.conf();
72 X2yz = Field {m};
73 }
74 Field Y2xz;
75 {
76 Field Y2 = conv_pw(2, 1); Y2 *= lambda(1);
77 Field XZ = conv(0, 2); XZ *= lambda(3);
78 MatrixXcd m = Y2.conf() + XZ.conf();
79 Y2xz = Field {m};
80 }
81 Field Z2xy;
82 {
83 Field Z2 = conv_pw(2, 2); Z2 *= lambda(2);
84 Field XY = conv(0, 1); XY *= lambda(3);
85 MatrixXcd m = Z2.conf() + XY.conf();
86 Z2xy = Field {m};
87 }
88 Field res2 = X2yz;
91 return PotentialNR {num_f, res1.conf(), m_res2, 2.0 * m_res2};
92 //
93 } catch (const char *str) {
94 cerr << str << endl; return PotentialNR {Li, num_f};
95 }
96}
Generate normal distributions; Compute convolutions.
MatrixXcd conf() const
Field combine_with(const Field &f)
Combine with another Field object; Mutate field (Li and num_f are unchaged) except for the case that ...
int Li
Physical box size, N_0=N_1.
Field conv(const int n1, const int n2) const
Convolution field(:,n1)*field(:,n2)
Field conv_pw(const int pw, const int n=0) const
Convolution field(:,n)*field(:,n)*...*field(:,n)
int num_f
Number of superfields.
Compute Jacobian and its sign determinant.
Compute Matrix and Vector for NR method.
Definition of the classes associated with Nicolai map.
const int SuperPotentialTypeCustom_StdNumSol
Standard number of solutions for SuperPotentialType::Custom.
Definition field_spt.cpp:14