Top |
NcmCSQ1DNcmCSQ1D — Abstract class for Harmonic Oscillator calculation through complex structure quantization. |
double | abstol | Read / Write / Construct |
double | adiab-threshold | Read / Write / Construct |
double | prop-threshold | Read / Write / Construct |
double | reltol | Read / Write / Construct |
gboolean | save-evol | Read / Write / Construct |
double | tf | Read / Write / Construct |
double | ti | Read / Write / Construct |
double | vacuum-max-time | Read / Write / Construct |
double | vacuum-reltol | Read / Write / Construct |
NcmCSQ1DInitialStateType | vacuum-type | Read / Write / Construct |
#define | NCM_TYPE_CSQ1D |
struct | NcmCSQ1DClass |
enum | NcmCSQ1DEvolState |
enum | NcmCSQ1DInitialStateType |
enum | NcmCSQ1DFrame |
NcmCSQ1D |
GEnum ├── NcmCSQ1DEvolState ├── NcmCSQ1DFrame ╰── NcmCSQ1DInitialStateType GObject ╰── NcmCSQ1D ├── NcDECont ├── NcHIPertAdiab ├── NcHIPertEM ╰── NcHIPertGW
The system: \begin{align} q^\prime &= \frac{\Pi_q}{m}, \Pi_q^\prime &= m\nu^2q. \end{align}
\begin{equation} \xi = \ln (m\nu) \end{equation}
\begin{equation} F^n = \left(\frac{1}{2\nu}\frac{\partial}{\partial t}\right)^n \xi. \end{equation}
NcmCSQ1DState *
ncm_csq1d_state_new (void
);
Creates a new and uninitialized NcmCSQ1DState.
NcmCSQ1DState *
ncm_csq1d_state_copy (NcmCSQ1DState *state
);
Creates a copy of state
.
void ncm_csq1d_state_set_ag (NcmCSQ1DState *state
,const NcmCSQ1DFrame frame
,const gdouble t
,const gdouble alpha
,const gdouble gamma
);
Sets the state using the $(\alpha, \gamma)$ parametrization.
void ncm_csq1d_state_set_up (NcmCSQ1DState *state
,const NcmCSQ1DFrame frame
,const gdouble t
,const gdouble chi
,const gdouble Up
);
Sets the state using the $(\chi, U_+)$ parametrization.
void ncm_csq1d_state_set_um (NcmCSQ1DState *state
,const NcmCSQ1DFrame frame
,const gdouble t
,const gdouble chi
,const gdouble Um
);
Sets the state using the $(\chi, U_-)$ parametrization.
void ncm_csq1d_state_get_ag (NcmCSQ1DState *state
,gdouble *alpha
,gdouble *gamma
);
Computes the $(\alpha, \gamma)$ parametrization of state
.
void ncm_csq1d_state_get_up (NcmCSQ1DState *state
,gdouble *chi
,gdouble *Up
);
Computes the $(\chi, U_+)$ parametrization of state
.
void ncm_csq1d_state_get_um (NcmCSQ1DState *state
,gdouble *chi
,gdouble *Um
);
Computes the $(\chi, U_-)$ parametrization of state
.
void ncm_csq1d_state_get_J (NcmCSQ1DState *state
,gdouble *J11
,gdouble *J12
,gdouble *J22
);
Computes the covariant metric of state
.
void ncm_csq1d_state_get_phi_Pphi (NcmCSQ1DState *state
,gdouble *phi
,gdouble *Pphi
);
Computes the $(\phi, P_\phi)$ parametrization of state
.
void ncm_csq1d_state_get_poincare_half_plane (NcmCSQ1DState *state
,gdouble *x
,gdouble *lny
);
Computes the Poincaré half-plane parametrization of state
.
void ncm_csq1d_state_get_poincare_disc (NcmCSQ1DState *state
,gdouble *x
,gdouble *y
);
Computes the Poincaré disc parametrization of state
.
void ncm_csq1d_state_get_minkowski (NcmCSQ1DState *state
,gdouble *x1
,gdouble *x2
);
Computes the Minkowski parametrization of state
.
void ncm_csq1d_state_get_circle (NcmCSQ1DState *state
,const gdouble r
,const gdouble theta
,NcmCSQ1DState *cstate
);
Computes the complex structure matrix parameters for a circle
around the point state
with radius $r$ and angle
$\theta$ and stores the result in cstate
.
gdouble ncm_csq1d_state_compute_distance (NcmCSQ1DState *state
,NcmCSQ1DState *state1
);
Computes the distance between state
and state1
.
NcmCSQ1D *
ncm_csq1d_ref (NcmCSQ1D *csq1d
);
Increases the reference count of csq1d
.
void
ncm_csq1d_clear (NcmCSQ1D **csq1d
);
Decreases the reference count of *csq1d
and sets the pointer *csq1d
to NULL.
void ncm_csq1d_set_reltol (NcmCSQ1D *csq1d
,const gdouble reltol
);
Sets the relative tolerance to reltol
.
void ncm_csq1d_set_abstol (NcmCSQ1D *csq1d
,const gdouble abstol
);
Sets the absolute tolerance to abstol
.
void ncm_csq1d_set_ti (NcmCSQ1D *csq1d
,const gdouble ti
);
Sets the initial time $t_i$ to ti
.
void ncm_csq1d_set_tf (NcmCSQ1D *csq1d
,const gdouble tf
);
Sets the initial time $t_f$ to tf
.
void ncm_csq1d_set_adiab_threshold (NcmCSQ1D *csq1d
,const gdouble adiab_threshold
);
Sets the adiabatic threshold $A_t$.
void ncm_csq1d_set_prop_threshold (NcmCSQ1D *csq1d
,const gdouble prop_threshold
);
Sets the propagator threshold $P_t$.
void ncm_csq1d_set_save_evol (NcmCSQ1D *csq1d
,const gboolean save
);
If true saves all evolution to be evaluted later through
ncm_csq1d_eval_at()
and related methods.
void ncm_csq1d_set_init_cond (NcmCSQ1D *csq1d
,NcmModel *model
,NcmCSQ1DEvolState evol_state
,NcmCSQ1DState *initial_state
);
Sets the values of the initial conditions to initial_state
.
Depending on the value of evol_state
, the initial conditions
are set in the adiabatic frame 1 if evol_state
is NCM_CSQ1D_EVOL_STATE_ADIABATIC,
or in the original frame when using the $U_+$ or $U_-$ parametrization.
void ncm_csq1d_set_init_cond_adiab (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble ti
);
Sets the values of the initial conditions at $t_i$. This method also updates the value of $t_i$.
void ncm_csq1d_set_initial_condition_type (NcmCSQ1D *csq1d
,const NcmCSQ1DInitialStateType initial_condition_type
);
Sets the initial condition type to initial_condition_type
. The initial condition
type is used to determine the initial state state when preparing the object using
ncm_csq1d_prepare()
.
void ncm_csq1d_set_vacuum_reltol (NcmCSQ1D *csq1d
,const gdouble vacuum_reltol
);
Sets the relative tolerance for the vacuum definition. This tolerance
is used to determine the vacuum state when preparing the object using
ncm_csq1d_prepare()
.
void ncm_csq1d_set_vacuum_max_time (NcmCSQ1D *csq1d
,const gdouble vacuum_max_time
);
Sets the maximum time for the vacuum search. This time is used
to determine the vacuum state when preparing the object using
ncm_csq1d_prepare()
.
NcmCSQ1DInitialStateType
ncm_csq1d_get_initial_condition_type (NcmCSQ1D *csq1d
);
gdouble ncm_csq1d_eval_xi (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble t
);
[virtual eval_xi]
gdouble ncm_csq1d_eval_nu (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble t
);
[virtual eval_nu]
gdouble ncm_csq1d_eval_nu2 (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble t
);
[virtual eval_nu2]
gdouble ncm_csq1d_eval_m (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble t
);
[virtual eval_m]
gdouble ncm_csq1d_eval_int_1_m (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble t
);
[virtual eval_int_1_m]
gdouble ncm_csq1d_eval_int_mnu2 (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble t
);
[virtual eval_int_mnu2]
gdouble ncm_csq1d_eval_int_qmnu2 (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble t
);
[virtual eval_int_qmnu2]
gdouble ncm_csq1d_eval_int_q2mnu2 (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble t
);
[virtual eval_int_q2mnu2]
gdouble ncm_csq1d_eval_F1 (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble t
);
[virtual eval_F1]
gdouble ncm_csq1d_eval_F2 (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble t
);
[virtual eval_F2]
void ncm_csq1d_prepare (NcmCSQ1D *csq1d
,NcmModel *model
);
Prepares the object using model
. It integrates the system from the initial time to
the final time. If the NcmCSQ1DInitialStateType is set to
NCM_CSQ1D_INITIAL_CONDITION_TYPE_AD_HOC, the initial conditions must be set using
ncm_csq1d_set_init_cond()
. Otherwise, the initial conditions are automatically set
using the chosen method. See ncm_csq1d_set_initial_condition_type()
.
The initial conditions based on the vacuum are controlled by the parameters
ncm_csq1d_set_vacuum_reltol()
and ncm_csq1d_set_vacuum_max_time()
.
[virtual prepare]
GArray * ncm_csq1d_get_time_array (NcmCSQ1D *csq1d
,gdouble *smallest_t
);
csq1d |
a NcmCSQ1D |
|
smallest_t |
the smallest absolute value of $t$ in the array. |
[out][allow-none] |
gboolean ncm_csq1d_find_adiab_time_limit (NcmCSQ1D *csq1d
,NcmModel *model
,gdouble t0
,gdouble t1
,const gdouble reltol
,gdouble *ti
);
Computes the time upper limit $t_i \in [t_0, t_1]$ where the adiabatic
approximation is satisfied up to reltol
. If both times are adiabatic, the
time closer to the adiabatic limit is chosen. If both times are non-adiabatic,
the function returns FALSE
.
gdouble ncm_csq1d_find_adiab_max (NcmCSQ1D *csq1d
,NcmModel *model
,gdouble t0
,gdouble t1
,const gdouble border_eps
,gdouble *F1_min
,gdouble *t_Bl
,gdouble *t_Bu
);
Computes the time $t_\mathrm{min}$ that minimizes $F_1(t)$.
NcmCSQ1DState * ncm_csq1d_compute_adiab (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble t
,NcmCSQ1DState *state
,gdouble *alpha_reltol
,gdouble *dgamma_reltol
);
Computes the value of the adiabatic approximation of the variables $\alpha$ and $\Delta\gamma$ at $t$.
This method computes the adiabatic approximation using the adiabatic series up to the order 2 or 4,
depending on the value of the property max-order-2. The result is stored in the state object in the
frame NCM_CSQ1D_FRAME_ADIAB1. Use ncm_csq1d_change_frame()
to change the frame.
NcmCSQ1DState * ncm_csq1d_compute_adiab_frame (NcmCSQ1D *csq1d
,NcmModel *model
,const NcmCSQ1DFrame frame
,const gdouble t
,NcmCSQ1DState *state
,gdouble *alpha_reltol
,gdouble *dgamma_reltol
);
As ncm_csq1d_compute_adiab()
, but changes the frame of the result to frame
.
NcmCSQ1DState * ncm_csq1d_compute_nonadiab (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble t
,NcmCSQ1DState *state
);
Computes the value of the non-adiabatic VDC order two in the variables $\chi$ and
$U$ at $t$. The result is stored in the state object in the frame NCM_CSQ1D_FRAME_NONADIAB1.
Use ncm_csq1d_change_frame()
to change the frame.
NcmCSQ1DState * ncm_csq1d_compute_H (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble t
,NcmCSQ1DState *state
);
Computes the Hamiltonian vector state of the original frame at $t$. The result is
stored in the state object in the frame NCM_CSQ1D_FRAME_ORIG.
Use ncm_csq1d_change_frame()
to change the frame.
NcmCSQ1DState * ncm_csq1d_eval_at (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble t
,NcmCSQ1DState *state
);
Computes the system state at $t$, the result is stored in the state object
in the frame NCM_CSQ1D_FRAME_ORIG. Use ncm_csq1d_change_frame()
to change the frame.
NcmCSQ1DState * ncm_csq1d_eval_at_frame (NcmCSQ1D *csq1d
,NcmModel *model
,const NcmCSQ1DFrame frame
,const gdouble t
,NcmCSQ1DState *state
);
Computes the system state at $t$, the result is stored in the state object
in the frame frame
.
NcmCSQ1DState * ncm_csq1d_change_frame (NcmCSQ1D *csq1d
,NcmModel *model
,NcmCSQ1DState *state
,NcmCSQ1DFrame frame
);
Changes the frame of the state
object to the given frame
. The state object
must be a valid state object, it cannot be NULL. The state object is updated
in place.
void ncm_csq1d_prepare_prop (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble ti
,const gdouble tii
,const gdouble tf
);
Computes the propagator for the given csq1d
and model
from ti
to tf
. The
propagator is computed using the integral approximation time tii
. The
propagator is stored in the csq1d
object and can be used to compute the
propagator a state from ti
to any time between tii
and tf
.
NcmCSQ1DState * ncm_csq1d_compute_prop_vector (NcmCSQ1D *csq1d
,NcmModel *model
,const gdouble t
,NcmCSQ1DState *state
);
NcmCSQ1DState * ncm_csq1d_evolve_prop_vector (NcmCSQ1D *csq1d
,NcmModel *model
,NcmCSQ1DState *initial_state
,const NcmCSQ1DFrame frame
,const gdouble t
,NcmCSQ1DState *state
);
Uses the propagator to evolve the state vector initial_state
to time $t$ and
at frame frame
.
Variables describing the system evolution state. The state NCM_CSQ1D_EVOL_STATE_ADIABATIC
is used to describe the adiabatic evolution of the system, this state use the frame
NCM_CSQ1D_FRAME_ADIAB1 with the variables $(\alpha,\, \delta\gamma)$ to compute the evolution.
The state NCM_CSQ1D_EVOL_STATE_UP
and NCM_CSQ1D_EVOL_STATE_UM
are used to describe the
non-adiabatic evolution of the system, these states use the frame NCM_CSQ1D_FRAME_ORIG with
the variables $(\chi,\, U_+)$ and $(\chi,\, U_-)$ to compute the evolution, respectively.
“abstol”
property “abstol” double
Absolute tolerance tolerance.
Owner: NcmCSQ1D
Flags: Read / Write / Construct
Allowed values: >= 0
Default value: 0
“adiab-threshold”
property “adiab-threshold” double
The adiabatic threshold.
Owner: NcmCSQ1D
Flags: Read / Write / Construct
Allowed values: >= 0
Default value: 1
“prop-threshold”
property “prop-threshold” double
The propagator threshold.
Owner: NcmCSQ1D
Flags: Read / Write / Construct
Allowed values: [0,1]
Default value: 0.1
“reltol”
property “reltol” double
Relative tolerance.
Owner: NcmCSQ1D
Flags: Read / Write / Construct
Allowed values: [0,1]
Default value: 1e-07
“save-evol”
property “save-evol” gboolean
Save the system evolution.
Owner: NcmCSQ1D
Flags: Read / Write / Construct
Default value: TRUE
“tf”
property “tf” double
The final time t_f.
Owner: NcmCSQ1D
Flags: Read / Write / Construct
Default value: 1
“ti”
property “ti” double
The initial time t_i.
Owner: NcmCSQ1D
Flags: Read / Write / Construct
Default value: 0
“vacuum-max-time”
property “vacuum-max-time” double
The vacuum maximum time.
Owner: NcmCSQ1D
Flags: Read / Write / Construct
Default value: 1
“vacuum-reltol”
property “vacuum-reltol” double
The vacuum relative tolerance.
Owner: NcmCSQ1D
Flags: Read / Write / Construct
Allowed values: [2.22045e-16,1]
Default value: 1e-05
“vacuum-type”
property“vacuum-type” NcmCSQ1DInitialStateType
The vacuum type.
Owner: NcmCSQ1D
Flags: Read / Write / Construct
Default value: NCM_CSQ1D_INITIAL_CONDITION_TYPE_AD_HOC