reservoir/plane sourceの初期位置を、設定されたbox境界条件に従って有効領域へ正規化する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(sim_config), | intent(in) | :: | sim | |||
| real(kind=dp), | intent(inout) | :: | x(:,:) |
pure subroutine normalize_reservoir_positions(sim, x) type(sim_config), intent(in) :: sim real(dp), intent(inout) :: x(:, :) integer(i32) :: axis real(dp) :: span if (.not. sim%use_box) return do axis = 1_i32, 3_i32 if (.not. ieee_is_finite(sim%box_min(axis)) .or. .not. ieee_is_finite(sim%box_max(axis))) cycle span = sim%box_max(axis) - sim%box_min(axis) if (.not. ieee_is_finite(span) .or. span <= 0.0_dp) cycle if (sim%bc_low(axis) == bc_periodic .and. sim%bc_high(axis) == bc_periodic) then x(axis, :) = sim%box_min(axis) + modulo(x(axis, :) - sim%box_min(axis), span) else x(axis, :) = min(max(x(axis, :), sim%box_min(axis)), sim%box_max(axis)) end if end do end subroutine normalize_reservoir_positions