make_disk Subroutine

public subroutine make_disk(mesh, radius, n_theta, n_r, center)

XY平面上の円板を極座標分割し、外周へ向かって三角形化したメッシュを生成する。

Arguments

Type IntentOptional Attributes Name
type(mesh_type), intent(out) :: mesh

生成した円板メッシュ。

real(kind=dp), intent(in), optional :: radius

円板半径 [m](省略時 0.5)。

integer(kind=i32), intent(in), optional :: n_theta

周方向分割数(省略時 24)。

integer(kind=i32), intent(in), optional :: n_r

周方向分割数(省略時 24)。 半径方向分割数(省略時 8)。

real(kind=dp), intent(in), optional :: center(3)

円板半径 [m](省略時 0.5)。


Calls

proc~~make_disk~~CallsGraph proc~make_disk make_disk proc~make_annulus make_annulus proc~make_disk->proc~make_annulus proc~init_mesh init_mesh proc~make_annulus->proc~init_mesh proc~push_tri push_tri proc~make_annulus->proc~push_tri proc~update_mesh_geometry update_mesh_geometry proc~init_mesh->proc~update_mesh_geometry proc~build_collision_grid build_collision_grid proc~update_mesh_geometry->proc~build_collision_grid proc~cross~2 cross proc~update_mesh_geometry->proc~cross~2 proc~cell_id~2 cell_id proc~build_collision_grid->proc~cell_id~2 proc~coord_to_cell~2 coord_to_cell proc~build_collision_grid->proc~coord_to_cell~2

Called by

proc~~make_disk~~CalledByGraph proc~make_disk make_disk proc~build_one_template build_one_template proc~build_one_template->proc~make_disk proc~build_template_mesh build_template_mesh proc~build_template_mesh->proc~build_one_template proc~build_mesh_from_config build_mesh_from_config proc~build_mesh_from_config->proc~build_template_mesh proc~load_or_init_run_state load_or_init_run_state proc~load_or_init_run_state->proc~build_mesh_from_config program~main main program~main->proc~load_or_init_run_state

Source Code

  subroutine make_disk(mesh, radius, n_theta, n_r, center)
    type(mesh_type), intent(out) :: mesh
    real(dp), intent(in), optional :: radius, center(3)
    integer(i32), intent(in), optional :: n_theta, n_r
    real(dp) :: r, c(3)
    integer(i32) :: nt, nr0

    r = 0.5d0; nt = 24; nr0 = 8; c = 0.0d0
    if (present(radius)) r = radius
    if (present(n_theta)) nt = n_theta
    if (present(n_r)) nr0 = n_r
    if (present(center)) c = center
    call make_annulus(mesh, radius=r, inner_radius=0.0d0, n_theta=nt, n_r=nr0, center=c)
  end subroutine make_disk