[[particles.species]] のキーを粒子種設定へ適用する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(particle_species_spec), | intent(inout) | :: | spec |
更新対象の粒子種設定。 |
||
| character(len=*), | intent(in) | :: | line |
|
subroutine apply_particles_species_kv(spec, line) type(particle_species_spec), intent(inout) :: spec character(len=*), intent(in) :: line character(len=64) :: k character(len=256) :: v call split_key_value(line, k, v) select case (trim(k)) case ('enabled') call parse_logical(v, spec%enabled) case ('npcls_per_step') call parse_int(v, spec%npcls_per_step) spec%has_npcls_per_step = .true. case ('source_mode') call parse_string(v, spec%source_mode) spec%source_mode = lower_ascii(trim(spec%source_mode)) case ('number_density_cm3') call parse_real(v, spec%number_density_cm3) spec%has_number_density_cm3 = .true. case ('number_density_m3') call parse_real(v, spec%number_density_m3) spec%has_number_density_m3 = .true. case ('q_particle') call parse_real(v, spec%q_particle) case ('m_particle') call parse_real(v, spec%m_particle) case ('w_particle') call parse_real(v, spec%w_particle) spec%has_w_particle = .true. case ('target_macro_particles_per_batch') call parse_int(v, spec%target_macro_particles_per_batch) spec%has_target_macro_particles_per_batch = .true. case ('pos_low') call parse_real3(v, spec%pos_low) case ('pos_high') call parse_real3(v, spec%pos_high) case ('drift_velocity') call parse_real3(v, spec%drift_velocity) case ('temperature_k') call parse_real(v, spec%temperature_k) spec%has_temperature_k = .true. case ('temperature_ev') call parse_real(v, spec%temperature_ev) spec%has_temperature_ev = .true. case ('emit_current_density_a_m2') call parse_real(v, spec%emit_current_density_a_m2) case ('rays_per_batch') call parse_int(v, spec%rays_per_batch) case ('deposit_opposite_charge_on_emit') call parse_logical(v, spec%deposit_opposite_charge_on_emit) spec%has_deposit_opposite_charge_on_emit = .true. case ('normal_drift_speed') call parse_real(v, spec%normal_drift_speed) case ('ray_direction') call parse_real3(v, spec%ray_direction) spec%has_ray_direction = .true. case ('inject_face') call parse_string(v, spec%inject_face) spec%inject_face = lower_ascii(trim(spec%inject_face)) case default error stop 'Unknown key in [[particles.species]]: '//trim(k) end select end subroutine apply_particles_species_kv