Skip to content

Commit ed13e08

Browse files
committed
Fix merge conflicts
2 parents d2b0a30 + 6ddf821 commit ed13e08

22 files changed

+724
-658
lines changed

.gitlab-ci.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ compile:
66
stage: compile
77
only:
88
- develop
9-
- envelope_cylindrical
9+
- smilei_Poisson_AM
1010

1111
script:
1212
# Force workdir cleaning in case of retried
@@ -28,7 +28,7 @@ makerun1D:
2828
stage: makerun
2929
only:
3030
- develop
31-
- envelope_cylindrical
31+
- smilei_Poisson_AM
3232

3333
script:
3434
# Move in test dir
@@ -40,7 +40,7 @@ makerun2D:
4040
stage: makerun
4141
only:
4242
- develop
43-
- envelope_cylindrical
43+
- smilei_Poisson_AM
4444

4545
script:
4646
# Move in test dir
@@ -52,7 +52,7 @@ makerun3D:
5252
stage: makerun
5353
only:
5454
- develop
55-
- envelope_cylindrical
55+
- smilei_Poisson_AM
5656

5757
script:
5858
# Move in test dir
@@ -64,7 +64,7 @@ makerunAM:
6464
stage: makerun
6565
only:
6666
- develop
67-
- envelope_cylindrical
67+
- smilei_Poisson_AM
6868

6969
script:
7070
# Move in test dir
@@ -76,7 +76,7 @@ makerunV:
7676
stage: makerun
7777
only:
7878
- develop
79-
- envelope_cylindrical
79+
- smilei_Poisson_AM
8080

8181
script:
8282
# Move in test dir
@@ -88,7 +88,7 @@ makerunCollisions:
8888
stage: makerun
8989
only:
9090
- develop
91-
- envelope_cylindrical
91+
- smilei_Poisson_AM
9292

9393
script:
9494
# Move in test dir

doc/Sphinx/namelist.rst

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,11 +127,11 @@ The block ``Main`` is **mandatory** and has the following syntax::
127127

128128
.. warning::
129129

130-
The ``"AMcylindrical"`` geometry is currently proposed in beta version.
130+
The ``"AMcylindrical"`` geometry has some restrictions.
131131
Boundary conditions must be set to ``"remove"`` for particles,
132132
``"silver-muller"`` for longitudinal EM boundaries and
133133
``"buneman"`` for transverse EM boundaries.
134-
Vectorization, collisions, scalar diagnostics, Poisson solver and
134+
Vectorization, collisions, scalar diagnostics and
135135
order-4 interpolation are not supported yet.
136136

137137
.. py:data:: interpolation_order
@@ -643,9 +643,9 @@ Each species has to be defined in a ``Species`` block::
643643
644644
:type: A python list of integers.
645645

646+
This list sets the number of evenly spaced particles per cell per dimension at their initial positions.
646647
The size of the list must be the simulation particle dimension. It can be used only if `position_initialization` is set to `regular`.
647648
The product of the elements of the provided list must be equal to `particles_per_cell`.
648-
This list sets the number of evenly spaced particles per cell per dimension at their initial positions.
649649
The numbers are given in the order [`Nx`, `Ny`, `Nz`] in cartesian geometries and [`Nx`, `Nr`, `Ntheta`] in `AMcylindrical` in which
650650
case we advise to use :math:`Ntheta \geq 4\times (number\_of\_AM-1)`.
651651

@@ -1024,7 +1024,11 @@ Each particle injector has to be defined in a ``ParticleInjector`` block::
10241024
:default: ``tconstant()``
10251025

10261026
The temporal envelope of the injector.
1027-
1027+
1028+
----
1029+
1030+
.. rst-class:: experimental
1031+
10281032
.. _Particle_merging:
10291033

