| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=i32), | public, | parameter | :: | periodic_zero_mode_ok | = | 0_i32 | |
| integer(kind=i32), | public, | parameter | :: | periodic_zero_mode_invalid | = | 1_i32 |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=i32), | public | :: | nelem | = | 0_i32 | ||
| integer(kind=i32), | public | :: | nbreak | = | 0_i32 | ||
| real(kind=dp), | public | :: | area_xy | = | 0.0_dp | ||
| real(kind=dp), | public | :: | height_tolerance | = | 0.0_dp |
Geometric part of the height-coincidence tolerance (zero_mode_heights_coincide). |
|
| real(kind=dp), | public, | allocatable | :: | break_z(:) | |||
| type(panel_height_projection_type), | public, | allocatable | :: | panel(:) |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=dp), | public | :: | e_bottom | = | 0.0_dp | ||
| real(kind=dp), | public | :: | z_gauge | = | 0.0_dp | ||
| real(kind=dp), | public | :: | phi_gauge | = | 0.0_dp | ||
| real(kind=dp), | public | :: | total_charge | = | 0.0_dp | ||
| real(kind=dp), | public | :: | gauge_primitive | = | 0.0_dp |
Charge primitive at z_gauge; every evaluation subtracts it, so refresh computes it once. |
|
| real(kind=dp), | public, | allocatable | :: | cumulative_charge_coeff(:,:) |
区間 k の累積電荷多項式の係数。k>=2 は左端 break_z(k-1)、k=1 は break_z(1) を原点とする局所座標 t=z-原点 の多項式で、絶対 z の冪の相殺を避ける(zero_mode_interval_origin)。 |
||
| real(kind=dp), | public, | allocatable | :: | primitive_at_break(:) | |||
| real(kind=dp), | public, | allocatable | :: | sheet_charge(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(periodic_zero_mode_plan_type), | intent(in) | :: | plan | |||
| real(kind=dp), | intent(in) | :: | charge(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(periodic_zero_mode_plan_type), | intent(in) | :: | plan | |||
| type(periodic_zero_mode_state_type), | intent(in) | :: | state | |||
| real(kind=dp), | intent(in) | :: | z | |||
| integer(kind=i32), | intent(in) | :: | interval |
Two heights are one breakpoint when they differ by at most the plan's geometric tolerance or by the few ULPs that binary64 cannot resolve at their magnitude. Only the second term sees the absolute coordinate, so a representable tilt (tens of ULPs) far from the origin stays inclined.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | a | |||
| real(kind=dp), | intent(in) | :: | b | |||
| real(kind=dp), | intent(in) | :: | geometric_tolerance |
区間 interval の累積電荷多項式の原点。区間 1 は最下 break、それ以外は区間の左端 break。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | break_z(:) | |||
| integer(kind=i32), | intent(in) | :: | interval |
局所座標の多項式を原点から t=0..t_upper まで積分する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | coefficient(3) | |||
| real(kind=dp), | intent(in) | :: | t_upper |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mesh_type), | intent(in) | :: | mesh | |||
| real(kind=dp), | intent(in) | :: | area_xy | |||
| type(periodic_zero_mode_plan_type), | intent(out) | :: | plan | |||
| integer(kind=i32), | intent(out) | :: | status | |||
| character(len=*), | intent(out) | :: | message |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | source_heights(:,:) | |||
| real(kind=dp), | intent(in) | :: | area_xy | |||
| type(periodic_zero_mode_plan_type), | intent(out) | :: | plan | |||
| integer(kind=i32), | intent(out) | :: | status | |||
| character(len=*), | intent(out) | :: | message |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(periodic_zero_mode_plan_type), | intent(in) | :: | plan | |||
| real(kind=dp), | intent(in) | :: | charge(:) | |||
| real(kind=dp), | intent(in) | :: | e_bottom | |||
| real(kind=dp), | intent(in) | :: | z_gauge | |||
| real(kind=dp), | intent(in) | :: | phi_gauge | |||
| type(periodic_zero_mode_state_type), | intent(inout) | :: | state |
Arrays already sized for this plan are reused; every component is overwritten. |
A target on a breakpoint (same coincidence rule as the plan's breakpoint merge) takes the requested sheet trace; any other target lies strictly inside one interval.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | break_z(:) | |||
| real(kind=dp), | intent(in) | :: | tolerance | |||
| real(kind=dp), | intent(in) | :: | z | |||
| integer(kind=i32), | intent(out) | :: | interval | |||
| integer(kind=i32), | intent(out) | :: | breakpoint |