Give initial values to parameters
subroutine particle_base_init() use mod_global_parameters integer :: n, idir integer, parameter :: i8 = selected_int_kind(18) integer(i8) :: seed(2) character(len=20) :: strdata physics_type_particles = 'advect' nparticleshi = 10000000 nparticles_per_cpu_hi = 1000000 num_particles = 1000 ndefpayload = 1 nusrpayload = 0 tmax_particles = bigdouble dtsave_particles = bigdouble const_dt_particles = -bigdouble particles_cfl = 0.5 write_individual = .true. write_ensemble = .true. write_snapshot = .true. downsample_particles = 1 relativistic = .false. particles_eta = -1.d0 particles_etah = -1.d0 t_next_output = 0.0d0 dtheta = 2.0d0*dpi / 60.0d0 losses = .false. nparticles = 0 it_particles = 0 n_output_destroyed = 0 nparticles_on_mype = 0 nparticles_active_on_mype = 0 integrator_velocity_factor(:) = 1.0d0 integrator_type_particles = 'Boris' call particles_params_read(par_files) ! If sampling, ndefpayload = nw: if (physics_type_particles == 'sample') ndefpayload = nw ! Total number of payloads npayload = ndefpayload + nusrpayload ! initialise the random number generator seed = [310952_i8, 8948923749821_i8] call rng%set_seed(seed) allocate(particle(1:nparticleshi)) allocate(ipe_neighbor(0:npe-1)) allocate(particles_on_mype(nparticles_per_cpu_hi)) allocate(particles_active_on_mype(nparticles_per_cpu_hi)) particles_on_mype(:) = 0 particles_active_on_mype(:) = 0 ! Generate header for CSV files csv_header = ' time, dt, x1, x2, x3, u1, u2, u3,' ! If sampling, name the payloads like the fluid quantities if (physics_type_particles == 'sample') then do n = 1, nw write(strdata,"(a,a,a)") ' ', trim(prim_wnames(n)), ',' csv_header = trim(csv_header) // trim(strdata) end do else ! Otherwise, payloads are called pl01, pl02, ... do n = 1, ndefpayload write(strdata,"(a,i2.2,a)") ' pl', n, ',' csv_header = trim(csv_header) // trim(strdata) end do end if ! User-defined payloads are called usrpl01, usrpl02, ... if (nusrpayload > 0) then do n = 1, nusrpayload write(strdata,"(a,i2.2,a)") ' usrpl', n, ',' csv_header = trim(csv_header) // trim(strdata) end do end if csv_header = trim(csv_header) // ' ipe, iteration, index' ! Generate format string for CSV files write(csv_format, '(A,I0,A,A)') '(', 8 + npayload, '(es14.6,", ")',& 'i8.7,", ",i11.10,", ",i8.7)' end subroutine particle_base_init