10301034
Particle Merging
@@ -2491,7 +2495,9 @@ This is done by including a block ``DiagFields``::
24912495
In ``AMcylindrical`` geometry, the ``x``, ``y`` and ``z``
24922496
indices are replaced by ``l`` (longitudinal), ``r`` (radial) and ``t`` (theta). In addition,
24932497
the angular Fourier modes are denoted by the suffix ``_mode_i`` where ``i``
2494-
is the mode number. In summary, the list of fields reads as follows.
2498+
is the mode number.
2499+
If a field is specified without its associated mode number, all available modes will be included.
2500+
In summary, the list of fields reads as follows.
24952501

24962502
.. rst-class:: nowrap
24972503

doc/Sphinx/releases.rst

Lines changed: 55 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,16 @@ get the latest version of Smilei on `GitHub <https://github.com/SmileiPIC/Smilei
99
Upcoming changes
1010
^^^^^^^^^^^^^^^^
1111

12-
* Interface with the PICSAR library (currently experimental)
13-
* Particle merging (beta version)
14-
* Additional prescribed fields that only contribute to pushing particles
15-
* More control over the moving window movement
16-
* More control over the regular position initialization in Cartesian geometries
17-
* AMcylindrical now supports almost all features of the code (Poisson solver and scalar diags still missing)
18-
* Bugfix: particle binning was not following the moving window
19-
* Bugfix: gaussian profile with order 0 was incorrect
12+
* Already available, but experimental:
13+
14+
* Particle merging
15+
* Nuclear reactions
16+
* Interface with the PICSAR library for AM spectral solver
17+
18+
* In the future:
19+
20+
* Single Domain Multiple Decomposition
21+
* Additional prescribed fields that only contribute to pushing particles
2022

2123
----
2224

@@ -30,27 +32,51 @@ The latest version tarball can be donwloaded here:
3032
**Download**: `Smilei latest <_downloads/Smilei.tar.gz>`_
3133

3234

35+
----
36+
37+
Release 4.3
38+
^^^^^^^^^^^^^^^^^^^^^
39+
40+
**Download**: `Smilei v4.3 <_downloads/smilei-v4.3.tar.gz>`_
41+
42+
43+
* ``AMcylindrical`` : envelope, ionization, additional diagnotics,
44+
number of ppc per direction, binomial current filter, poisson solver,
45+
non-separable laser initialization per mode, improved diag field nomenclature
46+
* Particle injector
47+
* More control over the moving window movement
48+
* More control over the regular position initialization in Cartesian geometries
49+
* Bugfixes:
50+
51+
* ionization of frozen species
52+
* particle binning was not following the moving window
53+
* gaussian profile with order 0 was incorrect
54+
* tracked particles post-processing was incorrect above 20M particles
55+
* better management of particle binning in collisions
56+
* Intel 19 optimizations
57+
58+
3359
----
3460

3561
Release 4.2
3662
^^^^^^^^^^^^^^^^^^^^^
3763

3864
**Download**: `Smilei v4.2 <_downloads/smilei-v4.2.tar.gz>`_
3965

40-
66+
* ``AMcylindrical`` geometry with azimuthal Fourier decomposition (beta version)
4167
* Different convention for circular polarization amplitude
42-
* Binomial filter in Cartesian 3D bug fix in parallel implementation
4368
* 1D and 2D laser envelope model
44-
* Cylindrical geometry with azimuthal Fourier decomposition (beta version)
4569
* Compatibility between various ionization and QED models
4670
* Bugfixes:
47-
* Various crashes linked to vectorization
48-
* `LaserGaussian2D` when focused far from boundary
49-
* Laser :py:data:`a0` normalization to :py:data:`omega`
50-
* Frozen particles are now properly ionized
51-
* Position initialization over another species with moving window
52-
* Tracked particles output was missing the mass factor for momenta
53-
* Breit-Wheeler pair production with fine grain sorted particles
71+
72+
* Binomial filter in Cartesian 3D parallel implementation
73+
* Various crashes linked to vectorization
74+
* ``LaserGaussian2D`` when focused far from boundary
75+
* Laser :py:data:`a0` normalization to :py:data:`omega`
76+
* Frozen particles are now properly ionized
77+
* Position initialization over another species with moving window
78+
* Tracked particles output was missing the mass factor for momenta
79+
* Breit-Wheeler pair production with fine grain sorted particles
5480

5581

5682
----
@@ -67,11 +93,13 @@ Release 4.1
6793
* collisions (badly affected by vectorization)
6894
* adaptive vectorization with dynamic load balancing
6995
* memory leak in the laser envelope model
70-
71-
* Disable usage of `-ipo` to compile on supercomputers despite of saving time simulation
96+
97+
* Disable usage of `-ipo` to compile on supercomputers
98+
despite of saving time simulation
7299

73100
* it needs too many resources (time and memory) to link
74-
* it is recommended to do some tests on a new supercomputer without and then to re-establish it
101+
* it is recommended to do some tests on a new supercomputer
102+
without and then to re-establish it
75103

76104
.. warning::
77105

@@ -102,7 +130,8 @@ Release 3.5
102130
**Download**: `Smilei v3.5 <_downloads/smilei-v3.5.tar.gz>`_
103131

104132
* :doc:`Laser defined in tilted plane<laser_offset>`
105-
* Bugfixes: Field diagnostic subgrid, Scalar diagnostic PoyInst, MPI tags for large number of patches
133+
* Bugfixes: Field diagnostic subgrid, Scalar diagnostic PoyInst,
134+
MPI tags for large number of patches
106135

107136
----
108137

@@ -143,7 +172,8 @@ Release 3.3
143172
* QED radiation reaction
144173
* Monte-Carlo QED photon emission
145174
* *Test mode* to quickly check the namelist consistency
146-
* *ParticleBinning* and *Screen* diagnostics accept a python function as their ``deposited_quantity`` and ``axis``.
175+
* *ParticleBinning* and *Screen* diagnostics accept a python function as their
176+
``deposited_quantity`` and ``axis``.
147177
* Bugfixes: 4th order, field ionization
148178

149179
----
@@ -156,7 +186,8 @@ Release 3.2
156186
* New pushers (Vay's and Higuera-Cary's)
157187
* *Numpy* used for filtering track particles
158188
* Fourth order in 3D
159-
* Add some missing 3D features: external fields management, boundary conditions and non-neutral plasma initialization
189+
* Add some missing 3D features: external fields management, boundary conditions
190+
and non-neutral plasma initialization
160191
* OpenMP support in moving window
161192
* Tracked particles post-processing improved for large files
162193
* Bugfixes: energy computation in 3D or with moving window, random number seed

doc/Sphinx/smilei_theme/static/smilei_theme.css_t

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -631,6 +631,18 @@ div.header > * {
631631
font-size:1.3em;
632632
}
633633

634+
div.experimental h2:first-of-type::after, dl.experimental dt:first-of-type::after {
635+
content: "experimental";
636+
background:red;
637+
color:white;
638+
margin: 0 10px;
639+
padding: 0 5px;
640+
border-radius: 5px;
641+
font-size: 0.8em;
642+
font-family: "BPreplay";
643+
font-weight: bold;
644+
}
645+
634646
/* --------------------------------------------------------------------*/
635647
/* Logos and icons */
636648
img.logo {

src/Diagnostic/DiagnosticFields.cpp

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,24 @@ DiagnosticFields::DiagnosticFields( Params &params, SmileiMPI *smpi, VectorPatch
3636
// Extract the requested fields
3737
vector<string> fieldsToDump( 0 );
3838
PyTools::extract( "fields", fieldsToDump, "DiagFields", ndiag );
39-
39+
40+
//Avoid modes repetition in the namelist by interpreting field quantity as all modes of this quantity
41+
if (params.geometry == "AMcylindrical") {
42+
vector<string> fieldsToAdd( 0 );
43+
for (int ifield = 0; ifield < fieldsToDump.size(); ifield++){
44+
if (fieldsToDump[ifield].find("_mode_") == std::string::npos) {
45+
for (unsigned int imode = 1; imode < params.nmodes; imode ++){
46+
fieldsToAdd.push_back(fieldsToDump[ifield]+"_mode_"+to_string(imode));
47+
}
48+
fieldsToDump[ifield] = fieldsToDump[ifield] + "_mode_0" ;
49+
}
50+
}
51+
for (int ifield = 0; ifield < fieldsToAdd.size(); ifield++){
52+
fieldsToDump.push_back(fieldsToAdd[ifield]);
53+
}
54+
}
55+
4056
// List all fields that are requested
41-
std::vector<Field *> allFields( 0 );
4257
ostringstream ss( "" );
4358
fields_indexes.resize( 0 );
4459
fields_names .resize( 0 );

src/Diagnostic/DiagnosticPerformances.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ void DiagnosticPerformances::run( SmileiMPI *smpi, VectorPatch &vecPatches, int
201201
double time = itime * timestep;
202202
for( unsigned int ipatch=0; ipatch < number_of_patches; ipatch++ ) {
203203
for( unsigned int ispecies = 0; ispecies < number_of_species; ispecies++ ) {
204-
if( time < vecPatches( ipatch )->vecSpecies[ispecies]->time_frozen ) {
204+
if( time < vecPatches( ipatch )->vecSpecies[ispecies]->time_frozen_ ) {
205205
number_of_frozen_particles += vecPatches( ipatch )->vecSpecies[ispecies]->getNbrOfParticles();
206206
} else {
207207
number_of_particles += vecPatches( ipatch )->vecSpecies[ispecies]->getNbrOfParticles();

src/Ionization/IonizationFactory.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class IonizationFactory
3030

3131
} else if( model == "from_rate" ) {
3232

33-
if( species->max_charge > ( int )species->maximum_charge_state ) {
33+
if( species->max_charge > ( int )species->maximum_charge_state_ ) {
3434
ERROR( "For species '" << species->name_ << ": charge > maximum_charge_state" );
3535
}
3636

src/Ionization/IonizationFromRate.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ IonizationFromRate::IonizationFromRate( Params &params, Species *species ) : Ion
1515

1616
DEBUG( "Creating the FromRate Ionizaton class" );
1717

18-
maximum_charge_state_ = species->maximum_charge_state;
19-
ionization_rate = species->ionization_rate;
18+
maximum_charge_state_ = species->maximum_charge_state_;
19+
ionization_rate_ = species->ionization_rate_;
2020

2121
DEBUG( "Finished Creating the FromRate Ionizaton class" );
2222

@@ -46,7 +46,7 @@ void IonizationFromRate::operator()( Particles *particles, unsigned int ipart_mi
4646
particleData.startAt( ipart_min );
4747
PyTools::setIteration( itime );
4848
particleData.set( particles );
49-
ret = ( PyArrayObject * )PyObject_CallFunctionObjArgs( ionization_rate, particleData.get(), NULL );
49+
ret = ( PyArrayObject * )PyObject_CallFunctionObjArgs( ionization_rate_, particleData.get(), NULL );
5050
PyTools::checkPyError();
5151
if( ret == NULL ) {
5252
ERROR( "ionization_rate profile has not provided a correct result" );

src/Ionization/IonizationFromRate.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class IonizationFromRate : public Ionization
2525

2626
int itime;
2727
unsigned int maximum_charge_state_;
28-
PyObject *ionization_rate;
28+
PyObject *ionization_rate_;
2929

3030
};
3131

src/MultiphotonBreitWheeler/MultiphotonBreitWheelerFactory.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class MultiphotonBreitWheelerFactory
3535
MultiphotonBreitWheeler *Multiphoton_Breit_Wheeler_process = NULL;
3636

3737
// Assign the correct Radiation model to Radiate
38-
if( !species->multiphoton_Breit_Wheeler[0].empty() ) {
38+
if( !species->multiphoton_Breit_Wheeler_[0].empty() ) {
3939
Multiphoton_Breit_Wheeler_process = new MultiphotonBreitWheeler( params, species );
4040
if( params.Laser_Envelope_model & species->ponderomotive_dynamics ) {
4141
ERROR( "Multiphoton Breit-Wheeler model is not yet implemented for species interacting with Laser Envelope model." );

0 commit comments

Comments
 (0)