fill_panel_quadrature Subroutine

public subroutine fill_panel_quadrature(geometry, position, weight)

Fill an existing seven-point cubature buffer without allocating a plan.

Arguments

Type IntentOptional Attributes Name
type(panel_geometry_type), intent(in) :: geometry
real(kind=dp), intent(out) :: position(3,7)
real(kind=dp), intent(out) :: weight(7)

Called by

proc~~fill_panel_quadrature~~CalledByGraph proc~fill_panel_quadrature fill_panel_quadrature proc~build_panel_quadrature build_panel_quadrature proc~build_panel_quadrature->proc~fill_panel_quadrature proc~update_mesh_geometry update_mesh_geometry proc~update_mesh_geometry->proc~fill_panel_quadrature proc~init_mesh init_mesh proc~init_mesh->proc~update_mesh_geometry proc~prepare_periodic2_collision_mesh prepare_periodic2_collision_mesh proc~prepare_periodic2_collision_mesh->proc~update_mesh_geometry proc~apply_obj_transform apply_obj_transform proc~apply_obj_transform->proc~init_mesh proc~build_mesh_from_indexed build_mesh_from_indexed proc~build_mesh_from_indexed->proc~init_mesh proc~build_template_mesh build_template_mesh proc~build_template_mesh->proc~init_mesh proc~build_one_template build_one_template proc~build_template_mesh->proc~build_one_template proc~load_or_init_run_state load_or_init_run_state proc~load_or_init_run_state->proc~prepare_periodic2_collision_mesh proc~build_mesh_from_config build_mesh_from_config proc~load_or_init_run_state->proc~build_mesh_from_config proc~make_annulus make_annulus proc~make_annulus->proc~init_mesh proc~make_box make_box proc~make_box->proc~init_mesh proc~make_cylinder make_cylinder proc~make_cylinder->proc~init_mesh proc~make_plane make_plane proc~make_plane->proc~init_mesh proc~make_plate_hole make_plate_hole proc~make_plate_hole->proc~init_mesh proc~make_sphere make_sphere proc~make_sphere->proc~init_mesh proc~build_mesh_from_config->proc~apply_obj_transform proc~build_mesh_from_config->proc~build_template_mesh proc~load_obj_mesh load_obj_mesh proc~build_mesh_from_config->proc~load_obj_mesh proc~build_one_template->proc~make_annulus proc~build_one_template->proc~make_box proc~build_one_template->proc~make_cylinder proc~build_one_template->proc~make_plane proc~build_one_template->proc~make_plate_hole proc~build_one_template->proc~make_sphere proc~make_disk make_disk proc~build_one_template->proc~make_disk proc~load_obj_mesh->proc~build_mesh_from_indexed proc~make_disk->proc~make_annulus program~main main program~main->proc~load_or_init_run_state

Source Code

  subroutine fill_panel_quadrature(geometry, position, weight)
    type(panel_geometry_type), intent(in) :: geometry
    real(dp), intent(out) :: position(3, 7), weight(7)
    real(dp), parameter :: barycentric(3, 7) = reshape([ &
                                                       1.0_dp/3.0_dp, 1.0_dp/3.0_dp, 1.0_dp/3.0_dp, &
                                                       0.059715871789770_dp, 0.470142064105115_dp, 0.470142064105115_dp, &
                                                       0.470142064105115_dp, 0.059715871789770_dp, 0.470142064105115_dp, &
                                                       0.470142064105115_dp, 0.470142064105115_dp, 0.059715871789770_dp, &
                                                       0.797426985353087_dp, 0.101286507323456_dp, 0.101286507323456_dp, &
                                                       0.101286507323456_dp, 0.797426985353087_dp, 0.101286507323456_dp, &
                                                       0.101286507323456_dp, 0.101286507323456_dp, 0.797426985353087_dp &
                                                       ], [3, 7])
    real(dp), parameter :: normalized_weight(7) = [ &
                           0.225000000000000_dp, &
                           0.132394152788506_dp, 0.132394152788506_dp, 0.132394152788506_dp, &
                           0.125939180544827_dp, 0.125939180544827_dp, 0.125939180544827_dp &
                           ]
    integer :: point

    do point = 1, 7
      position(:, point) = matmul(geometry%vertex, barycentric(:, point))
    end do
    weight = geometry%area*normalized_weight
  end subroutine fill_panel_quadrature