@@ -30,13 +30,24 @@ namespace picongpu
30
30
{
31
31
/* * plane wave (use periodic boundaries!)
32
32
*
33
- * no phase shifts, no spacial envelope
33
+ * no transversal spacial envelope
34
+ * based on the electric potential
35
+ * Phi = E_0 * exp(0.5 * (t-t_0)^2 / tau^2) * cos(t - t_0 - phi)
36
+ * by applying t = x/c, the spatial derivative can be interchanged by the temporal derivative
37
+ * resulting in:
38
+ * E = E_0 * exp(...) * [sin(...) + t/tau^2 * cos(...)]
39
+ * This ensures int_{-infinty}^{+infinty} E(x) = 0 for any phase.
40
+ *
41
+ * The plateau length needs to be set to a multiple of the wavelength,
42
+ * otherwise the integral will not vanish.
34
43
*/
35
44
namespace laserPlaneWave
36
45
{
37
-
38
- /* * Compute the
46
+ /* * calculates longitudinal field distribution
39
47
*
48
+ * @param currentStep
49
+ * @param phase
50
+ * @return
40
51
*/
41
52
HINLINE float3_X laserLongitudinal ( uint32_t currentStep, float_X& phase )
42
53
{
@@ -46,10 +57,6 @@ namespace picongpu
46
57
double envelope = double (AMPLITUDE );
47
58
float3_X elong (float3_X::create (0.0 ));
48
59
49
- // a NON-symmetric (starting with phase=0) pulse will be initialized at position z=0 for
50
- // a time of RAMP_INIT * PULSE_LENGTH + LASER_NOFOCUS_CONSTANT = INIT_TIME.
51
- // we shift the complete pulse for the half of this time to start with
52
- // the front of the laser pulse.
53
60
const double mue = 0.5 * RAMP_INIT * PULSE_LENGTH;
54
61
55
62
const double w = 2.0 * PI * f;
@@ -78,6 +85,7 @@ namespace picongpu
78
85
79
86
const double timeOszi = runTime - endUpramp;
80
87
const double t_and_phase = w * timeOszi + LASER_PHASE;
88
+ // to understand both components [sin(...) + t/tau^2 * cos(...)] see description above
81
89
if ( Polarisation == LINEAR_X )
82
90
{
83
91
elong.x () = float_X ( envelope * (math::sin (t_and_phase)
@@ -102,7 +110,7 @@ namespace picongpu
102
110
return elong;
103
111
}
104
112
105
- /* *
113
+ /* * calculates transversal field distribution
106
114
*
107
115
* @param elong
108
116
* @param phase
0 commit comments