表面モデルに応じて、電荷堆積後の要素電荷を緩和する。 conductor は mesh_id ごとの浮遊導体として、総電荷を保存しながら等電位化する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mesh_type), | intent(inout) | :: | mesh | |||
| real(kind=dp), | intent(in) | :: | softening | |||
| real(kind=dp), | intent(in) | :: | external_e(3) | |||
| character(len=*), | intent(in), | optional | :: | field_bc_mode |
subroutine apply_surface_model_charge_relaxation(mesh, softening, external_e, field_bc_mode) type(mesh_type), intent(inout) :: mesh real(dp), intent(in) :: softening real(dp), intent(in) :: external_e(3) character(len=*), intent(in), optional :: field_bc_mode integer(i32), allocatable :: conductor_elems(:), conductor_mesh_ids(:), elem_group(:) integer(i32) :: ncond, ngroup if (.not. allocated(mesh%elem_surface_model)) return ncond = int(count(mesh%elem_surface_model == surface_model_conductor), kind=i32) if (ncond <= 0_i32) return call validate_conductor_field_bc(field_bc_mode) allocate (conductor_elems(ncond), elem_group(ncond), conductor_mesh_ids(ncond)) call collect_conductor_elements(mesh, conductor_elems, conductor_mesh_ids, elem_group, ngroup) call solve_floating_conductor_charges(mesh, softening, external_e, conductor_elems, elem_group, ngroup) end subroutine apply_surface_model_charge_relaxation