マクロ粒子残差を macro_residuals.csv として保存する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | out_dir |
出力ディレクトリ。 |
||
| type(injection_state), | intent(in) | :: | state |
種別ごとのマクロ粒子残差を保持した注入状態。 |
||
| integer(kind=i32), | intent(in), | optional | :: | mpi_rank | ||
| integer(kind=i32), | intent(in), | optional | :: | mpi_size | ||
| type(mpi_context), | intent(in), | optional | :: | mpi |
subroutine write_macro_residuals_file(out_dir, state, mpi_rank, mpi_size, mpi) character(len=*), intent(in) :: out_dir type(injection_state), intent(in) :: state integer(i32), intent(in), optional :: mpi_rank, mpi_size type(mpi_context), intent(in), optional :: mpi character(len=1024) :: path integer :: u, ios, i integer(i32) :: local_rank, world_size if (.not. allocated(state%macro_residual)) return call resolve_parallel_rank_size(local_rank, world_size, mpi_rank, mpi_size, mpi, 'write_macro_residuals_file') path = restart_macro_residual_path(trim(out_dir), mpi_rank=local_rank, mpi_size=world_size) open (newunit=u, file=trim(path), status='replace', action='write', iostat=ios) if (ios /= 0) error stop 'Failed to open macro_residuals.csv.' write (u, '(a)') 'species_idx,residual' do i = 1, size(state%macro_residual) write (u, '(i0,a,es24.16)') i, ',', state%macro_residual(i) end do close (u) end subroutine write_macro_residuals_file