-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwaveforms.h
More file actions
79 lines (70 loc) · 1.41 KB
/
Copy pathwaveforms.h
File metadata and controls
79 lines (70 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include "data_structures.h"
typedef struct {
int n_electrodes;
int n_steps;
double max_voltage_individual;
double max_voltage_total;
double position[3]; // generalize
double omega[3]; // generalize
int voltage_offset; // generalize
int i;
int j;
enum
{
CONSTRAINT_EX_FIELD_X,
CONSTRAINT_EX_FIELD_Y,
CONSTRAINT_EX_FIELD_Z,
CONSTRAINT_HESSIAN_XY,
CONSTRAINT_HESSIAN_XZ,
CONSTRAINT_HESSIAN_YZ,
CONSTRAINT_AXIAL_CURVATURE
} type;
} transport_waveform_constraint_data;
double waveform_cost_function(
unsigned n,
const double *x,
double *grad,
void *transport_waveform_obj
);
void optimize_primitive
(
int max_iterations
);
void interpolate_waveform
(
struct Trap *trap,
struct TransportWaveform *waveform_coarse,
struct TransportWaveform *waveform_fine,
double dx
);
struct TransportWaveform* transport_program_to_waveform
(
struct Trap *trap,
struct TransportProgram *transport_program,
int *n_waveform_steps_list // implicitly, length transport_program->n_transports
);
void compose_waveforms
(
int n_waveforms,
struct TransportWaveform *waveforms,
double *waveform_scales
);
void compute_secular_frequencies
(
double q,
double m,
double V_DC,
double V_RF,
double Omega,
double Z_0,
double *omega
);
void compute_U_pond
(
double m,
double omega_rf,
double V_rf,
double* U_rf,
double* U_pond,
double dx
);