From 14a87a8d8f34f31e97438fc20e52ca398465678c Mon Sep 17 00:00:00 2001 From: gha3mi <36126354+gha3mi@users.noreply.github.com> Date: Mon, 1 Apr 2024 18:34:41 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20gha3mi/f?= =?UTF-8?q?orcad@360fd5d5b76815ef7969d8a7dc36617cc82fe70a=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 2 +- interface/elemconn_c0.html | 326 ++-- interface/ndgrid.html | 98 +- lists/files.html | 2 +- lists/modules.html | 2 +- lists/procedures.html | 1898 ++++++++++----------- lists/programs.html | 2 +- lists/types.html | 2 +- module/forcad.html | 10 +- module/forcad_bezier_curve.html | 206 +-- module/forcad_bezier_surface.html | 214 +-- module/forcad_bezier_volume.html | 206 +-- module/forcad_nurbs_curve.html | 258 +-- module/forcad_nurbs_surface.html | 286 ++-- module/forcad_nurbs_volume.html | 290 ++-- module/forcad_utils.html | 6 +- proc/basis_bernstein.html | 108 +- proc/basis_bspline.html | 90 +- proc/cmp_elemconn_c0_l.html | 326 ++-- proc/cmp_elemconn_c0_s.html | 326 ++-- proc/cmp_elemconn_c0_v.html | 326 ++-- proc/compute_knot_vector.html | 206 +-- proc/compute_multiplicity.html | 480 +++--- proc/create.html | 217 +-- proc/create~2.html | 192 +-- proc/create~3.html | 202 ++- proc/create~4.html | 64 +- proc/create~5.html | 204 +-- proc/create~6.html | 269 ++- proc/elevate_degree.html | 28 +- proc/export_xc.html | 96 +- proc/export_xc~2.html | 97 +- proc/export_xc~3.html | 94 +- proc/export_xc~4.html | 34 +- proc/export_xc~5.html | 96 +- proc/export_xc~6.html | 97 +- proc/export_xg.html | 94 +- proc/export_xg~2.html | 97 +- proc/export_xg~3.html | 94 +- proc/export_xg~4.html | 34 +- proc/export_xg~5.html | 96 +- proc/export_xg~6.html | 97 +- proc/finalize.html | 44 +- proc/finalize~2.html | 45 +- proc/finalize~3.html | 42 +- proc/finalize~4.html | 30 +- proc/finalize~5.html | 44 +- proc/finalize~6.html | 45 +- proc/generate_xc.html | 36 +- proc/generate_xc~2.html | 89 +- proc/generate_xc~3.html | 74 +- proc/generate_xc~4.html | 60 +- proc/generate_xc~5.html | 89 +- proc/get_continuity.html | 20 +- proc/get_continuity~2.html | 51 +- proc/get_continuity~3.html | 51 +- proc/get_elem_xc.html | 96 +- proc/get_elem_xc~2.html | 101 +- proc/get_elem_xc~3.html | 98 +- proc/get_elem_xc~4.html | 34 +- proc/get_elem_xc~5.html | 100 +- proc/get_elem_xc~6.html | 101 +- proc/get_elem_xg.html | 94 +- proc/get_elem_xg~2.html | 101 +- proc/get_elem_xg~3.html | 98 +- proc/get_elem_xg~4.html | 34 +- proc/get_elem_xg~5.html | 100 +- proc/get_elem_xg~6.html | 101 +- proc/get_knot.html | 18 +- proc/get_knot~2.html | 35 +- proc/get_knot~3.html | 35 +- proc/get_multiplicity.html | 90 +- proc/get_multiplicity~2.html | 169 +- proc/get_multiplicity~3.html | 167 +- proc/get_nc.html | 363 +++- proc/get_nc~2.html | 361 +--- proc/get_nc~3.html | 139 +- proc/get_nc~4.html | 76 +- proc/get_nc~5.html | 137 +- proc/get_nc~6.html | 16 +- proc/get_ng.html | 14 +- proc/get_ng~2.html | 16 +- proc/get_ng~3.html | 16 +- proc/get_ng~4.html | 16 +- proc/get_ng~5.html | 16 +- proc/get_ng~6.html | 16 +- proc/get_order.html | 342 +++- proc/get_order~2.html | 342 +--- proc/get_order~3.html | 344 +--- proc/get_order~4.html | 80 +- proc/get_order~5.html | 342 +++- proc/get_order~6.html | 16 +- proc/get_wc.html | 16 +- proc/get_wc~2.html | 16 +- proc/get_wc~3.html | 14 +- proc/get_wc~4.html | 14 +- proc/get_wc~5.html | 16 +- proc/get_wc~6.html | 16 +- proc/get_xc.html | 16 +- proc/get_xc~2.html | 16 +- proc/get_xc~3.html | 14 +- proc/get_xc~4.html | 14 +- proc/get_xc~5.html | 16 +- proc/get_xc~6.html | 16 +- proc/get_xg.html | 14 +- proc/get_xg~2.html | 14 +- proc/get_xg~3.html | 12 +- proc/get_xg~4.html | 14 +- proc/get_xg~5.html | 14 +- proc/get_xg~6.html | 14 +- proc/get_xt.html | 16 +- proc/get_xt~2.html | 35 +- proc/get_xt~3.html | 31 +- proc/get_xt~4.html | 16 +- proc/get_xt~5.html | 35 +- proc/get_xt~6.html | 33 +- proc/kron.html | 94 +- proc/modify_wc.html | 183 +- proc/modify_wc~2.html | 183 +- proc/modify_wc~3.html | 153 +- proc/modify_wc~4.html | 84 +- proc/modify_wc~5.html | 155 +- proc/modify_wc~6.html | 34 +- proc/modify_xc.html | 185 +- proc/modify_xc~2.html | 185 +- proc/modify_xc~3.html | 153 +- proc/modify_xc~4.html | 84 +- proc/modify_xc~5.html | 157 +- proc/modify_xc~6.html | 34 +- proc/ndgrid2.html | 98 +- proc/ndgrid3.html | 98 +- proc/repelem.html | 204 +-- proc/set.html | 118 +- proc/set1.html | 127 +- proc/set1~2.html | 206 ++- proc/set1~3.html | 221 +-- proc/set2.html | 120 +- proc/set2~2.html | 220 ++- proc/set2~3.html | 250 +-- proc/set~2.html | 30 +- proc/set~3.html | 114 +- program/example_bezier_curve.html | 110 +- program/example_bezier_surface.html | 124 +- program/example_bezier_volume.html | 110 +- program/example_nurbs_curve.html | 148 +- program/example_nurbs_surface.html | 198 +-- program/example_nurbs_volume.html | 198 +-- search.html | 2 +- sourcefile/bezier_curve.f90.html | 2 +- sourcefile/bezier_surface.f90.html | 2 +- sourcefile/bezier_volume.f90.html | 2 +- sourcefile/forcad.f90.html | 2 +- sourcefile/forcad_bezier_curve.f90.html | 2 +- sourcefile/forcad_bezier_surface.f90.html | 2 +- sourcefile/forcad_bezier_volume.f90.html | 2 +- sourcefile/forcad_nurbs_curve.f90.html | 2 +- sourcefile/forcad_nurbs_surface.f90.html | 2 +- sourcefile/forcad_nurbs_volume.f90.html | 2 +- sourcefile/forcad_utils.f90.html | 2 +- sourcefile/nurbs_curve.f90.html | 2 +- sourcefile/nurbs_surface.f90.html | 2 +- sourcefile/nurbs_volume.f90.html | 2 +- tipuesearch/tipuesearch_content.js | 2 +- type/bezier_curve.html | 122 +- type/bezier_surface.html | 126 +- type/bezier_volume.html | 118 +- type/nurbs_curve.html | 164 +- type/nurbs_surface.html | 172 +- type/nurbs_volume.html | 176 +- 169 files changed, 9268 insertions(+), 9268 deletions(-) diff --git a/index.html b/index.html index 9f550026f..b16367f96 100644 --- a/index.html +++ b/index.html @@ -201,7 +201,7 @@

Derived Types

Documentation generated by FORD - on 2024-04-01T17:32:09.529675

+ on 2024-04-01T18:34:28.480052


diff --git a/interface/elemconn_c0.html b/interface/elemconn_c0.html index 320f21c48..340d089f9 100644 --- a/interface/elemconn_c0.html +++ b/interface/elemconn_c0.html @@ -327,9 +327,9 @@

Called by

proc~get_elem_xc - - -forcad_bezier_surface::bezier_surface%get_elem_Xc + + +forcad_nurbs_volume::nurbs_volume%get_elem_Xc @@ -342,9 +342,9 @@

Called by

proc~get_elem_xc~2 - - -forcad_nurbs_surface::nurbs_surface%get_elem_Xc + + +forcad_bezier_curve::bezier_curve%get_elem_Xc @@ -357,9 +357,9 @@

Called by

proc~get_elem_xc~3 - - -forcad_nurbs_curve::nurbs_curve%get_elem_Xc + + +forcad_bezier_volume::bezier_volume%get_elem_Xc @@ -372,9 +372,9 @@

Called by

proc~get_elem_xc~4 - + -forcad_nurbs_volume::nurbs_volume%get_elem_Xc +forcad_nurbs_surface::nurbs_surface%get_elem_Xc @@ -387,9 +387,9 @@

Called by

proc~get_elem_xc~5 - - -forcad_bezier_volume::bezier_volume%get_elem_Xc + + +forcad_nurbs_curve::nurbs_curve%get_elem_Xc @@ -402,9 +402,9 @@

Called by

proc~get_elem_xc~6 - - -forcad_bezier_curve::bezier_curve%get_elem_Xc + + +forcad_bezier_surface::bezier_surface%get_elem_Xc @@ -417,9 +417,9 @@

Called by

proc~get_elem_xg - - -forcad_bezier_surface::bezier_surface%get_elem_Xg + + +forcad_nurbs_volume::nurbs_volume%get_elem_Xg @@ -432,9 +432,9 @@

Called by

proc~get_elem_xg~2 - - -forcad_nurbs_surface::nurbs_surface%get_elem_Xg + + +forcad_bezier_curve::bezier_curve%get_elem_Xg @@ -447,24 +447,24 @@

Called by

proc~get_elem_xg~3 - - -forcad_nurbs_curve::nurbs_curve%get_elem_Xg + + +forcad_bezier_volume::bezier_volume%get_elem_Xg proc~get_elem_xg~3->interface~elemconn_c0 - - + + proc~get_elem_xg~4 - + -forcad_nurbs_volume::nurbs_volume%get_elem_Xg +forcad_nurbs_surface::nurbs_surface%get_elem_Xg @@ -477,9 +477,9 @@

Called by

proc~get_elem_xg~5 - - -forcad_bezier_volume::bezier_volume%get_elem_Xg + + +forcad_nurbs_curve::nurbs_curve%get_elem_Xg @@ -492,9 +492,9 @@

Called by

proc~get_elem_xg~6 - - -forcad_bezier_curve::bezier_curve%get_elem_Xg + + +forcad_bezier_surface::bezier_surface%get_elem_Xg @@ -507,54 +507,54 @@

Called by

proc~export_xc - - -forcad_bezier_surface::bezier_surface%export_Xc + + +forcad_nurbs_volume::nurbs_volume%export_Xc proc~export_xc->proc~get_elem_xc - - + + proc~export_xc~2 - - -forcad_nurbs_surface::nurbs_surface%export_Xc + + +forcad_bezier_curve::bezier_curve%export_Xc proc~export_xc~2->proc~get_elem_xc~2 - - + + proc~export_xc~3 - - -forcad_nurbs_curve::nurbs_curve%export_Xc + + +forcad_bezier_volume::bezier_volume%export_Xc proc~export_xc~3->proc~get_elem_xc~3 - - + + proc~export_xc~4 - + -forcad_nurbs_volume::nurbs_volume%export_Xc +forcad_nurbs_surface::nurbs_surface%export_Xc @@ -567,84 +567,84 @@

Called by

proc~export_xc~5 - - -forcad_bezier_volume::bezier_volume%export_Xc + + +forcad_nurbs_curve::nurbs_curve%export_Xc proc~export_xc~5->proc~get_elem_xc~5 - - + + proc~export_xc~6 - - -forcad_bezier_curve::bezier_curve%export_Xc + + +forcad_bezier_surface::bezier_surface%export_Xc proc~export_xc~6->proc~get_elem_xc~6 - - + + proc~export_xg - - -forcad_bezier_surface::bezier_surface%export_Xg + + +forcad_nurbs_volume::nurbs_volume%export_Xg proc~export_xg->proc~get_elem_xg - - + + proc~export_xg~2 - - -forcad_nurbs_surface::nurbs_surface%export_Xg + + +forcad_bezier_curve::bezier_curve%export_Xg proc~export_xg~2->proc~get_elem_xg~2 - - + + proc~export_xg~3 - - -forcad_nurbs_curve::nurbs_curve%export_Xg + + +forcad_bezier_volume::bezier_volume%export_Xg proc~export_xg~3->proc~get_elem_xg~3 - - + + proc~export_xg~4 - + -forcad_nurbs_volume::nurbs_volume%export_Xg +forcad_nurbs_surface::nurbs_surface%export_Xg @@ -657,158 +657,158 @@

Called by

proc~export_xg~5 - - -forcad_bezier_volume::bezier_volume%export_Xg + + +forcad_nurbs_curve::nurbs_curve%export_Xg proc~export_xg~5->proc~get_elem_xg~5 - - + + proc~export_xg~6 - - -forcad_bezier_curve::bezier_curve%export_Xg + + +forcad_bezier_surface::bezier_surface%export_Xg proc~export_xg~6->proc~get_elem_xg~6 - - + + program~example_bezier_curve - -example_bezier_curve + +example_bezier_curve - - -program~example_bezier_curve->proc~export_xc~6 - - + + +program~example_bezier_curve->proc~export_xc~2 + + - - -program~example_bezier_curve->proc~export_xg~6 - - + + +program~example_bezier_curve->proc~export_xg~2 + + program~example_bezier_surface - -example_bezier_surface + +example_bezier_surface - - -program~example_bezier_surface->proc~export_xc - - + + +program~example_bezier_surface->proc~export_xc~6 + + - - -program~example_bezier_surface->proc~export_xg - - + + +program~example_bezier_surface->proc~export_xg~6 + + program~example_bezier_volume - -example_bezier_volume + +example_bezier_volume - - -program~example_bezier_volume->proc~export_xc~5 - - + + +program~example_bezier_volume->proc~export_xc~3 + + - - -program~example_bezier_volume->proc~export_xg~5 - - + + +program~example_bezier_volume->proc~export_xg~3 + + program~example_nurbs_curve - -example_nurbs_curve + +example_nurbs_curve - - -program~example_nurbs_curve->proc~export_xc~3 - - + + +program~example_nurbs_curve->proc~export_xc~5 + + - - -program~example_nurbs_curve->proc~export_xg~3 - - + + +program~example_nurbs_curve->proc~export_xg~5 + + program~example_nurbs_surface - -example_nurbs_surface + +example_nurbs_surface - - -program~example_nurbs_surface->proc~export_xc~2 - - + + +program~example_nurbs_surface->proc~export_xc~4 + + - - -program~example_nurbs_surface->proc~export_xg~2 - - + + +program~example_nurbs_surface->proc~export_xg~4 + + program~example_nurbs_volume - -example_nurbs_volume + +example_nurbs_volume - - -program~example_nurbs_volume->proc~export_xc~4 - - + + +program~example_nurbs_volume->proc~export_xc + + - - -program~example_nurbs_volume->proc~export_xg~4 - - + + +program~example_nurbs_volume->proc~export_xg + + @@ -1197,7 +1197,7 @@

Documentation generated by FORD - on 2024-04-01T17:32:09.529675

+ on 2024-04-01T18:34:28.480052


diff --git a/interface/ndgrid.html b/interface/ndgrid.html index 03884dfae..558e745d0 100644 --- a/interface/ndgrid.html +++ b/interface/ndgrid.html @@ -311,9 +311,9 @@

Called by

proc~create - - -forcad_bezier_surface::bezier_surface%create + + +forcad_nurbs_volume::nurbs_volume%create @@ -323,27 +323,27 @@

Called by

- + -proc~create~2 - - -forcad_nurbs_surface::nurbs_surface%create +proc~create~3 + + +forcad_bezier_volume::bezier_volume%create - + -proc~create~2->interface~ndgrid - - +proc~create~3->interface~ndgrid + + proc~create~4 - + -forcad_nurbs_volume::nurbs_volume%create +forcad_nurbs_surface::nurbs_surface%create @@ -353,18 +353,18 @@

Called by

- + -proc~create~5 - +proc~create~6 + -forcad_bezier_volume::bezier_volume%create +forcad_bezier_surface::bezier_surface%create - + -proc~create~5->interface~ndgrid +proc~create~6->interface~ndgrid @@ -372,61 +372,61 @@

Called by

program~example_bezier_surface - -example_bezier_surface + +example_bezier_surface - - -program~example_bezier_surface->proc~create - - + + +program~example_bezier_surface->proc~create~6 + + program~example_bezier_volume - -example_bezier_volume + +example_bezier_volume - - -program~example_bezier_volume->proc~create~5 - - + + +program~example_bezier_volume->proc~create~3 + + program~example_nurbs_surface - -example_nurbs_surface + +example_nurbs_surface - - -program~example_nurbs_surface->proc~create~2 - - + + +program~example_nurbs_surface->proc~create~4 + + program~example_nurbs_volume - -example_nurbs_volume + +example_nurbs_volume - - -program~example_nurbs_volume->proc~create~4 - - + + +program~example_nurbs_volume->proc~create + + @@ -692,7 +692,7 @@

Arguments

Documentation generated by FORD - on 2024-04-01T17:32:09.529675

+ on 2024-04-01T18:34:28.480052


diff --git a/lists/files.html b/lists/files.html index e2cbe8357..23f195e3d 100644 --- a/lists/files.html +++ b/lists/files.html @@ -443,7 +443,7 @@

Documentation generated by FORD - on 2024-04-01T17:32:09.529675

+ on 2024-04-01T18:34:28.480052


diff --git a/lists/modules.html b/lists/modules.html index 645261da7..3fdfe8019 100644 --- a/lists/modules.html +++ b/lists/modules.html @@ -451,7 +451,7 @@

Documentation generated by FORD - on 2024-04-01T17:32:09.529675

+ on 2024-04-01T18:34:28.480052


diff --git a/lists/procedures.html b/lists/procedures.html index fe1e2d3b2..77b1b5c35 100644 --- a/lists/procedures.html +++ b/lists/procedures.html @@ -115,39 +115,39 @@

Procedures

create - forcad_bezier_surface + forcad_nurbs_volume Subroutine create - forcad_nurbs_surface + forcad_bezier_curve Subroutine - +

Generate geometry points of the Bezier curve.

create - forcad_nurbs_curve + forcad_bezier_volume Subroutine create - forcad_nurbs_volume + forcad_nurbs_surface Subroutine create - forcad_bezier_volume + forcad_nurbs_curve Subroutine create - forcad_bezier_curve + forcad_bezier_surface Subroutine -

Generate geometry points of the Bezier curve.

+ elemConn_C0 @@ -163,517 +163,517 @@

Procedures

export_Xc - forcad_bezier_surface + forcad_nurbs_volume Subroutine export_Xc - forcad_nurbs_surface + forcad_bezier_curve Subroutine - +

Export control points to a VTK file.

export_Xc - forcad_nurbs_curve + forcad_bezier_volume Subroutine export_Xc - forcad_nurbs_volume + forcad_nurbs_surface Subroutine export_Xc - forcad_bezier_volume + forcad_nurbs_curve Subroutine export_Xc - forcad_bezier_curve + forcad_bezier_surface Subroutine -

Export control points to a VTK file.

+ export_Xg - forcad_bezier_surface + forcad_nurbs_volume Subroutine export_Xg - forcad_nurbs_surface + forcad_bezier_curve Subroutine - +

Export geometry points to a VTK file.

export_Xg - forcad_nurbs_curve + forcad_bezier_volume Subroutine export_Xg - forcad_nurbs_volume + forcad_nurbs_surface Subroutine export_Xg - forcad_bezier_volume + forcad_nurbs_curve Subroutine export_Xg - forcad_bezier_curve + forcad_bezier_surface Subroutine -

Export geometry points to a VTK file.

+ finalize - forcad_bezier_surface + forcad_nurbs_volume Subroutine finalize - forcad_nurbs_surface + forcad_bezier_curve Subroutine - +

Finalize the Bezier curve object by deallocating memory.

finalize - forcad_nurbs_curve + forcad_bezier_volume Subroutine finalize - forcad_nurbs_volume + forcad_nurbs_surface Subroutine finalize - forcad_bezier_volume + forcad_nurbs_curve Subroutine finalize - forcad_bezier_curve + forcad_bezier_surface Subroutine -

Finalize the Bezier curve object by deallocating memory.

+ generate_Xc - example_nurbs_surface + example_bezier_surface Function generate_Xc - example_bezier_volume + example_bezier_curve Function generate_Xc - example_bezier_surface + example_nurbs_volume Function generate_Xc - example_nurbs_volume + example_nurbs_surface Function generate_Xc - example_bezier_curve + example_bezier_volume Function get_continuity - forcad_nurbs_surface + forcad_nurbs_volume Function get_continuity - forcad_nurbs_curve + forcad_nurbs_surface Function get_continuity - forcad_nurbs_volume + forcad_nurbs_curve Function get_elem_Xc - forcad_bezier_surface + forcad_nurbs_volume Subroutine get_elem_Xc - forcad_nurbs_surface + forcad_bezier_curve Subroutine - +

Generate connectivity for control points.

get_elem_Xc - forcad_nurbs_curve + forcad_bezier_volume Subroutine get_elem_Xc - forcad_nurbs_volume + forcad_nurbs_surface Subroutine get_elem_Xc - forcad_bezier_volume + forcad_nurbs_curve Subroutine get_elem_Xc - forcad_bezier_curve + forcad_bezier_surface Subroutine -

Generate connectivity for control points.

+ get_elem_Xg - forcad_bezier_surface + forcad_nurbs_volume Subroutine get_elem_Xg - forcad_nurbs_surface + forcad_bezier_curve Subroutine - +

Generate connectivity for geometry points.

get_elem_Xg - forcad_nurbs_curve + forcad_bezier_volume Subroutine get_elem_Xg - forcad_nurbs_volume + forcad_nurbs_surface Subroutine get_elem_Xg - forcad_bezier_volume + forcad_nurbs_curve Subroutine get_elem_Xg - forcad_bezier_curve + forcad_bezier_surface Subroutine -

Generate connectivity for geometry points.

+ get_knot - forcad_nurbs_surface + forcad_nurbs_volume Function get_knot - forcad_nurbs_curve + forcad_nurbs_surface Function get_knot - forcad_nurbs_volume + forcad_nurbs_curve Function get_multiplicity - forcad_nurbs_surface + forcad_nurbs_volume Function get_multiplicity - forcad_nurbs_curve + forcad_nurbs_surface Function get_multiplicity - forcad_nurbs_volume + forcad_nurbs_curve Function get_nc - forcad_bezier_surface + forcad_nurbs_volume Function get_nc - forcad_nurbs_surface + forcad_bezier_curve Function get_nc - forcad_nurbs_curve + forcad_bezier_volume Function get_nc - forcad_nurbs_volume + forcad_nurbs_surface Function get_nc - forcad_bezier_volume + forcad_nurbs_curve Function get_nc - forcad_bezier_curve + forcad_bezier_surface Function get_ng - forcad_bezier_surface + forcad_nurbs_volume Function get_ng - forcad_nurbs_surface + forcad_bezier_curve Function get_ng - forcad_nurbs_curve + forcad_bezier_volume Function get_ng - forcad_nurbs_volume + forcad_nurbs_surface Function get_ng - forcad_bezier_volume + forcad_nurbs_curve Function get_ng - forcad_bezier_curve + forcad_bezier_surface Function get_order - forcad_bezier_surface + forcad_nurbs_volume Function get_order - forcad_nurbs_surface + forcad_bezier_curve Function get_order - forcad_nurbs_curve + forcad_bezier_volume Function get_order - forcad_nurbs_volume + forcad_nurbs_surface Function get_order - forcad_bezier_volume + forcad_nurbs_curve Function get_order - forcad_bezier_curve + forcad_bezier_surface Function get_Wc - forcad_bezier_surface + forcad_nurbs_volume Function get_Wc - forcad_nurbs_surface + forcad_bezier_curve Function get_Wc - forcad_nurbs_curve + forcad_bezier_volume Function get_Wc - forcad_nurbs_volume + forcad_nurbs_surface Function get_Wc - forcad_bezier_volume + forcad_nurbs_curve Function get_Wc - forcad_bezier_curve + forcad_bezier_surface Function get_Xc - forcad_bezier_surface + forcad_nurbs_volume Function get_Xc - forcad_nurbs_surface + forcad_bezier_curve Function get_Xc - forcad_nurbs_curve + forcad_bezier_volume Function get_Xc - forcad_nurbs_volume + forcad_nurbs_surface Function get_Xc - forcad_bezier_volume + forcad_nurbs_curve Function get_Xc - forcad_bezier_curve + forcad_bezier_surface Function get_Xg - forcad_bezier_surface + forcad_nurbs_volume Function get_Xg - forcad_nurbs_surface + forcad_bezier_curve Function get_Xg - forcad_nurbs_curve + forcad_bezier_volume Function get_Xg - forcad_nurbs_volume + forcad_nurbs_surface Function get_Xg - forcad_bezier_volume + forcad_nurbs_curve Function get_Xg - forcad_bezier_curve + forcad_bezier_surface Function get_Xt - forcad_bezier_surface + forcad_nurbs_volume Function get_Xt - forcad_nurbs_surface + forcad_bezier_curve Function get_Xt - forcad_nurbs_curve + forcad_bezier_volume Function get_Xt - forcad_nurbs_volume + forcad_nurbs_surface Function get_Xt - forcad_bezier_volume + forcad_nurbs_curve Function get_Xt - forcad_bezier_curve + forcad_bezier_surface Function @@ -685,73 +685,73 @@

Procedures

modify_Wc - forcad_bezier_surface + forcad_nurbs_volume Subroutine -

Modify weight of a control point given its index.

+ modify_Wc - forcad_nurbs_surface + forcad_bezier_curve Subroutine - +

Modify weight of a control point given its index.

modify_Wc - forcad_nurbs_curve + forcad_bezier_volume Subroutine modify_Wc - forcad_nurbs_volume + forcad_nurbs_surface Subroutine modify_Wc - forcad_bezier_volume + forcad_nurbs_curve Subroutine modify_Wc - forcad_bezier_curve + forcad_bezier_surface Subroutine

Modify weight of a control point given its index.

modify_Xc - forcad_bezier_surface + forcad_nurbs_volume Subroutine -

Modify coordinate of a control point given its index and direction.

+ modify_Xc - forcad_nurbs_surface + forcad_bezier_curve Subroutine - +

Modify coordinate of a control point given its index and direction.

modify_Xc - forcad_nurbs_curve + forcad_bezier_volume Subroutine modify_Xc - forcad_nurbs_volume + forcad_nurbs_surface Subroutine modify_Xc - forcad_bezier_volume + forcad_nurbs_curve Subroutine modify_Xc - forcad_bezier_curve + forcad_bezier_surface Subroutine

Modify coordinate of a control point given its index and direction.

@@ -781,7 +781,7 @@

Procedures

set - forcad_bezier_surface + forcad_bezier_curve Subroutine

Set control points and weights for the Bezier curve object.

@@ -793,45 +793,45 @@

Procedures

set - forcad_bezier_curve + forcad_bezier_surface Subroutine

Set control points and weights for the Bezier curve object.

set1 + forcad_nurbs_volume + Subroutine +

Set control points and weights for the NURBS curve object.

+ + + set1 forcad_nurbs_surface Subroutine

Set control points and weights for the NURBS surface object.

- set1 + set1 forcad_nurbs_curve Subroutine

Set control points and weights for the Bezier curve object.

- set1 + set2 forcad_nurbs_volume Subroutine

Set control points and weights for the NURBS curve object.

- set2 + set2 forcad_nurbs_surface Subroutine

Set control points and weights for the NURBS surface object.

- set2 + set2 forcad_nurbs_curve Subroutine

Set control points and weights for the Bezier curve object.

- - - set2 - forcad_nurbs_volume - Subroutine -

Set control points and weights for the NURBS curve object.

@@ -840,17 +840,17 @@

Procedures

- - + + call~~graph~~CallGraph - + interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 @@ -858,53 +858,53 @@

Procedures

proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + interface~ndgrid - -forcad_utils::ndgrid + +forcad_utils::ndgrid @@ -912,155 +912,155 @@

Procedures

proc~ndgrid2 - -forcad_utils::ndgrid2 + +forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 - - + + proc~ndgrid3 - -forcad_utils::ndgrid3 + +forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 - - + + - + -none~set~2 - - -forcad_nurbs_surface::nurbs_surface%set +none~set + + +forcad_nurbs_volume::nurbs_volume%set proc~set1 - - -forcad_nurbs_surface::nurbs_surface%set1 + + +forcad_nurbs_volume::nurbs_volume%set1 - + -none~set~2->proc~set1 - - +none~set->proc~set1 + + proc~set2 - - -forcad_nurbs_surface::nurbs_surface%set2 + + +forcad_nurbs_volume::nurbs_volume%set2 - + -none~set~2->proc~set2 - - +none~set->proc~set2 + + - + -none~set~3 - - -forcad_nurbs_curve::nurbs_curve%set +none~set~4 + + +forcad_nurbs_surface::nurbs_surface%set proc~set1~2 - - -forcad_nurbs_curve::nurbs_curve%set1 + + +forcad_nurbs_surface::nurbs_surface%set1 - + -none~set~3->proc~set1~2 - - +none~set~4->proc~set1~2 + + proc~set2~2 - - -forcad_nurbs_curve::nurbs_curve%set2 + + +forcad_nurbs_surface::nurbs_surface%set2 - + -none~set~3->proc~set2~2 - - +none~set~4->proc~set2~2 + + - + -none~set~4 - - -forcad_nurbs_volume::nurbs_volume%set +none~set~5 + + +forcad_nurbs_curve::nurbs_curve%set proc~set1~3 - - -forcad_nurbs_volume::nurbs_volume%set1 + + +forcad_nurbs_curve::nurbs_curve%set1 - + -none~set~4->proc~set1~3 - - +none~set~5->proc~set1~3 + + proc~set2~3 - - -forcad_nurbs_volume::nurbs_volume%set2 + + +forcad_nurbs_curve::nurbs_curve%set2 - + -none~set~4->proc~set2~3 - - +none~set~5->proc~set2~3 + + proc~basis_bernstein - -forcad_utils::basis_bernstein + +forcad_utils::basis_bernstein @@ -1068,8 +1068,8 @@

Procedures

proc~basis_bspline - -forcad_utils::basis_bspline + +forcad_utils::basis_bspline @@ -1077,8 +1077,8 @@

Procedures

proc~compute_knot_vector - -forcad_utils::compute_knot_vector + +forcad_utils::compute_knot_vector @@ -1086,1714 +1086,1714 @@

Procedures

proc~repelem - -forcad_utils::repelem + +forcad_utils::repelem proc~compute_knot_vector->proc~repelem - - + + proc~compute_multiplicity - -forcad_utils::compute_multiplicity + +forcad_utils::compute_multiplicity proc~create - - -forcad_bezier_surface::bezier_surface%create + + +forcad_nurbs_volume::nurbs_volume%create proc~create->interface~ndgrid - - + + - + -proc~create->proc~basis_bernstein - - +proc~create->proc~basis_bspline + + proc~kron - -forcad_utils::kron + +forcad_utils::kron proc~create->proc~kron - - + + proc~create~2 - - -forcad_nurbs_surface::nurbs_surface%create + + +forcad_bezier_curve::bezier_curve%create - + -proc~create~2->interface~ndgrid - - - - - -proc~create~2->proc~basis_bspline - - - - - -proc~create~2->proc~kron - - +proc~create~2->proc~basis_bernstein + + proc~create~3 - - -forcad_nurbs_curve::nurbs_curve%create + + +forcad_bezier_volume::bezier_volume%create - + + +proc~create~3->interface~ndgrid + + + + + +proc~create~3->proc~basis_bernstein + + + + -proc~create~3->proc~basis_bspline - - +proc~create~3->proc~kron + + proc~create~4 - - -forcad_nurbs_volume::nurbs_volume%create + + +forcad_nurbs_surface::nurbs_surface%create proc~create~4->interface~ndgrid - - + + proc~create~4->proc~basis_bspline - - + + proc~create~4->proc~kron - - + + proc~create~5 - - -forcad_bezier_volume::bezier_volume%create + + +forcad_nurbs_curve::nurbs_curve%create - + -proc~create~5->interface~ndgrid - - - - - -proc~create~5->proc~basis_bernstein - - - - - -proc~create~5->proc~kron - - +proc~create~5->proc~basis_bspline + + proc~create~6 - - -forcad_bezier_curve::bezier_curve%create + + +forcad_bezier_surface::bezier_surface%create + + +proc~create~6->interface~ndgrid + + + - + proc~create~6->proc~basis_bernstein - - + + + + + +proc~create~6->proc~kron + + proc~elevate_degree - -forcad_bezier_curve::bezier_curve%elevate_degree + +forcad_bezier_curve::bezier_curve%elevate_degree - + -proc~elevate_degree->proc~create~6 - - +proc~elevate_degree->proc~create~2 + + - - -proc~set~3 - - -forcad_bezier_curve::bezier_curve%set + + +proc~set + + +forcad_bezier_curve::bezier_curve%set - + -proc~elevate_degree->proc~set~3 - - +proc~elevate_degree->proc~set + + proc~export_xc - - -forcad_bezier_surface::bezier_surface%export_Xc + + +forcad_nurbs_volume::nurbs_volume%export_Xc proc~get_elem_xc - - -forcad_bezier_surface::bezier_surface%get_elem_Xc + + +forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~export_xc->proc~get_elem_xc - - + + proc~export_xc~2 - - -forcad_nurbs_surface::nurbs_surface%export_Xc + + +forcad_bezier_curve::bezier_curve%export_Xc proc~get_elem_xc~2 - - -forcad_nurbs_surface::nurbs_surface%get_elem_Xc + + +forcad_bezier_curve::bezier_curve%get_elem_Xc proc~export_xc~2->proc~get_elem_xc~2 - - + + proc~export_xc~3 - - -forcad_nurbs_curve::nurbs_curve%export_Xc + + +forcad_bezier_volume::bezier_volume%export_Xc proc~get_elem_xc~3 - - -forcad_nurbs_curve::nurbs_curve%get_elem_Xc + + +forcad_bezier_volume::bezier_volume%get_elem_Xc proc~export_xc~3->proc~get_elem_xc~3 - - + + proc~export_xc~4 - - -forcad_nurbs_volume::nurbs_volume%export_Xc + + +forcad_nurbs_surface::nurbs_surface%export_Xc proc~get_elem_xc~4 - - -forcad_nurbs_volume::nurbs_volume%get_elem_Xc + + +forcad_nurbs_surface::nurbs_surface%get_elem_Xc proc~export_xc~4->proc~get_elem_xc~4 - - + + proc~export_xc~5 - - -forcad_bezier_volume::bezier_volume%export_Xc + + +forcad_nurbs_curve::nurbs_curve%export_Xc proc~get_elem_xc~5 - - -forcad_bezier_volume::bezier_volume%get_elem_Xc + + +forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~export_xc~5->proc~get_elem_xc~5 - - + + proc~export_xc~6 - - -forcad_bezier_curve::bezier_curve%export_Xc + + +forcad_bezier_surface::bezier_surface%export_Xc proc~get_elem_xc~6 - - -forcad_bezier_curve::bezier_curve%get_elem_Xc + + +forcad_bezier_surface::bezier_surface%get_elem_Xc proc~export_xc~6->proc~get_elem_xc~6 - - + + proc~export_xg - - -forcad_bezier_surface::bezier_surface%export_Xg + + +forcad_nurbs_volume::nurbs_volume%export_Xg proc~get_elem_xg - - -forcad_bezier_surface::bezier_surface%get_elem_Xg + + +forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~export_xg->proc~get_elem_xg - - + + proc~export_xg~2 - - -forcad_nurbs_surface::nurbs_surface%export_Xg + + +forcad_bezier_curve::bezier_curve%export_Xg proc~get_elem_xg~2 - - -forcad_nurbs_surface::nurbs_surface%get_elem_Xg + + +forcad_bezier_curve::bezier_curve%get_elem_Xg proc~export_xg~2->proc~get_elem_xg~2 - - + + proc~export_xg~3 - - -forcad_nurbs_curve::nurbs_curve%export_Xg + + +forcad_bezier_volume::bezier_volume%export_Xg proc~get_elem_xg~3 - - -forcad_nurbs_curve::nurbs_curve%get_elem_Xg + + +forcad_bezier_volume::bezier_volume%get_elem_Xg proc~export_xg~3->proc~get_elem_xg~3 - - + + proc~export_xg~4 - - -forcad_nurbs_volume::nurbs_volume%export_Xg + + +forcad_nurbs_surface::nurbs_surface%export_Xg proc~get_elem_xg~4 - - -forcad_nurbs_volume::nurbs_volume%get_elem_Xg + + +forcad_nurbs_surface::nurbs_surface%get_elem_Xg proc~export_xg~4->proc~get_elem_xg~4 - - + + proc~export_xg~5 - - -forcad_bezier_volume::bezier_volume%export_Xg + + +forcad_nurbs_curve::nurbs_curve%export_Xg proc~get_elem_xg~5 - - -forcad_bezier_volume::bezier_volume%get_elem_Xg + + +forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~export_xg~5->proc~get_elem_xg~5 - - + + proc~export_xg~6 - - -forcad_bezier_curve::bezier_curve%export_Xg + + +forcad_bezier_surface::bezier_surface%export_Xg proc~get_elem_xg~6 - - -forcad_bezier_curve::bezier_curve%get_elem_Xg + + +forcad_bezier_surface::bezier_surface%get_elem_Xg proc~export_xg~6->proc~get_elem_xg~6 - - + + proc~finalize - - -forcad_bezier_surface::bezier_surface%finalize + + +forcad_nurbs_volume::nurbs_volume%finalize proc~finalize~2 - - -forcad_nurbs_surface::nurbs_surface%finalize + + +forcad_bezier_curve::bezier_curve%finalize proc~finalize~3 - - -forcad_nurbs_curve::nurbs_curve%finalize + + +forcad_bezier_volume::bezier_volume%finalize proc~finalize~4 - - -forcad_nurbs_volume::nurbs_volume%finalize + + +forcad_nurbs_surface::nurbs_surface%finalize proc~finalize~5 - - -forcad_bezier_volume::bezier_volume%finalize + + +forcad_nurbs_curve::nurbs_curve%finalize proc~finalize~6 - - -forcad_bezier_curve::bezier_curve%finalize + + +forcad_bezier_surface::bezier_surface%finalize proc~generate_xc - - -example_nurbs_surface::generate_Xc + + +example_bezier_surface::generate_Xc proc~generate_xc~2 - - -example_bezier_volume::generate_Xc + + +example_bezier_curve::generate_Xc proc~generate_xc~3 - - -example_bezier_surface::generate_Xc + + +example_nurbs_volume::generate_Xc proc~generate_xc~4 - - -example_nurbs_volume::generate_Xc + + +example_nurbs_surface::generate_Xc proc~generate_xc~5 - - -example_bezier_curve::generate_Xc + + +example_bezier_volume::generate_Xc proc~get_continuity - - -forcad_nurbs_surface::nurbs_surface%get_continuity + + +forcad_nurbs_volume::nurbs_volume%get_continuity proc~get_continuity->proc~compute_multiplicity - - + + proc~get_continuity~2 - - -forcad_nurbs_curve::nurbs_curve%get_continuity + + +forcad_nurbs_surface::nurbs_surface%get_continuity proc~get_continuity~2->proc~compute_multiplicity - - + + proc~get_continuity~3 - - -forcad_nurbs_volume::nurbs_volume%get_continuity + + +forcad_nurbs_curve::nurbs_curve%get_continuity proc~get_continuity~3->proc~compute_multiplicity - - + + proc~get_elem_xc->interface~elemconn_c0 - - + + proc~get_elem_xc~2->interface~elemconn_c0 - - + + proc~get_elem_xc~3->interface~elemconn_c0 - - + + proc~get_elem_xc~4->interface~elemconn_c0 - - + + proc~get_elem_xc~5->interface~elemconn_c0 - - + + proc~get_elem_xc~6->interface~elemconn_c0 - - + + proc~get_elem_xg->interface~elemconn_c0 - - + + proc~get_elem_xg~2->interface~elemconn_c0 - - + + proc~get_elem_xg~3->interface~elemconn_c0 - - + + proc~get_elem_xg~4->interface~elemconn_c0 - - + + proc~get_elem_xg~5->interface~elemconn_c0 - - + + proc~get_elem_xg~6->interface~elemconn_c0 - - + + proc~get_knot - - -forcad_nurbs_surface::nurbs_surface%get_knot + + +forcad_nurbs_volume::nurbs_volume%get_knot proc~get_knot~2 - - -forcad_nurbs_curve::nurbs_curve%get_knot + + +forcad_nurbs_surface::nurbs_surface%get_knot proc~get_knot~3 - - -forcad_nurbs_volume::nurbs_volume%get_knot + + +forcad_nurbs_curve::nurbs_curve%get_knot proc~get_multiplicity - - -forcad_nurbs_surface::nurbs_surface%get_multiplicity + + +forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~get_multiplicity->proc~compute_multiplicity - - + + proc~get_multiplicity~2 - - -forcad_nurbs_curve::nurbs_curve%get_multiplicity + + +forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~get_multiplicity~2->proc~compute_multiplicity - - + + proc~get_multiplicity~3 - - -forcad_nurbs_volume::nurbs_volume%get_multiplicity + + +forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~get_multiplicity~3->proc~compute_multiplicity - - + + proc~get_nc - - -forcad_bezier_surface::bezier_surface%get_nc + + +forcad_nurbs_volume::nurbs_volume%get_nc + + +proc~get_nc->proc~compute_multiplicity + + + proc~get_nc~2 - - -forcad_nurbs_surface::nurbs_surface%get_nc + + +forcad_bezier_curve::bezier_curve%get_nc - - -proc~get_nc~2->proc~compute_multiplicity - - - proc~get_nc~3 - - -forcad_nurbs_curve::nurbs_curve%get_nc + + +forcad_bezier_volume::bezier_volume%get_nc - - -proc~get_nc~3->proc~compute_multiplicity - - - proc~get_nc~4 - - -forcad_nurbs_volume::nurbs_volume%get_nc + + +forcad_nurbs_surface::nurbs_surface%get_nc - + proc~get_nc~4->proc~compute_multiplicity - - + + proc~get_nc~5 - - -forcad_bezier_volume::bezier_volume%get_nc + + +forcad_nurbs_curve::nurbs_curve%get_nc + + +proc~get_nc~5->proc~compute_multiplicity + + + proc~get_nc~6 - - -forcad_bezier_curve::bezier_curve%get_nc + + +forcad_bezier_surface::bezier_surface%get_nc proc~get_ng - - -forcad_bezier_surface::bezier_surface%get_ng + + +forcad_nurbs_volume::nurbs_volume%get_ng proc~get_ng~2 - - -forcad_nurbs_surface::nurbs_surface%get_ng + + +forcad_bezier_curve::bezier_curve%get_ng proc~get_ng~3 - - -forcad_nurbs_curve::nurbs_curve%get_ng + + +forcad_bezier_volume::bezier_volume%get_ng proc~get_ng~4 - - -forcad_nurbs_volume::nurbs_volume%get_ng + + +forcad_nurbs_surface::nurbs_surface%get_ng proc~get_ng~5 - - -forcad_bezier_volume::bezier_volume%get_ng + + +forcad_nurbs_curve::nurbs_curve%get_ng proc~get_ng~6 - - -forcad_bezier_curve::bezier_curve%get_ng + + +forcad_bezier_surface::bezier_surface%get_ng proc~get_order - - -forcad_bezier_surface::bezier_surface%get_order + + +forcad_nurbs_volume::nurbs_volume%get_order + + +proc~get_order->proc~get_multiplicity + + + proc~get_order~2 - - -forcad_nurbs_surface::nurbs_surface%get_order + + +forcad_bezier_curve::bezier_curve%get_order - - -proc~get_order~2->proc~get_multiplicity - - - proc~get_order~3 - - -forcad_nurbs_curve::nurbs_curve%get_order + + +forcad_bezier_volume::bezier_volume%get_order - - -proc~get_order~3->proc~get_multiplicity~2 - - - proc~get_order~4 - - -forcad_nurbs_volume::nurbs_volume%get_order + + +forcad_nurbs_surface::nurbs_surface%get_order - - -proc~get_order~4->proc~get_multiplicity~3 - - + + +proc~get_order~4->proc~get_multiplicity~2 + + proc~get_order~5 - - -forcad_bezier_volume::bezier_volume%get_order + + +forcad_nurbs_curve::nurbs_curve%get_order + + +proc~get_order~5->proc~get_multiplicity~3 + + + proc~get_order~6 - - -forcad_bezier_curve::bezier_curve%get_order + + +forcad_bezier_surface::bezier_surface%get_order proc~get_wc - - -forcad_bezier_surface::bezier_surface%get_Wc + + +forcad_nurbs_volume::nurbs_volume%get_Wc proc~get_wc~2 - - -forcad_nurbs_surface::nurbs_surface%get_Wc + + +forcad_bezier_curve::bezier_curve%get_Wc proc~get_wc~3 - - -forcad_nurbs_curve::nurbs_curve%get_Wc + + +forcad_bezier_volume::bezier_volume%get_Wc proc~get_wc~4 - - -forcad_nurbs_volume::nurbs_volume%get_Wc + + +forcad_nurbs_surface::nurbs_surface%get_Wc proc~get_wc~5 - - -forcad_bezier_volume::bezier_volume%get_Wc + + +forcad_nurbs_curve::nurbs_curve%get_Wc proc~get_wc~6 - - -forcad_bezier_curve::bezier_curve%get_Wc + + +forcad_bezier_surface::bezier_surface%get_Wc proc~get_xc - - -forcad_bezier_surface::bezier_surface%get_Xc + + +forcad_nurbs_volume::nurbs_volume%get_Xc proc~get_xc~2 - - -forcad_nurbs_surface::nurbs_surface%get_Xc + + +forcad_bezier_curve::bezier_curve%get_Xc proc~get_xc~3 - - -forcad_nurbs_curve::nurbs_curve%get_Xc + + +forcad_bezier_volume::bezier_volume%get_Xc proc~get_xc~4 - - -forcad_nurbs_volume::nurbs_volume%get_Xc + + +forcad_nurbs_surface::nurbs_surface%get_Xc proc~get_xc~5 - - -forcad_bezier_volume::bezier_volume%get_Xc + + +forcad_nurbs_curve::nurbs_curve%get_Xc proc~get_xc~6 - - -forcad_bezier_curve::bezier_curve%get_Xc + + +forcad_bezier_surface::bezier_surface%get_Xc proc~get_xg - - -forcad_bezier_surface::bezier_surface%get_Xg + + +forcad_nurbs_volume::nurbs_volume%get_Xg proc~get_xg~2 - - -forcad_nurbs_surface::nurbs_surface%get_Xg + + +forcad_bezier_curve::bezier_curve%get_Xg proc~get_xg~3 - - -forcad_nurbs_curve::nurbs_curve%get_Xg + + +forcad_bezier_volume::bezier_volume%get_Xg proc~get_xg~4 - - -forcad_nurbs_volume::nurbs_volume%get_Xg + + +forcad_nurbs_surface::nurbs_surface%get_Xg proc~get_xg~5 - - -forcad_bezier_volume::bezier_volume%get_Xg + + +forcad_nurbs_curve::nurbs_curve%get_Xg proc~get_xg~6 - - -forcad_bezier_curve::bezier_curve%get_Xg + + +forcad_bezier_surface::bezier_surface%get_Xg proc~get_xt - - -forcad_bezier_surface::bezier_surface%get_Xt + + +forcad_nurbs_volume::nurbs_volume%get_Xt proc~get_xt~2 - - -forcad_nurbs_surface::nurbs_surface%get_Xt + + +forcad_bezier_curve::bezier_curve%get_Xt proc~get_xt~3 - - -forcad_nurbs_curve::nurbs_curve%get_Xt + + +forcad_bezier_volume::get_Xt proc~get_xt~4 - - -forcad_nurbs_volume::nurbs_volume%get_Xt + + +forcad_nurbs_surface::nurbs_surface%get_Xt proc~get_xt~5 - - -forcad_bezier_volume::get_Xt + + +forcad_nurbs_curve::nurbs_curve%get_Xt proc~get_xt~6 - - -forcad_bezier_curve::bezier_curve%get_Xt + + +forcad_bezier_surface::bezier_surface%get_Xt proc~modify_wc - - -forcad_bezier_surface::bezier_surface%modify_Wc - - - - - -proc~set - - -forcad_bezier_surface::bezier_surface%set + + +forcad_nurbs_volume::nurbs_volume%modify_Wc - + -proc~modify_wc->proc~set - - +proc~modify_wc->none~set + + proc~modify_wc~2 - - -forcad_nurbs_surface::nurbs_surface%modify_Wc + + +forcad_bezier_curve::bezier_curve%modify_Wc - + -proc~modify_wc~2->none~set~2 - - +proc~modify_wc~2->proc~set + + proc~modify_wc~3 - - -forcad_nurbs_curve::nurbs_curve%modify_Wc + + +forcad_bezier_volume::bezier_volume%modify_Wc + + + + + +proc~set~2 + + +forcad_bezier_volume::bezier_volume%set - + -proc~modify_wc~3->none~set~3 - - +proc~modify_wc~3->proc~set~2 + + proc~modify_wc~4 - - -forcad_nurbs_volume::nurbs_volume%modify_Wc + + +forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~4->none~set~4 - - + + proc~modify_wc~5 - - -forcad_bezier_volume::bezier_volume%modify_Wc - - - - - -proc~set~2 - - -forcad_bezier_volume::bezier_volume%set + + +forcad_nurbs_curve::nurbs_curve%modify_Wc - + -proc~modify_wc~5->proc~set~2 - - +proc~modify_wc~5->none~set~5 + + proc~modify_wc~6 - - -forcad_bezier_curve::bezier_curve%modify_Wc + + +forcad_bezier_surface::bezier_surface%modify_Wc + + + + + +proc~set~3 + + +forcad_bezier_surface::bezier_surface%set proc~modify_wc~6->proc~set~3 - - + + proc~modify_xc - - -forcad_bezier_surface::bezier_surface%modify_Xc + + +forcad_nurbs_volume::nurbs_volume%modify_Xc - + -proc~modify_xc->proc~set - - +proc~modify_xc->none~set + + proc~modify_xc~2 - - -forcad_nurbs_surface::nurbs_surface%modify_Xc + + +forcad_bezier_curve::bezier_curve%modify_Xc - + -proc~modify_xc~2->none~set~2 - - +proc~modify_xc~2->proc~set + + proc~modify_xc~3 - - -forcad_nurbs_curve::nurbs_curve%modify_Xc + + +forcad_bezier_volume::bezier_volume%modify_Xc - + -proc~modify_xc~3->none~set~3 - - +proc~modify_xc~3->proc~set~2 + + proc~modify_xc~4 - - -forcad_nurbs_volume::nurbs_volume%modify_Xc + + +forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~4->none~set~4 - - + + proc~modify_xc~5 - - -forcad_bezier_volume::bezier_volume%modify_Xc + + +forcad_nurbs_curve::nurbs_curve%modify_Xc - + -proc~modify_xc~5->proc~set~2 - - +proc~modify_xc~5->none~set~5 + + proc~modify_xc~6 - - -forcad_bezier_curve::bezier_curve%modify_Xc + + +forcad_bezier_surface::bezier_surface%modify_Xc proc~modify_xc~6->proc~set~3 - - + + - + -proc~set1->proc~get_nc~2 - - +proc~set1->proc~get_nc + + - + -proc~set1->proc~get_order~2 - - +proc~set1->proc~get_order + + - + -proc~set1~2->proc~get_order~3 - - +proc~set1~2->proc~get_nc~4 + + - + -proc~set1~3->proc~get_nc~4 - - +proc~set1~2->proc~get_order~4 + + - + -proc~set1~3->proc~get_order~4 - - +proc~set1~3->proc~get_order~5 + + proc~set2->proc~compute_knot_vector - - + + - + -proc~set2->proc~get_nc~2 - - +proc~set2->proc~get_nc + + proc~set2~2->proc~compute_knot_vector - - + + - + -proc~set2~3->proc~compute_knot_vector - - +proc~set2~2->proc~get_nc~4 + + - + -proc~set2~3->proc~get_nc~4 - - +proc~set2~3->proc~compute_knot_vector + + program~example_bezier_curve - -example_bezier_curve + +example_bezier_curve - + -program~example_bezier_curve->proc~create~6 - - +program~example_bezier_curve->proc~create~2 + + - + -program~example_bezier_curve->proc~export_xc~6 - - +program~example_bezier_curve->proc~export_xc~2 + + - + -program~example_bezier_curve->proc~export_xg~6 - - +program~example_bezier_curve->proc~export_xg~2 + + - + -program~example_bezier_curve->proc~finalize~6 - - +program~example_bezier_curve->proc~finalize~2 + + - + -program~example_bezier_curve->proc~generate_xc~5 - - +program~example_bezier_curve->proc~generate_xc~2 + + - + -program~example_bezier_curve->proc~set~3 - - +program~example_bezier_curve->proc~set + + program~example_bezier_surface - -example_bezier_surface + +example_bezier_surface - + -program~example_bezier_surface->proc~create - - +program~example_bezier_surface->proc~create~6 + + - + -program~example_bezier_surface->proc~export_xc - - +program~example_bezier_surface->proc~export_xc~6 + + - + -program~example_bezier_surface->proc~export_xg - - +program~example_bezier_surface->proc~export_xg~6 + + - + -program~example_bezier_surface->proc~finalize - - +program~example_bezier_surface->proc~finalize~6 + + - + -program~example_bezier_surface->proc~generate_xc~3 - - +program~example_bezier_surface->proc~generate_xc + + - + -program~example_bezier_surface->proc~set - - +program~example_bezier_surface->proc~set~3 + + program~example_bezier_volume - -example_bezier_volume + +example_bezier_volume - + -program~example_bezier_volume->proc~create~5 - - +program~example_bezier_volume->proc~create~3 + + - + -program~example_bezier_volume->proc~export_xc~5 - - +program~example_bezier_volume->proc~export_xc~3 + + - + -program~example_bezier_volume->proc~export_xg~5 - - +program~example_bezier_volume->proc~export_xg~3 + + - + -program~example_bezier_volume->proc~finalize~5 - - +program~example_bezier_volume->proc~finalize~3 + + - + -program~example_bezier_volume->proc~generate_xc~2 - - +program~example_bezier_volume->proc~generate_xc~5 + + program~example_bezier_volume->proc~set~2 - - + + program~example_nurbs_curve - -example_nurbs_curve + +example_nurbs_curve - + -program~example_nurbs_curve->none~set~3 - - +program~example_nurbs_curve->none~set~5 + + - + -program~example_nurbs_curve->proc~create~3 - - +program~example_nurbs_curve->proc~create~5 + + - + -program~example_nurbs_curve->proc~export_xc~3 - - +program~example_nurbs_curve->proc~export_xc~5 + + - + -program~example_nurbs_curve->proc~export_xg~3 - - +program~example_nurbs_curve->proc~export_xg~5 + + - + -program~example_nurbs_curve->proc~finalize~3 - - +program~example_nurbs_curve->proc~finalize~5 + + program~example_nurbs_surface - -example_nurbs_surface + +example_nurbs_surface - + -program~example_nurbs_surface->none~set~2 - - +program~example_nurbs_surface->none~set~4 + + - + -program~example_nurbs_surface->proc~create~2 - - +program~example_nurbs_surface->proc~create~4 + + - + -program~example_nurbs_surface->proc~export_xc~2 - - +program~example_nurbs_surface->proc~export_xc~4 + + - + -program~example_nurbs_surface->proc~export_xg~2 - - +program~example_nurbs_surface->proc~export_xg~4 + + - + -program~example_nurbs_surface->proc~finalize~2 - - +program~example_nurbs_surface->proc~finalize~4 + + - + -program~example_nurbs_surface->proc~generate_xc - - +program~example_nurbs_surface->proc~generate_xc~4 + + program~example_nurbs_volume - -example_nurbs_volume + +example_nurbs_volume - + -program~example_nurbs_volume->none~set~4 - - +program~example_nurbs_volume->none~set + + - + -program~example_nurbs_volume->proc~create~4 - - +program~example_nurbs_volume->proc~create + + - + -program~example_nurbs_volume->proc~export_xc~4 - - +program~example_nurbs_volume->proc~export_xc + + - + -program~example_nurbs_volume->proc~export_xg~4 - - +program~example_nurbs_volume->proc~export_xg + + - + -program~example_nurbs_volume->proc~finalize~4 - - +program~example_nurbs_volume->proc~finalize + + - + -program~example_nurbs_volume->proc~generate_xc~4 - - +program~example_nurbs_volume->proc~generate_xc~3 + + @@ -2894,7 +2894,7 @@

Documentation generated by FORD - on 2024-04-01T17:32:09.529675

+ on 2024-04-01T18:34:28.480052


diff --git a/lists/programs.html b/lists/programs.html index d7dc34b75..3dfc40597 100644 --- a/lists/programs.html +++ b/lists/programs.html @@ -125,7 +125,7 @@

Programs

Documentation generated by FORD - on 2024-04-01T17:32:09.529675

+ on 2024-04-01T18:34:28.480052


diff --git a/lists/types.html b/lists/types.html index f18e7ed6b..b293d96d8 100644 --- a/lists/types.html +++ b/lists/types.html @@ -239,7 +239,7 @@

Documentation generated by FORD - on 2024-04-01T17:32:09.529675

+ on 2024-04-01T18:34:28.480052


diff --git a/module/forcad.html b/module/forcad.html index 177e6d99c..cb205c3fc 100644 --- a/module/forcad.html +++ b/module/forcad.html @@ -144,13 +144,13 @@

Uses

@@ -131,12 +131,6 @@

Contents

-
-

Source Code

-
- create -
-
@@ -144,13 +138,13 @@

Contents

-

private pure subroutine create(this, res1, res2, Xt1, Xt2) +

private pure subroutine create(this, res1, res2, res3, Xt1, Xt2, Xt3)

Type Bound

-

bezier_surface

+

nurbs_volume

Arguments

@@ -165,8 +159,8 @@

Arguments

+ + + + + + + + + + + + + + + + @@ -253,91 +277,91 @@

Calls

- + proc~~create~~CallsGraph - + proc~create - -forcad_bezier_surface::bezier_surface%create + +forcad_nurbs_volume::nurbs_volume%create interface~ndgrid - -forcad_utils::ndgrid + +forcad_utils::ndgrid proc~create->interface~ndgrid - - + + - + -proc~basis_bernstein - - -forcad_utils::basis_bernstein +proc~basis_bspline + + +forcad_utils::basis_bspline - + -proc~create->proc~basis_bernstein - - +proc~create->proc~basis_bspline + + proc~kron - -forcad_utils::kron + +forcad_utils::kron proc~create->proc~kron - - + + proc~ndgrid2 - -forcad_utils::ndgrid2 + +forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 - - + + proc~ndgrid3 - -forcad_utils::ndgrid3 + +forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 - - + + @@ -433,31 +457,31 @@

Called by

- + proc~~create~~CalledByGraph - + proc~create - -forcad_bezier_surface::bezier_surface%create + +forcad_nurbs_volume::nurbs_volume%create - + -program~example_bezier_surface - - -example_bezier_surface +program~example_nurbs_volume + + +example_nurbs_volume - + -program~example_bezier_surface->proc~create - - +program~example_nurbs_volume->proc~create + + @@ -554,81 +578,6 @@ -
-

Source Code

-
    pure subroutine create(this, res1, res2, Xt1, Xt2)
-        class(bezier_surface), intent(inout) :: this
-        integer, intent(in), optional :: res1, res2
-        real(rk), intent(in), optional :: Xt1(:), Xt2(:)
-        integer :: i, j
-        real(rk), dimension(:), allocatable :: Tgc1, Tgc2, Tgc
-        real(rk), dimension(:,:), allocatable :: Xt
-
-        ! check
-        if (.not.allocated(this%Xc)) then
-            error stop 'Control points are not set.'
-        end if
-
-
-        ! Set parameter values
-        if (present(Xt1)) then
-            if (allocated(this%Xt1)) deallocate(this%Xt1)
-            this%Xt1 = Xt1
-        elseif (present(res1)) then
-            if (allocated(this%Xt1)) deallocate(this%Xt1)
-            allocate(this%Xt1(res1))
-            this%Xt1 = [(real(i-1, rk) / real(res1-1, rk), i=1, res1)]
-            ! else
-            ! this%Xt1 = this%Xt1
-        end if
-
-        ! Set parameter values
-        if (present(Xt2)) then
-            if (allocated(this%Xt2)) deallocate(this%Xt2)
-            this%Xt2 = Xt2
-        elseif (present(res2)) then
-            if (allocated(this%Xt2)) deallocate(this%Xt2)
-            allocate(this%Xt2(res2))
-            this%Xt2 = [(real(i-1, rk) / real(res2-1, rk), i=1, res2)]
-            ! else
-            ! this%Xt2 = this%Xt2
-        end if
-
-
-        ! Set number of geometry points
-        this%ng(1) = size(this%Xt1,1)
-        this%ng(2) = size(this%Xt2,1)
-
-        call ndgrid(this%Xt1, this%Xt2, Xt)
-
-        if (allocated(this%Xg)) deallocate(this%Xg)
-        allocate(this%Xg(this%ng(1)*this%ng(2), size(this%Xc,2)))
-
-        if (allocated(this%Wc)) then ! Rational Bezier surface
-            do i = 1, size(Xt, 1)
-                Tgc1 = basis_bernstein(Xt(i,1), this%nc(1))
-                Tgc2 = basis_bernstein(Xt(i,2), this%nc(2))
-                Tgc = kron(Tgc2, Tgc1)
-                Tgc = Tgc*(this%Wc/(dot_product(Tgc,this%Wc)))
-                do j = 1, size(this%Xc, 2)
-                    this%Xg(i,j) = dot_product(Tgc,this%Xc(:,j))
-                end do
-            end do
-        else ! Non-rational Bezier surface
-            do i = 1, size(Xt, 1)
-                Tgc1 = basis_bernstein(Xt(i,1), this%nc(1))
-                Tgc2 = basis_bernstein(Xt(i,2), this%nc(2))
-                Tgc = kron(Tgc2, Tgc1)
-                do j = 1, size(this%Xc, 2)
-                    this%Xg(i,j) = dot_product(Tgc,this%Xc(:,j))
-                end do
-            end do
-        end if
-    end subroutine create
-
- -
-
@@ -645,7 +594,7 @@

Source Code

Documentation generated by FORD - on 2024-04-01T17:32:09.529675

+ on 2024-04-01T18:34:28.480052


diff --git a/proc/create~2.html b/proc/create~2.html index b23bfde44..a000069fe 100644 --- a/proc/create~2.html +++ b/proc/create~2.html @@ -79,20 +79,20 @@

create
  • 52 statements + title=" 1.9% of total for procedures.">37 statements
  • - Source File + Source File
  • -

    private pure subroutine create(this, res1, res2, Xt1, Xt2) +

    private pure subroutine create(this, res, Xt)

    +

    Generate geometry points of the Bezier curve.

    Type Bound

    -

    nurbs_surface

    +

    bezier_curve

    Arguments

    - - class(bezier_surface), + + class(nurbs_volume), intent(inout) @@ -208,6 +202,21 @@

    Arguments

    + + integer, + intent(in),optional + + ::res3 + +
    @@ -236,6 +245,21 @@

    Arguments

    Xt2(:) +
    + + real(kind=rk), + intent(in),optional + + ::Xt3(:) +
    @@ -159,8 +160,8 @@

    Arguments

    @@ -182,29 +183,14 @@

    Arguments

    - + - - - - - - - - @@ -212,22 +198,7 @@

    Arguments

    - - - - - - - - - + @@ -247,91 +218,31 @@

    Calls

    - - + + proc~~create~2~~CallsGraph - + proc~create~2 - -forcad_nurbs_surface::nurbs_surface%create + +forcad_bezier_curve::bezier_curve%create - + -interface~ndgrid - - -forcad_utils::ndgrid +proc~basis_bernstein + + +forcad_utils::basis_bernstein - + -proc~create~2->interface~ndgrid - - - - - -proc~basis_bspline - - -forcad_utils::basis_bspline - - - - - -proc~create~2->proc~basis_bspline - - - - - -proc~kron - - -forcad_utils::kron - - - - - -proc~create~2->proc~kron - - - - - -proc~ndgrid2 - - -forcad_utils::ndgrid2 - - - - - -interface~ndgrid->proc~ndgrid2 - - - - - -proc~ndgrid3 - - -forcad_utils::ndgrid3 - - - - - -interface~ndgrid->proc~ndgrid3 - - +proc~create~2->proc~basis_bernstein + + @@ -427,31 +338,46 @@

    Called by

    - - + + proc~~create~2~~CalledByGraph - + proc~create~2 - -forcad_nurbs_surface::nurbs_surface%create + +forcad_bezier_curve::bezier_curve%create - + -program~example_nurbs_surface - - -example_nurbs_surface +proc~elevate_degree + + +forcad_bezier_curve::bezier_curve%elevate_degree - + -program~example_nurbs_surface->proc~create~2 - - +proc~elevate_degree->proc~create~2 + + + + + +program~example_bezier_curve + + +example_bezier_curve + + + + + +program~example_bezier_curve->proc~create~2 + + @@ -564,7 +490,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/create~3.html b/proc/create~3.html index 7c4318d4a..8bd7666c9 100644 --- a/proc/create~3.html +++ b/proc/create~3.html @@ -79,20 +79,20 @@

    create
  • 37 statements + title=" 3.2% of total for procedures.">63 statements
  • - Source File + Source File
  • -

    private pure subroutine create(this, res, Xt) +

    private pure subroutine create(this, res1, res2, res3, Xt1, Xt2, Xt3)

    Type Bound

    -

    nurbs_curve

    +

    bezier_volume

    Arguments

    - - class(nurbs_surface), + + class(bezier_curve), intent(inout) @@ -174,7 +175,7 @@

    Arguments

    - + integer, intent(in), ::res1res
    - - integer, - intent(in),optional - - ::res2 - -
    - + real(kind=rk), intent(in), ::Xt1(:) - -
    - - real(kind=rk), - intent(in),optional - - ::Xt2(:)Xt(:)
    @@ -160,7 +160,7 @@

    Arguments

    @@ -182,14 +182,74 @@

    Arguments

    - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -197,7 +257,7 @@

    Arguments

    - + @@ -217,31 +277,91 @@

    Calls

    - - + + proc~~create~3~~CallsGraph - + proc~create~3 - -forcad_nurbs_curve::nurbs_curve%create + +forcad_bezier_volume::bezier_volume%create - + -proc~basis_bspline - - -forcad_utils::basis_bspline +interface~ndgrid + + +forcad_utils::ndgrid - + -proc~create~3->proc~basis_bspline - - +proc~create~3->interface~ndgrid + + + + + +proc~basis_bernstein + + +forcad_utils::basis_bernstein + + + + + +proc~create~3->proc~basis_bernstein + + + + + +proc~kron + + +forcad_utils::kron + + + + + +proc~create~3->proc~kron + + + + + +proc~ndgrid2 + + +forcad_utils::ndgrid2 + + + + + +interface~ndgrid->proc~ndgrid2 + + + + + +proc~ndgrid3 + + +forcad_utils::ndgrid3 + + + + + +interface~ndgrid->proc~ndgrid3 + + @@ -337,31 +457,31 @@

    Called by

    - + proc~~create~3~~CalledByGraph - + proc~create~3 - -forcad_nurbs_curve::nurbs_curve%create + +forcad_bezier_volume::bezier_volume%create - + -program~example_nurbs_curve - - -example_nurbs_curve +program~example_bezier_volume + + +example_bezier_volume - + -program~example_nurbs_curve->proc~create~3 - - +program~example_bezier_volume->proc~create~3 + + @@ -474,7 +594,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/create~4.html b/proc/create~4.html index 387ed6fca..16d6ba176 100644 --- a/proc/create~4.html +++ b/proc/create~4.html @@ -79,20 +79,20 @@

    create
  • 63 statements + title=" 2.6% of total for procedures.">52 statements
  • - Source File + Source File
  • -

    private pure subroutine create(this, res1, res2, res3, Xt1, Xt2, Xt3) +

    private pure subroutine create(this, res1, res2, Xt1, Xt2)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_surface

    Arguments

    - class(nurbs_curve), + class(bezier_volume), intent(inout) @@ -174,7 +174,7 @@

    Arguments

    - + integer, intent(in), ::resres1
    - + + integer, + intent(in),optional + + ::res2 + +
    + + integer, + intent(in),optional + + ::res3 + +
    + + real(kind=rk), + intent(in),optional + + ::Xt1(:) + +
    + + real(kind=rk), + intent(in),optional + + ::Xt2(:) + +
    + real(kind=rk), intent(in), ::Xt(:)Xt3(:)
    @@ -159,8 +159,8 @@

    Arguments

    - - - - - - - - - - - - - - - - @@ -286,7 +256,7 @@

    Calls

    proc~create~4 -forcad_nurbs_volume::nurbs_volume%create +forcad_nurbs_surface::nurbs_surface%create @@ -466,20 +436,20 @@

    Called by

    proc~create~4 -forcad_nurbs_volume::nurbs_volume%create +forcad_nurbs_surface::nurbs_surface%create - + -program~example_nurbs_volume - +program~example_nurbs_surface + -example_nurbs_volume +example_nurbs_surface - + -program~example_nurbs_volume->proc~create~4 +program~example_nurbs_surface->proc~create~4 @@ -594,7 +564,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/create~5.html b/proc/create~5.html index 599c5989a..d526ed19f 100644 --- a/proc/create~5.html +++ b/proc/create~5.html @@ -79,20 +79,20 @@

    create
  • 63 statements + title=" 1.9% of total for procedures.">37 statements
  • - Source File + Source File
  • -

    private pure subroutine create(this, res1, res2, res3, Xt1, Xt2, Xt3) +

    private pure subroutine create(this, res, Xt)

    Type Bound

    -

    bezier_volume

    +

    nurbs_curve

    Arguments

    - - class(nurbs_volume), + + class(nurbs_surface), intent(inout) @@ -202,21 +202,6 @@

    Arguments

    - - integer, - intent(in),optional - - ::res3 - -
    @@ -245,21 +230,6 @@

    Arguments

    Xt2(:) -
    - - real(kind=rk), - intent(in),optional - - ::Xt3(:) -
    @@ -159,8 +159,8 @@

    Arguments

    @@ -182,74 +182,14 @@

    Arguments

    - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -257,7 +197,7 @@

    Arguments

    - + @@ -277,91 +217,31 @@

    Calls

    - - + + proc~~create~5~~CallsGraph - + proc~create~5 - -forcad_bezier_volume::bezier_volume%create + +forcad_nurbs_curve::nurbs_curve%create - + -interface~ndgrid - - -forcad_utils::ndgrid +proc~basis_bspline + + +forcad_utils::basis_bspline - + -proc~create~5->interface~ndgrid - - - - - -proc~basis_bernstein - - -forcad_utils::basis_bernstein - - - - - -proc~create~5->proc~basis_bernstein - - - - - -proc~kron - - -forcad_utils::kron - - - - - -proc~create~5->proc~kron - - - - - -proc~ndgrid2 - - -forcad_utils::ndgrid2 - - - - - -interface~ndgrid->proc~ndgrid2 - - - - - -proc~ndgrid3 - - -forcad_utils::ndgrid3 - - - - - -interface~ndgrid->proc~ndgrid3 - - +proc~create~5->proc~basis_bspline + + @@ -457,31 +337,31 @@

    Called by

    - + proc~~create~5~~CalledByGraph - + proc~create~5 - -forcad_bezier_volume::bezier_volume%create + +forcad_nurbs_curve::nurbs_curve%create - + -program~example_bezier_volume - - -example_bezier_volume +program~example_nurbs_curve + + +example_nurbs_curve - + -program~example_bezier_volume->proc~create~5 - - +program~example_nurbs_curve->proc~create~5 + + @@ -594,7 +474,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/create~6.html b/proc/create~6.html index 0020e0012..bad832cc4 100644 --- a/proc/create~6.html +++ b/proc/create~6.html @@ -79,20 +79,20 @@

    create
  • 37 statements + title=" 2.6% of total for procedures.">52 statements
  • - Source File + Source File
  • @@ -131,6 +131,12 @@

    Contents

    +
    +

    Source Code

    +
    + create +
    +
    @@ -138,14 +144,13 @@

    Contents

    -

    private pure subroutine create(this, res, Xt) +

    private pure subroutine create(this, res1, res2, Xt1, Xt2)

    -

    Generate geometry points of the Bezier curve.

    Type Bound

    -

    bezier_curve

    +

    bezier_surface

    Arguments

    - - class(bezier_volume), + + class(nurbs_curve), intent(inout) @@ -174,7 +174,7 @@

    Arguments

    - + integer, intent(in), ::res1res
    - - integer, - intent(in),optional - - ::res2 - -
    - - integer, - intent(in),optional - - ::res3 - -
    - - real(kind=rk), - intent(in),optional - - ::Xt1(:) - -
    - - real(kind=rk), - intent(in),optional - - ::Xt2(:) - -
    - + real(kind=rk), intent(in), ::Xt3(:)Xt(:)
    @@ -160,8 +165,8 @@

    Arguments

    + + + + + + + + @@ -183,14 +203,14 @@

    Arguments

    - + @@ -198,7 +218,22 @@

    Arguments

    - + + + + + + + + + @@ -218,31 +253,91 @@

    Calls

    - - + + proc~~create~6~~CallsGraph - + proc~create~6 - -forcad_bezier_curve::bezier_curve%create + +forcad_bezier_surface::bezier_surface%create - + +interface~ndgrid + + +forcad_utils::ndgrid + + + + + +proc~create~6->interface~ndgrid + + + + + proc~basis_bernstein - - -forcad_utils::basis_bernstein + + +forcad_utils::basis_bernstein - + proc~create~6->proc~basis_bernstein - - + + + + + +proc~kron + + +forcad_utils::kron + + + + + +proc~create~6->proc~kron + + + + + +proc~ndgrid2 + + +forcad_utils::ndgrid2 + + + + + +interface~ndgrid->proc~ndgrid2 + + + + + +proc~ndgrid3 + + +forcad_utils::ndgrid3 + + + + + +interface~ndgrid->proc~ndgrid3 + + @@ -338,46 +433,31 @@

    Called by

    - - + + proc~~create~6~~CalledByGraph - + proc~create~6 - -forcad_bezier_curve::bezier_curve%create + +forcad_bezier_surface::bezier_surface%create - + -proc~elevate_degree - - -forcad_bezier_curve::bezier_curve%elevate_degree +program~example_bezier_surface + + +example_bezier_surface - + -proc~elevate_degree->proc~create~6 - - - - - -program~example_bezier_curve - - -example_bezier_curve - - - - - -program~example_bezier_curve->proc~create~6 - - +program~example_bezier_surface->proc~create~6 + + @@ -474,6 +554,81 @@ +
    +

    Source Code

    +
        pure subroutine create(this, res1, res2, Xt1, Xt2)
    +        class(bezier_surface), intent(inout) :: this
    +        integer, intent(in), optional :: res1, res2
    +        real(rk), intent(in), optional :: Xt1(:), Xt2(:)
    +        integer :: i, j
    +        real(rk), dimension(:), allocatable :: Tgc1, Tgc2, Tgc
    +        real(rk), dimension(:,:), allocatable :: Xt
    +
    +        ! check
    +        if (.not.allocated(this%Xc)) then
    +            error stop 'Control points are not set.'
    +        end if
    +
    +
    +        ! Set parameter values
    +        if (present(Xt1)) then
    +            if (allocated(this%Xt1)) deallocate(this%Xt1)
    +            this%Xt1 = Xt1
    +        elseif (present(res1)) then
    +            if (allocated(this%Xt1)) deallocate(this%Xt1)
    +            allocate(this%Xt1(res1))
    +            this%Xt1 = [(real(i-1, rk) / real(res1-1, rk), i=1, res1)]
    +            ! else
    +            ! this%Xt1 = this%Xt1
    +        end if
    +
    +        ! Set parameter values
    +        if (present(Xt2)) then
    +            if (allocated(this%Xt2)) deallocate(this%Xt2)
    +            this%Xt2 = Xt2
    +        elseif (present(res2)) then
    +            if (allocated(this%Xt2)) deallocate(this%Xt2)
    +            allocate(this%Xt2(res2))
    +            this%Xt2 = [(real(i-1, rk) / real(res2-1, rk), i=1, res2)]
    +            ! else
    +            ! this%Xt2 = this%Xt2
    +        end if
    +
    +
    +        ! Set number of geometry points
    +        this%ng(1) = size(this%Xt1,1)
    +        this%ng(2) = size(this%Xt2,1)
    +
    +        call ndgrid(this%Xt1, this%Xt2, Xt)
    +
    +        if (allocated(this%Xg)) deallocate(this%Xg)
    +        allocate(this%Xg(this%ng(1)*this%ng(2), size(this%Xc,2)))
    +
    +        if (allocated(this%Wc)) then ! Rational Bezier surface
    +            do i = 1, size(Xt, 1)
    +                Tgc1 = basis_bernstein(Xt(i,1), this%nc(1))
    +                Tgc2 = basis_bernstein(Xt(i,2), this%nc(2))
    +                Tgc = kron(Tgc2, Tgc1)
    +                Tgc = Tgc*(this%Wc/(dot_product(Tgc,this%Wc)))
    +                do j = 1, size(this%Xc, 2)
    +                    this%Xg(i,j) = dot_product(Tgc,this%Xc(:,j))
    +                end do
    +            end do
    +        else ! Non-rational Bezier surface
    +            do i = 1, size(Xt, 1)
    +                Tgc1 = basis_bernstein(Xt(i,1), this%nc(1))
    +                Tgc2 = basis_bernstein(Xt(i,2), this%nc(2))
    +                Tgc = kron(Tgc2, Tgc1)
    +                do j = 1, size(this%Xc, 2)
    +                    this%Xg(i,j) = dot_product(Tgc,this%Xc(:,j))
    +                end do
    +            end do
    +        end if
    +    end subroutine create
    +
    + +
    +
    @@ -490,7 +645,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/elevate_degree.html b/proc/elevate_degree.html index f5d4f611d..8c28576e1 100644 --- a/proc/elevate_degree.html +++ b/proc/elevate_degree.html @@ -160,7 +160,7 @@

    Arguments

    @@ -199,33 +199,33 @@

    Calls

    forcad_bezier_curve::bezier_curve%elevate_degree - + -proc~create~6 - +proc~create~2 + forcad_bezier_curve::bezier_curve%create - + -proc~elevate_degree->proc~create~6 +proc~elevate_degree->proc~create~2 - + -proc~set~3 - +proc~set + forcad_bezier_curve::bezier_curve%set - + -proc~elevate_degree->proc~set~3 +proc~elevate_degree->proc~set @@ -238,9 +238,9 @@

    Calls

    - + -proc~create~6->proc~basis_bernstein +proc~create~2->proc~basis_bernstein @@ -359,7 +359,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/export_xc.html b/proc/export_xc.html index b2bdc23ab..0527ad2f2 100644 --- a/proc/export_xc.html +++ b/proc/export_xc.html @@ -84,15 +84,15 @@

    export_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private impure subroutine export_Xc(this, filename)

    Type Bound

    -

    bezier_surface

    +

    nurbs_volume

    Arguments

    - - class(bezier_curve), + + class(bezier_surface), intent(inout) @@ -175,7 +180,22 @@

    Arguments

    - + + integer, + intent(in),optional + + ::res1 + +
    + integer, intent(in), ::resres2
    - + real(kind=rk), intent(in), ::Xt(:)Xt1(:) + +
    + + real(kind=rk), + intent(in),optional + + ::Xt2(:)
    - + class(bezier_curve), intent(inout)
    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_surface), + + class(nurbs_volume), intent(in) @@ -202,91 +202,91 @@

    Calls

    - - + + proc~~export_xc~~CallsGraph - + proc~export_xc - -forcad_bezier_surface::bezier_surface%export_Xc + +forcad_nurbs_volume::nurbs_volume%export_Xc proc~get_elem_xc - - -forcad_bezier_surface::bezier_surface%get_elem_Xc + + +forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~export_xc->proc~get_elem_xc - - + + interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xc->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -386,31 +386,31 @@

    Called by

    - + proc~~export_xc~~CalledByGraph - + proc~export_xc - -forcad_bezier_surface::bezier_surface%export_Xc + +forcad_nurbs_volume::nurbs_volume%export_Xc - + -program~example_bezier_surface - - -example_bezier_surface +program~example_nurbs_volume + + +example_nurbs_volume - + -program~example_bezier_surface->proc~export_xc - - +program~example_nurbs_volume->proc~export_xc + + @@ -523,7 +523,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/export_xc~2.html b/proc/export_xc~2.html index e19c32e21..4af8f4ca5 100644 --- a/proc/export_xc~2.html +++ b/proc/export_xc~2.html @@ -84,15 +84,15 @@

    export_Xc
  • - Source File + Source File
  • @@ -142,9 +142,10 @@

    private impure subroutine export_Xc(this, filename)

    +

    Export control points to a VTK file.

    Type Bound

    -

    nurbs_surface

    +

    bezier_curve

    Arguments

    @@ -159,8 +160,8 @@

    Arguments

    - - class(nurbs_surface), + + class(bezier_curve), intent(in) @@ -202,91 +203,91 @@

    Calls

    - - + + proc~~export_xc~2~~CallsGraph - + proc~export_xc~2 - -forcad_nurbs_surface::nurbs_surface%export_Xc + +forcad_bezier_curve::bezier_curve%export_Xc proc~get_elem_xc~2 - - -forcad_nurbs_surface::nurbs_surface%get_elem_Xc + + +forcad_bezier_curve::bezier_curve%get_elem_Xc proc~export_xc~2->proc~get_elem_xc~2 - - + + interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xc~2->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -386,31 +387,31 @@

    Called by

    - + proc~~export_xc~2~~CalledByGraph - + proc~export_xc~2 - -forcad_nurbs_surface::nurbs_surface%export_Xc + +forcad_bezier_curve::bezier_curve%export_Xc - + -program~example_nurbs_surface - - -example_nurbs_surface +program~example_bezier_curve + + +example_bezier_curve - + -program~example_nurbs_surface->proc~export_xc~2 - - +program~example_bezier_curve->proc~export_xc~2 + + @@ -523,7 +524,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/export_xc~3.html b/proc/export_xc~3.html index cc1ae7713..af10e783a 100644 --- a/proc/export_xc~3.html +++ b/proc/export_xc~3.html @@ -84,15 +84,15 @@

    export_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private impure subroutine export_Xc(this, filename)

    Type Bound

    -

    nurbs_curve

    +

    bezier_volume

    Arguments

    @@ -160,7 +160,7 @@

    Arguments

    - class(nurbs_curve), + class(bezier_volume), intent(in) @@ -202,91 +202,91 @@

    Calls

    - - + + proc~~export_xc~3~~CallsGraph - + proc~export_xc~3 - -forcad_nurbs_curve::nurbs_curve%export_Xc + +forcad_bezier_volume::bezier_volume%export_Xc proc~get_elem_xc~3 - - -forcad_nurbs_curve::nurbs_curve%get_elem_Xc + + +forcad_bezier_volume::bezier_volume%get_elem_Xc proc~export_xc~3->proc~get_elem_xc~3 - - + + interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xc~3->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -386,31 +386,31 @@

    Called by

    - + proc~~export_xc~3~~CalledByGraph - + proc~export_xc~3 - -forcad_nurbs_curve::nurbs_curve%export_Xc + +forcad_bezier_volume::bezier_volume%export_Xc - + -program~example_nurbs_curve - - -example_nurbs_curve +program~example_bezier_volume + + +example_bezier_volume - + -program~example_nurbs_curve->proc~export_xc~3 - - +program~example_bezier_volume->proc~export_xc~3 + + @@ -523,7 +523,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/export_xc~4.html b/proc/export_xc~4.html index 49169c356..7886972b9 100644 --- a/proc/export_xc~4.html +++ b/proc/export_xc~4.html @@ -84,15 +84,15 @@

    export_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private impure subroutine export_Xc(this, filename)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_volume), + + class(nurbs_surface), intent(in) @@ -211,14 +211,14 @@

    Calls

    proc~export_xc~4 -forcad_nurbs_volume::nurbs_volume%export_Xc +forcad_nurbs_surface::nurbs_surface%export_Xc proc~get_elem_xc~4 - + -forcad_nurbs_volume::nurbs_volume%get_elem_Xc +forcad_nurbs_surface::nurbs_surface%get_elem_Xc @@ -395,20 +395,20 @@

    Called by

    proc~export_xc~4 -forcad_nurbs_volume::nurbs_volume%export_Xc +forcad_nurbs_surface::nurbs_surface%export_Xc - + -program~example_nurbs_volume - +program~example_nurbs_surface + -example_nurbs_volume +example_nurbs_surface - + -program~example_nurbs_volume->proc~export_xc~4 +program~example_nurbs_surface->proc~export_xc~4 @@ -523,7 +523,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/export_xc~5.html b/proc/export_xc~5.html index c673aac10..d1ead9876 100644 --- a/proc/export_xc~5.html +++ b/proc/export_xc~5.html @@ -84,15 +84,15 @@

    export_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private impure subroutine export_Xc(this, filename)

    Type Bound

    -

    bezier_volume

    +

    nurbs_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_volume), + + class(nurbs_curve), intent(in) @@ -202,91 +202,91 @@

    Calls

    - - + + proc~~export_xc~5~~CallsGraph - + proc~export_xc~5 - -forcad_bezier_volume::bezier_volume%export_Xc + +forcad_nurbs_curve::nurbs_curve%export_Xc proc~get_elem_xc~5 - - -forcad_bezier_volume::bezier_volume%get_elem_Xc + + +forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~export_xc~5->proc~get_elem_xc~5 - - + + interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xc~5->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -386,31 +386,31 @@

    Called by

    - + proc~~export_xc~5~~CalledByGraph - + proc~export_xc~5 - -forcad_bezier_volume::bezier_volume%export_Xc + +forcad_nurbs_curve::nurbs_curve%export_Xc - + -program~example_bezier_volume - - -example_bezier_volume +program~example_nurbs_curve + + +example_nurbs_curve - + -program~example_bezier_volume->proc~export_xc~5 - - +program~example_nurbs_curve->proc~export_xc~5 + + @@ -523,7 +523,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/export_xc~6.html b/proc/export_xc~6.html index 9976341f0..968e1e020 100644 --- a/proc/export_xc~6.html +++ b/proc/export_xc~6.html @@ -84,15 +84,15 @@

    export_Xc
  • - Source File + Source File
  • @@ -142,10 +142,9 @@

    private impure subroutine export_Xc(this, filename)

    -

    Export control points to a VTK file.

    Type Bound

    -

    bezier_curve

    +

    bezier_surface

    Arguments

    @@ -160,8 +159,8 @@

    Arguments

    - - class(bezier_curve), + + class(bezier_surface), intent(in) @@ -203,91 +202,91 @@

    Calls

    - - + + proc~~export_xc~6~~CallsGraph - + proc~export_xc~6 - -forcad_bezier_curve::bezier_curve%export_Xc + +forcad_bezier_surface::bezier_surface%export_Xc proc~get_elem_xc~6 - - -forcad_bezier_curve::bezier_curve%get_elem_Xc + + +forcad_bezier_surface::bezier_surface%get_elem_Xc proc~export_xc~6->proc~get_elem_xc~6 - - + + interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xc~6->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -387,31 +386,31 @@

    Called by

    - + proc~~export_xc~6~~CalledByGraph - + proc~export_xc~6 - -forcad_bezier_curve::bezier_curve%export_Xc + +forcad_bezier_surface::bezier_surface%export_Xc - + -program~example_bezier_curve - - -example_bezier_curve +program~example_bezier_surface + + +example_bezier_surface - + -program~example_bezier_curve->proc~export_xc~6 - - +program~example_bezier_surface->proc~export_xc~6 + + @@ -524,7 +523,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/export_xg.html b/proc/export_xg.html index 0026e65c8..2c09362fe 100644 --- a/proc/export_xg.html +++ b/proc/export_xg.html @@ -84,15 +84,15 @@

    export_Xg
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private impure subroutine export_Xg(this, filename)

    Type Bound

    -

    bezier_surface

    +

    nurbs_volume

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_surface), + + class(nurbs_volume), intent(in) @@ -203,90 +203,90 @@

    Calls

    --> - + viewBox="0.00 0.00 641.00 72.40" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + proc~~export_xg~~CallsGraph - + proc~export_xg - -forcad_bezier_surface::bezier_surface%export_Xg + +forcad_nurbs_volume::nurbs_volume%export_Xg proc~get_elem_xg - - -forcad_bezier_surface::bezier_surface%get_elem_Xg + + +forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~export_xg->proc~get_elem_xg - - + + interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xg->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -386,31 +386,31 @@

    Called by

    - + proc~~export_xg~~CalledByGraph - + proc~export_xg - -forcad_bezier_surface::bezier_surface%export_Xg + +forcad_nurbs_volume::nurbs_volume%export_Xg - + -program~example_bezier_surface - - -example_bezier_surface +program~example_nurbs_volume + + +example_nurbs_volume - + -program~example_bezier_surface->proc~export_xg - - +program~example_nurbs_volume->proc~export_xg + + @@ -523,7 +523,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/export_xg~2.html b/proc/export_xg~2.html index 028eb625a..1af84fb1e 100644 --- a/proc/export_xg~2.html +++ b/proc/export_xg~2.html @@ -84,15 +84,15 @@

    export_Xg
  • - Source File + Source File
  • @@ -142,9 +142,10 @@

    private impure subroutine export_Xg(this, filename)

    +

    Export geometry points to a VTK file.

    Type Bound

    -

    nurbs_surface

    +

    bezier_curve

    Arguments

    @@ -159,8 +160,8 @@

    Arguments

    - - class(nurbs_surface), + + class(bezier_curve), intent(in) @@ -202,91 +203,91 @@

    Calls

    - - + + proc~~export_xg~2~~CallsGraph - + proc~export_xg~2 - -forcad_nurbs_surface::nurbs_surface%export_Xg + +forcad_bezier_curve::bezier_curve%export_Xg proc~get_elem_xg~2 - - -forcad_nurbs_surface::nurbs_surface%get_elem_Xg + + +forcad_bezier_curve::bezier_curve%get_elem_Xg proc~export_xg~2->proc~get_elem_xg~2 - - + + interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xg~2->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -386,31 +387,31 @@

    Called by

    - + proc~~export_xg~2~~CalledByGraph - + proc~export_xg~2 - -forcad_nurbs_surface::nurbs_surface%export_Xg + +forcad_bezier_curve::bezier_curve%export_Xg - + -program~example_nurbs_surface - - -example_nurbs_surface +program~example_bezier_curve + + +example_bezier_curve - + -program~example_nurbs_surface->proc~export_xg~2 - - +program~example_bezier_curve->proc~export_xg~2 + + @@ -523,7 +524,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/export_xg~3.html b/proc/export_xg~3.html index b0035b3f8..50d4a8742 100644 --- a/proc/export_xg~3.html +++ b/proc/export_xg~3.html @@ -84,15 +84,15 @@

    export_Xg
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private impure subroutine export_Xg(this, filename)

    Type Bound

    -

    nurbs_curve

    +

    bezier_volume

    Arguments

    @@ -160,7 +160,7 @@

    Arguments

    - class(nurbs_curve), + class(bezier_volume), intent(in) @@ -202,91 +202,91 @@

    Calls

    - - + + proc~~export_xg~3~~CallsGraph - + proc~export_xg~3 - -forcad_nurbs_curve::nurbs_curve%export_Xg + +forcad_bezier_volume::bezier_volume%export_Xg proc~get_elem_xg~3 - - -forcad_nurbs_curve::nurbs_curve%get_elem_Xg + + +forcad_bezier_volume::bezier_volume%get_elem_Xg proc~export_xg~3->proc~get_elem_xg~3 - - + + interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xg~3->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -386,31 +386,31 @@

    Called by

    - + proc~~export_xg~3~~CalledByGraph - + proc~export_xg~3 - -forcad_nurbs_curve::nurbs_curve%export_Xg + +forcad_bezier_volume::bezier_volume%export_Xg - + -program~example_nurbs_curve - - -example_nurbs_curve +program~example_bezier_volume + + +example_bezier_volume - + -program~example_nurbs_curve->proc~export_xg~3 - - +program~example_bezier_volume->proc~export_xg~3 + + @@ -523,7 +523,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/export_xg~4.html b/proc/export_xg~4.html index 7eaab2ca1..953186b7d 100644 --- a/proc/export_xg~4.html +++ b/proc/export_xg~4.html @@ -84,15 +84,15 @@

    export_Xg
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private impure subroutine export_Xg(this, filename)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_volume), + + class(nurbs_surface), intent(in) @@ -211,14 +211,14 @@

    Calls

    proc~export_xg~4 -forcad_nurbs_volume::nurbs_volume%export_Xg +forcad_nurbs_surface::nurbs_surface%export_Xg proc~get_elem_xg~4 - + -forcad_nurbs_volume::nurbs_volume%get_elem_Xg +forcad_nurbs_surface::nurbs_surface%get_elem_Xg @@ -395,20 +395,20 @@

    Called by

    proc~export_xg~4 -forcad_nurbs_volume::nurbs_volume%export_Xg +forcad_nurbs_surface::nurbs_surface%export_Xg - + -program~example_nurbs_volume - +program~example_nurbs_surface + -example_nurbs_volume +example_nurbs_surface - + -program~example_nurbs_volume->proc~export_xg~4 +program~example_nurbs_surface->proc~export_xg~4 @@ -523,7 +523,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/export_xg~5.html b/proc/export_xg~5.html index 436c84fd6..27e79684d 100644 --- a/proc/export_xg~5.html +++ b/proc/export_xg~5.html @@ -84,15 +84,15 @@

    export_Xg
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private impure subroutine export_Xg(this, filename)

    Type Bound

    -

    bezier_volume

    +

    nurbs_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_volume), + + class(nurbs_curve), intent(in) @@ -202,91 +202,91 @@

    Calls

    - - + + proc~~export_xg~5~~CallsGraph - + proc~export_xg~5 - -forcad_bezier_volume::bezier_volume%export_Xg + +forcad_nurbs_curve::nurbs_curve%export_Xg proc~get_elem_xg~5 - - -forcad_bezier_volume::bezier_volume%get_elem_Xg + + +forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~export_xg~5->proc~get_elem_xg~5 - - + + interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xg~5->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -386,31 +386,31 @@

    Called by

    - + proc~~export_xg~5~~CalledByGraph - + proc~export_xg~5 - -forcad_bezier_volume::bezier_volume%export_Xg + +forcad_nurbs_curve::nurbs_curve%export_Xg - + -program~example_bezier_volume - - -example_bezier_volume +program~example_nurbs_curve + + +example_nurbs_curve - + -program~example_bezier_volume->proc~export_xg~5 - - +program~example_nurbs_curve->proc~export_xg~5 + + @@ -523,7 +523,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/export_xg~6.html b/proc/export_xg~6.html index f96a7a48d..bc51770a6 100644 --- a/proc/export_xg~6.html +++ b/proc/export_xg~6.html @@ -84,15 +84,15 @@

    export_Xg
  • - Source File + Source File
  • @@ -142,10 +142,9 @@

    private impure subroutine export_Xg(this, filename)

    -

    Export geometry points to a VTK file.

    Type Bound

    -

    bezier_curve

    +

    bezier_surface

    Arguments

    @@ -160,8 +159,8 @@

    Arguments

    - - class(bezier_curve), + + class(bezier_surface), intent(in) @@ -203,91 +202,91 @@

    Calls

    - - + + proc~~export_xg~6~~CallsGraph - + proc~export_xg~6 - -forcad_bezier_curve::bezier_curve%export_Xg + +forcad_bezier_surface::bezier_surface%export_Xg proc~get_elem_xg~6 - - -forcad_bezier_curve::bezier_curve%get_elem_Xg + + +forcad_bezier_surface::bezier_surface%get_elem_Xg proc~export_xg~6->proc~get_elem_xg~6 - - + + interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xg~6->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -387,31 +386,31 @@

    Called by

    - + proc~~export_xg~6~~CalledByGraph - + proc~export_xg~6 - -forcad_bezier_curve::bezier_curve%export_Xg + +forcad_bezier_surface::bezier_surface%export_Xg - + -program~example_bezier_curve - - -example_bezier_curve +program~example_bezier_surface + + +example_bezier_surface - + -program~example_bezier_curve->proc~export_xg~6 - - +program~example_bezier_surface->proc~export_xg~6 + + @@ -524,7 +523,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/finalize.html b/proc/finalize.html index 296bb13fc..3317407d8 100644 --- a/proc/finalize.html +++ b/proc/finalize.html @@ -79,20 +79,20 @@

    finalize
  • 8 statements + title=" 0.6% of total for procedures.">12 statements
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine finalize(this)

    Type Bound

    -

    bezier_surface

    +

    nurbs_volume

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_surface), + + class(nurbs_volume), intent(inout) @@ -187,31 +187,31 @@

    Called by

    - + proc~~finalize~~CalledByGraph - + proc~finalize - -forcad_bezier_surface::bezier_surface%finalize + +forcad_nurbs_volume::nurbs_volume%finalize - + -program~example_bezier_surface - - -example_bezier_surface +program~example_nurbs_volume + + +example_nurbs_volume - + -program~example_bezier_surface->proc~finalize - - +program~example_nurbs_volume->proc~finalize + + @@ -324,7 +324,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/finalize~2.html b/proc/finalize~2.html index 7587d1653..b49d04d42 100644 --- a/proc/finalize~2.html +++ b/proc/finalize~2.html @@ -79,20 +79,20 @@

    finalize
  • 10 statements + title=" 0.4% of total for procedures.">7 statements
  • - Source File + Source File
  • @@ -142,9 +142,10 @@

    private pure subroutine finalize(this)

    +

    Finalize the Bezier curve object by deallocating memory.

    Type Bound

    -

    nurbs_surface

    +

    bezier_curve

    Arguments

    @@ -159,8 +160,8 @@

    Arguments

    - - class(nurbs_surface), + + class(bezier_curve), intent(inout) @@ -187,31 +188,31 @@

    Called by

    - + proc~~finalize~2~~CalledByGraph - + proc~finalize~2 - -forcad_nurbs_surface::nurbs_surface%finalize + +forcad_bezier_curve::bezier_curve%finalize - + -program~example_nurbs_surface - - -example_nurbs_surface +program~example_bezier_curve + + +example_bezier_curve - + -program~example_nurbs_surface->proc~finalize~2 - - +program~example_bezier_curve->proc~finalize~2 + + @@ -324,7 +325,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/finalize~3.html b/proc/finalize~3.html index 355407f25..9693f8d12 100644 --- a/proc/finalize~3.html +++ b/proc/finalize~3.html @@ -79,20 +79,20 @@

    finalize
  • 8 statements + title=" 0.5% of total for procedures.">9 statements
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine finalize(this)

    Type Bound

    -

    nurbs_curve

    +

    bezier_volume

    Arguments

    @@ -160,7 +160,7 @@

    Arguments

    - class(nurbs_curve), + class(bezier_volume), intent(inout) @@ -187,31 +187,31 @@

    Called by

    - + proc~~finalize~3~~CalledByGraph - + proc~finalize~3 - -forcad_nurbs_curve::nurbs_curve%finalize + +forcad_bezier_volume::bezier_volume%finalize - + -program~example_nurbs_curve - - -example_nurbs_curve +program~example_bezier_volume + + +example_bezier_volume - + -program~example_nurbs_curve->proc~finalize~3 - - +program~example_bezier_volume->proc~finalize~3 + + @@ -324,7 +324,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/finalize~4.html b/proc/finalize~4.html index e3dee7d6b..3e9ea34c1 100644 --- a/proc/finalize~4.html +++ b/proc/finalize~4.html @@ -79,20 +79,20 @@

    finalize
  • 12 statements + title=" 0.5% of total for procedures.">10 statements
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine finalize(this)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_volume), + + class(nurbs_surface), intent(inout) @@ -196,20 +196,20 @@

    Called by

    proc~finalize~4 -forcad_nurbs_volume::nurbs_volume%finalize +forcad_nurbs_surface::nurbs_surface%finalize - + -program~example_nurbs_volume - +program~example_nurbs_surface + -example_nurbs_volume +example_nurbs_surface - + -program~example_nurbs_volume->proc~finalize~4 +program~example_nurbs_surface->proc~finalize~4 @@ -324,7 +324,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/finalize~5.html b/proc/finalize~5.html index cc388f5d8..9c5e542d8 100644 --- a/proc/finalize~5.html +++ b/proc/finalize~5.html @@ -79,20 +79,20 @@

    finalize
  • 9 statements + title=" 0.4% of total for procedures.">8 statements
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine finalize(this)

    Type Bound

    -

    bezier_volume

    +

    nurbs_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_volume), + + class(nurbs_curve), intent(inout) @@ -187,31 +187,31 @@

    Called by

    - + proc~~finalize~5~~CalledByGraph - + proc~finalize~5 - -forcad_bezier_volume::bezier_volume%finalize + +forcad_nurbs_curve::nurbs_curve%finalize - + -program~example_bezier_volume - - -example_bezier_volume +program~example_nurbs_curve + + +example_nurbs_curve - + -program~example_bezier_volume->proc~finalize~5 - - +program~example_nurbs_curve->proc~finalize~5 + + @@ -324,7 +324,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/finalize~6.html b/proc/finalize~6.html index 254c45ee1..84f550d06 100644 --- a/proc/finalize~6.html +++ b/proc/finalize~6.html @@ -79,20 +79,20 @@

    finalize
  • 7 statements + title=" 0.4% of total for procedures.">8 statements
  • - Source File + Source File
  • @@ -142,10 +142,9 @@

    private pure subroutine finalize(this)

    -

    Finalize the Bezier curve object by deallocating memory.

    Type Bound

    -

    bezier_curve

    +

    bezier_surface

    Arguments

    @@ -160,8 +159,8 @@

    Arguments

    + + + + + + + + @@ -164,7 +179,37 @@

    Arguments

    - + + + + + + + + + + + + + + + + + @@ -191,31 +236,31 @@

    Called by

    - + proc~~generate_xc~2~~CalledByGraph - + proc~generate_xc~2 - -example_bezier_volume::generate_Xc + +example_bezier_curve::generate_Xc - + -program~example_bezier_volume - - -example_bezier_volume +program~example_bezier_curve + + +example_bezier_curve - + -program~example_bezier_volume->proc~generate_xc~2 - - +program~example_bezier_curve->proc~generate_xc~2 + + @@ -328,7 +373,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/generate_xc~3.html b/proc/generate_xc~3.html index 914335255..4eb0db942 100644 --- a/proc/generate_xc~3.html +++ b/proc/generate_xc~3.html @@ -78,20 +78,20 @@

    generate_Xc
  • 19 statements + title=" 0.8% of total for procedures.">16 statements
  • - Source File + Source File
  • @@ -137,7 +137,7 @@

    Contents

    -

    function generate_Xc(num_rows, num_cols, peak_height) result(control_points) +

    function generate_Xc(L) result(control_points)

    @@ -156,37 +156,7 @@

    Arguments

    - - - - - - - - - - - - - - - - @@ -194,7 +164,7 @@

    Arguments

    - + @@ -221,31 +191,31 @@

    Called by

    - + proc~~generate_xc~3~~CalledByGraph - + proc~generate_xc~3 - -example_bezier_surface::generate_Xc + +example_nurbs_volume::generate_Xc - + -program~example_bezier_surface - - -example_bezier_surface +program~example_nurbs_volume + + +example_nurbs_volume - + -program~example_bezier_surface->proc~generate_xc~3 - - +program~example_nurbs_volume->proc~generate_xc~3 + + @@ -358,7 +328,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/generate_xc~4.html b/proc/generate_xc~4.html index ac7f52fa0..3a2d4a8f6 100644 --- a/proc/generate_xc~4.html +++ b/proc/generate_xc~4.html @@ -78,20 +78,20 @@

    generate_Xc
  • 16 statements + title=" 1.0% of total for procedures.">19 statements
  • - Source File + Source File
  • @@ -137,7 +137,7 @@

    Contents

    -

    function generate_Xc(L) result(control_points) +

    function generate_Xc(num_rows, num_cols, peak_height) result(control_points)

    @@ -156,7 +156,37 @@

    Arguments

    + + + + + + + + + + + + + + + + @@ -164,7 +194,7 @@

    Arguments

    - + @@ -200,20 +230,20 @@

    Called by

    proc~generate_xc~4 -example_nurbs_volume::generate_Xc +example_nurbs_surface::generate_Xc - + -program~example_nurbs_volume - +program~example_nurbs_surface + -example_nurbs_volume +example_nurbs_surface - + -program~example_nurbs_volume->proc~generate_xc~4 +program~example_nurbs_surface->proc~generate_xc~4 @@ -328,7 +358,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/generate_xc~5.html b/proc/generate_xc~5.html index 6e6cbbf0a..1ae55f86b 100644 --- a/proc/generate_xc~5.html +++ b/proc/generate_xc~5.html @@ -78,20 +78,20 @@

    generate_Xc
  • 18 statements + title=" 0.8% of total for procedures.">16 statements
  • - Source File + Source File
  • @@ -137,7 +137,7 @@

    Contents

    -

    function generate_Xc(num_coils, radius, height, num_points_per_coil) result(control_points) +

    function generate_Xc(L) result(control_points)

    @@ -156,22 +156,7 @@

    Arguments

    - - - - - - - - @@ -179,37 +164,7 @@

    Arguments

    - - - - - - - - - - - - - - - - - + @@ -236,31 +191,31 @@

    Called by

    - + proc~~generate_xc~5~~CalledByGraph - + proc~generate_xc~5 - -example_bezier_curve::generate_Xc + +example_bezier_volume::generate_Xc - + -program~example_bezier_curve - - -example_bezier_curve +program~example_bezier_volume + + +example_bezier_volume - + -program~example_bezier_curve->proc~generate_xc~5 - - +program~example_bezier_volume->proc~generate_xc~5 + + @@ -373,7 +328,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_continuity.html b/proc/get_continuity.html index e30595bf1..07fa8e1de 100644 --- a/proc/get_continuity.html +++ b/proc/get_continuity.html @@ -79,20 +79,20 @@

    get_continuity
  • 20 statements + title=" 1.3% of total for procedures.">26 statements
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_continuity(this, dir) result(c)

    Type Bound

    -

    nurbs_surface

    +

    nurbs_volume

    Arguments

    - - class(bezier_curve), + + class(bezier_surface), intent(inout) @@ -188,31 +187,31 @@

    Called by

    - + proc~~finalize~6~~CalledByGraph - + proc~finalize~6 - -forcad_bezier_curve::bezier_curve%finalize + +forcad_bezier_surface::bezier_surface%finalize - + -program~example_bezier_curve - - -example_bezier_curve +program~example_bezier_surface + + +example_bezier_surface - + -program~example_bezier_curve->proc~finalize~6 - - +program~example_bezier_surface->proc~finalize~6 + + @@ -325,7 +324,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/generate_xc.html b/proc/generate_xc.html index 59f79773b..f2b96635d 100644 --- a/proc/generate_xc.html +++ b/proc/generate_xc.html @@ -83,15 +83,15 @@

    generate_Xc
  • - Source File + Source File
  • @@ -221,31 +221,31 @@

    Called by

    - + proc~~generate_xc~~CalledByGraph - + proc~generate_xc - -example_nurbs_surface::generate_Xc + +example_bezier_surface::generate_Xc - + -program~example_nurbs_surface - - -example_nurbs_surface +program~example_bezier_surface + + +example_bezier_surface - + -program~example_nurbs_surface->proc~generate_xc - - +program~example_bezier_surface->proc~generate_xc + + @@ -358,7 +358,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/generate_xc~2.html b/proc/generate_xc~2.html index 5ed354afa..7628561d4 100644 --- a/proc/generate_xc~2.html +++ b/proc/generate_xc~2.html @@ -78,20 +78,20 @@

    generate_Xc
  • 16 statements + title=" 0.9% of total for procedures.">18 statements
  • - Source File + Source File
  • @@ -137,7 +137,7 @@

    Contents

    -

    function generate_Xc(L) result(control_points) +

    function generate_Xc(num_coils, radius, height, num_points_per_coil) result(control_points)

    @@ -156,7 +156,22 @@

    Arguments

    - + + integer, + intent(in) + + ::num_coils + +
    + real(kind=rk), intent(in) ::Lradius + +
    + + real(kind=rk), + intent(in) + + ::height + +
    + + integer, + intent(in) + + ::num_points_per_coil
    - - integer, - intent(in) - - ::num_rows - -
    - - integer, - intent(in) - - ::num_cols - -
    - + real(kind=rk), intent(in) ::peak_heightL
    - + + integer, + intent(in) + + ::num_rows + +
    + + integer, + intent(in) + + ::num_cols + +
    + real(kind=rk), intent(in) ::Lpeak_height
    - - integer, - intent(in) - - ::num_coils - -
    - + real(kind=rk), intent(in) ::radius - -
    - - real(kind=rk), - intent(in) - - ::height - -
    - - integer, - intent(in) - - ::num_points_per_coilL
    @@ -159,8 +159,8 @@

    Arguments

    @@ -218,7 +218,7 @@

    Calls

    proc~get_continuity -forcad_nurbs_surface::nurbs_surface%get_continuity +forcad_nurbs_volume::nurbs_volume%get_continuity @@ -346,7 +346,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_continuity~2.html b/proc/get_continuity~2.html index 9afe4a492..3dab53b6d 100644 --- a/proc/get_continuity~2.html +++ b/proc/get_continuity~2.html @@ -79,20 +79,20 @@

    get_continuity
  • 9 statements + title=" 1.0% of total for procedures.">20 statements
  • - Source File + Source File
  • @@ -138,13 +138,13 @@

    Contents

    -

    private pure function get_continuity(this) result(c) +

    private pure function get_continuity(this, dir) result(c)

    Type Bound

    -

    nurbs_curve

    +

    nurbs_surface

    Arguments

    - - class(nurbs_surface), + + class(nurbs_volume), intent(in) @@ -174,7 +174,7 @@

    Arguments

    - + integer, intent(in)
    @@ -159,8 +159,8 @@

    Arguments

    + + + + + + + + @@ -194,31 +209,31 @@

    Calls

    - + proc~~get_continuity~2~~CallsGraph - + proc~get_continuity~2 - -forcad_nurbs_curve::nurbs_curve%get_continuity + +forcad_nurbs_surface::nurbs_surface%get_continuity proc~compute_multiplicity - -forcad_utils::compute_multiplicity + +forcad_utils::compute_multiplicity proc~get_continuity~2->proc~compute_multiplicity - - + + @@ -331,7 +346,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_continuity~3.html b/proc/get_continuity~3.html index ae8d129a1..a9d03972f 100644 --- a/proc/get_continuity~3.html +++ b/proc/get_continuity~3.html @@ -79,20 +79,20 @@

    get_continuity
  • 26 statements + title=" 0.5% of total for procedures.">9 statements
  • - Source File + Source File
  • @@ -138,13 +138,13 @@

    Contents

    -

    private pure function get_continuity(this, dir) result(c) +

    private pure function get_continuity(this) result(c)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_curve

    Arguments

    - - class(nurbs_curve), + + class(nurbs_surface), intent(in) @@ -170,6 +170,21 @@

    Arguments

    this +
    + + integer, + intent(in) + + ::dir +
    @@ -159,8 +159,8 @@

    Arguments

    - - - - - - - - @@ -209,31 +194,31 @@

    Calls

    - + proc~~get_continuity~3~~CallsGraph - + proc~get_continuity~3 - -forcad_nurbs_volume::nurbs_volume%get_continuity + +forcad_nurbs_curve::nurbs_curve%get_continuity proc~compute_multiplicity - -forcad_utils::compute_multiplicity + +forcad_utils::compute_multiplicity proc~get_continuity~3->proc~compute_multiplicity - - + + @@ -346,7 +331,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_elem_xc.html b/proc/get_elem_xc.html index 78430c8b5..c42e3adff 100644 --- a/proc/get_elem_xc.html +++ b/proc/get_elem_xc.html @@ -84,15 +84,15 @@

    get_elem_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine get_elem_Xc(this, elemConn, p)

    Type Bound

    -

    bezier_surface

    +

    nurbs_volume

    Arguments

    - - class(nurbs_volume), + + class(nurbs_curve), intent(in) @@ -170,21 +170,6 @@

    Arguments

    this -
    - - integer, - intent(in) - - ::dir -
    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_surface), + + class(nurbs_volume), intent(in) @@ -217,76 +217,76 @@

    Calls

    - - + + proc~~get_elem_xc~~CallsGraph - + proc~get_elem_xc - -forcad_bezier_surface::bezier_surface%get_elem_Xc + +forcad_nurbs_volume::nurbs_volume%get_elem_Xc interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xc->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -387,45 +387,45 @@

    Called by

    --> - + viewBox="0.00 0.00 641.00 26.40" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + proc~~get_elem_xc~~CalledByGraph - + proc~get_elem_xc - -forcad_bezier_surface::bezier_surface%get_elem_Xc + +forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~export_xc - - -forcad_bezier_surface::bezier_surface%export_Xc + + +forcad_nurbs_volume::nurbs_volume%export_Xc proc~export_xc->proc~get_elem_xc - - + + - + -program~example_bezier_surface - - -example_bezier_surface +program~example_nurbs_volume + + +example_nurbs_volume - + -program~example_bezier_surface->proc~export_xc - - +program~example_nurbs_volume->proc~export_xc + + @@ -542,7 +542,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_elem_xc~2.html b/proc/get_elem_xc~2.html index cdee5669b..bfeafef20 100644 --- a/proc/get_elem_xc~2.html +++ b/proc/get_elem_xc~2.html @@ -84,15 +84,15 @@

    get_elem_Xc
  • - Source File + Source File
  • @@ -142,9 +142,10 @@

    private pure subroutine get_elem_Xc(this, elemConn, p)

    +

    Generate connectivity for control points.

    Type Bound

    -

    nurbs_surface

    +

    bezier_curve

    Arguments

    @@ -159,8 +160,8 @@

    Arguments

    - + @@ -217,76 +218,76 @@

    Calls

    - - + + proc~~get_elem_xc~2~~CallsGraph - + proc~get_elem_xc~2 - -forcad_nurbs_surface::nurbs_surface%get_elem_Xc + +forcad_bezier_curve::bezier_curve%get_elem_Xc interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xc~2->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -386,46 +387,46 @@

    Called by

    - - + + proc~~get_elem_xc~2~~CalledByGraph - + proc~get_elem_xc~2 - -forcad_nurbs_surface::nurbs_surface%get_elem_Xc + +forcad_bezier_curve::bezier_curve%get_elem_Xc proc~export_xc~2 - - -forcad_nurbs_surface::nurbs_surface%export_Xc + + +forcad_bezier_curve::bezier_curve%export_Xc proc~export_xc~2->proc~get_elem_xc~2 - - + + - + -program~example_nurbs_surface - - -example_nurbs_surface +program~example_bezier_curve + + +example_bezier_curve - + -program~example_nurbs_surface->proc~export_xc~2 - - +program~example_bezier_curve->proc~export_xc~2 + + @@ -542,7 +543,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_elem_xc~3.html b/proc/get_elem_xc~3.html index 44613eab8..ce6242a0b 100644 --- a/proc/get_elem_xc~3.html +++ b/proc/get_elem_xc~3.html @@ -84,15 +84,15 @@

    get_elem_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine get_elem_Xc(this, elemConn, p)

    Type Bound

    -

    nurbs_curve

    +

    bezier_volume

    Arguments

    - - class(nurbs_surface), + + class(bezier_curve), intent(in) @@ -197,7 +198,7 @@

    Arguments

    ::p(:)p
    @@ -160,7 +160,7 @@

    Arguments

    - + @@ -217,76 +217,76 @@

    Calls

    - - + + proc~~get_elem_xc~3~~CallsGraph - + proc~get_elem_xc~3 - -forcad_nurbs_curve::nurbs_curve%get_elem_Xc + +forcad_bezier_volume::bezier_volume%get_elem_Xc interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xc~3->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -386,46 +386,46 @@

    Called by

    - - + + proc~~get_elem_xc~3~~CalledByGraph - + proc~get_elem_xc~3 - -forcad_nurbs_curve::nurbs_curve%get_elem_Xc + +forcad_bezier_volume::bezier_volume%get_elem_Xc proc~export_xc~3 - - -forcad_nurbs_curve::nurbs_curve%export_Xc + + +forcad_bezier_volume::bezier_volume%export_Xc proc~export_xc~3->proc~get_elem_xc~3 - - + + - + -program~example_nurbs_curve - - -example_nurbs_curve +program~example_bezier_volume + + +example_bezier_volume - + -program~example_nurbs_curve->proc~export_xc~3 - - +program~example_bezier_volume->proc~export_xc~3 + + @@ -542,7 +542,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_elem_xc~4.html b/proc/get_elem_xc~4.html index 1a89e7883..33b538ece 100644 --- a/proc/get_elem_xc~4.html +++ b/proc/get_elem_xc~4.html @@ -84,15 +84,15 @@

    get_elem_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine get_elem_Xc(this, elemConn, p)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_surface

    Arguments

    - class(nurbs_curve), + class(bezier_volume), intent(in) @@ -197,7 +197,7 @@

    Arguments

    ::pp(:)
    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_volume), + + class(nurbs_surface), intent(in) @@ -226,7 +226,7 @@

    Calls

    proc~get_elem_xc~4 -forcad_nurbs_volume::nurbs_volume%get_elem_Xc +forcad_nurbs_surface::nurbs_surface%get_elem_Xc @@ -395,14 +395,14 @@

    Called by

    proc~get_elem_xc~4 -forcad_nurbs_volume::nurbs_volume%get_elem_Xc +forcad_nurbs_surface::nurbs_surface%get_elem_Xc proc~export_xc~4 - + -forcad_nurbs_volume::nurbs_volume%export_Xc +forcad_nurbs_surface::nurbs_surface%export_Xc @@ -412,18 +412,18 @@

    Called by

    - + -program~example_nurbs_volume - +program~example_nurbs_surface + -example_nurbs_volume +example_nurbs_surface - + -program~example_nurbs_volume->proc~export_xc~4 +program~example_nurbs_surface->proc~export_xc~4 @@ -542,7 +542,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_elem_xc~5.html b/proc/get_elem_xc~5.html index 12434b69d..637812adf 100644 --- a/proc/get_elem_xc~5.html +++ b/proc/get_elem_xc~5.html @@ -84,15 +84,15 @@

    get_elem_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine get_elem_Xc(this, elemConn, p)

    Type Bound

    -

    bezier_volume

    +

    nurbs_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - + @@ -217,76 +217,76 @@

    Calls

    - - + + proc~~get_elem_xc~5~~CallsGraph - + proc~get_elem_xc~5 - -forcad_bezier_volume::bezier_volume%get_elem_Xc + +forcad_nurbs_curve::nurbs_curve%get_elem_Xc interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xc~5->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -386,46 +386,46 @@

    Called by

    - - + + proc~~get_elem_xc~5~~CalledByGraph - + proc~get_elem_xc~5 - -forcad_bezier_volume::bezier_volume%get_elem_Xc + +forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~export_xc~5 - - -forcad_bezier_volume::bezier_volume%export_Xc + + +forcad_nurbs_curve::nurbs_curve%export_Xc proc~export_xc~5->proc~get_elem_xc~5 - - + + - + -program~example_bezier_volume - - -example_bezier_volume +program~example_nurbs_curve + + +example_nurbs_curve - + -program~example_bezier_volume->proc~export_xc~5 - - +program~example_nurbs_curve->proc~export_xc~5 + + @@ -542,7 +542,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_elem_xc~6.html b/proc/get_elem_xc~6.html index 45b3bbe74..405e68359 100644 --- a/proc/get_elem_xc~6.html +++ b/proc/get_elem_xc~6.html @@ -84,15 +84,15 @@

    get_elem_Xc
  • - Source File + Source File
  • @@ -142,10 +142,9 @@

    private pure subroutine get_elem_Xc(this, elemConn, p)

    -

    Generate connectivity for control points.

    Type Bound

    -

    bezier_curve

    +

    bezier_surface

    Arguments

    - - class(bezier_volume), + + class(nurbs_curve), intent(in) @@ -197,7 +197,7 @@

    Arguments

    ::p(:)p
    @@ -160,8 +159,8 @@

    Arguments

    - + @@ -218,76 +217,76 @@

    Calls

    - - + + proc~~get_elem_xc~6~~CallsGraph - + proc~get_elem_xc~6 - -forcad_bezier_curve::bezier_curve%get_elem_Xc + +forcad_bezier_surface::bezier_surface%get_elem_Xc interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xc~6->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -387,46 +386,46 @@

    Called by

    - - + + proc~~get_elem_xc~6~~CalledByGraph - + proc~get_elem_xc~6 - -forcad_bezier_curve::bezier_curve%get_elem_Xc + +forcad_bezier_surface::bezier_surface%get_elem_Xc proc~export_xc~6 - - -forcad_bezier_curve::bezier_curve%export_Xc + + +forcad_bezier_surface::bezier_surface%export_Xc proc~export_xc~6->proc~get_elem_xc~6 - - + + - + -program~example_bezier_curve - - -example_bezier_curve +program~example_bezier_surface + + +example_bezier_surface - + -program~example_bezier_curve->proc~export_xc~6 - - +program~example_bezier_surface->proc~export_xc~6 + + @@ -543,7 +542,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_elem_xg.html b/proc/get_elem_xg.html index e1d4b771d..01e3a2886 100644 --- a/proc/get_elem_xg.html +++ b/proc/get_elem_xg.html @@ -84,15 +84,15 @@

    get_elem_Xg
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine get_elem_Xg(this, elemConn, p)

    Type Bound

    -

    bezier_surface

    +

    nurbs_volume

    Arguments

    - - class(bezier_curve), + + class(bezier_surface), intent(in) @@ -198,7 +197,7 @@

    Arguments

    ::pp(:)
    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_surface), + + class(nurbs_volume), intent(in) @@ -218,75 +218,75 @@

    Calls

    --> - + viewBox="0.00 0.00 641.00 103.42" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + proc~~get_elem_xg~~CallsGraph - + proc~get_elem_xg - -forcad_bezier_surface::bezier_surface%get_elem_Xg + +forcad_nurbs_volume::nurbs_volume%get_elem_Xg interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xg->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -387,45 +387,45 @@

    Called by

    --> - + viewBox="0.00 0.00 641.00 26.33" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + proc~~get_elem_xg~~CalledByGraph - + proc~get_elem_xg - -forcad_bezier_surface::bezier_surface%get_elem_Xg + +forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~export_xg - - -forcad_bezier_surface::bezier_surface%export_Xg + + +forcad_nurbs_volume::nurbs_volume%export_Xg proc~export_xg->proc~get_elem_xg - - + + - + -program~example_bezier_surface - - -example_bezier_surface +program~example_nurbs_volume + + +example_nurbs_volume - + -program~example_bezier_surface->proc~export_xg - - +program~example_nurbs_volume->proc~export_xg + + @@ -542,7 +542,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_elem_xg~2.html b/proc/get_elem_xg~2.html index b4f69092e..87175ce9e 100644 --- a/proc/get_elem_xg~2.html +++ b/proc/get_elem_xg~2.html @@ -84,15 +84,15 @@

    get_elem_Xg
  • - Source File + Source File
  • @@ -142,9 +142,10 @@

    private pure subroutine get_elem_Xg(this, elemConn, p)

    +

    Generate connectivity for geometry points.

    Type Bound

    -

    nurbs_surface

    +

    bezier_curve

    Arguments

    @@ -159,8 +160,8 @@

    Arguments

    - + @@ -217,76 +218,76 @@

    Calls

    - - + + proc~~get_elem_xg~2~~CallsGraph - + proc~get_elem_xg~2 - -forcad_nurbs_surface::nurbs_surface%get_elem_Xg + +forcad_bezier_curve::bezier_curve%get_elem_Xg interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xg~2->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -386,46 +387,46 @@

    Called by

    - - + + proc~~get_elem_xg~2~~CalledByGraph - + proc~get_elem_xg~2 - -forcad_nurbs_surface::nurbs_surface%get_elem_Xg + +forcad_bezier_curve::bezier_curve%get_elem_Xg proc~export_xg~2 - - -forcad_nurbs_surface::nurbs_surface%export_Xg + + +forcad_bezier_curve::bezier_curve%export_Xg proc~export_xg~2->proc~get_elem_xg~2 - - + + - + -program~example_nurbs_surface - - -example_nurbs_surface +program~example_bezier_curve + + +example_bezier_curve - + -program~example_nurbs_surface->proc~export_xg~2 - - +program~example_bezier_curve->proc~export_xg~2 + + @@ -542,7 +543,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_elem_xg~3.html b/proc/get_elem_xg~3.html index 7ac3d1ec6..23b790dfc 100644 --- a/proc/get_elem_xg~3.html +++ b/proc/get_elem_xg~3.html @@ -84,15 +84,15 @@

    get_elem_Xg
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine get_elem_Xg(this, elemConn, p)

    Type Bound

    -

    nurbs_curve

    +

    bezier_volume

    Arguments

    - - class(nurbs_surface), + + class(bezier_curve), intent(in) @@ -197,7 +198,7 @@

    Arguments

    ::p(:)p
    @@ -160,7 +160,7 @@

    Arguments

    - + @@ -217,76 +217,76 @@

    Calls

    - - + + proc~~get_elem_xg~3~~CallsGraph - + proc~get_elem_xg~3 - -forcad_nurbs_curve::nurbs_curve%get_elem_Xg + +forcad_bezier_volume::bezier_volume%get_elem_Xg interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xg~3->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -386,46 +386,46 @@

    Called by

    - - + + proc~~get_elem_xg~3~~CalledByGraph - + proc~get_elem_xg~3 - -forcad_nurbs_curve::nurbs_curve%get_elem_Xg + +forcad_bezier_volume::bezier_volume%get_elem_Xg proc~export_xg~3 - - -forcad_nurbs_curve::nurbs_curve%export_Xg + + +forcad_bezier_volume::bezier_volume%export_Xg proc~export_xg~3->proc~get_elem_xg~3 - - + + - + -program~example_nurbs_curve - - -example_nurbs_curve +program~example_bezier_volume + + +example_bezier_volume - + -program~example_nurbs_curve->proc~export_xg~3 - - +program~example_bezier_volume->proc~export_xg~3 + + @@ -542,7 +542,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_elem_xg~4.html b/proc/get_elem_xg~4.html index 787dffa8b..3bcdb9a4f 100644 --- a/proc/get_elem_xg~4.html +++ b/proc/get_elem_xg~4.html @@ -84,15 +84,15 @@

    get_elem_Xg
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine get_elem_Xg(this, elemConn, p)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_surface

    Arguments

    - class(nurbs_curve), + class(bezier_volume), intent(in) @@ -197,7 +197,7 @@

    Arguments

    ::pp(:)
    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_volume), + + class(nurbs_surface), intent(in) @@ -226,7 +226,7 @@

    Calls

    proc~get_elem_xg~4 -forcad_nurbs_volume::nurbs_volume%get_elem_Xg +forcad_nurbs_surface::nurbs_surface%get_elem_Xg @@ -395,14 +395,14 @@

    Called by

    proc~get_elem_xg~4 -forcad_nurbs_volume::nurbs_volume%get_elem_Xg +forcad_nurbs_surface::nurbs_surface%get_elem_Xg proc~export_xg~4 - + -forcad_nurbs_volume::nurbs_volume%export_Xg +forcad_nurbs_surface::nurbs_surface%export_Xg @@ -412,18 +412,18 @@

    Called by

    - + -program~example_nurbs_volume - +program~example_nurbs_surface + -example_nurbs_volume +example_nurbs_surface - + -program~example_nurbs_volume->proc~export_xg~4 +program~example_nurbs_surface->proc~export_xg~4 @@ -542,7 +542,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_elem_xg~5.html b/proc/get_elem_xg~5.html index bbbc9afed..1186be927 100644 --- a/proc/get_elem_xg~5.html +++ b/proc/get_elem_xg~5.html @@ -84,15 +84,15 @@

    get_elem_Xg
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine get_elem_Xg(this, elemConn, p)

    Type Bound

    -

    bezier_volume

    +

    nurbs_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - + @@ -217,76 +217,76 @@

    Calls

    - - + + proc~~get_elem_xg~5~~CallsGraph - + proc~get_elem_xg~5 - -forcad_bezier_volume::bezier_volume%get_elem_Xg + +forcad_nurbs_curve::nurbs_curve%get_elem_Xg interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xg~5->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -386,46 +386,46 @@

    Called by

    - - + + proc~~get_elem_xg~5~~CalledByGraph - + proc~get_elem_xg~5 - -forcad_bezier_volume::bezier_volume%get_elem_Xg + +forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~export_xg~5 - - -forcad_bezier_volume::bezier_volume%export_Xg + + +forcad_nurbs_curve::nurbs_curve%export_Xg proc~export_xg~5->proc~get_elem_xg~5 - - + + - + -program~example_bezier_volume - - -example_bezier_volume +program~example_nurbs_curve + + +example_nurbs_curve - + -program~example_bezier_volume->proc~export_xg~5 - - +program~example_nurbs_curve->proc~export_xg~5 + + @@ -542,7 +542,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_elem_xg~6.html b/proc/get_elem_xg~6.html index 47783f610..0a835de0b 100644 --- a/proc/get_elem_xg~6.html +++ b/proc/get_elem_xg~6.html @@ -84,15 +84,15 @@

    get_elem_Xg
  • - Source File + Source File
  • @@ -142,10 +142,9 @@

    private pure subroutine get_elem_Xg(this, elemConn, p)

    -

    Generate connectivity for geometry points.

    Type Bound

    -

    bezier_curve

    +

    bezier_surface

    Arguments

    - - class(bezier_volume), + + class(nurbs_curve), intent(in) @@ -197,7 +197,7 @@

    Arguments

    ::p(:)p
    @@ -160,8 +159,8 @@

    Arguments

    - + @@ -218,76 +217,76 @@

    Calls

    - - + + proc~~get_elem_xg~6~~CallsGraph - + proc~get_elem_xg~6 - -forcad_bezier_curve::bezier_curve%get_elem_Xg + +forcad_bezier_surface::bezier_surface%get_elem_Xg interface~elemconn_c0 - -forcad_utils::elemConn_C0 + +forcad_utils::elemConn_C0 proc~get_elem_xg~6->interface~elemconn_c0 - - + + proc~cmp_elemconn_c0_l - -forcad_utils::cmp_elemConn_C0_L + +forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l - - + + proc~cmp_elemconn_c0_s - -forcad_utils::cmp_elemConn_C0_S + +forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s - - + + proc~cmp_elemconn_c0_v - -forcad_utils::cmp_elemConn_C0_V + +forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v - - + + @@ -387,46 +386,46 @@

    Called by

    - - + + proc~~get_elem_xg~6~~CalledByGraph - + proc~get_elem_xg~6 - -forcad_bezier_curve::bezier_curve%get_elem_Xg + +forcad_bezier_surface::bezier_surface%get_elem_Xg proc~export_xg~6 - - -forcad_bezier_curve::bezier_curve%export_Xg + + +forcad_bezier_surface::bezier_surface%export_Xg proc~export_xg~6->proc~get_elem_xg~6 - - + + - + -program~example_bezier_curve - - -example_bezier_curve +program~example_bezier_surface + + +example_bezier_surface - + -program~example_bezier_curve->proc~export_xg~6 - - +program~example_bezier_surface->proc~export_xg~6 + + @@ -543,7 +542,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_knot.html b/proc/get_knot.html index b3aa5ad3f..cb324eee6 100644 --- a/proc/get_knot.html +++ b/proc/get_knot.html @@ -79,20 +79,20 @@

    get_knot
  • 20 statements + title=" 1.3% of total for procedures.">26 statements
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_knot(this, dir) result(knot)

    Type Bound

    -

    nurbs_surface

    +

    nurbs_volume

    Arguments

    - - class(bezier_curve), + + class(bezier_surface), intent(in) @@ -198,7 +197,7 @@

    Arguments

    ::pp(:)
    @@ -159,8 +159,8 @@

    Arguments

    @@ -225,7 +225,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_knot~2.html b/proc/get_knot~2.html index d2d7318b2..789c79ae2 100644 --- a/proc/get_knot~2.html +++ b/proc/get_knot~2.html @@ -79,20 +79,20 @@

    get_knot
  • 9 statements + title=" 1.0% of total for procedures.">20 statements
  • - Source File + Source File
  • -

    private pure function get_knot(this) result(knot) +

    private pure function get_knot(this, dir) result(knot)

    Type Bound

    -

    nurbs_curve

    +

    nurbs_surface

    Arguments

    - - class(nurbs_surface), + + class(nurbs_volume), intent(in) @@ -174,7 +174,7 @@

    Arguments

    - + integer, intent(in)
    @@ -159,8 +159,8 @@

    Arguments

    + + + + + + + + @@ -177,7 +192,7 @@

    Arguments

    Return Value - + real(kind=rk), allocatable, (:)

    @@ -210,7 +225,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_knot~3.html b/proc/get_knot~3.html index f4c069b5c..73956de6e 100644 --- a/proc/get_knot~3.html +++ b/proc/get_knot~3.html @@ -79,20 +79,20 @@

    get_knot
  • 26 statements + title=" 0.5% of total for procedures.">9 statements
  • - Source File + Source File
  • -

    private pure function get_knot(this, dir) result(knot) +

    private pure function get_knot(this) result(knot)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_curve

    Arguments

    - - class(nurbs_curve), + + class(nurbs_surface), intent(in) @@ -170,6 +170,21 @@

    Arguments

    this +
    + + integer, + intent(in) + + ::dir +
    @@ -159,8 +159,8 @@

    Arguments

    - - - - - - - - @@ -192,7 +177,7 @@

    Arguments

    Return Value - + real(kind=rk), allocatable, (:)

    @@ -225,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_multiplicity.html b/proc/get_multiplicity.html index da6c61802..7cf91aaae 100644 --- a/proc/get_multiplicity.html +++ b/proc/get_multiplicity.html @@ -79,20 +79,20 @@

    get_multiplicity
  • 20 statements + title=" 1.3% of total for procedures.">26 statements
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_multiplicity(this, dir) result(m)

    Type Bound

    -

    nurbs_surface

    +

    nurbs_volume

    Arguments

    - - class(nurbs_volume), + + class(nurbs_curve), intent(in) @@ -170,21 +170,6 @@

    Arguments

    this -
    - - integer, - intent(in) - - ::dir -
    @@ -159,8 +159,8 @@

    Arguments

    @@ -218,7 +218,7 @@

    Calls

    proc~get_multiplicity -forcad_nurbs_surface::nurbs_surface%get_multiplicity +forcad_nurbs_volume::nurbs_volume%get_multiplicity @@ -338,95 +338,95 @@

    Called by

    proc~get_multiplicity -forcad_nurbs_surface::nurbs_surface%get_multiplicity +forcad_nurbs_volume::nurbs_volume%get_multiplicity - + -proc~get_order~2 - +proc~get_order + -forcad_nurbs_surface::nurbs_surface%get_order +forcad_nurbs_volume::nurbs_volume%get_order - + -proc~get_order~2->proc~get_multiplicity +proc~get_order->proc~get_multiplicity proc~set1 - + -forcad_nurbs_surface::nurbs_surface%set1 +forcad_nurbs_volume::nurbs_volume%set1 - + -proc~set1->proc~get_order~2 +proc~set1->proc~get_order - + -none~set~2 - +none~set + -forcad_nurbs_surface::nurbs_surface%set +forcad_nurbs_volume::nurbs_volume%set - + -none~set~2->proc~set1 +none~set->proc~set1 - + -proc~modify_wc~2 - +proc~modify_wc + -forcad_nurbs_surface::nurbs_surface%modify_Wc +forcad_nurbs_volume::nurbs_volume%modify_Wc - + -proc~modify_wc~2->none~set~2 +proc~modify_wc->none~set - + -proc~modify_xc~2 - +proc~modify_xc + -forcad_nurbs_surface::nurbs_surface%modify_Xc +forcad_nurbs_volume::nurbs_volume%modify_Xc - + -proc~modify_xc~2->none~set~2 +proc~modify_xc->none~set - + -program~example_nurbs_surface - +program~example_nurbs_volume + -example_nurbs_surface +example_nurbs_volume - + -program~example_nurbs_surface->none~set~2 +program~example_nurbs_volume->none~set @@ -545,7 +545,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_multiplicity~2.html b/proc/get_multiplicity~2.html index c7d2f1f0d..1ffc21e6e 100644 --- a/proc/get_multiplicity~2.html +++ b/proc/get_multiplicity~2.html @@ -79,20 +79,20 @@

    get_multiplicity
  • 9 statements + title=" 1.0% of total for procedures.">20 statements
  • - Source File + Source File
  • @@ -138,13 +138,13 @@

    Contents

    -

    private pure function get_multiplicity(this) result(m) +

    private pure function get_multiplicity(this, dir) result(m)

    Type Bound

    -

    nurbs_curve

    +

    nurbs_surface

    Arguments

    - - class(nurbs_surface), + + class(nurbs_volume), intent(in) @@ -174,7 +174,7 @@

    Arguments

    - + integer, intent(in)
    @@ -159,8 +159,8 @@

    Arguments

    + + + + + + + + @@ -177,7 +192,7 @@

    Arguments

    Return Value - + integer, allocatable, (:)

    @@ -194,31 +209,31 @@

    Calls

    - + proc~~get_multiplicity~2~~CallsGraph - + proc~get_multiplicity~2 - -forcad_nurbs_curve::nurbs_curve%get_multiplicity + +forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~compute_multiplicity - -forcad_utils::compute_multiplicity + +forcad_utils::compute_multiplicity proc~get_multiplicity~2->proc~compute_multiplicity - - + + @@ -314,106 +329,106 @@

    Called by

    - - + + proc~~get_multiplicity~2~~CalledByGraph - + proc~get_multiplicity~2 - -forcad_nurbs_curve::nurbs_curve%get_multiplicity + +forcad_nurbs_surface::nurbs_surface%get_multiplicity - + -proc~get_order~3 - - -forcad_nurbs_curve::nurbs_curve%get_order +proc~get_order~4 + + +forcad_nurbs_surface::nurbs_surface%get_order - + -proc~get_order~3->proc~get_multiplicity~2 - - +proc~get_order~4->proc~get_multiplicity~2 + + proc~set1~2 - - -forcad_nurbs_curve::nurbs_curve%set1 + + +forcad_nurbs_surface::nurbs_surface%set1 - + -proc~set1~2->proc~get_order~3 - - +proc~set1~2->proc~get_order~4 + + - + -none~set~3 - - -forcad_nurbs_curve::nurbs_curve%set +none~set~4 + + +forcad_nurbs_surface::nurbs_surface%set - + -none~set~3->proc~set1~2 - - +none~set~4->proc~set1~2 + + - + -proc~modify_wc~3 - - -forcad_nurbs_curve::nurbs_curve%modify_Wc +proc~modify_wc~4 + + +forcad_nurbs_surface::nurbs_surface%modify_Wc - + -proc~modify_wc~3->none~set~3 - - +proc~modify_wc~4->none~set~4 + + - + -proc~modify_xc~3 - - -forcad_nurbs_curve::nurbs_curve%modify_Xc +proc~modify_xc~4 + + +forcad_nurbs_surface::nurbs_surface%modify_Xc - + -proc~modify_xc~3->none~set~3 - - +proc~modify_xc~4->none~set~4 + + - + -program~example_nurbs_curve - - -example_nurbs_curve +program~example_nurbs_surface + + +example_nurbs_surface - + -program~example_nurbs_curve->none~set~3 - - +program~example_nurbs_surface->none~set~4 + + @@ -530,7 +545,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_multiplicity~3.html b/proc/get_multiplicity~3.html index c64d04ef3..2d0529884 100644 --- a/proc/get_multiplicity~3.html +++ b/proc/get_multiplicity~3.html @@ -79,20 +79,20 @@

    get_multiplicity
  • 26 statements + title=" 0.5% of total for procedures.">9 statements
  • - Source File + Source File
  • @@ -138,13 +138,13 @@

    Contents

    -

    private pure function get_multiplicity(this, dir) result(m) +

    private pure function get_multiplicity(this) result(m)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_curve

    Arguments

    - - class(nurbs_curve), + + class(nurbs_surface), intent(in) @@ -170,6 +170,21 @@

    Arguments

    this +
    + + integer, + intent(in) + + ::dir +
    @@ -159,8 +159,8 @@

    Arguments

    - - - - - - - - @@ -209,31 +194,31 @@

    Calls

    - + proc~~get_multiplicity~3~~CallsGraph - + proc~get_multiplicity~3 - -forcad_nurbs_volume::nurbs_volume%get_multiplicity + +forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~compute_multiplicity - -forcad_utils::compute_multiplicity + +forcad_utils::compute_multiplicity proc~get_multiplicity~3->proc~compute_multiplicity - - + + @@ -329,106 +314,106 @@

    Called by

    - - + + proc~~get_multiplicity~3~~CalledByGraph - + proc~get_multiplicity~3 - -forcad_nurbs_volume::nurbs_volume%get_multiplicity + +forcad_nurbs_curve::nurbs_curve%get_multiplicity - + -proc~get_order~4 - - -forcad_nurbs_volume::nurbs_volume%get_order +proc~get_order~5 + + +forcad_nurbs_curve::nurbs_curve%get_order - + -proc~get_order~4->proc~get_multiplicity~3 - - +proc~get_order~5->proc~get_multiplicity~3 + + proc~set1~3 - - -forcad_nurbs_volume::nurbs_volume%set1 + + +forcad_nurbs_curve::nurbs_curve%set1 - + -proc~set1~3->proc~get_order~4 - - +proc~set1~3->proc~get_order~5 + + - + -none~set~4 - - -forcad_nurbs_volume::nurbs_volume%set +none~set~5 + + +forcad_nurbs_curve::nurbs_curve%set - + -none~set~4->proc~set1~3 - - +none~set~5->proc~set1~3 + + - + -proc~modify_wc~4 - - -forcad_nurbs_volume::nurbs_volume%modify_Wc +proc~modify_wc~5 + + +forcad_nurbs_curve::nurbs_curve%modify_Wc - + -proc~modify_wc~4->none~set~4 - - +proc~modify_wc~5->none~set~5 + + - + -proc~modify_xc~4 - - -forcad_nurbs_volume::nurbs_volume%modify_Xc +proc~modify_xc~5 + + +forcad_nurbs_curve::nurbs_curve%modify_Xc - + -proc~modify_xc~4->none~set~4 - - +proc~modify_xc~5->none~set~5 + + - + -program~example_nurbs_volume - - -example_nurbs_volume +program~example_nurbs_curve + + +example_nurbs_curve - + -program~example_nurbs_volume->none~set~4 - - +program~example_nurbs_curve->none~set~5 + + @@ -545,7 +530,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_nc.html b/proc/get_nc.html index 66b3caa5c..c9e02ae53 100644 --- a/proc/get_nc.html +++ b/proc/get_nc.html @@ -79,20 +79,20 @@

    get_nc
  • 5 statements + title=" 1.3% of total for procedures.">26 statements
  • - Source File + Source File
  • -

    private pure function get_nc(this) result(nc) +

    private pure function get_nc(this, dir) result(nc)

    Type Bound

    -

    bezier_surface

    +

    nurbs_volume

    Arguments

    - - class(nurbs_volume), + + class(nurbs_curve), intent(in) @@ -170,21 +170,6 @@

    Arguments

    this -
    - - integer, - intent(in) - - ::dir -
    @@ -159,8 +159,8 @@

    Arguments

    + + + + + + + + @@ -177,12 +192,338 @@

    Arguments

    Return Value - - integer, (2) + + integer


    +
    +
    +

    Calls

    +
    +
    +
    + + + + + +proc~~get_nc~~CallsGraph + + + +proc~get_nc + +forcad_nurbs_volume::nurbs_volume%get_nc + + + +proc~compute_multiplicity + + +forcad_utils::compute_multiplicity + + + + + +proc~get_nc->proc~compute_multiplicity + + + + + +
    + Help +
    + +
    +
    +
    +
    +

    Called by

    +
    +
    +
    + + + + + +proc~~get_nc~~CalledByGraph + + + +proc~get_nc + +forcad_nurbs_volume::nurbs_volume%get_nc + + + +proc~set1 + + +forcad_nurbs_volume::nurbs_volume%set1 + + + + + +proc~set1->proc~get_nc + + + + + +proc~set2 + + +forcad_nurbs_volume::nurbs_volume%set2 + + + + + +proc~set2->proc~get_nc + + + + + +none~set + + +forcad_nurbs_volume::nurbs_volume%set + + + + + +none~set->proc~set1 + + + + + +none~set->proc~set2 + + + + + +proc~modify_wc + + +forcad_nurbs_volume::nurbs_volume%modify_Wc + + + + + +proc~modify_wc->none~set + + + + + +proc~modify_xc + + +forcad_nurbs_volume::nurbs_volume%modify_Xc + + + + + +proc~modify_xc->none~set + + + + + +program~example_nurbs_volume + + +example_nurbs_volume + + + + + +program~example_nurbs_volume->none~set + + + + + +
    + Help +
    + +
    +
    +
    @@ -210,7 +551,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_nc~2.html b/proc/get_nc~2.html index 9c22ffa6f..ca2f7c413 100644 --- a/proc/get_nc~2.html +++ b/proc/get_nc~2.html @@ -79,20 +79,20 @@

    get_nc
  • 20 statements + title=" 0.3% of total for procedures.">5 statements
  • - Source File + Source File
  • -

    private pure function get_nc(this, dir) result(nc) +

    private pure function get_nc(this) result(nc)

    Type Bound

    -

    nurbs_surface

    +

    bezier_curve

    Arguments

    - - class(bezier_surface), + + class(nurbs_volume), intent(in) @@ -170,6 +170,21 @@

    Arguments

    this +
    + + integer, + intent(in) + + ::dir +
    @@ -159,8 +159,8 @@

    Arguments

    - - - - - - - - @@ -192,338 +177,12 @@

    Arguments

    Return Value - + integer


    -
    -
    -

    Calls

    -
    -
    -
    - - - - - -proc~~get_nc~2~~CallsGraph - - - -proc~get_nc~2 - -forcad_nurbs_surface::nurbs_surface%get_nc - - - -proc~compute_multiplicity - - -forcad_utils::compute_multiplicity - - - - - -proc~get_nc~2->proc~compute_multiplicity - - - - - -
    - Help -
    - -
    -
    -
    -
    -

    Called by

    -
    -
    -
    - - - - - -proc~~get_nc~2~~CalledByGraph - - - -proc~get_nc~2 - -forcad_nurbs_surface::nurbs_surface%get_nc - - - -proc~set1 - - -forcad_nurbs_surface::nurbs_surface%set1 - - - - - -proc~set1->proc~get_nc~2 - - - - - -proc~set2 - - -forcad_nurbs_surface::nurbs_surface%set2 - - - - - -proc~set2->proc~get_nc~2 - - - - - -none~set~2 - - -forcad_nurbs_surface::nurbs_surface%set - - - - - -none~set~2->proc~set1 - - - - - -none~set~2->proc~set2 - - - - - -proc~modify_wc~2 - - -forcad_nurbs_surface::nurbs_surface%modify_Wc - - - - - -proc~modify_wc~2->none~set~2 - - - - - -proc~modify_xc~2 - - -forcad_nurbs_surface::nurbs_surface%modify_Xc - - - - - -proc~modify_xc~2->none~set~2 - - - - - -program~example_nurbs_surface - - -example_nurbs_surface - - - - - -program~example_nurbs_surface->none~set~2 - - - - - -
    - Help -
    - -
    -
    -
    @@ -551,7 +210,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_nc~3.html b/proc/get_nc~3.html index efeb0114e..9fa4d667a 100644 --- a/proc/get_nc~3.html +++ b/proc/get_nc~3.html @@ -84,15 +84,15 @@

    get_nc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_nc(this) result(nc)

    Type Bound

    -

    nurbs_curve

    +

    bezier_volume

    Arguments

    - - class(nurbs_surface), + + class(bezier_curve), intent(in) @@ -170,21 +170,6 @@

    Arguments

    this -
    - - integer, - intent(in) - - ::dir -
    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_curve), + + class(bezier_volume), intent(in) @@ -177,133 +177,12 @@

    Arguments

    Return Value - - integer + + integer, (3)


    -
    -
    -

    Calls

    -
    -
    -
    - - - - - -proc~~get_nc~3~~CallsGraph - - - -proc~get_nc~3 - -forcad_nurbs_curve::nurbs_curve%get_nc - - - -proc~compute_multiplicity - - -forcad_utils::compute_multiplicity - - - - - -proc~get_nc~3->proc~compute_multiplicity - - - - - -
    - Help -
    - -
    -
    -
    @@ -331,7 +210,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_nc~4.html b/proc/get_nc~4.html index 3850b414a..aa4444940 100644 --- a/proc/get_nc~4.html +++ b/proc/get_nc~4.html @@ -79,20 +79,20 @@

    get_nc
  • 26 statements + title=" 1.0% of total for procedures.">20 statements
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_nc(this, dir) result(nc)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_volume), + + class(nurbs_surface), intent(in) @@ -218,7 +218,7 @@

    Calls

    proc~get_nc~4 -forcad_nurbs_volume::nurbs_volume%get_nc +forcad_nurbs_surface::nurbs_surface%get_nc @@ -338,65 +338,65 @@

    Called by

    proc~get_nc~4 -forcad_nurbs_volume::nurbs_volume%get_nc +forcad_nurbs_surface::nurbs_surface%get_nc - + -proc~set1~3 - +proc~set1~2 + -forcad_nurbs_volume::nurbs_volume%set1 +forcad_nurbs_surface::nurbs_surface%set1 - + -proc~set1~3->proc~get_nc~4 +proc~set1~2->proc~get_nc~4 - + -proc~set2~3 - +proc~set2~2 + -forcad_nurbs_volume::nurbs_volume%set2 +forcad_nurbs_surface::nurbs_surface%set2 - + -proc~set2~3->proc~get_nc~4 +proc~set2~2->proc~get_nc~4 none~set~4 - + -forcad_nurbs_volume::nurbs_volume%set +forcad_nurbs_surface::nurbs_surface%set - + -none~set~4->proc~set1~3 +none~set~4->proc~set1~2 - + -none~set~4->proc~set2~3 +none~set~4->proc~set2~2 proc~modify_wc~4 - + -forcad_nurbs_volume::nurbs_volume%modify_Wc +forcad_nurbs_surface::nurbs_surface%modify_Wc @@ -409,9 +409,9 @@

    Called by

    proc~modify_xc~4 - + -forcad_nurbs_volume::nurbs_volume%modify_Xc +forcad_nurbs_surface::nurbs_surface%modify_Xc @@ -421,18 +421,18 @@

    Called by

    - + -program~example_nurbs_volume - +program~example_nurbs_surface + -example_nurbs_volume +example_nurbs_surface - + -program~example_nurbs_volume->none~set~4 +program~example_nurbs_surface->none~set~4 @@ -551,7 +551,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_nc~5.html b/proc/get_nc~5.html index 0d66ecb8c..e1a994362 100644 --- a/proc/get_nc~5.html +++ b/proc/get_nc~5.html @@ -84,15 +84,15 @@

    get_nc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_nc(this) result(nc)

    Type Bound

    -

    bezier_volume

    +

    nurbs_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_volume), + + class(nurbs_curve), intent(in) @@ -178,11 +178,132 @@

    Arguments

    Return Value - integer, (3) + integer


    +
    +
    +

    Calls

    +
    +
    +
    + + + + + +proc~~get_nc~5~~CallsGraph + + + +proc~get_nc~5 + +forcad_nurbs_curve::nurbs_curve%get_nc + + + +proc~compute_multiplicity + + +forcad_utils::compute_multiplicity + + + + + +proc~get_nc~5->proc~compute_multiplicity + + + + + +
    + Help +
    + +
    +
    +
    @@ -210,7 +331,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_nc~6.html b/proc/get_nc~6.html index e6d8ba68c..e99680a80 100644 --- a/proc/get_nc~6.html +++ b/proc/get_nc~6.html @@ -84,15 +84,15 @@

    get_nc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_nc(this) result(nc)

    Type Bound

    -

    bezier_curve

    +

    bezier_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_curve), + + class(bezier_surface), intent(in) @@ -178,7 +178,7 @@

    Arguments

    Return Value - integer + integer, (2)

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_ng.html b/proc/get_ng.html index a35ee7752..ee4755cda 100644 --- a/proc/get_ng.html +++ b/proc/get_ng.html @@ -84,15 +84,15 @@

    get_ng
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_ng(this) result(ng)

    Type Bound

    -

    bezier_surface

    +

    nurbs_volume

    Arguments

    @@ -160,7 +160,7 @@

    Arguments

    - class(bezier_surface), + class(nurbs_volume), intent(in) @@ -178,7 +178,7 @@

    Arguments

    Return Value - integer, (2) + integer, (3)

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_ng~2.html b/proc/get_ng~2.html index 2de3e8411..7df15164b 100644 --- a/proc/get_ng~2.html +++ b/proc/get_ng~2.html @@ -84,15 +84,15 @@

    get_ng
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_ng(this) result(ng)

    Type Bound

    -

    nurbs_surface

    +

    bezier_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_surface), + + class(bezier_curve), intent(in) @@ -178,7 +178,7 @@

    Arguments

    Return Value - integer, (2) + integer

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_ng~3.html b/proc/get_ng~3.html index 09c12aec2..7c1770ee6 100644 --- a/proc/get_ng~3.html +++ b/proc/get_ng~3.html @@ -84,15 +84,15 @@

    get_ng
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_ng(this) result(ng)

    Type Bound

    -

    nurbs_curve

    +

    bezier_volume

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_curve), + + class(bezier_volume), intent(in) @@ -178,7 +178,7 @@

    Arguments

    Return Value - integer + integer, (3)

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_ng~4.html b/proc/get_ng~4.html index 44d696198..836e420d7 100644 --- a/proc/get_ng~4.html +++ b/proc/get_ng~4.html @@ -84,15 +84,15 @@

    get_ng
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_ng(this) result(ng)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_volume), + + class(nurbs_surface), intent(in) @@ -178,7 +178,7 @@

    Arguments

    Return Value - integer, (3) + integer, (2)

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_ng~5.html b/proc/get_ng~5.html index 29eba2714..025ff063d 100644 --- a/proc/get_ng~5.html +++ b/proc/get_ng~5.html @@ -84,15 +84,15 @@

    get_ng
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_ng(this) result(ng)

    Type Bound

    -

    bezier_volume

    +

    nurbs_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_volume), + + class(nurbs_curve), intent(in) @@ -178,7 +178,7 @@

    Arguments

    Return Value - integer, (3) + integer

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_ng~6.html b/proc/get_ng~6.html index a27eed43f..c990ee418 100644 --- a/proc/get_ng~6.html +++ b/proc/get_ng~6.html @@ -84,15 +84,15 @@

    get_ng
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_ng(this) result(ng)

    Type Bound

    -

    bezier_curve

    +

    bezier_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_curve), + + class(bezier_surface), intent(in) @@ -178,7 +178,7 @@

    Arguments

    Return Value - integer + integer, (2)

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_order.html b/proc/get_order.html index c45e53af2..3513844ea 100644 --- a/proc/get_order.html +++ b/proc/get_order.html @@ -79,20 +79,20 @@

    get_order
  • 5 statements + title=" 0.6% of total for procedures.">11 statements
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_order(this) result(order)

    Type Bound

    -

    bezier_surface

    +

    nurbs_volume

    Arguments

    @@ -160,7 +160,7 @@

    Arguments

    - class(bezier_surface), + class(nurbs_volume), intent(in) @@ -177,12 +177,336 @@

    Arguments

    Return Value - - integer, (2) + + integer, (3)


    +
    +
    +

    Calls

    +
    +
    +
    + + + + + +proc~~get_order~~CallsGraph + + + +proc~get_order + +forcad_nurbs_volume::nurbs_volume%get_order + + + +proc~get_multiplicity + + +forcad_nurbs_volume::nurbs_volume%get_multiplicity + + + + + +proc~get_order->proc~get_multiplicity + + + + + +proc~compute_multiplicity + + +forcad_utils::compute_multiplicity + + + + + +proc~get_multiplicity->proc~compute_multiplicity + + + + + +
    + Help +
    + +
    +
    +
    +
    +

    Called by

    +
    +
    +
    + + + + + +proc~~get_order~~CalledByGraph + + + +proc~get_order + +forcad_nurbs_volume::nurbs_volume%get_order + + + +proc~set1 + + +forcad_nurbs_volume::nurbs_volume%set1 + + + + + +proc~set1->proc~get_order + + + + + +none~set + + +forcad_nurbs_volume::nurbs_volume%set + + + + + +none~set->proc~set1 + + + + + +proc~modify_wc + + +forcad_nurbs_volume::nurbs_volume%modify_Wc + + + + + +proc~modify_wc->none~set + + + + + +proc~modify_xc + + +forcad_nurbs_volume::nurbs_volume%modify_Xc + + + + + +proc~modify_xc->none~set + + + + + +program~example_nurbs_volume + + +example_nurbs_volume + + + + + +program~example_nurbs_volume->none~set + + + + + +
    + Help +
    + +
    +
    +
    @@ -210,7 +534,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_order~2.html b/proc/get_order~2.html index 5b8024731..4a8cc1aee 100644 --- a/proc/get_order~2.html +++ b/proc/get_order~2.html @@ -79,20 +79,20 @@

    get_order
  • 9 statements + title=" 0.3% of total for procedures.">5 statements
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_order(this) result(order)

    Type Bound

    -

    nurbs_surface

    +

    bezier_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_surface), + + class(bezier_curve), intent(in) @@ -178,335 +178,11 @@

    Arguments

    Return Value - integer, (2) + integer


    -
    -
    -

    Calls

    -
    -
    -
    - - - - - -proc~~get_order~2~~CallsGraph - - - -proc~get_order~2 - -forcad_nurbs_surface::nurbs_surface%get_order - - - -proc~get_multiplicity - - -forcad_nurbs_surface::nurbs_surface%get_multiplicity - - - - - -proc~get_order~2->proc~get_multiplicity - - - - - -proc~compute_multiplicity - - -forcad_utils::compute_multiplicity - - - - - -proc~get_multiplicity->proc~compute_multiplicity - - - - - -
    - Help -
    - -
    -
    -
    -
    -

    Called by

    -
    -
    -
    - - - - - -proc~~get_order~2~~CalledByGraph - - - -proc~get_order~2 - -forcad_nurbs_surface::nurbs_surface%get_order - - - -proc~set1 - - -forcad_nurbs_surface::nurbs_surface%set1 - - - - - -proc~set1->proc~get_order~2 - - - - - -none~set~2 - - -forcad_nurbs_surface::nurbs_surface%set - - - - - -none~set~2->proc~set1 - - - - - -proc~modify_wc~2 - - -forcad_nurbs_surface::nurbs_surface%modify_Wc - - - - - -proc~modify_wc~2->none~set~2 - - - - - -proc~modify_xc~2 - - -forcad_nurbs_surface::nurbs_surface%modify_Xc - - - - - -proc~modify_xc~2->none~set~2 - - - - - -program~example_nurbs_surface - - -example_nurbs_surface - - - - - -program~example_nurbs_surface->none~set~2 - - - - - -
    - Help -
    - -
    -
    -
    @@ -534,7 +210,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_order~3.html b/proc/get_order~3.html index 0164c37e1..cc17a53e9 100644 --- a/proc/get_order~3.html +++ b/proc/get_order~3.html @@ -79,20 +79,20 @@

    get_order
  • 7 statements + title=" 0.3% of total for procedures.">5 statements
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_order(this) result(order)

    Type Bound

    -

    nurbs_curve

    +

    bezier_volume

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_curve), + + class(bezier_volume), intent(in) @@ -177,336 +177,12 @@

    Arguments

    Return Value - - integer + + integer, (3)


    -
    -
    -

    Calls

    -
    -
    -
    - - - - - -proc~~get_order~3~~CallsGraph - - - -proc~get_order~3 - -forcad_nurbs_curve::nurbs_curve%get_order - - - -proc~get_multiplicity~2 - - -forcad_nurbs_curve::nurbs_curve%get_multiplicity - - - - - -proc~get_order~3->proc~get_multiplicity~2 - - - - - -proc~compute_multiplicity - - -forcad_utils::compute_multiplicity - - - - - -proc~get_multiplicity~2->proc~compute_multiplicity - - - - - -
    - Help -
    - -
    -
    -
    -
    -

    Called by

    -
    -
    -
    - - - - - -proc~~get_order~3~~CalledByGraph - - - -proc~get_order~3 - -forcad_nurbs_curve::nurbs_curve%get_order - - - -proc~set1~2 - - -forcad_nurbs_curve::nurbs_curve%set1 - - - - - -proc~set1~2->proc~get_order~3 - - - - - -none~set~3 - - -forcad_nurbs_curve::nurbs_curve%set - - - - - -none~set~3->proc~set1~2 - - - - - -proc~modify_wc~3 - - -forcad_nurbs_curve::nurbs_curve%modify_Wc - - - - - -proc~modify_wc~3->none~set~3 - - - - - -proc~modify_xc~3 - - -forcad_nurbs_curve::nurbs_curve%modify_Xc - - - - - -proc~modify_xc~3->none~set~3 - - - - - -program~example_nurbs_curve - - -example_nurbs_curve - - - - - -program~example_nurbs_curve->none~set~3 - - - - - -
    - Help -
    - -
    -
    -
    @@ -534,7 +210,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_order~4.html b/proc/get_order~4.html index 90af0e1de..ef60c5758 100644 --- a/proc/get_order~4.html +++ b/proc/get_order~4.html @@ -79,20 +79,20 @@

    get_order
  • 11 statements + title=" 0.5% of total for procedures.">9 statements
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_order(this) result(order)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_volume), + + class(nurbs_surface), intent(in) @@ -177,8 +177,8 @@

    Arguments

    Return Value - - integer, (3) + + integer, (2)

    @@ -203,20 +203,20 @@

    Calls

    proc~get_order~4 -forcad_nurbs_volume::nurbs_volume%get_order +forcad_nurbs_surface::nurbs_surface%get_order - + -proc~get_multiplicity~3 - +proc~get_multiplicity~2 + -forcad_nurbs_volume::nurbs_volume%get_multiplicity +forcad_nurbs_surface::nurbs_surface%get_multiplicity - + -proc~get_order~4->proc~get_multiplicity~3 +proc~get_order~4->proc~get_multiplicity~2 @@ -229,9 +229,9 @@

    Calls

    - + -proc~get_multiplicity~3->proc~compute_multiplicity +proc~get_multiplicity~2->proc~compute_multiplicity @@ -342,44 +342,44 @@

    Called by

    proc~get_order~4 -forcad_nurbs_volume::nurbs_volume%get_order +forcad_nurbs_surface::nurbs_surface%get_order - + -proc~set1~3 - +proc~set1~2 + -forcad_nurbs_volume::nurbs_volume%set1 +forcad_nurbs_surface::nurbs_surface%set1 - + -proc~set1~3->proc~get_order~4 +proc~set1~2->proc~get_order~4 none~set~4 - + -forcad_nurbs_volume::nurbs_volume%set +forcad_nurbs_surface::nurbs_surface%set - + -none~set~4->proc~set1~3 +none~set~4->proc~set1~2 proc~modify_wc~4 - + -forcad_nurbs_volume::nurbs_volume%modify_Wc +forcad_nurbs_surface::nurbs_surface%modify_Wc @@ -392,9 +392,9 @@

    Called by

    proc~modify_xc~4 - + -forcad_nurbs_volume::nurbs_volume%modify_Xc +forcad_nurbs_surface::nurbs_surface%modify_Xc @@ -404,18 +404,18 @@

    Called by

    - + -program~example_nurbs_volume - +program~example_nurbs_surface + -example_nurbs_volume +example_nurbs_surface - + -program~example_nurbs_volume->none~set~4 +program~example_nurbs_surface->none~set~4 @@ -534,7 +534,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_order~5.html b/proc/get_order~5.html index bc5b1c360..94458a0f0 100644 --- a/proc/get_order~5.html +++ b/proc/get_order~5.html @@ -79,20 +79,20 @@

    get_order
  • 5 statements + title=" 0.4% of total for procedures.">7 statements
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_order(this) result(order)

    Type Bound

    -

    bezier_volume

    +

    nurbs_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_volume), + + class(nurbs_curve), intent(in) @@ -178,11 +178,335 @@

    Arguments

    Return Value - integer, (3) + integer


    +
    +
    +

    Calls

    +
    +
    +
    + + + + + +proc~~get_order~5~~CallsGraph + + + +proc~get_order~5 + +forcad_nurbs_curve::nurbs_curve%get_order + + + +proc~get_multiplicity~3 + + +forcad_nurbs_curve::nurbs_curve%get_multiplicity + + + + + +proc~get_order~5->proc~get_multiplicity~3 + + + + + +proc~compute_multiplicity + + +forcad_utils::compute_multiplicity + + + + + +proc~get_multiplicity~3->proc~compute_multiplicity + + + + + +
    + Help +
    + +
    +
    +
    +
    +

    Called by

    +
    +
    +
    + + + + + +proc~~get_order~5~~CalledByGraph + + + +proc~get_order~5 + +forcad_nurbs_curve::nurbs_curve%get_order + + + +proc~set1~3 + + +forcad_nurbs_curve::nurbs_curve%set1 + + + + + +proc~set1~3->proc~get_order~5 + + + + + +none~set~5 + + +forcad_nurbs_curve::nurbs_curve%set + + + + + +none~set~5->proc~set1~3 + + + + + +proc~modify_wc~5 + + +forcad_nurbs_curve::nurbs_curve%modify_Wc + + + + + +proc~modify_wc~5->none~set~5 + + + + + +proc~modify_xc~5 + + +forcad_nurbs_curve::nurbs_curve%modify_Xc + + + + + +proc~modify_xc~5->none~set~5 + + + + + +program~example_nurbs_curve + + +example_nurbs_curve + + + + + +program~example_nurbs_curve->none~set~5 + + + + + +
    + Help +
    + +
    +
    +
    @@ -210,7 +534,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_order~6.html b/proc/get_order~6.html index 96bee518a..1fedb3eda 100644 --- a/proc/get_order~6.html +++ b/proc/get_order~6.html @@ -84,15 +84,15 @@

    get_order
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_order(this) result(order)

    Type Bound

    -

    bezier_curve

    +

    bezier_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_curve), + + class(bezier_surface), intent(in) @@ -178,7 +178,7 @@

    Arguments

    Return Value - integer + integer, (2)

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_wc.html b/proc/get_wc.html index 013b55569..7e871fb4f 100644 --- a/proc/get_wc.html +++ b/proc/get_wc.html @@ -84,15 +84,15 @@

    get_Wc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Wc(this) result(Wc)

    Type Bound

    -

    bezier_surface

    +

    nurbs_volume

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_surface), + + class(nurbs_volume), intent(in) @@ -177,7 +177,7 @@

    Arguments

    Return Value - + real(kind=rk), allocatable, (:)

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_wc~2.html b/proc/get_wc~2.html index bcc663a2e..90e7c148d 100644 --- a/proc/get_wc~2.html +++ b/proc/get_wc~2.html @@ -84,15 +84,15 @@

    get_Wc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Wc(this) result(Wc)

    Type Bound

    -

    nurbs_surface

    +

    bezier_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_surface), + + class(bezier_curve), intent(in) @@ -177,7 +177,7 @@

    Arguments

    Return Value - + real(kind=rk), allocatable, (:)

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_wc~3.html b/proc/get_wc~3.html index 47f8ff617..299ef40e9 100644 --- a/proc/get_wc~3.html +++ b/proc/get_wc~3.html @@ -84,15 +84,15 @@

    get_Wc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Wc(this) result(Wc)

    Type Bound

    -

    nurbs_curve

    +

    bezier_volume

    Arguments

    @@ -160,7 +160,7 @@

    Arguments

    - class(nurbs_curve), + class(bezier_volume), intent(in) @@ -177,7 +177,7 @@

    Arguments

    Return Value - + real(kind=rk), allocatable, (:)

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_wc~4.html b/proc/get_wc~4.html index 79d37c0a5..22f4a6e90 100644 --- a/proc/get_wc~4.html +++ b/proc/get_wc~4.html @@ -84,15 +84,15 @@

    get_Wc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Wc(this) result(Wc)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_volume), + + class(nurbs_surface), intent(in) @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_wc~5.html b/proc/get_wc~5.html index 094f73fb2..5b9cf201e 100644 --- a/proc/get_wc~5.html +++ b/proc/get_wc~5.html @@ -84,15 +84,15 @@

    get_Wc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Wc(this) result(Wc)

    Type Bound

    -

    bezier_volume

    +

    nurbs_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_volume), + + class(nurbs_curve), intent(in) @@ -177,7 +177,7 @@

    Arguments

    Return Value - + real(kind=rk), allocatable, (:)

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_wc~6.html b/proc/get_wc~6.html index 9cf43a398..babad3fa6 100644 --- a/proc/get_wc~6.html +++ b/proc/get_wc~6.html @@ -84,15 +84,15 @@

    get_Wc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Wc(this) result(Wc)

    Type Bound

    -

    bezier_curve

    +

    bezier_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_curve), + + class(bezier_surface), intent(in) @@ -177,7 +177,7 @@

    Arguments

    Return Value - + real(kind=rk), allocatable, (:)

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xc.html b/proc/get_xc.html index 5539f3021..7504b2790 100644 --- a/proc/get_xc.html +++ b/proc/get_xc.html @@ -84,15 +84,15 @@

    get_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Xc(this) result(Xc)

    Type Bound

    -

    bezier_surface

    +

    nurbs_volume

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_surface), + + class(nurbs_volume), intent(in) @@ -177,7 +177,7 @@

    Arguments

    Return Value - + real(kind=rk), allocatable, (:,:)

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xc~2.html b/proc/get_xc~2.html index c8e7f4111..ffb3799a4 100644 --- a/proc/get_xc~2.html +++ b/proc/get_xc~2.html @@ -84,15 +84,15 @@

    get_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Xc(this) result(Xc)

    Type Bound

    -

    nurbs_surface

    +

    bezier_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_surface), + + class(bezier_curve), intent(in) @@ -177,7 +177,7 @@

    Arguments

    Return Value - + real(kind=rk), allocatable, (:,:)

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xc~3.html b/proc/get_xc~3.html index ecd41c31e..8327e24bd 100644 --- a/proc/get_xc~3.html +++ b/proc/get_xc~3.html @@ -84,15 +84,15 @@

    get_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Xc(this) result(Xc)

    Type Bound

    -

    nurbs_curve

    +

    bezier_volume

    Arguments

    @@ -160,7 +160,7 @@

    Arguments

    - class(nurbs_curve), + class(bezier_volume), intent(in) @@ -177,7 +177,7 @@

    Arguments

    Return Value - + real(kind=rk), allocatable, (:,:)

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xc~4.html b/proc/get_xc~4.html index 41b62d80f..a5537d359 100644 --- a/proc/get_xc~4.html +++ b/proc/get_xc~4.html @@ -84,15 +84,15 @@

    get_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Xc(this) result(Xc)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_volume), + + class(nurbs_surface), intent(in) @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xc~5.html b/proc/get_xc~5.html index 3742850a3..dab9c22d6 100644 --- a/proc/get_xc~5.html +++ b/proc/get_xc~5.html @@ -84,15 +84,15 @@

    get_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Xc(this) result(Xc)

    Type Bound

    -

    bezier_volume

    +

    nurbs_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_volume), + + class(nurbs_curve), intent(in) @@ -177,7 +177,7 @@

    Arguments

    Return Value - + real(kind=rk), allocatable, (:,:)

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xc~6.html b/proc/get_xc~6.html index b3880c943..d2c55bf34 100644 --- a/proc/get_xc~6.html +++ b/proc/get_xc~6.html @@ -84,15 +84,15 @@

    get_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Xc(this) result(Xc)

    Type Bound

    -

    bezier_curve

    +

    bezier_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_curve), + + class(bezier_surface), intent(in) @@ -177,7 +177,7 @@

    Arguments

    Return Value - + real(kind=rk), allocatable, (:,:)

    @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xg.html b/proc/get_xg.html index c3d5cfd03..1c867678f 100644 --- a/proc/get_xg.html +++ b/proc/get_xg.html @@ -84,15 +84,15 @@

    get_Xg
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Xg(this) result(Xg)

    Type Bound

    -

    bezier_surface

    +

    nurbs_volume

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_surface), + + class(nurbs_volume), intent(in) @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xg~2.html b/proc/get_xg~2.html index d1cffdcbe..b2e4a5b3e 100644 --- a/proc/get_xg~2.html +++ b/proc/get_xg~2.html @@ -84,15 +84,15 @@

    get_Xg
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Xg(this) result(Xg)

    Type Bound

    -

    nurbs_surface

    +

    bezier_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_surface), + + class(bezier_curve), intent(in) @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xg~3.html b/proc/get_xg~3.html index f65c32ffe..0db9d085f 100644 --- a/proc/get_xg~3.html +++ b/proc/get_xg~3.html @@ -84,15 +84,15 @@

    get_Xg
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Xg(this) result(Xg)

    Type Bound

    -

    nurbs_curve

    +

    bezier_volume

    Arguments

    @@ -160,7 +160,7 @@

    Arguments

    - class(nurbs_curve), + class(bezier_volume), intent(in) @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xg~4.html b/proc/get_xg~4.html index 068703534..fdffa65b7 100644 --- a/proc/get_xg~4.html +++ b/proc/get_xg~4.html @@ -84,15 +84,15 @@

    get_Xg
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Xg(this) result(Xg)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_volume), + + class(nurbs_surface), intent(in) @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xg~5.html b/proc/get_xg~5.html index bce28d950..6e810bb9e 100644 --- a/proc/get_xg~5.html +++ b/proc/get_xg~5.html @@ -84,15 +84,15 @@

    get_Xg
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Xg(this) result(Xg)

    Type Bound

    -

    bezier_volume

    +

    nurbs_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_volume), + + class(nurbs_curve), intent(in) @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xg~6.html b/proc/get_xg~6.html index 64a27ff73..1341f0d66 100644 --- a/proc/get_xg~6.html +++ b/proc/get_xg~6.html @@ -84,15 +84,15 @@

    get_Xg
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Xg(this) result(Xg)

    Type Bound

    -

    bezier_curve

    +

    bezier_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_curve), + + class(bezier_surface), intent(in) @@ -210,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xt.html b/proc/get_xt.html index b6994db80..b73a9e750 100644 --- a/proc/get_xt.html +++ b/proc/get_xt.html @@ -79,20 +79,20 @@

    get_Xt
  • 20 statements + title=" 1.3% of total for procedures.">26 statements
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Xt(this, dir) result(Xt)

    Type Bound

    -

    bezier_surface

    +

    nurbs_volume

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_surface), + + class(nurbs_volume), intent(in) @@ -225,7 +225,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xt~2.html b/proc/get_xt~2.html index 8547e7af0..bd6950879 100644 --- a/proc/get_xt~2.html +++ b/proc/get_xt~2.html @@ -79,20 +79,20 @@

    get_Xt
  • 20 statements + title=" 0.5% of total for procedures.">9 statements
  • - Source File + Source File
  • -

    private pure function get_Xt(this, dir) result(Xt) +

    private pure function get_Xt(this) result(Xt)

    Type Bound

    -

    nurbs_surface

    +

    bezier_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - - - - - - - @@ -192,7 +177,7 @@

    Arguments

    Return Value - + real(kind=rk), allocatable, (:)

    @@ -225,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xt~3.html b/proc/get_xt~3.html index 57bef06fe..89e835647 100644 --- a/proc/get_xt~3.html +++ b/proc/get_xt~3.html @@ -79,20 +79,20 @@

    get_Xt
  • 9 statements + title=" 1.3% of total for procedures.">26 statements
  • - Source File + Source File
  • -

    private pure function get_Xt(this) result(Xt) +

    private pure function get_Xt(this, dir) result(Xt)

    -

    Type Bound

    -

    nurbs_curve

    Arguments

    - - class(nurbs_surface), + + class(bezier_curve), intent(in) @@ -170,21 +170,6 @@

    Arguments

    this -
    - - integer, - intent(in) - - ::dir -
    @@ -160,7 +158,7 @@

    Arguments

    + + + + + + + + @@ -210,7 +223,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xt~4.html b/proc/get_xt~4.html index e234166a5..6ce369938 100644 --- a/proc/get_xt~4.html +++ b/proc/get_xt~4.html @@ -79,20 +79,20 @@

    get_Xt
  • 26 statements + title=" 1.0% of total for procedures.">20 statements
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure function get_Xt(this, dir) result(Xt)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_surface

    Arguments

    - class(nurbs_curve), + class(bezier_volume), intent(in) @@ -170,6 +168,21 @@

    Arguments

    this +
    + + integer, + intent(in) + + ::dir +
    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_volume), + + class(nurbs_surface), intent(in) @@ -225,7 +225,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xt~5.html b/proc/get_xt~5.html index 8b58c0568..f14b02b0f 100644 --- a/proc/get_xt~5.html +++ b/proc/get_xt~5.html @@ -79,20 +79,20 @@

    get_Xt
  • 26 statements + title=" 0.5% of total for procedures.">9 statements
  • - Source File + Source File
  • -

    private pure function get_Xt(this, dir) result(Xt) +

    private pure function get_Xt(this) result(Xt)

    +

    Type Bound

    +

    nurbs_curve

    Arguments

    @@ -157,8 +159,8 @@

    Arguments

    - - - - - - - - @@ -190,7 +177,7 @@

    Arguments

    Return Value - + real(kind=rk), allocatable, (:)

    @@ -223,7 +210,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/get_xt~6.html b/proc/get_xt~6.html index 2885b42d7..5cf621799 100644 --- a/proc/get_xt~6.html +++ b/proc/get_xt~6.html @@ -79,20 +79,20 @@

    get_Xt
  • 9 statements + title=" 1.0% of total for procedures.">20 statements
  • - Source File + Source File
  • -

    private pure function get_Xt(this) result(Xt) +

    private pure function get_Xt(this, dir) result(Xt)

    Type Bound

    -

    bezier_curve

    +

    bezier_surface

    Arguments

    - - class(bezier_volume), + + class(nurbs_curve), intent(in) @@ -168,21 +170,6 @@

    Arguments

    this -
    - - integer, - intent(in) - - ::dir -
    @@ -159,8 +159,8 @@

    Arguments

    + + + + + + + + @@ -210,7 +225,7 @@

    Return Value

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/kron.html b/proc/kron.html index 34abfca1e..58941a44b 100644 --- a/proc/kron.html +++ b/proc/kron.html @@ -221,9 +221,9 @@

    Called by

    proc~create - - -forcad_bezier_surface::bezier_surface%create + + +forcad_nurbs_volume::nurbs_volume%create @@ -233,27 +233,27 @@

    Called by

    - + -proc~create~2 - - -forcad_nurbs_surface::nurbs_surface%create +proc~create~3 + + +forcad_bezier_volume::bezier_volume%create - + -proc~create~2->proc~kron +proc~create~3->proc~kron proc~create~4 - + -forcad_nurbs_volume::nurbs_volume%create +forcad_nurbs_surface::nurbs_surface%create @@ -263,18 +263,18 @@

    Called by

    - + -proc~create~5 - +proc~create~6 + -forcad_bezier_volume::bezier_volume%create +forcad_bezier_surface::bezier_surface%create - + -proc~create~5->proc~kron +proc~create~6->proc~kron @@ -282,61 +282,61 @@

    Called by

    program~example_bezier_surface - -example_bezier_surface + +example_bezier_surface - - -program~example_bezier_surface->proc~create - - + + +program~example_bezier_surface->proc~create~6 + + program~example_bezier_volume - -example_bezier_volume + +example_bezier_volume - - -program~example_bezier_volume->proc~create~5 - - + + +program~example_bezier_volume->proc~create~3 + + program~example_nurbs_surface - -example_nurbs_surface + +example_nurbs_surface - - -program~example_nurbs_surface->proc~create~2 - - + + +program~example_nurbs_surface->proc~create~4 + + program~example_nurbs_volume - -example_nurbs_volume + +example_nurbs_volume - - -program~example_nurbs_volume->proc~create~4 - - + + +program~example_nurbs_volume->proc~create + + @@ -449,7 +449,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/modify_wc.html b/proc/modify_wc.html index 4ccffe96b..e71eacd32 100644 --- a/proc/modify_wc.html +++ b/proc/modify_wc.html @@ -84,15 +84,15 @@

    modify_Wc
  • - Source File + Source File
  • @@ -142,10 +142,9 @@

    private pure subroutine modify_Wc(this, W, num)

    -

    Modify weight of a control point given its index.

    Type Bound

    -

    bezier_surface

    +

    nurbs_volume

    Arguments

    - - class(bezier_curve), + + class(bezier_surface), intent(in) @@ -170,6 +170,21 @@

    Arguments

    this +
    + + integer, + intent(in) + + ::dir +
    @@ -160,8 +159,8 @@

    Arguments

    - - class(bezier_surface), + + class(nurbs_volume), intent(inout) @@ -218,35 +217,171 @@

    Calls

    - - + + proc~~modify_wc~~CallsGraph - + proc~modify_wc - -forcad_bezier_surface::bezier_surface%modify_Wc + +forcad_nurbs_volume::nurbs_volume%modify_Wc - + -proc~set - - -forcad_bezier_surface::bezier_surface%set +none~set + + +forcad_nurbs_volume::nurbs_volume%set - + -proc~modify_wc->proc~set - - +proc~modify_wc->none~set + + + + + +proc~set1 + + +forcad_nurbs_volume::nurbs_volume%set1 + + + + + +none~set->proc~set1 + + + + + +proc~set2 + + +forcad_nurbs_volume::nurbs_volume%set2 + + + + + +none~set->proc~set2 + + + + + +proc~get_nc + + +forcad_nurbs_volume::nurbs_volume%get_nc + + + + + +proc~set1->proc~get_nc + + + + + +proc~get_order + + +forcad_nurbs_volume::nurbs_volume%get_order + + + + + +proc~set1->proc~get_order + + + + + +proc~compute_knot_vector + + +forcad_utils::compute_knot_vector + + + + + +proc~set2->proc~compute_knot_vector + + + + + +proc~set2->proc~get_nc + + + + + +proc~repelem + + +forcad_utils::repelem + + + + + +proc~compute_knot_vector->proc~repelem + + + + + +proc~compute_multiplicity + + +forcad_utils::compute_multiplicity + + + + + +proc~get_nc->proc~compute_multiplicity + + + + + +proc~get_multiplicity + + +forcad_nurbs_volume::nurbs_volume%get_multiplicity + + + + + +proc~get_order->proc~get_multiplicity + + + + + +proc~get_multiplicity->proc~compute_multiplicity + + -
    +

    diff --git a/proc/modify_wc~2.html b/proc/modify_wc~2.html index 29451c1f0..d72b08435 100644 --- a/proc/modify_wc~2.html +++ b/proc/modify_wc~2.html @@ -84,15 +84,15 @@

    modify_Wc
  • - Source File + Source File
  • @@ -142,9 +142,10 @@

    private pure subroutine modify_Wc(this, W, num)

    +

    Modify weight of a control point given its index.

    Type Bound

    -

    nurbs_surface

    +

    bezier_curve

    Arguments

    @@ -159,8 +160,8 @@

    Arguments

    - - class(nurbs_surface), + + class(bezier_curve), intent(inout) @@ -217,171 +218,35 @@

    Calls

    - - + + proc~~modify_wc~2~~CallsGraph - + proc~modify_wc~2 - -forcad_nurbs_surface::nurbs_surface%modify_Wc + +forcad_bezier_curve::bezier_curve%modify_Wc - + -none~set~2 - - -forcad_nurbs_surface::nurbs_surface%set +proc~set + + +forcad_bezier_curve::bezier_curve%set - + -proc~modify_wc~2->none~set~2 - - - - - -proc~set1 - - -forcad_nurbs_surface::nurbs_surface%set1 - - - - - -none~set~2->proc~set1 - - - - - -proc~set2 - - -forcad_nurbs_surface::nurbs_surface%set2 - - - - - -none~set~2->proc~set2 - - - - - -proc~get_nc~2 - - -forcad_nurbs_surface::nurbs_surface%get_nc - - - - - -proc~set1->proc~get_nc~2 - - - - - -proc~get_order~2 - - -forcad_nurbs_surface::nurbs_surface%get_order - - - - - -proc~set1->proc~get_order~2 - - - - - -proc~compute_knot_vector - - -forcad_utils::compute_knot_vector - - - - - -proc~set2->proc~compute_knot_vector - - - - - -proc~set2->proc~get_nc~2 - - - - - -proc~repelem - - -forcad_utils::repelem - - - - - -proc~compute_knot_vector->proc~repelem - - - - - -proc~compute_multiplicity - - -forcad_utils::compute_multiplicity - - - - - -proc~get_nc~2->proc~compute_multiplicity - - - - - -proc~get_multiplicity - - -forcad_nurbs_surface::nurbs_surface%get_multiplicity - - - - - -proc~get_order~2->proc~get_multiplicity - - - - - -proc~get_multiplicity->proc~compute_multiplicity - - +proc~modify_wc~2->proc~set + + -
    +

    diff --git a/proc/modify_wc~3.html b/proc/modify_wc~3.html index d643c84c4..e9bbd72e0 100644 --- a/proc/modify_wc~3.html +++ b/proc/modify_wc~3.html @@ -84,15 +84,15 @@

    modify_Wc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine modify_Wc(this, W, num)

    Type Bound

    -

    nurbs_curve

    +

    bezier_volume

    Arguments

    @@ -160,7 +160,7 @@

    Arguments

    - class(nurbs_curve), + class(bezier_volume), intent(inout) @@ -217,144 +217,35 @@

    Calls

    - - + + proc~~modify_wc~3~~CallsGraph - + proc~modify_wc~3 - -forcad_nurbs_curve::nurbs_curve%modify_Wc + +forcad_bezier_volume::bezier_volume%modify_Wc - + -none~set~3 - - -forcad_nurbs_curve::nurbs_curve%set +proc~set~2 + + +forcad_bezier_volume::bezier_volume%set - + -proc~modify_wc~3->none~set~3 - - - - - -proc~set1~2 - - -forcad_nurbs_curve::nurbs_curve%set1 - - - - - -none~set~3->proc~set1~2 - - - - - -proc~set2~2 - - -forcad_nurbs_curve::nurbs_curve%set2 - - - - - -none~set~3->proc~set2~2 - - - - - -proc~get_order~3 - - -forcad_nurbs_curve::nurbs_curve%get_order - - - - - -proc~set1~2->proc~get_order~3 - - - - - -proc~compute_knot_vector - - -forcad_utils::compute_knot_vector - - - - - -proc~set2~2->proc~compute_knot_vector - - - - - -proc~repelem - - -forcad_utils::repelem - - - - - -proc~compute_knot_vector->proc~repelem - - - - - -proc~get_multiplicity~2 - - -forcad_nurbs_curve::nurbs_curve%get_multiplicity - - - - - -proc~get_order~3->proc~get_multiplicity~2 - - - - - -proc~compute_multiplicity - - -forcad_utils::compute_multiplicity - - - - - -proc~get_multiplicity~2->proc~compute_multiplicity - - +proc~modify_wc~3->proc~set~2 + + -
    +

    diff --git a/proc/modify_wc~4.html b/proc/modify_wc~4.html index ceef38e9e..226da283b 100644 --- a/proc/modify_wc~4.html +++ b/proc/modify_wc~4.html @@ -84,15 +84,15 @@

    modify_Wc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine modify_Wc(this, W, num)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_volume), + + class(nurbs_surface), intent(inout) @@ -226,14 +226,14 @@

    Calls

    proc~modify_wc~4 -forcad_nurbs_volume::nurbs_volume%modify_Wc +forcad_nurbs_surface::nurbs_surface%modify_Wc none~set~4 - + -forcad_nurbs_volume::nurbs_volume%set +forcad_nurbs_surface::nurbs_surface%set @@ -243,63 +243,63 @@

    Calls

    - + -proc~set1~3 - +proc~set1~2 + -forcad_nurbs_volume::nurbs_volume%set1 +forcad_nurbs_surface::nurbs_surface%set1 - + -none~set~4->proc~set1~3 +none~set~4->proc~set1~2 - + -proc~set2~3 - +proc~set2~2 + -forcad_nurbs_volume::nurbs_volume%set2 +forcad_nurbs_surface::nurbs_surface%set2 - + -none~set~4->proc~set2~3 +none~set~4->proc~set2~2 proc~get_nc~4 - + -forcad_nurbs_volume::nurbs_volume%get_nc +forcad_nurbs_surface::nurbs_surface%get_nc - + -proc~set1~3->proc~get_nc~4 +proc~set1~2->proc~get_nc~4 proc~get_order~4 - + -forcad_nurbs_volume::nurbs_volume%get_order +forcad_nurbs_surface::nurbs_surface%get_order - + -proc~set1~3->proc~get_order~4 +proc~set1~2->proc~get_order~4 @@ -312,15 +312,15 @@

    Calls

    - + -proc~set2~3->proc~compute_knot_vector +proc~set2~2->proc~compute_knot_vector - + -proc~set2~3->proc~get_nc~4 +proc~set2~2->proc~get_nc~4 @@ -354,24 +354,24 @@

    Calls

    - + -proc~get_multiplicity~3 - +proc~get_multiplicity~2 + -forcad_nurbs_volume::nurbs_volume%get_multiplicity +forcad_nurbs_surface::nurbs_surface%get_multiplicity - + -proc~get_order~4->proc~get_multiplicity~3 +proc~get_order~4->proc~get_multiplicity~2 - + -proc~get_multiplicity~3->proc~compute_multiplicity +proc~get_multiplicity~2->proc~compute_multiplicity @@ -490,7 +490,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/modify_wc~5.html b/proc/modify_wc~5.html index 559bc63c2..7730b98d4 100644 --- a/proc/modify_wc~5.html +++ b/proc/modify_wc~5.html @@ -84,15 +84,15 @@

    modify_Wc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine modify_Wc(this, W, num)

    Type Bound

    -

    bezier_volume

    +

    nurbs_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(bezier_volume), + + class(nurbs_curve), intent(inout) @@ -217,35 +217,144 @@

    Calls

    - - + + proc~~modify_wc~5~~CallsGraph - + proc~modify_wc~5 - -forcad_bezier_volume::bezier_volume%modify_Wc + +forcad_nurbs_curve::nurbs_curve%modify_Wc - + -proc~set~2 - - -forcad_bezier_volume::bezier_volume%set +none~set~5 + + +forcad_nurbs_curve::nurbs_curve%set - + -proc~modify_wc~5->proc~set~2 - - +proc~modify_wc~5->none~set~5 + + + + + +proc~set1~3 + + +forcad_nurbs_curve::nurbs_curve%set1 + + + + + +none~set~5->proc~set1~3 + + + + + +proc~set2~3 + + +forcad_nurbs_curve::nurbs_curve%set2 + + + + + +none~set~5->proc~set2~3 + + + + + +proc~get_order~5 + + +forcad_nurbs_curve::nurbs_curve%get_order + + + + + +proc~set1~3->proc~get_order~5 + + + + + +proc~compute_knot_vector + + +forcad_utils::compute_knot_vector + + + + + +proc~set2~3->proc~compute_knot_vector + + + + + +proc~repelem + + +forcad_utils::repelem + + + + + +proc~compute_knot_vector->proc~repelem + + + + + +proc~get_multiplicity~3 + + +forcad_nurbs_curve::nurbs_curve%get_multiplicity + + + + + +proc~get_order~5->proc~get_multiplicity~3 + + + + + +proc~compute_multiplicity + + +forcad_utils::compute_multiplicity + + + + + +proc~get_multiplicity~3->proc~compute_multiplicity + + -
    +

    diff --git a/proc/modify_wc~6.html b/proc/modify_wc~6.html index e0cd7f7ec..45831c189 100644 --- a/proc/modify_wc~6.html +++ b/proc/modify_wc~6.html @@ -84,15 +84,15 @@

    modify_Wc
  • - Source File + Source File
  • @@ -145,7 +145,7 @@

    private pure subroutine modify_Wc(this, W, num)

    Modify weight of a control point given its index.

    Type Bound

    -

    bezier_curve

    +

    bezier_surface

    Arguments

    @@ -160,8 +160,8 @@

    Arguments

    - - class(bezier_curve), + + class(bezier_surface), intent(inout) @@ -218,31 +218,31 @@

    Calls

    - + proc~~modify_wc~6~~CallsGraph - + proc~modify_wc~6 - -forcad_bezier_curve::bezier_curve%modify_Wc + +forcad_bezier_surface::bezier_surface%modify_Wc proc~set~3 - - -forcad_bezier_curve::bezier_curve%set + + +forcad_bezier_surface::bezier_surface%set proc~modify_wc~6->proc~set~3 - - + + @@ -355,7 +355,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/modify_xc.html b/proc/modify_xc.html index 945f0604c..054afb61d 100644 --- a/proc/modify_xc.html +++ b/proc/modify_xc.html @@ -84,15 +84,15 @@

    modify_Xc
  • - Source File + Source File
  • @@ -142,10 +142,9 @@

    private pure subroutine modify_Xc(this, X, num, dir)

    -

    Modify coordinate of a control point given its index and direction.

    Type Bound

    -

    bezier_surface

    +

    nurbs_volume

    Arguments

    @@ -160,8 +159,8 @@

    Arguments

    @@ -233,35 +232,171 @@

    Calls

    - - + + proc~~modify_xc~~CallsGraph - + proc~modify_xc - -forcad_bezier_surface::bezier_surface%modify_Xc + +forcad_nurbs_volume::nurbs_volume%modify_Xc - + -proc~set - - -forcad_bezier_surface::bezier_surface%set +none~set + + +forcad_nurbs_volume::nurbs_volume%set - + -proc~modify_xc->proc~set - - +proc~modify_xc->none~set + + + + + +proc~set1 + + +forcad_nurbs_volume::nurbs_volume%set1 + + + + + +none~set->proc~set1 + + + + + +proc~set2 + + +forcad_nurbs_volume::nurbs_volume%set2 + + + + + +none~set->proc~set2 + + + + + +proc~get_nc + + +forcad_nurbs_volume::nurbs_volume%get_nc + + + + + +proc~set1->proc~get_nc + + + + + +proc~get_order + + +forcad_nurbs_volume::nurbs_volume%get_order + + + + + +proc~set1->proc~get_order + + + + + +proc~compute_knot_vector + + +forcad_utils::compute_knot_vector + + + + + +proc~set2->proc~compute_knot_vector + + + + + +proc~set2->proc~get_nc + + + + + +proc~repelem + + +forcad_utils::repelem + + + + + +proc~compute_knot_vector->proc~repelem + + + + + +proc~compute_multiplicity + + +forcad_utils::compute_multiplicity + + + + + +proc~get_nc->proc~compute_multiplicity + + + + + +proc~get_multiplicity + + +forcad_nurbs_volume::nurbs_volume%get_multiplicity + + + + + +proc~get_order->proc~get_multiplicity + + + + + +proc~get_multiplicity->proc~compute_multiplicity + + -
    +

    diff --git a/proc/modify_xc~2.html b/proc/modify_xc~2.html index a3e95c8c1..4ad369a34 100644 --- a/proc/modify_xc~2.html +++ b/proc/modify_xc~2.html @@ -84,15 +84,15 @@

    modify_Xc
  • - Source File + Source File
  • @@ -142,9 +142,10 @@

    private pure subroutine modify_Xc(this, X, num, dir)

    +

    Modify coordinate of a control point given its index and direction.

    Type Bound

    -

    nurbs_surface

    +

    bezier_curve

    Arguments

    - - class(bezier_surface), + + class(nurbs_volume), intent(inout) @@ -205,7 +204,7 @@

    Arguments

    - + integer, intent(in)
    @@ -159,8 +160,8 @@

    Arguments

    @@ -232,171 +233,35 @@

    Calls

    - - + + proc~~modify_xc~2~~CallsGraph - + proc~modify_xc~2 - -forcad_nurbs_surface::nurbs_surface%modify_Xc + +forcad_bezier_curve::bezier_curve%modify_Xc - + -none~set~2 - - -forcad_nurbs_surface::nurbs_surface%set +proc~set + + +forcad_bezier_curve::bezier_curve%set - + -proc~modify_xc~2->none~set~2 - - - - - -proc~set1 - - -forcad_nurbs_surface::nurbs_surface%set1 - - - - - -none~set~2->proc~set1 - - - - - -proc~set2 - - -forcad_nurbs_surface::nurbs_surface%set2 - - - - - -none~set~2->proc~set2 - - - - - -proc~get_nc~2 - - -forcad_nurbs_surface::nurbs_surface%get_nc - - - - - -proc~set1->proc~get_nc~2 - - - - - -proc~get_order~2 - - -forcad_nurbs_surface::nurbs_surface%get_order - - - - - -proc~set1->proc~get_order~2 - - - - - -proc~compute_knot_vector - - -forcad_utils::compute_knot_vector - - - - - -proc~set2->proc~compute_knot_vector - - - - - -proc~set2->proc~get_nc~2 - - - - - -proc~repelem - - -forcad_utils::repelem - - - - - -proc~compute_knot_vector->proc~repelem - - - - - -proc~compute_multiplicity - - -forcad_utils::compute_multiplicity - - - - - -proc~get_nc~2->proc~compute_multiplicity - - - - - -proc~get_multiplicity - - -forcad_nurbs_surface::nurbs_surface%get_multiplicity - - - - - -proc~get_order~2->proc~get_multiplicity - - - - - -proc~get_multiplicity->proc~compute_multiplicity - - +proc~modify_xc~2->proc~set + + -
    +

    diff --git a/proc/modify_xc~3.html b/proc/modify_xc~3.html index 2b4c26a76..943445d3c 100644 --- a/proc/modify_xc~3.html +++ b/proc/modify_xc~3.html @@ -84,15 +84,15 @@

    modify_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine modify_Xc(this, X, num, dir)

    Type Bound

    -

    nurbs_curve

    +

    bezier_volume

    Arguments

    - - class(nurbs_surface), + + class(bezier_curve), intent(inout) @@ -204,7 +205,7 @@

    Arguments

    - + integer, intent(in)
    @@ -160,7 +160,7 @@

    Arguments

    - class(nurbs_curve), + class(bezier_volume), intent(inout) @@ -232,144 +232,35 @@

    Calls

    - - + + proc~~modify_xc~3~~CallsGraph - + proc~modify_xc~3 - -forcad_nurbs_curve::nurbs_curve%modify_Xc + +forcad_bezier_volume::bezier_volume%modify_Xc - + -none~set~3 - - -forcad_nurbs_curve::nurbs_curve%set +proc~set~2 + + +forcad_bezier_volume::bezier_volume%set - + -proc~modify_xc~3->none~set~3 - - - - - -proc~set1~2 - - -forcad_nurbs_curve::nurbs_curve%set1 - - - - - -none~set~3->proc~set1~2 - - - - - -proc~set2~2 - - -forcad_nurbs_curve::nurbs_curve%set2 - - - - - -none~set~3->proc~set2~2 - - - - - -proc~get_order~3 - - -forcad_nurbs_curve::nurbs_curve%get_order - - - - - -proc~set1~2->proc~get_order~3 - - - - - -proc~compute_knot_vector - - -forcad_utils::compute_knot_vector - - - - - -proc~set2~2->proc~compute_knot_vector - - - - - -proc~repelem - - -forcad_utils::repelem - - - - - -proc~compute_knot_vector->proc~repelem - - - - - -proc~get_multiplicity~2 - - -forcad_nurbs_curve::nurbs_curve%get_multiplicity - - - - - -proc~get_order~3->proc~get_multiplicity~2 - - - - - -proc~compute_multiplicity - - -forcad_utils::compute_multiplicity - - - - - -proc~get_multiplicity~2->proc~compute_multiplicity - - +proc~modify_xc~3->proc~set~2 + + -
    +

    diff --git a/proc/modify_xc~4.html b/proc/modify_xc~4.html index f1e8ee2c8..047f32f5d 100644 --- a/proc/modify_xc~4.html +++ b/proc/modify_xc~4.html @@ -84,15 +84,15 @@

    modify_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine modify_Xc(this, X, num, dir)

    Type Bound

    -

    nurbs_volume

    +

    nurbs_surface

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    - - class(nurbs_volume), + + class(nurbs_surface), intent(inout) @@ -241,14 +241,14 @@

    Calls

    proc~modify_xc~4 -forcad_nurbs_volume::nurbs_volume%modify_Xc +forcad_nurbs_surface::nurbs_surface%modify_Xc none~set~4 - + -forcad_nurbs_volume::nurbs_volume%set +forcad_nurbs_surface::nurbs_surface%set @@ -258,63 +258,63 @@

    Calls

    - + -proc~set1~3 - +proc~set1~2 + -forcad_nurbs_volume::nurbs_volume%set1 +forcad_nurbs_surface::nurbs_surface%set1 - + -none~set~4->proc~set1~3 +none~set~4->proc~set1~2 - + -proc~set2~3 - +proc~set2~2 + -forcad_nurbs_volume::nurbs_volume%set2 +forcad_nurbs_surface::nurbs_surface%set2 - + -none~set~4->proc~set2~3 +none~set~4->proc~set2~2 proc~get_nc~4 - + -forcad_nurbs_volume::nurbs_volume%get_nc +forcad_nurbs_surface::nurbs_surface%get_nc - + -proc~set1~3->proc~get_nc~4 +proc~set1~2->proc~get_nc~4 proc~get_order~4 - + -forcad_nurbs_volume::nurbs_volume%get_order +forcad_nurbs_surface::nurbs_surface%get_order - + -proc~set1~3->proc~get_order~4 +proc~set1~2->proc~get_order~4 @@ -327,15 +327,15 @@

    Calls

    - + -proc~set2~3->proc~compute_knot_vector +proc~set2~2->proc~compute_knot_vector - + -proc~set2~3->proc~get_nc~4 +proc~set2~2->proc~get_nc~4 @@ -369,24 +369,24 @@

    Calls

    - + -proc~get_multiplicity~3 - +proc~get_multiplicity~2 + -forcad_nurbs_volume::nurbs_volume%get_multiplicity +forcad_nurbs_surface::nurbs_surface%get_multiplicity - + -proc~get_order~4->proc~get_multiplicity~3 +proc~get_order~4->proc~get_multiplicity~2 - + -proc~get_multiplicity~3->proc~compute_multiplicity +proc~get_multiplicity~2->proc~compute_multiplicity @@ -505,7 +505,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/modify_xc~5.html b/proc/modify_xc~5.html index 160a9139d..efe404618 100644 --- a/proc/modify_xc~5.html +++ b/proc/modify_xc~5.html @@ -84,15 +84,15 @@

    modify_Xc
  • - Source File + Source File
  • @@ -144,7 +144,7 @@

    private pure subroutine modify_Xc(this, X, num, dir)

    Type Bound

    -

    bezier_volume

    +

    nurbs_curve

    Arguments

    @@ -159,8 +159,8 @@

    Arguments

    @@ -232,35 +232,144 @@

    Calls

    - - + + proc~~modify_xc~5~~CallsGraph - + proc~modify_xc~5 - -forcad_bezier_volume::bezier_volume%modify_Xc + +forcad_nurbs_curve::nurbs_curve%modify_Xc - + -proc~set~2 - - -forcad_bezier_volume::bezier_volume%set +none~set~5 + + +forcad_nurbs_curve::nurbs_curve%set - + -proc~modify_xc~5->proc~set~2 - - +proc~modify_xc~5->none~set~5 + + + + + +proc~set1~3 + + +forcad_nurbs_curve::nurbs_curve%set1 + + + + + +none~set~5->proc~set1~3 + + + + + +proc~set2~3 + + +forcad_nurbs_curve::nurbs_curve%set2 + + + + + +none~set~5->proc~set2~3 + + + + + +proc~get_order~5 + + +forcad_nurbs_curve::nurbs_curve%get_order + + + + + +proc~set1~3->proc~get_order~5 + + + + + +proc~compute_knot_vector + + +forcad_utils::compute_knot_vector + + + + + +proc~set2~3->proc~compute_knot_vector + + + + + +proc~repelem + + +forcad_utils::repelem + + + + + +proc~compute_knot_vector->proc~repelem + + + + + +proc~get_multiplicity~3 + + +forcad_nurbs_curve::nurbs_curve%get_multiplicity + + + + + +proc~get_order~5->proc~get_multiplicity~3 + + + + + +proc~compute_multiplicity + + +forcad_utils::compute_multiplicity + + + + + +proc~get_multiplicity~3->proc~compute_multiplicity + + -
    +

    diff --git a/proc/modify_xc~6.html b/proc/modify_xc~6.html index 09dcfa332..ec6167b5d 100644 --- a/proc/modify_xc~6.html +++ b/proc/modify_xc~6.html @@ -84,15 +84,15 @@

    modify_Xc
  • - Source File + Source File
  • @@ -145,7 +145,7 @@

    private pure subroutine modify_Xc(this, X, num, dir)

    Modify coordinate of a control point given its index and direction.

    Type Bound

    -

    bezier_curve

    +

    bezier_surface

    Arguments

    - - class(bezier_volume), + + class(nurbs_curve), intent(inout) @@ -204,7 +204,7 @@

    Arguments

    - + integer, intent(in)
    @@ -160,8 +160,8 @@

    Arguments

    - - class(bezier_curve), + + class(bezier_surface), intent(inout) @@ -233,31 +233,31 @@

    Calls

    - + proc~~modify_xc~6~~CallsGraph - + proc~modify_xc~6 - -forcad_bezier_curve::bezier_curve%modify_Xc + +forcad_bezier_surface::bezier_surface%modify_Xc proc~set~3 - - -forcad_bezier_curve::bezier_curve%set + + +forcad_bezier_surface::bezier_surface%set proc~modify_xc~6->proc~set~3 - - + + @@ -370,7 +370,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/ndgrid2.html b/proc/ndgrid2.html index 38dc4e167..ed3cf523b 100644 --- a/proc/ndgrid2.html +++ b/proc/ndgrid2.html @@ -244,9 +244,9 @@

    Called by

    proc~create - - -forcad_bezier_surface::bezier_surface%create + + +forcad_nurbs_volume::nurbs_volume%create @@ -256,27 +256,27 @@

    Called by

    - + -proc~create~2 - - -forcad_nurbs_surface::nurbs_surface%create +proc~create~3 + + +forcad_bezier_volume::bezier_volume%create - + -proc~create~2->interface~ndgrid - - +proc~create~3->interface~ndgrid + + proc~create~4 - + -forcad_nurbs_volume::nurbs_volume%create +forcad_nurbs_surface::nurbs_surface%create @@ -286,18 +286,18 @@

    Called by

    - + -proc~create~5 - +proc~create~6 + -forcad_bezier_volume::bezier_volume%create +forcad_bezier_surface::bezier_surface%create - + -proc~create~5->interface~ndgrid +proc~create~6->interface~ndgrid @@ -305,61 +305,61 @@

    Called by

    program~example_bezier_surface - -example_bezier_surface + +example_bezier_surface - - -program~example_bezier_surface->proc~create - - + + +program~example_bezier_surface->proc~create~6 + + program~example_bezier_volume - -example_bezier_volume + +example_bezier_volume - - -program~example_bezier_volume->proc~create~5 - - + + +program~example_bezier_volume->proc~create~3 + + program~example_nurbs_surface - -example_nurbs_surface + +example_nurbs_surface - - -program~example_nurbs_surface->proc~create~2 - - + + +program~example_nurbs_surface->proc~create~4 + + program~example_nurbs_volume - -example_nurbs_volume + +example_nurbs_volume - - -program~example_nurbs_volume->proc~create~4 - - + + +program~example_nurbs_volume->proc~create + + @@ -476,7 +476,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/ndgrid3.html b/proc/ndgrid3.html index 54221e258..462173861 100644 --- a/proc/ndgrid3.html +++ b/proc/ndgrid3.html @@ -259,9 +259,9 @@

    Called by

    proc~create - - -forcad_bezier_surface::bezier_surface%create + + +forcad_nurbs_volume::nurbs_volume%create @@ -271,27 +271,27 @@

    Called by

    - + -proc~create~2 - - -forcad_nurbs_surface::nurbs_surface%create +proc~create~3 + + +forcad_bezier_volume::bezier_volume%create - + -proc~create~2->interface~ndgrid - - +proc~create~3->interface~ndgrid + + proc~create~4 - + -forcad_nurbs_volume::nurbs_volume%create +forcad_nurbs_surface::nurbs_surface%create @@ -301,18 +301,18 @@

    Called by

    - + -proc~create~5 - +proc~create~6 + -forcad_bezier_volume::bezier_volume%create +forcad_bezier_surface::bezier_surface%create - + -proc~create~5->interface~ndgrid +proc~create~6->interface~ndgrid @@ -320,61 +320,61 @@

    Called by

    program~example_bezier_surface - -example_bezier_surface + +example_bezier_surface - - -program~example_bezier_surface->proc~create - - + + +program~example_bezier_surface->proc~create~6 + + program~example_bezier_volume - -example_bezier_volume + +example_bezier_volume - - -program~example_bezier_volume->proc~create~5 - - + + +program~example_bezier_volume->proc~create~3 + + program~example_nurbs_surface - -example_nurbs_surface + +example_nurbs_surface - - -program~example_nurbs_surface->proc~create~2 - - + + +program~example_nurbs_surface->proc~create~4 + + program~example_nurbs_volume - -example_nurbs_volume + +example_nurbs_volume - - -program~example_nurbs_volume->proc~create~4 - - + + +program~example_nurbs_volume->proc~create + + @@ -491,7 +491,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/repelem.html b/proc/repelem.html index c2ab83886..13d6fe3d1 100644 --- a/proc/repelem.html +++ b/proc/repelem.html @@ -242,9 +242,9 @@

    Called by

    proc~set2 - + -forcad_nurbs_surface::nurbs_surface%set2 +forcad_nurbs_volume::nurbs_volume%set2 @@ -257,24 +257,24 @@

    Called by

    proc~set2~2 - - -forcad_nurbs_curve::nurbs_curve%set2 + + +forcad_nurbs_surface::nurbs_surface%set2 proc~set2~2->proc~compute_knot_vector - - + + proc~set2~3 - - -forcad_nurbs_volume::nurbs_volume%set2 + + +forcad_nurbs_curve::nurbs_curve%set2 @@ -284,185 +284,185 @@

    Called by

    - + -none~set~2 - +none~set + -forcad_nurbs_surface::nurbs_surface%set +forcad_nurbs_volume::nurbs_volume%set - + -none~set~2->proc~set2 +none~set->proc~set2 - + -none~set~3 - - -forcad_nurbs_curve::nurbs_curve%set +none~set~4 + + +forcad_nurbs_surface::nurbs_surface%set - + -none~set~3->proc~set2~2 - - +none~set~4->proc~set2~2 + + - + -none~set~4 - - -forcad_nurbs_volume::nurbs_volume%set +none~set~5 + + +forcad_nurbs_curve::nurbs_curve%set - + -none~set~4->proc~set2~3 - - +none~set~5->proc~set2~3 + + - + -proc~modify_wc~2 - +proc~modify_wc + -forcad_nurbs_surface::nurbs_surface%modify_Wc +forcad_nurbs_volume::nurbs_volume%modify_Wc - + -proc~modify_wc~2->none~set~2 +proc~modify_wc->none~set - + -proc~modify_wc~3 - - -forcad_nurbs_curve::nurbs_curve%modify_Wc +proc~modify_wc~4 + + +forcad_nurbs_surface::nurbs_surface%modify_Wc - + -proc~modify_wc~3->none~set~3 +proc~modify_wc~4->none~set~4 - + -proc~modify_wc~4 - - -forcad_nurbs_volume::nurbs_volume%modify_Wc +proc~modify_wc~5 + + +forcad_nurbs_curve::nurbs_curve%modify_Wc - + -proc~modify_wc~4->none~set~4 - - +proc~modify_wc~5->none~set~5 + + - + -proc~modify_xc~2 - +proc~modify_xc + -forcad_nurbs_surface::nurbs_surface%modify_Xc +forcad_nurbs_volume::nurbs_volume%modify_Xc - + -proc~modify_xc~2->none~set~2 +proc~modify_xc->none~set - + -proc~modify_xc~3 - - -forcad_nurbs_curve::nurbs_curve%modify_Xc +proc~modify_xc~4 + + +forcad_nurbs_surface::nurbs_surface%modify_Xc - + -proc~modify_xc~3->none~set~3 - - +proc~modify_xc~4->none~set~4 + + - + -proc~modify_xc~4 - - -forcad_nurbs_volume::nurbs_volume%modify_Xc +proc~modify_xc~5 + + +forcad_nurbs_curve::nurbs_curve%modify_Xc - + -proc~modify_xc~4->none~set~4 - - +proc~modify_xc~5->none~set~5 + + program~example_nurbs_curve - -example_nurbs_curve + +example_nurbs_curve - - -program~example_nurbs_curve->none~set~3 - - + + +program~example_nurbs_curve->none~set~5 + + program~example_nurbs_surface - -example_nurbs_surface + +example_nurbs_surface - - -program~example_nurbs_surface->none~set~2 - - + + +program~example_nurbs_surface->none~set~4 + + program~example_nurbs_volume - -example_nurbs_volume + +example_nurbs_volume - - -program~example_nurbs_volume->none~set~4 - - + + +program~example_nurbs_volume->none~set + + @@ -598,7 +598,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/set.html b/proc/set.html index e00998004..15930ec61 100644 --- a/proc/set.html +++ b/proc/set.html @@ -79,20 +79,20 @@

    set
  • 9 statements + title=" 0.7% of total for procedures.">14 statements
  • - Source File + Source File
  • -

    private pure subroutine set(this, nc, Xc, Wc) +

    private pure subroutine set(this, Xc, Wc)

    Set control points and weights for the Bezier curve object.

    Type Bound

    -

    bezier_surface

    +

    bezier_curve

    Arguments

    @@ -160,8 +160,8 @@

    Arguments

    - - - - - - - - @@ -205,7 +190,7 @@

    Arguments

    @@ -233,61 +218,76 @@

    Called by

    - - + + proc~~set~~CalledByGraph - + proc~set - -forcad_bezier_surface::bezier_surface%set + +forcad_bezier_curve::bezier_curve%set - + -proc~modify_wc - - -forcad_bezier_surface::bezier_surface%modify_Wc +proc~elevate_degree + + +forcad_bezier_curve::bezier_curve%elevate_degree - + -proc~modify_wc->proc~set - - +proc~elevate_degree->proc~set + + - + -proc~modify_xc - - -forcad_bezier_surface::bezier_surface%modify_Xc +proc~modify_wc~2 + + +forcad_bezier_curve::bezier_curve%modify_Wc - + -proc~modify_xc->proc~set - - +proc~modify_wc~2->proc~set + + - + -program~example_bezier_surface - - -example_bezier_surface +proc~modify_xc~2 + + +forcad_bezier_curve::bezier_curve%modify_Xc - + -program~example_bezier_surface->proc~set - - +proc~modify_xc~2->proc~set + + + + + +program~example_bezier_curve + + +example_bezier_curve + + + + + +program~example_bezier_curve->proc~set + + @@ -400,7 +400,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/set1.html b/proc/set1.html index 83d6662a7..b37220c77 100644 --- a/proc/set1.html +++ b/proc/set1.html @@ -79,20 +79,20 @@

    set1
  • 14 statements + title=" 0.8% of total for procedures.">15 statements
  • - Source File + Source File
  • -

    private pure subroutine set1(this, knot1, knot2, Xc, Wc) +

    private pure subroutine set1(this, knot1, knot2, knot3, Xc, Wc)

    -

    Set control points and weights for the NURBS surface object.

    +

    Set control points and weights for the NURBS curve object.

    Type Bound

    -

    nurbs_surface

    +

    nurbs_volume

    Arguments

    - - class(bezier_surface), + + class(bezier_curve), intent(inout) @@ -175,22 +175,7 @@

    Arguments

    - - integer, - intent(in) - - ::nc(:) - -
    - + real(kind=rk), intent(in)
    - + real(kind=rk), intent(in),
    @@ -160,8 +160,8 @@

    Arguments

    @@ -190,7 +190,7 @@

    Arguments

    @@ -203,6 +203,21 @@

    Arguments

    + + + + + + + +
    - - class(nurbs_surface), + + class(nurbs_volume), intent(inout) @@ -175,7 +175,7 @@

    Arguments

    - + real(kind=rk), intent(in)
    - + real(kind=rk), intent(in)
    + + real(kind=rk), + intent(in) + + ::knot3(:) + +
    @@ -257,35 +272,35 @@

    Calls

    proc~set1 -forcad_nurbs_surface::nurbs_surface%set1 +forcad_nurbs_volume::nurbs_volume%set1 - + -proc~get_nc~2 - +proc~get_nc + -forcad_nurbs_surface::nurbs_surface%get_nc +forcad_nurbs_volume::nurbs_volume%get_nc - + -proc~set1->proc~get_nc~2 +proc~set1->proc~get_nc - + -proc~get_order~2 - +proc~get_order + -forcad_nurbs_surface::nurbs_surface%get_order +forcad_nurbs_volume::nurbs_volume%get_order - + -proc~set1->proc~get_order~2 +proc~set1->proc~get_order @@ -298,24 +313,24 @@

    Calls

    - + -proc~get_nc~2->proc~compute_multiplicity +proc~get_nc->proc~compute_multiplicity proc~get_multiplicity - + -forcad_nurbs_surface::nurbs_surface%get_multiplicity +forcad_nurbs_volume::nurbs_volume%get_multiplicity - + -proc~get_order~2->proc~get_multiplicity +proc~get_order->proc~get_multiplicity @@ -432,65 +447,65 @@

    Called by

    proc~set1 -forcad_nurbs_surface::nurbs_surface%set1 +forcad_nurbs_volume::nurbs_volume%set1 - + -none~set~2 - +none~set + -forcad_nurbs_surface::nurbs_surface%set +forcad_nurbs_volume::nurbs_volume%set - + -none~set~2->proc~set1 +none~set->proc~set1 - + -proc~modify_wc~2 - +proc~modify_wc + -forcad_nurbs_surface::nurbs_surface%modify_Wc +forcad_nurbs_volume::nurbs_volume%modify_Wc - + -proc~modify_wc~2->none~set~2 +proc~modify_wc->none~set - + -proc~modify_xc~2 - +proc~modify_xc + -forcad_nurbs_surface::nurbs_surface%modify_Xc +forcad_nurbs_volume::nurbs_volume%modify_Xc - + -proc~modify_xc~2->none~set~2 +proc~modify_xc->none~set - + -program~example_nurbs_surface - +program~example_nurbs_volume + -example_nurbs_surface +example_nurbs_volume - + -program~example_nurbs_surface->none~set~2 +program~example_nurbs_volume->none~set @@ -609,7 +624,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/set1~2.html b/proc/set1~2.html index 25e6d0b85..2f5a05ef3 100644 --- a/proc/set1~2.html +++ b/proc/set1~2.html @@ -79,20 +79,20 @@

    set1
  • 17 statements + title=" 0.7% of total for procedures.">14 statements
  • - Source File + Source File
  • -

    private pure subroutine set1(this, knot, Xc, Wc) +

    private pure subroutine set1(this, knot1, knot2, Xc, Wc)

    -

    Set control points and weights for the Bezier curve object.

    +

    Set control points and weights for the NURBS surface object.

    Type Bound

    -

    nurbs_curve

    +

    nurbs_surface

    Arguments

    @@ -160,8 +160,8 @@

    Arguments

    @@ -183,14 +183,29 @@

    Arguments

    - + + + + + + + + + @@ -205,7 +220,7 @@

    Arguments

    @@ -233,61 +248,82 @@

    Calls

    - - + + proc~~set1~2~~CallsGraph - + proc~set1~2 - -forcad_nurbs_curve::nurbs_curve%set1 + +forcad_nurbs_surface::nurbs_surface%set1 - + -proc~get_order~3 - - -forcad_nurbs_curve::nurbs_curve%get_order +proc~get_nc~4 + + +forcad_nurbs_surface::nurbs_surface%get_nc - + -proc~set1~2->proc~get_order~3 - - +proc~set1~2->proc~get_nc~4 + + - + -proc~get_multiplicity~2 - - -forcad_nurbs_curve::nurbs_curve%get_multiplicity +proc~get_order~4 + + +forcad_nurbs_surface::nurbs_surface%get_order - + -proc~get_order~3->proc~get_multiplicity~2 - - +proc~set1~2->proc~get_order~4 + + proc~compute_multiplicity - -forcad_utils::compute_multiplicity + +forcad_utils::compute_multiplicity - + +proc~get_nc~4->proc~compute_multiplicity + + + + + +proc~get_multiplicity~2 + + +forcad_nurbs_surface::nurbs_surface%get_multiplicity + + + + + +proc~get_order~4->proc~get_multiplicity~2 + + + + + proc~get_multiplicity~2->proc~compute_multiplicity - - + + @@ -387,76 +423,76 @@

    Called by

    - - + + proc~~set1~2~~CalledByGraph - + proc~set1~2 - -forcad_nurbs_curve::nurbs_curve%set1 + +forcad_nurbs_surface::nurbs_surface%set1 - + -none~set~3 - - -forcad_nurbs_curve::nurbs_curve%set +none~set~4 + + +forcad_nurbs_surface::nurbs_surface%set - + -none~set~3->proc~set1~2 - - +none~set~4->proc~set1~2 + + - + -proc~modify_wc~3 - - -forcad_nurbs_curve::nurbs_curve%modify_Wc +proc~modify_wc~4 + + +forcad_nurbs_surface::nurbs_surface%modify_Wc - + -proc~modify_wc~3->none~set~3 - - +proc~modify_wc~4->none~set~4 + + - + -proc~modify_xc~3 - - -forcad_nurbs_curve::nurbs_curve%modify_Xc +proc~modify_xc~4 + + +forcad_nurbs_surface::nurbs_surface%modify_Xc - + -proc~modify_xc~3->none~set~3 - - +proc~modify_xc~4->none~set~4 + + - + -program~example_nurbs_curve - - -example_nurbs_curve +program~example_nurbs_surface + + +example_nurbs_surface - + -program~example_nurbs_curve->none~set~3 - - +program~example_nurbs_surface->none~set~4 + + @@ -573,7 +609,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/set1~3.html b/proc/set1~3.html index 8f0075d99..199c6471a 100644 --- a/proc/set1~3.html +++ b/proc/set1~3.html @@ -79,20 +79,20 @@

    set1
  • 15 statements + title=" 0.9% of total for procedures.">17 statements
  • - Source File + Source File
  • -

    private pure subroutine set1(this, knot1, knot2, knot3, Xc, Wc) +

    private pure subroutine set1(this, knot, Xc, Wc)

    -

    Set control points and weights for the NURBS curve object.

    +

    Set control points and weights for the Bezier curve object.

    Type Bound

    -

    nurbs_volume

    +

    nurbs_curve

    Arguments

    - - class(nurbs_curve), + + class(nurbs_surface), intent(inout) @@ -175,7 +175,7 @@

    Arguments

    - + real(kind=rk), intent(in) ::knot(:)knot1(:)
    - + + real(kind=rk), + intent(in) + + ::knot2(:) + +
    + real(kind=rk), intent(in)
    - + real(kind=rk), intent(in),
    @@ -160,8 +160,8 @@

    Arguments

    @@ -183,44 +183,14 @@

    Arguments

    - + - - - - - - - - - - - - - - - - @@ -235,7 +205,7 @@

    Arguments

    @@ -263,82 +233,61 @@

    Calls

    - - + + proc~~set1~3~~CallsGraph - + proc~set1~3 - -forcad_nurbs_volume::nurbs_volume%set1 + +forcad_nurbs_curve::nurbs_curve%set1 - + -proc~get_nc~4 - - -forcad_nurbs_volume::nurbs_volume%get_nc +proc~get_order~5 + + +forcad_nurbs_curve::nurbs_curve%get_order - + -proc~set1~3->proc~get_nc~4 - - +proc~set1~3->proc~get_order~5 + + - + -proc~get_order~4 - - -forcad_nurbs_volume::nurbs_volume%get_order +proc~get_multiplicity~3 + + +forcad_nurbs_curve::nurbs_curve%get_multiplicity - + -proc~set1~3->proc~get_order~4 - - +proc~get_order~5->proc~get_multiplicity~3 + + proc~compute_multiplicity - -forcad_utils::compute_multiplicity + +forcad_utils::compute_multiplicity - - -proc~get_nc~4->proc~compute_multiplicity - - - - - -proc~get_multiplicity~3 - - -forcad_nurbs_volume::nurbs_volume%get_multiplicity - - - - - -proc~get_order~4->proc~get_multiplicity~3 - - - - + proc~get_multiplicity~3->proc~compute_multiplicity - - + + @@ -438,76 +387,76 @@

    Called by

    - - + + proc~~set1~3~~CalledByGraph - + proc~set1~3 - -forcad_nurbs_volume::nurbs_volume%set1 + +forcad_nurbs_curve::nurbs_curve%set1 - + -none~set~4 - - -forcad_nurbs_volume::nurbs_volume%set +none~set~5 + + +forcad_nurbs_curve::nurbs_curve%set - + -none~set~4->proc~set1~3 - - +none~set~5->proc~set1~3 + + - + -proc~modify_wc~4 - - -forcad_nurbs_volume::nurbs_volume%modify_Wc +proc~modify_wc~5 + + +forcad_nurbs_curve::nurbs_curve%modify_Wc - + -proc~modify_wc~4->none~set~4 - - +proc~modify_wc~5->none~set~5 + + - + -proc~modify_xc~4 - - -forcad_nurbs_volume::nurbs_volume%modify_Xc +proc~modify_xc~5 + + +forcad_nurbs_curve::nurbs_curve%modify_Xc - + -proc~modify_xc~4->none~set~4 - - +proc~modify_xc~5->none~set~5 + + - + -program~example_nurbs_volume - - -example_nurbs_volume +program~example_nurbs_curve + + +example_nurbs_curve - + -program~example_nurbs_volume->none~set~4 - - +program~example_nurbs_curve->none~set~5 + + @@ -624,7 +573,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/set2.html b/proc/set2.html index 9ec5d58ad..d6af40dbd 100644 --- a/proc/set2.html +++ b/proc/set2.html @@ -79,20 +79,20 @@

    set2
  • 17 statements + title=" 1.0% of total for procedures.">20 statements
  • - Source File + Source File
  • -

    private pure subroutine set2(this, Xth_dir1, Xth_dir2, order, continuity1, continuity2, Xc, Wc) +

    private pure subroutine set2(this, Xth_dir1, Xth_dir2, Xth_dir3, order, continuity1, continuity2, continuity3, Xc, Wc)

    -

    Set control points and weights for the NURBS surface object.

    +

    Set control points and weights for the NURBS curve object.

    Type Bound

    -

    nurbs_surface

    +

    nurbs_volume

    Arguments

    - - class(nurbs_volume), + + class(nurbs_curve), intent(inout) @@ -175,7 +175,7 @@

    Arguments

    - + real(kind=rk), intent(in) ::knot1(:)knot(:)
    - - real(kind=rk), - intent(in) - - ::knot2(:) - -
    - - real(kind=rk), - intent(in) - - ::knot3(:) - -
    - + real(kind=rk), intent(in)
    - + real(kind=rk), intent(in),
    @@ -160,8 +160,8 @@

    Arguments

    + + + + + + + + @@ -248,6 +263,21 @@

    Arguments

    + + + + + + + +
    - - class(nurbs_surface), + + class(nurbs_volume), intent(inout) @@ -205,7 +205,22 @@

    Arguments

    - + + real(kind=rk), + intent(in) + + ::Xth_dir3(:) + +
    + integer, intent(in)
    + + integer, + intent(in) + + ::continuity3(:) + +
    @@ -302,7 +332,7 @@

    Calls

    proc~set2 -forcad_nurbs_surface::nurbs_surface%set2 +forcad_nurbs_volume::nurbs_volume%set2 @@ -319,18 +349,18 @@

    Calls

    - + -proc~get_nc~2 - +proc~get_nc + -forcad_nurbs_surface::nurbs_surface%get_nc +forcad_nurbs_volume::nurbs_volume%get_nc - + -proc~set2->proc~get_nc~2 +proc~set2->proc~get_nc @@ -358,9 +388,9 @@

    Calls

    - + -proc~get_nc~2->proc~compute_multiplicity +proc~get_nc->proc~compute_multiplicity @@ -471,65 +501,65 @@

    Called by

    proc~set2 -forcad_nurbs_surface::nurbs_surface%set2 +forcad_nurbs_volume::nurbs_volume%set2 - + -none~set~2 - +none~set + -forcad_nurbs_surface::nurbs_surface%set +forcad_nurbs_volume::nurbs_volume%set - + -none~set~2->proc~set2 +none~set->proc~set2 - + -proc~modify_wc~2 - +proc~modify_wc + -forcad_nurbs_surface::nurbs_surface%modify_Wc +forcad_nurbs_volume::nurbs_volume%modify_Wc - + -proc~modify_wc~2->none~set~2 +proc~modify_wc->none~set - + -proc~modify_xc~2 - +proc~modify_xc + -forcad_nurbs_surface::nurbs_surface%modify_Xc +forcad_nurbs_volume::nurbs_volume%modify_Xc - + -proc~modify_xc~2->none~set~2 +proc~modify_xc->none~set - + -program~example_nurbs_surface - +program~example_nurbs_volume + -example_nurbs_surface +example_nurbs_volume - + -program~example_nurbs_surface->none~set~2 +program~example_nurbs_volume->none~set @@ -648,7 +678,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/set2~2.html b/proc/set2~2.html index a1b49749a..80b0386c4 100644 --- a/proc/set2~2.html +++ b/proc/set2~2.html @@ -79,20 +79,20 @@

    set2
  • 19 statements + title=" 0.9% of total for procedures.">17 statements
  • - Source File + Source File
  • -

    private pure subroutine set2(this, Xth_dir, order, continuity, Xc, Wc) +

    private pure subroutine set2(this, Xth_dir1, Xth_dir2, order, continuity1, continuity2, Xc, Wc)

    -

    Set control points and weights for the Bezier curve object.

    +

    Set control points and weights for the NURBS surface object.

    Type Bound

    -

    nurbs_curve

    +

    nurbs_surface

    Arguments

    @@ -160,8 +160,8 @@

    Arguments

    @@ -183,14 +183,29 @@

    Arguments

    - + + + + + + + + + @@ -198,14 +213,14 @@

    Arguments

    - + @@ -213,14 +228,29 @@

    Arguments

    - + + + + + + + + + @@ -235,7 +265,7 @@

    Arguments

    @@ -263,50 +293,84 @@

    Calls

    - - + + proc~~set2~2~~CallsGraph - + proc~set2~2 - -forcad_nurbs_curve::nurbs_curve%set2 + +forcad_nurbs_surface::nurbs_surface%set2 proc~compute_knot_vector - -forcad_utils::compute_knot_vector + +forcad_utils::compute_knot_vector proc~set2~2->proc~compute_knot_vector - - + + - + +proc~get_nc~4 + + +forcad_nurbs_surface::nurbs_surface%get_nc + + + + + +proc~set2~2->proc~get_nc~4 + + + + + proc~repelem - - -forcad_utils::repelem + + +forcad_utils::repelem - + proc~compute_knot_vector->proc~repelem - - + + + + + +proc~compute_multiplicity + + +forcad_utils::compute_multiplicity + + + + + +proc~get_nc~4->proc~compute_multiplicity + + -
    +

    diff --git a/proc/set2~3.html b/proc/set2~3.html index b617e3004..0b6344fb8 100644 --- a/proc/set2~3.html +++ b/proc/set2~3.html @@ -79,20 +79,20 @@

    set2
  • 20 statements + title=" 1.0% of total for procedures.">19 statements
  • - Source File + Source File
  • -

    private pure subroutine set2(this, Xth_dir1, Xth_dir2, Xth_dir3, order, continuity1, continuity2, continuity3, Xc, Wc) +

    private pure subroutine set2(this, Xth_dir, order, continuity, Xc, Wc)

    -

    Set control points and weights for the NURBS curve object.

    +

    Set control points and weights for the Bezier curve object.

    Type Bound

    -

    nurbs_volume

    +

    nurbs_curve

    Arguments

    - - class(nurbs_curve), + + class(nurbs_surface), intent(inout) @@ -175,7 +175,7 @@

    Arguments

    - + real(kind=rk), intent(in) ::Xth_dir(:)Xth_dir1(:)
    - + + real(kind=rk), + intent(in) + + ::Xth_dir2(:) + +
    + integer, intent(in) ::orderorder(:)
    - + integer, intent(in) ::continuity(:)continuity1(:)
    - + + integer, + intent(in) + + ::continuity2(:) + +
    + real(kind=rk), intent(in)
    - + real(kind=rk), intent(in),
    @@ -160,8 +160,8 @@

    Arguments

    @@ -183,44 +183,14 @@

    Arguments

    - + - - - - - - - - - - - - - - - - @@ -228,14 +198,14 @@

    Arguments

    - + @@ -243,44 +213,14 @@

    Arguments

    - + - - - - - - - - - - - - - - - - @@ -295,7 +235,7 @@

    Arguments

    @@ -323,84 +263,50 @@

    Calls

    - - + + proc~~set2~3~~CallsGraph - + proc~set2~3 - -forcad_nurbs_volume::nurbs_volume%set2 + +forcad_nurbs_curve::nurbs_curve%set2 proc~compute_knot_vector - -forcad_utils::compute_knot_vector + +forcad_utils::compute_knot_vector proc~set2~3->proc~compute_knot_vector - - - - - -proc~get_nc~4 - - -forcad_nurbs_volume::nurbs_volume%get_nc - - - - - -proc~set2~3->proc~get_nc~4 - - + + - + proc~repelem - - -forcad_utils::repelem + + +forcad_utils::repelem - + proc~compute_knot_vector->proc~repelem - - - - - -proc~compute_multiplicity - - -forcad_utils::compute_multiplicity - - - - - -proc~get_nc~4->proc~compute_multiplicity - - + + -
    +

    diff --git a/proc/set~2.html b/proc/set~2.html index b497fcd19..1b58b3021 100644 --- a/proc/set~2.html +++ b/proc/set~2.html @@ -160,7 +160,7 @@

    Arguments

    @@ -175,7 +175,7 @@

    Arguments

    @@ -190,7 +190,7 @@

    Arguments

    @@ -205,7 +205,7 @@

    Arguments

    @@ -244,33 +244,33 @@

    Called by

    forcad_bezier_volume::bezier_volume%set - + -proc~modify_wc~5 - +proc~modify_wc~3 + forcad_bezier_volume::bezier_volume%modify_Wc - + -proc~modify_wc~5->proc~set~2 +proc~modify_wc~3->proc~set~2 - + -proc~modify_xc~5 - +proc~modify_xc~3 + forcad_bezier_volume::bezier_volume%modify_Xc - + -proc~modify_xc~5->proc~set~2 +proc~modify_xc~3->proc~set~2 @@ -400,7 +400,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/proc/set~3.html b/proc/set~3.html index a268c24a5..8aa24e8a1 100644 --- a/proc/set~3.html +++ b/proc/set~3.html @@ -79,20 +79,20 @@

    set
  • 14 statements + title=" 0.5% of total for procedures.">9 statements
  • - Source File + Source File
  • -

    private pure subroutine set(this, Xc, Wc) +

    private pure subroutine set(this, nc, Xc, Wc)

    Set control points and weights for the Bezier curve object.

    Type Bound

    -

    bezier_curve

    +

    bezier_surface

    Arguments

    - - class(nurbs_volume), + + class(nurbs_curve), intent(inout) @@ -175,7 +175,7 @@

    Arguments

    - + real(kind=rk), intent(in) ::Xth_dir1(:)Xth_dir(:)
    - - real(kind=rk), - intent(in) - - ::Xth_dir2(:) - -
    - - real(kind=rk), - intent(in) - - ::Xth_dir3(:) - -
    - + integer, intent(in) ::order(:)order
    - + integer, intent(in) ::continuity1(:)continuity(:)
    - - integer, - intent(in) - - ::continuity2(:) - -
    - - integer, - intent(in) - - ::continuity3(:) - -
    - + real(kind=rk), intent(in)
    - + real(kind=rk), intent(in),
    - + class(bezier_volume), intent(inout)
    - + integer, intent(in)
    - + real(kind=rk), intent(in)
    - + real(kind=rk), intent(in),
    @@ -160,8 +160,8 @@

    Arguments

    + + + + + + + + @@ -190,7 +205,7 @@

    Arguments

    @@ -218,76 +233,61 @@

    Called by

    - - + + proc~~set~3~~CalledByGraph - + proc~set~3 - -forcad_bezier_curve::bezier_curve%set - - - -proc~elevate_degree - - -forcad_bezier_curve::bezier_curve%elevate_degree - - - - - -proc~elevate_degree->proc~set~3 - - + +forcad_bezier_surface::bezier_surface%set - + proc~modify_wc~6 - - -forcad_bezier_curve::bezier_curve%modify_Wc + + +forcad_bezier_surface::bezier_surface%modify_Wc - + proc~modify_wc~6->proc~set~3 - - + + - + proc~modify_xc~6 - - -forcad_bezier_curve::bezier_curve%modify_Xc + + +forcad_bezier_surface::bezier_surface%modify_Xc - + proc~modify_xc~6->proc~set~3 - - + + - - -program~example_bezier_curve - - -example_bezier_curve + + +program~example_bezier_surface + + +example_bezier_surface - - -program~example_bezier_curve->proc~set~3 - - + + +program~example_bezier_surface->proc~set~3 + + @@ -400,7 +400,7 @@

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/program/example_bezier_curve.html b/program/example_bezier_curve.html index cdec2ef09..7c752dbff 100644 --- a/program/example_bezier_curve.html +++ b/program/example_bezier_curve.html @@ -116,9 +116,9 @@

    Variables

    - Wc - Xc - bezier + Wc + Xc + bezier
    @@ -139,7 +139,7 @@

    Functions

    @@ -460,93 +460,93 @@

    Calls

    example_bezier_curve - + -proc~create~6 - +proc~create~2 + forcad_bezier_curve::bezier_curve%create - + -program~example_bezier_curve->proc~create~6 +program~example_bezier_curve->proc~create~2 - + -proc~export_xc~6 - +proc~export_xc~2 + forcad_bezier_curve::bezier_curve%export_Xc - + -program~example_bezier_curve->proc~export_xc~6 +program~example_bezier_curve->proc~export_xc~2 - + -proc~export_xg~6 - +proc~export_xg~2 + forcad_bezier_curve::bezier_curve%export_Xg - + -program~example_bezier_curve->proc~export_xg~6 +program~example_bezier_curve->proc~export_xg~2 - + -proc~finalize~6 - +proc~finalize~2 + forcad_bezier_curve::bezier_curve%finalize - + -program~example_bezier_curve->proc~finalize~6 +program~example_bezier_curve->proc~finalize~2 - + -proc~generate_xc~5 - +proc~generate_xc~2 + example_bezier_curve::generate_Xc - + -program~example_bezier_curve->proc~generate_xc~5 +program~example_bezier_curve->proc~generate_xc~2 - + -proc~set~3 - +proc~set + forcad_bezier_curve::bezier_curve%set - + -program~example_bezier_curve->proc~set~3 +program~example_bezier_curve->proc~set @@ -559,39 +559,39 @@

    Calls

    - + -proc~create~6->proc~basis_bernstein +proc~create~2->proc~basis_bernstein - + -proc~get_elem_xc~6 - +proc~get_elem_xc~2 + forcad_bezier_curve::bezier_curve%get_elem_Xc - + -proc~export_xc~6->proc~get_elem_xc~6 +proc~export_xc~2->proc~get_elem_xc~2 - + -proc~get_elem_xg~6 - +proc~get_elem_xg~2 + forcad_bezier_curve::bezier_curve%get_elem_Xg - + -proc~export_xg~6->proc~get_elem_xg~6 +proc~export_xg~2->proc~get_elem_xg~2 @@ -604,15 +604,15 @@

    Calls

    - + -proc~get_elem_xc~6->interface~elemconn_c0 +proc~get_elem_xc~2->interface~elemconn_c0 - + -proc~get_elem_xg~6->interface~elemconn_c0 +proc~get_elem_xg~2->interface~elemconn_c0 @@ -764,7 +764,7 @@

    Variables

    @@ -918,7 +918,7 @@

    Arguments

    @@ -933,7 +933,7 @@

    Arguments

    @@ -1053,7 +1053,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/program/example_bezier_volume.html b/program/example_bezier_volume.html index 05260f45c..8c4000d07 100644 --- a/program/example_bezier_volume.html +++ b/program/example_bezier_volume.html @@ -116,9 +116,9 @@

    Variables

    - Wc - Xc - bezier + Wc + Xc + bezier
    @@ -139,7 +139,7 @@

    Functions

    @@ -460,78 +460,78 @@

    Calls

    example_bezier_volume - + -proc~create~5 - +proc~create~3 + forcad_bezier_volume::bezier_volume%create - + -program~example_bezier_volume->proc~create~5 +program~example_bezier_volume->proc~create~3 - + -proc~export_xc~5 - +proc~export_xc~3 + forcad_bezier_volume::bezier_volume%export_Xc - + -program~example_bezier_volume->proc~export_xc~5 +program~example_bezier_volume->proc~export_xc~3 - + -proc~export_xg~5 - +proc~export_xg~3 + forcad_bezier_volume::bezier_volume%export_Xg - + -program~example_bezier_volume->proc~export_xg~5 +program~example_bezier_volume->proc~export_xg~3 - + -proc~finalize~5 - +proc~finalize~3 + forcad_bezier_volume::bezier_volume%finalize - + -program~example_bezier_volume->proc~finalize~5 +program~example_bezier_volume->proc~finalize~3 - + -proc~generate_xc~2 - +proc~generate_xc~5 + example_bezier_volume::generate_Xc - + -program~example_bezier_volume->proc~generate_xc~2 +program~example_bezier_volume->proc~generate_xc~5 @@ -559,9 +559,9 @@

    Calls

    - + -proc~create~5->interface~ndgrid +proc~create~3->interface~ndgrid @@ -574,9 +574,9 @@

    Calls

    - + -proc~create~5->proc~basis_bernstein +proc~create~3->proc~basis_bernstein @@ -589,39 +589,39 @@

    Calls

    - + -proc~create~5->proc~kron +proc~create~3->proc~kron - + -proc~get_elem_xc~5 - +proc~get_elem_xc~3 + forcad_bezier_volume::bezier_volume%get_elem_Xc - + -proc~export_xc~5->proc~get_elem_xc~5 +proc~export_xc~3->proc~get_elem_xc~3 - + -proc~get_elem_xg~5 - +proc~get_elem_xg~3 + forcad_bezier_volume::bezier_volume%get_elem_Xg - + -proc~export_xg~5->proc~get_elem_xg~5 +proc~export_xg~3->proc~get_elem_xg~3 @@ -664,15 +664,15 @@

    Calls

    - + -proc~get_elem_xc~5->interface~elemconn_c0 +proc~get_elem_xc~3->interface~elemconn_c0 - + -proc~get_elem_xg~5->interface~elemconn_c0 +proc~get_elem_xg~3->interface~elemconn_c0 @@ -824,7 +824,7 @@

    Variables

    @@ -1018,7 +1018,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/program/example_nurbs_curve.html b/program/example_nurbs_curve.html index c31ca1aa0..96c59d6d8 100644 --- a/program/example_nurbs_curve.html +++ b/program/example_nurbs_curve.html @@ -116,10 +116,10 @@

    Variables

    - Wc - Xc - knot - nurbs + Wc + Xc + knot + nurbs
    @@ -442,108 +442,108 @@

    Calls

    example_nurbs_curve - + -none~set~3 - +none~set~5 + forcad_nurbs_curve::nurbs_curve%set - + -program~example_nurbs_curve->none~set~3 +program~example_nurbs_curve->none~set~5 - + -proc~create~3 - +proc~create~5 + forcad_nurbs_curve::nurbs_curve%create - + -program~example_nurbs_curve->proc~create~3 +program~example_nurbs_curve->proc~create~5 - + -proc~export_xc~3 - +proc~export_xc~5 + forcad_nurbs_curve::nurbs_curve%export_Xc - + -program~example_nurbs_curve->proc~export_xc~3 +program~example_nurbs_curve->proc~export_xc~5 - + -proc~export_xg~3 - +proc~export_xg~5 + forcad_nurbs_curve::nurbs_curve%export_Xg - + -program~example_nurbs_curve->proc~export_xg~3 +program~example_nurbs_curve->proc~export_xg~5 - + -proc~finalize~3 - +proc~finalize~5 + forcad_nurbs_curve::nurbs_curve%finalize - + -program~example_nurbs_curve->proc~finalize~3 +program~example_nurbs_curve->proc~finalize~5 - + -proc~set1~2 - +proc~set1~3 + forcad_nurbs_curve::nurbs_curve%set1 - + -none~set~3->proc~set1~2 +none~set~5->proc~set1~3 - + -proc~set2~2 - +proc~set2~3 + forcad_nurbs_curve::nurbs_curve%set2 - + -none~set~3->proc~set2~2 +none~set~5->proc~set2~3 @@ -556,39 +556,39 @@

    Calls

    - + -proc~create~3->proc~basis_bspline +proc~create~5->proc~basis_bspline - + -proc~get_elem_xc~3 - +proc~get_elem_xc~5 + forcad_nurbs_curve::nurbs_curve%get_elem_Xc - + -proc~export_xc~3->proc~get_elem_xc~3 +proc~export_xc~5->proc~get_elem_xc~5 - + -proc~get_elem_xg~3 - +proc~get_elem_xg~5 + forcad_nurbs_curve::nurbs_curve%get_elem_Xg - + -proc~export_xg~3->proc~get_elem_xg~3 +proc~export_xg~5->proc~get_elem_xg~5 @@ -601,30 +601,30 @@

    Calls

    - + -proc~get_elem_xc~3->interface~elemconn_c0 +proc~get_elem_xc~5->interface~elemconn_c0 - + -proc~get_elem_xg~3->interface~elemconn_c0 +proc~get_elem_xg~5->interface~elemconn_c0 - + -proc~get_order~3 - +proc~get_order~5 + forcad_nurbs_curve::nurbs_curve%get_order - + -proc~set1~2->proc~get_order~3 +proc~set1~3->proc~get_order~5 @@ -637,9 +637,9 @@

    Calls

    - + -proc~set2~2->proc~compute_knot_vector +proc~set2~3->proc~compute_knot_vector @@ -703,18 +703,18 @@

    Calls

    - + -proc~get_multiplicity~2 - +proc~get_multiplicity~3 + forcad_nurbs_curve::nurbs_curve%get_multiplicity - + -proc~get_order~3->proc~get_multiplicity~2 +proc~get_order~5->proc~get_multiplicity~3 @@ -727,9 +727,9 @@

    Calls

    - + -proc~get_multiplicity~2->proc~compute_multiplicity +proc~get_multiplicity~3->proc~compute_multiplicity @@ -836,7 +836,7 @@

    Variables

    @@ -1084,7 +1084,7 @@

    Arguments

    @@ -1099,7 +1099,7 @@

    Arguments

    @@ -1226,7 +1226,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/program/example_nurbs_volume.html b/program/example_nurbs_volume.html index 9a543e925..55a495603 100644 --- a/program/example_nurbs_volume.html +++ b/program/example_nurbs_volume.html @@ -116,12 +116,12 @@

    Variables

    - Wc - Xc - knot1 - knot2 - knot3 - nurbs + Wc + Xc + knot1 + knot2 + knot3 + nurbs
    @@ -142,7 +142,7 @@

    Functions

    @@ -463,123 +463,123 @@

    Calls

    example_nurbs_volume - + -none~set~4 - +none~set + forcad_nurbs_volume::nurbs_volume%set - + -program~example_nurbs_volume->none~set~4 +program~example_nurbs_volume->none~set - + -proc~create~4 - +proc~create + forcad_nurbs_volume::nurbs_volume%create - + -program~example_nurbs_volume->proc~create~4 +program~example_nurbs_volume->proc~create - + -proc~export_xc~4 - +proc~export_xc + forcad_nurbs_volume::nurbs_volume%export_Xc - + -program~example_nurbs_volume->proc~export_xc~4 +program~example_nurbs_volume->proc~export_xc - + -proc~export_xg~4 - +proc~export_xg + forcad_nurbs_volume::nurbs_volume%export_Xg - + -program~example_nurbs_volume->proc~export_xg~4 +program~example_nurbs_volume->proc~export_xg - + -proc~finalize~4 - +proc~finalize + forcad_nurbs_volume::nurbs_volume%finalize - + -program~example_nurbs_volume->proc~finalize~4 +program~example_nurbs_volume->proc~finalize - + -proc~generate_xc~4 - +proc~generate_xc~3 + example_nurbs_volume::generate_Xc - + -program~example_nurbs_volume->proc~generate_xc~4 +program~example_nurbs_volume->proc~generate_xc~3 - + -proc~set1~3 - +proc~set1 + forcad_nurbs_volume::nurbs_volume%set1 - + -none~set~4->proc~set1~3 +none~set->proc~set1 - + -proc~set2~3 - +proc~set2 + forcad_nurbs_volume::nurbs_volume%set2 - + -none~set~4->proc~set2~3 +none~set->proc~set2 @@ -592,9 +592,9 @@

    Calls

    - + -proc~create~4->interface~ndgrid +proc~create->interface~ndgrid @@ -607,9 +607,9 @@

    Calls

    - + -proc~create~4->proc~basis_bspline +proc~create->proc~basis_bspline @@ -622,39 +622,39 @@

    Calls

    - + -proc~create~4->proc~kron +proc~create->proc~kron - + -proc~get_elem_xc~4 - +proc~get_elem_xc + forcad_nurbs_volume::nurbs_volume%get_elem_Xc - + -proc~export_xc~4->proc~get_elem_xc~4 +proc~export_xc->proc~get_elem_xc - + -proc~get_elem_xg~4 - +proc~get_elem_xg + forcad_nurbs_volume::nurbs_volume%get_elem_Xg - + -proc~export_xg~4->proc~get_elem_xg~4 +proc~export_xg->proc~get_elem_xg @@ -697,45 +697,45 @@

    Calls

    - + -proc~get_elem_xc~4->interface~elemconn_c0 +proc~get_elem_xc->interface~elemconn_c0 - + -proc~get_elem_xg~4->interface~elemconn_c0 +proc~get_elem_xg->interface~elemconn_c0 - + -proc~get_nc~4 - +proc~get_nc + forcad_nurbs_volume::nurbs_volume%get_nc - + -proc~set1~3->proc~get_nc~4 +proc~set1->proc~get_nc - + -proc~get_order~4 - +proc~get_order + forcad_nurbs_volume::nurbs_volume%get_order - + -proc~set1~3->proc~get_order~4 +proc~set1->proc~get_order @@ -748,15 +748,15 @@

    Calls

    - + -proc~set2~3->proc~compute_knot_vector +proc~set2->proc~compute_knot_vector - + -proc~set2~3->proc~get_nc~4 +proc~set2->proc~get_nc @@ -829,30 +829,30 @@

    Calls

    - + -proc~get_nc~4->proc~compute_multiplicity +proc~get_nc->proc~compute_multiplicity - + -proc~get_multiplicity~3 - +proc~get_multiplicity + forcad_nurbs_volume::nurbs_volume%get_multiplicity - + -proc~get_order~4->proc~get_multiplicity~3 +proc~get_order->proc~get_multiplicity - + -proc~get_multiplicity~3->proc~compute_multiplicity +proc~get_multiplicity->proc~compute_multiplicity @@ -959,7 +959,7 @@

    Variables

    @@ -1207,7 +1207,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/search.html b/search.html index c58efd716..168f07b9d 100644 --- a/search.html +++ b/search.html @@ -98,7 +98,7 @@

    Search Results

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/sourcefile/bezier_curve.f90.html b/sourcefile/bezier_curve.f90.html index 20357c76f..055badc1d 100644 --- a/sourcefile/bezier_curve.f90.html +++ b/sourcefile/bezier_curve.f90.html @@ -472,7 +472,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/sourcefile/bezier_surface.f90.html b/sourcefile/bezier_surface.f90.html index 1c55d28da..989c4245f 100644 --- a/sourcefile/bezier_surface.f90.html +++ b/sourcefile/bezier_surface.f90.html @@ -475,7 +475,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/sourcefile/bezier_volume.f90.html b/sourcefile/bezier_volume.f90.html index c79c4747c..d6ef09a9f 100644 --- a/sourcefile/bezier_volume.f90.html +++ b/sourcefile/bezier_volume.f90.html @@ -470,7 +470,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/sourcefile/forcad.f90.html b/sourcefile/forcad.f90.html index 1a4a30e3d..925039068 100644 --- a/sourcefile/forcad.f90.html +++ b/sourcefile/forcad.f90.html @@ -569,7 +569,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/sourcefile/forcad_bezier_curve.f90.html b/sourcefile/forcad_bezier_curve.f90.html index cada71b78..87a3f3771 100644 --- a/sourcefile/forcad_bezier_curve.f90.html +++ b/sourcefile/forcad_bezier_curve.f90.html @@ -909,7 +909,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/sourcefile/forcad_bezier_surface.f90.html b/sourcefile/forcad_bezier_surface.f90.html index 3030bb682..c34105590 100644 --- a/sourcefile/forcad_bezier_surface.f90.html +++ b/sourcefile/forcad_bezier_surface.f90.html @@ -858,7 +858,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/sourcefile/forcad_bezier_volume.f90.html b/sourcefile/forcad_bezier_volume.f90.html index b8411d77b..7392c28c3 100644 --- a/sourcefile/forcad_bezier_volume.f90.html +++ b/sourcefile/forcad_bezier_volume.f90.html @@ -879,7 +879,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/sourcefile/forcad_nurbs_curve.f90.html b/sourcefile/forcad_nurbs_curve.f90.html index e68c626ae..951845458 100644 --- a/sourcefile/forcad_nurbs_curve.f90.html +++ b/sourcefile/forcad_nurbs_curve.f90.html @@ -917,7 +917,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/sourcefile/forcad_nurbs_surface.f90.html b/sourcefile/forcad_nurbs_surface.f90.html index 8f933fab2..e70c35832 100644 --- a/sourcefile/forcad_nurbs_surface.f90.html +++ b/sourcefile/forcad_nurbs_surface.f90.html @@ -1019,7 +1019,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/sourcefile/forcad_nurbs_volume.f90.html b/sourcefile/forcad_nurbs_volume.f90.html index 131d89267..61a49e23d 100644 --- a/sourcefile/forcad_nurbs_volume.f90.html +++ b/sourcefile/forcad_nurbs_volume.f90.html @@ -1083,7 +1083,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/sourcefile/forcad_utils.f90.html b/sourcefile/forcad_utils.f90.html index 1886d7b58..b7e4a0a71 100644 --- a/sourcefile/forcad_utils.f90.html +++ b/sourcefile/forcad_utils.f90.html @@ -767,7 +767,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/sourcefile/nurbs_curve.f90.html b/sourcefile/nurbs_curve.f90.html index 769e2af71..84962e5d0 100644 --- a/sourcefile/nurbs_curve.f90.html +++ b/sourcefile/nurbs_curve.f90.html @@ -456,7 +456,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/sourcefile/nurbs_surface.f90.html b/sourcefile/nurbs_surface.f90.html index 7af362585..5bce07d22 100644 --- a/sourcefile/nurbs_surface.f90.html +++ b/sourcefile/nurbs_surface.f90.html @@ -481,7 +481,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/sourcefile/nurbs_volume.f90.html b/sourcefile/nurbs_volume.f90.html index 10c5e6e97..e18e1026e 100644 --- a/sourcefile/nurbs_volume.f90.html +++ b/sourcefile/nurbs_volume.f90.html @@ -475,7 +475,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/tipuesearch/tipuesearch_content.js b/tipuesearch/tipuesearch_content.js index 5c7bdca25..c7ff6d24c 100644 --- a/tipuesearch/tipuesearch_content.js +++ b/tipuesearch/tipuesearch_content.js @@ -1 +1 @@ -var tipuesearch = {"pages":[{"title":" ForCAD ","text":"ForCAD ForCAD : A Fortran library for Geometric Modeling. ForCAD supports B-Spline , NURBS , Bezier , and Rational Bezier curves, surfaces, and volumes. fpm dependency If you want to use ForCAD as a dependency in your own fpm project,\nyou can easily include it by adding the following line to your fpm.toml file: [dependencies] forcad = { git = \"https://github.com/gha3mi/forcad.git\" } How to run examples To get started, follow these steps: Clone the repository: Clone the ForCAD repository from GitHub: git clone https://github.com/gha3mi/forcad.git cd forcad Using fpm fpm run --example Once the examples have been executed, .vtk files will be generated within the vtk directory. These files can then be visualized using tools such as ParaView. API documentation The most up-to-date API documentation for the master branch is available here .\nTo generate the API documentation for ForCAD using ford run the following\ncommand: ford ford.yml ToDo [ ] Add method insert_knot() for B-splines and NURBS. [ ] Add method remove_knot() for B-splines and NURBS. [ ] Add method elevate_degree() for Bezier, Rational Bezier, B-splines, and NURBS. [x] Add method elevate_degree() for Bezier and Rational Bezier curves. [ ] Add method reduce_degree() for Bezier, Rational Bezier, B-splines, and NURBS. Contributing Contributions to ForCAD are welcome!\nIf you find any issues or would like to suggest improvements, please open an issue. References The NURBS Book by Les Piegl, Wayne Tiller An Introduction to NURBS by David F. Rogers Developer Info Seyed Ali Ghasemi","tags":"home","loc":"index.html"},{"title":"bezier_surface – ForCAD ","text":"type, public :: bezier_surface Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt1 (:) parameter values in the first direction real(kind=rk), private, allocatable :: Xt2 (:) parameter values in the second direction integer, private :: nc (2) number of control points in each direction integer, private :: ng (2) number of geometry points in each direction Type-Bound Procedures procedure, public :: create Generate geometry points private pure subroutine create (this, res1, res2, Xt1, Xt2) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) procedure, public :: export_Xc Export control points to VTK file private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: export_Xg Export geometry points to VTK file private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: finalize Finalize the Bezier surface object private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this procedure, public :: get_Wc Get weights private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_Xc Get control points private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xg Get geometry points private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xt Get parameter values private pure function get_Xt (this, dir) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) procedure, public :: get_elem_Xc Generate connectivity for control points private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) procedure, public :: get_elem_Xg Generate connectivity for geometry points private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) procedure, public :: get_nc Get number of control points private pure function get_nc (this) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2) procedure, public :: get_ng Get number of geometry points private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2) procedure, public :: get_order Get order of the Bezier surface private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2) procedure, public :: modify_Wc Modify weights private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Modify weight of a control point given its index. Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num procedure, public :: modify_Xc Modify control points private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Modify coordinate of a control point given its index and direction. Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir procedure, public :: set Set control points and weights private pure subroutine set (this, nc, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this integer, intent(in) :: nc (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"type/bezier_surface.html"},{"title":"nurbs_surface – ForCAD ","text":"type, public :: nurbs_surface Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt1 (:) parameter values in the first direction real(kind=rk), private, allocatable :: Xt2 (:) parameter values in the second direction real(kind=rk), private, allocatable :: knot1 (:) knot vector real(kind=rk), private, allocatable :: knot2 (:) knot vector integer, private :: nc (2) number of control points in each direction integer, private :: ng (2) number of geometry points in each direction integer, private :: order (2) degree of each direction Type-Bound Procedures procedure, public :: create Generate geometry points private pure subroutine create (this, res1, res2, Xt1, Xt2) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) procedure, public :: export_Xc Export control points to VTK file private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: export_Xg Export geometry points to VTK file private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: finalize Finalize the NURBS surface object private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this procedure, public :: get_Wc Get weights private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_Xc Get control points private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xg Get geometry points private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xt Get parameter values private pure function get_Xt (this, dir) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) procedure, public :: get_continuity Get continuity of the surface private pure function get_continuity (this, dir) result(c) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) procedure, public :: get_elem_Xc Generate connectivity for control points private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) procedure, public :: get_elem_Xg Generate connectivity for geometry points private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) procedure, public :: get_knot Get knot vector private pure function get_knot (this, dir) result(knot) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) procedure, public :: get_multiplicity Get multiplicity of the knot vector private pure function get_multiplicity (this, dir) result(m) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) procedure, public :: get_nc Get number of required control points private pure function get_nc (this, dir) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer procedure, public :: get_ng Get number of geometry points private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value integer, (2) procedure, public :: get_order Get order of the Bezier curve private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value integer, (2) procedure, public :: modify_Wc Modify weights private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num procedure, public :: modify_Xc Modify control points private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir generic, public :: set => set1 , set2 private pure subroutine set1 (this, knot1, knot2, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS surface object. Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: knot1 (:) real(kind=rk), intent(in) :: knot2 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) private pure subroutine set2 (this, Xth_dir1, Xth_dir2, order, continuity1, continuity2, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS surface object. Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir1 (:) real(kind=rk), intent(in) :: Xth_dir2 (:) integer, intent(in) :: order (:) integer, intent(in) :: continuity1 (:) integer, intent(in) :: continuity2 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) procedure, public :: set1 Set control points and weights private pure subroutine set1 (this, knot1, knot2, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS surface object. Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: knot1 (:) real(kind=rk), intent(in) :: knot2 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) procedure, public :: set2 Set control points and weights private pure subroutine set2 (this, Xth_dir1, Xth_dir2, order, continuity1, continuity2, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS surface object. Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir1 (:) real(kind=rk), intent(in) :: Xth_dir2 (:) integer, intent(in) :: order (:) integer, intent(in) :: continuity1 (:) integer, intent(in) :: continuity2 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"type/nurbs_surface.html"},{"title":"nurbs_curve – ForCAD ","text":"type, public :: nurbs_curve Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt (:) evaluation points real(kind=rk), private, allocatable :: knot (:) knot vector integer, private :: nc number of control points integer, private :: ng number of geometry points integer, private :: order order of the curve Type-Bound Procedures procedure, public :: create Generate geometry points private pure subroutine create (this, res, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this integer, intent(in), optional :: res real(kind=rk), intent(in), optional :: Xt (:) procedure, public :: export_Xc Export control points to VTK file private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: export_Xg Export geometry points to VTK file private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: finalize Finalize the Bezier curve object private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this procedure, public :: get_Wc Get weights private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_Xc Get control points private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xg Get geometry points private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xt Get parameter values private pure function get_Xt (this) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_continuity Get continuity of the curve private pure function get_continuity (this) result(c) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer, allocatable, (:) procedure, public :: get_elem_Xc Generate connectivity for control points private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p procedure, public :: get_elem_Xg Generate connectivity for geometry points private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p procedure, public :: get_knot Get knot vector private pure function get_knot (this) result(knot) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_multiplicity Get multiplicity of the knot vector private pure function get_multiplicity (this) result(m) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer, allocatable, (:) procedure, public :: get_nc Get number of required control points private pure function get_nc (this) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer procedure, public :: get_ng Get number of geometry points private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer procedure, public :: get_order Get order of the Bezier curve private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer procedure, public :: modify_Wc Modify weights private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num procedure, public :: modify_Xc Modify control points private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir generic, public :: set => set1 , set2 private pure subroutine set1 (this, knot, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: knot (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) private pure subroutine set2 (this, Xth_dir, order, continuity, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir (:) integer, intent(in) :: order integer, intent(in) :: continuity (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) procedure, public :: set1 Set control points and weights private pure subroutine set1 (this, knot, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: knot (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) procedure, public :: set2 Set control points and weights private pure subroutine set2 (this, Xth_dir, order, continuity, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir (:) integer, intent(in) :: order integer, intent(in) :: continuity (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"type/nurbs_curve.html"},{"title":"nurbs_volume – ForCAD ","text":"type, public :: nurbs_volume Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt1 (:) parameter values in the first direction real(kind=rk), private, allocatable :: Xt2 (:) parameter values in the second direction real(kind=rk), private, allocatable :: Xt3 (:) parameter values in the third direction real(kind=rk), private, allocatable :: knot1 (:) knot vector real(kind=rk), private, allocatable :: knot2 (:) knot vector real(kind=rk), private, allocatable :: knot3 (:) knot vector integer, private :: nc (3) number of control points in each direction integer, private :: ng (3) number of geometry points in each direction integer, private :: order (3) degree of the first direction Type-Bound Procedures procedure, public :: create Generate geometry points private pure subroutine create (this, res1, res2, res3, Xt1, Xt2, Xt3) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 integer, intent(in), optional :: res3 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) real(kind=rk), intent(in), optional :: Xt3 (:) procedure, public :: export_Xc Export control points to VTK file private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: export_Xg Export geometry points to VTK file private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: finalize Finalize the NURBS curve object private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this procedure, public :: get_Wc Get weights private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_Xc Get control points private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xg Get geometry points private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xt Get parameter values private pure function get_Xt (this, dir) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) procedure, public :: get_continuity Get continuity of the curve private pure function get_continuity (this, dir) result(c) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) procedure, public :: get_elem_Xc Generate connectivity for control points private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) procedure, public :: get_elem_Xg Generate connectivity for geometry points private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) procedure, public :: get_knot Get knot vector private pure function get_knot (this, dir) result(knot) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) procedure, public :: get_multiplicity Get multiplicity of the knot vector private pure function get_multiplicity (this, dir) result(m) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) procedure, public :: get_nc Get number of required control points private pure function get_nc (this, dir) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer procedure, public :: get_ng Get number of geometry points private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value integer, (3) procedure, public :: get_order Get order of the Bezier curve private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value integer, (3) procedure, public :: modify_Wc Modify weights private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num procedure, public :: modify_Xc Modify control points private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir generic, public :: set => set1 , set2 private pure subroutine set1 (this, knot1, knot2, knot3, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS curve object. Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: knot1 (:) real(kind=rk), intent(in) :: knot2 (:) real(kind=rk), intent(in) :: knot3 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) private pure subroutine set2 (this, Xth_dir1, Xth_dir2, Xth_dir3, order, continuity1, continuity2, continuity3, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS curve object. Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir1 (:) real(kind=rk), intent(in) :: Xth_dir2 (:) real(kind=rk), intent(in) :: Xth_dir3 (:) integer, intent(in) :: order (:) integer, intent(in) :: continuity1 (:) integer, intent(in) :: continuity2 (:) integer, intent(in) :: continuity3 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) procedure, public :: set1 Set control points and weights private pure subroutine set1 (this, knot1, knot2, knot3, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS curve object. Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: knot1 (:) real(kind=rk), intent(in) :: knot2 (:) real(kind=rk), intent(in) :: knot3 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) procedure, public :: set2 Set control points and weights private pure subroutine set2 (this, Xth_dir1, Xth_dir2, Xth_dir3, order, continuity1, continuity2, continuity3, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS curve object. Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir1 (:) real(kind=rk), intent(in) :: Xth_dir2 (:) real(kind=rk), intent(in) :: Xth_dir3 (:) integer, intent(in) :: order (:) integer, intent(in) :: continuity1 (:) integer, intent(in) :: continuity2 (:) integer, intent(in) :: continuity3 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"type/nurbs_volume.html"},{"title":"bezier_volume – ForCAD ","text":"type, public :: bezier_volume Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt1 (:) parameter values in the first direction real(kind=rk), private, allocatable :: Xt2 (:) parameter values in the second direction real(kind=rk), private, allocatable :: Xt3 (:) parameter values in the third direction integer, private :: nc (3) number of control points in each direction integer, private :: ng (3) number of geometry points in each direction Type-Bound Procedures procedure, public :: create Generate geometry points private pure subroutine create (this, res1, res2, res3, Xt1, Xt2, Xt3) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 integer, intent(in), optional :: res3 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) real(kind=rk), intent(in), optional :: Xt3 (:) procedure, public :: export_Xc Export control points to VTK file private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: export_Xg Export geometry points to VTK file private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: finalize Finalize the Bezier volume object private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this procedure, public :: get_Wc Get weights private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_Xc Get control points private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xg Get geometry points private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_elem_Xc Generate connectivity for control points private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) procedure, public :: get_elem_Xg Generate connectivity for geometry points private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) procedure, public :: get_nc Get number of control points private pure function get_nc (this) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3) procedure, public :: get_ng Get number of geometry points private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3) procedure, public :: get_order Get order of the Bezier surface private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3) procedure, public :: modify_Wc Modify weights private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num procedure, public :: modify_Xc Modify control points private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir procedure, public :: set Set control points and weights private pure subroutine set (this, nc, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this integer, intent(in) :: nc (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Source Code type bezier_volume real ( rk ), allocatable , private :: Xc (:,:) !! control points real ( rk ), allocatable , private :: Xg (:,:) !! geometry points real ( rk ), allocatable , private :: Wc (:) !! weights real ( rk ), allocatable , private :: Xt1 (:) !! parameter values in the first direction real ( rk ), allocatable , private :: Xt2 (:) !! parameter values in the second direction real ( rk ), allocatable , private :: Xt3 (:) !! parameter values in the third direction integer , private :: nc ( 3 ) !! number of control points in each direction integer , private :: ng ( 3 ) !! number of geometry points in each direction contains procedure :: set !!> Set control points and weights procedure :: create !!> Generate geometry points procedure :: get_Xc !!> Get control points procedure :: get_Xg !!> Get geometry points procedure :: get_Wc !!> Get weights procedure :: get_nc !!> Get number of control points procedure :: get_ng !!> Get number of geometry points procedure :: get_order !!> Get order of the Bezier surface procedure :: finalize !!> Finalize the Bezier volume object procedure :: get_elem_Xc !!> Generate connectivity for control points procedure :: get_elem_Xg !!> Generate connectivity for geometry points procedure :: export_Xc !!> Export control points to VTK file procedure :: export_Xg !!> Export geometry points to VTK file procedure :: modify_Xc !!> Modify control points procedure :: modify_Wc !!> Modify weights end type bezier_volume","tags":"","loc":"type/bezier_volume.html"},{"title":"bezier_curve – ForCAD ","text":"type, public :: bezier_curve Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) Weights real(kind=rk), private, allocatable :: Xc (:,:) Control points real(kind=rk), private, allocatable :: Xg (:,:) Geometry points real(kind=rk), private, allocatable :: Xt (:) Parameter values integer, private :: nc Number of control points integer, private :: ng Number of geometry points Type-Bound Procedures procedure, public :: create Generate geometry points private pure subroutine create (this, res, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Generate geometry points of the Bezier curve. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this integer, intent(in), optional :: res real(kind=rk), intent(in), optional :: Xt (:) procedure, public :: elevate_degree Elevate the degree of the Bezier curve private pure subroutine elevate_degree (this) Author Seyed Ali Ghasemi License BSD 3-Clause Elevate the degree of the Bezier curve by one. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this procedure, public :: export_Xc Export control points to VTK file private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Export control points to a VTK file. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: export_Xg Export geometry points to VTK file private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Export geometry points to a VTK file. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: finalize Finalize the Bezier curve object private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Finalize the Bezier curve object by deallocating memory. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this procedure, public :: get_Wc Get weights private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_Xc Get control points private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xg Get geometry points private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xt Get parameter values private pure function get_Xt (this) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_elem_Xc Generate connectivity for control points private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Generate connectivity for control points. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p procedure, public :: get_elem_Xg Generate connectivity for geometry points private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Generate connectivity for geometry points. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p procedure, public :: get_nc Get number of control points private pure function get_nc (this) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer procedure, public :: get_ng Get number of geometry points private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer procedure, public :: get_order Get order of the Bezier curve private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer procedure, public :: modify_Wc Modify weights private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Modify weight of a control point given its index. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num procedure, public :: modify_Xc Modify control points private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Modify coordinate of a control point given its index and direction. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir procedure, public :: set Set control points and weights private pure subroutine set (this, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"type/bezier_curve.html"},{"title":"get_Wc – ForCAD","text":"private pure function get_Wc(this) result(Wc) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_wc.html"},{"title":"get_Xc – ForCAD","text":"private pure function get_Xc(this) result(Xc) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xc.html"},{"title":"get_Xg – ForCAD","text":"private pure function get_Xg(this) result(Xg) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xg.html"},{"title":"get_Xt – ForCAD","text":"private pure function get_Xt(this, dir) result(Xt) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_xt.html"},{"title":"get_nc – ForCAD","text":"private pure function get_nc(this) result(nc) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2)","tags":"","loc":"proc/get_nc.html"},{"title":"get_ng – ForCAD","text":"private pure function get_ng(this) result(ng) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2)","tags":"","loc":"proc/get_ng.html"},{"title":"get_order – ForCAD","text":"private pure function get_order(this) result(order) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2)","tags":"","loc":"proc/get_order.html"},{"title":"create – ForCAD","text":"private pure subroutine create(this, res1, res2, Xt1, Xt2) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) Calls proc~~create~~CallsGraph proc~create forcad_bezier_surface::bezier_surface%create interface~ndgrid forcad_utils::ndgrid proc~create->interface~ndgrid proc~basis_bernstein forcad_utils::basis_bernstein proc~create->proc~basis_bernstein proc~kron forcad_utils::kron proc~create->proc~kron proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~create~~CalledByGraph proc~create forcad_bezier_surface::bezier_surface%create program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~create Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code pure subroutine create ( this , res1 , res2 , Xt1 , Xt2 ) class ( bezier_surface ), intent ( inout ) :: this integer , intent ( in ), optional :: res1 , res2 real ( rk ), intent ( in ), optional :: Xt1 (:), Xt2 (:) integer :: i , j real ( rk ), dimension (:), allocatable :: Tgc1 , Tgc2 , Tgc real ( rk ), dimension (:,:), allocatable :: Xt ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if ! Set parameter values if ( present ( Xt1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) this % Xt1 = Xt1 elseif ( present ( res1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) allocate ( this % Xt1 ( res1 )) this % Xt1 = [( real ( i - 1 , rk ) / real ( res1 - 1 , rk ), i = 1 , res1 )] ! else ! this%Xt1 = this%Xt1 end if ! Set parameter values if ( present ( Xt2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) this % Xt2 = Xt2 elseif ( present ( res2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) allocate ( this % Xt2 ( res2 )) this % Xt2 = [( real ( i - 1 , rk ) / real ( res2 - 1 , rk ), i = 1 , res2 )] ! else ! this%Xt2 = this%Xt2 end if ! Set number of geometry points this % ng ( 1 ) = size ( this % Xt1 , 1 ) this % ng ( 2 ) = size ( this % Xt2 , 1 ) call ndgrid ( this % Xt1 , this % Xt2 , Xt ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) allocate ( this % Xg ( this % ng ( 1 ) * this % ng ( 2 ), size ( this % Xc , 2 ))) if ( allocated ( this % Wc )) then ! Rational Bezier surface do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bernstein ( Xt ( i , 1 ), this % nc ( 1 )) Tgc2 = basis_bernstein ( Xt ( i , 2 ), this % nc ( 2 )) Tgc = kron ( Tgc2 , Tgc1 ) Tgc = Tgc * ( this % Wc / ( dot_product ( Tgc , this % Wc ))) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do else ! Non-rational Bezier surface do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bernstein ( Xt ( i , 1 ), this % nc ( 1 )) Tgc2 = basis_bernstein ( Xt ( i , 2 ), this % nc ( 2 )) Tgc = kron ( Tgc2 , Tgc1 ) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do end if end subroutine create","tags":"","loc":"proc/create.html"},{"title":"export_Xc – ForCAD","text":"private impure subroutine export_Xc(this, filename) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xc~~CallsGraph proc~export_xc forcad_bezier_surface::bezier_surface%export_Xc proc~get_elem_xc forcad_bezier_surface::bezier_surface%get_elem_Xc proc~export_xc->proc~get_elem_xc interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xc~~CalledByGraph proc~export_xc forcad_bezier_surface::bezier_surface%export_Xc program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~export_xc Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xc.html"},{"title":"export_Xg – ForCAD","text":"private impure subroutine export_Xg(this, filename) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xg~~CallsGraph proc~export_xg forcad_bezier_surface::bezier_surface%export_Xg proc~get_elem_xg forcad_bezier_surface::bezier_surface%get_elem_Xg proc~export_xg->proc~get_elem_xg interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xg~~CalledByGraph proc~export_xg forcad_bezier_surface::bezier_surface%export_Xg program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~export_xg Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xg.html"},{"title":"finalize – ForCAD","text":"private pure subroutine finalize(this) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this Called by proc~~finalize~~CalledByGraph proc~finalize forcad_bezier_surface::bezier_surface%finalize program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~finalize Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/finalize.html"},{"title":"get_elem_Xc – ForCAD","text":"private pure subroutine get_elem_Xc(this, elemConn, p) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) Calls proc~~get_elem_xc~~CallsGraph proc~get_elem_xc forcad_bezier_surface::bezier_surface%get_elem_Xc interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xc~~CalledByGraph proc~get_elem_xc forcad_bezier_surface::bezier_surface%get_elem_Xc proc~export_xc forcad_bezier_surface::bezier_surface%export_Xc proc~export_xc->proc~get_elem_xc program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~export_xc Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xc.html"},{"title":"get_elem_Xg – ForCAD","text":"private pure subroutine get_elem_Xg(this, elemConn, p) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) Calls proc~~get_elem_xg~~CallsGraph proc~get_elem_xg forcad_bezier_surface::bezier_surface%get_elem_Xg interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xg~~CalledByGraph proc~get_elem_xg forcad_bezier_surface::bezier_surface%get_elem_Xg proc~export_xg forcad_bezier_surface::bezier_surface%export_Xg proc~export_xg->proc~get_elem_xg program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~export_xg Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xg.html"},{"title":"modify_Wc – ForCAD","text":"private pure subroutine modify_Wc(this, W, num) Modify weight of a control point given its index. Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num Calls proc~~modify_wc~~CallsGraph proc~modify_wc forcad_bezier_surface::bezier_surface%modify_Wc proc~set forcad_bezier_surface::bezier_surface%set proc~modify_wc->proc~set Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_wc.html"},{"title":"modify_Xc – ForCAD","text":"private pure subroutine modify_Xc(this, X, num, dir) Modify coordinate of a control point given its index and direction. Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir Calls proc~~modify_xc~~CallsGraph proc~modify_xc forcad_bezier_surface::bezier_surface%modify_Xc proc~set forcad_bezier_surface::bezier_surface%set proc~modify_xc->proc~set Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_xc.html"},{"title":"set – ForCAD","text":"private pure subroutine set(this, nc, Xc, Wc) Set control points and weights for the Bezier curve object. Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this integer, intent(in) :: nc (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Called by proc~~set~~CalledByGraph proc~set forcad_bezier_surface::bezier_surface%set proc~modify_wc forcad_bezier_surface::bezier_surface%modify_Wc proc~modify_wc->proc~set proc~modify_xc forcad_bezier_surface::bezier_surface%modify_Xc proc~modify_xc->proc~set program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~set Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set.html"},{"title":"get_Wc – ForCAD","text":"private pure function get_Wc(this) result(Wc) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_wc~2.html"},{"title":"get_Xc – ForCAD","text":"private pure function get_Xc(this) result(Xc) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xc~2.html"},{"title":"get_Xg – ForCAD","text":"private pure function get_Xg(this) result(Xg) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xg~2.html"},{"title":"get_Xt – ForCAD","text":"private pure function get_Xt(this, dir) result(Xt) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_xt~2.html"},{"title":"get_continuity – ForCAD","text":"private pure function get_continuity(this, dir) result(c) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) Calls proc~~get_continuity~~CallsGraph proc~get_continuity forcad_nurbs_surface::nurbs_surface%get_continuity proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_continuity->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_continuity.html"},{"title":"get_knot – ForCAD","text":"private pure function get_knot(this, dir) result(knot) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_knot.html"},{"title":"get_multiplicity – ForCAD","text":"private pure function get_multiplicity(this, dir) result(m) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) Calls proc~~get_multiplicity~~CallsGraph proc~get_multiplicity forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_multiplicity~~CalledByGraph proc~get_multiplicity forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~get_order~2 forcad_nurbs_surface::nurbs_surface%get_order proc~get_order~2->proc~get_multiplicity proc~set1 forcad_nurbs_surface::nurbs_surface%set1 proc~set1->proc~get_order~2 none~set~2 forcad_nurbs_surface::nurbs_surface%set none~set~2->proc~set1 proc~modify_wc~2 forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~2->none~set~2 proc~modify_xc~2 forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~2->none~set~2 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->none~set~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_multiplicity.html"},{"title":"get_nc – ForCAD","text":"private pure function get_nc(this, dir) result(nc) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer Calls proc~~get_nc~2~~CallsGraph proc~get_nc~2 forcad_nurbs_surface::nurbs_surface%get_nc proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~2->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_nc~2~~CalledByGraph proc~get_nc~2 forcad_nurbs_surface::nurbs_surface%get_nc proc~set1 forcad_nurbs_surface::nurbs_surface%set1 proc~set1->proc~get_nc~2 proc~set2 forcad_nurbs_surface::nurbs_surface%set2 proc~set2->proc~get_nc~2 none~set~2 forcad_nurbs_surface::nurbs_surface%set none~set~2->proc~set1 none~set~2->proc~set2 proc~modify_wc~2 forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~2->none~set~2 proc~modify_xc~2 forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~2->none~set~2 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->none~set~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_nc~2.html"},{"title":"get_ng – ForCAD","text":"private pure function get_ng(this) result(ng) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value integer, (2)","tags":"","loc":"proc/get_ng~2.html"},{"title":"get_order – ForCAD","text":"private pure function get_order(this) result(order) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value integer, (2) Calls proc~~get_order~2~~CallsGraph proc~get_order~2 forcad_nurbs_surface::nurbs_surface%get_order proc~get_multiplicity forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~get_order~2->proc~get_multiplicity proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_order~2~~CalledByGraph proc~get_order~2 forcad_nurbs_surface::nurbs_surface%get_order proc~set1 forcad_nurbs_surface::nurbs_surface%set1 proc~set1->proc~get_order~2 none~set~2 forcad_nurbs_surface::nurbs_surface%set none~set~2->proc~set1 proc~modify_wc~2 forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~2->none~set~2 proc~modify_xc~2 forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~2->none~set~2 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->none~set~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_order~2.html"},{"title":"create – ForCAD","text":"private pure subroutine create(this, res1, res2, Xt1, Xt2) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) Calls proc~~create~2~~CallsGraph proc~create~2 forcad_nurbs_surface::nurbs_surface%create interface~ndgrid forcad_utils::ndgrid proc~create~2->interface~ndgrid proc~basis_bspline forcad_utils::basis_bspline proc~create~2->proc~basis_bspline proc~kron forcad_utils::kron proc~create~2->proc~kron proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~create~2~~CalledByGraph proc~create~2 forcad_nurbs_surface::nurbs_surface%create program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~create~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/create~2.html"},{"title":"export_Xc – ForCAD","text":"private impure subroutine export_Xc(this, filename) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xc~2~~CallsGraph proc~export_xc~2 forcad_nurbs_surface::nurbs_surface%export_Xc proc~get_elem_xc~2 forcad_nurbs_surface::nurbs_surface%get_elem_Xc proc~export_xc~2->proc~get_elem_xc~2 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~2->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xc~2~~CalledByGraph proc~export_xc~2 forcad_nurbs_surface::nurbs_surface%export_Xc program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~export_xc~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xc~2.html"},{"title":"export_Xg – ForCAD","text":"private impure subroutine export_Xg(this, filename) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xg~2~~CallsGraph proc~export_xg~2 forcad_nurbs_surface::nurbs_surface%export_Xg proc~get_elem_xg~2 forcad_nurbs_surface::nurbs_surface%get_elem_Xg proc~export_xg~2->proc~get_elem_xg~2 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~2->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xg~2~~CalledByGraph proc~export_xg~2 forcad_nurbs_surface::nurbs_surface%export_Xg program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~export_xg~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xg~2.html"},{"title":"finalize – ForCAD","text":"private pure subroutine finalize(this) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this Called by proc~~finalize~2~~CalledByGraph proc~finalize~2 forcad_nurbs_surface::nurbs_surface%finalize program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~finalize~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/finalize~2.html"},{"title":"get_elem_Xc – ForCAD","text":"private pure subroutine get_elem_Xc(this, elemConn, p) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) Calls proc~~get_elem_xc~2~~CallsGraph proc~get_elem_xc~2 forcad_nurbs_surface::nurbs_surface%get_elem_Xc interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~2->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xc~2~~CalledByGraph proc~get_elem_xc~2 forcad_nurbs_surface::nurbs_surface%get_elem_Xc proc~export_xc~2 forcad_nurbs_surface::nurbs_surface%export_Xc proc~export_xc~2->proc~get_elem_xc~2 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~export_xc~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xc~2.html"},{"title":"get_elem_Xg – ForCAD","text":"private pure subroutine get_elem_Xg(this, elemConn, p) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) Calls proc~~get_elem_xg~2~~CallsGraph proc~get_elem_xg~2 forcad_nurbs_surface::nurbs_surface%get_elem_Xg interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~2->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xg~2~~CalledByGraph proc~get_elem_xg~2 forcad_nurbs_surface::nurbs_surface%get_elem_Xg proc~export_xg~2 forcad_nurbs_surface::nurbs_surface%export_Xg proc~export_xg~2->proc~get_elem_xg~2 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~export_xg~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xg~2.html"},{"title":"modify_Wc – ForCAD","text":"private pure subroutine modify_Wc(this, W, num) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num Calls proc~~modify_wc~2~~CallsGraph proc~modify_wc~2 forcad_nurbs_surface::nurbs_surface%modify_Wc none~set~2 forcad_nurbs_surface::nurbs_surface%set proc~modify_wc~2->none~set~2 proc~set1 forcad_nurbs_surface::nurbs_surface%set1 none~set~2->proc~set1 proc~set2 forcad_nurbs_surface::nurbs_surface%set2 none~set~2->proc~set2 proc~get_nc~2 forcad_nurbs_surface::nurbs_surface%get_nc proc~set1->proc~get_nc~2 proc~get_order~2 forcad_nurbs_surface::nurbs_surface%get_order proc~set1->proc~get_order~2 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2->proc~compute_knot_vector proc~set2->proc~get_nc~2 proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~2->proc~compute_multiplicity proc~get_multiplicity forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~get_order~2->proc~get_multiplicity proc~get_multiplicity->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_wc~2.html"},{"title":"modify_Xc – ForCAD","text":"private pure subroutine modify_Xc(this, X, num, dir) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir Calls proc~~modify_xc~2~~CallsGraph proc~modify_xc~2 forcad_nurbs_surface::nurbs_surface%modify_Xc none~set~2 forcad_nurbs_surface::nurbs_surface%set proc~modify_xc~2->none~set~2 proc~set1 forcad_nurbs_surface::nurbs_surface%set1 none~set~2->proc~set1 proc~set2 forcad_nurbs_surface::nurbs_surface%set2 none~set~2->proc~set2 proc~get_nc~2 forcad_nurbs_surface::nurbs_surface%get_nc proc~set1->proc~get_nc~2 proc~get_order~2 forcad_nurbs_surface::nurbs_surface%get_order proc~set1->proc~get_order~2 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2->proc~compute_knot_vector proc~set2->proc~get_nc~2 proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~2->proc~compute_multiplicity proc~get_multiplicity forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~get_order~2->proc~get_multiplicity proc~get_multiplicity->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_xc~2.html"},{"title":"set1 – ForCAD","text":"private pure subroutine set1(this, knot1, knot2, Xc, Wc) Set control points and weights for the NURBS surface object. Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: knot1 (:) real(kind=rk), intent(in) :: knot2 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Calls proc~~set1~~CallsGraph proc~set1 forcad_nurbs_surface::nurbs_surface%set1 proc~get_nc~2 forcad_nurbs_surface::nurbs_surface%get_nc proc~set1->proc~get_nc~2 proc~get_order~2 forcad_nurbs_surface::nurbs_surface%get_order proc~set1->proc~get_order~2 proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~2->proc~compute_multiplicity proc~get_multiplicity forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~get_order~2->proc~get_multiplicity proc~get_multiplicity->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~set1~~CalledByGraph proc~set1 forcad_nurbs_surface::nurbs_surface%set1 none~set~2 forcad_nurbs_surface::nurbs_surface%set none~set~2->proc~set1 proc~modify_wc~2 forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~2->none~set~2 proc~modify_xc~2 forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~2->none~set~2 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->none~set~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set1.html"},{"title":"set2 – ForCAD","text":"private pure subroutine set2(this, Xth_dir1, Xth_dir2, order, continuity1, continuity2, Xc, Wc) Set control points and weights for the NURBS surface object. Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir1 (:) real(kind=rk), intent(in) :: Xth_dir2 (:) integer, intent(in) :: order (:) integer, intent(in) :: continuity1 (:) integer, intent(in) :: continuity2 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Calls proc~~set2~~CallsGraph proc~set2 forcad_nurbs_surface::nurbs_surface%set2 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2->proc~compute_knot_vector proc~get_nc~2 forcad_nurbs_surface::nurbs_surface%get_nc proc~set2->proc~get_nc~2 proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~2->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~set2~~CalledByGraph proc~set2 forcad_nurbs_surface::nurbs_surface%set2 none~set~2 forcad_nurbs_surface::nurbs_surface%set none~set~2->proc~set2 proc~modify_wc~2 forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~2->none~set~2 proc~modify_xc~2 forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~2->none~set~2 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->none~set~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set2.html"},{"title":"get_Wc – ForCAD","text":"private pure function get_Wc(this) result(Wc) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_wc~3.html"},{"title":"get_Xc – ForCAD","text":"private pure function get_Xc(this) result(Xc) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xc~3.html"},{"title":"get_Xg – ForCAD","text":"private pure function get_Xg(this) result(Xg) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xg~3.html"},{"title":"get_Xt – ForCAD","text":"private pure function get_Xt(this) result(Xt) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_xt~3.html"},{"title":"get_continuity – ForCAD","text":"private pure function get_continuity(this) result(c) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer, allocatable, (:) Calls proc~~get_continuity~2~~CallsGraph proc~get_continuity~2 forcad_nurbs_curve::nurbs_curve%get_continuity proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_continuity~2->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_continuity~2.html"},{"title":"get_knot – ForCAD","text":"private pure function get_knot(this) result(knot) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_knot~2.html"},{"title":"get_multiplicity – ForCAD","text":"private pure function get_multiplicity(this) result(m) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer, allocatable, (:) Calls proc~~get_multiplicity~2~~CallsGraph proc~get_multiplicity~2 forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity~2->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_multiplicity~2~~CalledByGraph proc~get_multiplicity~2 forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~get_order~3 forcad_nurbs_curve::nurbs_curve%get_order proc~get_order~3->proc~get_multiplicity~2 proc~set1~2 forcad_nurbs_curve::nurbs_curve%set1 proc~set1~2->proc~get_order~3 none~set~3 forcad_nurbs_curve::nurbs_curve%set none~set~3->proc~set1~2 proc~modify_wc~3 forcad_nurbs_curve::nurbs_curve%modify_Wc proc~modify_wc~3->none~set~3 proc~modify_xc~3 forcad_nurbs_curve::nurbs_curve%modify_Xc proc~modify_xc~3->none~set~3 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->none~set~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_multiplicity~2.html"},{"title":"get_nc – ForCAD","text":"private pure function get_nc(this) result(nc) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer Calls proc~~get_nc~3~~CallsGraph proc~get_nc~3 forcad_nurbs_curve::nurbs_curve%get_nc proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~3->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_nc~3.html"},{"title":"get_ng – ForCAD","text":"private pure function get_ng(this) result(ng) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer","tags":"","loc":"proc/get_ng~3.html"},{"title":"get_order – ForCAD","text":"private pure function get_order(this) result(order) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer Calls proc~~get_order~3~~CallsGraph proc~get_order~3 forcad_nurbs_curve::nurbs_curve%get_order proc~get_multiplicity~2 forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~get_order~3->proc~get_multiplicity~2 proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity~2->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_order~3~~CalledByGraph proc~get_order~3 forcad_nurbs_curve::nurbs_curve%get_order proc~set1~2 forcad_nurbs_curve::nurbs_curve%set1 proc~set1~2->proc~get_order~3 none~set~3 forcad_nurbs_curve::nurbs_curve%set none~set~3->proc~set1~2 proc~modify_wc~3 forcad_nurbs_curve::nurbs_curve%modify_Wc proc~modify_wc~3->none~set~3 proc~modify_xc~3 forcad_nurbs_curve::nurbs_curve%modify_Xc proc~modify_xc~3->none~set~3 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->none~set~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_order~3.html"},{"title":"create – ForCAD","text":"private pure subroutine create(this, res, Xt) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this integer, intent(in), optional :: res real(kind=rk), intent(in), optional :: Xt (:) Calls proc~~create~3~~CallsGraph proc~create~3 forcad_nurbs_curve::nurbs_curve%create proc~basis_bspline forcad_utils::basis_bspline proc~create~3->proc~basis_bspline Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~create~3~~CalledByGraph proc~create~3 forcad_nurbs_curve::nurbs_curve%create program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~create~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/create~3.html"},{"title":"export_Xc – ForCAD","text":"private impure subroutine export_Xc(this, filename) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xc~3~~CallsGraph proc~export_xc~3 forcad_nurbs_curve::nurbs_curve%export_Xc proc~get_elem_xc~3 forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~export_xc~3->proc~get_elem_xc~3 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~3->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xc~3~~CalledByGraph proc~export_xc~3 forcad_nurbs_curve::nurbs_curve%export_Xc program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~export_xc~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xc~3.html"},{"title":"export_Xg – ForCAD","text":"private impure subroutine export_Xg(this, filename) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xg~3~~CallsGraph proc~export_xg~3 forcad_nurbs_curve::nurbs_curve%export_Xg proc~get_elem_xg~3 forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~export_xg~3->proc~get_elem_xg~3 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~3->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xg~3~~CalledByGraph proc~export_xg~3 forcad_nurbs_curve::nurbs_curve%export_Xg program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~export_xg~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xg~3.html"},{"title":"finalize – ForCAD","text":"private pure subroutine finalize(this) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this Called by proc~~finalize~3~~CalledByGraph proc~finalize~3 forcad_nurbs_curve::nurbs_curve%finalize program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~finalize~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/finalize~3.html"},{"title":"get_elem_Xc – ForCAD","text":"private pure subroutine get_elem_Xc(this, elemConn, p) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p Calls proc~~get_elem_xc~3~~CallsGraph proc~get_elem_xc~3 forcad_nurbs_curve::nurbs_curve%get_elem_Xc interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~3->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xc~3~~CalledByGraph proc~get_elem_xc~3 forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~export_xc~3 forcad_nurbs_curve::nurbs_curve%export_Xc proc~export_xc~3->proc~get_elem_xc~3 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~export_xc~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xc~3.html"},{"title":"get_elem_Xg – ForCAD","text":"private pure subroutine get_elem_Xg(this, elemConn, p) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p Calls proc~~get_elem_xg~3~~CallsGraph proc~get_elem_xg~3 forcad_nurbs_curve::nurbs_curve%get_elem_Xg interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~3->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xg~3~~CalledByGraph proc~get_elem_xg~3 forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~export_xg~3 forcad_nurbs_curve::nurbs_curve%export_Xg proc~export_xg~3->proc~get_elem_xg~3 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~export_xg~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xg~3.html"},{"title":"modify_Wc – ForCAD","text":"private pure subroutine modify_Wc(this, W, num) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num Calls proc~~modify_wc~3~~CallsGraph proc~modify_wc~3 forcad_nurbs_curve::nurbs_curve%modify_Wc none~set~3 forcad_nurbs_curve::nurbs_curve%set proc~modify_wc~3->none~set~3 proc~set1~2 forcad_nurbs_curve::nurbs_curve%set1 none~set~3->proc~set1~2 proc~set2~2 forcad_nurbs_curve::nurbs_curve%set2 none~set~3->proc~set2~2 proc~get_order~3 forcad_nurbs_curve::nurbs_curve%get_order proc~set1~2->proc~get_order~3 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2~2->proc~compute_knot_vector proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~get_multiplicity~2 forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~get_order~3->proc~get_multiplicity~2 proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity~2->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_wc~3.html"},{"title":"modify_Xc – ForCAD","text":"private pure subroutine modify_Xc(this, X, num, dir) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir Calls proc~~modify_xc~3~~CallsGraph proc~modify_xc~3 forcad_nurbs_curve::nurbs_curve%modify_Xc none~set~3 forcad_nurbs_curve::nurbs_curve%set proc~modify_xc~3->none~set~3 proc~set1~2 forcad_nurbs_curve::nurbs_curve%set1 none~set~3->proc~set1~2 proc~set2~2 forcad_nurbs_curve::nurbs_curve%set2 none~set~3->proc~set2~2 proc~get_order~3 forcad_nurbs_curve::nurbs_curve%get_order proc~set1~2->proc~get_order~3 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2~2->proc~compute_knot_vector proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~get_multiplicity~2 forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~get_order~3->proc~get_multiplicity~2 proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity~2->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_xc~3.html"},{"title":"set1 – ForCAD","text":"private pure subroutine set1(this, knot, Xc, Wc) Set control points and weights for the Bezier curve object. Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: knot (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Calls proc~~set1~2~~CallsGraph proc~set1~2 forcad_nurbs_curve::nurbs_curve%set1 proc~get_order~3 forcad_nurbs_curve::nurbs_curve%get_order proc~set1~2->proc~get_order~3 proc~get_multiplicity~2 forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~get_order~3->proc~get_multiplicity~2 proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity~2->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~set1~2~~CalledByGraph proc~set1~2 forcad_nurbs_curve::nurbs_curve%set1 none~set~3 forcad_nurbs_curve::nurbs_curve%set none~set~3->proc~set1~2 proc~modify_wc~3 forcad_nurbs_curve::nurbs_curve%modify_Wc proc~modify_wc~3->none~set~3 proc~modify_xc~3 forcad_nurbs_curve::nurbs_curve%modify_Xc proc~modify_xc~3->none~set~3 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->none~set~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set1~2.html"},{"title":"set2 – ForCAD","text":"private pure subroutine set2(this, Xth_dir, order, continuity, Xc, Wc) Set control points and weights for the Bezier curve object. Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir (:) integer, intent(in) :: order integer, intent(in) :: continuity (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Calls proc~~set2~2~~CallsGraph proc~set2~2 forcad_nurbs_curve::nurbs_curve%set2 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2~2->proc~compute_knot_vector proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~set2~2~~CalledByGraph proc~set2~2 forcad_nurbs_curve::nurbs_curve%set2 none~set~3 forcad_nurbs_curve::nurbs_curve%set none~set~3->proc~set2~2 proc~modify_wc~3 forcad_nurbs_curve::nurbs_curve%modify_Wc proc~modify_wc~3->none~set~3 proc~modify_xc~3 forcad_nurbs_curve::nurbs_curve%modify_Xc proc~modify_xc~3->none~set~3 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->none~set~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set2~2.html"},{"title":"generate_Xc – ForCAD","text":"function generate_Xc(num_rows, num_cols, peak_height) result(control_points) Arguments Type Intent Optional Attributes Name integer, intent(in) :: num_rows integer, intent(in) :: num_cols real(kind=rk), intent(in) :: peak_height Return Value real(kind=rk), dimension(:,:), allocatable Called by proc~~generate_xc~~CalledByGraph proc~generate_xc example_nurbs_surface::generate_Xc program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~generate_xc Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/generate_xc.html"},{"title":"generate_Xc – ForCAD","text":"function generate_Xc(L) result(control_points) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: L Return Value real(kind=rk), dimension(:,:), allocatable Called by proc~~generate_xc~2~~CalledByGraph proc~generate_xc~2 example_bezier_volume::generate_Xc program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~generate_xc~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/generate_xc~2.html"},{"title":"generate_Xc – ForCAD","text":"function generate_Xc(num_rows, num_cols, peak_height) result(control_points) Arguments Type Intent Optional Attributes Name integer, intent(in) :: num_rows integer, intent(in) :: num_cols real(kind=rk), intent(in) :: peak_height Return Value real(kind=rk), dimension(:,:), allocatable Called by proc~~generate_xc~3~~CalledByGraph proc~generate_xc~3 example_bezier_surface::generate_Xc program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~generate_xc~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/generate_xc~3.html"},{"title":"get_Wc – ForCAD","text":"private pure function get_Wc(this) result(Wc) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_wc~4.html"},{"title":"get_Xc – ForCAD","text":"private pure function get_Xc(this) result(Xc) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xc~4.html"},{"title":"get_Xg – ForCAD","text":"private pure function get_Xg(this) result(Xg) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xg~4.html"},{"title":"get_Xt – ForCAD","text":"private pure function get_Xt(this, dir) result(Xt) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_xt~4.html"},{"title":"get_continuity – ForCAD","text":"private pure function get_continuity(this, dir) result(c) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) Calls proc~~get_continuity~3~~CallsGraph proc~get_continuity~3 forcad_nurbs_volume::nurbs_volume%get_continuity proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_continuity~3->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_continuity~3.html"},{"title":"get_knot – ForCAD","text":"private pure function get_knot(this, dir) result(knot) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_knot~3.html"},{"title":"get_multiplicity – ForCAD","text":"private pure function get_multiplicity(this, dir) result(m) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) Calls proc~~get_multiplicity~3~~CallsGraph proc~get_multiplicity~3 forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity~3->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_multiplicity~3~~CalledByGraph proc~get_multiplicity~3 forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~get_order~4 forcad_nurbs_volume::nurbs_volume%get_order proc~get_order~4->proc~get_multiplicity~3 proc~set1~3 forcad_nurbs_volume::nurbs_volume%set1 proc~set1~3->proc~get_order~4 none~set~4 forcad_nurbs_volume::nurbs_volume%set none~set~4->proc~set1~3 proc~modify_wc~4 forcad_nurbs_volume::nurbs_volume%modify_Wc proc~modify_wc~4->none~set~4 proc~modify_xc~4 forcad_nurbs_volume::nurbs_volume%modify_Xc proc~modify_xc~4->none~set~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->none~set~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_multiplicity~3.html"},{"title":"get_nc – ForCAD","text":"private pure function get_nc(this, dir) result(nc) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer Calls proc~~get_nc~4~~CallsGraph proc~get_nc~4 forcad_nurbs_volume::nurbs_volume%get_nc proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~4->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_nc~4~~CalledByGraph proc~get_nc~4 forcad_nurbs_volume::nurbs_volume%get_nc proc~set1~3 forcad_nurbs_volume::nurbs_volume%set1 proc~set1~3->proc~get_nc~4 proc~set2~3 forcad_nurbs_volume::nurbs_volume%set2 proc~set2~3->proc~get_nc~4 none~set~4 forcad_nurbs_volume::nurbs_volume%set none~set~4->proc~set1~3 none~set~4->proc~set2~3 proc~modify_wc~4 forcad_nurbs_volume::nurbs_volume%modify_Wc proc~modify_wc~4->none~set~4 proc~modify_xc~4 forcad_nurbs_volume::nurbs_volume%modify_Xc proc~modify_xc~4->none~set~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->none~set~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_nc~4.html"},{"title":"get_ng – ForCAD","text":"private pure function get_ng(this) result(ng) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value integer, (3)","tags":"","loc":"proc/get_ng~4.html"},{"title":"get_order – ForCAD","text":"private pure function get_order(this) result(order) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value integer, (3) Calls proc~~get_order~4~~CallsGraph proc~get_order~4 forcad_nurbs_volume::nurbs_volume%get_order proc~get_multiplicity~3 forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~get_order~4->proc~get_multiplicity~3 proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity~3->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_order~4~~CalledByGraph proc~get_order~4 forcad_nurbs_volume::nurbs_volume%get_order proc~set1~3 forcad_nurbs_volume::nurbs_volume%set1 proc~set1~3->proc~get_order~4 none~set~4 forcad_nurbs_volume::nurbs_volume%set none~set~4->proc~set1~3 proc~modify_wc~4 forcad_nurbs_volume::nurbs_volume%modify_Wc proc~modify_wc~4->none~set~4 proc~modify_xc~4 forcad_nurbs_volume::nurbs_volume%modify_Xc proc~modify_xc~4->none~set~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->none~set~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_order~4.html"},{"title":"create – ForCAD","text":"private pure subroutine create(this, res1, res2, res3, Xt1, Xt2, Xt3) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 integer, intent(in), optional :: res3 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) real(kind=rk), intent(in), optional :: Xt3 (:) Calls proc~~create~4~~CallsGraph proc~create~4 forcad_nurbs_volume::nurbs_volume%create interface~ndgrid forcad_utils::ndgrid proc~create~4->interface~ndgrid proc~basis_bspline forcad_utils::basis_bspline proc~create~4->proc~basis_bspline proc~kron forcad_utils::kron proc~create~4->proc~kron proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~create~4~~CalledByGraph proc~create~4 forcad_nurbs_volume::nurbs_volume%create program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~create~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/create~4.html"},{"title":"export_Xc – ForCAD","text":"private impure subroutine export_Xc(this, filename) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xc~4~~CallsGraph proc~export_xc~4 forcad_nurbs_volume::nurbs_volume%export_Xc proc~get_elem_xc~4 forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~export_xc~4->proc~get_elem_xc~4 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~4->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xc~4~~CalledByGraph proc~export_xc~4 forcad_nurbs_volume::nurbs_volume%export_Xc program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~export_xc~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xc~4.html"},{"title":"export_Xg – ForCAD","text":"private impure subroutine export_Xg(this, filename) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xg~4~~CallsGraph proc~export_xg~4 forcad_nurbs_volume::nurbs_volume%export_Xg proc~get_elem_xg~4 forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~export_xg~4->proc~get_elem_xg~4 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~4->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xg~4~~CalledByGraph proc~export_xg~4 forcad_nurbs_volume::nurbs_volume%export_Xg program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~export_xg~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xg~4.html"},{"title":"finalize – ForCAD","text":"private pure subroutine finalize(this) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this Called by proc~~finalize~4~~CalledByGraph proc~finalize~4 forcad_nurbs_volume::nurbs_volume%finalize program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~finalize~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/finalize~4.html"},{"title":"get_elem_Xc – ForCAD","text":"private pure subroutine get_elem_Xc(this, elemConn, p) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) Calls proc~~get_elem_xc~4~~CallsGraph proc~get_elem_xc~4 forcad_nurbs_volume::nurbs_volume%get_elem_Xc interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~4->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xc~4~~CalledByGraph proc~get_elem_xc~4 forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~export_xc~4 forcad_nurbs_volume::nurbs_volume%export_Xc proc~export_xc~4->proc~get_elem_xc~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~export_xc~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xc~4.html"},{"title":"get_elem_Xg – ForCAD","text":"private pure subroutine get_elem_Xg(this, elemConn, p) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) Calls proc~~get_elem_xg~4~~CallsGraph proc~get_elem_xg~4 forcad_nurbs_volume::nurbs_volume%get_elem_Xg interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~4->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xg~4~~CalledByGraph proc~get_elem_xg~4 forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~export_xg~4 forcad_nurbs_volume::nurbs_volume%export_Xg proc~export_xg~4->proc~get_elem_xg~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~export_xg~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xg~4.html"},{"title":"modify_Wc – ForCAD","text":"private pure subroutine modify_Wc(this, W, num) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num Calls proc~~modify_wc~4~~CallsGraph proc~modify_wc~4 forcad_nurbs_volume::nurbs_volume%modify_Wc none~set~4 forcad_nurbs_volume::nurbs_volume%set proc~modify_wc~4->none~set~4 proc~set1~3 forcad_nurbs_volume::nurbs_volume%set1 none~set~4->proc~set1~3 proc~set2~3 forcad_nurbs_volume::nurbs_volume%set2 none~set~4->proc~set2~3 proc~get_nc~4 forcad_nurbs_volume::nurbs_volume%get_nc proc~set1~3->proc~get_nc~4 proc~get_order~4 forcad_nurbs_volume::nurbs_volume%get_order proc~set1~3->proc~get_order~4 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2~3->proc~compute_knot_vector proc~set2~3->proc~get_nc~4 proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~4->proc~compute_multiplicity proc~get_multiplicity~3 forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~get_order~4->proc~get_multiplicity~3 proc~get_multiplicity~3->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_wc~4.html"},{"title":"modify_Xc – ForCAD","text":"private pure subroutine modify_Xc(this, X, num, dir) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir Calls proc~~modify_xc~4~~CallsGraph proc~modify_xc~4 forcad_nurbs_volume::nurbs_volume%modify_Xc none~set~4 forcad_nurbs_volume::nurbs_volume%set proc~modify_xc~4->none~set~4 proc~set1~3 forcad_nurbs_volume::nurbs_volume%set1 none~set~4->proc~set1~3 proc~set2~3 forcad_nurbs_volume::nurbs_volume%set2 none~set~4->proc~set2~3 proc~get_nc~4 forcad_nurbs_volume::nurbs_volume%get_nc proc~set1~3->proc~get_nc~4 proc~get_order~4 forcad_nurbs_volume::nurbs_volume%get_order proc~set1~3->proc~get_order~4 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2~3->proc~compute_knot_vector proc~set2~3->proc~get_nc~4 proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~4->proc~compute_multiplicity proc~get_multiplicity~3 forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~get_order~4->proc~get_multiplicity~3 proc~get_multiplicity~3->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_xc~4.html"},{"title":"set1 – ForCAD","text":"private pure subroutine set1(this, knot1, knot2, knot3, Xc, Wc) Set control points and weights for the NURBS curve object. Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: knot1 (:) real(kind=rk), intent(in) :: knot2 (:) real(kind=rk), intent(in) :: knot3 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Calls proc~~set1~3~~CallsGraph proc~set1~3 forcad_nurbs_volume::nurbs_volume%set1 proc~get_nc~4 forcad_nurbs_volume::nurbs_volume%get_nc proc~set1~3->proc~get_nc~4 proc~get_order~4 forcad_nurbs_volume::nurbs_volume%get_order proc~set1~3->proc~get_order~4 proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~4->proc~compute_multiplicity proc~get_multiplicity~3 forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~get_order~4->proc~get_multiplicity~3 proc~get_multiplicity~3->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~set1~3~~CalledByGraph proc~set1~3 forcad_nurbs_volume::nurbs_volume%set1 none~set~4 forcad_nurbs_volume::nurbs_volume%set none~set~4->proc~set1~3 proc~modify_wc~4 forcad_nurbs_volume::nurbs_volume%modify_Wc proc~modify_wc~4->none~set~4 proc~modify_xc~4 forcad_nurbs_volume::nurbs_volume%modify_Xc proc~modify_xc~4->none~set~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->none~set~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set1~3.html"},{"title":"set2 – ForCAD","text":"private pure subroutine set2(this, Xth_dir1, Xth_dir2, Xth_dir3, order, continuity1, continuity2, continuity3, Xc, Wc) Set control points and weights for the NURBS curve object. Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir1 (:) real(kind=rk), intent(in) :: Xth_dir2 (:) real(kind=rk), intent(in) :: Xth_dir3 (:) integer, intent(in) :: order (:) integer, intent(in) :: continuity1 (:) integer, intent(in) :: continuity2 (:) integer, intent(in) :: continuity3 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Calls proc~~set2~3~~CallsGraph proc~set2~3 forcad_nurbs_volume::nurbs_volume%set2 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2~3->proc~compute_knot_vector proc~get_nc~4 forcad_nurbs_volume::nurbs_volume%get_nc proc~set2~3->proc~get_nc~4 proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~4->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~set2~3~~CalledByGraph proc~set2~3 forcad_nurbs_volume::nurbs_volume%set2 none~set~4 forcad_nurbs_volume::nurbs_volume%set none~set~4->proc~set2~3 proc~modify_wc~4 forcad_nurbs_volume::nurbs_volume%modify_Wc proc~modify_wc~4->none~set~4 proc~modify_xc~4 forcad_nurbs_volume::nurbs_volume%modify_Xc proc~modify_xc~4->none~set~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->none~set~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set2~3.html"},{"title":"generate_Xc – ForCAD","text":"function generate_Xc(L) result(control_points) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: L Return Value real(kind=rk), dimension(:,:), allocatable Called by proc~~generate_xc~4~~CalledByGraph proc~generate_xc~4 example_nurbs_volume::generate_Xc program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~generate_xc~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/generate_xc~4.html"},{"title":"get_Wc – ForCAD","text":"private pure function get_Wc(this) result(Wc) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_wc~5.html"},{"title":"get_Xc – ForCAD","text":"private pure function get_Xc(this) result(Xc) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xc~5.html"},{"title":"get_Xg – ForCAD","text":"private pure function get_Xg(this) result(Xg) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xg~5.html"},{"title":"get_Xt – ForCAD","text":"private pure function get_Xt(this, dir) result(Xt) Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_xt~5.html"},{"title":"get_nc – ForCAD","text":"private pure function get_nc(this) result(nc) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3)","tags":"","loc":"proc/get_nc~5.html"},{"title":"get_ng – ForCAD","text":"private pure function get_ng(this) result(ng) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3)","tags":"","loc":"proc/get_ng~5.html"},{"title":"get_order – ForCAD","text":"private pure function get_order(this) result(order) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3)","tags":"","loc":"proc/get_order~5.html"},{"title":"create – ForCAD","text":"private pure subroutine create(this, res1, res2, res3, Xt1, Xt2, Xt3) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 integer, intent(in), optional :: res3 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) real(kind=rk), intent(in), optional :: Xt3 (:) Calls proc~~create~5~~CallsGraph proc~create~5 forcad_bezier_volume::bezier_volume%create interface~ndgrid forcad_utils::ndgrid proc~create~5->interface~ndgrid proc~basis_bernstein forcad_utils::basis_bernstein proc~create~5->proc~basis_bernstein proc~kron forcad_utils::kron proc~create~5->proc~kron proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~create~5~~CalledByGraph proc~create~5 forcad_bezier_volume::bezier_volume%create program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~create~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/create~5.html"},{"title":"export_Xc – ForCAD","text":"private impure subroutine export_Xc(this, filename) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xc~5~~CallsGraph proc~export_xc~5 forcad_bezier_volume::bezier_volume%export_Xc proc~get_elem_xc~5 forcad_bezier_volume::bezier_volume%get_elem_Xc proc~export_xc~5->proc~get_elem_xc~5 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~5->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xc~5~~CalledByGraph proc~export_xc~5 forcad_bezier_volume::bezier_volume%export_Xc program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~export_xc~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xc~5.html"},{"title":"export_Xg – ForCAD","text":"private impure subroutine export_Xg(this, filename) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xg~5~~CallsGraph proc~export_xg~5 forcad_bezier_volume::bezier_volume%export_Xg proc~get_elem_xg~5 forcad_bezier_volume::bezier_volume%get_elem_Xg proc~export_xg~5->proc~get_elem_xg~5 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~5->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xg~5~~CalledByGraph proc~export_xg~5 forcad_bezier_volume::bezier_volume%export_Xg program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~export_xg~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xg~5.html"},{"title":"finalize – ForCAD","text":"private pure subroutine finalize(this) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this Called by proc~~finalize~5~~CalledByGraph proc~finalize~5 forcad_bezier_volume::bezier_volume%finalize program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~finalize~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/finalize~5.html"},{"title":"get_elem_Xc – ForCAD","text":"private pure subroutine get_elem_Xc(this, elemConn, p) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) Calls proc~~get_elem_xc~5~~CallsGraph proc~get_elem_xc~5 forcad_bezier_volume::bezier_volume%get_elem_Xc interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~5->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xc~5~~CalledByGraph proc~get_elem_xc~5 forcad_bezier_volume::bezier_volume%get_elem_Xc proc~export_xc~5 forcad_bezier_volume::bezier_volume%export_Xc proc~export_xc~5->proc~get_elem_xc~5 program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~export_xc~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xc~5.html"},{"title":"get_elem_Xg – ForCAD","text":"private pure subroutine get_elem_Xg(this, elemConn, p) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) Calls proc~~get_elem_xg~5~~CallsGraph proc~get_elem_xg~5 forcad_bezier_volume::bezier_volume%get_elem_Xg interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~5->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xg~5~~CalledByGraph proc~get_elem_xg~5 forcad_bezier_volume::bezier_volume%get_elem_Xg proc~export_xg~5 forcad_bezier_volume::bezier_volume%export_Xg proc~export_xg~5->proc~get_elem_xg~5 program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~export_xg~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xg~5.html"},{"title":"modify_Wc – ForCAD","text":"private pure subroutine modify_Wc(this, W, num) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num Calls proc~~modify_wc~5~~CallsGraph proc~modify_wc~5 forcad_bezier_volume::bezier_volume%modify_Wc proc~set~2 forcad_bezier_volume::bezier_volume%set proc~modify_wc~5->proc~set~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_wc~5.html"},{"title":"modify_Xc – ForCAD","text":"private pure subroutine modify_Xc(this, X, num, dir) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir Calls proc~~modify_xc~5~~CallsGraph proc~modify_xc~5 forcad_bezier_volume::bezier_volume%modify_Xc proc~set~2 forcad_bezier_volume::bezier_volume%set proc~modify_xc~5->proc~set~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_xc~5.html"},{"title":"set – ForCAD","text":"private pure subroutine set(this, nc, Xc, Wc) Set control points and weights for the Bezier curve object. Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this integer, intent(in) :: nc (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Called by proc~~set~2~~CalledByGraph proc~set~2 forcad_bezier_volume::bezier_volume%set proc~modify_wc~5 forcad_bezier_volume::bezier_volume%modify_Wc proc~modify_wc~5->proc~set~2 proc~modify_xc~5 forcad_bezier_volume::bezier_volume%modify_Xc proc~modify_xc~5->proc~set~2 program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~set~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set~2.html"},{"title":"get_Wc – ForCAD","text":"private pure function get_Wc(this) result(Wc) Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_wc~6.html"},{"title":"get_Xc – ForCAD","text":"private pure function get_Xc(this) result(Xc) Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xc~6.html"},{"title":"get_Xg – ForCAD","text":"private pure function get_Xg(this) result(Xg) Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xg~6.html"},{"title":"get_Xt – ForCAD","text":"private pure function get_Xt(this) result(Xt) Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_xt~6.html"},{"title":"get_nc – ForCAD","text":"private pure function get_nc(this) result(nc) Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer","tags":"","loc":"proc/get_nc~6.html"},{"title":"get_ng – ForCAD","text":"private pure function get_ng(this) result(ng) Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer","tags":"","loc":"proc/get_ng~6.html"},{"title":"get_order – ForCAD","text":"private pure function get_order(this) result(order) Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer","tags":"","loc":"proc/get_order~6.html"},{"title":"create – ForCAD","text":"private pure subroutine create(this, res, Xt) Generate geometry points of the Bezier curve. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this integer, intent(in), optional :: res real(kind=rk), intent(in), optional :: Xt (:) Calls proc~~create~6~~CallsGraph proc~create~6 forcad_bezier_curve::bezier_curve%create proc~basis_bernstein forcad_utils::basis_bernstein proc~create~6->proc~basis_bernstein Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~create~6~~CalledByGraph proc~create~6 forcad_bezier_curve::bezier_curve%create proc~elevate_degree forcad_bezier_curve::bezier_curve%elevate_degree proc~elevate_degree->proc~create~6 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~create~6 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/create~6.html"},{"title":"elevate_degree – ForCAD","text":"private pure subroutine elevate_degree(this) Elevate the degree of the Bezier curve by one. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this Calls proc~~elevate_degree~~CallsGraph proc~elevate_degree forcad_bezier_curve::bezier_curve%elevate_degree proc~create~6 forcad_bezier_curve::bezier_curve%create proc~elevate_degree->proc~create~6 proc~set~3 forcad_bezier_curve::bezier_curve%set proc~elevate_degree->proc~set~3 proc~basis_bernstein forcad_utils::basis_bernstein proc~create~6->proc~basis_bernstein Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/elevate_degree.html"},{"title":"export_Xc – ForCAD","text":"private impure subroutine export_Xc(this, filename) Export control points to a VTK file. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xc~6~~CallsGraph proc~export_xc~6 forcad_bezier_curve::bezier_curve%export_Xc proc~get_elem_xc~6 forcad_bezier_curve::bezier_curve%get_elem_Xc proc~export_xc~6->proc~get_elem_xc~6 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~6->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xc~6~~CalledByGraph proc~export_xc~6 forcad_bezier_curve::bezier_curve%export_Xc program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~export_xc~6 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xc~6.html"},{"title":"export_Xg – ForCAD","text":"private impure subroutine export_Xg(this, filename) Export geometry points to a VTK file. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xg~6~~CallsGraph proc~export_xg~6 forcad_bezier_curve::bezier_curve%export_Xg proc~get_elem_xg~6 forcad_bezier_curve::bezier_curve%get_elem_Xg proc~export_xg~6->proc~get_elem_xg~6 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~6->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xg~6~~CalledByGraph proc~export_xg~6 forcad_bezier_curve::bezier_curve%export_Xg program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~export_xg~6 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xg~6.html"},{"title":"finalize – ForCAD","text":"private pure subroutine finalize(this) Finalize the Bezier curve object by deallocating memory. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this Called by proc~~finalize~6~~CalledByGraph proc~finalize~6 forcad_bezier_curve::bezier_curve%finalize program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~finalize~6 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/finalize~6.html"},{"title":"get_elem_Xc – ForCAD","text":"private pure subroutine get_elem_Xc(this, elemConn, p) Generate connectivity for control points. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p Calls proc~~get_elem_xc~6~~CallsGraph proc~get_elem_xc~6 forcad_bezier_curve::bezier_curve%get_elem_Xc interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~6->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xc~6~~CalledByGraph proc~get_elem_xc~6 forcad_bezier_curve::bezier_curve%get_elem_Xc proc~export_xc~6 forcad_bezier_curve::bezier_curve%export_Xc proc~export_xc~6->proc~get_elem_xc~6 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~export_xc~6 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xc~6.html"},{"title":"get_elem_Xg – ForCAD","text":"private pure subroutine get_elem_Xg(this, elemConn, p) Generate connectivity for geometry points. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p Calls proc~~get_elem_xg~6~~CallsGraph proc~get_elem_xg~6 forcad_bezier_curve::bezier_curve%get_elem_Xg interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~6->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xg~6~~CalledByGraph proc~get_elem_xg~6 forcad_bezier_curve::bezier_curve%get_elem_Xg proc~export_xg~6 forcad_bezier_curve::bezier_curve%export_Xg proc~export_xg~6->proc~get_elem_xg~6 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~export_xg~6 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xg~6.html"},{"title":"modify_Wc – ForCAD","text":"private pure subroutine modify_Wc(this, W, num) Modify weight of a control point given its index. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num Calls proc~~modify_wc~6~~CallsGraph proc~modify_wc~6 forcad_bezier_curve::bezier_curve%modify_Wc proc~set~3 forcad_bezier_curve::bezier_curve%set proc~modify_wc~6->proc~set~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_wc~6.html"},{"title":"modify_Xc – ForCAD","text":"private pure subroutine modify_Xc(this, X, num, dir) Modify coordinate of a control point given its index and direction. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir Calls proc~~modify_xc~6~~CallsGraph proc~modify_xc~6 forcad_bezier_curve::bezier_curve%modify_Xc proc~set~3 forcad_bezier_curve::bezier_curve%set proc~modify_xc~6->proc~set~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_xc~6.html"},{"title":"set – ForCAD","text":"private pure subroutine set(this, Xc, Wc) Set control points and weights for the Bezier curve object. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Called by proc~~set~3~~CalledByGraph proc~set~3 forcad_bezier_curve::bezier_curve%set proc~elevate_degree forcad_bezier_curve::bezier_curve%elevate_degree proc~elevate_degree->proc~set~3 proc~modify_wc~6 forcad_bezier_curve::bezier_curve%modify_Wc proc~modify_wc~6->proc~set~3 proc~modify_xc~6 forcad_bezier_curve::bezier_curve%modify_Xc proc~modify_xc~6->proc~set~3 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~set~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set~3.html"},{"title":"basis_bernstein – ForCAD","text":"public pure function basis_bernstein(Xt, nc) result(B) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: Xt integer, intent(in) :: nc Return Value real(kind=rk), allocatable, (:) Called by proc~~basis_bernstein~~CalledByGraph proc~basis_bernstein forcad_utils::basis_bernstein proc~create forcad_bezier_surface::bezier_surface%create proc~create->proc~basis_bernstein proc~create~5 forcad_bezier_volume::bezier_volume%create proc~create~5->proc~basis_bernstein proc~create~6 forcad_bezier_curve::bezier_curve%create proc~create~6->proc~basis_bernstein proc~elevate_degree forcad_bezier_curve::bezier_curve%elevate_degree proc~elevate_degree->proc~create~6 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~create~6 program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~create program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~create~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/basis_bernstein.html"},{"title":"basis_bspline – ForCAD","text":"public pure function basis_bspline(Xt, knot, nc, order) result(B) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: Xt real(kind=rk), intent(in) :: knot (:) integer, intent(in) :: nc integer, intent(in) :: order Return Value real(kind=rk), allocatable, (:) Called by proc~~basis_bspline~~CalledByGraph proc~basis_bspline forcad_utils::basis_bspline proc~create~2 forcad_nurbs_surface::nurbs_surface%create proc~create~2->proc~basis_bspline proc~create~3 forcad_nurbs_curve::nurbs_curve%create proc~create~3->proc~basis_bspline proc~create~4 forcad_nurbs_volume::nurbs_volume%create proc~create~4->proc~basis_bspline program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~create~3 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~create~2 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~create~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/basis_bspline.html"},{"title":"compute_knot_vector – ForCAD","text":"public pure function compute_knot_vector(Xth_dir, order, continuity) result(knot) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: Xth_dir (:) integer, intent(in) :: order integer, intent(in) :: continuity (:) Return Value real(kind=rk), allocatable, (:) Calls proc~~compute_knot_vector~~CallsGraph proc~compute_knot_vector forcad_utils::compute_knot_vector proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~compute_knot_vector~~CalledByGraph proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2 forcad_nurbs_surface::nurbs_surface%set2 proc~set2->proc~compute_knot_vector proc~set2~2 forcad_nurbs_curve::nurbs_curve%set2 proc~set2~2->proc~compute_knot_vector proc~set2~3 forcad_nurbs_volume::nurbs_volume%set2 proc~set2~3->proc~compute_knot_vector none~set~2 forcad_nurbs_surface::nurbs_surface%set none~set~2->proc~set2 none~set~3 forcad_nurbs_curve::nurbs_curve%set none~set~3->proc~set2~2 none~set~4 forcad_nurbs_volume::nurbs_volume%set none~set~4->proc~set2~3 proc~modify_wc~2 forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~2->none~set~2 proc~modify_wc~3 forcad_nurbs_curve::nurbs_curve%modify_Wc proc~modify_wc~3->none~set~3 proc~modify_wc~4 forcad_nurbs_volume::nurbs_volume%modify_Wc proc~modify_wc~4->none~set~4 proc~modify_xc~2 forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~2->none~set~2 proc~modify_xc~3 forcad_nurbs_curve::nurbs_curve%modify_Xc proc~modify_xc~3->none~set~3 proc~modify_xc~4 forcad_nurbs_volume::nurbs_volume%modify_Xc proc~modify_xc~4->none~set~4 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->none~set~3 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->none~set~2 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->none~set~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/compute_knot_vector.html"},{"title":"compute_multiplicity – ForCAD","text":"public pure function compute_multiplicity(knot) result(multiplicity) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: knot (:) Return Value integer, dimension(:), allocatable Called by proc~~compute_multiplicity~~CalledByGraph proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_continuity forcad_nurbs_surface::nurbs_surface%get_continuity proc~get_continuity->proc~compute_multiplicity proc~get_continuity~2 forcad_nurbs_curve::nurbs_curve%get_continuity proc~get_continuity~2->proc~compute_multiplicity proc~get_continuity~3 forcad_nurbs_volume::nurbs_volume%get_continuity proc~get_continuity~3->proc~compute_multiplicity proc~get_multiplicity forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~get_multiplicity->proc~compute_multiplicity proc~get_multiplicity~2 forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~get_multiplicity~2->proc~compute_multiplicity proc~get_multiplicity~3 forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~get_multiplicity~3->proc~compute_multiplicity proc~get_nc~2 forcad_nurbs_surface::nurbs_surface%get_nc proc~get_nc~2->proc~compute_multiplicity proc~get_nc~3 forcad_nurbs_curve::nurbs_curve%get_nc proc~get_nc~3->proc~compute_multiplicity proc~get_nc~4 forcad_nurbs_volume::nurbs_volume%get_nc proc~get_nc~4->proc~compute_multiplicity proc~get_order~2 forcad_nurbs_surface::nurbs_surface%get_order proc~get_order~2->proc~get_multiplicity proc~get_order~3 forcad_nurbs_curve::nurbs_curve%get_order proc~get_order~3->proc~get_multiplicity~2 proc~get_order~4 forcad_nurbs_volume::nurbs_volume%get_order proc~get_order~4->proc~get_multiplicity~3 proc~set1 forcad_nurbs_surface::nurbs_surface%set1 proc~set1->proc~get_nc~2 proc~set1->proc~get_order~2 proc~set1~3 forcad_nurbs_volume::nurbs_volume%set1 proc~set1~3->proc~get_nc~4 proc~set1~3->proc~get_order~4 proc~set2 forcad_nurbs_surface::nurbs_surface%set2 proc~set2->proc~get_nc~2 proc~set2~3 forcad_nurbs_volume::nurbs_volume%set2 proc~set2~3->proc~get_nc~4 none~set~2 forcad_nurbs_surface::nurbs_surface%set none~set~2->proc~set1 none~set~2->proc~set2 none~set~4 forcad_nurbs_volume::nurbs_volume%set none~set~4->proc~set1~3 none~set~4->proc~set2~3 proc~set1~2 forcad_nurbs_curve::nurbs_curve%set1 proc~set1~2->proc~get_order~3 none~set~3 forcad_nurbs_curve::nurbs_curve%set none~set~3->proc~set1~2 proc~modify_wc~2 forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~2->none~set~2 proc~modify_wc~4 forcad_nurbs_volume::nurbs_volume%modify_Wc proc~modify_wc~4->none~set~4 proc~modify_xc~2 forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~2->none~set~2 proc~modify_xc~4 forcad_nurbs_volume::nurbs_volume%modify_Xc proc~modify_xc~4->none~set~4 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->none~set~2 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->none~set~4 proc~modify_wc~3 forcad_nurbs_curve::nurbs_curve%modify_Wc proc~modify_wc~3->none~set~3 proc~modify_xc~3 forcad_nurbs_curve::nurbs_curve%modify_Xc proc~modify_xc~3->none~set~3 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->none~set~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/compute_multiplicity.html"},{"title":"kron – ForCAD","text":"public pure function kron(u, v) result(w) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: u real(kind=rk), intent(in), dimension(:), contiguous :: v Return Value real(kind=rk), dimension(size(u)*size(v)) Called by proc~~kron~~CalledByGraph proc~kron forcad_utils::kron proc~create forcad_bezier_surface::bezier_surface%create proc~create->proc~kron proc~create~2 forcad_nurbs_surface::nurbs_surface%create proc~create~2->proc~kron proc~create~4 forcad_nurbs_volume::nurbs_volume%create proc~create~4->proc~kron proc~create~5 forcad_bezier_volume::bezier_volume%create proc~create~5->proc~kron program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~create program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~create~5 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~create~2 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~create~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/kron.html"},{"title":"cmp_elemConn_C0_L – ForCAD","text":"private pure function cmp_elemConn_C0_L(nnode, p) result(elemConn) Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode integer, intent(in) :: p Return Value integer, dimension(:,:), allocatable Called by proc~~cmp_elemconn_c0_l~~CalledByGraph proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0 forcad_utils::elemConn_C0 interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~get_elem_xc forcad_bezier_surface::bezier_surface%get_elem_Xc proc~get_elem_xc->interface~elemconn_c0 proc~get_elem_xc~2 forcad_nurbs_surface::nurbs_surface%get_elem_Xc proc~get_elem_xc~2->interface~elemconn_c0 proc~get_elem_xc~3 forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~get_elem_xc~3->interface~elemconn_c0 proc~get_elem_xc~4 forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~get_elem_xc~4->interface~elemconn_c0 proc~get_elem_xc~5 forcad_bezier_volume::bezier_volume%get_elem_Xc proc~get_elem_xc~5->interface~elemconn_c0 proc~get_elem_xc~6 forcad_bezier_curve::bezier_curve%get_elem_Xc proc~get_elem_xc~6->interface~elemconn_c0 proc~get_elem_xg forcad_bezier_surface::bezier_surface%get_elem_Xg proc~get_elem_xg->interface~elemconn_c0 proc~get_elem_xg~2 forcad_nurbs_surface::nurbs_surface%get_elem_Xg proc~get_elem_xg~2->interface~elemconn_c0 proc~get_elem_xg~3 forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~get_elem_xg~3->interface~elemconn_c0 proc~get_elem_xg~4 forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~get_elem_xg~4->interface~elemconn_c0 proc~get_elem_xg~5 forcad_bezier_volume::bezier_volume%get_elem_Xg proc~get_elem_xg~5->interface~elemconn_c0 proc~get_elem_xg~6 forcad_bezier_curve::bezier_curve%get_elem_Xg proc~get_elem_xg~6->interface~elemconn_c0 proc~export_xc forcad_bezier_surface::bezier_surface%export_Xc proc~export_xc->proc~get_elem_xc proc~export_xc~2 forcad_nurbs_surface::nurbs_surface%export_Xc proc~export_xc~2->proc~get_elem_xc~2 proc~export_xc~3 forcad_nurbs_curve::nurbs_curve%export_Xc proc~export_xc~3->proc~get_elem_xc~3 proc~export_xc~4 forcad_nurbs_volume::nurbs_volume%export_Xc proc~export_xc~4->proc~get_elem_xc~4 proc~export_xc~5 forcad_bezier_volume::bezier_volume%export_Xc proc~export_xc~5->proc~get_elem_xc~5 proc~export_xc~6 forcad_bezier_curve::bezier_curve%export_Xc proc~export_xc~6->proc~get_elem_xc~6 proc~export_xg forcad_bezier_surface::bezier_surface%export_Xg proc~export_xg->proc~get_elem_xg proc~export_xg~2 forcad_nurbs_surface::nurbs_surface%export_Xg proc~export_xg~2->proc~get_elem_xg~2 proc~export_xg~3 forcad_nurbs_curve::nurbs_curve%export_Xg proc~export_xg~3->proc~get_elem_xg~3 proc~export_xg~4 forcad_nurbs_volume::nurbs_volume%export_Xg proc~export_xg~4->proc~get_elem_xg~4 proc~export_xg~5 forcad_bezier_volume::bezier_volume%export_Xg proc~export_xg~5->proc~get_elem_xg~5 proc~export_xg~6 forcad_bezier_curve::bezier_curve%export_Xg proc~export_xg~6->proc~get_elem_xg~6 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~export_xc~6 program~example_bezier_curve->proc~export_xg~6 program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~export_xc program~example_bezier_surface->proc~export_xg program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~export_xc~5 program~example_bezier_volume->proc~export_xg~5 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~export_xc~3 program~example_nurbs_curve->proc~export_xg~3 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~export_xc~2 program~example_nurbs_surface->proc~export_xg~2 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~export_xc~4 program~example_nurbs_volume->proc~export_xg~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/cmp_elemconn_c0_l.html"},{"title":"cmp_elemConn_C0_S – ForCAD","text":"private pure function cmp_elemConn_C0_S(nnode1, nnode2, p1, p2) result(elemConn) Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode1 integer, intent(in) :: nnode2 integer, intent(in) :: p1 integer, intent(in) :: p2 Return Value integer, dimension(:,:), allocatable Called by proc~~cmp_elemconn_c0_s~~CalledByGraph proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0 forcad_utils::elemConn_C0 interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~get_elem_xc forcad_bezier_surface::bezier_surface%get_elem_Xc proc~get_elem_xc->interface~elemconn_c0 proc~get_elem_xc~2 forcad_nurbs_surface::nurbs_surface%get_elem_Xc proc~get_elem_xc~2->interface~elemconn_c0 proc~get_elem_xc~3 forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~get_elem_xc~3->interface~elemconn_c0 proc~get_elem_xc~4 forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~get_elem_xc~4->interface~elemconn_c0 proc~get_elem_xc~5 forcad_bezier_volume::bezier_volume%get_elem_Xc proc~get_elem_xc~5->interface~elemconn_c0 proc~get_elem_xc~6 forcad_bezier_curve::bezier_curve%get_elem_Xc proc~get_elem_xc~6->interface~elemconn_c0 proc~get_elem_xg forcad_bezier_surface::bezier_surface%get_elem_Xg proc~get_elem_xg->interface~elemconn_c0 proc~get_elem_xg~2 forcad_nurbs_surface::nurbs_surface%get_elem_Xg proc~get_elem_xg~2->interface~elemconn_c0 proc~get_elem_xg~3 forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~get_elem_xg~3->interface~elemconn_c0 proc~get_elem_xg~4 forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~get_elem_xg~4->interface~elemconn_c0 proc~get_elem_xg~5 forcad_bezier_volume::bezier_volume%get_elem_Xg proc~get_elem_xg~5->interface~elemconn_c0 proc~get_elem_xg~6 forcad_bezier_curve::bezier_curve%get_elem_Xg proc~get_elem_xg~6->interface~elemconn_c0 proc~export_xc forcad_bezier_surface::bezier_surface%export_Xc proc~export_xc->proc~get_elem_xc proc~export_xc~2 forcad_nurbs_surface::nurbs_surface%export_Xc proc~export_xc~2->proc~get_elem_xc~2 proc~export_xc~3 forcad_nurbs_curve::nurbs_curve%export_Xc proc~export_xc~3->proc~get_elem_xc~3 proc~export_xc~4 forcad_nurbs_volume::nurbs_volume%export_Xc proc~export_xc~4->proc~get_elem_xc~4 proc~export_xc~5 forcad_bezier_volume::bezier_volume%export_Xc proc~export_xc~5->proc~get_elem_xc~5 proc~export_xc~6 forcad_bezier_curve::bezier_curve%export_Xc proc~export_xc~6->proc~get_elem_xc~6 proc~export_xg forcad_bezier_surface::bezier_surface%export_Xg proc~export_xg->proc~get_elem_xg proc~export_xg~2 forcad_nurbs_surface::nurbs_surface%export_Xg proc~export_xg~2->proc~get_elem_xg~2 proc~export_xg~3 forcad_nurbs_curve::nurbs_curve%export_Xg proc~export_xg~3->proc~get_elem_xg~3 proc~export_xg~4 forcad_nurbs_volume::nurbs_volume%export_Xg proc~export_xg~4->proc~get_elem_xg~4 proc~export_xg~5 forcad_bezier_volume::bezier_volume%export_Xg proc~export_xg~5->proc~get_elem_xg~5 proc~export_xg~6 forcad_bezier_curve::bezier_curve%export_Xg proc~export_xg~6->proc~get_elem_xg~6 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~export_xc~6 program~example_bezier_curve->proc~export_xg~6 program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~export_xc program~example_bezier_surface->proc~export_xg program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~export_xc~5 program~example_bezier_volume->proc~export_xg~5 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~export_xc~3 program~example_nurbs_curve->proc~export_xg~3 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~export_xc~2 program~example_nurbs_surface->proc~export_xg~2 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~export_xc~4 program~example_nurbs_volume->proc~export_xg~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/cmp_elemconn_c0_s.html"},{"title":"cmp_elemConn_C0_V – ForCAD","text":"private pure function cmp_elemConn_C0_V(nnode1, nnode2, nnode3, p1, p2, p3) result(elemConn) Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode1 integer, intent(in) :: nnode2 integer, intent(in) :: nnode3 integer, intent(in) :: p1 integer, intent(in) :: p2 integer, intent(in) :: p3 Return Value integer, dimension(:,:), allocatable Called by proc~~cmp_elemconn_c0_v~~CalledByGraph proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0 forcad_utils::elemConn_C0 interface~elemconn_c0->proc~cmp_elemconn_c0_v proc~get_elem_xc forcad_bezier_surface::bezier_surface%get_elem_Xc proc~get_elem_xc->interface~elemconn_c0 proc~get_elem_xc~2 forcad_nurbs_surface::nurbs_surface%get_elem_Xc proc~get_elem_xc~2->interface~elemconn_c0 proc~get_elem_xc~3 forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~get_elem_xc~3->interface~elemconn_c0 proc~get_elem_xc~4 forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~get_elem_xc~4->interface~elemconn_c0 proc~get_elem_xc~5 forcad_bezier_volume::bezier_volume%get_elem_Xc proc~get_elem_xc~5->interface~elemconn_c0 proc~get_elem_xc~6 forcad_bezier_curve::bezier_curve%get_elem_Xc proc~get_elem_xc~6->interface~elemconn_c0 proc~get_elem_xg forcad_bezier_surface::bezier_surface%get_elem_Xg proc~get_elem_xg->interface~elemconn_c0 proc~get_elem_xg~2 forcad_nurbs_surface::nurbs_surface%get_elem_Xg proc~get_elem_xg~2->interface~elemconn_c0 proc~get_elem_xg~3 forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~get_elem_xg~3->interface~elemconn_c0 proc~get_elem_xg~4 forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~get_elem_xg~4->interface~elemconn_c0 proc~get_elem_xg~5 forcad_bezier_volume::bezier_volume%get_elem_Xg proc~get_elem_xg~5->interface~elemconn_c0 proc~get_elem_xg~6 forcad_bezier_curve::bezier_curve%get_elem_Xg proc~get_elem_xg~6->interface~elemconn_c0 proc~export_xc forcad_bezier_surface::bezier_surface%export_Xc proc~export_xc->proc~get_elem_xc proc~export_xc~2 forcad_nurbs_surface::nurbs_surface%export_Xc proc~export_xc~2->proc~get_elem_xc~2 proc~export_xc~3 forcad_nurbs_curve::nurbs_curve%export_Xc proc~export_xc~3->proc~get_elem_xc~3 proc~export_xc~4 forcad_nurbs_volume::nurbs_volume%export_Xc proc~export_xc~4->proc~get_elem_xc~4 proc~export_xc~5 forcad_bezier_volume::bezier_volume%export_Xc proc~export_xc~5->proc~get_elem_xc~5 proc~export_xc~6 forcad_bezier_curve::bezier_curve%export_Xc proc~export_xc~6->proc~get_elem_xc~6 proc~export_xg forcad_bezier_surface::bezier_surface%export_Xg proc~export_xg->proc~get_elem_xg proc~export_xg~2 forcad_nurbs_surface::nurbs_surface%export_Xg proc~export_xg~2->proc~get_elem_xg~2 proc~export_xg~3 forcad_nurbs_curve::nurbs_curve%export_Xg proc~export_xg~3->proc~get_elem_xg~3 proc~export_xg~4 forcad_nurbs_volume::nurbs_volume%export_Xg proc~export_xg~4->proc~get_elem_xg~4 proc~export_xg~5 forcad_bezier_volume::bezier_volume%export_Xg proc~export_xg~5->proc~get_elem_xg~5 proc~export_xg~6 forcad_bezier_curve::bezier_curve%export_Xg proc~export_xg~6->proc~get_elem_xg~6 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~export_xc~6 program~example_bezier_curve->proc~export_xg~6 program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~export_xc program~example_bezier_surface->proc~export_xg program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~export_xc~5 program~example_bezier_volume->proc~export_xg~5 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~export_xc~3 program~example_nurbs_curve->proc~export_xg~3 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~export_xc~2 program~example_nurbs_surface->proc~export_xg~2 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~export_xc~4 program~example_nurbs_volume->proc~export_xg~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/cmp_elemconn_c0_v.html"},{"title":"repelem – ForCAD","text":"private pure function repelem(a, b) result(c) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: a integer, intent(in), dimension(:), contiguous :: b Return Value real(kind=rk), dimension(sum(b)) Called by proc~~repelem~~CalledByGraph proc~repelem forcad_utils::repelem proc~compute_knot_vector forcad_utils::compute_knot_vector proc~compute_knot_vector->proc~repelem proc~set2 forcad_nurbs_surface::nurbs_surface%set2 proc~set2->proc~compute_knot_vector proc~set2~2 forcad_nurbs_curve::nurbs_curve%set2 proc~set2~2->proc~compute_knot_vector proc~set2~3 forcad_nurbs_volume::nurbs_volume%set2 proc~set2~3->proc~compute_knot_vector none~set~2 forcad_nurbs_surface::nurbs_surface%set none~set~2->proc~set2 none~set~3 forcad_nurbs_curve::nurbs_curve%set none~set~3->proc~set2~2 none~set~4 forcad_nurbs_volume::nurbs_volume%set none~set~4->proc~set2~3 proc~modify_wc~2 forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~2->none~set~2 proc~modify_wc~3 forcad_nurbs_curve::nurbs_curve%modify_Wc proc~modify_wc~3->none~set~3 proc~modify_wc~4 forcad_nurbs_volume::nurbs_volume%modify_Wc proc~modify_wc~4->none~set~4 proc~modify_xc~2 forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~2->none~set~2 proc~modify_xc~3 forcad_nurbs_curve::nurbs_curve%modify_Xc proc~modify_xc~3->none~set~3 proc~modify_xc~4 forcad_nurbs_volume::nurbs_volume%modify_Xc proc~modify_xc~4->none~set~4 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->none~set~3 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->none~set~2 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->none~set~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code pure function repelem ( a , b ) result ( c ) real ( rk ), dimension (:), intent ( in ), contiguous :: a integer , dimension (:), intent ( in ), contiguous :: b real ( rk ), dimension ( sum ( b )) :: c integer :: i , l , n l = 0 do i = 1 , size ( a ) n = b ( i ) c ( l + 1 : l + n ) = a ( i ) l = l + n end do end function repelem","tags":"","loc":"proc/repelem.html"},{"title":"ndgrid2 – ForCAD","text":"private pure subroutine ndgrid2(X_dir1, X_dir2, Xt) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: X_dir1 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir2 real(kind=rk), intent(out), dimension(:,:), allocatable :: Xt Called by proc~~ndgrid2~~CalledByGraph proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid forcad_utils::ndgrid interface~ndgrid->proc~ndgrid2 proc~create forcad_bezier_surface::bezier_surface%create proc~create->interface~ndgrid proc~create~2 forcad_nurbs_surface::nurbs_surface%create proc~create~2->interface~ndgrid proc~create~4 forcad_nurbs_volume::nurbs_volume%create proc~create~4->interface~ndgrid proc~create~5 forcad_bezier_volume::bezier_volume%create proc~create~5->interface~ndgrid program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~create program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~create~5 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~create~2 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~create~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/ndgrid2.html"},{"title":"ndgrid3 – ForCAD","text":"private pure subroutine ndgrid3(X_dir1, X_dir2, X_dir3, Xt) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: X_dir1 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir2 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir3 real(kind=rk), intent(out), dimension(:,:), allocatable :: Xt Called by proc~~ndgrid3~~CalledByGraph proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid forcad_utils::ndgrid interface~ndgrid->proc~ndgrid3 proc~create forcad_bezier_surface::bezier_surface%create proc~create->interface~ndgrid proc~create~2 forcad_nurbs_surface::nurbs_surface%create proc~create~2->interface~ndgrid proc~create~4 forcad_nurbs_volume::nurbs_volume%create proc~create~4->interface~ndgrid proc~create~5 forcad_bezier_volume::bezier_volume%create proc~create~5->interface~ndgrid program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~create program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~create~5 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~create~2 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~create~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/ndgrid3.html"},{"title":"elemConn_C0 – ForCAD","text":"public interface elemConn_C0 Calls interface~~elemconn_c0~~CallsGraph interface~elemconn_c0 forcad_utils::elemConn_C0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by interface~~elemconn_c0~~CalledByGraph interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc forcad_bezier_surface::bezier_surface%get_elem_Xc proc~get_elem_xc->interface~elemconn_c0 proc~get_elem_xc~2 forcad_nurbs_surface::nurbs_surface%get_elem_Xc proc~get_elem_xc~2->interface~elemconn_c0 proc~get_elem_xc~3 forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~get_elem_xc~3->interface~elemconn_c0 proc~get_elem_xc~4 forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~get_elem_xc~4->interface~elemconn_c0 proc~get_elem_xc~5 forcad_bezier_volume::bezier_volume%get_elem_Xc proc~get_elem_xc~5->interface~elemconn_c0 proc~get_elem_xc~6 forcad_bezier_curve::bezier_curve%get_elem_Xc proc~get_elem_xc~6->interface~elemconn_c0 proc~get_elem_xg forcad_bezier_surface::bezier_surface%get_elem_Xg proc~get_elem_xg->interface~elemconn_c0 proc~get_elem_xg~2 forcad_nurbs_surface::nurbs_surface%get_elem_Xg proc~get_elem_xg~2->interface~elemconn_c0 proc~get_elem_xg~3 forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~get_elem_xg~3->interface~elemconn_c0 proc~get_elem_xg~4 forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~get_elem_xg~4->interface~elemconn_c0 proc~get_elem_xg~5 forcad_bezier_volume::bezier_volume%get_elem_Xg proc~get_elem_xg~5->interface~elemconn_c0 proc~get_elem_xg~6 forcad_bezier_curve::bezier_curve%get_elem_Xg proc~get_elem_xg~6->interface~elemconn_c0 proc~export_xc forcad_bezier_surface::bezier_surface%export_Xc proc~export_xc->proc~get_elem_xc proc~export_xc~2 forcad_nurbs_surface::nurbs_surface%export_Xc proc~export_xc~2->proc~get_elem_xc~2 proc~export_xc~3 forcad_nurbs_curve::nurbs_curve%export_Xc proc~export_xc~3->proc~get_elem_xc~3 proc~export_xc~4 forcad_nurbs_volume::nurbs_volume%export_Xc proc~export_xc~4->proc~get_elem_xc~4 proc~export_xc~5 forcad_bezier_volume::bezier_volume%export_Xc proc~export_xc~5->proc~get_elem_xc~5 proc~export_xc~6 forcad_bezier_curve::bezier_curve%export_Xc proc~export_xc~6->proc~get_elem_xc~6 proc~export_xg forcad_bezier_surface::bezier_surface%export_Xg proc~export_xg->proc~get_elem_xg proc~export_xg~2 forcad_nurbs_surface::nurbs_surface%export_Xg proc~export_xg~2->proc~get_elem_xg~2 proc~export_xg~3 forcad_nurbs_curve::nurbs_curve%export_Xg proc~export_xg~3->proc~get_elem_xg~3 proc~export_xg~4 forcad_nurbs_volume::nurbs_volume%export_Xg proc~export_xg~4->proc~get_elem_xg~4 proc~export_xg~5 forcad_bezier_volume::bezier_volume%export_Xg proc~export_xg~5->proc~get_elem_xg~5 proc~export_xg~6 forcad_bezier_curve::bezier_curve%export_Xg proc~export_xg~6->proc~get_elem_xg~6 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~export_xc~6 program~example_bezier_curve->proc~export_xg~6 program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~export_xc program~example_bezier_surface->proc~export_xg program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~export_xc~5 program~example_bezier_volume->proc~export_xg~5 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~export_xc~3 program~example_nurbs_curve->proc~export_xg~3 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~export_xc~2 program~example_nurbs_surface->proc~export_xg~2 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~export_xc~4 program~example_nurbs_volume->proc~export_xg~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Module Procedures private pure function cmp_elemConn_C0_L (nnode, p) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode integer, intent(in) :: p Return Value integer, dimension(:,:), allocatable private pure function cmp_elemConn_C0_S (nnode1, nnode2, p1, p2) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode1 integer, intent(in) :: nnode2 integer, intent(in) :: p1 integer, intent(in) :: p2 Return Value integer, dimension(:,:), allocatable private pure function cmp_elemConn_C0_V (nnode1, nnode2, nnode3, p1, p2, p3) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode1 integer, intent(in) :: nnode2 integer, intent(in) :: nnode3 integer, intent(in) :: p1 integer, intent(in) :: p2 integer, intent(in) :: p3 Return Value integer, dimension(:,:), allocatable","tags":"","loc":"interface/elemconn_c0.html"},{"title":"ndgrid – ForCAD","text":"public interface ndgrid Calls interface~~ndgrid~~CallsGraph interface~ndgrid forcad_utils::ndgrid proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by interface~~ndgrid~~CalledByGraph interface~ndgrid forcad_utils::ndgrid proc~create forcad_bezier_surface::bezier_surface%create proc~create->interface~ndgrid proc~create~2 forcad_nurbs_surface::nurbs_surface%create proc~create~2->interface~ndgrid proc~create~4 forcad_nurbs_volume::nurbs_volume%create proc~create~4->interface~ndgrid proc~create~5 forcad_bezier_volume::bezier_volume%create proc~create~5->interface~ndgrid program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~create program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~create~5 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~create~2 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~create~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Module Procedures private pure subroutine ndgrid2 (X_dir1, X_dir2, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: X_dir1 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir2 real(kind=rk), intent(out), dimension(:,:), allocatable :: Xt private pure subroutine ndgrid3 (X_dir1, X_dir2, X_dir3, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: X_dir1 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir2 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir3 real(kind=rk), intent(out), dimension(:,:), allocatable :: Xt","tags":"","loc":"interface/ndgrid.html"},{"title":"generate_Xc – ForCAD","text":"function generate_Xc(num_coils, radius, height, num_points_per_coil) result(control_points) Arguments Type Intent Optional Attributes Name integer, intent(in) :: num_coils real(kind=rk), intent(in) :: radius real(kind=rk), intent(in) :: height integer, intent(in) :: num_points_per_coil Return Value real(kind=rk), dimension(:,:), allocatable Called by proc~~generate_xc~5~~CalledByGraph proc~generate_xc~5 example_bezier_curve::generate_Xc program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~generate_xc~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/generate_xc~5.html"},{"title":"forcad_bezier_surface – ForCAD","text":"Uses forcad_utils module~~forcad_bezier_surface~~UsesGraph module~forcad_bezier_surface forcad_bezier_surface module~forcad_utils forcad_utils module~forcad_bezier_surface->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Used by module~~forcad_bezier_surface~~UsedByGraph module~forcad_bezier_surface forcad_bezier_surface module~forcad forcad module~forcad->module~forcad_bezier_surface program~example_bezier_curve example_bezier_curve program~example_bezier_curve->module~forcad program~example_bezier_surface example_bezier_surface program~example_bezier_surface->module~forcad program~example_bezier_volume example_bezier_volume program~example_bezier_volume->module~forcad program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->module~forcad program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->module~forcad program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->module~forcad Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Derived Types type, public :: bezier_surface Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt1 (:) parameter values in the first direction real(kind=rk), private, allocatable :: Xt2 (:) parameter values in the second direction integer, private :: nc (2) number of control points in each direction integer, private :: ng (2) number of geometry points in each direction Type-Bound Procedures procedure, public :: create Generate geometry points Read more… procedure, public :: export_Xc Export control points to VTK file Read more… procedure, public :: export_Xg Export geometry points to VTK file Read more… procedure, public :: finalize Finalize the Bezier surface object Read more… procedure, public :: get_Wc Get weights Read more… procedure, public :: get_Xc Get control points Read more… procedure, public :: get_Xg Get geometry points Read more… procedure, public :: get_Xt Get parameter values Read more… procedure, public :: get_elem_Xc Generate connectivity for control points Read more… procedure, public :: get_elem_Xg Generate connectivity for geometry points Read more… procedure, public :: get_nc Get number of control points Read more… procedure, public :: get_ng Get number of geometry points Read more… procedure, public :: get_order Get order of the Bezier surface Read more… procedure, public :: modify_Wc Modify weights Read more… procedure, public :: modify_Xc Modify control points Read more… procedure, public :: set Set control points and weights Read more… Functions private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xt (this, dir) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) private pure function get_nc (this) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2) private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2) private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2) Subroutines private pure subroutine create (this, res1, res2, Xt1, Xt2) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this character(len=*), intent(in) :: filename private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this character(len=*), intent(in) :: filename private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Modify weight of a control point given its index. Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Modify coordinate of a control point given its index and direction. Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir private pure subroutine set (this, nc, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this integer, intent(in) :: nc (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"module/forcad_bezier_surface.html"},{"title":"forcad_nurbs_surface – ForCAD","text":"Uses forcad_utils module~~forcad_nurbs_surface~~UsesGraph module~forcad_nurbs_surface forcad_nurbs_surface module~forcad_utils forcad_utils module~forcad_nurbs_surface->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Used by module~~forcad_nurbs_surface~~UsedByGraph module~forcad_nurbs_surface forcad_nurbs_surface module~forcad forcad module~forcad->module~forcad_nurbs_surface program~example_bezier_curve example_bezier_curve program~example_bezier_curve->module~forcad program~example_bezier_surface example_bezier_surface program~example_bezier_surface->module~forcad program~example_bezier_volume example_bezier_volume program~example_bezier_volume->module~forcad program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->module~forcad program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->module~forcad program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->module~forcad Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Derived Types type, public :: nurbs_surface Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt1 (:) parameter values in the first direction real(kind=rk), private, allocatable :: Xt2 (:) parameter values in the second direction real(kind=rk), private, allocatable :: knot1 (:) knot vector real(kind=rk), private, allocatable :: knot2 (:) knot vector integer, private :: nc (2) number of control points in each direction integer, private :: ng (2) number of geometry points in each direction integer, private :: order (2) degree of each direction Type-Bound Procedures procedure, public :: create Generate geometry points Read more… procedure, public :: export_Xc Export control points to VTK file Read more… procedure, public :: export_Xg Export geometry points to VTK file Read more… procedure, public :: finalize Finalize the NURBS surface object Read more… procedure, public :: get_Wc Get weights Read more… procedure, public :: get_Xc Get control points Read more… procedure, public :: get_Xg Get geometry points Read more… procedure, public :: get_Xt Get parameter values Read more… procedure, public :: get_continuity Get continuity of the surface Read more… procedure, public :: get_elem_Xc Generate connectivity for control points Read more… procedure, public :: get_elem_Xg Generate connectivity for geometry points Read more… procedure, public :: get_knot Get knot vector Read more… procedure, public :: get_multiplicity Get multiplicity of the knot vector Read more… procedure, public :: get_nc Get number of required control points Read more… procedure, public :: get_ng Get number of geometry points Read more… procedure, public :: get_order Get order of the Bezier curve Read more… procedure, public :: modify_Wc Modify weights Read more… procedure, public :: modify_Xc Modify control points Read more… generic, public :: set => set1 , set2 procedure, public :: set1 Set control points and weights Read more… procedure, public :: set2 Set control points and weights Read more… Functions private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xt (this, dir) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) private pure function get_continuity (this, dir) result(c) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) private pure function get_knot (this, dir) result(knot) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) private pure function get_multiplicity (this, dir) result(m) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) private pure function get_nc (this, dir) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value integer, (2) private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value integer, (2) Subroutines private pure subroutine create (this, res1, res2, Xt1, Xt2) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this character(len=*), intent(in) :: filename private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this character(len=*), intent(in) :: filename private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir private pure subroutine set1 (this, knot1, knot2, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS surface object. Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: knot1 (:) real(kind=rk), intent(in) :: knot2 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) private pure subroutine set2 (this, Xth_dir1, Xth_dir2, order, continuity1, continuity2, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS surface object. Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir1 (:) real(kind=rk), intent(in) :: Xth_dir2 (:) integer, intent(in) :: order (:) integer, intent(in) :: continuity1 (:) integer, intent(in) :: continuity2 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"module/forcad_nurbs_surface.html"},{"title":"forcad_nurbs_curve – ForCAD","text":"Uses forcad_utils module~~forcad_nurbs_curve~~UsesGraph module~forcad_nurbs_curve forcad_nurbs_curve module~forcad_utils forcad_utils module~forcad_nurbs_curve->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Used by module~~forcad_nurbs_curve~~UsedByGraph module~forcad_nurbs_curve forcad_nurbs_curve module~forcad forcad module~forcad->module~forcad_nurbs_curve program~example_bezier_curve example_bezier_curve program~example_bezier_curve->module~forcad program~example_bezier_surface example_bezier_surface program~example_bezier_surface->module~forcad program~example_bezier_volume example_bezier_volume program~example_bezier_volume->module~forcad program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->module~forcad program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->module~forcad program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->module~forcad Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Derived Types type, public :: nurbs_curve Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt (:) evaluation points real(kind=rk), private, allocatable :: knot (:) knot vector integer, private :: nc number of control points integer, private :: ng number of geometry points integer, private :: order order of the curve Type-Bound Procedures procedure, public :: create Generate geometry points Read more… procedure, public :: export_Xc Export control points to VTK file Read more… procedure, public :: export_Xg Export geometry points to VTK file Read more… procedure, public :: finalize Finalize the Bezier curve object Read more… procedure, public :: get_Wc Get weights Read more… procedure, public :: get_Xc Get control points Read more… procedure, public :: get_Xg Get geometry points Read more… procedure, public :: get_Xt Get parameter values Read more… procedure, public :: get_continuity Get continuity of the curve Read more… procedure, public :: get_elem_Xc Generate connectivity for control points Read more… procedure, public :: get_elem_Xg Generate connectivity for geometry points Read more… procedure, public :: get_knot Get knot vector Read more… procedure, public :: get_multiplicity Get multiplicity of the knot vector Read more… procedure, public :: get_nc Get number of required control points Read more… procedure, public :: get_ng Get number of geometry points Read more… procedure, public :: get_order Get order of the Bezier curve Read more… procedure, public :: modify_Wc Modify weights Read more… procedure, public :: modify_Xc Modify control points Read more… generic, public :: set => set1 , set2 procedure, public :: set1 Set control points and weights Read more… procedure, public :: set2 Set control points and weights Read more… Functions private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xt (this) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_continuity (this) result(c) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer, allocatable, (:) private pure function get_knot (this) result(knot) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_multiplicity (this) result(m) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer, allocatable, (:) private pure function get_nc (this) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer Subroutines private pure subroutine create (this, res, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this integer, intent(in), optional :: res real(kind=rk), intent(in), optional :: Xt (:) private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this character(len=*), intent(in) :: filename private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this character(len=*), intent(in) :: filename private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir private pure subroutine set1 (this, knot, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: knot (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) private pure subroutine set2 (this, Xth_dir, order, continuity, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir (:) integer, intent(in) :: order integer, intent(in) :: continuity (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"module/forcad_nurbs_curve.html"},{"title":"forcad_nurbs_volume – ForCAD","text":"Uses forcad_utils module~~forcad_nurbs_volume~~UsesGraph module~forcad_nurbs_volume forcad_nurbs_volume module~forcad_utils forcad_utils module~forcad_nurbs_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Used by module~~forcad_nurbs_volume~~UsedByGraph module~forcad_nurbs_volume forcad_nurbs_volume module~forcad forcad module~forcad->module~forcad_nurbs_volume program~example_bezier_curve example_bezier_curve program~example_bezier_curve->module~forcad program~example_bezier_surface example_bezier_surface program~example_bezier_surface->module~forcad program~example_bezier_volume example_bezier_volume program~example_bezier_volume->module~forcad program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->module~forcad program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->module~forcad program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->module~forcad Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Derived Types type, public :: nurbs_volume Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt1 (:) parameter values in the first direction real(kind=rk), private, allocatable :: Xt2 (:) parameter values in the second direction real(kind=rk), private, allocatable :: Xt3 (:) parameter values in the third direction real(kind=rk), private, allocatable :: knot1 (:) knot vector real(kind=rk), private, allocatable :: knot2 (:) knot vector real(kind=rk), private, allocatable :: knot3 (:) knot vector integer, private :: nc (3) number of control points in each direction integer, private :: ng (3) number of geometry points in each direction integer, private :: order (3) degree of the first direction Type-Bound Procedures procedure, public :: create Generate geometry points Read more… procedure, public :: export_Xc Export control points to VTK file Read more… procedure, public :: export_Xg Export geometry points to VTK file Read more… procedure, public :: finalize Finalize the NURBS curve object Read more… procedure, public :: get_Wc Get weights Read more… procedure, public :: get_Xc Get control points Read more… procedure, public :: get_Xg Get geometry points Read more… procedure, public :: get_Xt Get parameter values Read more… procedure, public :: get_continuity Get continuity of the curve Read more… procedure, public :: get_elem_Xc Generate connectivity for control points Read more… procedure, public :: get_elem_Xg Generate connectivity for geometry points Read more… procedure, public :: get_knot Get knot vector Read more… procedure, public :: get_multiplicity Get multiplicity of the knot vector Read more… procedure, public :: get_nc Get number of required control points Read more… procedure, public :: get_ng Get number of geometry points Read more… procedure, public :: get_order Get order of the Bezier curve Read more… procedure, public :: modify_Wc Modify weights Read more… procedure, public :: modify_Xc Modify control points Read more… generic, public :: set => set1 , set2 procedure, public :: set1 Set control points and weights Read more… procedure, public :: set2 Set control points and weights Read more… Functions private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xt (this, dir) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) private pure function get_continuity (this, dir) result(c) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) private pure function get_knot (this, dir) result(knot) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) private pure function get_multiplicity (this, dir) result(m) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) private pure function get_nc (this, dir) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value integer, (3) private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value integer, (3) Subroutines private pure subroutine create (this, res1, res2, res3, Xt1, Xt2, Xt3) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 integer, intent(in), optional :: res3 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) real(kind=rk), intent(in), optional :: Xt3 (:) private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this character(len=*), intent(in) :: filename private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this character(len=*), intent(in) :: filename private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir private pure subroutine set1 (this, knot1, knot2, knot3, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS curve object. Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: knot1 (:) real(kind=rk), intent(in) :: knot2 (:) real(kind=rk), intent(in) :: knot3 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) private pure subroutine set2 (this, Xth_dir1, Xth_dir2, Xth_dir3, order, continuity1, continuity2, continuity3, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS curve object. Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir1 (:) real(kind=rk), intent(in) :: Xth_dir2 (:) real(kind=rk), intent(in) :: Xth_dir3 (:) integer, intent(in) :: order (:) integer, intent(in) :: continuity1 (:) integer, intent(in) :: continuity2 (:) integer, intent(in) :: continuity3 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"module/forcad_nurbs_volume.html"},{"title":"forcad_bezier_volume – ForCAD","text":"Uses forcad_utils module~~forcad_bezier_volume~~UsesGraph module~forcad_bezier_volume forcad_bezier_volume module~forcad_utils forcad_utils module~forcad_bezier_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Used by module~~forcad_bezier_volume~~UsedByGraph module~forcad_bezier_volume forcad_bezier_volume module~forcad forcad module~forcad->module~forcad_bezier_volume program~example_bezier_curve example_bezier_curve program~example_bezier_curve->module~forcad program~example_bezier_surface example_bezier_surface program~example_bezier_surface->module~forcad program~example_bezier_volume example_bezier_volume program~example_bezier_volume->module~forcad program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->module~forcad program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->module~forcad program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->module~forcad Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Derived Types type, public :: bezier_volume Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt1 (:) parameter values in the first direction real(kind=rk), private, allocatable :: Xt2 (:) parameter values in the second direction real(kind=rk), private, allocatable :: Xt3 (:) parameter values in the third direction integer, private :: nc (3) number of control points in each direction integer, private :: ng (3) number of geometry points in each direction Type-Bound Procedures procedure, public :: create Generate geometry points Read more… procedure, public :: export_Xc Export control points to VTK file Read more… procedure, public :: export_Xg Export geometry points to VTK file Read more… procedure, public :: finalize Finalize the Bezier volume object Read more… procedure, public :: get_Wc Get weights Read more… procedure, public :: get_Xc Get control points Read more… procedure, public :: get_Xg Get geometry points Read more… procedure, public :: get_elem_Xc Generate connectivity for control points Read more… procedure, public :: get_elem_Xg Generate connectivity for geometry points Read more… procedure, public :: get_nc Get number of control points Read more… procedure, public :: get_ng Get number of geometry points Read more… procedure, public :: get_order Get order of the Bezier surface Read more… procedure, public :: modify_Wc Modify weights Read more… procedure, public :: modify_Xc Modify control points Read more… procedure, public :: set Set control points and weights Read more… Functions private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xt (this, dir) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) private pure function get_nc (this) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3) private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3) private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3) Subroutines private pure subroutine create (this, res1, res2, res3, Xt1, Xt2, Xt3) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 integer, intent(in), optional :: res3 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) real(kind=rk), intent(in), optional :: Xt3 (:) private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this character(len=*), intent(in) :: filename private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this character(len=*), intent(in) :: filename private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir private pure subroutine set (this, nc, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this integer, intent(in) :: nc (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"module/forcad_bezier_volume.html"},{"title":"forcad – ForCAD","text":"Uses forcad_nurbs_curve forcad_bezier_surface forcad_utils forcad_nurbs_surface forcad_nurbs_volume forcad_bezier_volume forcad_bezier_curve module~~forcad~~UsesGraph module~forcad forcad module~forcad_bezier_curve forcad_bezier_curve module~forcad->module~forcad_bezier_curve module~forcad_bezier_surface forcad_bezier_surface module~forcad->module~forcad_bezier_surface module~forcad_bezier_volume forcad_bezier_volume module~forcad->module~forcad_bezier_volume module~forcad_nurbs_curve forcad_nurbs_curve module~forcad->module~forcad_nurbs_curve module~forcad_nurbs_surface forcad_nurbs_surface module~forcad->module~forcad_nurbs_surface module~forcad_nurbs_volume forcad_nurbs_volume module~forcad->module~forcad_nurbs_volume module~forcad_utils forcad_utils module~forcad->module~forcad_utils module~forcad_bezier_curve->module~forcad_utils module~forcad_bezier_surface->module~forcad_utils module~forcad_bezier_volume->module~forcad_utils module~forcad_nurbs_curve->module~forcad_utils module~forcad_nurbs_surface->module~forcad_utils module~forcad_nurbs_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Used by module~~forcad~~UsedByGraph module~forcad forcad program~example_bezier_curve example_bezier_curve program~example_bezier_curve->module~forcad program~example_bezier_surface example_bezier_surface program~example_bezier_surface->module~forcad program~example_bezier_volume example_bezier_volume program~example_bezier_volume->module~forcad program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->module~forcad program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->module~forcad program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->module~forcad Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"module/forcad.html"},{"title":"forcad_bezier_curve – ForCAD","text":"Uses forcad_utils module~~forcad_bezier_curve~~UsesGraph module~forcad_bezier_curve forcad_bezier_curve module~forcad_utils forcad_utils module~forcad_bezier_curve->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Used by module~~forcad_bezier_curve~~UsedByGraph module~forcad_bezier_curve forcad_bezier_curve module~forcad forcad module~forcad->module~forcad_bezier_curve program~example_bezier_curve example_bezier_curve program~example_bezier_curve->module~forcad program~example_bezier_surface example_bezier_surface program~example_bezier_surface->module~forcad program~example_bezier_volume example_bezier_volume program~example_bezier_volume->module~forcad program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->module~forcad program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->module~forcad program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->module~forcad Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Derived Types type, public :: bezier_curve Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) Weights real(kind=rk), private, allocatable :: Xc (:,:) Control points real(kind=rk), private, allocatable :: Xg (:,:) Geometry points real(kind=rk), private, allocatable :: Xt (:) Parameter values integer, private :: nc Number of control points integer, private :: ng Number of geometry points Type-Bound Procedures procedure, public :: create Generate geometry points Read more… procedure, public :: elevate_degree Elevate the degree of the Bezier curve Read more… procedure, public :: export_Xc Export control points to VTK file Read more… procedure, public :: export_Xg Export geometry points to VTK file Read more… procedure, public :: finalize Finalize the Bezier curve object Read more… procedure, public :: get_Wc Get weights Read more… procedure, public :: get_Xc Get control points Read more… procedure, public :: get_Xg Get geometry points Read more… procedure, public :: get_Xt Get parameter values Read more… procedure, public :: get_elem_Xc Generate connectivity for control points Read more… procedure, public :: get_elem_Xg Generate connectivity for geometry points Read more… procedure, public :: get_nc Get number of control points Read more… procedure, public :: get_ng Get number of geometry points Read more… procedure, public :: get_order Get order of the Bezier curve Read more… procedure, public :: modify_Wc Modify weights Read more… procedure, public :: modify_Xc Modify control points Read more… procedure, public :: set Set control points and weights Read more… Functions private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xt (this) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_nc (this) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer Subroutines private pure subroutine create (this, res, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Generate geometry points of the Bezier curve. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this integer, intent(in), optional :: res real(kind=rk), intent(in), optional :: Xt (:) private pure subroutine elevate_degree (this) Author Seyed Ali Ghasemi License BSD 3-Clause Elevate the degree of the Bezier curve by one. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Export control points to a VTK file. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this character(len=*), intent(in) :: filename private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Export geometry points to a VTK file. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this character(len=*), intent(in) :: filename private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Finalize the Bezier curve object by deallocating memory. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Generate connectivity for control points. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Generate connectivity for geometry points. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Modify weight of a control point given its index. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Modify coordinate of a control point given its index and direction. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir private pure subroutine set (this, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"module/forcad_bezier_curve.html"},{"title":"forcad_utils – ForCAD","text":"Used by module~~forcad_utils~~UsedByGraph module~forcad_utils forcad_utils module~forcad forcad module~forcad->module~forcad_utils module~forcad_bezier_curve forcad_bezier_curve module~forcad->module~forcad_bezier_curve module~forcad_bezier_surface forcad_bezier_surface module~forcad->module~forcad_bezier_surface module~forcad_bezier_volume forcad_bezier_volume module~forcad->module~forcad_bezier_volume module~forcad_nurbs_curve forcad_nurbs_curve module~forcad->module~forcad_nurbs_curve module~forcad_nurbs_surface forcad_nurbs_surface module~forcad->module~forcad_nurbs_surface module~forcad_nurbs_volume forcad_nurbs_volume module~forcad->module~forcad_nurbs_volume module~forcad_bezier_curve->module~forcad_utils module~forcad_bezier_surface->module~forcad_utils module~forcad_bezier_volume->module~forcad_utils module~forcad_nurbs_curve->module~forcad_utils module~forcad_nurbs_surface->module~forcad_utils module~forcad_nurbs_volume->module~forcad_utils program~example_bezier_curve example_bezier_curve program~example_bezier_curve->module~forcad program~example_bezier_surface example_bezier_surface program~example_bezier_surface->module~forcad program~example_bezier_volume example_bezier_volume program~example_bezier_volume->module~forcad program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->module~forcad program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->module~forcad program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->module~forcad Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Variables Type Visibility Attributes Name Initial integer, public, parameter :: rk = kind(1.0d0) Interfaces public interface elemConn_C0 private pure function cmp_elemConn_C0_L (nnode, p) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode integer, intent(in) :: p Return Value integer, dimension(:,:), allocatable private pure function cmp_elemConn_C0_S (nnode1, nnode2, p1, p2) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode1 integer, intent(in) :: nnode2 integer, intent(in) :: p1 integer, intent(in) :: p2 Return Value integer, dimension(:,:), allocatable private pure function cmp_elemConn_C0_V (nnode1, nnode2, nnode3, p1, p2, p3) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode1 integer, intent(in) :: nnode2 integer, intent(in) :: nnode3 integer, intent(in) :: p1 integer, intent(in) :: p2 integer, intent(in) :: p3 Return Value integer, dimension(:,:), allocatable public interface ndgrid private pure subroutine ndgrid2 (X_dir1, X_dir2, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: X_dir1 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir2 real(kind=rk), intent(out), dimension(:,:), allocatable :: Xt private pure subroutine ndgrid3 (X_dir1, X_dir2, X_dir3, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: X_dir1 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir2 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir3 real(kind=rk), intent(out), dimension(:,:), allocatable :: Xt Functions public pure function basis_bernstein (Xt, nc) result(B) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: Xt integer, intent(in) :: nc Return Value real(kind=rk), allocatable, (:) public pure function basis_bspline (Xt, knot, nc, order) result(B) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: Xt real(kind=rk), intent(in) :: knot (:) integer, intent(in) :: nc integer, intent(in) :: order Return Value real(kind=rk), allocatable, (:) public pure function compute_knot_vector (Xth_dir, order, continuity) result(knot) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: Xth_dir (:) integer, intent(in) :: order integer, intent(in) :: continuity (:) Return Value real(kind=rk), allocatable, (:) public pure function compute_multiplicity (knot) result(multiplicity) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: knot (:) Return Value integer, dimension(:), allocatable public pure function kron (u, v) result(w) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: u real(kind=rk), intent(in), dimension(:), contiguous :: v Return Value real(kind=rk), dimension(size(u)*size(v)) private pure function cmp_elemConn_C0_L (nnode, p) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode integer, intent(in) :: p Return Value integer, dimension(:,:), allocatable private pure function cmp_elemConn_C0_S (nnode1, nnode2, p1, p2) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode1 integer, intent(in) :: nnode2 integer, intent(in) :: p1 integer, intent(in) :: p2 Return Value integer, dimension(:,:), allocatable private pure function cmp_elemConn_C0_V (nnode1, nnode2, nnode3, p1, p2, p3) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode1 integer, intent(in) :: nnode2 integer, intent(in) :: nnode3 integer, intent(in) :: p1 integer, intent(in) :: p2 integer, intent(in) :: p3 Return Value integer, dimension(:,:), allocatable private pure function repelem (a, b) result(c) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: a integer, intent(in), dimension(:), contiguous :: b Return Value real(kind=rk), dimension(sum(b)) Subroutines private pure subroutine ndgrid2 (X_dir1, X_dir2, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: X_dir1 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir2 real(kind=rk), intent(out), dimension(:,:), allocatable :: Xt private pure subroutine ndgrid3 (X_dir1, X_dir2, X_dir3, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: X_dir1 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir2 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir3 real(kind=rk), intent(out), dimension(:,:), allocatable :: Xt","tags":"","loc":"module/forcad_utils.html"},{"title":"example_nurbs_surface – ForCAD","text":"Uses forcad program~~example_nurbs_surface~~UsesGraph program~example_nurbs_surface example_nurbs_surface module~forcad forcad program~example_nurbs_surface->module~forcad module~forcad_bezier_curve forcad_bezier_curve module~forcad->module~forcad_bezier_curve module~forcad_bezier_surface forcad_bezier_surface module~forcad->module~forcad_bezier_surface module~forcad_bezier_volume forcad_bezier_volume module~forcad->module~forcad_bezier_volume module~forcad_nurbs_curve forcad_nurbs_curve module~forcad->module~forcad_nurbs_curve module~forcad_nurbs_surface forcad_nurbs_surface module~forcad->module~forcad_nurbs_surface module~forcad_nurbs_volume forcad_nurbs_volume module~forcad->module~forcad_nurbs_volume module~forcad_utils forcad_utils module~forcad->module~forcad_utils module~forcad_bezier_curve->module~forcad_utils module~forcad_bezier_surface->module~forcad_utils module~forcad_bezier_volume->module~forcad_utils module~forcad_nurbs_curve->module~forcad_utils module~forcad_nurbs_surface->module~forcad_utils module~forcad_nurbs_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. This program demonstrates the usage of a NURBS (Non-Uniform Rational B-Spline) surface object to create and finalize a NURBS surface.\nIt sets up control points, weights, and knot vectors for all three dimensions, generates the surface, and exports the control points and the surface to VTK files. Define control points for the NURBS surface Define weights for the control points\nDefine knot vectors for both dimensions\nSet knot vectors, control points, and weights for the NURBS surface object Export the control points to a VTK file Generate the NURBS surface with resolutions of 30 in both dimensions Export the generated surface to a VTK file Finalize the NURBS surface object Calls program~~example_nurbs_surface~~CallsGraph program~example_nurbs_surface example_nurbs_surface none~set~2 forcad_nurbs_surface::nurbs_surface%set program~example_nurbs_surface->none~set~2 proc~create~2 forcad_nurbs_surface::nurbs_surface%create program~example_nurbs_surface->proc~create~2 proc~export_xc~2 forcad_nurbs_surface::nurbs_surface%export_Xc program~example_nurbs_surface->proc~export_xc~2 proc~export_xg~2 forcad_nurbs_surface::nurbs_surface%export_Xg program~example_nurbs_surface->proc~export_xg~2 proc~finalize~2 forcad_nurbs_surface::nurbs_surface%finalize program~example_nurbs_surface->proc~finalize~2 proc~generate_xc example_nurbs_surface::generate_Xc program~example_nurbs_surface->proc~generate_xc proc~set1 forcad_nurbs_surface::nurbs_surface%set1 none~set~2->proc~set1 proc~set2 forcad_nurbs_surface::nurbs_surface%set2 none~set~2->proc~set2 interface~ndgrid forcad_utils::ndgrid proc~create~2->interface~ndgrid proc~basis_bspline forcad_utils::basis_bspline proc~create~2->proc~basis_bspline proc~kron forcad_utils::kron proc~create~2->proc~kron proc~get_elem_xc~2 forcad_nurbs_surface::nurbs_surface%get_elem_Xc proc~export_xc~2->proc~get_elem_xc~2 proc~get_elem_xg~2 forcad_nurbs_surface::nurbs_surface%get_elem_Xg proc~export_xg~2->proc~get_elem_xg~2 proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~2->interface~elemconn_c0 proc~get_elem_xg~2->interface~elemconn_c0 proc~get_nc~2 forcad_nurbs_surface::nurbs_surface%get_nc proc~set1->proc~get_nc~2 proc~get_order~2 forcad_nurbs_surface::nurbs_surface%get_order proc~set1->proc~get_order~2 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2->proc~compute_knot_vector proc~set2->proc~get_nc~2 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~2->proc~compute_multiplicity proc~get_multiplicity forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~get_order~2->proc~get_multiplicity proc~get_multiplicity->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Variables Type Attributes Name Initial real(kind=rk), allocatable :: Wc (:) Arrays for control points and weights real(kind=rk), allocatable :: Xc (:,:) Arrays for control points and weights real(kind=rk) :: knot1 (6) Arrays for knot vectors in both dimensions real(kind=rk) :: knot2 (6) Arrays for knot vectors in both dimensions type( nurbs_surface ) :: nurbs Declare a NURBS surface object Functions function generate_Xc (num_rows, num_cols, peak_height) result(control_points) Arguments Type Intent Optional Attributes Name integer, intent(in) :: num_rows integer, intent(in) :: num_cols real(kind=rk), intent(in) :: peak_height Return Value real(kind=rk), dimension(:,:), allocatable Source Code program example_nurbs_surface use forcad implicit none type ( nurbs_surface ) :: nurbs !! Declare a NURBS surface object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights real ( rk ) :: knot1 ( 6 ), knot2 ( 6 ) !! Arrays for knot vectors in both dimensions !----------------------------------------------------------------------------- ! Setting up the NURBS surface !----------------------------------------------------------------------------- !> Define control points for the NURBS surface Xc = generate_Xc ( 3 , 3 , 1.0_rk ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 ))) Wc = 1.0_rk !> Define knot vectors for both dimensions knot1 = [ 0.0_rk , 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk , 1.0_rk ] knot2 = [ 0.0_rk , 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk , 1.0_rk ] !> Set knot vectors, control points, and weights for the NURBS surface object call nurbs % set ( knot1 , knot2 , Xc , Wc ) !> Export the control points to a VTK file call nurbs % export_Xc ( 'vtk/nurbs_surface_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the NURBS surface !----------------------------------------------------------------------------- !> Generate the NURBS surface with resolutions of 30 in both dimensions call nurbs % create ( 30 , 30 ) !> Export the generated surface to a VTK file call nurbs % export_Xg ( 'vtk/nurbs_surface_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the NURBS surface object call nurbs % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( num_rows , num_cols , peak_height ) result ( control_points ) integer , intent ( in ) :: num_rows , num_cols real ( rk ), intent ( in ) :: peak_height real ( rk ), dimension (:,:), allocatable :: control_points integer :: i , j real ( rk ) :: x_spacing , y_spacing , x_offset , y_offset x_spacing = 1.0_rk / real ( num_cols - 1 ) y_spacing = 1.0_rk / real ( num_rows - 1 ) x_offset = - 0.5_rk y_offset = - 0.5_rk allocate ( control_points ( num_rows * num_cols , 3 )) do i = 1 , num_rows do j = 1 , num_cols control_points (( i - 1 ) * num_cols + j , 1 ) = x_offset + real ( j - 1 ) * x_spacing control_points (( i - 1 ) * num_cols + j , 2 ) = y_offset + real ( i - 1 ) * y_spacing control_points (( i - 1 ) * num_cols + j , 3 ) = & peak_height * exp ( - (( control_points (( i - 1 ) * num_cols + j , 1 ) ** 2 ) & + ( control_points (( i - 1 ) * num_cols + j , 2 ) ** 2 ))) + 0.5_rk * peak_height * 0.2_rk end do end do end function !----------------------------------------------------------------------------- end program example_nurbs_surface","tags":"","loc":"program/example_nurbs_surface.html"},{"title":"example_bezier_volume – ForCAD","text":"Uses forcad program~~example_bezier_volume~~UsesGraph program~example_bezier_volume example_bezier_volume module~forcad forcad program~example_bezier_volume->module~forcad module~forcad_bezier_curve forcad_bezier_curve module~forcad->module~forcad_bezier_curve module~forcad_bezier_surface forcad_bezier_surface module~forcad->module~forcad_bezier_surface module~forcad_bezier_volume forcad_bezier_volume module~forcad->module~forcad_bezier_volume module~forcad_nurbs_curve forcad_nurbs_curve module~forcad->module~forcad_nurbs_curve module~forcad_nurbs_surface forcad_nurbs_surface module~forcad->module~forcad_nurbs_surface module~forcad_nurbs_volume forcad_nurbs_volume module~forcad->module~forcad_nurbs_volume module~forcad_utils forcad_utils module~forcad->module~forcad_utils module~forcad_bezier_curve->module~forcad_utils module~forcad_bezier_surface->module~forcad_utils module~forcad_bezier_volume->module~forcad_utils module~forcad_nurbs_curve->module~forcad_utils module~forcad_nurbs_surface->module~forcad_utils module~forcad_nurbs_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. This program demonstrates the usage of a Bezier volume object to create, and finalize a Bezier volume.\nIt sets up control points and weights, generates the volume, and exports the control points\nand the volume to VTK files at various stages. Define control points for the Bezier volume Define weights for the control points Set control points and weights for the bezier volume object Export initial control points to a VTK file Generate the Bezier volume with a resolution of 10x10x10 Export the generated volume to a VTK file Finalize the Bezier volume object Calls program~~example_bezier_volume~~CallsGraph program~example_bezier_volume example_bezier_volume proc~create~5 forcad_bezier_volume::bezier_volume%create program~example_bezier_volume->proc~create~5 proc~export_xc~5 forcad_bezier_volume::bezier_volume%export_Xc program~example_bezier_volume->proc~export_xc~5 proc~export_xg~5 forcad_bezier_volume::bezier_volume%export_Xg program~example_bezier_volume->proc~export_xg~5 proc~finalize~5 forcad_bezier_volume::bezier_volume%finalize program~example_bezier_volume->proc~finalize~5 proc~generate_xc~2 example_bezier_volume::generate_Xc program~example_bezier_volume->proc~generate_xc~2 proc~set~2 forcad_bezier_volume::bezier_volume%set program~example_bezier_volume->proc~set~2 interface~ndgrid forcad_utils::ndgrid proc~create~5->interface~ndgrid proc~basis_bernstein forcad_utils::basis_bernstein proc~create~5->proc~basis_bernstein proc~kron forcad_utils::kron proc~create~5->proc~kron proc~get_elem_xc~5 forcad_bezier_volume::bezier_volume%get_elem_Xc proc~export_xc~5->proc~get_elem_xc~5 proc~get_elem_xg~5 forcad_bezier_volume::bezier_volume%get_elem_Xg proc~export_xg~5->proc~get_elem_xg~5 proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~5->interface~elemconn_c0 proc~get_elem_xg~5->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Variables Type Attributes Name Initial real(kind=rk), allocatable :: Wc (:) Arrays for control points and weights real(kind=rk), allocatable :: Xc (:,:) Arrays for control points and weights type( bezier_volume ) :: bezier Declare a bezier volume object Functions function generate_Xc (L) result(control_points) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: L Return Value real(kind=rk), dimension(:,:), allocatable Source Code program example_bezier_volume use forcad , only : rk , bezier_volume implicit none type ( bezier_volume ) :: bezier !! Declare a bezier volume object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights !----------------------------------------------------------------------------- ! Setting up the bezier volume !----------------------------------------------------------------------------- !> Define control points for the Bezier volume Xc = generate_Xc ( 1.0_rk ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 )), source = 1.0_rk ) !> Set control points and weights for the bezier volume object call bezier % set ([ 2 , 2 , 2 ], Xc , Wc ) !> Export initial control points to a VTK file call bezier % export_Xc ( 'vtk/bezier_volume_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the bezier volume !----------------------------------------------------------------------------- !> Generate the Bezier volume with a resolution of 10x10x10 call bezier % create ( 15 , 15 , 15 ) !> Export the generated volume to a VTK file call bezier % export_Xg ( 'vtk/bezier_volume_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the Bezier volume object call bezier % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( L ) result ( control_points ) implicit none real ( rk ), intent ( in ) :: L real ( rk ), dimension (:,:), allocatable :: control_points real ( rk ) :: L2 L2 = L / 2.0_rk allocate ( control_points ( 8 , 3 )) control_points ( 1 ,:) = [ L2 , - L2 , L2 ] control_points ( 2 ,:) = [ L2 , - L2 , - L2 ] control_points ( 3 ,:) = [ - L2 , - L2 , L2 ] control_points ( 4 ,:) = [ - L2 , - L2 , - L2 ] control_points ( 5 ,:) = [ L2 , L2 , L2 ] control_points ( 6 ,:) = [ L2 , L2 , - L2 ] control_points ( 7 ,:) = [ - L2 , L2 , L2 ] control_points ( 8 ,:) = [ - L2 , L2 , - L2 ] end function !----------------------------------------------------------------------------- end program example_bezier_volume","tags":"","loc":"program/example_bezier_volume.html"},{"title":"example_bezier_surface – ForCAD","text":"Uses forcad program~~example_bezier_surface~~UsesGraph program~example_bezier_surface example_bezier_surface module~forcad forcad program~example_bezier_surface->module~forcad module~forcad_bezier_curve forcad_bezier_curve module~forcad->module~forcad_bezier_curve module~forcad_bezier_surface forcad_bezier_surface module~forcad->module~forcad_bezier_surface module~forcad_bezier_volume forcad_bezier_volume module~forcad->module~forcad_bezier_volume module~forcad_nurbs_curve forcad_nurbs_curve module~forcad->module~forcad_nurbs_curve module~forcad_nurbs_surface forcad_nurbs_surface module~forcad->module~forcad_nurbs_surface module~forcad_nurbs_volume forcad_nurbs_volume module~forcad->module~forcad_nurbs_volume module~forcad_utils forcad_utils module~forcad->module~forcad_utils module~forcad_bezier_curve->module~forcad_utils module~forcad_bezier_surface->module~forcad_utils module~forcad_bezier_volume->module~forcad_utils module~forcad_nurbs_curve->module~forcad_utils module~forcad_nurbs_surface->module~forcad_utils module~forcad_nurbs_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. This program demonstrates the usage of a Bezier surface object to create, and finalize a Bezier surface.\nIt sets up control points and weights, generates the surface, and exports the control points\nand the surface to VTK files at various stages. Define control points for the Bezier surface Define weights for the control points Set control points and weights for the bezier surface object Export initial control points to a VTK file Generate the Bezier surface with a resolution of 100x100 Export the generated surface to a VTK file Finalize the Bezier surface object Calls program~~example_bezier_surface~~CallsGraph program~example_bezier_surface example_bezier_surface proc~create forcad_bezier_surface::bezier_surface%create program~example_bezier_surface->proc~create proc~export_xc forcad_bezier_surface::bezier_surface%export_Xc program~example_bezier_surface->proc~export_xc proc~export_xg forcad_bezier_surface::bezier_surface%export_Xg program~example_bezier_surface->proc~export_xg proc~finalize forcad_bezier_surface::bezier_surface%finalize program~example_bezier_surface->proc~finalize proc~generate_xc~3 example_bezier_surface::generate_Xc program~example_bezier_surface->proc~generate_xc~3 proc~set forcad_bezier_surface::bezier_surface%set program~example_bezier_surface->proc~set interface~ndgrid forcad_utils::ndgrid proc~create->interface~ndgrid proc~basis_bernstein forcad_utils::basis_bernstein proc~create->proc~basis_bernstein proc~kron forcad_utils::kron proc~create->proc~kron proc~get_elem_xc forcad_bezier_surface::bezier_surface%get_elem_Xc proc~export_xc->proc~get_elem_xc proc~get_elem_xg forcad_bezier_surface::bezier_surface%get_elem_Xg proc~export_xg->proc~get_elem_xg proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc->interface~elemconn_c0 proc~get_elem_xg->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Variables Type Attributes Name Initial real(kind=rk), allocatable :: Wc (:) Arrays for control points and weights real(kind=rk), allocatable :: Xc (:,:) Arrays for control points and weights type( bezier_surface ) :: bezier Declare a bezier surface object Functions function generate_Xc (num_rows, num_cols, peak_height) result(control_points) Arguments Type Intent Optional Attributes Name integer, intent(in) :: num_rows integer, intent(in) :: num_cols real(kind=rk), intent(in) :: peak_height Return Value real(kind=rk), dimension(:,:), allocatable Source Code program example_bezier_surface use forcad , only : rk , bezier_surface implicit none type ( bezier_surface ) :: bezier !! Declare a bezier surface object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights !----------------------------------------------------------------------------- ! Setting up the bezier surface !----------------------------------------------------------------------------- !> Define control points for the Bezier surface Xc = generate_Xc ( 10 , 10 , 1.5_rk ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 )), source = 1.0_rk ) !> Set control points and weights for the bezier surface object call bezier % set ([ 10 , 10 ], Xc , Wc ) !> Export initial control points to a VTK file call bezier % export_Xc ( 'vtk/bezier_surface_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the bezier surface !----------------------------------------------------------------------------- !> Generate the Bezier surface with a resolution of 100x100 call bezier % create ( res1 = 30 , res2 = 30 ) !> Export the generated surface to a VTK file call bezier % export_Xg ( 'vtk/bezier_surface_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the Bezier surface object call bezier % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( num_rows , num_cols , peak_height ) result ( control_points ) integer , intent ( in ) :: num_rows , num_cols real ( rk ), intent ( in ) :: peak_height real ( rk ), dimension (:,:), allocatable :: control_points integer :: i , j real ( rk ) :: x_spacing , y_spacing , x_offset , y_offset x_spacing = 1.0_rk / real ( num_cols - 1 ) y_spacing = 1.0_rk / real ( num_rows - 1 ) x_offset = - 0.5_rk y_offset = - 0.5_rk allocate ( control_points ( num_rows * num_cols , 3 )) do i = 1 , num_rows do j = 1 , num_cols control_points (( i - 1 ) * num_cols + j , 1 ) = x_offset + real ( j - 1 ) * x_spacing control_points (( i - 1 ) * num_cols + j , 2 ) = y_offset + real ( i - 1 ) * y_spacing control_points (( i - 1 ) * num_cols + j , 3 ) = & peak_height * exp ( - (( control_points (( i - 1 ) * num_cols + j , 1 ) ** 2 ) & + ( control_points (( i - 1 ) * num_cols + j , 2 ) ** 2 ))) + 0.5_rk * peak_height * 0.2_rk end do end do end function !----------------------------------------------------------------------------- end program example_bezier_surface","tags":"","loc":"program/example_bezier_surface.html"},{"title":"example_nurbs_volume – ForCAD","text":"Uses forcad program~~example_nurbs_volume~~UsesGraph program~example_nurbs_volume example_nurbs_volume module~forcad forcad program~example_nurbs_volume->module~forcad module~forcad_bezier_curve forcad_bezier_curve module~forcad->module~forcad_bezier_curve module~forcad_bezier_surface forcad_bezier_surface module~forcad->module~forcad_bezier_surface module~forcad_bezier_volume forcad_bezier_volume module~forcad->module~forcad_bezier_volume module~forcad_nurbs_curve forcad_nurbs_curve module~forcad->module~forcad_nurbs_curve module~forcad_nurbs_surface forcad_nurbs_surface module~forcad->module~forcad_nurbs_surface module~forcad_nurbs_volume forcad_nurbs_volume module~forcad->module~forcad_nurbs_volume module~forcad_utils forcad_utils module~forcad->module~forcad_utils module~forcad_bezier_curve->module~forcad_utils module~forcad_bezier_surface->module~forcad_utils module~forcad_bezier_volume->module~forcad_utils module~forcad_nurbs_curve->module~forcad_utils module~forcad_nurbs_surface->module~forcad_utils module~forcad_nurbs_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. This program demonstrates the usage of a NURBS (Non-Uniform Rational B-Spline) volume object to create and finalize a NURBS volume.\nIt sets up control points, weights, and knot vectors for all three dimensions, generates the volume, and exports the control points and the volume to VTK files. Define the control points for the NURBS volume Define weights for the control points Define knot vectors for all three dimensions\nSet knot vectors, control points, and weights for the NURBS volume object Export the control points to a VTK file Generate the NURBS volume with resolutions of 15, 15, and 15 in the three dimensions Export the generated volume to a VTK file Finalize the NURBS volume object Calls program~~example_nurbs_volume~~CallsGraph program~example_nurbs_volume example_nurbs_volume none~set~4 forcad_nurbs_volume::nurbs_volume%set program~example_nurbs_volume->none~set~4 proc~create~4 forcad_nurbs_volume::nurbs_volume%create program~example_nurbs_volume->proc~create~4 proc~export_xc~4 forcad_nurbs_volume::nurbs_volume%export_Xc program~example_nurbs_volume->proc~export_xc~4 proc~export_xg~4 forcad_nurbs_volume::nurbs_volume%export_Xg program~example_nurbs_volume->proc~export_xg~4 proc~finalize~4 forcad_nurbs_volume::nurbs_volume%finalize program~example_nurbs_volume->proc~finalize~4 proc~generate_xc~4 example_nurbs_volume::generate_Xc program~example_nurbs_volume->proc~generate_xc~4 proc~set1~3 forcad_nurbs_volume::nurbs_volume%set1 none~set~4->proc~set1~3 proc~set2~3 forcad_nurbs_volume::nurbs_volume%set2 none~set~4->proc~set2~3 interface~ndgrid forcad_utils::ndgrid proc~create~4->interface~ndgrid proc~basis_bspline forcad_utils::basis_bspline proc~create~4->proc~basis_bspline proc~kron forcad_utils::kron proc~create~4->proc~kron proc~get_elem_xc~4 forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~export_xc~4->proc~get_elem_xc~4 proc~get_elem_xg~4 forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~export_xg~4->proc~get_elem_xg~4 proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~4->interface~elemconn_c0 proc~get_elem_xg~4->interface~elemconn_c0 proc~get_nc~4 forcad_nurbs_volume::nurbs_volume%get_nc proc~set1~3->proc~get_nc~4 proc~get_order~4 forcad_nurbs_volume::nurbs_volume%get_order proc~set1~3->proc~get_order~4 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2~3->proc~compute_knot_vector proc~set2~3->proc~get_nc~4 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~4->proc~compute_multiplicity proc~get_multiplicity~3 forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~get_order~4->proc~get_multiplicity~3 proc~get_multiplicity~3->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Variables Type Attributes Name Initial real(kind=rk), allocatable :: Wc (:) Arrays for control points and weights real(kind=rk), allocatable :: Xc (:,:) Arrays for control points and weights real(kind=rk) :: knot1 (4) Arrays for knot vectors in all three dimensions real(kind=rk) :: knot2 (4) Arrays for knot vectors in all three dimensions real(kind=rk) :: knot3 (4) Arrays for knot vectors in all three dimensions type( nurbs_volume ) :: nurbs Declare a NURBS volume object Functions function generate_Xc (L) result(control_points) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: L Return Value real(kind=rk), dimension(:,:), allocatable Source Code program example_nurbs_volume use forcad , only : rk , nurbs_volume implicit none type ( nurbs_volume ) :: nurbs !! Declare a NURBS volume object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights real ( rk ) :: knot1 ( 4 ), knot2 ( 4 ), knot3 ( 4 ) !! Arrays for knot vectors in all three dimensions !----------------------------------------------------------------------------- ! Setting up the NURBS volume !----------------------------------------------------------------------------- !> Define the control points for the NURBS volume Xc = generate_Xc ( 5.0_rk ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 )), source = 1.0_rk ) !> Define knot vectors for all three dimensions knot1 = [ 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk ] knot2 = [ 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk ] knot3 = [ 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk ] !> Set knot vectors, control points, and weights for the NURBS volume object call nurbs % set ( knot1 , knot2 , knot3 , Xc , Wc ) !> Export the control points to a VTK file call nurbs % export_Xc ( 'vtk/nurbs_volume_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the NURBS volume !----------------------------------------------------------------------------- !> Generate the NURBS volume with resolutions of 15, 15, and 15 in the three dimensions call nurbs % create ( 15 , 15 , 15 ) !> Export the generated volume to a VTK file call nurbs % export_Xg ( 'vtk/nurbs_volume_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the NURBS volume object call nurbs % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( L ) result ( control_points ) implicit none real ( rk ), intent ( in ) :: L real ( rk ), dimension (:,:), allocatable :: control_points real ( rk ) :: L2 L2 = L / 2.0_rk allocate ( control_points ( 8 , 3 )) control_points ( 1 ,:) = [ L2 , - L2 , L2 ] control_points ( 2 ,:) = [ L2 , - L2 , - L2 ] control_points ( 3 ,:) = [ - L2 , - L2 , L2 ] control_points ( 4 ,:) = [ - L2 , - L2 , - L2 ] control_points ( 5 ,:) = [ L2 , L2 , L2 ] control_points ( 6 ,:) = [ L2 , L2 , - L2 ] control_points ( 7 ,:) = [ - L2 , L2 , L2 ] control_points ( 8 ,:) = [ - L2 , L2 , - L2 ] end function !----------------------------------------------------------------------------- end program example_nurbs_volume","tags":"","loc":"program/example_nurbs_volume.html"},{"title":"example_bezier_curve – ForCAD","text":"Uses forcad program~~example_bezier_curve~~UsesGraph program~example_bezier_curve example_bezier_curve module~forcad forcad program~example_bezier_curve->module~forcad module~forcad_bezier_curve forcad_bezier_curve module~forcad->module~forcad_bezier_curve module~forcad_bezier_surface forcad_bezier_surface module~forcad->module~forcad_bezier_surface module~forcad_bezier_volume forcad_bezier_volume module~forcad->module~forcad_bezier_volume module~forcad_nurbs_curve forcad_nurbs_curve module~forcad->module~forcad_nurbs_curve module~forcad_nurbs_surface forcad_nurbs_surface module~forcad->module~forcad_nurbs_surface module~forcad_nurbs_volume forcad_nurbs_volume module~forcad->module~forcad_nurbs_volume module~forcad_utils forcad_utils module~forcad->module~forcad_utils module~forcad_bezier_curve->module~forcad_utils module~forcad_bezier_surface->module~forcad_utils module~forcad_bezier_volume->module~forcad_utils module~forcad_nurbs_curve->module~forcad_utils module~forcad_nurbs_surface->module~forcad_utils module~forcad_nurbs_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. This program demonstrates the usage of a Bezier curve object to create, and finalize a Bezier curve.\nIt sets up control points and weights, generates the curve, and exports the control points\nand the curve to VTK files at various stages. Define control points for the Bezier curve Define weights for the control points Set control points and weights for the bezier curve object Export initial control points to a VTK file Generate the Bezier curve with a resolution of 1000 Export the generated curve to a VTK file Finalize the Bezier curve object Calls program~~example_bezier_curve~~CallsGraph program~example_bezier_curve example_bezier_curve proc~create~6 forcad_bezier_curve::bezier_curve%create program~example_bezier_curve->proc~create~6 proc~export_xc~6 forcad_bezier_curve::bezier_curve%export_Xc program~example_bezier_curve->proc~export_xc~6 proc~export_xg~6 forcad_bezier_curve::bezier_curve%export_Xg program~example_bezier_curve->proc~export_xg~6 proc~finalize~6 forcad_bezier_curve::bezier_curve%finalize program~example_bezier_curve->proc~finalize~6 proc~generate_xc~5 example_bezier_curve::generate_Xc program~example_bezier_curve->proc~generate_xc~5 proc~set~3 forcad_bezier_curve::bezier_curve%set program~example_bezier_curve->proc~set~3 proc~basis_bernstein forcad_utils::basis_bernstein proc~create~6->proc~basis_bernstein proc~get_elem_xc~6 forcad_bezier_curve::bezier_curve%get_elem_Xc proc~export_xc~6->proc~get_elem_xc~6 proc~get_elem_xg~6 forcad_bezier_curve::bezier_curve%get_elem_Xg proc~export_xg~6->proc~get_elem_xg~6 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~6->interface~elemconn_c0 proc~get_elem_xg~6->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Variables Type Attributes Name Initial real(kind=rk), allocatable :: Wc (:) Arrays for control points and weights real(kind=rk), allocatable :: Xc (:,:) Arrays for control points and weights type( bezier_curve ) :: bezier Declare a bezier curve object Functions function generate_Xc (num_coils, radius, height, num_points_per_coil) result(control_points) Arguments Type Intent Optional Attributes Name integer, intent(in) :: num_coils real(kind=rk), intent(in) :: radius real(kind=rk), intent(in) :: height integer, intent(in) :: num_points_per_coil Return Value real(kind=rk), dimension(:,:), allocatable Source Code program example_bezier_curve use forcad , only : rk , bezier_curve implicit none type ( bezier_curve ) :: bezier !! Declare a bezier curve object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights !----------------------------------------------------------------------------- ! Setting up the bezier curve !----------------------------------------------------------------------------- !> Define control points for the Bezier curve Xc = generate_Xc ( 5 , 1.0_rk , 2.0_rk , 20 ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 )), source = 1.0_rk ) !> Set control points and weights for the bezier curve object call bezier % set ( Xc = Xc , Wc = Wc ) !> Export initial control points to a VTK file call bezier % export_Xc ( 'vtk/bezier_curve_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the bezier curve !----------------------------------------------------------------------------- !> Generate the Bezier curve with a resolution of 1000 call bezier % create ( res = 500 ) !> Export the generated curve to a VTK file call bezier % export_Xg ( 'vtk/bezier_curve_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the Bezier curve object call bezier % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( num_coils , radius , height , num_points_per_coil ) result ( control_points ) integer , intent ( in ) :: num_coils , num_points_per_coil real ( rk ), intent ( in ) :: radius , height real ( rk ), dimension (:,:), allocatable :: control_points integer :: coil , i real ( rk ) :: theta , coil_height allocate ( control_points ( num_coils * num_points_per_coil , 3 )) do coil = 1 , num_coils coil_height = height * ( coil - 1 ) / real ( num_coils - 1 , rk ) theta = 0.0_rk do i = 1 , num_points_per_coil theta = theta + 2.0_rk * acos ( - 1.0_rk ) / real ( num_points_per_coil , rk ) control_points (( coil - 1 ) * num_points_per_coil + i , 1 ) = radius * cos ( theta ) control_points (( coil - 1 ) * num_points_per_coil + i , 2 ) = radius * sin ( theta ) control_points (( coil - 1 ) * num_points_per_coil + i , 3 ) = coil_height end do end do end function !----------------------------------------------------------------------------- end program example_bezier_curve","tags":"","loc":"program/example_bezier_curve.html"},{"title":"example_nurbs_curve – ForCAD","text":"Uses forcad program~~example_nurbs_curve~~UsesGraph program~example_nurbs_curve example_nurbs_curve module~forcad forcad program~example_nurbs_curve->module~forcad module~forcad_bezier_curve forcad_bezier_curve module~forcad->module~forcad_bezier_curve module~forcad_bezier_surface forcad_bezier_surface module~forcad->module~forcad_bezier_surface module~forcad_bezier_volume forcad_bezier_volume module~forcad->module~forcad_bezier_volume module~forcad_nurbs_curve forcad_nurbs_curve module~forcad->module~forcad_nurbs_curve module~forcad_nurbs_surface forcad_nurbs_surface module~forcad->module~forcad_nurbs_surface module~forcad_nurbs_volume forcad_nurbs_volume module~forcad->module~forcad_nurbs_volume module~forcad_utils forcad_utils module~forcad->module~forcad_utils module~forcad_bezier_curve->module~forcad_utils module~forcad_bezier_surface->module~forcad_utils module~forcad_bezier_volume->module~forcad_utils module~forcad_nurbs_curve->module~forcad_utils module~forcad_nurbs_surface->module~forcad_utils module~forcad_nurbs_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. This program demonstrates the usage of a NURBS (Non-Uniform Rational B-Spline) curve object to create and finalize a NURBS curve.\nIt sets up control points, weights, and knot vectors for all three dimensions, generates the curve, and exports the control points and the curve to VTK files. Calls program~~example_nurbs_curve~~CallsGraph program~example_nurbs_curve example_nurbs_curve none~set~3 forcad_nurbs_curve::nurbs_curve%set program~example_nurbs_curve->none~set~3 proc~create~3 forcad_nurbs_curve::nurbs_curve%create program~example_nurbs_curve->proc~create~3 proc~export_xc~3 forcad_nurbs_curve::nurbs_curve%export_Xc program~example_nurbs_curve->proc~export_xc~3 proc~export_xg~3 forcad_nurbs_curve::nurbs_curve%export_Xg program~example_nurbs_curve->proc~export_xg~3 proc~finalize~3 forcad_nurbs_curve::nurbs_curve%finalize program~example_nurbs_curve->proc~finalize~3 proc~set1~2 forcad_nurbs_curve::nurbs_curve%set1 none~set~3->proc~set1~2 proc~set2~2 forcad_nurbs_curve::nurbs_curve%set2 none~set~3->proc~set2~2 proc~basis_bspline forcad_utils::basis_bspline proc~create~3->proc~basis_bspline proc~get_elem_xc~3 forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~export_xc~3->proc~get_elem_xc~3 proc~get_elem_xg~3 forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~export_xg~3->proc~get_elem_xg~3 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~3->interface~elemconn_c0 proc~get_elem_xg~3->interface~elemconn_c0 proc~get_order~3 forcad_nurbs_curve::nurbs_curve%get_order proc~set1~2->proc~get_order~3 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2~2->proc~compute_knot_vector proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~get_multiplicity~2 forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~get_order~3->proc~get_multiplicity~2 proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity~2->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Variables Type Attributes Name Initial real(kind=rk), allocatable :: Wc (:) Arrays for control points and weights real(kind=rk), allocatable :: Xc (:,:) Arrays for control points and weights real(kind=rk) :: knot (6) Array for knot vector type( nurbs_curve ) :: nurbs Declare a NURBS curve object Source Code program example_nurbs_curve use forcad , only : rk , nurbs_curve implicit none type ( nurbs_curve ) :: nurbs !! Declare a NURBS curve object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights real ( rk ) :: knot ( 6 ) !! Array for knot vector !----------------------------------------------------------------------------- ! Setting up the NURBS curve !----------------------------------------------------------------------------- ! Define control points for the NURBS curve allocate ( Xc ( 3 , 3 )) Xc ( 1 ,:) = [ 0.0_rk , 0.0_rk , 0.0_rk ] Xc ( 2 ,:) = [ 0.0_rk , 5.0_rk , 0.0_rk ] Xc ( 3 ,:) = [ 5.0_rk , 5.0_rk , 0.0_rk ] ! Define weights for the control points allocate ( Wc ( 3 )) Wc = [ 1.0_rk , 2.0_rk , 1.0_rk ] ! Define knot vector knot = [ 0.0_rk , 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk , 1.0_rk ] ! Set knot vector, control points, and weights for the NURBS curve object call nurbs % set ( knot , Xc , Wc ) ! Export control points to a VTK file call nurbs % export_Xc ( 'vtk/nurbs_curve_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the NURBS curve !----------------------------------------------------------------------------- ! Generate the NURBS curve with a resolution of 20 call nurbs % create ( res = 20 ) ! Export the generated curve to a VTK file call nurbs % export_Xg ( 'vtk/nurbs_curve_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- ! Finalize the NURBS curve object call nurbs % finalize () end program example_nurbs_curve","tags":"","loc":"program/example_nurbs_curve.html"},{"title":"forcad_bezier_surface.f90 – ForCAD","text":"This file depends on sourcefile~~forcad_bezier_surface.f90~~EfferentGraph sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Files dependent on this one sourcefile~~forcad_bezier_surface.f90~~AfferentGraph sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code module forcad_bezier_surface use forcad_utils , only : rk , basis_bernstein , elemConn_C0 , kron , ndgrid implicit none private public bezier_surface !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause type bezier_surface real ( rk ), allocatable , private :: Xc (:,:) !! control points real ( rk ), allocatable , private :: Xg (:,:) !! geometry points real ( rk ), allocatable , private :: Wc (:) !! weights real ( rk ), allocatable , private :: Xt1 (:) !! parameter values in the first direction real ( rk ), allocatable , private :: Xt2 (:) !! parameter values in the second direction integer , private :: nc ( 2 ) !! number of control points in each direction integer , private :: ng ( 2 ) !! number of geometry points in each direction contains procedure :: set !!> Set control points and weights procedure :: create !!> Generate geometry points procedure :: get_Xc !!> Get control points procedure :: get_Xg !!> Get geometry points procedure :: get_Wc !!> Get weights procedure :: get_Xt !!> Get parameter values procedure :: get_nc !!> Get number of control points procedure :: get_ng !!> Get number of geometry points procedure :: get_order !!> Get order of the Bezier surface procedure :: finalize !!> Finalize the Bezier surface object procedure :: get_elem_Xc !!> Generate connectivity for control points procedure :: get_elem_Xg !!> Generate connectivity for geometry points procedure :: export_Xc !!> Export control points to VTK file procedure :: export_Xg !!> Export geometry points to VTK file procedure :: modify_Xc !!> Modify control points procedure :: modify_Wc !!> Modify weights end type !=============================================================================== contains !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the Bezier curve object. pure subroutine set ( this , nc , Xc , Wc ) class ( bezier_surface ), intent ( inout ) :: this integer , intent ( in ) :: nc (:) real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) this % Xc = Xc this % nc = nc if ( present ( Wc )) this % Wc = Wc end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine create ( this , res1 , res2 , Xt1 , Xt2 ) class ( bezier_surface ), intent ( inout ) :: this integer , intent ( in ), optional :: res1 , res2 real ( rk ), intent ( in ), optional :: Xt1 (:), Xt2 (:) integer :: i , j real ( rk ), dimension (:), allocatable :: Tgc1 , Tgc2 , Tgc real ( rk ), dimension (:,:), allocatable :: Xt ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if ! Set parameter values if ( present ( Xt1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) this % Xt1 = Xt1 elseif ( present ( res1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) allocate ( this % Xt1 ( res1 )) this % Xt1 = [( real ( i - 1 , rk ) / real ( res1 - 1 , rk ), i = 1 , res1 )] ! else ! this%Xt1 = this%Xt1 end if ! Set parameter values if ( present ( Xt2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) this % Xt2 = Xt2 elseif ( present ( res2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) allocate ( this % Xt2 ( res2 )) this % Xt2 = [( real ( i - 1 , rk ) / real ( res2 - 1 , rk ), i = 1 , res2 )] ! else ! this%Xt2 = this%Xt2 end if ! Set number of geometry points this % ng ( 1 ) = size ( this % Xt1 , 1 ) this % ng ( 2 ) = size ( this % Xt2 , 1 ) call ndgrid ( this % Xt1 , this % Xt2 , Xt ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) allocate ( this % Xg ( this % ng ( 1 ) * this % ng ( 2 ), size ( this % Xc , 2 ))) if ( allocated ( this % Wc )) then ! Rational Bezier surface do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bernstein ( Xt ( i , 1 ), this % nc ( 1 )) Tgc2 = basis_bernstein ( Xt ( i , 2 ), this % nc ( 2 )) Tgc = kron ( Tgc2 , Tgc1 ) Tgc = Tgc * ( this % Wc / ( dot_product ( Tgc , this % Wc ))) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do else ! Non-rational Bezier surface do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bernstein ( Xt ( i , 1 ), this % nc ( 1 )) Tgc2 = basis_bernstein ( Xt ( i , 2 ), this % nc ( 2 )) Tgc = kron ( Tgc2 , Tgc1 ) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do end if end subroutine create !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xc ( this ) result ( Xc ) class ( bezier_surface ), intent ( in ) :: this real ( rk ), allocatable :: Xc (:,:) if ( allocated ( this % Xc )) then Xc = this % Xc else error stop 'Control points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xg ( this ) result ( Xg ) class ( bezier_surface ), intent ( in ) :: this real ( rk ), allocatable :: Xg (:,:) if ( allocated ( this % Xg )) then Xg = this % Xg else error stop 'Geometry points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Wc ( this ) result ( Wc ) class ( bezier_surface ), intent ( in ) :: this real ( rk ), allocatable :: Wc (:) if ( allocated ( this % Wc )) then Wc = this % Wc else error stop 'The Bezier curve is not rational.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xt ( this , dir ) result ( Xt ) class ( bezier_surface ), intent ( in ) :: this integer , intent ( in ) :: dir real ( rk ), allocatable :: Xt (:) if ( dir == 1 ) then if ( allocated ( this % Xt1 )) then Xt = this % Xt1 else error stop 'Parameter values are not set.' end if elseif ( dir == 2 ) then if ( allocated ( this % Xt2 )) then Xt = this % Xt2 else error stop 'Parameter values are not set.' end if else error stop 'Invalid direction for parameter values.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_nc ( this ) result ( nc ) class ( bezier_surface ), intent ( in ) :: this integer :: nc ( 2 ) nc = this % nc end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_ng ( this ) result ( ng ) class ( bezier_surface ), intent ( in ) :: this integer :: ng ( 2 ) ng = this % ng end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_order ( this ) result ( order ) class ( bezier_surface ), intent ( in ) :: this integer :: order ( 2 ) order = this % nc - 1 end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine finalize ( this ) class ( bezier_surface ), intent ( inout ) :: this if ( allocated ( this % Xc )) deallocate ( this % Xc ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) if ( allocated ( this % Wc )) deallocate ( this % Wc ) if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xc ( this , elemConn , p ) class ( bezier_surface ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p (:) if ( present ( p )) then elemConn = elemConn_C0 ( this % nc ( 1 ), this % nc ( 2 ), p ( 1 ), p ( 2 )) else elemConn = elemConn_C0 ( this % nc ( 1 ), this % nc ( 2 ), 1 , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xg ( this , elemConn , p ) class ( bezier_surface ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p (:) if ( present ( p )) then elemConn = elemConn_C0 ( this % ng ( 1 ), this % ng ( 2 ), p ( 1 ), p ( 2 )) else elemConn = elemConn_C0 ( this % ng ( 1 ), this % ng ( 2 ), 1 , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xc ( this , filename ) class ( bezier_surface ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , nc , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if call this % get_elem_Xc ( elemConn ) nc = size ( this % Xc , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , nc , 'double' if ( size ( this % Xc , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), 0.0_rk , i = 1 , nc ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), this % Xc ( i , 3 ) , i = 1 , nc ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 5 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 4 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , elemConn ( i , 4 ) - 1 , elemConn ( i , 3 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 9 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xg ( this , filename ) class ( bezier_surface ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , ng , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xg )) then error stop 'Geometry points are not set.' end if call this % get_elem_Xg ( elemConn ) ng = size ( this % Xg , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , ng , 'double' if ( size ( this % Xg , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), 0.0_rk , i = 1 , ng ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), this % Xg ( i , 3 ) , i = 1 , ng ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 5 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 4 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , elemConn ( i , 4 ) - 1 , elemConn ( i , 3 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 9 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Modify coordinate of a control point given its index and direction. pure subroutine modify_Xc ( this , X , num , dir ) class ( bezier_surface ), intent ( inout ) :: this real ( rk ), intent ( in ) :: X integer , intent ( in ) :: num integer , intent ( in ) :: dir if ( allocated ( this % Xc )) then this % Xc ( num , dir ) = X call this % set ( nc = this % nc , Xc = this % Xc , Wc = this % Wc ) else error stop 'Control points are not set.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Modify weight of a control point given its index. pure subroutine modify_Wc ( this , W , num ) class ( bezier_surface ), intent ( inout ) :: this real ( rk ), intent ( in ) :: W integer , intent ( in ) :: num if ( allocated ( this % Wc )) then this % Wc ( num ) = W call this % set ( nc = this % nc , Xc = this % Xc , Wc = this % Wc ) else error stop 'The Bezier curve is not rational.' end if end subroutine !=============================================================================== end module forcad_bezier_surface","tags":"","loc":"sourcefile/forcad_bezier_surface.f90.html"},{"title":"forcad_nurbs_surface.f90 – ForCAD","text":"This file depends on sourcefile~~forcad_nurbs_surface.f90~~EfferentGraph sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Files dependent on this one sourcefile~~forcad_nurbs_surface.f90~~AfferentGraph sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code module forcad_nurbs_surface use forcad_utils , only : rk , basis_bspline , elemConn_C0 , kron , ndgrid , compute_multiplicity , compute_knot_vector implicit none private public nurbs_surface !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause type nurbs_surface real ( rk ), allocatable , private :: Xc (:,:) !! control points real ( rk ), allocatable , private :: Xg (:,:) !! geometry points real ( rk ), allocatable , private :: Wc (:) !! weights real ( rk ), allocatable , private :: Xt1 (:) !! parameter values in the first direction real ( rk ), allocatable , private :: Xt2 (:) !! parameter values in the second direction real ( rk ), allocatable , private :: knot1 (:) !! knot vector real ( rk ), allocatable , private :: knot2 (:) !! knot vector integer , private :: order ( 2 ) !! degree of each direction integer , private :: nc ( 2 ) !! number of control points in each direction integer , private :: ng ( 2 ) !! number of geometry points in each direction contains procedure :: set1 !!> Set control points and weights procedure :: set2 !!> Set control points and weights generic :: set => set1 , set2 procedure :: create !!> Generate geometry points procedure :: get_Xc !!> Get control points procedure :: get_Xg !!> Get geometry points procedure :: get_Wc !!> Get weights procedure :: get_Xt !!> Get parameter values procedure :: get_knot !!> Get knot vector procedure :: get_ng !!> Get number of geometry points procedure :: get_order !!> Get order of the Bezier curve procedure :: finalize !!> Finalize the NURBS surface object procedure :: get_elem_Xc !!> Generate connectivity for control points procedure :: get_elem_Xg !!> Generate connectivity for geometry points procedure :: export_Xc !!> Export control points to VTK file procedure :: export_Xg !!> Export geometry points to VTK file procedure :: modify_Xc !!> Modify control points procedure :: modify_Wc !!> Modify weights procedure :: get_multiplicity !!> Get multiplicity of the knot vector procedure :: get_continuity !!> Get continuity of the surface procedure :: get_nc !!> Get number of required control points end type !=============================================================================== contains !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the NURBS surface object. pure subroutine set1 ( this , knot1 , knot2 , Xc , Wc ) class ( nurbs_surface ), intent ( inout ) :: this real ( rk ), intent ( in ) :: knot1 (:) real ( rk ), intent ( in ) :: knot2 (:) real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) this % knot1 = knot1 this % knot2 = knot2 this % order = this % get_order () this % nc ( 1 ) = this % get_nc ( 1 ) this % nc ( 2 ) = this % get_nc ( 2 ) this % Xc = Xc if ( present ( Wc )) this % Wc = Wc end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the NURBS surface object. pure subroutine set2 ( this , Xth_dir1 , Xth_dir2 , order , continuity1 , continuity2 , Xc , Wc ) class ( nurbs_surface ), intent ( inout ) :: this real ( rk ), intent ( in ) :: Xth_dir1 (:), Xth_dir2 (:) integer , intent ( in ) :: order (:) integer , intent ( in ) :: continuity1 (:), continuity2 (:) real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) integer :: nc ( 2 ) this % knot1 = compute_knot_vector ( Xth_dir1 , order ( 1 ), continuity1 ) this % knot2 = compute_knot_vector ( Xth_dir2 , order ( 2 ), continuity2 ) this % order ( 1 ) = order ( 1 ) this % order ( 2 ) = order ( 2 ) this % nc ( 1 ) = this % get_nc ( 1 ) this % nc ( 2 ) = this % get_nc ( 2 ) this % Xc = Xc if ( present ( Wc )) this % Wc = Wc end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine create ( this , res1 , res2 , Xt1 , Xt2 ) class ( nurbs_surface ), intent ( inout ) :: this integer , intent ( in ), optional :: res1 , res2 real ( rk ), intent ( in ), optional :: Xt1 (:), Xt2 (:) integer :: i , j real ( rk ), dimension (:), allocatable :: Tgc1 , Tgc2 , Tgc real ( rk ), dimension (:,:), allocatable :: Xt ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if ! Set parameter values if ( present ( Xt1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) this % Xt1 = Xt1 elseif ( present ( res1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) allocate ( this % Xt1 ( res1 )) this % Xt1 = [( real ( i - 1 , rk ) / real ( res1 - 1 , rk ), i = 1 , res1 )] ! else ! this%Xt1 = this%Xt1 end if ! Set parameter values if ( present ( Xt2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) this % Xt2 = Xt2 elseif ( present ( res2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) allocate ( this % Xt2 ( res2 )) this % Xt2 = [( real ( i - 1 , rk ) / real ( res2 - 1 , rk ), i = 1 , res2 )] ! else ! this%Xt2 = this%Xt2 end if ! Set number of geometry points this % ng ( 1 ) = size ( this % Xt1 , 1 ) this % ng ( 2 ) = size ( this % Xt2 , 1 ) call ndgrid ( this % Xt1 , this % Xt2 , Xt ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) allocate ( this % Xg ( this % ng ( 1 ) * this % ng ( 2 ), size ( this % Xc , 2 ))) if ( allocated ( this % Wc )) then ! NURBS surface do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bspline ( Xt ( i , 1 ), this % knot1 , this % nc ( 1 ), this % order ( 1 )) Tgc2 = basis_bspline ( Xt ( i , 2 ), this % knot2 , this % nc ( 2 ), this % order ( 2 )) Tgc = kron ( Tgc2 , Tgc1 ) Tgc = Tgc * ( this % Wc / ( dot_product ( Tgc , this % Wc ))) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do else do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bspline ( Xt ( i , 1 ), this % knot1 , this % nc ( 1 ), this % order ( 1 )) Tgc2 = basis_bspline ( Xt ( i , 2 ), this % knot2 , this % nc ( 2 ), this % order ( 2 )) Tgc = kron ( Tgc2 , Tgc1 ) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xc ( this ) result ( Xc ) class ( nurbs_surface ), intent ( in ) :: this real ( rk ), allocatable :: Xc (:,:) if ( allocated ( this % Xc )) then Xc = this % Xc else error stop 'Control points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xg ( this ) result ( Xg ) class ( nurbs_surface ), intent ( in ) :: this real ( rk ), allocatable :: Xg (:,:) if ( allocated ( this % Xg )) then Xg = this % Xg else error stop 'Geometry points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Wc ( this ) result ( Wc ) class ( nurbs_surface ), intent ( in ) :: this real ( rk ), allocatable :: Wc (:) if ( allocated ( this % Wc )) then Wc = this % Wc else error stop 'The Bezier curve is not rational.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xt ( this , dir ) result ( Xt ) class ( nurbs_surface ), intent ( in ) :: this integer , intent ( in ) :: dir real ( rk ), allocatable :: Xt (:) if ( dir == 1 ) then if ( allocated ( this % Xt1 )) then Xt = this % Xt1 else error stop 'Parameter values are not set.' end if elseif ( dir == 2 ) then if ( allocated ( this % Xt2 )) then Xt = this % Xt2 else error stop 'Parameter values are not set.' end if else error stop 'Invalid direction for parameter values.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_ng ( this ) result ( ng ) class ( nurbs_surface ), intent ( in ) :: this integer :: ng ( 2 ) ng = this % ng end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_order ( this ) result ( order ) class ( nurbs_surface ), intent ( in ) :: this integer :: order ( 2 ) integer , allocatable :: m1 (:), m2 (:) m1 = this % get_multiplicity ( 1 ) m2 = this % get_multiplicity ( 2 ) order ( 1 ) = m1 ( 1 ) - 1 order ( 2 ) = m2 ( 1 ) - 1 end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_knot ( this , dir ) result ( knot ) class ( nurbs_surface ), intent ( in ) :: this integer , intent ( in ) :: dir real ( rk ), allocatable :: knot (:) if ( dir == 1 ) then if ( allocated ( this % knot1 )) then knot = this % knot1 else error stop 'Knot vector is not set.' end if elseif ( dir == 2 ) then if ( allocated ( this % knot2 )) then knot = this % knot2 else error stop 'Knot vector is not set.' end if else error stop 'Invalid direction for knot vector.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine finalize ( this ) class ( nurbs_surface ), intent ( inout ) :: this if ( allocated ( this % Xc )) deallocate ( this % Xc ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) if ( allocated ( this % Wc )) deallocate ( this % Wc ) if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) if ( allocated ( this % knot1 )) deallocate ( this % knot1 ) if ( allocated ( this % knot2 )) deallocate ( this % knot2 ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xc ( this , elemConn , p ) class ( nurbs_surface ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p (:) if ( present ( p )) then elemConn = elemConn_C0 ( this % nc ( 1 ), this % nc ( 2 ), p ( 1 ), p ( 2 )) else elemConn = elemConn_C0 ( this % nc ( 1 ), this % nc ( 2 ), 1 , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xg ( this , elemConn , p ) class ( nurbs_surface ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p (:) if ( present ( p )) then elemConn = elemConn_C0 ( this % ng ( 1 ), this % ng ( 2 ), p ( 1 ), p ( 2 )) else elemConn = elemConn_C0 ( this % ng ( 1 ), this % ng ( 2 ), 1 , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xc ( this , filename ) class ( nurbs_surface ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , nc , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if call this % get_elem_Xc ( elemConn ) nc = size ( this % Xc , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , nc , 'double' if ( size ( this % Xc , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), 0.0_rk , i = 1 , nc ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), this % Xc ( i , 3 ) , i = 1 , nc ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 5 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 4 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , elemConn ( i , 4 ) - 1 , elemConn ( i , 3 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 9 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xg ( this , filename ) class ( nurbs_surface ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , ng , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xg )) then error stop 'Geometry points are not set.' end if call this % get_elem_Xg ( elemConn ) ng = size ( this % Xg , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , ng , 'double' if ( size ( this % Xg , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), 0.0_rk , i = 1 , ng ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), this % Xg ( i , 3 ) , i = 1 , ng ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 5 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 4 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , elemConn ( i , 4 ) - 1 , elemConn ( i , 3 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 9 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine modify_Xc ( this , X , num , dir ) class ( nurbs_surface ), intent ( inout ) :: this real ( rk ), intent ( in ) :: X integer , intent ( in ) :: num integer , intent ( in ) :: dir if ( allocated ( this % Xc )) then this % Xc ( num , dir ) = X call this % set ( knot1 = this % knot1 , knot2 = this % knot2 , Xc = this % Xc , Wc = this % Wc ) else error stop 'Control points are not set.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine modify_Wc ( this , W , num ) class ( nurbs_surface ), intent ( inout ) :: this real ( rk ), intent ( in ) :: W integer , intent ( in ) :: num if ( allocated ( this % Wc )) then this % Wc ( num ) = W call this % set ( knot1 = this % knot1 , knot2 = this % knot2 , Xc = this % Xc , Wc = this % Wc ) else error stop 'The NURBS surface is not rational.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_multiplicity ( this , dir ) result ( m ) class ( nurbs_surface ), intent ( in ) :: this integer , intent ( in ) :: dir integer , allocatable :: m (:) if ( dir == 1 ) then ! check if (. not . allocated ( this % knot1 )) then error stop 'Knot vector is not set.' else m = compute_multiplicity ( this % knot1 ) end if elseif ( dir == 2 ) then ! check if (. not . allocated ( this % knot2 )) then error stop 'Knot vector is not set.' else m = compute_multiplicity ( this % knot2 ) end if else error stop 'Invalid direction.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_continuity ( this , dir ) result ( c ) class ( nurbs_surface ), intent ( in ) :: this integer , intent ( in ) :: dir integer , allocatable :: c (:) if ( dir == 1 ) then ! check if (. not . allocated ( this % knot1 )) then error stop 'Knot vector is not set.' else c = this % order ( 1 ) - compute_multiplicity ( this % knot1 ) end if elseif ( dir == 2 ) then ! check if (. not . allocated ( this % knot2 )) then error stop 'Knot vector is not set.' else c = this % order ( 2 ) - compute_multiplicity ( this % knot2 ) end if else error stop 'Invalid direction.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_nc ( this , dir ) result ( nc ) class ( nurbs_surface ), intent ( in ) :: this integer , intent ( in ) :: dir integer :: nc if ( dir == 1 ) then ! check if (. not . allocated ( this % knot1 )) then error stop 'Knot vector is not set.' else nc = sum ( compute_multiplicity ( this % knot1 )) - this % order ( 1 ) - 1 end if elseif ( dir == 2 ) then ! check if (. not . allocated ( this % knot2 )) then error stop 'Knot vector is not set.' else nc = sum ( compute_multiplicity ( this % knot2 )) - this % order ( 2 ) - 1 end if else error stop 'Invalid direction.' end if end function !=============================================================================== end module forcad_nurbs_surface","tags":"","loc":"sourcefile/forcad_nurbs_surface.f90.html"},{"title":"forcad_nurbs_curve.f90 – ForCAD","text":"This file depends on sourcefile~~forcad_nurbs_curve.f90~~EfferentGraph sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Files dependent on this one sourcefile~~forcad_nurbs_curve.f90~~AfferentGraph sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code module forcad_nurbs_curve use forcad_utils , only : rk , basis_bspline , elemConn_C0 , compute_multiplicity , compute_knot_vector implicit none private public nurbs_curve !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause type nurbs_curve real ( rk ), allocatable , private :: Xc (:,:) !! control points real ( rk ), allocatable , private :: Xg (:,:) !! geometry points real ( rk ), allocatable , private :: Wc (:) !! weights real ( rk ), allocatable , private :: Xt (:) !! evaluation points real ( rk ), allocatable , private :: knot (:) !! knot vector integer , private :: order !! order of the curve integer , private :: nc !! number of control points integer , private :: ng !! number of geometry points contains procedure :: set1 !!> Set control points and weights procedure :: set2 !!> Set control points and weights generic :: set => set1 , set2 procedure :: create !!> Generate geometry points procedure :: get_Xc !!> Get control points procedure :: get_Xg !!> Get geometry points procedure :: get_Wc !!> Get weights procedure :: get_Xt !!> Get parameter values procedure :: get_knot !!> Get knot vector procedure :: get_ng !!> Get number of geometry points procedure :: get_order !!> Get order of the Bezier curve procedure :: finalize !!> Finalize the Bezier curve object procedure :: get_elem_Xc !!> Generate connectivity for control points procedure :: get_elem_Xg !!> Generate connectivity for geometry points procedure :: export_Xc !!> Export control points to VTK file procedure :: export_Xg !!> Export geometry points to VTK file procedure :: modify_Xc !!> Modify control points procedure :: modify_Wc !!> Modify weights procedure :: get_multiplicity !!> Get multiplicity of the knot vector procedure :: get_continuity !!> Get continuity of the curve procedure :: get_nc !!> Get number of required control points end type !=============================================================================== contains !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the Bezier curve object. pure subroutine set1 ( this , knot , Xc , Wc ) class ( nurbs_curve ), intent ( inout ) :: this real ( rk ), intent ( in ) :: knot (:) real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) this % knot = knot this % order = this % get_order () this % Xc = Xc this % nc = size ( this % Xc , 1 ) if ( present ( Wc )) then if ( size ( Wc ) /= this % nc ) then error stop 'Number of weights does not match the number of control points.' else this % Wc = Wc end if end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the Bezier curve object. pure subroutine set2 ( this , Xth_dir , order , continuity , Xc , Wc ) class ( nurbs_curve ), intent ( inout ) :: this real ( rk ), intent ( in ) :: Xth_dir (:) integer , intent ( in ) :: order integer , intent ( in ) :: continuity (:) real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) this % knot = compute_knot_vector ( Xth_dir , order , continuity ) this % order = order this % Xc = Xc this % nc = size ( this % Xc , 1 ) if ( present ( Wc )) then if ( size ( Wc ) /= this % nc ) then error stop 'Number of weights does not match the number of control points.' else this % Wc = Wc end if end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine create ( this , res , Xt ) class ( nurbs_curve ), intent ( inout ) :: this integer , intent ( in ), optional :: res real ( rk ), intent ( in ), optional :: Xt (:) real ( rk ), allocatable :: Tgc (:) integer :: i , j ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if ! Set parameter values if ( present ( Xt )) then if ( allocated ( this % Xt )) deallocate ( this % Xt ) this % Xt = Xt elseif ( present ( res )) then if ( allocated ( this % Xt )) deallocate ( this % Xt ) allocate ( this % Xt ( res )) this % Xt = [( real ( i - 1 , rk ) / real ( res - 1 , rk ), i = 1 , res )] ! else ! this%Xt = this%Xt end if ! Set number of geometry points this % ng = size ( this % Xt ) ! Allocate memory for geometry points if ( allocated ( this % Xg )) deallocate ( this % Xg ) allocate ( this % Xg ( this % ng , size ( this % Xc , 2 ))) if ( allocated ( this % Wc )) then do i = 1 , size ( this % Xt , 1 ) Tgc = basis_bspline ( this % Xt ( i ), this % knot , this % nc , this % order ) Tgc = Tgc * ( this % Wc / ( dot_product ( Tgc , this % Wc ))) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do else do i = 1 , size ( this % Xt , 1 ) Tgc = basis_bspline ( this % Xt ( i ), this % knot , this % nc , this % order ) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xc ( this ) result ( Xc ) class ( nurbs_curve ), intent ( in ) :: this real ( rk ), allocatable :: Xc (:,:) if ( allocated ( this % Xc )) then Xc = this % Xc else error stop 'Control points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xg ( this ) result ( Xg ) class ( nurbs_curve ), intent ( in ) :: this real ( rk ), allocatable :: Xg (:,:) if ( allocated ( this % Xg )) then Xg = this % Xg else error stop 'Geometry points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Wc ( this ) result ( Wc ) class ( nurbs_curve ), intent ( in ) :: this real ( rk ), allocatable :: Wc (:) if ( allocated ( this % Wc )) then Wc = this % Wc else error stop 'The Bezier curve is not rational.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xt ( this ) result ( Xt ) class ( nurbs_curve ), intent ( in ) :: this real ( rk ), allocatable :: Xt (:) if ( allocated ( this % Xt )) then Xt = this % Xt else error stop 'Parameter values are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_ng ( this ) result ( ng ) class ( nurbs_curve ), intent ( in ) :: this integer :: ng ng = this % ng end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_order ( this ) result ( order ) class ( nurbs_curve ), intent ( in ) :: this integer :: order integer , allocatable :: m (:) m = this % get_multiplicity () order = m ( 1 ) - 1 end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_knot ( this ) result ( knot ) class ( nurbs_curve ), intent ( in ) :: this real ( rk ), allocatable :: knot (:) if ( allocated ( this % knot )) then knot = this % knot else error stop 'Knot vector is not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine finalize ( this ) class ( nurbs_curve ), intent ( inout ) :: this if ( allocated ( this % Xc )) deallocate ( this % Xc ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) if ( allocated ( this % Wc )) deallocate ( this % Wc ) if ( allocated ( this % Xt )) deallocate ( this % Xt ) if ( allocated ( this % knot )) deallocate ( this % knot ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xc ( this , elemConn , p ) class ( nurbs_curve ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p if ( present ( p )) then elemConn = elemConn_C0 ( this % nc , p ) else elemConn = elemConn_C0 ( this % nc , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xg ( this , elemConn , p ) class ( nurbs_curve ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p if ( present ( p )) then elemConn = elemConn_C0 ( this % ng , p ) else elemConn = elemConn_C0 ( this % ng , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xc ( this , filename ) class ( nurbs_curve ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , nc , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if call this % get_elem_Xc ( elemConn ) nc = size ( this % Xc , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , nc , 'double' if ( size ( this % Xc , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), 0.0_rk , i = 1 , nc ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), this % Xc ( i , 3 ) , i = 1 , nc ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 3 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 2 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 3 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xg ( this , filename ) class ( nurbs_curve ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , ng , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xg )) then error stop 'Geometry points are not set.' end if call this % get_elem_Xg ( elemConn ) ng = size ( this % Xg , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , ng , 'double' if ( size ( this % Xg , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), 0.0_rk , i = 1 , ng ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), this % Xg ( i , 3 ) , i = 1 , ng ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 3 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 2 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 3 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine modify_Xc ( this , X , num , dir ) class ( nurbs_curve ), intent ( inout ) :: this real ( rk ), intent ( in ) :: X integer , intent ( in ) :: num integer , intent ( in ) :: dir if ( allocated ( this % Xc )) then this % Xc ( num , dir ) = X call this % set ( knot = this % knot , Xc = this % Xc , Wc = this % Wc ) else error stop 'Control points are not set.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine modify_Wc ( this , W , num ) class ( nurbs_curve ), intent ( inout ) :: this real ( rk ), intent ( in ) :: W integer , intent ( in ) :: num if ( allocated ( this % Wc )) then this % Wc ( num ) = W call this % set ( knot = this % knot , Xc = this % Xc , Wc = this % Wc ) else error stop 'The Bezier curve is not rational.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_multiplicity ( this ) result ( m ) class ( nurbs_curve ), intent ( in ) :: this integer , allocatable :: m (:) ! check if (. not . allocated ( this % knot )) then error stop 'Knot vector is not set.' else m = compute_multiplicity ( this % knot ) end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_continuity ( this ) result ( c ) class ( nurbs_curve ), intent ( in ) :: this integer , allocatable :: c (:) ! check if (. not . allocated ( this % knot )) then error stop 'Knot vector is not set.' else c = this % order - compute_multiplicity ( this % knot ) end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_nc ( this ) result ( nc ) class ( nurbs_curve ), intent ( in ) :: this integer :: nc nc = sum ( compute_multiplicity ( this % knot )) - this % order - 1 end function !=============================================================================== end module forcad_nurbs_curve","tags":"","loc":"sourcefile/forcad_nurbs_curve.f90.html"},{"title":"nurbs_surface.f90 – ForCAD","text":"This file depends on sourcefile~~nurbs_surface.f90~~EfferentGraph sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code !> This program demonstrates the usage of a NURBS (Non-Uniform Rational B-Spline) surface object to create and finalize a NURBS surface. !> It sets up control points, weights, and knot vectors for all three dimensions, generates the surface, and exports the control points and the surface to VTK files. program example_nurbs_surface use forcad implicit none type ( nurbs_surface ) :: nurbs !! Declare a NURBS surface object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights real ( rk ) :: knot1 ( 6 ), knot2 ( 6 ) !! Arrays for knot vectors in both dimensions !----------------------------------------------------------------------------- ! Setting up the NURBS surface !----------------------------------------------------------------------------- !> Define control points for the NURBS surface Xc = generate_Xc ( 3 , 3 , 1.0_rk ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 ))) Wc = 1.0_rk !> Define knot vectors for both dimensions knot1 = [ 0.0_rk , 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk , 1.0_rk ] knot2 = [ 0.0_rk , 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk , 1.0_rk ] !> Set knot vectors, control points, and weights for the NURBS surface object call nurbs % set ( knot1 , knot2 , Xc , Wc ) !> Export the control points to a VTK file call nurbs % export_Xc ( 'vtk/nurbs_surface_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the NURBS surface !----------------------------------------------------------------------------- !> Generate the NURBS surface with resolutions of 30 in both dimensions call nurbs % create ( 30 , 30 ) !> Export the generated surface to a VTK file call nurbs % export_Xg ( 'vtk/nurbs_surface_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the NURBS surface object call nurbs % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( num_rows , num_cols , peak_height ) result ( control_points ) integer , intent ( in ) :: num_rows , num_cols real ( rk ), intent ( in ) :: peak_height real ( rk ), dimension (:,:), allocatable :: control_points integer :: i , j real ( rk ) :: x_spacing , y_spacing , x_offset , y_offset x_spacing = 1.0_rk / real ( num_cols - 1 ) y_spacing = 1.0_rk / real ( num_rows - 1 ) x_offset = - 0.5_rk y_offset = - 0.5_rk allocate ( control_points ( num_rows * num_cols , 3 )) do i = 1 , num_rows do j = 1 , num_cols control_points (( i - 1 ) * num_cols + j , 1 ) = x_offset + real ( j - 1 ) * x_spacing control_points (( i - 1 ) * num_cols + j , 2 ) = y_offset + real ( i - 1 ) * y_spacing control_points (( i - 1 ) * num_cols + j , 3 ) = & peak_height * exp ( - (( control_points (( i - 1 ) * num_cols + j , 1 ) ** 2 ) & + ( control_points (( i - 1 ) * num_cols + j , 2 ) ** 2 ))) + 0.5_rk * peak_height * 0.2_rk end do end do end function !----------------------------------------------------------------------------- end program example_nurbs_surface","tags":"","loc":"sourcefile/nurbs_surface.f90.html"},{"title":"bezier_volume.f90 – ForCAD","text":"This file depends on sourcefile~~bezier_volume.f90~~EfferentGraph sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code !> This program demonstrates the usage of a Bezier volume object to create, and finalize a Bezier volume. !> It sets up control points and weights, generates the volume, and exports the control points !> and the volume to VTK files at various stages. program example_bezier_volume use forcad , only : rk , bezier_volume implicit none type ( bezier_volume ) :: bezier !! Declare a bezier volume object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights !----------------------------------------------------------------------------- ! Setting up the bezier volume !----------------------------------------------------------------------------- !> Define control points for the Bezier volume Xc = generate_Xc ( 1.0_rk ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 )), source = 1.0_rk ) !> Set control points and weights for the bezier volume object call bezier % set ([ 2 , 2 , 2 ], Xc , Wc ) !> Export initial control points to a VTK file call bezier % export_Xc ( 'vtk/bezier_volume_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the bezier volume !----------------------------------------------------------------------------- !> Generate the Bezier volume with a resolution of 10x10x10 call bezier % create ( 15 , 15 , 15 ) !> Export the generated volume to a VTK file call bezier % export_Xg ( 'vtk/bezier_volume_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the Bezier volume object call bezier % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( L ) result ( control_points ) implicit none real ( rk ), intent ( in ) :: L real ( rk ), dimension (:,:), allocatable :: control_points real ( rk ) :: L2 L2 = L / 2.0_rk allocate ( control_points ( 8 , 3 )) control_points ( 1 ,:) = [ L2 , - L2 , L2 ] control_points ( 2 ,:) = [ L2 , - L2 , - L2 ] control_points ( 3 ,:) = [ - L2 , - L2 , L2 ] control_points ( 4 ,:) = [ - L2 , - L2 , - L2 ] control_points ( 5 ,:) = [ L2 , L2 , L2 ] control_points ( 6 ,:) = [ L2 , L2 , - L2 ] control_points ( 7 ,:) = [ - L2 , L2 , L2 ] control_points ( 8 ,:) = [ - L2 , L2 , - L2 ] end function !----------------------------------------------------------------------------- end program example_bezier_volume","tags":"","loc":"sourcefile/bezier_volume.f90.html"},{"title":"bezier_surface.f90 – ForCAD","text":"This file depends on sourcefile~~bezier_surface.f90~~EfferentGraph sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code !> This program demonstrates the usage of a Bezier surface object to create, and finalize a Bezier surface. !> It sets up control points and weights, generates the surface, and exports the control points !> and the surface to VTK files at various stages. program example_bezier_surface use forcad , only : rk , bezier_surface implicit none type ( bezier_surface ) :: bezier !! Declare a bezier surface object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights !----------------------------------------------------------------------------- ! Setting up the bezier surface !----------------------------------------------------------------------------- !> Define control points for the Bezier surface Xc = generate_Xc ( 10 , 10 , 1.5_rk ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 )), source = 1.0_rk ) !> Set control points and weights for the bezier surface object call bezier % set ([ 10 , 10 ], Xc , Wc ) !> Export initial control points to a VTK file call bezier % export_Xc ( 'vtk/bezier_surface_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the bezier surface !----------------------------------------------------------------------------- !> Generate the Bezier surface with a resolution of 100x100 call bezier % create ( res1 = 30 , res2 = 30 ) !> Export the generated surface to a VTK file call bezier % export_Xg ( 'vtk/bezier_surface_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the Bezier surface object call bezier % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( num_rows , num_cols , peak_height ) result ( control_points ) integer , intent ( in ) :: num_rows , num_cols real ( rk ), intent ( in ) :: peak_height real ( rk ), dimension (:,:), allocatable :: control_points integer :: i , j real ( rk ) :: x_spacing , y_spacing , x_offset , y_offset x_spacing = 1.0_rk / real ( num_cols - 1 ) y_spacing = 1.0_rk / real ( num_rows - 1 ) x_offset = - 0.5_rk y_offset = - 0.5_rk allocate ( control_points ( num_rows * num_cols , 3 )) do i = 1 , num_rows do j = 1 , num_cols control_points (( i - 1 ) * num_cols + j , 1 ) = x_offset + real ( j - 1 ) * x_spacing control_points (( i - 1 ) * num_cols + j , 2 ) = y_offset + real ( i - 1 ) * y_spacing control_points (( i - 1 ) * num_cols + j , 3 ) = & peak_height * exp ( - (( control_points (( i - 1 ) * num_cols + j , 1 ) ** 2 ) & + ( control_points (( i - 1 ) * num_cols + j , 2 ) ** 2 ))) + 0.5_rk * peak_height * 0.2_rk end do end do end function !----------------------------------------------------------------------------- end program example_bezier_surface","tags":"","loc":"sourcefile/bezier_surface.f90.html"},{"title":"forcad_nurbs_volume.f90 – ForCAD","text":"This file depends on sourcefile~~forcad_nurbs_volume.f90~~EfferentGraph sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Files dependent on this one sourcefile~~forcad_nurbs_volume.f90~~AfferentGraph sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code module forcad_nurbs_volume use forcad_utils , only : rk , basis_bspline , elemConn_C0 , kron , ndgrid , compute_multiplicity , compute_knot_vector implicit none private public nurbs_volume !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause type nurbs_volume real ( rk ), allocatable , private :: Xc (:,:) !! control points real ( rk ), allocatable , private :: Xg (:,:) !! geometry points real ( rk ), allocatable , private :: Wc (:) !! weights real ( rk ), allocatable , private :: Xt1 (:) !! parameter values in the first direction real ( rk ), allocatable , private :: Xt2 (:) !! parameter values in the second direction real ( rk ), allocatable , private :: Xt3 (:) !! parameter values in the third direction real ( rk ), allocatable , private :: knot1 (:) !! knot vector real ( rk ), allocatable , private :: knot2 (:) !! knot vector real ( rk ), allocatable , private :: knot3 (:) !! knot vector integer , private :: order ( 3 ) !! degree of the first direction integer , private :: nc ( 3 ) !! number of control points in each direction integer , private :: ng ( 3 ) !! number of geometry points in each direction contains procedure :: set1 !!> Set control points and weights procedure :: set2 !!> Set control points and weights generic :: set => set1 , set2 procedure :: create !!> Generate geometry points procedure :: get_Xc !!> Get control points procedure :: get_Xg !!> Get geometry points procedure :: get_Wc !!> Get weights procedure :: get_Xt !!> Get parameter values procedure :: get_knot !!> Get knot vector procedure :: get_ng !!> Get number of geometry points procedure :: get_order !!> Get order of the Bezier curve procedure :: finalize !!> Finalize the NURBS curve object procedure :: get_elem_Xc !!> Generate connectivity for control points procedure :: get_elem_Xg !!> Generate connectivity for geometry points procedure :: export_Xc !!> Export control points to VTK file procedure :: export_Xg !!> Export geometry points to VTK file procedure :: modify_Xc !!> Modify control points procedure :: modify_Wc !!> Modify weights procedure :: get_multiplicity !!> Get multiplicity of the knot vector procedure :: get_continuity !!> Get continuity of the curve procedure :: get_nc !!> Get number of required control points end type !=============================================================================== contains !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the NURBS curve object. pure subroutine set1 ( this , knot1 , knot2 , knot3 , Xc , Wc ) class ( nurbs_volume ), intent ( inout ) :: this real ( rk ), intent ( in ) :: knot1 (:), knot2 (:), knot3 (:) real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) this % knot1 = knot1 this % knot2 = knot2 this % knot3 = knot3 this % order = this % get_order () this % nc ( 1 ) = this % get_nc ( 1 ) this % nc ( 2 ) = this % get_nc ( 2 ) this % nc ( 3 ) = this % get_nc ( 3 ) this % Xc = Xc if ( present ( Wc )) this % Wc = Wc end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the NURBS curve object. pure subroutine set2 ( this , Xth_dir1 , Xth_dir2 , Xth_dir3 , order , continuity1 , continuity2 , continuity3 , Xc , Wc ) class ( nurbs_volume ), intent ( inout ) :: this real ( rk ), intent ( in ) :: Xth_dir1 (:), Xth_dir2 (:), Xth_dir3 (:) integer , intent ( in ) :: order (:) integer , intent ( in ) :: continuity1 (:), continuity2 (:), continuity3 (:) real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) integer :: nc ( 3 ) this % knot1 = compute_knot_vector ( Xth_dir1 , order ( 1 ), continuity1 ) this % knot2 = compute_knot_vector ( Xth_dir2 , order ( 2 ), continuity2 ) this % knot3 = compute_knot_vector ( Xth_dir3 , order ( 3 ), continuity3 ) this % order ( 1 ) = order ( 1 ) this % order ( 2 ) = order ( 2 ) this % order ( 3 ) = order ( 3 ) this % nc ( 1 ) = this % get_nc ( 1 ) this % nc ( 2 ) = this % get_nc ( 2 ) this % nc ( 3 ) = this % get_nc ( 3 ) this % Xc = Xc if ( present ( Wc )) this % Wc = Wc end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine create ( this , res1 , res2 , res3 , Xt1 , Xt2 , Xt3 ) class ( nurbs_volume ), intent ( inout ) :: this integer , intent ( in ), optional :: res1 , res2 , res3 real ( rk ), intent ( in ), optional :: Xt1 (:), Xt2 (:), Xt3 (:) integer :: i , j real ( rk ), dimension (:), allocatable :: Tgc1 , Tgc2 , Tgc3 , Tgc real ( rk ), dimension (:,:), allocatable :: Xt ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if ! Set parameter values if ( present ( Xt1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) this % Xt1 = Xt1 elseif ( present ( res1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) allocate ( this % Xt1 ( res1 )) this % Xt1 = [( real ( i - 1 , rk ) / real ( res1 - 1 , rk ), i = 1 , res1 )] ! else ! this%Xt1 = this%Xt1 end if ! Set parameter values if ( present ( Xt2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) this % Xt2 = Xt2 elseif ( present ( res2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) allocate ( this % Xt2 ( res2 )) this % Xt2 = [( real ( i - 1 , rk ) / real ( res2 - 1 , rk ), i = 1 , res2 )] ! else ! this%Xt2 = this%Xt2 end if ! Set parameter values if ( present ( Xt3 )) then if ( allocated ( this % Xt3 )) deallocate ( this % Xt3 ) this % Xt3 = Xt3 elseif ( present ( res3 )) then if ( allocated ( this % Xt3 )) deallocate ( this % Xt3 ) allocate ( this % Xt3 ( res3 )) this % Xt3 = [( real ( i - 1 , rk ) / real ( res3 - 1 , rk ), i = 1 , res3 )] ! else ! this%Xt3 = this%Xt3 end if ! Set number of geometry points this % ng ( 1 ) = size ( this % Xt1 , 1 ) this % ng ( 2 ) = size ( this % Xt2 , 1 ) this % ng ( 3 ) = size ( this % Xt3 , 1 ) call ndgrid ( this % Xt1 , this % Xt2 , this % Xt3 , Xt ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) allocate ( this % Xg ( this % ng ( 1 ) * this % ng ( 2 ) * this % ng ( 3 ), size ( this % Xc , 2 ))) if ( allocated ( this % Wc )) then ! NURBS volume do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bspline ( Xt ( i , 1 ), this % knot1 , this % nc ( 1 ), this % order ( 1 )) Tgc2 = basis_bspline ( Xt ( i , 2 ), this % knot2 , this % nc ( 2 ), this % order ( 2 )) Tgc3 = basis_bspline ( Xt ( i , 3 ), this % knot3 , this % nc ( 3 ), this % order ( 3 )) Tgc = kron ( Tgc3 , kron ( Tgc2 , Tgc1 )) Tgc = Tgc * ( this % Wc / ( dot_product ( Tgc , this % Wc ))) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do else do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bspline ( Xt ( i , 1 ), this % knot1 , this % nc ( 1 ), this % order ( 1 )) Tgc2 = basis_bspline ( Xt ( i , 2 ), this % knot2 , this % nc ( 2 ), this % order ( 2 )) Tgc3 = basis_bspline ( Xt ( i , 3 ), this % knot3 , this % nc ( 3 ), this % order ( 3 )) Tgc = kron ( Tgc3 , kron ( Tgc2 , Tgc1 )) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xc ( this ) result ( Xc ) class ( nurbs_volume ), intent ( in ) :: this real ( rk ), allocatable :: Xc (:,:) if ( allocated ( this % Xc )) then Xc = this % Xc else error stop 'Control points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xg ( this ) result ( Xg ) class ( nurbs_volume ), intent ( in ) :: this real ( rk ), allocatable :: Xg (:,:) if ( allocated ( this % Xg )) then Xg = this % Xg else error stop 'Geometry points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Wc ( this ) result ( Wc ) class ( nurbs_volume ), intent ( in ) :: this real ( rk ), allocatable :: Wc (:) if ( allocated ( this % Wc )) then Wc = this % Wc else error stop 'The Bezier curve is not rational.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xt ( this , dir ) result ( Xt ) class ( nurbs_volume ), intent ( in ) :: this integer , intent ( in ) :: dir real ( rk ), allocatable :: Xt (:) if ( dir == 1 ) then if ( allocated ( this % Xt1 )) then Xt = this % Xt1 else error stop 'Parameter values are not set.' end if elseif ( dir == 2 ) then if ( allocated ( this % Xt2 )) then Xt = this % Xt2 else error stop 'Parameter values are not set.' end if elseif ( dir == 3 ) then if ( allocated ( this % Xt3 )) then Xt = this % Xt3 else error stop 'Parameter values are not set.' end if else error stop 'Invalid direction for parameter values.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_ng ( this ) result ( ng ) class ( nurbs_volume ), intent ( in ) :: this integer :: ng ( 3 ) ng = this % ng end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_order ( this ) result ( order ) class ( nurbs_volume ), intent ( in ) :: this integer :: order ( 3 ) integer , allocatable :: m1 (:), m2 (:), m3 (:) m1 = this % get_multiplicity ( 1 ) m2 = this % get_multiplicity ( 2 ) m3 = this % get_multiplicity ( 3 ) order ( 1 ) = m1 ( 1 ) - 1 order ( 2 ) = m2 ( 1 ) - 1 order ( 3 ) = m3 ( 1 ) - 1 end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_knot ( this , dir ) result ( knot ) class ( nurbs_volume ), intent ( in ) :: this integer , intent ( in ) :: dir real ( rk ), allocatable :: knot (:) if ( dir == 1 ) then if ( allocated ( this % knot1 )) then knot = this % knot1 else error stop 'Knot vector is not set.' end if elseif ( dir == 2 ) then if ( allocated ( this % knot2 )) then knot = this % knot2 else error stop 'Knot vector is not set.' end if elseif ( dir == 3 ) then if ( allocated ( this % knot3 )) then knot = this % knot3 else error stop 'Knot vector is not set.' end if else error stop 'Invalid direction for knot vector.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine finalize ( this ) class ( nurbs_volume ), intent ( inout ) :: this if ( allocated ( this % Xc )) deallocate ( this % Xc ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) if ( allocated ( this % Wc )) deallocate ( this % Wc ) if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) if ( allocated ( this % Xt3 )) deallocate ( this % Xt3 ) if ( allocated ( this % knot1 )) deallocate ( this % knot1 ) if ( allocated ( this % knot2 )) deallocate ( this % knot2 ) if ( allocated ( this % knot3 )) deallocate ( this % knot3 ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xc ( this , elemConn , p ) class ( nurbs_volume ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p (:) if ( present ( p )) then elemConn = elemConn_C0 ( this % nc ( 1 ), this % nc ( 2 ), this % nc ( 3 ), p ( 1 ), p ( 2 ), p ( 3 )) else elemConn = elemConn_C0 ( this % nc ( 1 ), this % nc ( 2 ), this % nc ( 3 ), 1 , 1 , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xg ( this , elemConn , p ) class ( nurbs_volume ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p (:) if ( present ( p )) then elemConn = elemConn_C0 ( this % ng ( 1 ), this % ng ( 2 ), this % ng ( 3 ), p ( 1 ), p ( 2 ), p ( 3 )) else elemConn = elemConn_C0 ( this % ng ( 1 ), this % ng ( 2 ), this % ng ( 3 ), 1 , 1 , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xc ( this , filename ) class ( nurbs_volume ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , nc , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if call this % get_elem_Xc ( elemConn ) nc = size ( this % Xc , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , nc , 'double' if ( size ( this % Xc , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), 0.0_rk , i = 1 , nc ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), this % Xc ( i , 3 ) , i = 1 , nc ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 9 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 8 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , elemConn ( i , 4 ) - 1 , elemConn ( i , 3 ) - 1 ,& elemConn ( i , 5 ) - 1 , elemConn ( i , 6 ) - 1 , elemConn ( i , 8 ) - 1 , elemConn ( i , 7 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 12 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xg ( this , filename ) class ( nurbs_volume ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , ng , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xg )) then error stop 'Geometry points are not set.' end if call this % get_elem_Xg ( elemConn ) ng = size ( this % Xg , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , ng , 'double' if ( size ( this % Xg , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), 0.0_rk , i = 1 , ng ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), this % Xg ( i , 3 ) , i = 1 , ng ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 9 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 8 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , elemConn ( i , 4 ) - 1 , elemConn ( i , 3 ) - 1 ,& elemConn ( i , 5 ) - 1 , elemConn ( i , 6 ) - 1 , elemConn ( i , 8 ) - 1 , elemConn ( i , 7 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 12 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine modify_Xc ( this , X , num , dir ) class ( nurbs_volume ), intent ( inout ) :: this real ( rk ), intent ( in ) :: X integer , intent ( in ) :: num integer , intent ( in ) :: dir if ( allocated ( this % Xc )) then this % Xc ( num , dir ) = X call this % set ( knot1 = this % knot1 , knot2 = this % knot2 , knot3 = this % knot3 , Xc = this % Xc , Wc = this % Wc ) else error stop 'Control points are not set.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine modify_Wc ( this , W , num ) class ( nurbs_volume ), intent ( inout ) :: this real ( rk ), intent ( in ) :: W integer , intent ( in ) :: num if ( allocated ( this % Wc )) then this % Wc ( num ) = W call this % set ( knot1 = this % knot1 , knot2 = this % knot2 , knot3 = this % knot3 , Xc = this % Xc , Wc = this % Wc ) else error stop 'The NURBS surface is not rational.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_multiplicity ( this , dir ) result ( m ) class ( nurbs_volume ), intent ( in ) :: this integer , intent ( in ) :: dir integer , allocatable :: m (:) if ( dir == 1 ) then ! check if (. not . allocated ( this % knot1 )) then error stop 'Knot vector is not set.' else m = compute_multiplicity ( this % knot1 ) end if elseif ( dir == 2 ) then ! check if (. not . allocated ( this % knot2 )) then error stop 'Knot vector is not set.' else m = compute_multiplicity ( this % knot2 ) end if elseif ( dir == 3 ) then ! check if (. not . allocated ( this % knot3 )) then error stop 'Knot vector is not set.' else m = compute_multiplicity ( this % knot3 ) end if else error stop 'Invalid direction.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_continuity ( this , dir ) result ( c ) class ( nurbs_volume ), intent ( in ) :: this integer , intent ( in ) :: dir integer , allocatable :: c (:) if ( dir == 1 ) then ! check if (. not . allocated ( this % knot1 )) then error stop 'Knot vector is not set.' else c = this % order ( 1 ) - compute_multiplicity ( this % knot1 ) end if elseif ( dir == 2 ) then ! check if (. not . allocated ( this % knot2 )) then error stop 'Knot vector is not set.' else c = this % order ( 2 ) - compute_multiplicity ( this % knot2 ) end if elseif ( dir == 3 ) then ! check if (. not . allocated ( this % knot3 )) then error stop 'Knot vector is not set.' else c = this % order ( 3 ) - compute_multiplicity ( this % knot3 ) end if else error stop 'Invalid direction.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_nc ( this , dir ) result ( nc ) class ( nurbs_volume ), intent ( in ) :: this integer , intent ( in ) :: dir integer :: nc if ( dir == 1 ) then ! check if (. not . allocated ( this % knot1 )) then error stop 'Knot vector is not set.' else nc = sum ( compute_multiplicity ( this % knot1 )) - this % order ( 1 ) - 1 end if elseif ( dir == 2 ) then ! check if (. not . allocated ( this % knot2 )) then error stop 'Knot vector is not set.' else nc = sum ( compute_multiplicity ( this % knot2 )) - this % order ( 2 ) - 1 end if elseif ( dir == 3 ) then ! check if (. not . allocated ( this % knot3 )) then error stop 'Knot vector is not set.' else nc = sum ( compute_multiplicity ( this % knot3 )) - this % order ( 3 ) - 1 end if else error stop 'Invalid direction.' end if end function !=============================================================================== end module forcad_nurbs_volume","tags":"","loc":"sourcefile/forcad_nurbs_volume.f90.html"},{"title":"nurbs_volume.f90 – ForCAD","text":"This file depends on sourcefile~~nurbs_volume.f90~~EfferentGraph sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code !> This program demonstrates the usage of a NURBS (Non-Uniform Rational B-Spline) volume object to create and finalize a NURBS volume. !> It sets up control points, weights, and knot vectors for all three dimensions, generates the volume, and exports the control points and the volume to VTK files. program example_nurbs_volume use forcad , only : rk , nurbs_volume implicit none type ( nurbs_volume ) :: nurbs !! Declare a NURBS volume object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights real ( rk ) :: knot1 ( 4 ), knot2 ( 4 ), knot3 ( 4 ) !! Arrays for knot vectors in all three dimensions !----------------------------------------------------------------------------- ! Setting up the NURBS volume !----------------------------------------------------------------------------- !> Define the control points for the NURBS volume Xc = generate_Xc ( 5.0_rk ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 )), source = 1.0_rk ) !> Define knot vectors for all three dimensions knot1 = [ 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk ] knot2 = [ 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk ] knot3 = [ 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk ] !> Set knot vectors, control points, and weights for the NURBS volume object call nurbs % set ( knot1 , knot2 , knot3 , Xc , Wc ) !> Export the control points to a VTK file call nurbs % export_Xc ( 'vtk/nurbs_volume_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the NURBS volume !----------------------------------------------------------------------------- !> Generate the NURBS volume with resolutions of 15, 15, and 15 in the three dimensions call nurbs % create ( 15 , 15 , 15 ) !> Export the generated volume to a VTK file call nurbs % export_Xg ( 'vtk/nurbs_volume_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the NURBS volume object call nurbs % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( L ) result ( control_points ) implicit none real ( rk ), intent ( in ) :: L real ( rk ), dimension (:,:), allocatable :: control_points real ( rk ) :: L2 L2 = L / 2.0_rk allocate ( control_points ( 8 , 3 )) control_points ( 1 ,:) = [ L2 , - L2 , L2 ] control_points ( 2 ,:) = [ L2 , - L2 , - L2 ] control_points ( 3 ,:) = [ - L2 , - L2 , L2 ] control_points ( 4 ,:) = [ - L2 , - L2 , - L2 ] control_points ( 5 ,:) = [ L2 , L2 , L2 ] control_points ( 6 ,:) = [ L2 , L2 , - L2 ] control_points ( 7 ,:) = [ - L2 , L2 , L2 ] control_points ( 8 ,:) = [ - L2 , L2 , - L2 ] end function !----------------------------------------------------------------------------- end program example_nurbs_volume","tags":"","loc":"sourcefile/nurbs_volume.f90.html"},{"title":"forcad_bezier_volume.f90 – ForCAD","text":"This file depends on sourcefile~~forcad_bezier_volume.f90~~EfferentGraph sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Files dependent on this one sourcefile~~forcad_bezier_volume.f90~~AfferentGraph sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code module forcad_bezier_volume use forcad_utils , only : rk , basis_bernstein , elemConn_C0 , kron , ndgrid implicit none private public bezier_volume !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause type bezier_volume real ( rk ), allocatable , private :: Xc (:,:) !! control points real ( rk ), allocatable , private :: Xg (:,:) !! geometry points real ( rk ), allocatable , private :: Wc (:) !! weights real ( rk ), allocatable , private :: Xt1 (:) !! parameter values in the first direction real ( rk ), allocatable , private :: Xt2 (:) !! parameter values in the second direction real ( rk ), allocatable , private :: Xt3 (:) !! parameter values in the third direction integer , private :: nc ( 3 ) !! number of control points in each direction integer , private :: ng ( 3 ) !! number of geometry points in each direction contains procedure :: set !!> Set control points and weights procedure :: create !!> Generate geometry points procedure :: get_Xc !!> Get control points procedure :: get_Xg !!> Get geometry points procedure :: get_Wc !!> Get weights procedure :: get_nc !!> Get number of control points procedure :: get_ng !!> Get number of geometry points procedure :: get_order !!> Get order of the Bezier surface procedure :: finalize !!> Finalize the Bezier volume object procedure :: get_elem_Xc !!> Generate connectivity for control points procedure :: get_elem_Xg !!> Generate connectivity for geometry points procedure :: export_Xc !!> Export control points to VTK file procedure :: export_Xg !!> Export geometry points to VTK file procedure :: modify_Xc !!> Modify control points procedure :: modify_Wc !!> Modify weights end type bezier_volume !=============================================================================== contains !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the Bezier curve object. pure subroutine set ( this , nc , Xc , Wc ) class ( bezier_volume ), intent ( inout ) :: this integer , intent ( in ) :: nc (:) real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) this % Xc = Xc this % nc = nc if ( present ( Wc )) this % Wc = Wc end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine create ( this , res1 , res2 , res3 , Xt1 , Xt2 , Xt3 ) class ( bezier_volume ), intent ( inout ) :: this real ( rk ), intent ( in ), optional :: Xt1 (:), Xt2 (:), Xt3 (:) integer :: i , j real ( rk ), dimension (:), allocatable :: Tgc1 , Tgc2 , Tgc3 , Tgc real ( rk ), dimension (:,:), allocatable :: Xt integer , intent ( in ), optional :: res1 , res2 , res3 ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if ! Set parameter values if ( present ( Xt1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) this % Xt1 = Xt1 elseif ( present ( res1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) allocate ( this % Xt1 ( res1 )) this % Xt1 = [( real ( i - 1 , rk ) / real ( res1 - 1 , rk ), i = 1 , res1 )] ! else ! this%Xt1 = this%Xt1 end if ! Set parameter values if ( present ( Xt2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) this % Xt2 = Xt2 elseif ( present ( res2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) allocate ( this % Xt2 ( res2 )) this % Xt2 = [( real ( i - 1 , rk ) / real ( res2 - 1 , rk ), i = 1 , res2 )] ! else ! this%Xt2 = this%Xt2 end if ! Set parameter values if ( present ( Xt3 )) then if ( allocated ( this % Xt3 )) deallocate ( this % Xt3 ) this % Xt3 = Xt3 elseif ( present ( res3 )) then if ( allocated ( this % Xt3 )) deallocate ( this % Xt3 ) allocate ( this % Xt3 ( res3 )) this % Xt3 = [( real ( i - 1 , rk ) / real ( res3 - 1 , rk ), i = 1 , res3 )] ! else ! this%Xt3 = this%Xt3 end if ! Set number of geometry points this % ng ( 1 ) = size ( this % Xt1 , 1 ) this % ng ( 2 ) = size ( this % Xt2 , 1 ) this % ng ( 3 ) = size ( this % Xt3 , 1 ) call ndgrid ( this % Xt1 , this % Xt2 , this % Xt3 , Xt ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) allocate ( this % Xg ( this % ng ( 1 ) * this % ng ( 2 ) * this % ng ( 3 ), size ( this % Xc , 2 ))) if ( allocated ( this % Wc )) then do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bernstein ( Xt ( i , 1 ), this % nc ( 1 )) Tgc2 = basis_bernstein ( Xt ( i , 2 ), this % nc ( 2 )) Tgc3 = basis_bernstein ( Xt ( i , 3 ), this % nc ( 3 )) Tgc = kron ( Tgc3 , kron ( Tgc2 , Tgc1 )) Tgc = Tgc * ( this % Wc / ( dot_product ( Tgc , this % Wc ))) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do else do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bernstein ( Xt ( i , 1 ), this % nc ( 1 )) Tgc2 = basis_bernstein ( Xt ( i , 2 ), this % nc ( 2 )) Tgc3 = basis_bernstein ( Xt ( i , 3 ), this % nc ( 3 )) Tgc = kron ( Tgc3 , kron ( Tgc2 , Tgc1 )) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xc ( this ) result ( Xc ) class ( bezier_volume ), intent ( in ) :: this real ( rk ), allocatable :: Xc (:,:) if ( allocated ( this % Xc )) then Xc = this % Xc else error stop 'Control points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xg ( this ) result ( Xg ) class ( bezier_volume ), intent ( in ) :: this real ( rk ), allocatable :: Xg (:,:) if ( allocated ( this % Xg )) then Xg = this % Xg else error stop 'Geometry points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Wc ( this ) result ( Wc ) class ( bezier_volume ), intent ( in ) :: this real ( rk ), allocatable :: Wc (:) if ( allocated ( this % Wc )) then Wc = this % Wc else error stop 'The Bezier curve is not rational.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xt ( this , dir ) result ( Xt ) class ( bezier_volume ), intent ( in ) :: this integer , intent ( in ) :: dir real ( rk ), allocatable :: Xt (:) if ( dir == 1 ) then if ( allocated ( this % Xt1 )) then Xt = this % Xt1 else error stop 'Parameter values are not set.' end if elseif ( dir == 2 ) then if ( allocated ( this % Xt2 )) then Xt = this % Xt2 else error stop 'Parameter values are not set.' end if elseif ( dir == 3 ) then if ( allocated ( this % Xt3 )) then Xt = this % Xt3 else error stop 'Parameter values are not set.' end if else error stop 'Invalid direction for parameter values.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_nc ( this ) result ( nc ) class ( bezier_volume ), intent ( in ) :: this integer :: nc ( 3 ) nc = this % nc end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_ng ( this ) result ( ng ) class ( bezier_volume ), intent ( in ) :: this integer :: ng ( 3 ) ng = this % ng end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_order ( this ) result ( order ) class ( bezier_volume ), intent ( in ) :: this integer :: order ( 3 ) order = this % nc - 1 end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine finalize ( this ) class ( bezier_volume ), intent ( inout ) :: this if ( allocated ( this % Xc )) deallocate ( this % Xc ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) if ( allocated ( this % Wc )) deallocate ( this % Wc ) if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) if ( allocated ( this % Xt3 )) deallocate ( this % Xt3 ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xc ( this , elemConn , p ) class ( bezier_volume ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p (:) if ( present ( p )) then elemConn = elemConn_C0 ( this % nc ( 1 ), this % nc ( 2 ), this % nc ( 3 ), p ( 1 ), p ( 2 ), p ( 3 )) else elemConn = elemConn_C0 ( this % nc ( 1 ), this % nc ( 2 ), this % nc ( 3 ), 1 , 1 , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xg ( this , elemConn , p ) class ( bezier_volume ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p (:) if ( present ( p )) then elemConn = elemConn_C0 ( this % ng ( 1 ), this % ng ( 2 ), this % ng ( 3 ), p ( 1 ), p ( 2 ), p ( 3 )) else elemConn = elemConn_C0 ( this % ng ( 1 ), this % ng ( 2 ), this % ng ( 3 ), 1 , 1 , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xc ( this , filename ) class ( bezier_volume ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , nc , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if call this % get_elem_Xc ( elemConn ) nc = size ( this % Xc , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , nc , 'double' if ( size ( this % Xc , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), 0.0_rk , i = 1 , nc ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), this % Xc ( i , 3 ) , i = 1 , nc ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 9 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 8 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , elemConn ( i , 4 ) - 1 , elemConn ( i , 3 ) - 1 ,& elemConn ( i , 5 ) - 1 , elemConn ( i , 6 ) - 1 , elemConn ( i , 8 ) - 1 , elemConn ( i , 7 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 12 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xg ( this , filename ) class ( bezier_volume ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , ng , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xg )) then error stop 'Geometry points are not set.' end if call this % get_elem_Xg ( elemConn ) ng = size ( this % Xg , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , ng , 'double' if ( size ( this % Xg , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), 0.0_rk , i = 1 , ng ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), this % Xg ( i , 3 ) , i = 1 , ng ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 9 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 8 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , elemConn ( i , 4 ) - 1 , elemConn ( i , 3 ) - 1 ,& elemConn ( i , 5 ) - 1 , elemConn ( i , 6 ) - 1 , elemConn ( i , 8 ) - 1 , elemConn ( i , 7 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 12 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine modify_Xc ( this , X , num , dir ) class ( bezier_volume ), intent ( inout ) :: this real ( rk ), intent ( in ) :: X integer , intent ( in ) :: num integer , intent ( in ) :: dir if ( allocated ( this % Xc )) then this % Xc ( num , dir ) = X call this % set ( nc = this % nc , Xc = this % Xc , Wc = this % Wc ) else error stop 'Control points are not set.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine modify_Wc ( this , W , num ) class ( bezier_volume ), intent ( inout ) :: this real ( rk ), intent ( in ) :: W integer , intent ( in ) :: num if ( allocated ( this % Wc )) then this % Wc ( num ) = W call this % set ( nc = this % nc , Xc = this % Xc , Wc = this % Wc ) else error stop 'The Bezier curve is not rational.' end if end subroutine !=============================================================================== end module forcad_bezier_volume","tags":"","loc":"sourcefile/forcad_bezier_volume.f90.html"},{"title":"forcad.f90 – ForCAD","text":"This file depends on sourcefile~~forcad.f90~~EfferentGraph sourcefile~forcad.f90 forcad.f90 sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Files dependent on this one sourcefile~~forcad.f90~~AfferentGraph sourcefile~forcad.f90 forcad.f90 sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code module forcad use forcad_utils use forcad_bezier_curve use forcad_bezier_surface use forcad_bezier_volume use forcad_nurbs_curve use forcad_nurbs_surface use forcad_nurbs_volume private public rk ,& bezier_curve , bezier_surface , bezier_volume ,& nurbs_curve , nurbs_surface , nurbs_volume end module forcad","tags":"","loc":"sourcefile/forcad.f90.html"},{"title":"forcad_bezier_curve.f90 – ForCAD","text":"This file depends on sourcefile~~forcad_bezier_curve.f90~~EfferentGraph sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Files dependent on this one sourcefile~~forcad_bezier_curve.f90~~AfferentGraph sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code module forcad_bezier_curve use forcad_utils , only : rk , basis_bernstein , elemConn_C0 implicit none private public bezier_curve !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause type bezier_curve real ( rk ), allocatable , private :: Xc (:,:) !! Control points real ( rk ), allocatable , private :: Xg (:,:) !! Geometry points real ( rk ), allocatable , private :: Wc (:) !! Weights real ( rk ), allocatable , private :: Xt (:) !! Parameter values integer , private :: nc !! Number of control points integer , private :: ng !! Number of geometry points contains procedure :: set !!> Set control points and weights procedure :: create !!> Generate geometry points procedure :: get_Xc !!> Get control points procedure :: get_Xg !!> Get geometry points procedure :: get_Wc !!> Get weights procedure :: get_Xt !!> Get parameter values procedure :: get_nc !!> Get number of control points procedure :: get_ng !!> Get number of geometry points procedure :: get_order !!> Get order of the Bezier curve procedure :: finalize !!> Finalize the Bezier curve object procedure :: get_elem_Xc !!> Generate connectivity for control points procedure :: get_elem_Xg !!> Generate connectivity for geometry points procedure :: export_Xc !!> Export control points to VTK file procedure :: export_Xg !!> Export geometry points to VTK file procedure :: modify_Xc !!> Modify control points procedure :: modify_Wc !!> Modify weights procedure :: elevate_degree !!> Elevate the degree of the Bezier curve end type !=============================================================================== contains !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the Bezier curve object. pure subroutine set ( this , Xc , Wc ) class ( bezier_curve ), intent ( inout ) :: this real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) this % Xc = Xc this % nc = size ( this % Xc , 1 ) if ( present ( Wc )) then if ( size ( Wc ) /= this % nc ) then error stop 'Number of weights does not match the number of control points.' else this % Wc = Wc end if end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Generate geometry points of the Bezier curve. pure subroutine create ( this , res , Xt ) class ( bezier_curve ), intent ( inout ) :: this integer , intent ( in ), optional :: res real ( rk ), intent ( in ), optional :: Xt (:) real ( rk ), allocatable :: Tgc (:) integer :: i , j ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if ! Set parameter values if ( present ( Xt )) then if ( allocated ( this % Xt )) deallocate ( this % Xt ) this % Xt = Xt elseif ( present ( res )) then if ( allocated ( this % Xt )) deallocate ( this % Xt ) allocate ( this % Xt ( res )) this % Xt = [( real ( i - 1 , rk ) / real ( res - 1 , rk ), i = 1 , res )] ! else ! this%Xt = this%Xt end if ! Set number of geometry points this % ng = size ( this % Xt , 1 ) ! Allocate memory for geometry points if ( allocated ( this % Xg )) deallocate ( this % Xg ) allocate ( this % Xg ( this % ng , size ( this % Xc , 2 ))) ! Compute geometry points if ( allocated ( this % Wc )) then ! Rational Bezier curve do i = 1 , size ( this % Xt , 1 ) Tgc = basis_bernstein ( this % Xt ( i ), this % nc ) Tgc = Tgc * ( this % Wc / ( dot_product ( Tgc , this % Wc ))) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do else ! Non-rational Bezier curve do i = 1 , size ( this % Xt , 1 ) Tgc = basis_bernstein ( this % Xt ( i ), this % nc ) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xc ( this ) result ( Xc ) class ( bezier_curve ), intent ( in ) :: this real ( rk ), allocatable :: Xc (:,:) if ( allocated ( this % Xc )) then Xc = this % Xc else error stop 'Control points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xg ( this ) result ( Xg ) class ( bezier_curve ), intent ( in ) :: this real ( rk ), allocatable :: Xg (:,:) if ( allocated ( this % Xg )) then Xg = this % Xg else error stop 'Geometry points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Wc ( this ) result ( Wc ) class ( bezier_curve ), intent ( in ) :: this real ( rk ), allocatable :: Wc (:) if ( allocated ( this % Wc )) then Wc = this % Wc else error stop 'The Bezier curve is not rational.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xt ( this ) result ( Xt ) class ( bezier_curve ), intent ( in ) :: this real ( rk ), allocatable :: Xt (:) if ( allocated ( this % Xt )) then Xt = this % Xt else error stop 'Parameter values are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_nc ( this ) result ( nc ) class ( bezier_curve ), intent ( in ) :: this integer :: nc nc = this % nc end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_ng ( this ) result ( ng ) class ( bezier_curve ), intent ( in ) :: this integer :: ng ng = this % ng end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_order ( this ) result ( order ) class ( bezier_curve ), intent ( in ) :: this integer :: order order = this % nc - 1 end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Finalize the Bezier curve object by deallocating memory. pure subroutine finalize ( this ) class ( bezier_curve ), intent ( inout ) :: this if ( allocated ( this % Xc )) deallocate ( this % Xc ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) if ( allocated ( this % Wc )) deallocate ( this % Wc ) if ( allocated ( this % Xt )) deallocate ( this % Xt ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Generate connectivity for control points. pure subroutine get_elem_Xc ( this , elemConn , p ) class ( bezier_curve ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p if ( present ( p )) then elemConn = elemConn_C0 ( this % nc , p ) else elemConn = elemConn_C0 ( this % nc , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Generate connectivity for geometry points. pure subroutine get_elem_Xg ( this , elemConn , p ) class ( bezier_curve ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p if ( present ( p )) then elemConn = elemConn_C0 ( this % ng , p ) else elemConn = elemConn_C0 ( this % ng , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Export control points to a VTK file. impure subroutine export_Xc ( this , filename ) class ( bezier_curve ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , nc , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if call this % get_elem_Xc ( elemConn ) nc = size ( this % Xc , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , nc , 'double' if ( size ( this % Xc , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), 0.0_rk , i = 1 , nc ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), this % Xc ( i , 3 ) , i = 1 , nc ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 3 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 2 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 3 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Export geometry points to a VTK file. impure subroutine export_Xg ( this , filename ) class ( bezier_curve ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , ng , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xg )) then error stop 'Geometry points are not set.' end if call this % get_elem_Xg ( elemConn ) ng = size ( this % Xg , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , ng , 'double' if ( size ( this % Xg , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), 0.0_rk , i = 1 , ng ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), this % Xg ( i , 3 ) , i = 1 , ng ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 3 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 2 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 3 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Modify coordinate of a control point given its index and direction. pure subroutine modify_Xc ( this , X , num , dir ) class ( bezier_curve ), intent ( inout ) :: this real ( rk ), intent ( in ) :: X integer , intent ( in ) :: num integer , intent ( in ) :: dir if ( allocated ( this % Xc )) then this % Xc ( num , dir ) = X call this % set ( Xc = this % Xc , Wc = this % Wc ) else error stop 'Control points are not set.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Modify weight of a control point given its index. pure subroutine modify_Wc ( this , W , num ) class ( bezier_curve ), intent ( inout ) :: this real ( rk ), intent ( in ) :: W integer , intent ( in ) :: num if ( allocated ( this % Wc )) then this % Wc ( num ) = W call this % set ( Xc = this % Xc , Wc = this % Wc ) else error stop 'The Bezier curve is not rational.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Elevate the degree of the Bezier curve by one. pure subroutine elevate_degree ( this ) class ( bezier_curve ), intent ( inout ) :: this integer :: nc_new , j , i real ( rk ), allocatable :: Xc_new (:,:) real ( rk ), allocatable :: Wc_new (:) ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if if ( allocated ( this % Wc )) then ! Rational Bezier curve ! Calculate the new number of control points nc_new = this % nc + 1 allocate ( Xc_new ( nc_new , size ( this % Xc , 2 ))) allocate ( Wc_new ( nc_new )) ! Compute new control points Xc_new ( 1 ,:) = this % Xc ( 1 ,:) * this % Wc ( 1 ) Wc_new ( 1 ) = this % Wc ( 1 ) Xc_new ( nc_new ,:) = this % Xc ( this % nc ,:) * this % Wc ( this % nc ) Wc_new ( nc_new ) = this % Wc ( this % nc ) do concurrent ( j = 2 : this % nc ) do i = 1 , size ( this % Xc , 2 ) Xc_new ( j , i ) = ( j - 1 ) / real ( nc_new - 1 , rk ) * this % Xc ( j - 1 , i ) * this % Wc ( j - 1 ) + & ( 1 - ( j - 1 ) / real ( nc_new - 1 , rk )) * this % Xc ( j , i ) * this % Wc ( j ) end do Wc_new ( j ) = ( j - 1 ) / real ( nc_new - 1 , rk ) * this % Wc ( j - 1 ) + & ( 1 - ( j - 1 ) / real ( nc_new - 1 , rk )) * this % Wc ( j ) end do ! Normalize the new control points do concurrent ( i = 1 : size ( this % Xc , 2 )) Xc_new (:, i ) = Xc_new (:, i ) / Wc_new (:) end do ! Update geometry points deallocate ( this % Xc , this % Wc ) call this % set ( Xc = Xc_new , Wc = Wc_new ) call this % create ( Xt = this % Xt ) else ! Non-rational Bezier curve ! Calculate the new number of control points nc_new = this % nc + 1 allocate ( Xc_new ( nc_new , size ( this % Xc , 2 ))) ! Compute new control points Xc_new ( 1 ,:) = this % Xc ( 1 ,:) Xc_new ( nc_new ,:) = this % Xc ( this % nc ,:) do concurrent ( j = 2 : this % nc ) do i = 1 , size ( this % Xc , 2 ) Xc_new ( j , i ) = ( j - 1 ) / real ( nc_new - 1 , rk ) * this % Xc ( j - 1 , i ) + & ( 1 - ( j - 1 ) / real ( nc_new - 1 , rk )) * this % Xc ( j , i ) end do end do ! Update geometry points call this % set ( Xc = Xc_new ) call this % create ( Xt = this % Xt ) end if end subroutine !=============================================================================== end module forcad_bezier_curve","tags":"","loc":"sourcefile/forcad_bezier_curve.f90.html"},{"title":"forcad_utils.f90 – ForCAD","text":"Files dependent on this one sourcefile~~forcad_utils.f90~~AfferentGraph sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~forcad.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code module forcad_utils implicit none private public :: rk , basis_bernstein , basis_bspline , elemConn_C0 , kron , ndgrid , compute_multiplicity , compute_knot_vector integer , parameter :: rk = kind ( 1.0d0 ) !=============================================================================== interface elemConn_C0 module procedure cmp_elemConn_C0_L module procedure cmp_elemConn_C0_S module procedure cmp_elemConn_C0_V end interface !=============================================================================== !=============================================================================== interface ndgrid module procedure ndgrid2 module procedure ndgrid3 end interface !=============================================================================== contains !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function basis_bspline ( Xt , knot , nc , order ) result ( B ) integer , intent ( in ) :: order real ( rk ), intent ( in ) :: knot (:) integer , intent ( in ) :: nc real ( rk ), intent ( in ) :: Xt real ( rk ) :: temp , Xth_i , Xth_i1 , Xth_ip , Xth_ip1 real ( rk ), allocatable :: Nt (:,:) integer :: i , p real ( rk ), allocatable :: B (:) temp = abs ( Xt - knot ( size ( knot ))) allocate ( Nt ( nc , 0 : order ), source = 0.0_rk ) do p = 0 , order do i = 1 , nc Xth_i = knot ( i ) Xth_i1 = knot ( i + 1 ) Xth_ip = knot ( i + p ) Xth_ip1 = knot ( i + p + 1 ) if ( temp /= tiny ( 0.0_rk ) . and . Xt >= Xth_i . and . Xt <= Xth_i1 ) Nt ( i , 0 ) = 1.0_rk if ( Xth_ip /= Xth_i ) Nt ( i , p ) = ( Xt - Xth_i ) / ( Xth_ip - Xth_i ) * Nt ( i , p - 1 ) if ( Xth_ip1 /= Xth_i1 ) Nt ( i , p ) = Nt ( i , p ) + ( Xth_ip1 - Xt ) / ( Xth_ip1 - Xth_i1 ) * Nt ( i + 1 , p - 1 ) end do end do B = Nt (:, order ) end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function basis_bernstein ( Xt , nc ) result ( B ) real ( rk ), intent ( in ) :: Xt integer , intent ( in ) :: nc real ( rk ), allocatable :: B (:) integer :: p , order order = nc - 1 allocate ( B ( nc ), source = 0.0_rk ) do concurrent ( p = 0 : order ) B ( p + 1 ) = gamma ( real ( nc , kind = rk )) / ( gamma ( real ( p + 1 , kind = rk )) * gamma ( real ( nc - p , kind = rk ))) if ( Xt == 0.0_rk . and . p == 0 ) then B ( p + 1 ) = B ( p + 1 ) * ( 1.0_rk - Xt ) ** ( order - p ) else if ( Xt == 0.0_rk . and . order - p == 0 ) then B ( p + 1 ) = B ( p + 1 ) * ( Xt ** p ) else B ( p + 1 ) = B ( p + 1 ) * ( Xt ** p ) * ( 1.0_rk - Xt ) ** ( order - p ) end if end do end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function kron ( u , v ) result ( w ) real ( rk ), dimension (:), intent ( in ), contiguous :: u , v real ( rk ), dimension ( size ( u ) * size ( v )) :: w integer :: i , j , m , n m = size ( u ) n = size ( v ) do i = 1 , m do j = 1 , n w (( i - 1 ) * n + j ) = u ( i ) * v ( j ) end do end do end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine ndgrid2 ( X_dir1 , X_dir2 , Xt ) real ( rk ), dimension (:), intent ( in ), contiguous :: X_dir1 , X_dir2 real ( rk ), dimension (:,:), allocatable , intent ( out ) :: Xt integer :: s1 , s2 , i , j , n s1 = size ( X_dir1 ) s2 = size ( X_dir2 ) allocate ( Xt ( s1 * s2 , 2 )) n = 0 do j = 1 , s2 do i = 1 , s1 n = n + 1 Xt ( n , 1 ) = X_dir1 ( i ) Xt ( n , 2 ) = X_dir2 ( j ) end do end do end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine ndgrid3 ( X_dir1 , X_dir2 , X_dir3 , Xt ) real ( rk ), dimension (:), intent ( in ), contiguous :: X_dir1 , X_dir2 , X_dir3 real ( rk ), dimension (:,:), allocatable , intent ( out ) :: Xt integer :: s1 , s2 , s3 , i , j , k , n s1 = size ( X_dir1 ) s2 = size ( X_dir2 ) s3 = size ( X_dir3 ) allocate ( Xt ( s1 * s2 * s3 , 3 )) n = 0 do k = 1 , s3 do j = 1 , s2 do i = 1 , s1 n = n + 1 Xt ( n , 1 ) = X_dir1 ( i ) Xt ( n , 2 ) = X_dir2 ( j ) Xt ( n , 3 ) = X_dir3 ( k ) end do end do end do end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function repelem ( a , b ) result ( c ) real ( rk ), dimension (:), intent ( in ), contiguous :: a integer , dimension (:), intent ( in ), contiguous :: b real ( rk ), dimension ( sum ( b )) :: c integer :: i , l , n l = 0 do i = 1 , size ( a ) n = b ( i ) c ( l + 1 : l + n ) = a ( i ) l = l + n end do end function repelem !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function cmp_elemConn_C0_L ( nnode , p ) result ( elemConn ) integer , intent ( in ) :: nnode integer , intent ( in ) :: p integer , dimension (:,:), allocatable :: elemConn integer :: i , j , l integer , dimension (:), allocatable :: nodes allocate ( elemConn ( (( nnode - p ) / p ) , 2 )) nodes = [( i , i = 1 , nnode )] l = 0 do i = 1 , nnode - p , p l = l + 1 elemConn ( l ,:) = reshape ( nodes ( i : i + p ),[( p + 1 )]) end do end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function cmp_elemConn_C0_S ( nnode1 , nnode2 , p1 , p2 ) result ( elemConn ) integer , intent ( in ) :: nnode1 , nnode2 integer , intent ( in ) :: p1 , p2 integer , dimension (:,:), allocatable :: elemConn integer :: i , j , l integer , dimension (:,:), allocatable :: nodes allocate ( elemConn ( (( nnode1 - p1 ) / p1 ) * (( nnode2 - p2 ) / p2 ) , 4 )) nodes = reshape ([( i , i = 1 , nnode1 * nnode2 )], [ nnode1 , nnode2 ]) l = 0 do j = 1 , nnode2 - p2 , p2 do i = 1 , nnode1 - p1 , p1 l = l + 1 elemConn ( l ,:) = reshape ( nodes ( i : i + p1 , j : j + p2 ),[( p1 + 1 ) * ( p2 + 1 )]) end do end do end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function cmp_elemConn_C0_V ( nnode1 , nnode2 , nnode3 , p1 , p2 , p3 ) result ( elemConn ) integer , intent ( in ) :: nnode1 , nnode2 , nnode3 integer , intent ( in ) :: p1 , p2 , p3 integer , dimension (:,:), allocatable :: elemConn integer :: i , j , k , l integer , dimension (:,:,:), allocatable :: nodes allocate ( elemConn ( (( nnode1 - p1 ) / p1 ) * (( nnode2 - p2 ) / p2 ) * (( nnode3 - p3 ) / p3 ) , 8 )) nodes = reshape ([( i , i = 1 , nnode1 * nnode2 * nnode3 )], [ nnode1 , nnode2 , nnode3 ]) l = 0 do k = 1 , nnode3 - p3 , p3 do j = 1 , nnode2 - p2 , p2 do i = 1 , nnode1 - p1 , p1 l = l + 1 elemConn ( l ,:) = reshape ( nodes ( i : i + p1 , j : j + p2 , k : k + p3 ),[( p1 + 1 ) * ( p2 + 1 ) * ( p3 + 1 )]) end do end do end do end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function compute_multiplicity ( knot ) result ( multiplicity ) real ( rk ), intent ( in ) :: knot (:) integer , dimension (:), allocatable :: multiplicity integer :: i , count count = 1 do i = 2 , size ( knot ) if ( knot ( i ) /= knot ( i - 1 )) count = count + 1 end do allocate ( multiplicity ( count )) multiplicity ( 1 ) = 1 count = 1 do i = 2 , size ( knot ) if ( knot ( i ) /= knot ( i - 1 )) then count = count + 1 multiplicity ( count ) = 1 else multiplicity ( count ) = multiplicity ( count ) + 1 end if end do end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function compute_knot_vector ( Xth_dir , order , continuity ) result ( knot ) real ( rk ), intent ( in ) :: Xth_dir (:) integer , intent ( in ) :: order integer , intent ( in ) :: continuity (:) real ( rk ), allocatable :: knot (:) knot = repelem ( Xth_dir , ( order - continuity )) end function !=============================================================================== end module forcad_utils","tags":"","loc":"sourcefile/forcad_utils.f90.html"},{"title":"bezier_curve.f90 – ForCAD","text":"This file depends on sourcefile~~bezier_curve.f90~~EfferentGraph sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code !> This program demonstrates the usage of a Bezier curve object to create, and finalize a Bezier curve. !> It sets up control points and weights, generates the curve, and exports the control points !> and the curve to VTK files at various stages. program example_bezier_curve use forcad , only : rk , bezier_curve implicit none type ( bezier_curve ) :: bezier !! Declare a bezier curve object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights !----------------------------------------------------------------------------- ! Setting up the bezier curve !----------------------------------------------------------------------------- !> Define control points for the Bezier curve Xc = generate_Xc ( 5 , 1.0_rk , 2.0_rk , 20 ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 )), source = 1.0_rk ) !> Set control points and weights for the bezier curve object call bezier % set ( Xc = Xc , Wc = Wc ) !> Export initial control points to a VTK file call bezier % export_Xc ( 'vtk/bezier_curve_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the bezier curve !----------------------------------------------------------------------------- !> Generate the Bezier curve with a resolution of 1000 call bezier % create ( res = 500 ) !> Export the generated curve to a VTK file call bezier % export_Xg ( 'vtk/bezier_curve_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the Bezier curve object call bezier % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( num_coils , radius , height , num_points_per_coil ) result ( control_points ) integer , intent ( in ) :: num_coils , num_points_per_coil real ( rk ), intent ( in ) :: radius , height real ( rk ), dimension (:,:), allocatable :: control_points integer :: coil , i real ( rk ) :: theta , coil_height allocate ( control_points ( num_coils * num_points_per_coil , 3 )) do coil = 1 , num_coils coil_height = height * ( coil - 1 ) / real ( num_coils - 1 , rk ) theta = 0.0_rk do i = 1 , num_points_per_coil theta = theta + 2.0_rk * acos ( - 1.0_rk ) / real ( num_points_per_coil , rk ) control_points (( coil - 1 ) * num_points_per_coil + i , 1 ) = radius * cos ( theta ) control_points (( coil - 1 ) * num_points_per_coil + i , 2 ) = radius * sin ( theta ) control_points (( coil - 1 ) * num_points_per_coil + i , 3 ) = coil_height end do end do end function !----------------------------------------------------------------------------- end program example_bezier_curve","tags":"","loc":"sourcefile/bezier_curve.f90.html"},{"title":"nurbs_curve.f90 – ForCAD","text":"This file depends on sourcefile~~nurbs_curve.f90~~EfferentGraph sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code !> This program demonstrates the usage of a NURBS (Non-Uniform Rational B-Spline) curve object to create and finalize a NURBS curve. !> It sets up control points, weights, and knot vectors for all three dimensions, generates the curve, and exports the control points and the curve to VTK files. program example_nurbs_curve use forcad , only : rk , nurbs_curve implicit none type ( nurbs_curve ) :: nurbs !! Declare a NURBS curve object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights real ( rk ) :: knot ( 6 ) !! Array for knot vector !----------------------------------------------------------------------------- ! Setting up the NURBS curve !----------------------------------------------------------------------------- ! Define control points for the NURBS curve allocate ( Xc ( 3 , 3 )) Xc ( 1 ,:) = [ 0.0_rk , 0.0_rk , 0.0_rk ] Xc ( 2 ,:) = [ 0.0_rk , 5.0_rk , 0.0_rk ] Xc ( 3 ,:) = [ 5.0_rk , 5.0_rk , 0.0_rk ] ! Define weights for the control points allocate ( Wc ( 3 )) Wc = [ 1.0_rk , 2.0_rk , 1.0_rk ] ! Define knot vector knot = [ 0.0_rk , 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk , 1.0_rk ] ! Set knot vector, control points, and weights for the NURBS curve object call nurbs % set ( knot , Xc , Wc ) ! Export control points to a VTK file call nurbs % export_Xc ( 'vtk/nurbs_curve_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the NURBS curve !----------------------------------------------------------------------------- ! Generate the NURBS curve with a resolution of 20 call nurbs % create ( res = 20 ) ! Export the generated curve to a VTK file call nurbs % export_Xg ( 'vtk/nurbs_curve_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- ! Finalize the NURBS curve object call nurbs % finalize () end program example_nurbs_curve","tags":"","loc":"sourcefile/nurbs_curve.f90.html"}]} \ No newline at end of file +var tipuesearch = {"pages":[{"title":" ForCAD ","text":"ForCAD ForCAD : A Fortran library for Geometric Modeling. ForCAD supports B-Spline , NURBS , Bezier , and Rational Bezier curves, surfaces, and volumes. fpm dependency If you want to use ForCAD as a dependency in your own fpm project,\nyou can easily include it by adding the following line to your fpm.toml file: [dependencies] forcad = { git = \"https://github.com/gha3mi/forcad.git\" } How to run examples To get started, follow these steps: Clone the repository: Clone the ForCAD repository from GitHub: git clone https://github.com/gha3mi/forcad.git cd forcad Using fpm fpm run --example Once the examples have been executed, .vtk files will be generated within the vtk directory. These files can then be visualized using tools such as ParaView. API documentation The most up-to-date API documentation for the master branch is available here .\nTo generate the API documentation for ForCAD using ford run the following\ncommand: ford ford.yml ToDo [ ] Add method insert_knot() for B-splines and NURBS. [ ] Add method remove_knot() for B-splines and NURBS. [ ] Add method elevate_degree() for Bezier, Rational Bezier, B-splines, and NURBS. [x] Add method elevate_degree() for Bezier and Rational Bezier curves. [ ] Add method reduce_degree() for Bezier, Rational Bezier, B-splines, and NURBS. Contributing Contributions to ForCAD are welcome!\nIf you find any issues or would like to suggest improvements, please open an issue. References The NURBS Book by Les Piegl, Wayne Tiller An Introduction to NURBS by David F. Rogers Developer Info Seyed Ali Ghasemi","tags":"home","loc":"index.html"},{"title":"nurbs_volume – ForCAD ","text":"type, public :: nurbs_volume Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt1 (:) parameter values in the first direction real(kind=rk), private, allocatable :: Xt2 (:) parameter values in the second direction real(kind=rk), private, allocatable :: Xt3 (:) parameter values in the third direction real(kind=rk), private, allocatable :: knot1 (:) knot vector real(kind=rk), private, allocatable :: knot2 (:) knot vector real(kind=rk), private, allocatable :: knot3 (:) knot vector integer, private :: nc (3) number of control points in each direction integer, private :: ng (3) number of geometry points in each direction integer, private :: order (3) degree of the first direction Type-Bound Procedures procedure, public :: create Generate geometry points private pure subroutine create (this, res1, res2, res3, Xt1, Xt2, Xt3) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 integer, intent(in), optional :: res3 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) real(kind=rk), intent(in), optional :: Xt3 (:) procedure, public :: export_Xc Export control points to VTK file private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: export_Xg Export geometry points to VTK file private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: finalize Finalize the NURBS curve object private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this procedure, public :: get_Wc Get weights private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_Xc Get control points private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xg Get geometry points private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xt Get parameter values private pure function get_Xt (this, dir) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) procedure, public :: get_continuity Get continuity of the curve private pure function get_continuity (this, dir) result(c) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) procedure, public :: get_elem_Xc Generate connectivity for control points private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) procedure, public :: get_elem_Xg Generate connectivity for geometry points private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) procedure, public :: get_knot Get knot vector private pure function get_knot (this, dir) result(knot) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) procedure, public :: get_multiplicity Get multiplicity of the knot vector private pure function get_multiplicity (this, dir) result(m) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) procedure, public :: get_nc Get number of required control points private pure function get_nc (this, dir) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer procedure, public :: get_ng Get number of geometry points private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value integer, (3) procedure, public :: get_order Get order of the Bezier curve private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value integer, (3) procedure, public :: modify_Wc Modify weights private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num procedure, public :: modify_Xc Modify control points private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir generic, public :: set => set1 , set2 private pure subroutine set1 (this, knot1, knot2, knot3, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS curve object. Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: knot1 (:) real(kind=rk), intent(in) :: knot2 (:) real(kind=rk), intent(in) :: knot3 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) private pure subroutine set2 (this, Xth_dir1, Xth_dir2, Xth_dir3, order, continuity1, continuity2, continuity3, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS curve object. Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir1 (:) real(kind=rk), intent(in) :: Xth_dir2 (:) real(kind=rk), intent(in) :: Xth_dir3 (:) integer, intent(in) :: order (:) integer, intent(in) :: continuity1 (:) integer, intent(in) :: continuity2 (:) integer, intent(in) :: continuity3 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) procedure, public :: set1 Set control points and weights private pure subroutine set1 (this, knot1, knot2, knot3, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS curve object. Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: knot1 (:) real(kind=rk), intent(in) :: knot2 (:) real(kind=rk), intent(in) :: knot3 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) procedure, public :: set2 Set control points and weights private pure subroutine set2 (this, Xth_dir1, Xth_dir2, Xth_dir3, order, continuity1, continuity2, continuity3, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS curve object. Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir1 (:) real(kind=rk), intent(in) :: Xth_dir2 (:) real(kind=rk), intent(in) :: Xth_dir3 (:) integer, intent(in) :: order (:) integer, intent(in) :: continuity1 (:) integer, intent(in) :: continuity2 (:) integer, intent(in) :: continuity3 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"type/nurbs_volume.html"},{"title":"bezier_curve – ForCAD ","text":"type, public :: bezier_curve Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) Weights real(kind=rk), private, allocatable :: Xc (:,:) Control points real(kind=rk), private, allocatable :: Xg (:,:) Geometry points real(kind=rk), private, allocatable :: Xt (:) Parameter values integer, private :: nc Number of control points integer, private :: ng Number of geometry points Type-Bound Procedures procedure, public :: create Generate geometry points private pure subroutine create (this, res, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Generate geometry points of the Bezier curve. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this integer, intent(in), optional :: res real(kind=rk), intent(in), optional :: Xt (:) procedure, public :: elevate_degree Elevate the degree of the Bezier curve private pure subroutine elevate_degree (this) Author Seyed Ali Ghasemi License BSD 3-Clause Elevate the degree of the Bezier curve by one. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this procedure, public :: export_Xc Export control points to VTK file private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Export control points to a VTK file. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: export_Xg Export geometry points to VTK file private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Export geometry points to a VTK file. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: finalize Finalize the Bezier curve object private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Finalize the Bezier curve object by deallocating memory. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this procedure, public :: get_Wc Get weights private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_Xc Get control points private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xg Get geometry points private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xt Get parameter values private pure function get_Xt (this) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_elem_Xc Generate connectivity for control points private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Generate connectivity for control points. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p procedure, public :: get_elem_Xg Generate connectivity for geometry points private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Generate connectivity for geometry points. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p procedure, public :: get_nc Get number of control points private pure function get_nc (this) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer procedure, public :: get_ng Get number of geometry points private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer procedure, public :: get_order Get order of the Bezier curve private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer procedure, public :: modify_Wc Modify weights private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Modify weight of a control point given its index. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num procedure, public :: modify_Xc Modify control points private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Modify coordinate of a control point given its index and direction. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir procedure, public :: set Set control points and weights private pure subroutine set (this, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"type/bezier_curve.html"},{"title":"bezier_volume – ForCAD ","text":"type, public :: bezier_volume Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt1 (:) parameter values in the first direction real(kind=rk), private, allocatable :: Xt2 (:) parameter values in the second direction real(kind=rk), private, allocatable :: Xt3 (:) parameter values in the third direction integer, private :: nc (3) number of control points in each direction integer, private :: ng (3) number of geometry points in each direction Type-Bound Procedures procedure, public :: create Generate geometry points private pure subroutine create (this, res1, res2, res3, Xt1, Xt2, Xt3) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 integer, intent(in), optional :: res3 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) real(kind=rk), intent(in), optional :: Xt3 (:) procedure, public :: export_Xc Export control points to VTK file private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: export_Xg Export geometry points to VTK file private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: finalize Finalize the Bezier volume object private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this procedure, public :: get_Wc Get weights private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_Xc Get control points private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xg Get geometry points private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_elem_Xc Generate connectivity for control points private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) procedure, public :: get_elem_Xg Generate connectivity for geometry points private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) procedure, public :: get_nc Get number of control points private pure function get_nc (this) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3) procedure, public :: get_ng Get number of geometry points private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3) procedure, public :: get_order Get order of the Bezier surface private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3) procedure, public :: modify_Wc Modify weights private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num procedure, public :: modify_Xc Modify control points private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir procedure, public :: set Set control points and weights private pure subroutine set (this, nc, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this integer, intent(in) :: nc (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Source Code type bezier_volume real ( rk ), allocatable , private :: Xc (:,:) !! control points real ( rk ), allocatable , private :: Xg (:,:) !! geometry points real ( rk ), allocatable , private :: Wc (:) !! weights real ( rk ), allocatable , private :: Xt1 (:) !! parameter values in the first direction real ( rk ), allocatable , private :: Xt2 (:) !! parameter values in the second direction real ( rk ), allocatable , private :: Xt3 (:) !! parameter values in the third direction integer , private :: nc ( 3 ) !! number of control points in each direction integer , private :: ng ( 3 ) !! number of geometry points in each direction contains procedure :: set !!> Set control points and weights procedure :: create !!> Generate geometry points procedure :: get_Xc !!> Get control points procedure :: get_Xg !!> Get geometry points procedure :: get_Wc !!> Get weights procedure :: get_nc !!> Get number of control points procedure :: get_ng !!> Get number of geometry points procedure :: get_order !!> Get order of the Bezier surface procedure :: finalize !!> Finalize the Bezier volume object procedure :: get_elem_Xc !!> Generate connectivity for control points procedure :: get_elem_Xg !!> Generate connectivity for geometry points procedure :: export_Xc !!> Export control points to VTK file procedure :: export_Xg !!> Export geometry points to VTK file procedure :: modify_Xc !!> Modify control points procedure :: modify_Wc !!> Modify weights end type bezier_volume","tags":"","loc":"type/bezier_volume.html"},{"title":"nurbs_surface – ForCAD ","text":"type, public :: nurbs_surface Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt1 (:) parameter values in the first direction real(kind=rk), private, allocatable :: Xt2 (:) parameter values in the second direction real(kind=rk), private, allocatable :: knot1 (:) knot vector real(kind=rk), private, allocatable :: knot2 (:) knot vector integer, private :: nc (2) number of control points in each direction integer, private :: ng (2) number of geometry points in each direction integer, private :: order (2) degree of each direction Type-Bound Procedures procedure, public :: create Generate geometry points private pure subroutine create (this, res1, res2, Xt1, Xt2) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) procedure, public :: export_Xc Export control points to VTK file private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: export_Xg Export geometry points to VTK file private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: finalize Finalize the NURBS surface object private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this procedure, public :: get_Wc Get weights private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_Xc Get control points private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xg Get geometry points private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xt Get parameter values private pure function get_Xt (this, dir) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) procedure, public :: get_continuity Get continuity of the surface private pure function get_continuity (this, dir) result(c) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) procedure, public :: get_elem_Xc Generate connectivity for control points private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) procedure, public :: get_elem_Xg Generate connectivity for geometry points private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) procedure, public :: get_knot Get knot vector private pure function get_knot (this, dir) result(knot) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) procedure, public :: get_multiplicity Get multiplicity of the knot vector private pure function get_multiplicity (this, dir) result(m) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) procedure, public :: get_nc Get number of required control points private pure function get_nc (this, dir) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer procedure, public :: get_ng Get number of geometry points private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value integer, (2) procedure, public :: get_order Get order of the Bezier curve private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value integer, (2) procedure, public :: modify_Wc Modify weights private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num procedure, public :: modify_Xc Modify control points private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir generic, public :: set => set1 , set2 private pure subroutine set1 (this, knot1, knot2, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS surface object. Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: knot1 (:) real(kind=rk), intent(in) :: knot2 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) private pure subroutine set2 (this, Xth_dir1, Xth_dir2, order, continuity1, continuity2, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS surface object. Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir1 (:) real(kind=rk), intent(in) :: Xth_dir2 (:) integer, intent(in) :: order (:) integer, intent(in) :: continuity1 (:) integer, intent(in) :: continuity2 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) procedure, public :: set1 Set control points and weights private pure subroutine set1 (this, knot1, knot2, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS surface object. Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: knot1 (:) real(kind=rk), intent(in) :: knot2 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) procedure, public :: set2 Set control points and weights private pure subroutine set2 (this, Xth_dir1, Xth_dir2, order, continuity1, continuity2, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS surface object. Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir1 (:) real(kind=rk), intent(in) :: Xth_dir2 (:) integer, intent(in) :: order (:) integer, intent(in) :: continuity1 (:) integer, intent(in) :: continuity2 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"type/nurbs_surface.html"},{"title":"nurbs_curve – ForCAD ","text":"type, public :: nurbs_curve Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt (:) evaluation points real(kind=rk), private, allocatable :: knot (:) knot vector integer, private :: nc number of control points integer, private :: ng number of geometry points integer, private :: order order of the curve Type-Bound Procedures procedure, public :: create Generate geometry points private pure subroutine create (this, res, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this integer, intent(in), optional :: res real(kind=rk), intent(in), optional :: Xt (:) procedure, public :: export_Xc Export control points to VTK file private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: export_Xg Export geometry points to VTK file private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: finalize Finalize the Bezier curve object private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this procedure, public :: get_Wc Get weights private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_Xc Get control points private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xg Get geometry points private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xt Get parameter values private pure function get_Xt (this) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_continuity Get continuity of the curve private pure function get_continuity (this) result(c) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer, allocatable, (:) procedure, public :: get_elem_Xc Generate connectivity for control points private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p procedure, public :: get_elem_Xg Generate connectivity for geometry points private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p procedure, public :: get_knot Get knot vector private pure function get_knot (this) result(knot) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_multiplicity Get multiplicity of the knot vector private pure function get_multiplicity (this) result(m) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer, allocatable, (:) procedure, public :: get_nc Get number of required control points private pure function get_nc (this) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer procedure, public :: get_ng Get number of geometry points private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer procedure, public :: get_order Get order of the Bezier curve private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer procedure, public :: modify_Wc Modify weights private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num procedure, public :: modify_Xc Modify control points private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir generic, public :: set => set1 , set2 private pure subroutine set1 (this, knot, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: knot (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) private pure subroutine set2 (this, Xth_dir, order, continuity, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir (:) integer, intent(in) :: order integer, intent(in) :: continuity (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) procedure, public :: set1 Set control points and weights private pure subroutine set1 (this, knot, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: knot (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) procedure, public :: set2 Set control points and weights private pure subroutine set2 (this, Xth_dir, order, continuity, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir (:) integer, intent(in) :: order integer, intent(in) :: continuity (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"type/nurbs_curve.html"},{"title":"bezier_surface – ForCAD ","text":"type, public :: bezier_surface Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt1 (:) parameter values in the first direction real(kind=rk), private, allocatable :: Xt2 (:) parameter values in the second direction integer, private :: nc (2) number of control points in each direction integer, private :: ng (2) number of geometry points in each direction Type-Bound Procedures procedure, public :: create Generate geometry points private pure subroutine create (this, res1, res2, Xt1, Xt2) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) procedure, public :: export_Xc Export control points to VTK file private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: export_Xg Export geometry points to VTK file private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this character(len=*), intent(in) :: filename procedure, public :: finalize Finalize the Bezier surface object private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this procedure, public :: get_Wc Get weights private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) procedure, public :: get_Xc Get control points private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xg Get geometry points private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) procedure, public :: get_Xt Get parameter values private pure function get_Xt (this, dir) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) procedure, public :: get_elem_Xc Generate connectivity for control points private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) procedure, public :: get_elem_Xg Generate connectivity for geometry points private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) procedure, public :: get_nc Get number of control points private pure function get_nc (this) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2) procedure, public :: get_ng Get number of geometry points private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2) procedure, public :: get_order Get order of the Bezier surface private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2) procedure, public :: modify_Wc Modify weights private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Modify weight of a control point given its index. Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num procedure, public :: modify_Xc Modify control points private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Modify coordinate of a control point given its index and direction. Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir procedure, public :: set Set control points and weights private pure subroutine set (this, nc, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this integer, intent(in) :: nc (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"type/bezier_surface.html"},{"title":"generate_Xc – ForCAD","text":"function generate_Xc(num_rows, num_cols, peak_height) result(control_points) Arguments Type Intent Optional Attributes Name integer, intent(in) :: num_rows integer, intent(in) :: num_cols real(kind=rk), intent(in) :: peak_height Return Value real(kind=rk), dimension(:,:), allocatable Called by proc~~generate_xc~~CalledByGraph proc~generate_xc example_bezier_surface::generate_Xc program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~generate_xc Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/generate_xc.html"},{"title":"generate_Xc – ForCAD","text":"function generate_Xc(num_coils, radius, height, num_points_per_coil) result(control_points) Arguments Type Intent Optional Attributes Name integer, intent(in) :: num_coils real(kind=rk), intent(in) :: radius real(kind=rk), intent(in) :: height integer, intent(in) :: num_points_per_coil Return Value real(kind=rk), dimension(:,:), allocatable Called by proc~~generate_xc~2~~CalledByGraph proc~generate_xc~2 example_bezier_curve::generate_Xc program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~generate_xc~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/generate_xc~2.html"},{"title":"generate_Xc – ForCAD","text":"function generate_Xc(L) result(control_points) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: L Return Value real(kind=rk), dimension(:,:), allocatable Called by proc~~generate_xc~3~~CalledByGraph proc~generate_xc~3 example_nurbs_volume::generate_Xc program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~generate_xc~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/generate_xc~3.html"},{"title":"get_Wc – ForCAD","text":"private pure function get_Wc(this) result(Wc) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_wc.html"},{"title":"get_Xc – ForCAD","text":"private pure function get_Xc(this) result(Xc) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xc.html"},{"title":"get_Xg – ForCAD","text":"private pure function get_Xg(this) result(Xg) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xg.html"},{"title":"get_Xt – ForCAD","text":"private pure function get_Xt(this, dir) result(Xt) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_xt.html"},{"title":"get_continuity – ForCAD","text":"private pure function get_continuity(this, dir) result(c) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) Calls proc~~get_continuity~~CallsGraph proc~get_continuity forcad_nurbs_volume::nurbs_volume%get_continuity proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_continuity->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_continuity.html"},{"title":"get_knot – ForCAD","text":"private pure function get_knot(this, dir) result(knot) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_knot.html"},{"title":"get_multiplicity – ForCAD","text":"private pure function get_multiplicity(this, dir) result(m) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) Calls proc~~get_multiplicity~~CallsGraph proc~get_multiplicity forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_multiplicity~~CalledByGraph proc~get_multiplicity forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~get_order forcad_nurbs_volume::nurbs_volume%get_order proc~get_order->proc~get_multiplicity proc~set1 forcad_nurbs_volume::nurbs_volume%set1 proc~set1->proc~get_order none~set forcad_nurbs_volume::nurbs_volume%set none~set->proc~set1 proc~modify_wc forcad_nurbs_volume::nurbs_volume%modify_Wc proc~modify_wc->none~set proc~modify_xc forcad_nurbs_volume::nurbs_volume%modify_Xc proc~modify_xc->none~set program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->none~set Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_multiplicity.html"},{"title":"get_nc – ForCAD","text":"private pure function get_nc(this, dir) result(nc) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer Calls proc~~get_nc~~CallsGraph proc~get_nc forcad_nurbs_volume::nurbs_volume%get_nc proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_nc~~CalledByGraph proc~get_nc forcad_nurbs_volume::nurbs_volume%get_nc proc~set1 forcad_nurbs_volume::nurbs_volume%set1 proc~set1->proc~get_nc proc~set2 forcad_nurbs_volume::nurbs_volume%set2 proc~set2->proc~get_nc none~set forcad_nurbs_volume::nurbs_volume%set none~set->proc~set1 none~set->proc~set2 proc~modify_wc forcad_nurbs_volume::nurbs_volume%modify_Wc proc~modify_wc->none~set proc~modify_xc forcad_nurbs_volume::nurbs_volume%modify_Xc proc~modify_xc->none~set program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->none~set Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_nc.html"},{"title":"get_ng – ForCAD","text":"private pure function get_ng(this) result(ng) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value integer, (3)","tags":"","loc":"proc/get_ng.html"},{"title":"get_order – ForCAD","text":"private pure function get_order(this) result(order) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value integer, (3) Calls proc~~get_order~~CallsGraph proc~get_order forcad_nurbs_volume::nurbs_volume%get_order proc~get_multiplicity forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~get_order->proc~get_multiplicity proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_order~~CalledByGraph proc~get_order forcad_nurbs_volume::nurbs_volume%get_order proc~set1 forcad_nurbs_volume::nurbs_volume%set1 proc~set1->proc~get_order none~set forcad_nurbs_volume::nurbs_volume%set none~set->proc~set1 proc~modify_wc forcad_nurbs_volume::nurbs_volume%modify_Wc proc~modify_wc->none~set proc~modify_xc forcad_nurbs_volume::nurbs_volume%modify_Xc proc~modify_xc->none~set program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->none~set Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_order.html"},{"title":"create – ForCAD","text":"private pure subroutine create(this, res1, res2, res3, Xt1, Xt2, Xt3) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 integer, intent(in), optional :: res3 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) real(kind=rk), intent(in), optional :: Xt3 (:) Calls proc~~create~~CallsGraph proc~create forcad_nurbs_volume::nurbs_volume%create interface~ndgrid forcad_utils::ndgrid proc~create->interface~ndgrid proc~basis_bspline forcad_utils::basis_bspline proc~create->proc~basis_bspline proc~kron forcad_utils::kron proc~create->proc~kron proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~create~~CalledByGraph proc~create forcad_nurbs_volume::nurbs_volume%create program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~create Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/create.html"},{"title":"export_Xc – ForCAD","text":"private impure subroutine export_Xc(this, filename) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xc~~CallsGraph proc~export_xc forcad_nurbs_volume::nurbs_volume%export_Xc proc~get_elem_xc forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~export_xc->proc~get_elem_xc interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xc~~CalledByGraph proc~export_xc forcad_nurbs_volume::nurbs_volume%export_Xc program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~export_xc Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xc.html"},{"title":"export_Xg – ForCAD","text":"private impure subroutine export_Xg(this, filename) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xg~~CallsGraph proc~export_xg forcad_nurbs_volume::nurbs_volume%export_Xg proc~get_elem_xg forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~export_xg->proc~get_elem_xg interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xg~~CalledByGraph proc~export_xg forcad_nurbs_volume::nurbs_volume%export_Xg program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~export_xg Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xg.html"},{"title":"finalize – ForCAD","text":"private pure subroutine finalize(this) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this Called by proc~~finalize~~CalledByGraph proc~finalize forcad_nurbs_volume::nurbs_volume%finalize program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~finalize Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/finalize.html"},{"title":"get_elem_Xc – ForCAD","text":"private pure subroutine get_elem_Xc(this, elemConn, p) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) Calls proc~~get_elem_xc~~CallsGraph proc~get_elem_xc forcad_nurbs_volume::nurbs_volume%get_elem_Xc interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xc~~CalledByGraph proc~get_elem_xc forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~export_xc forcad_nurbs_volume::nurbs_volume%export_Xc proc~export_xc->proc~get_elem_xc program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~export_xc Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xc.html"},{"title":"get_elem_Xg – ForCAD","text":"private pure subroutine get_elem_Xg(this, elemConn, p) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) Calls proc~~get_elem_xg~~CallsGraph proc~get_elem_xg forcad_nurbs_volume::nurbs_volume%get_elem_Xg interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xg~~CalledByGraph proc~get_elem_xg forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~export_xg forcad_nurbs_volume::nurbs_volume%export_Xg proc~export_xg->proc~get_elem_xg program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~export_xg Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xg.html"},{"title":"modify_Wc – ForCAD","text":"private pure subroutine modify_Wc(this, W, num) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num Calls proc~~modify_wc~~CallsGraph proc~modify_wc forcad_nurbs_volume::nurbs_volume%modify_Wc none~set forcad_nurbs_volume::nurbs_volume%set proc~modify_wc->none~set proc~set1 forcad_nurbs_volume::nurbs_volume%set1 none~set->proc~set1 proc~set2 forcad_nurbs_volume::nurbs_volume%set2 none~set->proc~set2 proc~get_nc forcad_nurbs_volume::nurbs_volume%get_nc proc~set1->proc~get_nc proc~get_order forcad_nurbs_volume::nurbs_volume%get_order proc~set1->proc~get_order proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2->proc~compute_knot_vector proc~set2->proc~get_nc proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc->proc~compute_multiplicity proc~get_multiplicity forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~get_order->proc~get_multiplicity proc~get_multiplicity->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_wc.html"},{"title":"modify_Xc – ForCAD","text":"private pure subroutine modify_Xc(this, X, num, dir) Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir Calls proc~~modify_xc~~CallsGraph proc~modify_xc forcad_nurbs_volume::nurbs_volume%modify_Xc none~set forcad_nurbs_volume::nurbs_volume%set proc~modify_xc->none~set proc~set1 forcad_nurbs_volume::nurbs_volume%set1 none~set->proc~set1 proc~set2 forcad_nurbs_volume::nurbs_volume%set2 none~set->proc~set2 proc~get_nc forcad_nurbs_volume::nurbs_volume%get_nc proc~set1->proc~get_nc proc~get_order forcad_nurbs_volume::nurbs_volume%get_order proc~set1->proc~get_order proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2->proc~compute_knot_vector proc~set2->proc~get_nc proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc->proc~compute_multiplicity proc~get_multiplicity forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~get_order->proc~get_multiplicity proc~get_multiplicity->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_xc.html"},{"title":"set1 – ForCAD","text":"private pure subroutine set1(this, knot1, knot2, knot3, Xc, Wc) Set control points and weights for the NURBS curve object. Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: knot1 (:) real(kind=rk), intent(in) :: knot2 (:) real(kind=rk), intent(in) :: knot3 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Calls proc~~set1~~CallsGraph proc~set1 forcad_nurbs_volume::nurbs_volume%set1 proc~get_nc forcad_nurbs_volume::nurbs_volume%get_nc proc~set1->proc~get_nc proc~get_order forcad_nurbs_volume::nurbs_volume%get_order proc~set1->proc~get_order proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc->proc~compute_multiplicity proc~get_multiplicity forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~get_order->proc~get_multiplicity proc~get_multiplicity->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~set1~~CalledByGraph proc~set1 forcad_nurbs_volume::nurbs_volume%set1 none~set forcad_nurbs_volume::nurbs_volume%set none~set->proc~set1 proc~modify_wc forcad_nurbs_volume::nurbs_volume%modify_Wc proc~modify_wc->none~set proc~modify_xc forcad_nurbs_volume::nurbs_volume%modify_Xc proc~modify_xc->none~set program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->none~set Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set1.html"},{"title":"set2 – ForCAD","text":"private pure subroutine set2(this, Xth_dir1, Xth_dir2, Xth_dir3, order, continuity1, continuity2, continuity3, Xc, Wc) Set control points and weights for the NURBS curve object. Type Bound nurbs_volume Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir1 (:) real(kind=rk), intent(in) :: Xth_dir2 (:) real(kind=rk), intent(in) :: Xth_dir3 (:) integer, intent(in) :: order (:) integer, intent(in) :: continuity1 (:) integer, intent(in) :: continuity2 (:) integer, intent(in) :: continuity3 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Calls proc~~set2~~CallsGraph proc~set2 forcad_nurbs_volume::nurbs_volume%set2 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2->proc~compute_knot_vector proc~get_nc forcad_nurbs_volume::nurbs_volume%get_nc proc~set2->proc~get_nc proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~set2~~CalledByGraph proc~set2 forcad_nurbs_volume::nurbs_volume%set2 none~set forcad_nurbs_volume::nurbs_volume%set none~set->proc~set2 proc~modify_wc forcad_nurbs_volume::nurbs_volume%modify_Wc proc~modify_wc->none~set proc~modify_xc forcad_nurbs_volume::nurbs_volume%modify_Xc proc~modify_xc->none~set program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->none~set Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set2.html"},{"title":"get_Wc – ForCAD","text":"private pure function get_Wc(this) result(Wc) Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_wc~2.html"},{"title":"get_Xc – ForCAD","text":"private pure function get_Xc(this) result(Xc) Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xc~2.html"},{"title":"get_Xg – ForCAD","text":"private pure function get_Xg(this) result(Xg) Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xg~2.html"},{"title":"get_Xt – ForCAD","text":"private pure function get_Xt(this) result(Xt) Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_xt~2.html"},{"title":"get_nc – ForCAD","text":"private pure function get_nc(this) result(nc) Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer","tags":"","loc":"proc/get_nc~2.html"},{"title":"get_ng – ForCAD","text":"private pure function get_ng(this) result(ng) Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer","tags":"","loc":"proc/get_ng~2.html"},{"title":"get_order – ForCAD","text":"private pure function get_order(this) result(order) Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer","tags":"","loc":"proc/get_order~2.html"},{"title":"create – ForCAD","text":"private pure subroutine create(this, res, Xt) Generate geometry points of the Bezier curve. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this integer, intent(in), optional :: res real(kind=rk), intent(in), optional :: Xt (:) Calls proc~~create~2~~CallsGraph proc~create~2 forcad_bezier_curve::bezier_curve%create proc~basis_bernstein forcad_utils::basis_bernstein proc~create~2->proc~basis_bernstein Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~create~2~~CalledByGraph proc~create~2 forcad_bezier_curve::bezier_curve%create proc~elevate_degree forcad_bezier_curve::bezier_curve%elevate_degree proc~elevate_degree->proc~create~2 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~create~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/create~2.html"},{"title":"elevate_degree – ForCAD","text":"private pure subroutine elevate_degree(this) Elevate the degree of the Bezier curve by one. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this Calls proc~~elevate_degree~~CallsGraph proc~elevate_degree forcad_bezier_curve::bezier_curve%elevate_degree proc~create~2 forcad_bezier_curve::bezier_curve%create proc~elevate_degree->proc~create~2 proc~set forcad_bezier_curve::bezier_curve%set proc~elevate_degree->proc~set proc~basis_bernstein forcad_utils::basis_bernstein proc~create~2->proc~basis_bernstein Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/elevate_degree.html"},{"title":"export_Xc – ForCAD","text":"private impure subroutine export_Xc(this, filename) Export control points to a VTK file. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xc~2~~CallsGraph proc~export_xc~2 forcad_bezier_curve::bezier_curve%export_Xc proc~get_elem_xc~2 forcad_bezier_curve::bezier_curve%get_elem_Xc proc~export_xc~2->proc~get_elem_xc~2 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~2->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xc~2~~CalledByGraph proc~export_xc~2 forcad_bezier_curve::bezier_curve%export_Xc program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~export_xc~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xc~2.html"},{"title":"export_Xg – ForCAD","text":"private impure subroutine export_Xg(this, filename) Export geometry points to a VTK file. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xg~2~~CallsGraph proc~export_xg~2 forcad_bezier_curve::bezier_curve%export_Xg proc~get_elem_xg~2 forcad_bezier_curve::bezier_curve%get_elem_Xg proc~export_xg~2->proc~get_elem_xg~2 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~2->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xg~2~~CalledByGraph proc~export_xg~2 forcad_bezier_curve::bezier_curve%export_Xg program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~export_xg~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xg~2.html"},{"title":"finalize – ForCAD","text":"private pure subroutine finalize(this) Finalize the Bezier curve object by deallocating memory. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this Called by proc~~finalize~2~~CalledByGraph proc~finalize~2 forcad_bezier_curve::bezier_curve%finalize program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~finalize~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/finalize~2.html"},{"title":"get_elem_Xc – ForCAD","text":"private pure subroutine get_elem_Xc(this, elemConn, p) Generate connectivity for control points. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p Calls proc~~get_elem_xc~2~~CallsGraph proc~get_elem_xc~2 forcad_bezier_curve::bezier_curve%get_elem_Xc interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~2->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xc~2~~CalledByGraph proc~get_elem_xc~2 forcad_bezier_curve::bezier_curve%get_elem_Xc proc~export_xc~2 forcad_bezier_curve::bezier_curve%export_Xc proc~export_xc~2->proc~get_elem_xc~2 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~export_xc~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xc~2.html"},{"title":"get_elem_Xg – ForCAD","text":"private pure subroutine get_elem_Xg(this, elemConn, p) Generate connectivity for geometry points. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p Calls proc~~get_elem_xg~2~~CallsGraph proc~get_elem_xg~2 forcad_bezier_curve::bezier_curve%get_elem_Xg interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~2->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xg~2~~CalledByGraph proc~get_elem_xg~2 forcad_bezier_curve::bezier_curve%get_elem_Xg proc~export_xg~2 forcad_bezier_curve::bezier_curve%export_Xg proc~export_xg~2->proc~get_elem_xg~2 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~export_xg~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xg~2.html"},{"title":"modify_Wc – ForCAD","text":"private pure subroutine modify_Wc(this, W, num) Modify weight of a control point given its index. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num Calls proc~~modify_wc~2~~CallsGraph proc~modify_wc~2 forcad_bezier_curve::bezier_curve%modify_Wc proc~set forcad_bezier_curve::bezier_curve%set proc~modify_wc~2->proc~set Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_wc~2.html"},{"title":"modify_Xc – ForCAD","text":"private pure subroutine modify_Xc(this, X, num, dir) Modify coordinate of a control point given its index and direction. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir Calls proc~~modify_xc~2~~CallsGraph proc~modify_xc~2 forcad_bezier_curve::bezier_curve%modify_Xc proc~set forcad_bezier_curve::bezier_curve%set proc~modify_xc~2->proc~set Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_xc~2.html"},{"title":"set – ForCAD","text":"private pure subroutine set(this, Xc, Wc) Set control points and weights for the Bezier curve object. Type Bound bezier_curve Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Called by proc~~set~~CalledByGraph proc~set forcad_bezier_curve::bezier_curve%set proc~elevate_degree forcad_bezier_curve::bezier_curve%elevate_degree proc~elevate_degree->proc~set proc~modify_wc~2 forcad_bezier_curve::bezier_curve%modify_Wc proc~modify_wc~2->proc~set proc~modify_xc~2 forcad_bezier_curve::bezier_curve%modify_Xc proc~modify_xc~2->proc~set program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~set Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set.html"},{"title":"get_Wc – ForCAD","text":"private pure function get_Wc(this) result(Wc) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_wc~3.html"},{"title":"get_Xc – ForCAD","text":"private pure function get_Xc(this) result(Xc) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xc~3.html"},{"title":"get_Xg – ForCAD","text":"private pure function get_Xg(this) result(Xg) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xg~3.html"},{"title":"get_Xt – ForCAD","text":"private pure function get_Xt(this, dir) result(Xt) Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_xt~3.html"},{"title":"get_nc – ForCAD","text":"private pure function get_nc(this) result(nc) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3)","tags":"","loc":"proc/get_nc~3.html"},{"title":"get_ng – ForCAD","text":"private pure function get_ng(this) result(ng) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3)","tags":"","loc":"proc/get_ng~3.html"},{"title":"get_order – ForCAD","text":"private pure function get_order(this) result(order) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3)","tags":"","loc":"proc/get_order~3.html"},{"title":"create – ForCAD","text":"private pure subroutine create(this, res1, res2, res3, Xt1, Xt2, Xt3) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 integer, intent(in), optional :: res3 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) real(kind=rk), intent(in), optional :: Xt3 (:) Calls proc~~create~3~~CallsGraph proc~create~3 forcad_bezier_volume::bezier_volume%create interface~ndgrid forcad_utils::ndgrid proc~create~3->interface~ndgrid proc~basis_bernstein forcad_utils::basis_bernstein proc~create~3->proc~basis_bernstein proc~kron forcad_utils::kron proc~create~3->proc~kron proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~create~3~~CalledByGraph proc~create~3 forcad_bezier_volume::bezier_volume%create program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~create~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/create~3.html"},{"title":"export_Xc – ForCAD","text":"private impure subroutine export_Xc(this, filename) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xc~3~~CallsGraph proc~export_xc~3 forcad_bezier_volume::bezier_volume%export_Xc proc~get_elem_xc~3 forcad_bezier_volume::bezier_volume%get_elem_Xc proc~export_xc~3->proc~get_elem_xc~3 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~3->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xc~3~~CalledByGraph proc~export_xc~3 forcad_bezier_volume::bezier_volume%export_Xc program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~export_xc~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xc~3.html"},{"title":"export_Xg – ForCAD","text":"private impure subroutine export_Xg(this, filename) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xg~3~~CallsGraph proc~export_xg~3 forcad_bezier_volume::bezier_volume%export_Xg proc~get_elem_xg~3 forcad_bezier_volume::bezier_volume%get_elem_Xg proc~export_xg~3->proc~get_elem_xg~3 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~3->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xg~3~~CalledByGraph proc~export_xg~3 forcad_bezier_volume::bezier_volume%export_Xg program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~export_xg~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xg~3.html"},{"title":"finalize – ForCAD","text":"private pure subroutine finalize(this) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this Called by proc~~finalize~3~~CalledByGraph proc~finalize~3 forcad_bezier_volume::bezier_volume%finalize program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~finalize~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/finalize~3.html"},{"title":"get_elem_Xc – ForCAD","text":"private pure subroutine get_elem_Xc(this, elemConn, p) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) Calls proc~~get_elem_xc~3~~CallsGraph proc~get_elem_xc~3 forcad_bezier_volume::bezier_volume%get_elem_Xc interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~3->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xc~3~~CalledByGraph proc~get_elem_xc~3 forcad_bezier_volume::bezier_volume%get_elem_Xc proc~export_xc~3 forcad_bezier_volume::bezier_volume%export_Xc proc~export_xc~3->proc~get_elem_xc~3 program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~export_xc~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xc~3.html"},{"title":"get_elem_Xg – ForCAD","text":"private pure subroutine get_elem_Xg(this, elemConn, p) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) Calls proc~~get_elem_xg~3~~CallsGraph proc~get_elem_xg~3 forcad_bezier_volume::bezier_volume%get_elem_Xg interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~3->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xg~3~~CalledByGraph proc~get_elem_xg~3 forcad_bezier_volume::bezier_volume%get_elem_Xg proc~export_xg~3 forcad_bezier_volume::bezier_volume%export_Xg proc~export_xg~3->proc~get_elem_xg~3 program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~export_xg~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xg~3.html"},{"title":"modify_Wc – ForCAD","text":"private pure subroutine modify_Wc(this, W, num) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num Calls proc~~modify_wc~3~~CallsGraph proc~modify_wc~3 forcad_bezier_volume::bezier_volume%modify_Wc proc~set~2 forcad_bezier_volume::bezier_volume%set proc~modify_wc~3->proc~set~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_wc~3.html"},{"title":"modify_Xc – ForCAD","text":"private pure subroutine modify_Xc(this, X, num, dir) Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir Calls proc~~modify_xc~3~~CallsGraph proc~modify_xc~3 forcad_bezier_volume::bezier_volume%modify_Xc proc~set~2 forcad_bezier_volume::bezier_volume%set proc~modify_xc~3->proc~set~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_xc~3.html"},{"title":"set – ForCAD","text":"private pure subroutine set(this, nc, Xc, Wc) Set control points and weights for the Bezier curve object. Type Bound bezier_volume Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this integer, intent(in) :: nc (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Called by proc~~set~2~~CalledByGraph proc~set~2 forcad_bezier_volume::bezier_volume%set proc~modify_wc~3 forcad_bezier_volume::bezier_volume%modify_Wc proc~modify_wc~3->proc~set~2 proc~modify_xc~3 forcad_bezier_volume::bezier_volume%modify_Xc proc~modify_xc~3->proc~set~2 program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~set~2 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set~2.html"},{"title":"get_Wc – ForCAD","text":"private pure function get_Wc(this) result(Wc) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_wc~4.html"},{"title":"get_Xc – ForCAD","text":"private pure function get_Xc(this) result(Xc) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xc~4.html"},{"title":"get_Xg – ForCAD","text":"private pure function get_Xg(this) result(Xg) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xg~4.html"},{"title":"get_Xt – ForCAD","text":"private pure function get_Xt(this, dir) result(Xt) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_xt~4.html"},{"title":"get_continuity – ForCAD","text":"private pure function get_continuity(this, dir) result(c) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) Calls proc~~get_continuity~2~~CallsGraph proc~get_continuity~2 forcad_nurbs_surface::nurbs_surface%get_continuity proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_continuity~2->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_continuity~2.html"},{"title":"get_knot – ForCAD","text":"private pure function get_knot(this, dir) result(knot) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_knot~2.html"},{"title":"get_multiplicity – ForCAD","text":"private pure function get_multiplicity(this, dir) result(m) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) Calls proc~~get_multiplicity~2~~CallsGraph proc~get_multiplicity~2 forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity~2->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_multiplicity~2~~CalledByGraph proc~get_multiplicity~2 forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~get_order~4 forcad_nurbs_surface::nurbs_surface%get_order proc~get_order~4->proc~get_multiplicity~2 proc~set1~2 forcad_nurbs_surface::nurbs_surface%set1 proc~set1~2->proc~get_order~4 none~set~4 forcad_nurbs_surface::nurbs_surface%set none~set~4->proc~set1~2 proc~modify_wc~4 forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~4->none~set~4 proc~modify_xc~4 forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~4->none~set~4 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->none~set~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_multiplicity~2.html"},{"title":"get_nc – ForCAD","text":"private pure function get_nc(this, dir) result(nc) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer Calls proc~~get_nc~4~~CallsGraph proc~get_nc~4 forcad_nurbs_surface::nurbs_surface%get_nc proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~4->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_nc~4~~CalledByGraph proc~get_nc~4 forcad_nurbs_surface::nurbs_surface%get_nc proc~set1~2 forcad_nurbs_surface::nurbs_surface%set1 proc~set1~2->proc~get_nc~4 proc~set2~2 forcad_nurbs_surface::nurbs_surface%set2 proc~set2~2->proc~get_nc~4 none~set~4 forcad_nurbs_surface::nurbs_surface%set none~set~4->proc~set1~2 none~set~4->proc~set2~2 proc~modify_wc~4 forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~4->none~set~4 proc~modify_xc~4 forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~4->none~set~4 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->none~set~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_nc~4.html"},{"title":"get_ng – ForCAD","text":"private pure function get_ng(this) result(ng) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value integer, (2)","tags":"","loc":"proc/get_ng~4.html"},{"title":"get_order – ForCAD","text":"private pure function get_order(this) result(order) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value integer, (2) Calls proc~~get_order~4~~CallsGraph proc~get_order~4 forcad_nurbs_surface::nurbs_surface%get_order proc~get_multiplicity~2 forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~get_order~4->proc~get_multiplicity~2 proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity~2->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_order~4~~CalledByGraph proc~get_order~4 forcad_nurbs_surface::nurbs_surface%get_order proc~set1~2 forcad_nurbs_surface::nurbs_surface%set1 proc~set1~2->proc~get_order~4 none~set~4 forcad_nurbs_surface::nurbs_surface%set none~set~4->proc~set1~2 proc~modify_wc~4 forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~4->none~set~4 proc~modify_xc~4 forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~4->none~set~4 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->none~set~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_order~4.html"},{"title":"create – ForCAD","text":"private pure subroutine create(this, res1, res2, Xt1, Xt2) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) Calls proc~~create~4~~CallsGraph proc~create~4 forcad_nurbs_surface::nurbs_surface%create interface~ndgrid forcad_utils::ndgrid proc~create~4->interface~ndgrid proc~basis_bspline forcad_utils::basis_bspline proc~create~4->proc~basis_bspline proc~kron forcad_utils::kron proc~create~4->proc~kron proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~create~4~~CalledByGraph proc~create~4 forcad_nurbs_surface::nurbs_surface%create program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~create~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/create~4.html"},{"title":"export_Xc – ForCAD","text":"private impure subroutine export_Xc(this, filename) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xc~4~~CallsGraph proc~export_xc~4 forcad_nurbs_surface::nurbs_surface%export_Xc proc~get_elem_xc~4 forcad_nurbs_surface::nurbs_surface%get_elem_Xc proc~export_xc~4->proc~get_elem_xc~4 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~4->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xc~4~~CalledByGraph proc~export_xc~4 forcad_nurbs_surface::nurbs_surface%export_Xc program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~export_xc~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xc~4.html"},{"title":"export_Xg – ForCAD","text":"private impure subroutine export_Xg(this, filename) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xg~4~~CallsGraph proc~export_xg~4 forcad_nurbs_surface::nurbs_surface%export_Xg proc~get_elem_xg~4 forcad_nurbs_surface::nurbs_surface%get_elem_Xg proc~export_xg~4->proc~get_elem_xg~4 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~4->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xg~4~~CalledByGraph proc~export_xg~4 forcad_nurbs_surface::nurbs_surface%export_Xg program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~export_xg~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xg~4.html"},{"title":"finalize – ForCAD","text":"private pure subroutine finalize(this) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this Called by proc~~finalize~4~~CalledByGraph proc~finalize~4 forcad_nurbs_surface::nurbs_surface%finalize program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~finalize~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/finalize~4.html"},{"title":"get_elem_Xc – ForCAD","text":"private pure subroutine get_elem_Xc(this, elemConn, p) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) Calls proc~~get_elem_xc~4~~CallsGraph proc~get_elem_xc~4 forcad_nurbs_surface::nurbs_surface%get_elem_Xc interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~4->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xc~4~~CalledByGraph proc~get_elem_xc~4 forcad_nurbs_surface::nurbs_surface%get_elem_Xc proc~export_xc~4 forcad_nurbs_surface::nurbs_surface%export_Xc proc~export_xc~4->proc~get_elem_xc~4 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~export_xc~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xc~4.html"},{"title":"get_elem_Xg – ForCAD","text":"private pure subroutine get_elem_Xg(this, elemConn, p) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) Calls proc~~get_elem_xg~4~~CallsGraph proc~get_elem_xg~4 forcad_nurbs_surface::nurbs_surface%get_elem_Xg interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~4->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xg~4~~CalledByGraph proc~get_elem_xg~4 forcad_nurbs_surface::nurbs_surface%get_elem_Xg proc~export_xg~4 forcad_nurbs_surface::nurbs_surface%export_Xg proc~export_xg~4->proc~get_elem_xg~4 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~export_xg~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xg~4.html"},{"title":"modify_Wc – ForCAD","text":"private pure subroutine modify_Wc(this, W, num) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num Calls proc~~modify_wc~4~~CallsGraph proc~modify_wc~4 forcad_nurbs_surface::nurbs_surface%modify_Wc none~set~4 forcad_nurbs_surface::nurbs_surface%set proc~modify_wc~4->none~set~4 proc~set1~2 forcad_nurbs_surface::nurbs_surface%set1 none~set~4->proc~set1~2 proc~set2~2 forcad_nurbs_surface::nurbs_surface%set2 none~set~4->proc~set2~2 proc~get_nc~4 forcad_nurbs_surface::nurbs_surface%get_nc proc~set1~2->proc~get_nc~4 proc~get_order~4 forcad_nurbs_surface::nurbs_surface%get_order proc~set1~2->proc~get_order~4 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2~2->proc~compute_knot_vector proc~set2~2->proc~get_nc~4 proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~4->proc~compute_multiplicity proc~get_multiplicity~2 forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~get_order~4->proc~get_multiplicity~2 proc~get_multiplicity~2->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_wc~4.html"},{"title":"modify_Xc – ForCAD","text":"private pure subroutine modify_Xc(this, X, num, dir) Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir Calls proc~~modify_xc~4~~CallsGraph proc~modify_xc~4 forcad_nurbs_surface::nurbs_surface%modify_Xc none~set~4 forcad_nurbs_surface::nurbs_surface%set proc~modify_xc~4->none~set~4 proc~set1~2 forcad_nurbs_surface::nurbs_surface%set1 none~set~4->proc~set1~2 proc~set2~2 forcad_nurbs_surface::nurbs_surface%set2 none~set~4->proc~set2~2 proc~get_nc~4 forcad_nurbs_surface::nurbs_surface%get_nc proc~set1~2->proc~get_nc~4 proc~get_order~4 forcad_nurbs_surface::nurbs_surface%get_order proc~set1~2->proc~get_order~4 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2~2->proc~compute_knot_vector proc~set2~2->proc~get_nc~4 proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~4->proc~compute_multiplicity proc~get_multiplicity~2 forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~get_order~4->proc~get_multiplicity~2 proc~get_multiplicity~2->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_xc~4.html"},{"title":"set1 – ForCAD","text":"private pure subroutine set1(this, knot1, knot2, Xc, Wc) Set control points and weights for the NURBS surface object. Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: knot1 (:) real(kind=rk), intent(in) :: knot2 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Calls proc~~set1~2~~CallsGraph proc~set1~2 forcad_nurbs_surface::nurbs_surface%set1 proc~get_nc~4 forcad_nurbs_surface::nurbs_surface%get_nc proc~set1~2->proc~get_nc~4 proc~get_order~4 forcad_nurbs_surface::nurbs_surface%get_order proc~set1~2->proc~get_order~4 proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~4->proc~compute_multiplicity proc~get_multiplicity~2 forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~get_order~4->proc~get_multiplicity~2 proc~get_multiplicity~2->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~set1~2~~CalledByGraph proc~set1~2 forcad_nurbs_surface::nurbs_surface%set1 none~set~4 forcad_nurbs_surface::nurbs_surface%set none~set~4->proc~set1~2 proc~modify_wc~4 forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~4->none~set~4 proc~modify_xc~4 forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~4->none~set~4 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->none~set~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set1~2.html"},{"title":"set2 – ForCAD","text":"private pure subroutine set2(this, Xth_dir1, Xth_dir2, order, continuity1, continuity2, Xc, Wc) Set control points and weights for the NURBS surface object. Type Bound nurbs_surface Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir1 (:) real(kind=rk), intent(in) :: Xth_dir2 (:) integer, intent(in) :: order (:) integer, intent(in) :: continuity1 (:) integer, intent(in) :: continuity2 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Calls proc~~set2~2~~CallsGraph proc~set2~2 forcad_nurbs_surface::nurbs_surface%set2 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2~2->proc~compute_knot_vector proc~get_nc~4 forcad_nurbs_surface::nurbs_surface%get_nc proc~set2~2->proc~get_nc~4 proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~4->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~set2~2~~CalledByGraph proc~set2~2 forcad_nurbs_surface::nurbs_surface%set2 none~set~4 forcad_nurbs_surface::nurbs_surface%set none~set~4->proc~set2~2 proc~modify_wc~4 forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~4->none~set~4 proc~modify_xc~4 forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~4->none~set~4 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->none~set~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set2~2.html"},{"title":"generate_Xc – ForCAD","text":"function generate_Xc(num_rows, num_cols, peak_height) result(control_points) Arguments Type Intent Optional Attributes Name integer, intent(in) :: num_rows integer, intent(in) :: num_cols real(kind=rk), intent(in) :: peak_height Return Value real(kind=rk), dimension(:,:), allocatable Called by proc~~generate_xc~4~~CalledByGraph proc~generate_xc~4 example_nurbs_surface::generate_Xc program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~generate_xc~4 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/generate_xc~4.html"},{"title":"generate_Xc – ForCAD","text":"function generate_Xc(L) result(control_points) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: L Return Value real(kind=rk), dimension(:,:), allocatable Called by proc~~generate_xc~5~~CalledByGraph proc~generate_xc~5 example_bezier_volume::generate_Xc program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~generate_xc~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/generate_xc~5.html"},{"title":"get_Wc – ForCAD","text":"private pure function get_Wc(this) result(Wc) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_wc~5.html"},{"title":"get_Xc – ForCAD","text":"private pure function get_Xc(this) result(Xc) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xc~5.html"},{"title":"get_Xg – ForCAD","text":"private pure function get_Xg(this) result(Xg) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xg~5.html"},{"title":"get_Xt – ForCAD","text":"private pure function get_Xt(this) result(Xt) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_xt~5.html"},{"title":"get_continuity – ForCAD","text":"private pure function get_continuity(this) result(c) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer, allocatable, (:) Calls proc~~get_continuity~3~~CallsGraph proc~get_continuity~3 forcad_nurbs_curve::nurbs_curve%get_continuity proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_continuity~3->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_continuity~3.html"},{"title":"get_knot – ForCAD","text":"private pure function get_knot(this) result(knot) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_knot~3.html"},{"title":"get_multiplicity – ForCAD","text":"private pure function get_multiplicity(this) result(m) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer, allocatable, (:) Calls proc~~get_multiplicity~3~~CallsGraph proc~get_multiplicity~3 forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity~3->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_multiplicity~3~~CalledByGraph proc~get_multiplicity~3 forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~get_order~5 forcad_nurbs_curve::nurbs_curve%get_order proc~get_order~5->proc~get_multiplicity~3 proc~set1~3 forcad_nurbs_curve::nurbs_curve%set1 proc~set1~3->proc~get_order~5 none~set~5 forcad_nurbs_curve::nurbs_curve%set none~set~5->proc~set1~3 proc~modify_wc~5 forcad_nurbs_curve::nurbs_curve%modify_Wc proc~modify_wc~5->none~set~5 proc~modify_xc~5 forcad_nurbs_curve::nurbs_curve%modify_Xc proc~modify_xc~5->none~set~5 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->none~set~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_multiplicity~3.html"},{"title":"get_nc – ForCAD","text":"private pure function get_nc(this) result(nc) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer Calls proc~~get_nc~5~~CallsGraph proc~get_nc~5 forcad_nurbs_curve::nurbs_curve%get_nc proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~5->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_nc~5.html"},{"title":"get_ng – ForCAD","text":"private pure function get_ng(this) result(ng) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer","tags":"","loc":"proc/get_ng~5.html"},{"title":"get_order – ForCAD","text":"private pure function get_order(this) result(order) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer Calls proc~~get_order~5~~CallsGraph proc~get_order~5 forcad_nurbs_curve::nurbs_curve%get_order proc~get_multiplicity~3 forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~get_order~5->proc~get_multiplicity~3 proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity~3->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_order~5~~CalledByGraph proc~get_order~5 forcad_nurbs_curve::nurbs_curve%get_order proc~set1~3 forcad_nurbs_curve::nurbs_curve%set1 proc~set1~3->proc~get_order~5 none~set~5 forcad_nurbs_curve::nurbs_curve%set none~set~5->proc~set1~3 proc~modify_wc~5 forcad_nurbs_curve::nurbs_curve%modify_Wc proc~modify_wc~5->none~set~5 proc~modify_xc~5 forcad_nurbs_curve::nurbs_curve%modify_Xc proc~modify_xc~5->none~set~5 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->none~set~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_order~5.html"},{"title":"create – ForCAD","text":"private pure subroutine create(this, res, Xt) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this integer, intent(in), optional :: res real(kind=rk), intent(in), optional :: Xt (:) Calls proc~~create~5~~CallsGraph proc~create~5 forcad_nurbs_curve::nurbs_curve%create proc~basis_bspline forcad_utils::basis_bspline proc~create~5->proc~basis_bspline Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~create~5~~CalledByGraph proc~create~5 forcad_nurbs_curve::nurbs_curve%create program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~create~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/create~5.html"},{"title":"export_Xc – ForCAD","text":"private impure subroutine export_Xc(this, filename) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xc~5~~CallsGraph proc~export_xc~5 forcad_nurbs_curve::nurbs_curve%export_Xc proc~get_elem_xc~5 forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~export_xc~5->proc~get_elem_xc~5 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~5->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xc~5~~CalledByGraph proc~export_xc~5 forcad_nurbs_curve::nurbs_curve%export_Xc program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~export_xc~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xc~5.html"},{"title":"export_Xg – ForCAD","text":"private impure subroutine export_Xg(this, filename) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xg~5~~CallsGraph proc~export_xg~5 forcad_nurbs_curve::nurbs_curve%export_Xg proc~get_elem_xg~5 forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~export_xg~5->proc~get_elem_xg~5 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~5->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xg~5~~CalledByGraph proc~export_xg~5 forcad_nurbs_curve::nurbs_curve%export_Xg program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~export_xg~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xg~5.html"},{"title":"finalize – ForCAD","text":"private pure subroutine finalize(this) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this Called by proc~~finalize~5~~CalledByGraph proc~finalize~5 forcad_nurbs_curve::nurbs_curve%finalize program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~finalize~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/finalize~5.html"},{"title":"get_elem_Xc – ForCAD","text":"private pure subroutine get_elem_Xc(this, elemConn, p) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p Calls proc~~get_elem_xc~5~~CallsGraph proc~get_elem_xc~5 forcad_nurbs_curve::nurbs_curve%get_elem_Xc interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~5->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xc~5~~CalledByGraph proc~get_elem_xc~5 forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~export_xc~5 forcad_nurbs_curve::nurbs_curve%export_Xc proc~export_xc~5->proc~get_elem_xc~5 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~export_xc~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xc~5.html"},{"title":"get_elem_Xg – ForCAD","text":"private pure subroutine get_elem_Xg(this, elemConn, p) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p Calls proc~~get_elem_xg~5~~CallsGraph proc~get_elem_xg~5 forcad_nurbs_curve::nurbs_curve%get_elem_Xg interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~5->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xg~5~~CalledByGraph proc~get_elem_xg~5 forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~export_xg~5 forcad_nurbs_curve::nurbs_curve%export_Xg proc~export_xg~5->proc~get_elem_xg~5 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~export_xg~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xg~5.html"},{"title":"modify_Wc – ForCAD","text":"private pure subroutine modify_Wc(this, W, num) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num Calls proc~~modify_wc~5~~CallsGraph proc~modify_wc~5 forcad_nurbs_curve::nurbs_curve%modify_Wc none~set~5 forcad_nurbs_curve::nurbs_curve%set proc~modify_wc~5->none~set~5 proc~set1~3 forcad_nurbs_curve::nurbs_curve%set1 none~set~5->proc~set1~3 proc~set2~3 forcad_nurbs_curve::nurbs_curve%set2 none~set~5->proc~set2~3 proc~get_order~5 forcad_nurbs_curve::nurbs_curve%get_order proc~set1~3->proc~get_order~5 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2~3->proc~compute_knot_vector proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~get_multiplicity~3 forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~get_order~5->proc~get_multiplicity~3 proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity~3->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_wc~5.html"},{"title":"modify_Xc – ForCAD","text":"private pure subroutine modify_Xc(this, X, num, dir) Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir Calls proc~~modify_xc~5~~CallsGraph proc~modify_xc~5 forcad_nurbs_curve::nurbs_curve%modify_Xc none~set~5 forcad_nurbs_curve::nurbs_curve%set proc~modify_xc~5->none~set~5 proc~set1~3 forcad_nurbs_curve::nurbs_curve%set1 none~set~5->proc~set1~3 proc~set2~3 forcad_nurbs_curve::nurbs_curve%set2 none~set~5->proc~set2~3 proc~get_order~5 forcad_nurbs_curve::nurbs_curve%get_order proc~set1~3->proc~get_order~5 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2~3->proc~compute_knot_vector proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~get_multiplicity~3 forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~get_order~5->proc~get_multiplicity~3 proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity~3->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_xc~5.html"},{"title":"set1 – ForCAD","text":"private pure subroutine set1(this, knot, Xc, Wc) Set control points and weights for the Bezier curve object. Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: knot (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Calls proc~~set1~3~~CallsGraph proc~set1~3 forcad_nurbs_curve::nurbs_curve%set1 proc~get_order~5 forcad_nurbs_curve::nurbs_curve%get_order proc~set1~3->proc~get_order~5 proc~get_multiplicity~3 forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~get_order~5->proc~get_multiplicity~3 proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity~3->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~set1~3~~CalledByGraph proc~set1~3 forcad_nurbs_curve::nurbs_curve%set1 none~set~5 forcad_nurbs_curve::nurbs_curve%set none~set~5->proc~set1~3 proc~modify_wc~5 forcad_nurbs_curve::nurbs_curve%modify_Wc proc~modify_wc~5->none~set~5 proc~modify_xc~5 forcad_nurbs_curve::nurbs_curve%modify_Xc proc~modify_xc~5->none~set~5 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->none~set~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set1~3.html"},{"title":"set2 – ForCAD","text":"private pure subroutine set2(this, Xth_dir, order, continuity, Xc, Wc) Set control points and weights for the Bezier curve object. Type Bound nurbs_curve Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir (:) integer, intent(in) :: order integer, intent(in) :: continuity (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Calls proc~~set2~3~~CallsGraph proc~set2~3 forcad_nurbs_curve::nurbs_curve%set2 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2~3->proc~compute_knot_vector proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~set2~3~~CalledByGraph proc~set2~3 forcad_nurbs_curve::nurbs_curve%set2 none~set~5 forcad_nurbs_curve::nurbs_curve%set none~set~5->proc~set2~3 proc~modify_wc~5 forcad_nurbs_curve::nurbs_curve%modify_Wc proc~modify_wc~5->none~set~5 proc~modify_xc~5 forcad_nurbs_curve::nurbs_curve%modify_Xc proc~modify_xc~5->none~set~5 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->none~set~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set2~3.html"},{"title":"get_Wc – ForCAD","text":"private pure function get_Wc(this) result(Wc) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_wc~6.html"},{"title":"get_Xc – ForCAD","text":"private pure function get_Xc(this) result(Xc) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xc~6.html"},{"title":"get_Xg – ForCAD","text":"private pure function get_Xg(this) result(Xg) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:)","tags":"","loc":"proc/get_xg~6.html"},{"title":"get_Xt – ForCAD","text":"private pure function get_Xt(this, dir) result(Xt) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:)","tags":"","loc":"proc/get_xt~6.html"},{"title":"get_nc – ForCAD","text":"private pure function get_nc(this) result(nc) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2)","tags":"","loc":"proc/get_nc~6.html"},{"title":"get_ng – ForCAD","text":"private pure function get_ng(this) result(ng) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2)","tags":"","loc":"proc/get_ng~6.html"},{"title":"get_order – ForCAD","text":"private pure function get_order(this) result(order) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2)","tags":"","loc":"proc/get_order~6.html"},{"title":"create – ForCAD","text":"private pure subroutine create(this, res1, res2, Xt1, Xt2) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) Calls proc~~create~6~~CallsGraph proc~create~6 forcad_bezier_surface::bezier_surface%create interface~ndgrid forcad_utils::ndgrid proc~create~6->interface~ndgrid proc~basis_bernstein forcad_utils::basis_bernstein proc~create~6->proc~basis_bernstein proc~kron forcad_utils::kron proc~create~6->proc~kron proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~create~6~~CalledByGraph proc~create~6 forcad_bezier_surface::bezier_surface%create program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~create~6 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code pure subroutine create ( this , res1 , res2 , Xt1 , Xt2 ) class ( bezier_surface ), intent ( inout ) :: this integer , intent ( in ), optional :: res1 , res2 real ( rk ), intent ( in ), optional :: Xt1 (:), Xt2 (:) integer :: i , j real ( rk ), dimension (:), allocatable :: Tgc1 , Tgc2 , Tgc real ( rk ), dimension (:,:), allocatable :: Xt ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if ! Set parameter values if ( present ( Xt1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) this % Xt1 = Xt1 elseif ( present ( res1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) allocate ( this % Xt1 ( res1 )) this % Xt1 = [( real ( i - 1 , rk ) / real ( res1 - 1 , rk ), i = 1 , res1 )] ! else ! this%Xt1 = this%Xt1 end if ! Set parameter values if ( present ( Xt2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) this % Xt2 = Xt2 elseif ( present ( res2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) allocate ( this % Xt2 ( res2 )) this % Xt2 = [( real ( i - 1 , rk ) / real ( res2 - 1 , rk ), i = 1 , res2 )] ! else ! this%Xt2 = this%Xt2 end if ! Set number of geometry points this % ng ( 1 ) = size ( this % Xt1 , 1 ) this % ng ( 2 ) = size ( this % Xt2 , 1 ) call ndgrid ( this % Xt1 , this % Xt2 , Xt ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) allocate ( this % Xg ( this % ng ( 1 ) * this % ng ( 2 ), size ( this % Xc , 2 ))) if ( allocated ( this % Wc )) then ! Rational Bezier surface do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bernstein ( Xt ( i , 1 ), this % nc ( 1 )) Tgc2 = basis_bernstein ( Xt ( i , 2 ), this % nc ( 2 )) Tgc = kron ( Tgc2 , Tgc1 ) Tgc = Tgc * ( this % Wc / ( dot_product ( Tgc , this % Wc ))) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do else ! Non-rational Bezier surface do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bernstein ( Xt ( i , 1 ), this % nc ( 1 )) Tgc2 = basis_bernstein ( Xt ( i , 2 ), this % nc ( 2 )) Tgc = kron ( Tgc2 , Tgc1 ) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do end if end subroutine create","tags":"","loc":"proc/create~6.html"},{"title":"export_Xc – ForCAD","text":"private impure subroutine export_Xc(this, filename) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xc~6~~CallsGraph proc~export_xc~6 forcad_bezier_surface::bezier_surface%export_Xc proc~get_elem_xc~6 forcad_bezier_surface::bezier_surface%get_elem_Xc proc~export_xc~6->proc~get_elem_xc~6 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~6->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xc~6~~CalledByGraph proc~export_xc~6 forcad_bezier_surface::bezier_surface%export_Xc program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~export_xc~6 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xc~6.html"},{"title":"export_Xg – ForCAD","text":"private impure subroutine export_Xg(this, filename) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this character(len=*), intent(in) :: filename Calls proc~~export_xg~6~~CallsGraph proc~export_xg~6 forcad_bezier_surface::bezier_surface%export_Xg proc~get_elem_xg~6 forcad_bezier_surface::bezier_surface%get_elem_Xg proc~export_xg~6->proc~get_elem_xg~6 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~6->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~export_xg~6~~CalledByGraph proc~export_xg~6 forcad_bezier_surface::bezier_surface%export_Xg program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~export_xg~6 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/export_xg~6.html"},{"title":"finalize – ForCAD","text":"private pure subroutine finalize(this) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this Called by proc~~finalize~6~~CalledByGraph proc~finalize~6 forcad_bezier_surface::bezier_surface%finalize program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~finalize~6 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/finalize~6.html"},{"title":"get_elem_Xc – ForCAD","text":"private pure subroutine get_elem_Xc(this, elemConn, p) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) Calls proc~~get_elem_xc~6~~CallsGraph proc~get_elem_xc~6 forcad_bezier_surface::bezier_surface%get_elem_Xc interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~6->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xc~6~~CalledByGraph proc~get_elem_xc~6 forcad_bezier_surface::bezier_surface%get_elem_Xc proc~export_xc~6 forcad_bezier_surface::bezier_surface%export_Xc proc~export_xc~6->proc~get_elem_xc~6 program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~export_xc~6 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xc~6.html"},{"title":"get_elem_Xg – ForCAD","text":"private pure subroutine get_elem_Xg(this, elemConn, p) Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) Calls proc~~get_elem_xg~6~~CallsGraph proc~get_elem_xg~6 forcad_bezier_surface::bezier_surface%get_elem_Xg interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xg~6->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~get_elem_xg~6~~CalledByGraph proc~get_elem_xg~6 forcad_bezier_surface::bezier_surface%get_elem_Xg proc~export_xg~6 forcad_bezier_surface::bezier_surface%export_Xg proc~export_xg~6->proc~get_elem_xg~6 program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~export_xg~6 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/get_elem_xg~6.html"},{"title":"modify_Wc – ForCAD","text":"private pure subroutine modify_Wc(this, W, num) Modify weight of a control point given its index. Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num Calls proc~~modify_wc~6~~CallsGraph proc~modify_wc~6 forcad_bezier_surface::bezier_surface%modify_Wc proc~set~3 forcad_bezier_surface::bezier_surface%set proc~modify_wc~6->proc~set~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_wc~6.html"},{"title":"modify_Xc – ForCAD","text":"private pure subroutine modify_Xc(this, X, num, dir) Modify coordinate of a control point given its index and direction. Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir Calls proc~~modify_xc~6~~CallsGraph proc~modify_xc~6 forcad_bezier_surface::bezier_surface%modify_Xc proc~set~3 forcad_bezier_surface::bezier_surface%set proc~modify_xc~6->proc~set~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/modify_xc~6.html"},{"title":"set – ForCAD","text":"private pure subroutine set(this, nc, Xc, Wc) Set control points and weights for the Bezier curve object. Type Bound bezier_surface Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this integer, intent(in) :: nc (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) Called by proc~~set~3~~CalledByGraph proc~set~3 forcad_bezier_surface::bezier_surface%set proc~modify_wc~6 forcad_bezier_surface::bezier_surface%modify_Wc proc~modify_wc~6->proc~set~3 proc~modify_xc~6 forcad_bezier_surface::bezier_surface%modify_Xc proc~modify_xc~6->proc~set~3 program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~set~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/set~3.html"},{"title":"basis_bernstein – ForCAD","text":"public pure function basis_bernstein(Xt, nc) result(B) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: Xt integer, intent(in) :: nc Return Value real(kind=rk), allocatable, (:) Called by proc~~basis_bernstein~~CalledByGraph proc~basis_bernstein forcad_utils::basis_bernstein proc~create~2 forcad_bezier_curve::bezier_curve%create proc~create~2->proc~basis_bernstein proc~create~3 forcad_bezier_volume::bezier_volume%create proc~create~3->proc~basis_bernstein proc~create~6 forcad_bezier_surface::bezier_surface%create proc~create~6->proc~basis_bernstein proc~elevate_degree forcad_bezier_curve::bezier_curve%elevate_degree proc~elevate_degree->proc~create~2 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~create~2 program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~create~6 program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~create~3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/basis_bernstein.html"},{"title":"basis_bspline – ForCAD","text":"public pure function basis_bspline(Xt, knot, nc, order) result(B) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: Xt real(kind=rk), intent(in) :: knot (:) integer, intent(in) :: nc integer, intent(in) :: order Return Value real(kind=rk), allocatable, (:) Called by proc~~basis_bspline~~CalledByGraph proc~basis_bspline forcad_utils::basis_bspline proc~create forcad_nurbs_volume::nurbs_volume%create proc~create->proc~basis_bspline proc~create~4 forcad_nurbs_surface::nurbs_surface%create proc~create~4->proc~basis_bspline proc~create~5 forcad_nurbs_curve::nurbs_curve%create proc~create~5->proc~basis_bspline program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~create~5 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~create~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~create Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/basis_bspline.html"},{"title":"compute_knot_vector – ForCAD","text":"public pure function compute_knot_vector(Xth_dir, order, continuity) result(knot) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: Xth_dir (:) integer, intent(in) :: order integer, intent(in) :: continuity (:) Return Value real(kind=rk), allocatable, (:) Calls proc~~compute_knot_vector~~CallsGraph proc~compute_knot_vector forcad_utils::compute_knot_vector proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by proc~~compute_knot_vector~~CalledByGraph proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2 forcad_nurbs_volume::nurbs_volume%set2 proc~set2->proc~compute_knot_vector proc~set2~2 forcad_nurbs_surface::nurbs_surface%set2 proc~set2~2->proc~compute_knot_vector proc~set2~3 forcad_nurbs_curve::nurbs_curve%set2 proc~set2~3->proc~compute_knot_vector none~set forcad_nurbs_volume::nurbs_volume%set none~set->proc~set2 none~set~4 forcad_nurbs_surface::nurbs_surface%set none~set~4->proc~set2~2 none~set~5 forcad_nurbs_curve::nurbs_curve%set none~set~5->proc~set2~3 proc~modify_wc forcad_nurbs_volume::nurbs_volume%modify_Wc proc~modify_wc->none~set proc~modify_wc~4 forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~4->none~set~4 proc~modify_wc~5 forcad_nurbs_curve::nurbs_curve%modify_Wc proc~modify_wc~5->none~set~5 proc~modify_xc forcad_nurbs_volume::nurbs_volume%modify_Xc proc~modify_xc->none~set proc~modify_xc~4 forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~4->none~set~4 proc~modify_xc~5 forcad_nurbs_curve::nurbs_curve%modify_Xc proc~modify_xc~5->none~set~5 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->none~set~5 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->none~set~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->none~set Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/compute_knot_vector.html"},{"title":"compute_multiplicity – ForCAD","text":"public pure function compute_multiplicity(knot) result(multiplicity) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: knot (:) Return Value integer, dimension(:), allocatable Called by proc~~compute_multiplicity~~CalledByGraph proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_continuity forcad_nurbs_volume::nurbs_volume%get_continuity proc~get_continuity->proc~compute_multiplicity proc~get_continuity~2 forcad_nurbs_surface::nurbs_surface%get_continuity proc~get_continuity~2->proc~compute_multiplicity proc~get_continuity~3 forcad_nurbs_curve::nurbs_curve%get_continuity proc~get_continuity~3->proc~compute_multiplicity proc~get_multiplicity forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~get_multiplicity->proc~compute_multiplicity proc~get_multiplicity~2 forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~get_multiplicity~2->proc~compute_multiplicity proc~get_multiplicity~3 forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~get_multiplicity~3->proc~compute_multiplicity proc~get_nc forcad_nurbs_volume::nurbs_volume%get_nc proc~get_nc->proc~compute_multiplicity proc~get_nc~4 forcad_nurbs_surface::nurbs_surface%get_nc proc~get_nc~4->proc~compute_multiplicity proc~get_nc~5 forcad_nurbs_curve::nurbs_curve%get_nc proc~get_nc~5->proc~compute_multiplicity proc~get_order forcad_nurbs_volume::nurbs_volume%get_order proc~get_order->proc~get_multiplicity proc~get_order~4 forcad_nurbs_surface::nurbs_surface%get_order proc~get_order~4->proc~get_multiplicity~2 proc~get_order~5 forcad_nurbs_curve::nurbs_curve%get_order proc~get_order~5->proc~get_multiplicity~3 proc~set1 forcad_nurbs_volume::nurbs_volume%set1 proc~set1->proc~get_nc proc~set1->proc~get_order proc~set1~2 forcad_nurbs_surface::nurbs_surface%set1 proc~set1~2->proc~get_nc~4 proc~set1~2->proc~get_order~4 proc~set2 forcad_nurbs_volume::nurbs_volume%set2 proc~set2->proc~get_nc proc~set2~2 forcad_nurbs_surface::nurbs_surface%set2 proc~set2~2->proc~get_nc~4 none~set forcad_nurbs_volume::nurbs_volume%set none~set->proc~set1 none~set->proc~set2 none~set~4 forcad_nurbs_surface::nurbs_surface%set none~set~4->proc~set1~2 none~set~4->proc~set2~2 proc~set1~3 forcad_nurbs_curve::nurbs_curve%set1 proc~set1~3->proc~get_order~5 none~set~5 forcad_nurbs_curve::nurbs_curve%set none~set~5->proc~set1~3 proc~modify_wc forcad_nurbs_volume::nurbs_volume%modify_Wc proc~modify_wc->none~set proc~modify_wc~4 forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~4->none~set~4 proc~modify_xc forcad_nurbs_volume::nurbs_volume%modify_Xc proc~modify_xc->none~set proc~modify_xc~4 forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~4->none~set~4 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->none~set~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->none~set proc~modify_wc~5 forcad_nurbs_curve::nurbs_curve%modify_Wc proc~modify_wc~5->none~set~5 proc~modify_xc~5 forcad_nurbs_curve::nurbs_curve%modify_Xc proc~modify_xc~5->none~set~5 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->none~set~5 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/compute_multiplicity.html"},{"title":"kron – ForCAD","text":"public pure function kron(u, v) result(w) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: u real(kind=rk), intent(in), dimension(:), contiguous :: v Return Value real(kind=rk), dimension(size(u)*size(v)) Called by proc~~kron~~CalledByGraph proc~kron forcad_utils::kron proc~create forcad_nurbs_volume::nurbs_volume%create proc~create->proc~kron proc~create~3 forcad_bezier_volume::bezier_volume%create proc~create~3->proc~kron proc~create~4 forcad_nurbs_surface::nurbs_surface%create proc~create~4->proc~kron proc~create~6 forcad_bezier_surface::bezier_surface%create proc~create~6->proc~kron program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~create~6 program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~create~3 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~create~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~create Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/kron.html"},{"title":"cmp_elemConn_C0_L – ForCAD","text":"private pure function cmp_elemConn_C0_L(nnode, p) result(elemConn) Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode integer, intent(in) :: p Return Value integer, dimension(:,:), allocatable Called by proc~~cmp_elemconn_c0_l~~CalledByGraph proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0 forcad_utils::elemConn_C0 interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~get_elem_xc forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~get_elem_xc->interface~elemconn_c0 proc~get_elem_xc~2 forcad_bezier_curve::bezier_curve%get_elem_Xc proc~get_elem_xc~2->interface~elemconn_c0 proc~get_elem_xc~3 forcad_bezier_volume::bezier_volume%get_elem_Xc proc~get_elem_xc~3->interface~elemconn_c0 proc~get_elem_xc~4 forcad_nurbs_surface::nurbs_surface%get_elem_Xc proc~get_elem_xc~4->interface~elemconn_c0 proc~get_elem_xc~5 forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~get_elem_xc~5->interface~elemconn_c0 proc~get_elem_xc~6 forcad_bezier_surface::bezier_surface%get_elem_Xc proc~get_elem_xc~6->interface~elemconn_c0 proc~get_elem_xg forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~get_elem_xg->interface~elemconn_c0 proc~get_elem_xg~2 forcad_bezier_curve::bezier_curve%get_elem_Xg proc~get_elem_xg~2->interface~elemconn_c0 proc~get_elem_xg~3 forcad_bezier_volume::bezier_volume%get_elem_Xg proc~get_elem_xg~3->interface~elemconn_c0 proc~get_elem_xg~4 forcad_nurbs_surface::nurbs_surface%get_elem_Xg proc~get_elem_xg~4->interface~elemconn_c0 proc~get_elem_xg~5 forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~get_elem_xg~5->interface~elemconn_c0 proc~get_elem_xg~6 forcad_bezier_surface::bezier_surface%get_elem_Xg proc~get_elem_xg~6->interface~elemconn_c0 proc~export_xc forcad_nurbs_volume::nurbs_volume%export_Xc proc~export_xc->proc~get_elem_xc proc~export_xc~2 forcad_bezier_curve::bezier_curve%export_Xc proc~export_xc~2->proc~get_elem_xc~2 proc~export_xc~3 forcad_bezier_volume::bezier_volume%export_Xc proc~export_xc~3->proc~get_elem_xc~3 proc~export_xc~4 forcad_nurbs_surface::nurbs_surface%export_Xc proc~export_xc~4->proc~get_elem_xc~4 proc~export_xc~5 forcad_nurbs_curve::nurbs_curve%export_Xc proc~export_xc~5->proc~get_elem_xc~5 proc~export_xc~6 forcad_bezier_surface::bezier_surface%export_Xc proc~export_xc~6->proc~get_elem_xc~6 proc~export_xg forcad_nurbs_volume::nurbs_volume%export_Xg proc~export_xg->proc~get_elem_xg proc~export_xg~2 forcad_bezier_curve::bezier_curve%export_Xg proc~export_xg~2->proc~get_elem_xg~2 proc~export_xg~3 forcad_bezier_volume::bezier_volume%export_Xg proc~export_xg~3->proc~get_elem_xg~3 proc~export_xg~4 forcad_nurbs_surface::nurbs_surface%export_Xg proc~export_xg~4->proc~get_elem_xg~4 proc~export_xg~5 forcad_nurbs_curve::nurbs_curve%export_Xg proc~export_xg~5->proc~get_elem_xg~5 proc~export_xg~6 forcad_bezier_surface::bezier_surface%export_Xg proc~export_xg~6->proc~get_elem_xg~6 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~export_xc~2 program~example_bezier_curve->proc~export_xg~2 program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~export_xc~6 program~example_bezier_surface->proc~export_xg~6 program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~export_xc~3 program~example_bezier_volume->proc~export_xg~3 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~export_xc~5 program~example_nurbs_curve->proc~export_xg~5 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~export_xc~4 program~example_nurbs_surface->proc~export_xg~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~export_xc program~example_nurbs_volume->proc~export_xg Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/cmp_elemconn_c0_l.html"},{"title":"cmp_elemConn_C0_S – ForCAD","text":"private pure function cmp_elemConn_C0_S(nnode1, nnode2, p1, p2) result(elemConn) Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode1 integer, intent(in) :: nnode2 integer, intent(in) :: p1 integer, intent(in) :: p2 Return Value integer, dimension(:,:), allocatable Called by proc~~cmp_elemconn_c0_s~~CalledByGraph proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0 forcad_utils::elemConn_C0 interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~get_elem_xc forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~get_elem_xc->interface~elemconn_c0 proc~get_elem_xc~2 forcad_bezier_curve::bezier_curve%get_elem_Xc proc~get_elem_xc~2->interface~elemconn_c0 proc~get_elem_xc~3 forcad_bezier_volume::bezier_volume%get_elem_Xc proc~get_elem_xc~3->interface~elemconn_c0 proc~get_elem_xc~4 forcad_nurbs_surface::nurbs_surface%get_elem_Xc proc~get_elem_xc~4->interface~elemconn_c0 proc~get_elem_xc~5 forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~get_elem_xc~5->interface~elemconn_c0 proc~get_elem_xc~6 forcad_bezier_surface::bezier_surface%get_elem_Xc proc~get_elem_xc~6->interface~elemconn_c0 proc~get_elem_xg forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~get_elem_xg->interface~elemconn_c0 proc~get_elem_xg~2 forcad_bezier_curve::bezier_curve%get_elem_Xg proc~get_elem_xg~2->interface~elemconn_c0 proc~get_elem_xg~3 forcad_bezier_volume::bezier_volume%get_elem_Xg proc~get_elem_xg~3->interface~elemconn_c0 proc~get_elem_xg~4 forcad_nurbs_surface::nurbs_surface%get_elem_Xg proc~get_elem_xg~4->interface~elemconn_c0 proc~get_elem_xg~5 forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~get_elem_xg~5->interface~elemconn_c0 proc~get_elem_xg~6 forcad_bezier_surface::bezier_surface%get_elem_Xg proc~get_elem_xg~6->interface~elemconn_c0 proc~export_xc forcad_nurbs_volume::nurbs_volume%export_Xc proc~export_xc->proc~get_elem_xc proc~export_xc~2 forcad_bezier_curve::bezier_curve%export_Xc proc~export_xc~2->proc~get_elem_xc~2 proc~export_xc~3 forcad_bezier_volume::bezier_volume%export_Xc proc~export_xc~3->proc~get_elem_xc~3 proc~export_xc~4 forcad_nurbs_surface::nurbs_surface%export_Xc proc~export_xc~4->proc~get_elem_xc~4 proc~export_xc~5 forcad_nurbs_curve::nurbs_curve%export_Xc proc~export_xc~5->proc~get_elem_xc~5 proc~export_xc~6 forcad_bezier_surface::bezier_surface%export_Xc proc~export_xc~6->proc~get_elem_xc~6 proc~export_xg forcad_nurbs_volume::nurbs_volume%export_Xg proc~export_xg->proc~get_elem_xg proc~export_xg~2 forcad_bezier_curve::bezier_curve%export_Xg proc~export_xg~2->proc~get_elem_xg~2 proc~export_xg~3 forcad_bezier_volume::bezier_volume%export_Xg proc~export_xg~3->proc~get_elem_xg~3 proc~export_xg~4 forcad_nurbs_surface::nurbs_surface%export_Xg proc~export_xg~4->proc~get_elem_xg~4 proc~export_xg~5 forcad_nurbs_curve::nurbs_curve%export_Xg proc~export_xg~5->proc~get_elem_xg~5 proc~export_xg~6 forcad_bezier_surface::bezier_surface%export_Xg proc~export_xg~6->proc~get_elem_xg~6 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~export_xc~2 program~example_bezier_curve->proc~export_xg~2 program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~export_xc~6 program~example_bezier_surface->proc~export_xg~6 program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~export_xc~3 program~example_bezier_volume->proc~export_xg~3 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~export_xc~5 program~example_nurbs_curve->proc~export_xg~5 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~export_xc~4 program~example_nurbs_surface->proc~export_xg~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~export_xc program~example_nurbs_volume->proc~export_xg Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/cmp_elemconn_c0_s.html"},{"title":"cmp_elemConn_C0_V – ForCAD","text":"private pure function cmp_elemConn_C0_V(nnode1, nnode2, nnode3, p1, p2, p3) result(elemConn) Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode1 integer, intent(in) :: nnode2 integer, intent(in) :: nnode3 integer, intent(in) :: p1 integer, intent(in) :: p2 integer, intent(in) :: p3 Return Value integer, dimension(:,:), allocatable Called by proc~~cmp_elemconn_c0_v~~CalledByGraph proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0 forcad_utils::elemConn_C0 interface~elemconn_c0->proc~cmp_elemconn_c0_v proc~get_elem_xc forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~get_elem_xc->interface~elemconn_c0 proc~get_elem_xc~2 forcad_bezier_curve::bezier_curve%get_elem_Xc proc~get_elem_xc~2->interface~elemconn_c0 proc~get_elem_xc~3 forcad_bezier_volume::bezier_volume%get_elem_Xc proc~get_elem_xc~3->interface~elemconn_c0 proc~get_elem_xc~4 forcad_nurbs_surface::nurbs_surface%get_elem_Xc proc~get_elem_xc~4->interface~elemconn_c0 proc~get_elem_xc~5 forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~get_elem_xc~5->interface~elemconn_c0 proc~get_elem_xc~6 forcad_bezier_surface::bezier_surface%get_elem_Xc proc~get_elem_xc~6->interface~elemconn_c0 proc~get_elem_xg forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~get_elem_xg->interface~elemconn_c0 proc~get_elem_xg~2 forcad_bezier_curve::bezier_curve%get_elem_Xg proc~get_elem_xg~2->interface~elemconn_c0 proc~get_elem_xg~3 forcad_bezier_volume::bezier_volume%get_elem_Xg proc~get_elem_xg~3->interface~elemconn_c0 proc~get_elem_xg~4 forcad_nurbs_surface::nurbs_surface%get_elem_Xg proc~get_elem_xg~4->interface~elemconn_c0 proc~get_elem_xg~5 forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~get_elem_xg~5->interface~elemconn_c0 proc~get_elem_xg~6 forcad_bezier_surface::bezier_surface%get_elem_Xg proc~get_elem_xg~6->interface~elemconn_c0 proc~export_xc forcad_nurbs_volume::nurbs_volume%export_Xc proc~export_xc->proc~get_elem_xc proc~export_xc~2 forcad_bezier_curve::bezier_curve%export_Xc proc~export_xc~2->proc~get_elem_xc~2 proc~export_xc~3 forcad_bezier_volume::bezier_volume%export_Xc proc~export_xc~3->proc~get_elem_xc~3 proc~export_xc~4 forcad_nurbs_surface::nurbs_surface%export_Xc proc~export_xc~4->proc~get_elem_xc~4 proc~export_xc~5 forcad_nurbs_curve::nurbs_curve%export_Xc proc~export_xc~5->proc~get_elem_xc~5 proc~export_xc~6 forcad_bezier_surface::bezier_surface%export_Xc proc~export_xc~6->proc~get_elem_xc~6 proc~export_xg forcad_nurbs_volume::nurbs_volume%export_Xg proc~export_xg->proc~get_elem_xg proc~export_xg~2 forcad_bezier_curve::bezier_curve%export_Xg proc~export_xg~2->proc~get_elem_xg~2 proc~export_xg~3 forcad_bezier_volume::bezier_volume%export_Xg proc~export_xg~3->proc~get_elem_xg~3 proc~export_xg~4 forcad_nurbs_surface::nurbs_surface%export_Xg proc~export_xg~4->proc~get_elem_xg~4 proc~export_xg~5 forcad_nurbs_curve::nurbs_curve%export_Xg proc~export_xg~5->proc~get_elem_xg~5 proc~export_xg~6 forcad_bezier_surface::bezier_surface%export_Xg proc~export_xg~6->proc~get_elem_xg~6 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~export_xc~2 program~example_bezier_curve->proc~export_xg~2 program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~export_xc~6 program~example_bezier_surface->proc~export_xg~6 program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~export_xc~3 program~example_bezier_volume->proc~export_xg~3 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~export_xc~5 program~example_nurbs_curve->proc~export_xg~5 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~export_xc~4 program~example_nurbs_surface->proc~export_xg~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~export_xc program~example_nurbs_volume->proc~export_xg Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/cmp_elemconn_c0_v.html"},{"title":"repelem – ForCAD","text":"private pure function repelem(a, b) result(c) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: a integer, intent(in), dimension(:), contiguous :: b Return Value real(kind=rk), dimension(sum(b)) Called by proc~~repelem~~CalledByGraph proc~repelem forcad_utils::repelem proc~compute_knot_vector forcad_utils::compute_knot_vector proc~compute_knot_vector->proc~repelem proc~set2 forcad_nurbs_volume::nurbs_volume%set2 proc~set2->proc~compute_knot_vector proc~set2~2 forcad_nurbs_surface::nurbs_surface%set2 proc~set2~2->proc~compute_knot_vector proc~set2~3 forcad_nurbs_curve::nurbs_curve%set2 proc~set2~3->proc~compute_knot_vector none~set forcad_nurbs_volume::nurbs_volume%set none~set->proc~set2 none~set~4 forcad_nurbs_surface::nurbs_surface%set none~set~4->proc~set2~2 none~set~5 forcad_nurbs_curve::nurbs_curve%set none~set~5->proc~set2~3 proc~modify_wc forcad_nurbs_volume::nurbs_volume%modify_Wc proc~modify_wc->none~set proc~modify_wc~4 forcad_nurbs_surface::nurbs_surface%modify_Wc proc~modify_wc~4->none~set~4 proc~modify_wc~5 forcad_nurbs_curve::nurbs_curve%modify_Wc proc~modify_wc~5->none~set~5 proc~modify_xc forcad_nurbs_volume::nurbs_volume%modify_Xc proc~modify_xc->none~set proc~modify_xc~4 forcad_nurbs_surface::nurbs_surface%modify_Xc proc~modify_xc~4->none~set~4 proc~modify_xc~5 forcad_nurbs_curve::nurbs_curve%modify_Xc proc~modify_xc~5->none~set~5 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->none~set~5 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->none~set~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->none~set Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code pure function repelem ( a , b ) result ( c ) real ( rk ), dimension (:), intent ( in ), contiguous :: a integer , dimension (:), intent ( in ), contiguous :: b real ( rk ), dimension ( sum ( b )) :: c integer :: i , l , n l = 0 do i = 1 , size ( a ) n = b ( i ) c ( l + 1 : l + n ) = a ( i ) l = l + n end do end function repelem","tags":"","loc":"proc/repelem.html"},{"title":"ndgrid2 – ForCAD","text":"private pure subroutine ndgrid2(X_dir1, X_dir2, Xt) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: X_dir1 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir2 real(kind=rk), intent(out), dimension(:,:), allocatable :: Xt Called by proc~~ndgrid2~~CalledByGraph proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid forcad_utils::ndgrid interface~ndgrid->proc~ndgrid2 proc~create forcad_nurbs_volume::nurbs_volume%create proc~create->interface~ndgrid proc~create~3 forcad_bezier_volume::bezier_volume%create proc~create~3->interface~ndgrid proc~create~4 forcad_nurbs_surface::nurbs_surface%create proc~create~4->interface~ndgrid proc~create~6 forcad_bezier_surface::bezier_surface%create proc~create~6->interface~ndgrid program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~create~6 program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~create~3 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~create~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~create Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/ndgrid2.html"},{"title":"ndgrid3 – ForCAD","text":"private pure subroutine ndgrid3(X_dir1, X_dir2, X_dir3, Xt) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: X_dir1 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir2 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir3 real(kind=rk), intent(out), dimension(:,:), allocatable :: Xt Called by proc~~ndgrid3~~CalledByGraph proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid forcad_utils::ndgrid interface~ndgrid->proc~ndgrid3 proc~create forcad_nurbs_volume::nurbs_volume%create proc~create->interface~ndgrid proc~create~3 forcad_bezier_volume::bezier_volume%create proc~create~3->interface~ndgrid proc~create~4 forcad_nurbs_surface::nurbs_surface%create proc~create~4->interface~ndgrid proc~create~6 forcad_bezier_surface::bezier_surface%create proc~create~6->interface~ndgrid program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~create~6 program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~create~3 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~create~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~create Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"proc/ndgrid3.html"},{"title":"elemConn_C0 – ForCAD","text":"public interface elemConn_C0 Calls interface~~elemconn_c0~~CallsGraph interface~elemconn_c0 forcad_utils::elemConn_C0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by interface~~elemconn_c0~~CalledByGraph interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~get_elem_xc->interface~elemconn_c0 proc~get_elem_xc~2 forcad_bezier_curve::bezier_curve%get_elem_Xc proc~get_elem_xc~2->interface~elemconn_c0 proc~get_elem_xc~3 forcad_bezier_volume::bezier_volume%get_elem_Xc proc~get_elem_xc~3->interface~elemconn_c0 proc~get_elem_xc~4 forcad_nurbs_surface::nurbs_surface%get_elem_Xc proc~get_elem_xc~4->interface~elemconn_c0 proc~get_elem_xc~5 forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~get_elem_xc~5->interface~elemconn_c0 proc~get_elem_xc~6 forcad_bezier_surface::bezier_surface%get_elem_Xc proc~get_elem_xc~6->interface~elemconn_c0 proc~get_elem_xg forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~get_elem_xg->interface~elemconn_c0 proc~get_elem_xg~2 forcad_bezier_curve::bezier_curve%get_elem_Xg proc~get_elem_xg~2->interface~elemconn_c0 proc~get_elem_xg~3 forcad_bezier_volume::bezier_volume%get_elem_Xg proc~get_elem_xg~3->interface~elemconn_c0 proc~get_elem_xg~4 forcad_nurbs_surface::nurbs_surface%get_elem_Xg proc~get_elem_xg~4->interface~elemconn_c0 proc~get_elem_xg~5 forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~get_elem_xg~5->interface~elemconn_c0 proc~get_elem_xg~6 forcad_bezier_surface::bezier_surface%get_elem_Xg proc~get_elem_xg~6->interface~elemconn_c0 proc~export_xc forcad_nurbs_volume::nurbs_volume%export_Xc proc~export_xc->proc~get_elem_xc proc~export_xc~2 forcad_bezier_curve::bezier_curve%export_Xc proc~export_xc~2->proc~get_elem_xc~2 proc~export_xc~3 forcad_bezier_volume::bezier_volume%export_Xc proc~export_xc~3->proc~get_elem_xc~3 proc~export_xc~4 forcad_nurbs_surface::nurbs_surface%export_Xc proc~export_xc~4->proc~get_elem_xc~4 proc~export_xc~5 forcad_nurbs_curve::nurbs_curve%export_Xc proc~export_xc~5->proc~get_elem_xc~5 proc~export_xc~6 forcad_bezier_surface::bezier_surface%export_Xc proc~export_xc~6->proc~get_elem_xc~6 proc~export_xg forcad_nurbs_volume::nurbs_volume%export_Xg proc~export_xg->proc~get_elem_xg proc~export_xg~2 forcad_bezier_curve::bezier_curve%export_Xg proc~export_xg~2->proc~get_elem_xg~2 proc~export_xg~3 forcad_bezier_volume::bezier_volume%export_Xg proc~export_xg~3->proc~get_elem_xg~3 proc~export_xg~4 forcad_nurbs_surface::nurbs_surface%export_Xg proc~export_xg~4->proc~get_elem_xg~4 proc~export_xg~5 forcad_nurbs_curve::nurbs_curve%export_Xg proc~export_xg~5->proc~get_elem_xg~5 proc~export_xg~6 forcad_bezier_surface::bezier_surface%export_Xg proc~export_xg~6->proc~get_elem_xg~6 program~example_bezier_curve example_bezier_curve program~example_bezier_curve->proc~export_xc~2 program~example_bezier_curve->proc~export_xg~2 program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~export_xc~6 program~example_bezier_surface->proc~export_xg~6 program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~export_xc~3 program~example_bezier_volume->proc~export_xg~3 program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->proc~export_xc~5 program~example_nurbs_curve->proc~export_xg~5 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~export_xc~4 program~example_nurbs_surface->proc~export_xg~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~export_xc program~example_nurbs_volume->proc~export_xg Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Module Procedures private pure function cmp_elemConn_C0_L (nnode, p) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode integer, intent(in) :: p Return Value integer, dimension(:,:), allocatable private pure function cmp_elemConn_C0_S (nnode1, nnode2, p1, p2) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode1 integer, intent(in) :: nnode2 integer, intent(in) :: p1 integer, intent(in) :: p2 Return Value integer, dimension(:,:), allocatable private pure function cmp_elemConn_C0_V (nnode1, nnode2, nnode3, p1, p2, p3) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode1 integer, intent(in) :: nnode2 integer, intent(in) :: nnode3 integer, intent(in) :: p1 integer, intent(in) :: p2 integer, intent(in) :: p3 Return Value integer, dimension(:,:), allocatable","tags":"","loc":"interface/elemconn_c0.html"},{"title":"ndgrid – ForCAD","text":"public interface ndgrid Calls interface~~ndgrid~~CallsGraph interface~ndgrid forcad_utils::ndgrid proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Called by interface~~ndgrid~~CalledByGraph interface~ndgrid forcad_utils::ndgrid proc~create forcad_nurbs_volume::nurbs_volume%create proc~create->interface~ndgrid proc~create~3 forcad_bezier_volume::bezier_volume%create proc~create~3->interface~ndgrid proc~create~4 forcad_nurbs_surface::nurbs_surface%create proc~create~4->interface~ndgrid proc~create~6 forcad_bezier_surface::bezier_surface%create proc~create~6->interface~ndgrid program~example_bezier_surface example_bezier_surface program~example_bezier_surface->proc~create~6 program~example_bezier_volume example_bezier_volume program~example_bezier_volume->proc~create~3 program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->proc~create~4 program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->proc~create Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Module Procedures private pure subroutine ndgrid2 (X_dir1, X_dir2, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: X_dir1 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir2 real(kind=rk), intent(out), dimension(:,:), allocatable :: Xt private pure subroutine ndgrid3 (X_dir1, X_dir2, X_dir3, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: X_dir1 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir2 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir3 real(kind=rk), intent(out), dimension(:,:), allocatable :: Xt","tags":"","loc":"interface/ndgrid.html"},{"title":"forcad_nurbs_volume – ForCAD","text":"Uses forcad_utils module~~forcad_nurbs_volume~~UsesGraph module~forcad_nurbs_volume forcad_nurbs_volume module~forcad_utils forcad_utils module~forcad_nurbs_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Used by module~~forcad_nurbs_volume~~UsedByGraph module~forcad_nurbs_volume forcad_nurbs_volume module~forcad forcad module~forcad->module~forcad_nurbs_volume program~example_bezier_curve example_bezier_curve program~example_bezier_curve->module~forcad program~example_bezier_surface example_bezier_surface program~example_bezier_surface->module~forcad program~example_bezier_volume example_bezier_volume program~example_bezier_volume->module~forcad program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->module~forcad program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->module~forcad program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->module~forcad Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Derived Types type, public :: nurbs_volume Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt1 (:) parameter values in the first direction real(kind=rk), private, allocatable :: Xt2 (:) parameter values in the second direction real(kind=rk), private, allocatable :: Xt3 (:) parameter values in the third direction real(kind=rk), private, allocatable :: knot1 (:) knot vector real(kind=rk), private, allocatable :: knot2 (:) knot vector real(kind=rk), private, allocatable :: knot3 (:) knot vector integer, private :: nc (3) number of control points in each direction integer, private :: ng (3) number of geometry points in each direction integer, private :: order (3) degree of the first direction Type-Bound Procedures procedure, public :: create Generate geometry points Read more… procedure, public :: export_Xc Export control points to VTK file Read more… procedure, public :: export_Xg Export geometry points to VTK file Read more… procedure, public :: finalize Finalize the NURBS curve object Read more… procedure, public :: get_Wc Get weights Read more… procedure, public :: get_Xc Get control points Read more… procedure, public :: get_Xg Get geometry points Read more… procedure, public :: get_Xt Get parameter values Read more… procedure, public :: get_continuity Get continuity of the curve Read more… procedure, public :: get_elem_Xc Generate connectivity for control points Read more… procedure, public :: get_elem_Xg Generate connectivity for geometry points Read more… procedure, public :: get_knot Get knot vector Read more… procedure, public :: get_multiplicity Get multiplicity of the knot vector Read more… procedure, public :: get_nc Get number of required control points Read more… procedure, public :: get_ng Get number of geometry points Read more… procedure, public :: get_order Get order of the Bezier curve Read more… procedure, public :: modify_Wc Modify weights Read more… procedure, public :: modify_Xc Modify control points Read more… generic, public :: set => set1 , set2 procedure, public :: set1 Set control points and weights Read more… procedure, public :: set2 Set control points and weights Read more… Functions private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xt (this, dir) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) private pure function get_continuity (this, dir) result(c) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) private pure function get_knot (this, dir) result(knot) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) private pure function get_multiplicity (this, dir) result(m) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) private pure function get_nc (this, dir) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(in) :: dir Return Value integer private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value integer, (3) private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this Return Value integer, (3) Subroutines private pure subroutine create (this, res1, res2, res3, Xt1, Xt2, Xt3) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 integer, intent(in), optional :: res3 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) real(kind=rk), intent(in), optional :: Xt3 (:) private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this character(len=*), intent(in) :: filename private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this character(len=*), intent(in) :: filename private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir private pure subroutine set1 (this, knot1, knot2, knot3, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS curve object. Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: knot1 (:) real(kind=rk), intent(in) :: knot2 (:) real(kind=rk), intent(in) :: knot3 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) private pure subroutine set2 (this, Xth_dir1, Xth_dir2, Xth_dir3, order, continuity1, continuity2, continuity3, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS curve object. Arguments Type Intent Optional Attributes Name class( nurbs_volume ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir1 (:) real(kind=rk), intent(in) :: Xth_dir2 (:) real(kind=rk), intent(in) :: Xth_dir3 (:) integer, intent(in) :: order (:) integer, intent(in) :: continuity1 (:) integer, intent(in) :: continuity2 (:) integer, intent(in) :: continuity3 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"module/forcad_nurbs_volume.html"},{"title":"forcad_bezier_curve – ForCAD","text":"Uses forcad_utils module~~forcad_bezier_curve~~UsesGraph module~forcad_bezier_curve forcad_bezier_curve module~forcad_utils forcad_utils module~forcad_bezier_curve->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Used by module~~forcad_bezier_curve~~UsedByGraph module~forcad_bezier_curve forcad_bezier_curve module~forcad forcad module~forcad->module~forcad_bezier_curve program~example_bezier_curve example_bezier_curve program~example_bezier_curve->module~forcad program~example_bezier_surface example_bezier_surface program~example_bezier_surface->module~forcad program~example_bezier_volume example_bezier_volume program~example_bezier_volume->module~forcad program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->module~forcad program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->module~forcad program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->module~forcad Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Derived Types type, public :: bezier_curve Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) Weights real(kind=rk), private, allocatable :: Xc (:,:) Control points real(kind=rk), private, allocatable :: Xg (:,:) Geometry points real(kind=rk), private, allocatable :: Xt (:) Parameter values integer, private :: nc Number of control points integer, private :: ng Number of geometry points Type-Bound Procedures procedure, public :: create Generate geometry points Read more… procedure, public :: elevate_degree Elevate the degree of the Bezier curve Read more… procedure, public :: export_Xc Export control points to VTK file Read more… procedure, public :: export_Xg Export geometry points to VTK file Read more… procedure, public :: finalize Finalize the Bezier curve object Read more… procedure, public :: get_Wc Get weights Read more… procedure, public :: get_Xc Get control points Read more… procedure, public :: get_Xg Get geometry points Read more… procedure, public :: get_Xt Get parameter values Read more… procedure, public :: get_elem_Xc Generate connectivity for control points Read more… procedure, public :: get_elem_Xg Generate connectivity for geometry points Read more… procedure, public :: get_nc Get number of control points Read more… procedure, public :: get_ng Get number of geometry points Read more… procedure, public :: get_order Get order of the Bezier curve Read more… procedure, public :: modify_Wc Modify weights Read more… procedure, public :: modify_Xc Modify control points Read more… procedure, public :: set Set control points and weights Read more… Functions private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xt (this) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_nc (this) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this Return Value integer Subroutines private pure subroutine create (this, res, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Generate geometry points of the Bezier curve. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this integer, intent(in), optional :: res real(kind=rk), intent(in), optional :: Xt (:) private pure subroutine elevate_degree (this) Author Seyed Ali Ghasemi License BSD 3-Clause Elevate the degree of the Bezier curve by one. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Export control points to a VTK file. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this character(len=*), intent(in) :: filename private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Export geometry points to a VTK file. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this character(len=*), intent(in) :: filename private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Finalize the Bezier curve object by deallocating memory. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Generate connectivity for control points. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Generate connectivity for geometry points. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Modify weight of a control point given its index. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Modify coordinate of a control point given its index and direction. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir private pure subroutine set (this, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( bezier_curve ), intent(inout) :: this real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"module/forcad_bezier_curve.html"},{"title":"forcad_bezier_volume – ForCAD","text":"Uses forcad_utils module~~forcad_bezier_volume~~UsesGraph module~forcad_bezier_volume forcad_bezier_volume module~forcad_utils forcad_utils module~forcad_bezier_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Used by module~~forcad_bezier_volume~~UsedByGraph module~forcad_bezier_volume forcad_bezier_volume module~forcad forcad module~forcad->module~forcad_bezier_volume program~example_bezier_curve example_bezier_curve program~example_bezier_curve->module~forcad program~example_bezier_surface example_bezier_surface program~example_bezier_surface->module~forcad program~example_bezier_volume example_bezier_volume program~example_bezier_volume->module~forcad program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->module~forcad program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->module~forcad program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->module~forcad Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Derived Types type, public :: bezier_volume Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt1 (:) parameter values in the first direction real(kind=rk), private, allocatable :: Xt2 (:) parameter values in the second direction real(kind=rk), private, allocatable :: Xt3 (:) parameter values in the third direction integer, private :: nc (3) number of control points in each direction integer, private :: ng (3) number of geometry points in each direction Type-Bound Procedures procedure, public :: create Generate geometry points Read more… procedure, public :: export_Xc Export control points to VTK file Read more… procedure, public :: export_Xg Export geometry points to VTK file Read more… procedure, public :: finalize Finalize the Bezier volume object Read more… procedure, public :: get_Wc Get weights Read more… procedure, public :: get_Xc Get control points Read more… procedure, public :: get_Xg Get geometry points Read more… procedure, public :: get_elem_Xc Generate connectivity for control points Read more… procedure, public :: get_elem_Xg Generate connectivity for geometry points Read more… procedure, public :: get_nc Get number of control points Read more… procedure, public :: get_ng Get number of geometry points Read more… procedure, public :: get_order Get order of the Bezier surface Read more… procedure, public :: modify_Wc Modify weights Read more… procedure, public :: modify_Xc Modify control points Read more… procedure, public :: set Set control points and weights Read more… Functions private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xt (this, dir) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) private pure function get_nc (this) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3) private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3) private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this Return Value integer, (3) Subroutines private pure subroutine create (this, res1, res2, res3, Xt1, Xt2, Xt3) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 integer, intent(in), optional :: res3 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) real(kind=rk), intent(in), optional :: Xt3 (:) private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this character(len=*), intent(in) :: filename private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this character(len=*), intent(in) :: filename private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir private pure subroutine set (this, nc, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( bezier_volume ), intent(inout) :: this integer, intent(in) :: nc (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"module/forcad_bezier_volume.html"},{"title":"forcad_nurbs_surface – ForCAD","text":"Uses forcad_utils module~~forcad_nurbs_surface~~UsesGraph module~forcad_nurbs_surface forcad_nurbs_surface module~forcad_utils forcad_utils module~forcad_nurbs_surface->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Used by module~~forcad_nurbs_surface~~UsedByGraph module~forcad_nurbs_surface forcad_nurbs_surface module~forcad forcad module~forcad->module~forcad_nurbs_surface program~example_bezier_curve example_bezier_curve program~example_bezier_curve->module~forcad program~example_bezier_surface example_bezier_surface program~example_bezier_surface->module~forcad program~example_bezier_volume example_bezier_volume program~example_bezier_volume->module~forcad program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->module~forcad program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->module~forcad program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->module~forcad Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Derived Types type, public :: nurbs_surface Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt1 (:) parameter values in the first direction real(kind=rk), private, allocatable :: Xt2 (:) parameter values in the second direction real(kind=rk), private, allocatable :: knot1 (:) knot vector real(kind=rk), private, allocatable :: knot2 (:) knot vector integer, private :: nc (2) number of control points in each direction integer, private :: ng (2) number of geometry points in each direction integer, private :: order (2) degree of each direction Type-Bound Procedures procedure, public :: create Generate geometry points Read more… procedure, public :: export_Xc Export control points to VTK file Read more… procedure, public :: export_Xg Export geometry points to VTK file Read more… procedure, public :: finalize Finalize the NURBS surface object Read more… procedure, public :: get_Wc Get weights Read more… procedure, public :: get_Xc Get control points Read more… procedure, public :: get_Xg Get geometry points Read more… procedure, public :: get_Xt Get parameter values Read more… procedure, public :: get_continuity Get continuity of the surface Read more… procedure, public :: get_elem_Xc Generate connectivity for control points Read more… procedure, public :: get_elem_Xg Generate connectivity for geometry points Read more… procedure, public :: get_knot Get knot vector Read more… procedure, public :: get_multiplicity Get multiplicity of the knot vector Read more… procedure, public :: get_nc Get number of required control points Read more… procedure, public :: get_ng Get number of geometry points Read more… procedure, public :: get_order Get order of the Bezier curve Read more… procedure, public :: modify_Wc Modify weights Read more… procedure, public :: modify_Xc Modify control points Read more… generic, public :: set => set1 , set2 procedure, public :: set1 Set control points and weights Read more… procedure, public :: set2 Set control points and weights Read more… Functions private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xt (this, dir) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) private pure function get_continuity (this, dir) result(c) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) private pure function get_knot (this, dir) result(knot) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) private pure function get_multiplicity (this, dir) result(m) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer, allocatable, (:) private pure function get_nc (this, dir) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(in) :: dir Return Value integer private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value integer, (2) private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this Return Value integer, (2) Subroutines private pure subroutine create (this, res1, res2, Xt1, Xt2) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this character(len=*), intent(in) :: filename private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this character(len=*), intent(in) :: filename private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir private pure subroutine set1 (this, knot1, knot2, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS surface object. Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: knot1 (:) real(kind=rk), intent(in) :: knot2 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) private pure subroutine set2 (this, Xth_dir1, Xth_dir2, order, continuity1, continuity2, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the NURBS surface object. Arguments Type Intent Optional Attributes Name class( nurbs_surface ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir1 (:) real(kind=rk), intent(in) :: Xth_dir2 (:) integer, intent(in) :: order (:) integer, intent(in) :: continuity1 (:) integer, intent(in) :: continuity2 (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"module/forcad_nurbs_surface.html"},{"title":"forcad_nurbs_curve – ForCAD","text":"Uses forcad_utils module~~forcad_nurbs_curve~~UsesGraph module~forcad_nurbs_curve forcad_nurbs_curve module~forcad_utils forcad_utils module~forcad_nurbs_curve->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Used by module~~forcad_nurbs_curve~~UsedByGraph module~forcad_nurbs_curve forcad_nurbs_curve module~forcad forcad module~forcad->module~forcad_nurbs_curve program~example_bezier_curve example_bezier_curve program~example_bezier_curve->module~forcad program~example_bezier_surface example_bezier_surface program~example_bezier_surface->module~forcad program~example_bezier_volume example_bezier_volume program~example_bezier_volume->module~forcad program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->module~forcad program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->module~forcad program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->module~forcad Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Derived Types type, public :: nurbs_curve Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt (:) evaluation points real(kind=rk), private, allocatable :: knot (:) knot vector integer, private :: nc number of control points integer, private :: ng number of geometry points integer, private :: order order of the curve Type-Bound Procedures procedure, public :: create Generate geometry points Read more… procedure, public :: export_Xc Export control points to VTK file Read more… procedure, public :: export_Xg Export geometry points to VTK file Read more… procedure, public :: finalize Finalize the Bezier curve object Read more… procedure, public :: get_Wc Get weights Read more… procedure, public :: get_Xc Get control points Read more… procedure, public :: get_Xg Get geometry points Read more… procedure, public :: get_Xt Get parameter values Read more… procedure, public :: get_continuity Get continuity of the curve Read more… procedure, public :: get_elem_Xc Generate connectivity for control points Read more… procedure, public :: get_elem_Xg Generate connectivity for geometry points Read more… procedure, public :: get_knot Get knot vector Read more… procedure, public :: get_multiplicity Get multiplicity of the knot vector Read more… procedure, public :: get_nc Get number of required control points Read more… procedure, public :: get_ng Get number of geometry points Read more… procedure, public :: get_order Get order of the Bezier curve Read more… procedure, public :: modify_Wc Modify weights Read more… procedure, public :: modify_Xc Modify control points Read more… generic, public :: set => set1 , set2 procedure, public :: set1 Set control points and weights Read more… procedure, public :: set2 Set control points and weights Read more… Functions private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xt (this) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_continuity (this) result(c) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer, allocatable, (:) private pure function get_knot (this) result(knot) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_multiplicity (this) result(m) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer, allocatable, (:) private pure function get_nc (this) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this Return Value integer Subroutines private pure subroutine create (this, res, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this integer, intent(in), optional :: res real(kind=rk), intent(in), optional :: Xt (:) private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this character(len=*), intent(in) :: filename private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this character(len=*), intent(in) :: filename private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir private pure subroutine set1 (this, knot, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: knot (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:) private pure subroutine set2 (this, Xth_dir, order, continuity, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( nurbs_curve ), intent(inout) :: this real(kind=rk), intent(in) :: Xth_dir (:) integer, intent(in) :: order integer, intent(in) :: continuity (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"module/forcad_nurbs_curve.html"},{"title":"forcad – ForCAD","text":"Uses forcad_bezier_volume forcad_nurbs_surface forcad_utils forcad_nurbs_volume forcad_bezier_surface forcad_bezier_curve forcad_nurbs_curve module~~forcad~~UsesGraph module~forcad forcad module~forcad_bezier_curve forcad_bezier_curve module~forcad->module~forcad_bezier_curve module~forcad_bezier_surface forcad_bezier_surface module~forcad->module~forcad_bezier_surface module~forcad_bezier_volume forcad_bezier_volume module~forcad->module~forcad_bezier_volume module~forcad_nurbs_curve forcad_nurbs_curve module~forcad->module~forcad_nurbs_curve module~forcad_nurbs_surface forcad_nurbs_surface module~forcad->module~forcad_nurbs_surface module~forcad_nurbs_volume forcad_nurbs_volume module~forcad->module~forcad_nurbs_volume module~forcad_utils forcad_utils module~forcad->module~forcad_utils module~forcad_bezier_curve->module~forcad_utils module~forcad_bezier_surface->module~forcad_utils module~forcad_bezier_volume->module~forcad_utils module~forcad_nurbs_curve->module~forcad_utils module~forcad_nurbs_surface->module~forcad_utils module~forcad_nurbs_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Used by module~~forcad~~UsedByGraph module~forcad forcad program~example_bezier_curve example_bezier_curve program~example_bezier_curve->module~forcad program~example_bezier_surface example_bezier_surface program~example_bezier_surface->module~forcad program~example_bezier_volume example_bezier_volume program~example_bezier_volume->module~forcad program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->module~forcad program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->module~forcad program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->module~forcad Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs.","tags":"","loc":"module/forcad.html"},{"title":"forcad_bezier_surface – ForCAD","text":"Uses forcad_utils module~~forcad_bezier_surface~~UsesGraph module~forcad_bezier_surface forcad_bezier_surface module~forcad_utils forcad_utils module~forcad_bezier_surface->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Used by module~~forcad_bezier_surface~~UsedByGraph module~forcad_bezier_surface forcad_bezier_surface module~forcad forcad module~forcad->module~forcad_bezier_surface program~example_bezier_curve example_bezier_curve program~example_bezier_curve->module~forcad program~example_bezier_surface example_bezier_surface program~example_bezier_surface->module~forcad program~example_bezier_volume example_bezier_volume program~example_bezier_volume->module~forcad program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->module~forcad program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->module~forcad program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->module~forcad Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Derived Types type, public :: bezier_surface Components Type Visibility Attributes Name Initial real(kind=rk), private, allocatable :: Wc (:) weights real(kind=rk), private, allocatable :: Xc (:,:) control points real(kind=rk), private, allocatable :: Xg (:,:) geometry points real(kind=rk), private, allocatable :: Xt1 (:) parameter values in the first direction real(kind=rk), private, allocatable :: Xt2 (:) parameter values in the second direction integer, private :: nc (2) number of control points in each direction integer, private :: ng (2) number of geometry points in each direction Type-Bound Procedures procedure, public :: create Generate geometry points Read more… procedure, public :: export_Xc Export control points to VTK file Read more… procedure, public :: export_Xg Export geometry points to VTK file Read more… procedure, public :: finalize Finalize the Bezier surface object Read more… procedure, public :: get_Wc Get weights Read more… procedure, public :: get_Xc Get control points Read more… procedure, public :: get_Xg Get geometry points Read more… procedure, public :: get_Xt Get parameter values Read more… procedure, public :: get_elem_Xc Generate connectivity for control points Read more… procedure, public :: get_elem_Xg Generate connectivity for geometry points Read more… procedure, public :: get_nc Get number of control points Read more… procedure, public :: get_ng Get number of geometry points Read more… procedure, public :: get_order Get order of the Bezier surface Read more… procedure, public :: modify_Wc Modify weights Read more… procedure, public :: modify_Xc Modify control points Read more… procedure, public :: set Set control points and weights Read more… Functions private pure function get_Wc (this) result(Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:) private pure function get_Xc (this) result(Xc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xg (this) result(Xg) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value real(kind=rk), allocatable, (:,:) private pure function get_Xt (this, dir) result(Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(in) :: dir Return Value real(kind=rk), allocatable, (:) private pure function get_nc (this) result(nc) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2) private pure function get_ng (this) result(ng) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2) private pure function get_order (this) result(order) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this Return Value integer, (2) Subroutines private pure subroutine create (this, res1, res2, Xt1, Xt2) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this integer, intent(in), optional :: res1 integer, intent(in), optional :: res2 real(kind=rk), intent(in), optional :: Xt1 (:) real(kind=rk), intent(in), optional :: Xt2 (:) private impure subroutine export_Xc (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this character(len=*), intent(in) :: filename private impure subroutine export_Xg (this, filename) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this character(len=*), intent(in) :: filename private pure subroutine finalize (this) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this private pure subroutine get_elem_Xc (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) private pure subroutine get_elem_Xg (this, elemConn, p) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(in) :: this integer, intent(out), dimension(:,:), allocatable :: elemConn integer, intent(in), optional :: p (:) private pure subroutine modify_Wc (this, W, num) Author Seyed Ali Ghasemi License BSD 3-Clause Modify weight of a control point given its index. Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this real(kind=rk), intent(in) :: W integer, intent(in) :: num private pure subroutine modify_Xc (this, X, num, dir) Author Seyed Ali Ghasemi License BSD 3-Clause Modify coordinate of a control point given its index and direction. Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this real(kind=rk), intent(in) :: X integer, intent(in) :: num integer, intent(in) :: dir private pure subroutine set (this, nc, Xc, Wc) Author Seyed Ali Ghasemi License BSD 3-Clause Set control points and weights for the Bezier curve object. Arguments Type Intent Optional Attributes Name class( bezier_surface ), intent(inout) :: this integer, intent(in) :: nc (:) real(kind=rk), intent(in) :: Xc (:,:) real(kind=rk), intent(in), optional :: Wc (:)","tags":"","loc":"module/forcad_bezier_surface.html"},{"title":"forcad_utils – ForCAD","text":"Used by module~~forcad_utils~~UsedByGraph module~forcad_utils forcad_utils module~forcad forcad module~forcad->module~forcad_utils module~forcad_bezier_curve forcad_bezier_curve module~forcad->module~forcad_bezier_curve module~forcad_bezier_surface forcad_bezier_surface module~forcad->module~forcad_bezier_surface module~forcad_bezier_volume forcad_bezier_volume module~forcad->module~forcad_bezier_volume module~forcad_nurbs_curve forcad_nurbs_curve module~forcad->module~forcad_nurbs_curve module~forcad_nurbs_surface forcad_nurbs_surface module~forcad->module~forcad_nurbs_surface module~forcad_nurbs_volume forcad_nurbs_volume module~forcad->module~forcad_nurbs_volume module~forcad_bezier_curve->module~forcad_utils module~forcad_bezier_surface->module~forcad_utils module~forcad_bezier_volume->module~forcad_utils module~forcad_nurbs_curve->module~forcad_utils module~forcad_nurbs_surface->module~forcad_utils module~forcad_nurbs_volume->module~forcad_utils program~example_bezier_curve example_bezier_curve program~example_bezier_curve->module~forcad program~example_bezier_surface example_bezier_surface program~example_bezier_surface->module~forcad program~example_bezier_volume example_bezier_volume program~example_bezier_volume->module~forcad program~example_nurbs_curve example_nurbs_curve program~example_nurbs_curve->module~forcad program~example_nurbs_surface example_nurbs_surface program~example_nurbs_surface->module~forcad program~example_nurbs_volume example_nurbs_volume program~example_nurbs_volume->module~forcad Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Variables Type Visibility Attributes Name Initial integer, public, parameter :: rk = kind(1.0d0) Interfaces public interface elemConn_C0 private pure function cmp_elemConn_C0_L (nnode, p) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode integer, intent(in) :: p Return Value integer, dimension(:,:), allocatable private pure function cmp_elemConn_C0_S (nnode1, nnode2, p1, p2) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode1 integer, intent(in) :: nnode2 integer, intent(in) :: p1 integer, intent(in) :: p2 Return Value integer, dimension(:,:), allocatable private pure function cmp_elemConn_C0_V (nnode1, nnode2, nnode3, p1, p2, p3) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode1 integer, intent(in) :: nnode2 integer, intent(in) :: nnode3 integer, intent(in) :: p1 integer, intent(in) :: p2 integer, intent(in) :: p3 Return Value integer, dimension(:,:), allocatable public interface ndgrid private pure subroutine ndgrid2 (X_dir1, X_dir2, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: X_dir1 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir2 real(kind=rk), intent(out), dimension(:,:), allocatable :: Xt private pure subroutine ndgrid3 (X_dir1, X_dir2, X_dir3, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: X_dir1 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir2 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir3 real(kind=rk), intent(out), dimension(:,:), allocatable :: Xt Functions public pure function basis_bernstein (Xt, nc) result(B) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: Xt integer, intent(in) :: nc Return Value real(kind=rk), allocatable, (:) public pure function basis_bspline (Xt, knot, nc, order) result(B) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: Xt real(kind=rk), intent(in) :: knot (:) integer, intent(in) :: nc integer, intent(in) :: order Return Value real(kind=rk), allocatable, (:) public pure function compute_knot_vector (Xth_dir, order, continuity) result(knot) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: Xth_dir (:) integer, intent(in) :: order integer, intent(in) :: continuity (:) Return Value real(kind=rk), allocatable, (:) public pure function compute_multiplicity (knot) result(multiplicity) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: knot (:) Return Value integer, dimension(:), allocatable public pure function kron (u, v) result(w) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: u real(kind=rk), intent(in), dimension(:), contiguous :: v Return Value real(kind=rk), dimension(size(u)*size(v)) private pure function cmp_elemConn_C0_L (nnode, p) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode integer, intent(in) :: p Return Value integer, dimension(:,:), allocatable private pure function cmp_elemConn_C0_S (nnode1, nnode2, p1, p2) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode1 integer, intent(in) :: nnode2 integer, intent(in) :: p1 integer, intent(in) :: p2 Return Value integer, dimension(:,:), allocatable private pure function cmp_elemConn_C0_V (nnode1, nnode2, nnode3, p1, p2, p3) result(elemConn) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name integer, intent(in) :: nnode1 integer, intent(in) :: nnode2 integer, intent(in) :: nnode3 integer, intent(in) :: p1 integer, intent(in) :: p2 integer, intent(in) :: p3 Return Value integer, dimension(:,:), allocatable private pure function repelem (a, b) result(c) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: a integer, intent(in), dimension(:), contiguous :: b Return Value real(kind=rk), dimension(sum(b)) Subroutines private pure subroutine ndgrid2 (X_dir1, X_dir2, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: X_dir1 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir2 real(kind=rk), intent(out), dimension(:,:), allocatable :: Xt private pure subroutine ndgrid3 (X_dir1, X_dir2, X_dir3, Xt) Author Seyed Ali Ghasemi License BSD 3-Clause Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in), dimension(:), contiguous :: X_dir1 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir2 real(kind=rk), intent(in), dimension(:), contiguous :: X_dir3 real(kind=rk), intent(out), dimension(:,:), allocatable :: Xt","tags":"","loc":"module/forcad_utils.html"},{"title":"example_bezier_surface – ForCAD","text":"Uses forcad program~~example_bezier_surface~~UsesGraph program~example_bezier_surface example_bezier_surface module~forcad forcad program~example_bezier_surface->module~forcad module~forcad_bezier_curve forcad_bezier_curve module~forcad->module~forcad_bezier_curve module~forcad_bezier_surface forcad_bezier_surface module~forcad->module~forcad_bezier_surface module~forcad_bezier_volume forcad_bezier_volume module~forcad->module~forcad_bezier_volume module~forcad_nurbs_curve forcad_nurbs_curve module~forcad->module~forcad_nurbs_curve module~forcad_nurbs_surface forcad_nurbs_surface module~forcad->module~forcad_nurbs_surface module~forcad_nurbs_volume forcad_nurbs_volume module~forcad->module~forcad_nurbs_volume module~forcad_utils forcad_utils module~forcad->module~forcad_utils module~forcad_bezier_curve->module~forcad_utils module~forcad_bezier_surface->module~forcad_utils module~forcad_bezier_volume->module~forcad_utils module~forcad_nurbs_curve->module~forcad_utils module~forcad_nurbs_surface->module~forcad_utils module~forcad_nurbs_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. This program demonstrates the usage of a Bezier surface object to create, and finalize a Bezier surface.\nIt sets up control points and weights, generates the surface, and exports the control points\nand the surface to VTK files at various stages. Define control points for the Bezier surface Define weights for the control points Set control points and weights for the bezier surface object Export initial control points to a VTK file Generate the Bezier surface with a resolution of 100x100 Export the generated surface to a VTK file Finalize the Bezier surface object Calls program~~example_bezier_surface~~CallsGraph program~example_bezier_surface example_bezier_surface proc~create~6 forcad_bezier_surface::bezier_surface%create program~example_bezier_surface->proc~create~6 proc~export_xc~6 forcad_bezier_surface::bezier_surface%export_Xc program~example_bezier_surface->proc~export_xc~6 proc~export_xg~6 forcad_bezier_surface::bezier_surface%export_Xg program~example_bezier_surface->proc~export_xg~6 proc~finalize~6 forcad_bezier_surface::bezier_surface%finalize program~example_bezier_surface->proc~finalize~6 proc~generate_xc example_bezier_surface::generate_Xc program~example_bezier_surface->proc~generate_xc proc~set~3 forcad_bezier_surface::bezier_surface%set program~example_bezier_surface->proc~set~3 interface~ndgrid forcad_utils::ndgrid proc~create~6->interface~ndgrid proc~basis_bernstein forcad_utils::basis_bernstein proc~create~6->proc~basis_bernstein proc~kron forcad_utils::kron proc~create~6->proc~kron proc~get_elem_xc~6 forcad_bezier_surface::bezier_surface%get_elem_Xc proc~export_xc~6->proc~get_elem_xc~6 proc~get_elem_xg~6 forcad_bezier_surface::bezier_surface%get_elem_Xg proc~export_xg~6->proc~get_elem_xg~6 proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~6->interface~elemconn_c0 proc~get_elem_xg~6->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Variables Type Attributes Name Initial real(kind=rk), allocatable :: Wc (:) Arrays for control points and weights real(kind=rk), allocatable :: Xc (:,:) Arrays for control points and weights type( bezier_surface ) :: bezier Declare a bezier surface object Functions function generate_Xc (num_rows, num_cols, peak_height) result(control_points) Arguments Type Intent Optional Attributes Name integer, intent(in) :: num_rows integer, intent(in) :: num_cols real(kind=rk), intent(in) :: peak_height Return Value real(kind=rk), dimension(:,:), allocatable Source Code program example_bezier_surface use forcad , only : rk , bezier_surface implicit none type ( bezier_surface ) :: bezier !! Declare a bezier surface object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights !----------------------------------------------------------------------------- ! Setting up the bezier surface !----------------------------------------------------------------------------- !> Define control points for the Bezier surface Xc = generate_Xc ( 10 , 10 , 1.5_rk ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 )), source = 1.0_rk ) !> Set control points and weights for the bezier surface object call bezier % set ([ 10 , 10 ], Xc , Wc ) !> Export initial control points to a VTK file call bezier % export_Xc ( 'vtk/bezier_surface_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the bezier surface !----------------------------------------------------------------------------- !> Generate the Bezier surface with a resolution of 100x100 call bezier % create ( res1 = 30 , res2 = 30 ) !> Export the generated surface to a VTK file call bezier % export_Xg ( 'vtk/bezier_surface_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the Bezier surface object call bezier % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( num_rows , num_cols , peak_height ) result ( control_points ) integer , intent ( in ) :: num_rows , num_cols real ( rk ), intent ( in ) :: peak_height real ( rk ), dimension (:,:), allocatable :: control_points integer :: i , j real ( rk ) :: x_spacing , y_spacing , x_offset , y_offset x_spacing = 1.0_rk / real ( num_cols - 1 ) y_spacing = 1.0_rk / real ( num_rows - 1 ) x_offset = - 0.5_rk y_offset = - 0.5_rk allocate ( control_points ( num_rows * num_cols , 3 )) do i = 1 , num_rows do j = 1 , num_cols control_points (( i - 1 ) * num_cols + j , 1 ) = x_offset + real ( j - 1 ) * x_spacing control_points (( i - 1 ) * num_cols + j , 2 ) = y_offset + real ( i - 1 ) * y_spacing control_points (( i - 1 ) * num_cols + j , 3 ) = & peak_height * exp ( - (( control_points (( i - 1 ) * num_cols + j , 1 ) ** 2 ) & + ( control_points (( i - 1 ) * num_cols + j , 2 ) ** 2 ))) + 0.5_rk * peak_height * 0.2_rk end do end do end function !----------------------------------------------------------------------------- end program example_bezier_surface","tags":"","loc":"program/example_bezier_surface.html"},{"title":"example_bezier_curve – ForCAD","text":"Uses forcad program~~example_bezier_curve~~UsesGraph program~example_bezier_curve example_bezier_curve module~forcad forcad program~example_bezier_curve->module~forcad module~forcad_bezier_curve forcad_bezier_curve module~forcad->module~forcad_bezier_curve module~forcad_bezier_surface forcad_bezier_surface module~forcad->module~forcad_bezier_surface module~forcad_bezier_volume forcad_bezier_volume module~forcad->module~forcad_bezier_volume module~forcad_nurbs_curve forcad_nurbs_curve module~forcad->module~forcad_nurbs_curve module~forcad_nurbs_surface forcad_nurbs_surface module~forcad->module~forcad_nurbs_surface module~forcad_nurbs_volume forcad_nurbs_volume module~forcad->module~forcad_nurbs_volume module~forcad_utils forcad_utils module~forcad->module~forcad_utils module~forcad_bezier_curve->module~forcad_utils module~forcad_bezier_surface->module~forcad_utils module~forcad_bezier_volume->module~forcad_utils module~forcad_nurbs_curve->module~forcad_utils module~forcad_nurbs_surface->module~forcad_utils module~forcad_nurbs_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. This program demonstrates the usage of a Bezier curve object to create, and finalize a Bezier curve.\nIt sets up control points and weights, generates the curve, and exports the control points\nand the curve to VTK files at various stages. Define control points for the Bezier curve Define weights for the control points Set control points and weights for the bezier curve object Export initial control points to a VTK file Generate the Bezier curve with a resolution of 1000 Export the generated curve to a VTK file Finalize the Bezier curve object Calls program~~example_bezier_curve~~CallsGraph program~example_bezier_curve example_bezier_curve proc~create~2 forcad_bezier_curve::bezier_curve%create program~example_bezier_curve->proc~create~2 proc~export_xc~2 forcad_bezier_curve::bezier_curve%export_Xc program~example_bezier_curve->proc~export_xc~2 proc~export_xg~2 forcad_bezier_curve::bezier_curve%export_Xg program~example_bezier_curve->proc~export_xg~2 proc~finalize~2 forcad_bezier_curve::bezier_curve%finalize program~example_bezier_curve->proc~finalize~2 proc~generate_xc~2 example_bezier_curve::generate_Xc program~example_bezier_curve->proc~generate_xc~2 proc~set forcad_bezier_curve::bezier_curve%set program~example_bezier_curve->proc~set proc~basis_bernstein forcad_utils::basis_bernstein proc~create~2->proc~basis_bernstein proc~get_elem_xc~2 forcad_bezier_curve::bezier_curve%get_elem_Xc proc~export_xc~2->proc~get_elem_xc~2 proc~get_elem_xg~2 forcad_bezier_curve::bezier_curve%get_elem_Xg proc~export_xg~2->proc~get_elem_xg~2 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~2->interface~elemconn_c0 proc~get_elem_xg~2->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Variables Type Attributes Name Initial real(kind=rk), allocatable :: Wc (:) Arrays for control points and weights real(kind=rk), allocatable :: Xc (:,:) Arrays for control points and weights type( bezier_curve ) :: bezier Declare a bezier curve object Functions function generate_Xc (num_coils, radius, height, num_points_per_coil) result(control_points) Arguments Type Intent Optional Attributes Name integer, intent(in) :: num_coils real(kind=rk), intent(in) :: radius real(kind=rk), intent(in) :: height integer, intent(in) :: num_points_per_coil Return Value real(kind=rk), dimension(:,:), allocatable Source Code program example_bezier_curve use forcad , only : rk , bezier_curve implicit none type ( bezier_curve ) :: bezier !! Declare a bezier curve object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights !----------------------------------------------------------------------------- ! Setting up the bezier curve !----------------------------------------------------------------------------- !> Define control points for the Bezier curve Xc = generate_Xc ( 5 , 1.0_rk , 2.0_rk , 20 ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 )), source = 1.0_rk ) !> Set control points and weights for the bezier curve object call bezier % set ( Xc = Xc , Wc = Wc ) !> Export initial control points to a VTK file call bezier % export_Xc ( 'vtk/bezier_curve_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the bezier curve !----------------------------------------------------------------------------- !> Generate the Bezier curve with a resolution of 1000 call bezier % create ( res = 500 ) !> Export the generated curve to a VTK file call bezier % export_Xg ( 'vtk/bezier_curve_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the Bezier curve object call bezier % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( num_coils , radius , height , num_points_per_coil ) result ( control_points ) integer , intent ( in ) :: num_coils , num_points_per_coil real ( rk ), intent ( in ) :: radius , height real ( rk ), dimension (:,:), allocatable :: control_points integer :: coil , i real ( rk ) :: theta , coil_height allocate ( control_points ( num_coils * num_points_per_coil , 3 )) do coil = 1 , num_coils coil_height = height * ( coil - 1 ) / real ( num_coils - 1 , rk ) theta = 0.0_rk do i = 1 , num_points_per_coil theta = theta + 2.0_rk * acos ( - 1.0_rk ) / real ( num_points_per_coil , rk ) control_points (( coil - 1 ) * num_points_per_coil + i , 1 ) = radius * cos ( theta ) control_points (( coil - 1 ) * num_points_per_coil + i , 2 ) = radius * sin ( theta ) control_points (( coil - 1 ) * num_points_per_coil + i , 3 ) = coil_height end do end do end function !----------------------------------------------------------------------------- end program example_bezier_curve","tags":"","loc":"program/example_bezier_curve.html"},{"title":"example_nurbs_volume – ForCAD","text":"Uses forcad program~~example_nurbs_volume~~UsesGraph program~example_nurbs_volume example_nurbs_volume module~forcad forcad program~example_nurbs_volume->module~forcad module~forcad_bezier_curve forcad_bezier_curve module~forcad->module~forcad_bezier_curve module~forcad_bezier_surface forcad_bezier_surface module~forcad->module~forcad_bezier_surface module~forcad_bezier_volume forcad_bezier_volume module~forcad->module~forcad_bezier_volume module~forcad_nurbs_curve forcad_nurbs_curve module~forcad->module~forcad_nurbs_curve module~forcad_nurbs_surface forcad_nurbs_surface module~forcad->module~forcad_nurbs_surface module~forcad_nurbs_volume forcad_nurbs_volume module~forcad->module~forcad_nurbs_volume module~forcad_utils forcad_utils module~forcad->module~forcad_utils module~forcad_bezier_curve->module~forcad_utils module~forcad_bezier_surface->module~forcad_utils module~forcad_bezier_volume->module~forcad_utils module~forcad_nurbs_curve->module~forcad_utils module~forcad_nurbs_surface->module~forcad_utils module~forcad_nurbs_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. This program demonstrates the usage of a NURBS (Non-Uniform Rational B-Spline) volume object to create and finalize a NURBS volume.\nIt sets up control points, weights, and knot vectors for all three dimensions, generates the volume, and exports the control points and the volume to VTK files. Define the control points for the NURBS volume Define weights for the control points Define knot vectors for all three dimensions\nSet knot vectors, control points, and weights for the NURBS volume object Export the control points to a VTK file Generate the NURBS volume with resolutions of 15, 15, and 15 in the three dimensions Export the generated volume to a VTK file Finalize the NURBS volume object Calls program~~example_nurbs_volume~~CallsGraph program~example_nurbs_volume example_nurbs_volume none~set forcad_nurbs_volume::nurbs_volume%set program~example_nurbs_volume->none~set proc~create forcad_nurbs_volume::nurbs_volume%create program~example_nurbs_volume->proc~create proc~export_xc forcad_nurbs_volume::nurbs_volume%export_Xc program~example_nurbs_volume->proc~export_xc proc~export_xg forcad_nurbs_volume::nurbs_volume%export_Xg program~example_nurbs_volume->proc~export_xg proc~finalize forcad_nurbs_volume::nurbs_volume%finalize program~example_nurbs_volume->proc~finalize proc~generate_xc~3 example_nurbs_volume::generate_Xc program~example_nurbs_volume->proc~generate_xc~3 proc~set1 forcad_nurbs_volume::nurbs_volume%set1 none~set->proc~set1 proc~set2 forcad_nurbs_volume::nurbs_volume%set2 none~set->proc~set2 interface~ndgrid forcad_utils::ndgrid proc~create->interface~ndgrid proc~basis_bspline forcad_utils::basis_bspline proc~create->proc~basis_bspline proc~kron forcad_utils::kron proc~create->proc~kron proc~get_elem_xc forcad_nurbs_volume::nurbs_volume%get_elem_Xc proc~export_xc->proc~get_elem_xc proc~get_elem_xg forcad_nurbs_volume::nurbs_volume%get_elem_Xg proc~export_xg->proc~get_elem_xg proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc->interface~elemconn_c0 proc~get_elem_xg->interface~elemconn_c0 proc~get_nc forcad_nurbs_volume::nurbs_volume%get_nc proc~set1->proc~get_nc proc~get_order forcad_nurbs_volume::nurbs_volume%get_order proc~set1->proc~get_order proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2->proc~compute_knot_vector proc~set2->proc~get_nc proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc->proc~compute_multiplicity proc~get_multiplicity forcad_nurbs_volume::nurbs_volume%get_multiplicity proc~get_order->proc~get_multiplicity proc~get_multiplicity->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Variables Type Attributes Name Initial real(kind=rk), allocatable :: Wc (:) Arrays for control points and weights real(kind=rk), allocatable :: Xc (:,:) Arrays for control points and weights real(kind=rk) :: knot1 (4) Arrays for knot vectors in all three dimensions real(kind=rk) :: knot2 (4) Arrays for knot vectors in all three dimensions real(kind=rk) :: knot3 (4) Arrays for knot vectors in all three dimensions type( nurbs_volume ) :: nurbs Declare a NURBS volume object Functions function generate_Xc (L) result(control_points) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: L Return Value real(kind=rk), dimension(:,:), allocatable Source Code program example_nurbs_volume use forcad , only : rk , nurbs_volume implicit none type ( nurbs_volume ) :: nurbs !! Declare a NURBS volume object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights real ( rk ) :: knot1 ( 4 ), knot2 ( 4 ), knot3 ( 4 ) !! Arrays for knot vectors in all three dimensions !----------------------------------------------------------------------------- ! Setting up the NURBS volume !----------------------------------------------------------------------------- !> Define the control points for the NURBS volume Xc = generate_Xc ( 5.0_rk ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 )), source = 1.0_rk ) !> Define knot vectors for all three dimensions knot1 = [ 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk ] knot2 = [ 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk ] knot3 = [ 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk ] !> Set knot vectors, control points, and weights for the NURBS volume object call nurbs % set ( knot1 , knot2 , knot3 , Xc , Wc ) !> Export the control points to a VTK file call nurbs % export_Xc ( 'vtk/nurbs_volume_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the NURBS volume !----------------------------------------------------------------------------- !> Generate the NURBS volume with resolutions of 15, 15, and 15 in the three dimensions call nurbs % create ( 15 , 15 , 15 ) !> Export the generated volume to a VTK file call nurbs % export_Xg ( 'vtk/nurbs_volume_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the NURBS volume object call nurbs % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( L ) result ( control_points ) implicit none real ( rk ), intent ( in ) :: L real ( rk ), dimension (:,:), allocatable :: control_points real ( rk ) :: L2 L2 = L / 2.0_rk allocate ( control_points ( 8 , 3 )) control_points ( 1 ,:) = [ L2 , - L2 , L2 ] control_points ( 2 ,:) = [ L2 , - L2 , - L2 ] control_points ( 3 ,:) = [ - L2 , - L2 , L2 ] control_points ( 4 ,:) = [ - L2 , - L2 , - L2 ] control_points ( 5 ,:) = [ L2 , L2 , L2 ] control_points ( 6 ,:) = [ L2 , L2 , - L2 ] control_points ( 7 ,:) = [ - L2 , L2 , L2 ] control_points ( 8 ,:) = [ - L2 , L2 , - L2 ] end function !----------------------------------------------------------------------------- end program example_nurbs_volume","tags":"","loc":"program/example_nurbs_volume.html"},{"title":"example_nurbs_curve – ForCAD","text":"Uses forcad program~~example_nurbs_curve~~UsesGraph program~example_nurbs_curve example_nurbs_curve module~forcad forcad program~example_nurbs_curve->module~forcad module~forcad_bezier_curve forcad_bezier_curve module~forcad->module~forcad_bezier_curve module~forcad_bezier_surface forcad_bezier_surface module~forcad->module~forcad_bezier_surface module~forcad_bezier_volume forcad_bezier_volume module~forcad->module~forcad_bezier_volume module~forcad_nurbs_curve forcad_nurbs_curve module~forcad->module~forcad_nurbs_curve module~forcad_nurbs_surface forcad_nurbs_surface module~forcad->module~forcad_nurbs_surface module~forcad_nurbs_volume forcad_nurbs_volume module~forcad->module~forcad_nurbs_volume module~forcad_utils forcad_utils module~forcad->module~forcad_utils module~forcad_bezier_curve->module~forcad_utils module~forcad_bezier_surface->module~forcad_utils module~forcad_bezier_volume->module~forcad_utils module~forcad_nurbs_curve->module~forcad_utils module~forcad_nurbs_surface->module~forcad_utils module~forcad_nurbs_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. This program demonstrates the usage of a NURBS (Non-Uniform Rational B-Spline) curve object to create and finalize a NURBS curve.\nIt sets up control points, weights, and knot vectors for all three dimensions, generates the curve, and exports the control points and the curve to VTK files. Calls program~~example_nurbs_curve~~CallsGraph program~example_nurbs_curve example_nurbs_curve none~set~5 forcad_nurbs_curve::nurbs_curve%set program~example_nurbs_curve->none~set~5 proc~create~5 forcad_nurbs_curve::nurbs_curve%create program~example_nurbs_curve->proc~create~5 proc~export_xc~5 forcad_nurbs_curve::nurbs_curve%export_Xc program~example_nurbs_curve->proc~export_xc~5 proc~export_xg~5 forcad_nurbs_curve::nurbs_curve%export_Xg program~example_nurbs_curve->proc~export_xg~5 proc~finalize~5 forcad_nurbs_curve::nurbs_curve%finalize program~example_nurbs_curve->proc~finalize~5 proc~set1~3 forcad_nurbs_curve::nurbs_curve%set1 none~set~5->proc~set1~3 proc~set2~3 forcad_nurbs_curve::nurbs_curve%set2 none~set~5->proc~set2~3 proc~basis_bspline forcad_utils::basis_bspline proc~create~5->proc~basis_bspline proc~get_elem_xc~5 forcad_nurbs_curve::nurbs_curve%get_elem_Xc proc~export_xc~5->proc~get_elem_xc~5 proc~get_elem_xg~5 forcad_nurbs_curve::nurbs_curve%get_elem_Xg proc~export_xg~5->proc~get_elem_xg~5 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~5->interface~elemconn_c0 proc~get_elem_xg~5->interface~elemconn_c0 proc~get_order~5 forcad_nurbs_curve::nurbs_curve%get_order proc~set1~3->proc~get_order~5 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2~3->proc~compute_knot_vector proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~get_multiplicity~3 forcad_nurbs_curve::nurbs_curve%get_multiplicity proc~get_order~5->proc~get_multiplicity~3 proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_multiplicity~3->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Variables Type Attributes Name Initial real(kind=rk), allocatable :: Wc (:) Arrays for control points and weights real(kind=rk), allocatable :: Xc (:,:) Arrays for control points and weights real(kind=rk) :: knot (6) Array for knot vector type( nurbs_curve ) :: nurbs Declare a NURBS curve object Source Code program example_nurbs_curve use forcad , only : rk , nurbs_curve implicit none type ( nurbs_curve ) :: nurbs !! Declare a NURBS curve object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights real ( rk ) :: knot ( 6 ) !! Array for knot vector !----------------------------------------------------------------------------- ! Setting up the NURBS curve !----------------------------------------------------------------------------- ! Define control points for the NURBS curve allocate ( Xc ( 3 , 3 )) Xc ( 1 ,:) = [ 0.0_rk , 0.0_rk , 0.0_rk ] Xc ( 2 ,:) = [ 0.0_rk , 5.0_rk , 0.0_rk ] Xc ( 3 ,:) = [ 5.0_rk , 5.0_rk , 0.0_rk ] ! Define weights for the control points allocate ( Wc ( 3 )) Wc = [ 1.0_rk , 2.0_rk , 1.0_rk ] ! Define knot vector knot = [ 0.0_rk , 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk , 1.0_rk ] ! Set knot vector, control points, and weights for the NURBS curve object call nurbs % set ( knot , Xc , Wc ) ! Export control points to a VTK file call nurbs % export_Xc ( 'vtk/nurbs_curve_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the NURBS curve !----------------------------------------------------------------------------- ! Generate the NURBS curve with a resolution of 20 call nurbs % create ( res = 20 ) ! Export the generated curve to a VTK file call nurbs % export_Xg ( 'vtk/nurbs_curve_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- ! Finalize the NURBS curve object call nurbs % finalize () end program example_nurbs_curve","tags":"","loc":"program/example_nurbs_curve.html"},{"title":"example_nurbs_surface – ForCAD","text":"Uses forcad program~~example_nurbs_surface~~UsesGraph program~example_nurbs_surface example_nurbs_surface module~forcad forcad program~example_nurbs_surface->module~forcad module~forcad_bezier_curve forcad_bezier_curve module~forcad->module~forcad_bezier_curve module~forcad_bezier_surface forcad_bezier_surface module~forcad->module~forcad_bezier_surface module~forcad_bezier_volume forcad_bezier_volume module~forcad->module~forcad_bezier_volume module~forcad_nurbs_curve forcad_nurbs_curve module~forcad->module~forcad_nurbs_curve module~forcad_nurbs_surface forcad_nurbs_surface module~forcad->module~forcad_nurbs_surface module~forcad_nurbs_volume forcad_nurbs_volume module~forcad->module~forcad_nurbs_volume module~forcad_utils forcad_utils module~forcad->module~forcad_utils module~forcad_bezier_curve->module~forcad_utils module~forcad_bezier_surface->module~forcad_utils module~forcad_bezier_volume->module~forcad_utils module~forcad_nurbs_curve->module~forcad_utils module~forcad_nurbs_surface->module~forcad_utils module~forcad_nurbs_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. This program demonstrates the usage of a NURBS (Non-Uniform Rational B-Spline) surface object to create and finalize a NURBS surface.\nIt sets up control points, weights, and knot vectors for all three dimensions, generates the surface, and exports the control points and the surface to VTK files. Define control points for the NURBS surface Define weights for the control points\nDefine knot vectors for both dimensions\nSet knot vectors, control points, and weights for the NURBS surface object Export the control points to a VTK file Generate the NURBS surface with resolutions of 30 in both dimensions Export the generated surface to a VTK file Finalize the NURBS surface object Calls program~~example_nurbs_surface~~CallsGraph program~example_nurbs_surface example_nurbs_surface none~set~4 forcad_nurbs_surface::nurbs_surface%set program~example_nurbs_surface->none~set~4 proc~create~4 forcad_nurbs_surface::nurbs_surface%create program~example_nurbs_surface->proc~create~4 proc~export_xc~4 forcad_nurbs_surface::nurbs_surface%export_Xc program~example_nurbs_surface->proc~export_xc~4 proc~export_xg~4 forcad_nurbs_surface::nurbs_surface%export_Xg program~example_nurbs_surface->proc~export_xg~4 proc~finalize~4 forcad_nurbs_surface::nurbs_surface%finalize program~example_nurbs_surface->proc~finalize~4 proc~generate_xc~4 example_nurbs_surface::generate_Xc program~example_nurbs_surface->proc~generate_xc~4 proc~set1~2 forcad_nurbs_surface::nurbs_surface%set1 none~set~4->proc~set1~2 proc~set2~2 forcad_nurbs_surface::nurbs_surface%set2 none~set~4->proc~set2~2 interface~ndgrid forcad_utils::ndgrid proc~create~4->interface~ndgrid proc~basis_bspline forcad_utils::basis_bspline proc~create~4->proc~basis_bspline proc~kron forcad_utils::kron proc~create~4->proc~kron proc~get_elem_xc~4 forcad_nurbs_surface::nurbs_surface%get_elem_Xc proc~export_xc~4->proc~get_elem_xc~4 proc~get_elem_xg~4 forcad_nurbs_surface::nurbs_surface%get_elem_Xg proc~export_xg~4->proc~get_elem_xg~4 proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~4->interface~elemconn_c0 proc~get_elem_xg~4->interface~elemconn_c0 proc~get_nc~4 forcad_nurbs_surface::nurbs_surface%get_nc proc~set1~2->proc~get_nc~4 proc~get_order~4 forcad_nurbs_surface::nurbs_surface%get_order proc~set1~2->proc~get_order~4 proc~compute_knot_vector forcad_utils::compute_knot_vector proc~set2~2->proc~compute_knot_vector proc~set2~2->proc~get_nc~4 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v proc~repelem forcad_utils::repelem proc~compute_knot_vector->proc~repelem proc~compute_multiplicity forcad_utils::compute_multiplicity proc~get_nc~4->proc~compute_multiplicity proc~get_multiplicity~2 forcad_nurbs_surface::nurbs_surface%get_multiplicity proc~get_order~4->proc~get_multiplicity~2 proc~get_multiplicity~2->proc~compute_multiplicity Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Variables Type Attributes Name Initial real(kind=rk), allocatable :: Wc (:) Arrays for control points and weights real(kind=rk), allocatable :: Xc (:,:) Arrays for control points and weights real(kind=rk) :: knot1 (6) Arrays for knot vectors in both dimensions real(kind=rk) :: knot2 (6) Arrays for knot vectors in both dimensions type( nurbs_surface ) :: nurbs Declare a NURBS surface object Functions function generate_Xc (num_rows, num_cols, peak_height) result(control_points) Arguments Type Intent Optional Attributes Name integer, intent(in) :: num_rows integer, intent(in) :: num_cols real(kind=rk), intent(in) :: peak_height Return Value real(kind=rk), dimension(:,:), allocatable Source Code program example_nurbs_surface use forcad implicit none type ( nurbs_surface ) :: nurbs !! Declare a NURBS surface object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights real ( rk ) :: knot1 ( 6 ), knot2 ( 6 ) !! Arrays for knot vectors in both dimensions !----------------------------------------------------------------------------- ! Setting up the NURBS surface !----------------------------------------------------------------------------- !> Define control points for the NURBS surface Xc = generate_Xc ( 3 , 3 , 1.0_rk ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 ))) Wc = 1.0_rk !> Define knot vectors for both dimensions knot1 = [ 0.0_rk , 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk , 1.0_rk ] knot2 = [ 0.0_rk , 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk , 1.0_rk ] !> Set knot vectors, control points, and weights for the NURBS surface object call nurbs % set ( knot1 , knot2 , Xc , Wc ) !> Export the control points to a VTK file call nurbs % export_Xc ( 'vtk/nurbs_surface_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the NURBS surface !----------------------------------------------------------------------------- !> Generate the NURBS surface with resolutions of 30 in both dimensions call nurbs % create ( 30 , 30 ) !> Export the generated surface to a VTK file call nurbs % export_Xg ( 'vtk/nurbs_surface_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the NURBS surface object call nurbs % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( num_rows , num_cols , peak_height ) result ( control_points ) integer , intent ( in ) :: num_rows , num_cols real ( rk ), intent ( in ) :: peak_height real ( rk ), dimension (:,:), allocatable :: control_points integer :: i , j real ( rk ) :: x_spacing , y_spacing , x_offset , y_offset x_spacing = 1.0_rk / real ( num_cols - 1 ) y_spacing = 1.0_rk / real ( num_rows - 1 ) x_offset = - 0.5_rk y_offset = - 0.5_rk allocate ( control_points ( num_rows * num_cols , 3 )) do i = 1 , num_rows do j = 1 , num_cols control_points (( i - 1 ) * num_cols + j , 1 ) = x_offset + real ( j - 1 ) * x_spacing control_points (( i - 1 ) * num_cols + j , 2 ) = y_offset + real ( i - 1 ) * y_spacing control_points (( i - 1 ) * num_cols + j , 3 ) = & peak_height * exp ( - (( control_points (( i - 1 ) * num_cols + j , 1 ) ** 2 ) & + ( control_points (( i - 1 ) * num_cols + j , 2 ) ** 2 ))) + 0.5_rk * peak_height * 0.2_rk end do end do end function !----------------------------------------------------------------------------- end program example_nurbs_surface","tags":"","loc":"program/example_nurbs_surface.html"},{"title":"example_bezier_volume – ForCAD","text":"Uses forcad program~~example_bezier_volume~~UsesGraph program~example_bezier_volume example_bezier_volume module~forcad forcad program~example_bezier_volume->module~forcad module~forcad_bezier_curve forcad_bezier_curve module~forcad->module~forcad_bezier_curve module~forcad_bezier_surface forcad_bezier_surface module~forcad->module~forcad_bezier_surface module~forcad_bezier_volume forcad_bezier_volume module~forcad->module~forcad_bezier_volume module~forcad_nurbs_curve forcad_nurbs_curve module~forcad->module~forcad_nurbs_curve module~forcad_nurbs_surface forcad_nurbs_surface module~forcad->module~forcad_nurbs_surface module~forcad_nurbs_volume forcad_nurbs_volume module~forcad->module~forcad_nurbs_volume module~forcad_utils forcad_utils module~forcad->module~forcad_utils module~forcad_bezier_curve->module~forcad_utils module~forcad_bezier_surface->module~forcad_utils module~forcad_bezier_volume->module~forcad_utils module~forcad_nurbs_curve->module~forcad_utils module~forcad_nurbs_surface->module~forcad_utils module~forcad_nurbs_volume->module~forcad_utils Help Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\ndescended from. Dashed arrows point from a module or program unit to \nmodules which it uses. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. This program demonstrates the usage of a Bezier volume object to create, and finalize a Bezier volume.\nIt sets up control points and weights, generates the volume, and exports the control points\nand the volume to VTK files at various stages. Define control points for the Bezier volume Define weights for the control points Set control points and weights for the bezier volume object Export initial control points to a VTK file Generate the Bezier volume with a resolution of 10x10x10 Export the generated volume to a VTK file Finalize the Bezier volume object Calls program~~example_bezier_volume~~CallsGraph program~example_bezier_volume example_bezier_volume proc~create~3 forcad_bezier_volume::bezier_volume%create program~example_bezier_volume->proc~create~3 proc~export_xc~3 forcad_bezier_volume::bezier_volume%export_Xc program~example_bezier_volume->proc~export_xc~3 proc~export_xg~3 forcad_bezier_volume::bezier_volume%export_Xg program~example_bezier_volume->proc~export_xg~3 proc~finalize~3 forcad_bezier_volume::bezier_volume%finalize program~example_bezier_volume->proc~finalize~3 proc~generate_xc~5 example_bezier_volume::generate_Xc program~example_bezier_volume->proc~generate_xc~5 proc~set~2 forcad_bezier_volume::bezier_volume%set program~example_bezier_volume->proc~set~2 interface~ndgrid forcad_utils::ndgrid proc~create~3->interface~ndgrid proc~basis_bernstein forcad_utils::basis_bernstein proc~create~3->proc~basis_bernstein proc~kron forcad_utils::kron proc~create~3->proc~kron proc~get_elem_xc~3 forcad_bezier_volume::bezier_volume%get_elem_Xc proc~export_xc~3->proc~get_elem_xc~3 proc~get_elem_xg~3 forcad_bezier_volume::bezier_volume%get_elem_Xg proc~export_xg~3->proc~get_elem_xg~3 proc~ndgrid2 forcad_utils::ndgrid2 interface~ndgrid->proc~ndgrid2 proc~ndgrid3 forcad_utils::ndgrid3 interface~ndgrid->proc~ndgrid3 interface~elemconn_c0 forcad_utils::elemConn_C0 proc~get_elem_xc~3->interface~elemconn_c0 proc~get_elem_xg~3->interface~elemconn_c0 proc~cmp_elemconn_c0_l forcad_utils::cmp_elemConn_C0_L interface~elemconn_c0->proc~cmp_elemconn_c0_l proc~cmp_elemconn_c0_s forcad_utils::cmp_elemConn_C0_S interface~elemconn_c0->proc~cmp_elemconn_c0_s proc~cmp_elemconn_c0_v forcad_utils::cmp_elemConn_C0_V interface~elemconn_c0->proc~cmp_elemconn_c0_v Help Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Type Bound Procedure Type Bound Procedure Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \narrows point from an interface to procedures which implement that interface.\nThis could include the module procedures in a generic interface or the\nimplementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Variables Type Attributes Name Initial real(kind=rk), allocatable :: Wc (:) Arrays for control points and weights real(kind=rk), allocatable :: Xc (:,:) Arrays for control points and weights type( bezier_volume ) :: bezier Declare a bezier volume object Functions function generate_Xc (L) result(control_points) Arguments Type Intent Optional Attributes Name real(kind=rk), intent(in) :: L Return Value real(kind=rk), dimension(:,:), allocatable Source Code program example_bezier_volume use forcad , only : rk , bezier_volume implicit none type ( bezier_volume ) :: bezier !! Declare a bezier volume object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights !----------------------------------------------------------------------------- ! Setting up the bezier volume !----------------------------------------------------------------------------- !> Define control points for the Bezier volume Xc = generate_Xc ( 1.0_rk ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 )), source = 1.0_rk ) !> Set control points and weights for the bezier volume object call bezier % set ([ 2 , 2 , 2 ], Xc , Wc ) !> Export initial control points to a VTK file call bezier % export_Xc ( 'vtk/bezier_volume_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the bezier volume !----------------------------------------------------------------------------- !> Generate the Bezier volume with a resolution of 10x10x10 call bezier % create ( 15 , 15 , 15 ) !> Export the generated volume to a VTK file call bezier % export_Xg ( 'vtk/bezier_volume_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the Bezier volume object call bezier % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( L ) result ( control_points ) implicit none real ( rk ), intent ( in ) :: L real ( rk ), dimension (:,:), allocatable :: control_points real ( rk ) :: L2 L2 = L / 2.0_rk allocate ( control_points ( 8 , 3 )) control_points ( 1 ,:) = [ L2 , - L2 , L2 ] control_points ( 2 ,:) = [ L2 , - L2 , - L2 ] control_points ( 3 ,:) = [ - L2 , - L2 , L2 ] control_points ( 4 ,:) = [ - L2 , - L2 , - L2 ] control_points ( 5 ,:) = [ L2 , L2 , L2 ] control_points ( 6 ,:) = [ L2 , L2 , - L2 ] control_points ( 7 ,:) = [ - L2 , L2 , L2 ] control_points ( 8 ,:) = [ - L2 , L2 , - L2 ] end function !----------------------------------------------------------------------------- end program example_bezier_volume","tags":"","loc":"program/example_bezier_volume.html"},{"title":"bezier_surface.f90 – ForCAD","text":"This file depends on sourcefile~~bezier_surface.f90~~EfferentGraph sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code !> This program demonstrates the usage of a Bezier surface object to create, and finalize a Bezier surface. !> It sets up control points and weights, generates the surface, and exports the control points !> and the surface to VTK files at various stages. program example_bezier_surface use forcad , only : rk , bezier_surface implicit none type ( bezier_surface ) :: bezier !! Declare a bezier surface object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights !----------------------------------------------------------------------------- ! Setting up the bezier surface !----------------------------------------------------------------------------- !> Define control points for the Bezier surface Xc = generate_Xc ( 10 , 10 , 1.5_rk ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 )), source = 1.0_rk ) !> Set control points and weights for the bezier surface object call bezier % set ([ 10 , 10 ], Xc , Wc ) !> Export initial control points to a VTK file call bezier % export_Xc ( 'vtk/bezier_surface_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the bezier surface !----------------------------------------------------------------------------- !> Generate the Bezier surface with a resolution of 100x100 call bezier % create ( res1 = 30 , res2 = 30 ) !> Export the generated surface to a VTK file call bezier % export_Xg ( 'vtk/bezier_surface_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the Bezier surface object call bezier % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( num_rows , num_cols , peak_height ) result ( control_points ) integer , intent ( in ) :: num_rows , num_cols real ( rk ), intent ( in ) :: peak_height real ( rk ), dimension (:,:), allocatable :: control_points integer :: i , j real ( rk ) :: x_spacing , y_spacing , x_offset , y_offset x_spacing = 1.0_rk / real ( num_cols - 1 ) y_spacing = 1.0_rk / real ( num_rows - 1 ) x_offset = - 0.5_rk y_offset = - 0.5_rk allocate ( control_points ( num_rows * num_cols , 3 )) do i = 1 , num_rows do j = 1 , num_cols control_points (( i - 1 ) * num_cols + j , 1 ) = x_offset + real ( j - 1 ) * x_spacing control_points (( i - 1 ) * num_cols + j , 2 ) = y_offset + real ( i - 1 ) * y_spacing control_points (( i - 1 ) * num_cols + j , 3 ) = & peak_height * exp ( - (( control_points (( i - 1 ) * num_cols + j , 1 ) ** 2 ) & + ( control_points (( i - 1 ) * num_cols + j , 2 ) ** 2 ))) + 0.5_rk * peak_height * 0.2_rk end do end do end function !----------------------------------------------------------------------------- end program example_bezier_surface","tags":"","loc":"sourcefile/bezier_surface.f90.html"},{"title":"bezier_curve.f90 – ForCAD","text":"This file depends on sourcefile~~bezier_curve.f90~~EfferentGraph sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code !> This program demonstrates the usage of a Bezier curve object to create, and finalize a Bezier curve. !> It sets up control points and weights, generates the curve, and exports the control points !> and the curve to VTK files at various stages. program example_bezier_curve use forcad , only : rk , bezier_curve implicit none type ( bezier_curve ) :: bezier !! Declare a bezier curve object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights !----------------------------------------------------------------------------- ! Setting up the bezier curve !----------------------------------------------------------------------------- !> Define control points for the Bezier curve Xc = generate_Xc ( 5 , 1.0_rk , 2.0_rk , 20 ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 )), source = 1.0_rk ) !> Set control points and weights for the bezier curve object call bezier % set ( Xc = Xc , Wc = Wc ) !> Export initial control points to a VTK file call bezier % export_Xc ( 'vtk/bezier_curve_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the bezier curve !----------------------------------------------------------------------------- !> Generate the Bezier curve with a resolution of 1000 call bezier % create ( res = 500 ) !> Export the generated curve to a VTK file call bezier % export_Xg ( 'vtk/bezier_curve_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the Bezier curve object call bezier % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( num_coils , radius , height , num_points_per_coil ) result ( control_points ) integer , intent ( in ) :: num_coils , num_points_per_coil real ( rk ), intent ( in ) :: radius , height real ( rk ), dimension (:,:), allocatable :: control_points integer :: coil , i real ( rk ) :: theta , coil_height allocate ( control_points ( num_coils * num_points_per_coil , 3 )) do coil = 1 , num_coils coil_height = height * ( coil - 1 ) / real ( num_coils - 1 , rk ) theta = 0.0_rk do i = 1 , num_points_per_coil theta = theta + 2.0_rk * acos ( - 1.0_rk ) / real ( num_points_per_coil , rk ) control_points (( coil - 1 ) * num_points_per_coil + i , 1 ) = radius * cos ( theta ) control_points (( coil - 1 ) * num_points_per_coil + i , 2 ) = radius * sin ( theta ) control_points (( coil - 1 ) * num_points_per_coil + i , 3 ) = coil_height end do end do end function !----------------------------------------------------------------------------- end program example_bezier_curve","tags":"","loc":"sourcefile/bezier_curve.f90.html"},{"title":"nurbs_volume.f90 – ForCAD","text":"This file depends on sourcefile~~nurbs_volume.f90~~EfferentGraph sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code !> This program demonstrates the usage of a NURBS (Non-Uniform Rational B-Spline) volume object to create and finalize a NURBS volume. !> It sets up control points, weights, and knot vectors for all three dimensions, generates the volume, and exports the control points and the volume to VTK files. program example_nurbs_volume use forcad , only : rk , nurbs_volume implicit none type ( nurbs_volume ) :: nurbs !! Declare a NURBS volume object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights real ( rk ) :: knot1 ( 4 ), knot2 ( 4 ), knot3 ( 4 ) !! Arrays for knot vectors in all three dimensions !----------------------------------------------------------------------------- ! Setting up the NURBS volume !----------------------------------------------------------------------------- !> Define the control points for the NURBS volume Xc = generate_Xc ( 5.0_rk ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 )), source = 1.0_rk ) !> Define knot vectors for all three dimensions knot1 = [ 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk ] knot2 = [ 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk ] knot3 = [ 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk ] !> Set knot vectors, control points, and weights for the NURBS volume object call nurbs % set ( knot1 , knot2 , knot3 , Xc , Wc ) !> Export the control points to a VTK file call nurbs % export_Xc ( 'vtk/nurbs_volume_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the NURBS volume !----------------------------------------------------------------------------- !> Generate the NURBS volume with resolutions of 15, 15, and 15 in the three dimensions call nurbs % create ( 15 , 15 , 15 ) !> Export the generated volume to a VTK file call nurbs % export_Xg ( 'vtk/nurbs_volume_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the NURBS volume object call nurbs % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( L ) result ( control_points ) implicit none real ( rk ), intent ( in ) :: L real ( rk ), dimension (:,:), allocatable :: control_points real ( rk ) :: L2 L2 = L / 2.0_rk allocate ( control_points ( 8 , 3 )) control_points ( 1 ,:) = [ L2 , - L2 , L2 ] control_points ( 2 ,:) = [ L2 , - L2 , - L2 ] control_points ( 3 ,:) = [ - L2 , - L2 , L2 ] control_points ( 4 ,:) = [ - L2 , - L2 , - L2 ] control_points ( 5 ,:) = [ L2 , L2 , L2 ] control_points ( 6 ,:) = [ L2 , L2 , - L2 ] control_points ( 7 ,:) = [ - L2 , L2 , L2 ] control_points ( 8 ,:) = [ - L2 , L2 , - L2 ] end function !----------------------------------------------------------------------------- end program example_nurbs_volume","tags":"","loc":"sourcefile/nurbs_volume.f90.html"},{"title":"forcad_nurbs_volume.f90 – ForCAD","text":"This file depends on sourcefile~~forcad_nurbs_volume.f90~~EfferentGraph sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Files dependent on this one sourcefile~~forcad_nurbs_volume.f90~~AfferentGraph sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code module forcad_nurbs_volume use forcad_utils , only : rk , basis_bspline , elemConn_C0 , kron , ndgrid , compute_multiplicity , compute_knot_vector implicit none private public nurbs_volume !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause type nurbs_volume real ( rk ), allocatable , private :: Xc (:,:) !! control points real ( rk ), allocatable , private :: Xg (:,:) !! geometry points real ( rk ), allocatable , private :: Wc (:) !! weights real ( rk ), allocatable , private :: Xt1 (:) !! parameter values in the first direction real ( rk ), allocatable , private :: Xt2 (:) !! parameter values in the second direction real ( rk ), allocatable , private :: Xt3 (:) !! parameter values in the third direction real ( rk ), allocatable , private :: knot1 (:) !! knot vector real ( rk ), allocatable , private :: knot2 (:) !! knot vector real ( rk ), allocatable , private :: knot3 (:) !! knot vector integer , private :: order ( 3 ) !! degree of the first direction integer , private :: nc ( 3 ) !! number of control points in each direction integer , private :: ng ( 3 ) !! number of geometry points in each direction contains procedure :: set1 !!> Set control points and weights procedure :: set2 !!> Set control points and weights generic :: set => set1 , set2 procedure :: create !!> Generate geometry points procedure :: get_Xc !!> Get control points procedure :: get_Xg !!> Get geometry points procedure :: get_Wc !!> Get weights procedure :: get_Xt !!> Get parameter values procedure :: get_knot !!> Get knot vector procedure :: get_ng !!> Get number of geometry points procedure :: get_order !!> Get order of the Bezier curve procedure :: finalize !!> Finalize the NURBS curve object procedure :: get_elem_Xc !!> Generate connectivity for control points procedure :: get_elem_Xg !!> Generate connectivity for geometry points procedure :: export_Xc !!> Export control points to VTK file procedure :: export_Xg !!> Export geometry points to VTK file procedure :: modify_Xc !!> Modify control points procedure :: modify_Wc !!> Modify weights procedure :: get_multiplicity !!> Get multiplicity of the knot vector procedure :: get_continuity !!> Get continuity of the curve procedure :: get_nc !!> Get number of required control points end type !=============================================================================== contains !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the NURBS curve object. pure subroutine set1 ( this , knot1 , knot2 , knot3 , Xc , Wc ) class ( nurbs_volume ), intent ( inout ) :: this real ( rk ), intent ( in ) :: knot1 (:), knot2 (:), knot3 (:) real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) this % knot1 = knot1 this % knot2 = knot2 this % knot3 = knot3 this % order = this % get_order () this % nc ( 1 ) = this % get_nc ( 1 ) this % nc ( 2 ) = this % get_nc ( 2 ) this % nc ( 3 ) = this % get_nc ( 3 ) this % Xc = Xc if ( present ( Wc )) this % Wc = Wc end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the NURBS curve object. pure subroutine set2 ( this , Xth_dir1 , Xth_dir2 , Xth_dir3 , order , continuity1 , continuity2 , continuity3 , Xc , Wc ) class ( nurbs_volume ), intent ( inout ) :: this real ( rk ), intent ( in ) :: Xth_dir1 (:), Xth_dir2 (:), Xth_dir3 (:) integer , intent ( in ) :: order (:) integer , intent ( in ) :: continuity1 (:), continuity2 (:), continuity3 (:) real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) integer :: nc ( 3 ) this % knot1 = compute_knot_vector ( Xth_dir1 , order ( 1 ), continuity1 ) this % knot2 = compute_knot_vector ( Xth_dir2 , order ( 2 ), continuity2 ) this % knot3 = compute_knot_vector ( Xth_dir3 , order ( 3 ), continuity3 ) this % order ( 1 ) = order ( 1 ) this % order ( 2 ) = order ( 2 ) this % order ( 3 ) = order ( 3 ) this % nc ( 1 ) = this % get_nc ( 1 ) this % nc ( 2 ) = this % get_nc ( 2 ) this % nc ( 3 ) = this % get_nc ( 3 ) this % Xc = Xc if ( present ( Wc )) this % Wc = Wc end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine create ( this , res1 , res2 , res3 , Xt1 , Xt2 , Xt3 ) class ( nurbs_volume ), intent ( inout ) :: this integer , intent ( in ), optional :: res1 , res2 , res3 real ( rk ), intent ( in ), optional :: Xt1 (:), Xt2 (:), Xt3 (:) integer :: i , j real ( rk ), dimension (:), allocatable :: Tgc1 , Tgc2 , Tgc3 , Tgc real ( rk ), dimension (:,:), allocatable :: Xt ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if ! Set parameter values if ( present ( Xt1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) this % Xt1 = Xt1 elseif ( present ( res1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) allocate ( this % Xt1 ( res1 )) this % Xt1 = [( real ( i - 1 , rk ) / real ( res1 - 1 , rk ), i = 1 , res1 )] ! else ! this%Xt1 = this%Xt1 end if ! Set parameter values if ( present ( Xt2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) this % Xt2 = Xt2 elseif ( present ( res2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) allocate ( this % Xt2 ( res2 )) this % Xt2 = [( real ( i - 1 , rk ) / real ( res2 - 1 , rk ), i = 1 , res2 )] ! else ! this%Xt2 = this%Xt2 end if ! Set parameter values if ( present ( Xt3 )) then if ( allocated ( this % Xt3 )) deallocate ( this % Xt3 ) this % Xt3 = Xt3 elseif ( present ( res3 )) then if ( allocated ( this % Xt3 )) deallocate ( this % Xt3 ) allocate ( this % Xt3 ( res3 )) this % Xt3 = [( real ( i - 1 , rk ) / real ( res3 - 1 , rk ), i = 1 , res3 )] ! else ! this%Xt3 = this%Xt3 end if ! Set number of geometry points this % ng ( 1 ) = size ( this % Xt1 , 1 ) this % ng ( 2 ) = size ( this % Xt2 , 1 ) this % ng ( 3 ) = size ( this % Xt3 , 1 ) call ndgrid ( this % Xt1 , this % Xt2 , this % Xt3 , Xt ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) allocate ( this % Xg ( this % ng ( 1 ) * this % ng ( 2 ) * this % ng ( 3 ), size ( this % Xc , 2 ))) if ( allocated ( this % Wc )) then ! NURBS volume do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bspline ( Xt ( i , 1 ), this % knot1 , this % nc ( 1 ), this % order ( 1 )) Tgc2 = basis_bspline ( Xt ( i , 2 ), this % knot2 , this % nc ( 2 ), this % order ( 2 )) Tgc3 = basis_bspline ( Xt ( i , 3 ), this % knot3 , this % nc ( 3 ), this % order ( 3 )) Tgc = kron ( Tgc3 , kron ( Tgc2 , Tgc1 )) Tgc = Tgc * ( this % Wc / ( dot_product ( Tgc , this % Wc ))) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do else do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bspline ( Xt ( i , 1 ), this % knot1 , this % nc ( 1 ), this % order ( 1 )) Tgc2 = basis_bspline ( Xt ( i , 2 ), this % knot2 , this % nc ( 2 ), this % order ( 2 )) Tgc3 = basis_bspline ( Xt ( i , 3 ), this % knot3 , this % nc ( 3 ), this % order ( 3 )) Tgc = kron ( Tgc3 , kron ( Tgc2 , Tgc1 )) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xc ( this ) result ( Xc ) class ( nurbs_volume ), intent ( in ) :: this real ( rk ), allocatable :: Xc (:,:) if ( allocated ( this % Xc )) then Xc = this % Xc else error stop 'Control points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xg ( this ) result ( Xg ) class ( nurbs_volume ), intent ( in ) :: this real ( rk ), allocatable :: Xg (:,:) if ( allocated ( this % Xg )) then Xg = this % Xg else error stop 'Geometry points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Wc ( this ) result ( Wc ) class ( nurbs_volume ), intent ( in ) :: this real ( rk ), allocatable :: Wc (:) if ( allocated ( this % Wc )) then Wc = this % Wc else error stop 'The Bezier curve is not rational.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xt ( this , dir ) result ( Xt ) class ( nurbs_volume ), intent ( in ) :: this integer , intent ( in ) :: dir real ( rk ), allocatable :: Xt (:) if ( dir == 1 ) then if ( allocated ( this % Xt1 )) then Xt = this % Xt1 else error stop 'Parameter values are not set.' end if elseif ( dir == 2 ) then if ( allocated ( this % Xt2 )) then Xt = this % Xt2 else error stop 'Parameter values are not set.' end if elseif ( dir == 3 ) then if ( allocated ( this % Xt3 )) then Xt = this % Xt3 else error stop 'Parameter values are not set.' end if else error stop 'Invalid direction for parameter values.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_ng ( this ) result ( ng ) class ( nurbs_volume ), intent ( in ) :: this integer :: ng ( 3 ) ng = this % ng end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_order ( this ) result ( order ) class ( nurbs_volume ), intent ( in ) :: this integer :: order ( 3 ) integer , allocatable :: m1 (:), m2 (:), m3 (:) m1 = this % get_multiplicity ( 1 ) m2 = this % get_multiplicity ( 2 ) m3 = this % get_multiplicity ( 3 ) order ( 1 ) = m1 ( 1 ) - 1 order ( 2 ) = m2 ( 1 ) - 1 order ( 3 ) = m3 ( 1 ) - 1 end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_knot ( this , dir ) result ( knot ) class ( nurbs_volume ), intent ( in ) :: this integer , intent ( in ) :: dir real ( rk ), allocatable :: knot (:) if ( dir == 1 ) then if ( allocated ( this % knot1 )) then knot = this % knot1 else error stop 'Knot vector is not set.' end if elseif ( dir == 2 ) then if ( allocated ( this % knot2 )) then knot = this % knot2 else error stop 'Knot vector is not set.' end if elseif ( dir == 3 ) then if ( allocated ( this % knot3 )) then knot = this % knot3 else error stop 'Knot vector is not set.' end if else error stop 'Invalid direction for knot vector.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine finalize ( this ) class ( nurbs_volume ), intent ( inout ) :: this if ( allocated ( this % Xc )) deallocate ( this % Xc ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) if ( allocated ( this % Wc )) deallocate ( this % Wc ) if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) if ( allocated ( this % Xt3 )) deallocate ( this % Xt3 ) if ( allocated ( this % knot1 )) deallocate ( this % knot1 ) if ( allocated ( this % knot2 )) deallocate ( this % knot2 ) if ( allocated ( this % knot3 )) deallocate ( this % knot3 ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xc ( this , elemConn , p ) class ( nurbs_volume ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p (:) if ( present ( p )) then elemConn = elemConn_C0 ( this % nc ( 1 ), this % nc ( 2 ), this % nc ( 3 ), p ( 1 ), p ( 2 ), p ( 3 )) else elemConn = elemConn_C0 ( this % nc ( 1 ), this % nc ( 2 ), this % nc ( 3 ), 1 , 1 , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xg ( this , elemConn , p ) class ( nurbs_volume ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p (:) if ( present ( p )) then elemConn = elemConn_C0 ( this % ng ( 1 ), this % ng ( 2 ), this % ng ( 3 ), p ( 1 ), p ( 2 ), p ( 3 )) else elemConn = elemConn_C0 ( this % ng ( 1 ), this % ng ( 2 ), this % ng ( 3 ), 1 , 1 , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xc ( this , filename ) class ( nurbs_volume ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , nc , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if call this % get_elem_Xc ( elemConn ) nc = size ( this % Xc , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , nc , 'double' if ( size ( this % Xc , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), 0.0_rk , i = 1 , nc ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), this % Xc ( i , 3 ) , i = 1 , nc ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 9 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 8 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , elemConn ( i , 4 ) - 1 , elemConn ( i , 3 ) - 1 ,& elemConn ( i , 5 ) - 1 , elemConn ( i , 6 ) - 1 , elemConn ( i , 8 ) - 1 , elemConn ( i , 7 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 12 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xg ( this , filename ) class ( nurbs_volume ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , ng , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xg )) then error stop 'Geometry points are not set.' end if call this % get_elem_Xg ( elemConn ) ng = size ( this % Xg , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , ng , 'double' if ( size ( this % Xg , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), 0.0_rk , i = 1 , ng ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), this % Xg ( i , 3 ) , i = 1 , ng ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 9 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 8 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , elemConn ( i , 4 ) - 1 , elemConn ( i , 3 ) - 1 ,& elemConn ( i , 5 ) - 1 , elemConn ( i , 6 ) - 1 , elemConn ( i , 8 ) - 1 , elemConn ( i , 7 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 12 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine modify_Xc ( this , X , num , dir ) class ( nurbs_volume ), intent ( inout ) :: this real ( rk ), intent ( in ) :: X integer , intent ( in ) :: num integer , intent ( in ) :: dir if ( allocated ( this % Xc )) then this % Xc ( num , dir ) = X call this % set ( knot1 = this % knot1 , knot2 = this % knot2 , knot3 = this % knot3 , Xc = this % Xc , Wc = this % Wc ) else error stop 'Control points are not set.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine modify_Wc ( this , W , num ) class ( nurbs_volume ), intent ( inout ) :: this real ( rk ), intent ( in ) :: W integer , intent ( in ) :: num if ( allocated ( this % Wc )) then this % Wc ( num ) = W call this % set ( knot1 = this % knot1 , knot2 = this % knot2 , knot3 = this % knot3 , Xc = this % Xc , Wc = this % Wc ) else error stop 'The NURBS surface is not rational.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_multiplicity ( this , dir ) result ( m ) class ( nurbs_volume ), intent ( in ) :: this integer , intent ( in ) :: dir integer , allocatable :: m (:) if ( dir == 1 ) then ! check if (. not . allocated ( this % knot1 )) then error stop 'Knot vector is not set.' else m = compute_multiplicity ( this % knot1 ) end if elseif ( dir == 2 ) then ! check if (. not . allocated ( this % knot2 )) then error stop 'Knot vector is not set.' else m = compute_multiplicity ( this % knot2 ) end if elseif ( dir == 3 ) then ! check if (. not . allocated ( this % knot3 )) then error stop 'Knot vector is not set.' else m = compute_multiplicity ( this % knot3 ) end if else error stop 'Invalid direction.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_continuity ( this , dir ) result ( c ) class ( nurbs_volume ), intent ( in ) :: this integer , intent ( in ) :: dir integer , allocatable :: c (:) if ( dir == 1 ) then ! check if (. not . allocated ( this % knot1 )) then error stop 'Knot vector is not set.' else c = this % order ( 1 ) - compute_multiplicity ( this % knot1 ) end if elseif ( dir == 2 ) then ! check if (. not . allocated ( this % knot2 )) then error stop 'Knot vector is not set.' else c = this % order ( 2 ) - compute_multiplicity ( this % knot2 ) end if elseif ( dir == 3 ) then ! check if (. not . allocated ( this % knot3 )) then error stop 'Knot vector is not set.' else c = this % order ( 3 ) - compute_multiplicity ( this % knot3 ) end if else error stop 'Invalid direction.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_nc ( this , dir ) result ( nc ) class ( nurbs_volume ), intent ( in ) :: this integer , intent ( in ) :: dir integer :: nc if ( dir == 1 ) then ! check if (. not . allocated ( this % knot1 )) then error stop 'Knot vector is not set.' else nc = sum ( compute_multiplicity ( this % knot1 )) - this % order ( 1 ) - 1 end if elseif ( dir == 2 ) then ! check if (. not . allocated ( this % knot2 )) then error stop 'Knot vector is not set.' else nc = sum ( compute_multiplicity ( this % knot2 )) - this % order ( 2 ) - 1 end if elseif ( dir == 3 ) then ! check if (. not . allocated ( this % knot3 )) then error stop 'Knot vector is not set.' else nc = sum ( compute_multiplicity ( this % knot3 )) - this % order ( 3 ) - 1 end if else error stop 'Invalid direction.' end if end function !=============================================================================== end module forcad_nurbs_volume","tags":"","loc":"sourcefile/forcad_nurbs_volume.f90.html"},{"title":"forcad_bezier_curve.f90 – ForCAD","text":"This file depends on sourcefile~~forcad_bezier_curve.f90~~EfferentGraph sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Files dependent on this one sourcefile~~forcad_bezier_curve.f90~~AfferentGraph sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code module forcad_bezier_curve use forcad_utils , only : rk , basis_bernstein , elemConn_C0 implicit none private public bezier_curve !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause type bezier_curve real ( rk ), allocatable , private :: Xc (:,:) !! Control points real ( rk ), allocatable , private :: Xg (:,:) !! Geometry points real ( rk ), allocatable , private :: Wc (:) !! Weights real ( rk ), allocatable , private :: Xt (:) !! Parameter values integer , private :: nc !! Number of control points integer , private :: ng !! Number of geometry points contains procedure :: set !!> Set control points and weights procedure :: create !!> Generate geometry points procedure :: get_Xc !!> Get control points procedure :: get_Xg !!> Get geometry points procedure :: get_Wc !!> Get weights procedure :: get_Xt !!> Get parameter values procedure :: get_nc !!> Get number of control points procedure :: get_ng !!> Get number of geometry points procedure :: get_order !!> Get order of the Bezier curve procedure :: finalize !!> Finalize the Bezier curve object procedure :: get_elem_Xc !!> Generate connectivity for control points procedure :: get_elem_Xg !!> Generate connectivity for geometry points procedure :: export_Xc !!> Export control points to VTK file procedure :: export_Xg !!> Export geometry points to VTK file procedure :: modify_Xc !!> Modify control points procedure :: modify_Wc !!> Modify weights procedure :: elevate_degree !!> Elevate the degree of the Bezier curve end type !=============================================================================== contains !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the Bezier curve object. pure subroutine set ( this , Xc , Wc ) class ( bezier_curve ), intent ( inout ) :: this real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) this % Xc = Xc this % nc = size ( this % Xc , 1 ) if ( present ( Wc )) then if ( size ( Wc ) /= this % nc ) then error stop 'Number of weights does not match the number of control points.' else this % Wc = Wc end if end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Generate geometry points of the Bezier curve. pure subroutine create ( this , res , Xt ) class ( bezier_curve ), intent ( inout ) :: this integer , intent ( in ), optional :: res real ( rk ), intent ( in ), optional :: Xt (:) real ( rk ), allocatable :: Tgc (:) integer :: i , j ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if ! Set parameter values if ( present ( Xt )) then if ( allocated ( this % Xt )) deallocate ( this % Xt ) this % Xt = Xt elseif ( present ( res )) then if ( allocated ( this % Xt )) deallocate ( this % Xt ) allocate ( this % Xt ( res )) this % Xt = [( real ( i - 1 , rk ) / real ( res - 1 , rk ), i = 1 , res )] ! else ! this%Xt = this%Xt end if ! Set number of geometry points this % ng = size ( this % Xt , 1 ) ! Allocate memory for geometry points if ( allocated ( this % Xg )) deallocate ( this % Xg ) allocate ( this % Xg ( this % ng , size ( this % Xc , 2 ))) ! Compute geometry points if ( allocated ( this % Wc )) then ! Rational Bezier curve do i = 1 , size ( this % Xt , 1 ) Tgc = basis_bernstein ( this % Xt ( i ), this % nc ) Tgc = Tgc * ( this % Wc / ( dot_product ( Tgc , this % Wc ))) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do else ! Non-rational Bezier curve do i = 1 , size ( this % Xt , 1 ) Tgc = basis_bernstein ( this % Xt ( i ), this % nc ) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xc ( this ) result ( Xc ) class ( bezier_curve ), intent ( in ) :: this real ( rk ), allocatable :: Xc (:,:) if ( allocated ( this % Xc )) then Xc = this % Xc else error stop 'Control points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xg ( this ) result ( Xg ) class ( bezier_curve ), intent ( in ) :: this real ( rk ), allocatable :: Xg (:,:) if ( allocated ( this % Xg )) then Xg = this % Xg else error stop 'Geometry points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Wc ( this ) result ( Wc ) class ( bezier_curve ), intent ( in ) :: this real ( rk ), allocatable :: Wc (:) if ( allocated ( this % Wc )) then Wc = this % Wc else error stop 'The Bezier curve is not rational.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xt ( this ) result ( Xt ) class ( bezier_curve ), intent ( in ) :: this real ( rk ), allocatable :: Xt (:) if ( allocated ( this % Xt )) then Xt = this % Xt else error stop 'Parameter values are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_nc ( this ) result ( nc ) class ( bezier_curve ), intent ( in ) :: this integer :: nc nc = this % nc end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_ng ( this ) result ( ng ) class ( bezier_curve ), intent ( in ) :: this integer :: ng ng = this % ng end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_order ( this ) result ( order ) class ( bezier_curve ), intent ( in ) :: this integer :: order order = this % nc - 1 end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Finalize the Bezier curve object by deallocating memory. pure subroutine finalize ( this ) class ( bezier_curve ), intent ( inout ) :: this if ( allocated ( this % Xc )) deallocate ( this % Xc ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) if ( allocated ( this % Wc )) deallocate ( this % Wc ) if ( allocated ( this % Xt )) deallocate ( this % Xt ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Generate connectivity for control points. pure subroutine get_elem_Xc ( this , elemConn , p ) class ( bezier_curve ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p if ( present ( p )) then elemConn = elemConn_C0 ( this % nc , p ) else elemConn = elemConn_C0 ( this % nc , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Generate connectivity for geometry points. pure subroutine get_elem_Xg ( this , elemConn , p ) class ( bezier_curve ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p if ( present ( p )) then elemConn = elemConn_C0 ( this % ng , p ) else elemConn = elemConn_C0 ( this % ng , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Export control points to a VTK file. impure subroutine export_Xc ( this , filename ) class ( bezier_curve ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , nc , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if call this % get_elem_Xc ( elemConn ) nc = size ( this % Xc , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , nc , 'double' if ( size ( this % Xc , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), 0.0_rk , i = 1 , nc ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), this % Xc ( i , 3 ) , i = 1 , nc ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 3 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 2 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 3 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Export geometry points to a VTK file. impure subroutine export_Xg ( this , filename ) class ( bezier_curve ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , ng , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xg )) then error stop 'Geometry points are not set.' end if call this % get_elem_Xg ( elemConn ) ng = size ( this % Xg , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , ng , 'double' if ( size ( this % Xg , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), 0.0_rk , i = 1 , ng ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), this % Xg ( i , 3 ) , i = 1 , ng ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 3 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 2 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 3 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Modify coordinate of a control point given its index and direction. pure subroutine modify_Xc ( this , X , num , dir ) class ( bezier_curve ), intent ( inout ) :: this real ( rk ), intent ( in ) :: X integer , intent ( in ) :: num integer , intent ( in ) :: dir if ( allocated ( this % Xc )) then this % Xc ( num , dir ) = X call this % set ( Xc = this % Xc , Wc = this % Wc ) else error stop 'Control points are not set.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Modify weight of a control point given its index. pure subroutine modify_Wc ( this , W , num ) class ( bezier_curve ), intent ( inout ) :: this real ( rk ), intent ( in ) :: W integer , intent ( in ) :: num if ( allocated ( this % Wc )) then this % Wc ( num ) = W call this % set ( Xc = this % Xc , Wc = this % Wc ) else error stop 'The Bezier curve is not rational.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Elevate the degree of the Bezier curve by one. pure subroutine elevate_degree ( this ) class ( bezier_curve ), intent ( inout ) :: this integer :: nc_new , j , i real ( rk ), allocatable :: Xc_new (:,:) real ( rk ), allocatable :: Wc_new (:) ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if if ( allocated ( this % Wc )) then ! Rational Bezier curve ! Calculate the new number of control points nc_new = this % nc + 1 allocate ( Xc_new ( nc_new , size ( this % Xc , 2 ))) allocate ( Wc_new ( nc_new )) ! Compute new control points Xc_new ( 1 ,:) = this % Xc ( 1 ,:) * this % Wc ( 1 ) Wc_new ( 1 ) = this % Wc ( 1 ) Xc_new ( nc_new ,:) = this % Xc ( this % nc ,:) * this % Wc ( this % nc ) Wc_new ( nc_new ) = this % Wc ( this % nc ) do concurrent ( j = 2 : this % nc ) do i = 1 , size ( this % Xc , 2 ) Xc_new ( j , i ) = ( j - 1 ) / real ( nc_new - 1 , rk ) * this % Xc ( j - 1 , i ) * this % Wc ( j - 1 ) + & ( 1 - ( j - 1 ) / real ( nc_new - 1 , rk )) * this % Xc ( j , i ) * this % Wc ( j ) end do Wc_new ( j ) = ( j - 1 ) / real ( nc_new - 1 , rk ) * this % Wc ( j - 1 ) + & ( 1 - ( j - 1 ) / real ( nc_new - 1 , rk )) * this % Wc ( j ) end do ! Normalize the new control points do concurrent ( i = 1 : size ( this % Xc , 2 )) Xc_new (:, i ) = Xc_new (:, i ) / Wc_new (:) end do ! Update geometry points deallocate ( this % Xc , this % Wc ) call this % set ( Xc = Xc_new , Wc = Wc_new ) call this % create ( Xt = this % Xt ) else ! Non-rational Bezier curve ! Calculate the new number of control points nc_new = this % nc + 1 allocate ( Xc_new ( nc_new , size ( this % Xc , 2 ))) ! Compute new control points Xc_new ( 1 ,:) = this % Xc ( 1 ,:) Xc_new ( nc_new ,:) = this % Xc ( this % nc ,:) do concurrent ( j = 2 : this % nc ) do i = 1 , size ( this % Xc , 2 ) Xc_new ( j , i ) = ( j - 1 ) / real ( nc_new - 1 , rk ) * this % Xc ( j - 1 , i ) + & ( 1 - ( j - 1 ) / real ( nc_new - 1 , rk )) * this % Xc ( j , i ) end do end do ! Update geometry points call this % set ( Xc = Xc_new ) call this % create ( Xt = this % Xt ) end if end subroutine !=============================================================================== end module forcad_bezier_curve","tags":"","loc":"sourcefile/forcad_bezier_curve.f90.html"},{"title":"forcad_bezier_volume.f90 – ForCAD","text":"This file depends on sourcefile~~forcad_bezier_volume.f90~~EfferentGraph sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Files dependent on this one sourcefile~~forcad_bezier_volume.f90~~AfferentGraph sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code module forcad_bezier_volume use forcad_utils , only : rk , basis_bernstein , elemConn_C0 , kron , ndgrid implicit none private public bezier_volume !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause type bezier_volume real ( rk ), allocatable , private :: Xc (:,:) !! control points real ( rk ), allocatable , private :: Xg (:,:) !! geometry points real ( rk ), allocatable , private :: Wc (:) !! weights real ( rk ), allocatable , private :: Xt1 (:) !! parameter values in the first direction real ( rk ), allocatable , private :: Xt2 (:) !! parameter values in the second direction real ( rk ), allocatable , private :: Xt3 (:) !! parameter values in the third direction integer , private :: nc ( 3 ) !! number of control points in each direction integer , private :: ng ( 3 ) !! number of geometry points in each direction contains procedure :: set !!> Set control points and weights procedure :: create !!> Generate geometry points procedure :: get_Xc !!> Get control points procedure :: get_Xg !!> Get geometry points procedure :: get_Wc !!> Get weights procedure :: get_nc !!> Get number of control points procedure :: get_ng !!> Get number of geometry points procedure :: get_order !!> Get order of the Bezier surface procedure :: finalize !!> Finalize the Bezier volume object procedure :: get_elem_Xc !!> Generate connectivity for control points procedure :: get_elem_Xg !!> Generate connectivity for geometry points procedure :: export_Xc !!> Export control points to VTK file procedure :: export_Xg !!> Export geometry points to VTK file procedure :: modify_Xc !!> Modify control points procedure :: modify_Wc !!> Modify weights end type bezier_volume !=============================================================================== contains !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the Bezier curve object. pure subroutine set ( this , nc , Xc , Wc ) class ( bezier_volume ), intent ( inout ) :: this integer , intent ( in ) :: nc (:) real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) this % Xc = Xc this % nc = nc if ( present ( Wc )) this % Wc = Wc end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine create ( this , res1 , res2 , res3 , Xt1 , Xt2 , Xt3 ) class ( bezier_volume ), intent ( inout ) :: this real ( rk ), intent ( in ), optional :: Xt1 (:), Xt2 (:), Xt3 (:) integer :: i , j real ( rk ), dimension (:), allocatable :: Tgc1 , Tgc2 , Tgc3 , Tgc real ( rk ), dimension (:,:), allocatable :: Xt integer , intent ( in ), optional :: res1 , res2 , res3 ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if ! Set parameter values if ( present ( Xt1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) this % Xt1 = Xt1 elseif ( present ( res1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) allocate ( this % Xt1 ( res1 )) this % Xt1 = [( real ( i - 1 , rk ) / real ( res1 - 1 , rk ), i = 1 , res1 )] ! else ! this%Xt1 = this%Xt1 end if ! Set parameter values if ( present ( Xt2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) this % Xt2 = Xt2 elseif ( present ( res2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) allocate ( this % Xt2 ( res2 )) this % Xt2 = [( real ( i - 1 , rk ) / real ( res2 - 1 , rk ), i = 1 , res2 )] ! else ! this%Xt2 = this%Xt2 end if ! Set parameter values if ( present ( Xt3 )) then if ( allocated ( this % Xt3 )) deallocate ( this % Xt3 ) this % Xt3 = Xt3 elseif ( present ( res3 )) then if ( allocated ( this % Xt3 )) deallocate ( this % Xt3 ) allocate ( this % Xt3 ( res3 )) this % Xt3 = [( real ( i - 1 , rk ) / real ( res3 - 1 , rk ), i = 1 , res3 )] ! else ! this%Xt3 = this%Xt3 end if ! Set number of geometry points this % ng ( 1 ) = size ( this % Xt1 , 1 ) this % ng ( 2 ) = size ( this % Xt2 , 1 ) this % ng ( 3 ) = size ( this % Xt3 , 1 ) call ndgrid ( this % Xt1 , this % Xt2 , this % Xt3 , Xt ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) allocate ( this % Xg ( this % ng ( 1 ) * this % ng ( 2 ) * this % ng ( 3 ), size ( this % Xc , 2 ))) if ( allocated ( this % Wc )) then do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bernstein ( Xt ( i , 1 ), this % nc ( 1 )) Tgc2 = basis_bernstein ( Xt ( i , 2 ), this % nc ( 2 )) Tgc3 = basis_bernstein ( Xt ( i , 3 ), this % nc ( 3 )) Tgc = kron ( Tgc3 , kron ( Tgc2 , Tgc1 )) Tgc = Tgc * ( this % Wc / ( dot_product ( Tgc , this % Wc ))) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do else do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bernstein ( Xt ( i , 1 ), this % nc ( 1 )) Tgc2 = basis_bernstein ( Xt ( i , 2 ), this % nc ( 2 )) Tgc3 = basis_bernstein ( Xt ( i , 3 ), this % nc ( 3 )) Tgc = kron ( Tgc3 , kron ( Tgc2 , Tgc1 )) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xc ( this ) result ( Xc ) class ( bezier_volume ), intent ( in ) :: this real ( rk ), allocatable :: Xc (:,:) if ( allocated ( this % Xc )) then Xc = this % Xc else error stop 'Control points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xg ( this ) result ( Xg ) class ( bezier_volume ), intent ( in ) :: this real ( rk ), allocatable :: Xg (:,:) if ( allocated ( this % Xg )) then Xg = this % Xg else error stop 'Geometry points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Wc ( this ) result ( Wc ) class ( bezier_volume ), intent ( in ) :: this real ( rk ), allocatable :: Wc (:) if ( allocated ( this % Wc )) then Wc = this % Wc else error stop 'The Bezier curve is not rational.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xt ( this , dir ) result ( Xt ) class ( bezier_volume ), intent ( in ) :: this integer , intent ( in ) :: dir real ( rk ), allocatable :: Xt (:) if ( dir == 1 ) then if ( allocated ( this % Xt1 )) then Xt = this % Xt1 else error stop 'Parameter values are not set.' end if elseif ( dir == 2 ) then if ( allocated ( this % Xt2 )) then Xt = this % Xt2 else error stop 'Parameter values are not set.' end if elseif ( dir == 3 ) then if ( allocated ( this % Xt3 )) then Xt = this % Xt3 else error stop 'Parameter values are not set.' end if else error stop 'Invalid direction for parameter values.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_nc ( this ) result ( nc ) class ( bezier_volume ), intent ( in ) :: this integer :: nc ( 3 ) nc = this % nc end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_ng ( this ) result ( ng ) class ( bezier_volume ), intent ( in ) :: this integer :: ng ( 3 ) ng = this % ng end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_order ( this ) result ( order ) class ( bezier_volume ), intent ( in ) :: this integer :: order ( 3 ) order = this % nc - 1 end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine finalize ( this ) class ( bezier_volume ), intent ( inout ) :: this if ( allocated ( this % Xc )) deallocate ( this % Xc ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) if ( allocated ( this % Wc )) deallocate ( this % Wc ) if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) if ( allocated ( this % Xt3 )) deallocate ( this % Xt3 ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xc ( this , elemConn , p ) class ( bezier_volume ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p (:) if ( present ( p )) then elemConn = elemConn_C0 ( this % nc ( 1 ), this % nc ( 2 ), this % nc ( 3 ), p ( 1 ), p ( 2 ), p ( 3 )) else elemConn = elemConn_C0 ( this % nc ( 1 ), this % nc ( 2 ), this % nc ( 3 ), 1 , 1 , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xg ( this , elemConn , p ) class ( bezier_volume ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p (:) if ( present ( p )) then elemConn = elemConn_C0 ( this % ng ( 1 ), this % ng ( 2 ), this % ng ( 3 ), p ( 1 ), p ( 2 ), p ( 3 )) else elemConn = elemConn_C0 ( this % ng ( 1 ), this % ng ( 2 ), this % ng ( 3 ), 1 , 1 , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xc ( this , filename ) class ( bezier_volume ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , nc , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if call this % get_elem_Xc ( elemConn ) nc = size ( this % Xc , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , nc , 'double' if ( size ( this % Xc , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), 0.0_rk , i = 1 , nc ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), this % Xc ( i , 3 ) , i = 1 , nc ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 9 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 8 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , elemConn ( i , 4 ) - 1 , elemConn ( i , 3 ) - 1 ,& elemConn ( i , 5 ) - 1 , elemConn ( i , 6 ) - 1 , elemConn ( i , 8 ) - 1 , elemConn ( i , 7 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 12 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xg ( this , filename ) class ( bezier_volume ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , ng , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xg )) then error stop 'Geometry points are not set.' end if call this % get_elem_Xg ( elemConn ) ng = size ( this % Xg , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , ng , 'double' if ( size ( this % Xg , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), 0.0_rk , i = 1 , ng ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), this % Xg ( i , 3 ) , i = 1 , ng ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 9 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 8 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , elemConn ( i , 4 ) - 1 , elemConn ( i , 3 ) - 1 ,& elemConn ( i , 5 ) - 1 , elemConn ( i , 6 ) - 1 , elemConn ( i , 8 ) - 1 , elemConn ( i , 7 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 12 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine modify_Xc ( this , X , num , dir ) class ( bezier_volume ), intent ( inout ) :: this real ( rk ), intent ( in ) :: X integer , intent ( in ) :: num integer , intent ( in ) :: dir if ( allocated ( this % Xc )) then this % Xc ( num , dir ) = X call this % set ( nc = this % nc , Xc = this % Xc , Wc = this % Wc ) else error stop 'Control points are not set.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine modify_Wc ( this , W , num ) class ( bezier_volume ), intent ( inout ) :: this real ( rk ), intent ( in ) :: W integer , intent ( in ) :: num if ( allocated ( this % Wc )) then this % Wc ( num ) = W call this % set ( nc = this % nc , Xc = this % Xc , Wc = this % Wc ) else error stop 'The Bezier curve is not rational.' end if end subroutine !=============================================================================== end module forcad_bezier_volume","tags":"","loc":"sourcefile/forcad_bezier_volume.f90.html"},{"title":"nurbs_curve.f90 – ForCAD","text":"This file depends on sourcefile~~nurbs_curve.f90~~EfferentGraph sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code !> This program demonstrates the usage of a NURBS (Non-Uniform Rational B-Spline) curve object to create and finalize a NURBS curve. !> It sets up control points, weights, and knot vectors for all three dimensions, generates the curve, and exports the control points and the curve to VTK files. program example_nurbs_curve use forcad , only : rk , nurbs_curve implicit none type ( nurbs_curve ) :: nurbs !! Declare a NURBS curve object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights real ( rk ) :: knot ( 6 ) !! Array for knot vector !----------------------------------------------------------------------------- ! Setting up the NURBS curve !----------------------------------------------------------------------------- ! Define control points for the NURBS curve allocate ( Xc ( 3 , 3 )) Xc ( 1 ,:) = [ 0.0_rk , 0.0_rk , 0.0_rk ] Xc ( 2 ,:) = [ 0.0_rk , 5.0_rk , 0.0_rk ] Xc ( 3 ,:) = [ 5.0_rk , 5.0_rk , 0.0_rk ] ! Define weights for the control points allocate ( Wc ( 3 )) Wc = [ 1.0_rk , 2.0_rk , 1.0_rk ] ! Define knot vector knot = [ 0.0_rk , 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk , 1.0_rk ] ! Set knot vector, control points, and weights for the NURBS curve object call nurbs % set ( knot , Xc , Wc ) ! Export control points to a VTK file call nurbs % export_Xc ( 'vtk/nurbs_curve_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the NURBS curve !----------------------------------------------------------------------------- ! Generate the NURBS curve with a resolution of 20 call nurbs % create ( res = 20 ) ! Export the generated curve to a VTK file call nurbs % export_Xg ( 'vtk/nurbs_curve_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- ! Finalize the NURBS curve object call nurbs % finalize () end program example_nurbs_curve","tags":"","loc":"sourcefile/nurbs_curve.f90.html"},{"title":"forcad_nurbs_surface.f90 – ForCAD","text":"This file depends on sourcefile~~forcad_nurbs_surface.f90~~EfferentGraph sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Files dependent on this one sourcefile~~forcad_nurbs_surface.f90~~AfferentGraph sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code module forcad_nurbs_surface use forcad_utils , only : rk , basis_bspline , elemConn_C0 , kron , ndgrid , compute_multiplicity , compute_knot_vector implicit none private public nurbs_surface !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause type nurbs_surface real ( rk ), allocatable , private :: Xc (:,:) !! control points real ( rk ), allocatable , private :: Xg (:,:) !! geometry points real ( rk ), allocatable , private :: Wc (:) !! weights real ( rk ), allocatable , private :: Xt1 (:) !! parameter values in the first direction real ( rk ), allocatable , private :: Xt2 (:) !! parameter values in the second direction real ( rk ), allocatable , private :: knot1 (:) !! knot vector real ( rk ), allocatable , private :: knot2 (:) !! knot vector integer , private :: order ( 2 ) !! degree of each direction integer , private :: nc ( 2 ) !! number of control points in each direction integer , private :: ng ( 2 ) !! number of geometry points in each direction contains procedure :: set1 !!> Set control points and weights procedure :: set2 !!> Set control points and weights generic :: set => set1 , set2 procedure :: create !!> Generate geometry points procedure :: get_Xc !!> Get control points procedure :: get_Xg !!> Get geometry points procedure :: get_Wc !!> Get weights procedure :: get_Xt !!> Get parameter values procedure :: get_knot !!> Get knot vector procedure :: get_ng !!> Get number of geometry points procedure :: get_order !!> Get order of the Bezier curve procedure :: finalize !!> Finalize the NURBS surface object procedure :: get_elem_Xc !!> Generate connectivity for control points procedure :: get_elem_Xg !!> Generate connectivity for geometry points procedure :: export_Xc !!> Export control points to VTK file procedure :: export_Xg !!> Export geometry points to VTK file procedure :: modify_Xc !!> Modify control points procedure :: modify_Wc !!> Modify weights procedure :: get_multiplicity !!> Get multiplicity of the knot vector procedure :: get_continuity !!> Get continuity of the surface procedure :: get_nc !!> Get number of required control points end type !=============================================================================== contains !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the NURBS surface object. pure subroutine set1 ( this , knot1 , knot2 , Xc , Wc ) class ( nurbs_surface ), intent ( inout ) :: this real ( rk ), intent ( in ) :: knot1 (:) real ( rk ), intent ( in ) :: knot2 (:) real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) this % knot1 = knot1 this % knot2 = knot2 this % order = this % get_order () this % nc ( 1 ) = this % get_nc ( 1 ) this % nc ( 2 ) = this % get_nc ( 2 ) this % Xc = Xc if ( present ( Wc )) this % Wc = Wc end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the NURBS surface object. pure subroutine set2 ( this , Xth_dir1 , Xth_dir2 , order , continuity1 , continuity2 , Xc , Wc ) class ( nurbs_surface ), intent ( inout ) :: this real ( rk ), intent ( in ) :: Xth_dir1 (:), Xth_dir2 (:) integer , intent ( in ) :: order (:) integer , intent ( in ) :: continuity1 (:), continuity2 (:) real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) integer :: nc ( 2 ) this % knot1 = compute_knot_vector ( Xth_dir1 , order ( 1 ), continuity1 ) this % knot2 = compute_knot_vector ( Xth_dir2 , order ( 2 ), continuity2 ) this % order ( 1 ) = order ( 1 ) this % order ( 2 ) = order ( 2 ) this % nc ( 1 ) = this % get_nc ( 1 ) this % nc ( 2 ) = this % get_nc ( 2 ) this % Xc = Xc if ( present ( Wc )) this % Wc = Wc end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine create ( this , res1 , res2 , Xt1 , Xt2 ) class ( nurbs_surface ), intent ( inout ) :: this integer , intent ( in ), optional :: res1 , res2 real ( rk ), intent ( in ), optional :: Xt1 (:), Xt2 (:) integer :: i , j real ( rk ), dimension (:), allocatable :: Tgc1 , Tgc2 , Tgc real ( rk ), dimension (:,:), allocatable :: Xt ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if ! Set parameter values if ( present ( Xt1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) this % Xt1 = Xt1 elseif ( present ( res1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) allocate ( this % Xt1 ( res1 )) this % Xt1 = [( real ( i - 1 , rk ) / real ( res1 - 1 , rk ), i = 1 , res1 )] ! else ! this%Xt1 = this%Xt1 end if ! Set parameter values if ( present ( Xt2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) this % Xt2 = Xt2 elseif ( present ( res2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) allocate ( this % Xt2 ( res2 )) this % Xt2 = [( real ( i - 1 , rk ) / real ( res2 - 1 , rk ), i = 1 , res2 )] ! else ! this%Xt2 = this%Xt2 end if ! Set number of geometry points this % ng ( 1 ) = size ( this % Xt1 , 1 ) this % ng ( 2 ) = size ( this % Xt2 , 1 ) call ndgrid ( this % Xt1 , this % Xt2 , Xt ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) allocate ( this % Xg ( this % ng ( 1 ) * this % ng ( 2 ), size ( this % Xc , 2 ))) if ( allocated ( this % Wc )) then ! NURBS surface do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bspline ( Xt ( i , 1 ), this % knot1 , this % nc ( 1 ), this % order ( 1 )) Tgc2 = basis_bspline ( Xt ( i , 2 ), this % knot2 , this % nc ( 2 ), this % order ( 2 )) Tgc = kron ( Tgc2 , Tgc1 ) Tgc = Tgc * ( this % Wc / ( dot_product ( Tgc , this % Wc ))) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do else do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bspline ( Xt ( i , 1 ), this % knot1 , this % nc ( 1 ), this % order ( 1 )) Tgc2 = basis_bspline ( Xt ( i , 2 ), this % knot2 , this % nc ( 2 ), this % order ( 2 )) Tgc = kron ( Tgc2 , Tgc1 ) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xc ( this ) result ( Xc ) class ( nurbs_surface ), intent ( in ) :: this real ( rk ), allocatable :: Xc (:,:) if ( allocated ( this % Xc )) then Xc = this % Xc else error stop 'Control points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xg ( this ) result ( Xg ) class ( nurbs_surface ), intent ( in ) :: this real ( rk ), allocatable :: Xg (:,:) if ( allocated ( this % Xg )) then Xg = this % Xg else error stop 'Geometry points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Wc ( this ) result ( Wc ) class ( nurbs_surface ), intent ( in ) :: this real ( rk ), allocatable :: Wc (:) if ( allocated ( this % Wc )) then Wc = this % Wc else error stop 'The Bezier curve is not rational.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xt ( this , dir ) result ( Xt ) class ( nurbs_surface ), intent ( in ) :: this integer , intent ( in ) :: dir real ( rk ), allocatable :: Xt (:) if ( dir == 1 ) then if ( allocated ( this % Xt1 )) then Xt = this % Xt1 else error stop 'Parameter values are not set.' end if elseif ( dir == 2 ) then if ( allocated ( this % Xt2 )) then Xt = this % Xt2 else error stop 'Parameter values are not set.' end if else error stop 'Invalid direction for parameter values.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_ng ( this ) result ( ng ) class ( nurbs_surface ), intent ( in ) :: this integer :: ng ( 2 ) ng = this % ng end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_order ( this ) result ( order ) class ( nurbs_surface ), intent ( in ) :: this integer :: order ( 2 ) integer , allocatable :: m1 (:), m2 (:) m1 = this % get_multiplicity ( 1 ) m2 = this % get_multiplicity ( 2 ) order ( 1 ) = m1 ( 1 ) - 1 order ( 2 ) = m2 ( 1 ) - 1 end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_knot ( this , dir ) result ( knot ) class ( nurbs_surface ), intent ( in ) :: this integer , intent ( in ) :: dir real ( rk ), allocatable :: knot (:) if ( dir == 1 ) then if ( allocated ( this % knot1 )) then knot = this % knot1 else error stop 'Knot vector is not set.' end if elseif ( dir == 2 ) then if ( allocated ( this % knot2 )) then knot = this % knot2 else error stop 'Knot vector is not set.' end if else error stop 'Invalid direction for knot vector.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine finalize ( this ) class ( nurbs_surface ), intent ( inout ) :: this if ( allocated ( this % Xc )) deallocate ( this % Xc ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) if ( allocated ( this % Wc )) deallocate ( this % Wc ) if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) if ( allocated ( this % knot1 )) deallocate ( this % knot1 ) if ( allocated ( this % knot2 )) deallocate ( this % knot2 ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xc ( this , elemConn , p ) class ( nurbs_surface ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p (:) if ( present ( p )) then elemConn = elemConn_C0 ( this % nc ( 1 ), this % nc ( 2 ), p ( 1 ), p ( 2 )) else elemConn = elemConn_C0 ( this % nc ( 1 ), this % nc ( 2 ), 1 , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xg ( this , elemConn , p ) class ( nurbs_surface ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p (:) if ( present ( p )) then elemConn = elemConn_C0 ( this % ng ( 1 ), this % ng ( 2 ), p ( 1 ), p ( 2 )) else elemConn = elemConn_C0 ( this % ng ( 1 ), this % ng ( 2 ), 1 , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xc ( this , filename ) class ( nurbs_surface ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , nc , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if call this % get_elem_Xc ( elemConn ) nc = size ( this % Xc , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , nc , 'double' if ( size ( this % Xc , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), 0.0_rk , i = 1 , nc ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), this % Xc ( i , 3 ) , i = 1 , nc ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 5 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 4 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , elemConn ( i , 4 ) - 1 , elemConn ( i , 3 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 9 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xg ( this , filename ) class ( nurbs_surface ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , ng , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xg )) then error stop 'Geometry points are not set.' end if call this % get_elem_Xg ( elemConn ) ng = size ( this % Xg , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , ng , 'double' if ( size ( this % Xg , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), 0.0_rk , i = 1 , ng ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), this % Xg ( i , 3 ) , i = 1 , ng ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 5 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 4 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , elemConn ( i , 4 ) - 1 , elemConn ( i , 3 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 9 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine modify_Xc ( this , X , num , dir ) class ( nurbs_surface ), intent ( inout ) :: this real ( rk ), intent ( in ) :: X integer , intent ( in ) :: num integer , intent ( in ) :: dir if ( allocated ( this % Xc )) then this % Xc ( num , dir ) = X call this % set ( knot1 = this % knot1 , knot2 = this % knot2 , Xc = this % Xc , Wc = this % Wc ) else error stop 'Control points are not set.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine modify_Wc ( this , W , num ) class ( nurbs_surface ), intent ( inout ) :: this real ( rk ), intent ( in ) :: W integer , intent ( in ) :: num if ( allocated ( this % Wc )) then this % Wc ( num ) = W call this % set ( knot1 = this % knot1 , knot2 = this % knot2 , Xc = this % Xc , Wc = this % Wc ) else error stop 'The NURBS surface is not rational.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_multiplicity ( this , dir ) result ( m ) class ( nurbs_surface ), intent ( in ) :: this integer , intent ( in ) :: dir integer , allocatable :: m (:) if ( dir == 1 ) then ! check if (. not . allocated ( this % knot1 )) then error stop 'Knot vector is not set.' else m = compute_multiplicity ( this % knot1 ) end if elseif ( dir == 2 ) then ! check if (. not . allocated ( this % knot2 )) then error stop 'Knot vector is not set.' else m = compute_multiplicity ( this % knot2 ) end if else error stop 'Invalid direction.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_continuity ( this , dir ) result ( c ) class ( nurbs_surface ), intent ( in ) :: this integer , intent ( in ) :: dir integer , allocatable :: c (:) if ( dir == 1 ) then ! check if (. not . allocated ( this % knot1 )) then error stop 'Knot vector is not set.' else c = this % order ( 1 ) - compute_multiplicity ( this % knot1 ) end if elseif ( dir == 2 ) then ! check if (. not . allocated ( this % knot2 )) then error stop 'Knot vector is not set.' else c = this % order ( 2 ) - compute_multiplicity ( this % knot2 ) end if else error stop 'Invalid direction.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_nc ( this , dir ) result ( nc ) class ( nurbs_surface ), intent ( in ) :: this integer , intent ( in ) :: dir integer :: nc if ( dir == 1 ) then ! check if (. not . allocated ( this % knot1 )) then error stop 'Knot vector is not set.' else nc = sum ( compute_multiplicity ( this % knot1 )) - this % order ( 1 ) - 1 end if elseif ( dir == 2 ) then ! check if (. not . allocated ( this % knot2 )) then error stop 'Knot vector is not set.' else nc = sum ( compute_multiplicity ( this % knot2 )) - this % order ( 2 ) - 1 end if else error stop 'Invalid direction.' end if end function !=============================================================================== end module forcad_nurbs_surface","tags":"","loc":"sourcefile/forcad_nurbs_surface.f90.html"},{"title":"nurbs_surface.f90 – ForCAD","text":"This file depends on sourcefile~~nurbs_surface.f90~~EfferentGraph sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code !> This program demonstrates the usage of a NURBS (Non-Uniform Rational B-Spline) surface object to create and finalize a NURBS surface. !> It sets up control points, weights, and knot vectors for all three dimensions, generates the surface, and exports the control points and the surface to VTK files. program example_nurbs_surface use forcad implicit none type ( nurbs_surface ) :: nurbs !! Declare a NURBS surface object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights real ( rk ) :: knot1 ( 6 ), knot2 ( 6 ) !! Arrays for knot vectors in both dimensions !----------------------------------------------------------------------------- ! Setting up the NURBS surface !----------------------------------------------------------------------------- !> Define control points for the NURBS surface Xc = generate_Xc ( 3 , 3 , 1.0_rk ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 ))) Wc = 1.0_rk !> Define knot vectors for both dimensions knot1 = [ 0.0_rk , 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk , 1.0_rk ] knot2 = [ 0.0_rk , 0.0_rk , 0.0_rk , 1.0_rk , 1.0_rk , 1.0_rk ] !> Set knot vectors, control points, and weights for the NURBS surface object call nurbs % set ( knot1 , knot2 , Xc , Wc ) !> Export the control points to a VTK file call nurbs % export_Xc ( 'vtk/nurbs_surface_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the NURBS surface !----------------------------------------------------------------------------- !> Generate the NURBS surface with resolutions of 30 in both dimensions call nurbs % create ( 30 , 30 ) !> Export the generated surface to a VTK file call nurbs % export_Xg ( 'vtk/nurbs_surface_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the NURBS surface object call nurbs % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( num_rows , num_cols , peak_height ) result ( control_points ) integer , intent ( in ) :: num_rows , num_cols real ( rk ), intent ( in ) :: peak_height real ( rk ), dimension (:,:), allocatable :: control_points integer :: i , j real ( rk ) :: x_spacing , y_spacing , x_offset , y_offset x_spacing = 1.0_rk / real ( num_cols - 1 ) y_spacing = 1.0_rk / real ( num_rows - 1 ) x_offset = - 0.5_rk y_offset = - 0.5_rk allocate ( control_points ( num_rows * num_cols , 3 )) do i = 1 , num_rows do j = 1 , num_cols control_points (( i - 1 ) * num_cols + j , 1 ) = x_offset + real ( j - 1 ) * x_spacing control_points (( i - 1 ) * num_cols + j , 2 ) = y_offset + real ( i - 1 ) * y_spacing control_points (( i - 1 ) * num_cols + j , 3 ) = & peak_height * exp ( - (( control_points (( i - 1 ) * num_cols + j , 1 ) ** 2 ) & + ( control_points (( i - 1 ) * num_cols + j , 2 ) ** 2 ))) + 0.5_rk * peak_height * 0.2_rk end do end do end function !----------------------------------------------------------------------------- end program example_nurbs_surface","tags":"","loc":"sourcefile/nurbs_surface.f90.html"},{"title":"bezier_volume.f90 – ForCAD","text":"This file depends on sourcefile~~bezier_volume.f90~~EfferentGraph sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code !> This program demonstrates the usage of a Bezier volume object to create, and finalize a Bezier volume. !> It sets up control points and weights, generates the volume, and exports the control points !> and the volume to VTK files at various stages. program example_bezier_volume use forcad , only : rk , bezier_volume implicit none type ( bezier_volume ) :: bezier !! Declare a bezier volume object real ( rk ), allocatable :: Xc (:,:), Wc (:) !! Arrays for control points and weights !----------------------------------------------------------------------------- ! Setting up the bezier volume !----------------------------------------------------------------------------- !> Define control points for the Bezier volume Xc = generate_Xc ( 1.0_rk ) !> Define weights for the control points allocate ( Wc ( size ( Xc , 1 )), source = 1.0_rk ) !> Set control points and weights for the bezier volume object call bezier % set ([ 2 , 2 , 2 ], Xc , Wc ) !> Export initial control points to a VTK file call bezier % export_Xc ( 'vtk/bezier_volume_Xc.vtk' ) !----------------------------------------------------------------------------- ! Creating the bezier volume !----------------------------------------------------------------------------- !> Generate the Bezier volume with a resolution of 10x10x10 call bezier % create ( 15 , 15 , 15 ) !> Export the generated volume to a VTK file call bezier % export_Xg ( 'vtk/bezier_volume_Xg.vtk' ) !----------------------------------------------------------------------------- ! Finalizing !----------------------------------------------------------------------------- !> Finalize the Bezier volume object call bezier % finalize () contains !----------------------------------------------------------------------------- function generate_Xc ( L ) result ( control_points ) implicit none real ( rk ), intent ( in ) :: L real ( rk ), dimension (:,:), allocatable :: control_points real ( rk ) :: L2 L2 = L / 2.0_rk allocate ( control_points ( 8 , 3 )) control_points ( 1 ,:) = [ L2 , - L2 , L2 ] control_points ( 2 ,:) = [ L2 , - L2 , - L2 ] control_points ( 3 ,:) = [ - L2 , - L2 , L2 ] control_points ( 4 ,:) = [ - L2 , - L2 , - L2 ] control_points ( 5 ,:) = [ L2 , L2 , L2 ] control_points ( 6 ,:) = [ L2 , L2 , - L2 ] control_points ( 7 ,:) = [ - L2 , L2 , L2 ] control_points ( 8 ,:) = [ - L2 , L2 , - L2 ] end function !----------------------------------------------------------------------------- end program example_bezier_volume","tags":"","loc":"sourcefile/bezier_volume.f90.html"},{"title":"forcad_nurbs_curve.f90 – ForCAD","text":"This file depends on sourcefile~~forcad_nurbs_curve.f90~~EfferentGraph sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Files dependent on this one sourcefile~~forcad_nurbs_curve.f90~~AfferentGraph sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code module forcad_nurbs_curve use forcad_utils , only : rk , basis_bspline , elemConn_C0 , compute_multiplicity , compute_knot_vector implicit none private public nurbs_curve !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause type nurbs_curve real ( rk ), allocatable , private :: Xc (:,:) !! control points real ( rk ), allocatable , private :: Xg (:,:) !! geometry points real ( rk ), allocatable , private :: Wc (:) !! weights real ( rk ), allocatable , private :: Xt (:) !! evaluation points real ( rk ), allocatable , private :: knot (:) !! knot vector integer , private :: order !! order of the curve integer , private :: nc !! number of control points integer , private :: ng !! number of geometry points contains procedure :: set1 !!> Set control points and weights procedure :: set2 !!> Set control points and weights generic :: set => set1 , set2 procedure :: create !!> Generate geometry points procedure :: get_Xc !!> Get control points procedure :: get_Xg !!> Get geometry points procedure :: get_Wc !!> Get weights procedure :: get_Xt !!> Get parameter values procedure :: get_knot !!> Get knot vector procedure :: get_ng !!> Get number of geometry points procedure :: get_order !!> Get order of the Bezier curve procedure :: finalize !!> Finalize the Bezier curve object procedure :: get_elem_Xc !!> Generate connectivity for control points procedure :: get_elem_Xg !!> Generate connectivity for geometry points procedure :: export_Xc !!> Export control points to VTK file procedure :: export_Xg !!> Export geometry points to VTK file procedure :: modify_Xc !!> Modify control points procedure :: modify_Wc !!> Modify weights procedure :: get_multiplicity !!> Get multiplicity of the knot vector procedure :: get_continuity !!> Get continuity of the curve procedure :: get_nc !!> Get number of required control points end type !=============================================================================== contains !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the Bezier curve object. pure subroutine set1 ( this , knot , Xc , Wc ) class ( nurbs_curve ), intent ( inout ) :: this real ( rk ), intent ( in ) :: knot (:) real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) this % knot = knot this % order = this % get_order () this % Xc = Xc this % nc = size ( this % Xc , 1 ) if ( present ( Wc )) then if ( size ( Wc ) /= this % nc ) then error stop 'Number of weights does not match the number of control points.' else this % Wc = Wc end if end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the Bezier curve object. pure subroutine set2 ( this , Xth_dir , order , continuity , Xc , Wc ) class ( nurbs_curve ), intent ( inout ) :: this real ( rk ), intent ( in ) :: Xth_dir (:) integer , intent ( in ) :: order integer , intent ( in ) :: continuity (:) real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) this % knot = compute_knot_vector ( Xth_dir , order , continuity ) this % order = order this % Xc = Xc this % nc = size ( this % Xc , 1 ) if ( present ( Wc )) then if ( size ( Wc ) /= this % nc ) then error stop 'Number of weights does not match the number of control points.' else this % Wc = Wc end if end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine create ( this , res , Xt ) class ( nurbs_curve ), intent ( inout ) :: this integer , intent ( in ), optional :: res real ( rk ), intent ( in ), optional :: Xt (:) real ( rk ), allocatable :: Tgc (:) integer :: i , j ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if ! Set parameter values if ( present ( Xt )) then if ( allocated ( this % Xt )) deallocate ( this % Xt ) this % Xt = Xt elseif ( present ( res )) then if ( allocated ( this % Xt )) deallocate ( this % Xt ) allocate ( this % Xt ( res )) this % Xt = [( real ( i - 1 , rk ) / real ( res - 1 , rk ), i = 1 , res )] ! else ! this%Xt = this%Xt end if ! Set number of geometry points this % ng = size ( this % Xt ) ! Allocate memory for geometry points if ( allocated ( this % Xg )) deallocate ( this % Xg ) allocate ( this % Xg ( this % ng , size ( this % Xc , 2 ))) if ( allocated ( this % Wc )) then do i = 1 , size ( this % Xt , 1 ) Tgc = basis_bspline ( this % Xt ( i ), this % knot , this % nc , this % order ) Tgc = Tgc * ( this % Wc / ( dot_product ( Tgc , this % Wc ))) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do else do i = 1 , size ( this % Xt , 1 ) Tgc = basis_bspline ( this % Xt ( i ), this % knot , this % nc , this % order ) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xc ( this ) result ( Xc ) class ( nurbs_curve ), intent ( in ) :: this real ( rk ), allocatable :: Xc (:,:) if ( allocated ( this % Xc )) then Xc = this % Xc else error stop 'Control points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xg ( this ) result ( Xg ) class ( nurbs_curve ), intent ( in ) :: this real ( rk ), allocatable :: Xg (:,:) if ( allocated ( this % Xg )) then Xg = this % Xg else error stop 'Geometry points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Wc ( this ) result ( Wc ) class ( nurbs_curve ), intent ( in ) :: this real ( rk ), allocatable :: Wc (:) if ( allocated ( this % Wc )) then Wc = this % Wc else error stop 'The Bezier curve is not rational.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xt ( this ) result ( Xt ) class ( nurbs_curve ), intent ( in ) :: this real ( rk ), allocatable :: Xt (:) if ( allocated ( this % Xt )) then Xt = this % Xt else error stop 'Parameter values are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_ng ( this ) result ( ng ) class ( nurbs_curve ), intent ( in ) :: this integer :: ng ng = this % ng end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_order ( this ) result ( order ) class ( nurbs_curve ), intent ( in ) :: this integer :: order integer , allocatable :: m (:) m = this % get_multiplicity () order = m ( 1 ) - 1 end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_knot ( this ) result ( knot ) class ( nurbs_curve ), intent ( in ) :: this real ( rk ), allocatable :: knot (:) if ( allocated ( this % knot )) then knot = this % knot else error stop 'Knot vector is not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine finalize ( this ) class ( nurbs_curve ), intent ( inout ) :: this if ( allocated ( this % Xc )) deallocate ( this % Xc ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) if ( allocated ( this % Wc )) deallocate ( this % Wc ) if ( allocated ( this % Xt )) deallocate ( this % Xt ) if ( allocated ( this % knot )) deallocate ( this % knot ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xc ( this , elemConn , p ) class ( nurbs_curve ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p if ( present ( p )) then elemConn = elemConn_C0 ( this % nc , p ) else elemConn = elemConn_C0 ( this % nc , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xg ( this , elemConn , p ) class ( nurbs_curve ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p if ( present ( p )) then elemConn = elemConn_C0 ( this % ng , p ) else elemConn = elemConn_C0 ( this % ng , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xc ( this , filename ) class ( nurbs_curve ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , nc , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if call this % get_elem_Xc ( elemConn ) nc = size ( this % Xc , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , nc , 'double' if ( size ( this % Xc , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), 0.0_rk , i = 1 , nc ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), this % Xc ( i , 3 ) , i = 1 , nc ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 3 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 2 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 3 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xg ( this , filename ) class ( nurbs_curve ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , ng , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xg )) then error stop 'Geometry points are not set.' end if call this % get_elem_Xg ( elemConn ) ng = size ( this % Xg , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , ng , 'double' if ( size ( this % Xg , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), 0.0_rk , i = 1 , ng ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), this % Xg ( i , 3 ) , i = 1 , ng ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 3 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 2 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 3 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine modify_Xc ( this , X , num , dir ) class ( nurbs_curve ), intent ( inout ) :: this real ( rk ), intent ( in ) :: X integer , intent ( in ) :: num integer , intent ( in ) :: dir if ( allocated ( this % Xc )) then this % Xc ( num , dir ) = X call this % set ( knot = this % knot , Xc = this % Xc , Wc = this % Wc ) else error stop 'Control points are not set.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine modify_Wc ( this , W , num ) class ( nurbs_curve ), intent ( inout ) :: this real ( rk ), intent ( in ) :: W integer , intent ( in ) :: num if ( allocated ( this % Wc )) then this % Wc ( num ) = W call this % set ( knot = this % knot , Xc = this % Xc , Wc = this % Wc ) else error stop 'The Bezier curve is not rational.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_multiplicity ( this ) result ( m ) class ( nurbs_curve ), intent ( in ) :: this integer , allocatable :: m (:) ! check if (. not . allocated ( this % knot )) then error stop 'Knot vector is not set.' else m = compute_multiplicity ( this % knot ) end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_continuity ( this ) result ( c ) class ( nurbs_curve ), intent ( in ) :: this integer , allocatable :: c (:) ! check if (. not . allocated ( this % knot )) then error stop 'Knot vector is not set.' else c = this % order - compute_multiplicity ( this % knot ) end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_nc ( this ) result ( nc ) class ( nurbs_curve ), intent ( in ) :: this integer :: nc nc = sum ( compute_multiplicity ( this % knot )) - this % order - 1 end function !=============================================================================== end module forcad_nurbs_curve","tags":"","loc":"sourcefile/forcad_nurbs_curve.f90.html"},{"title":"forcad.f90 – ForCAD","text":"This file depends on sourcefile~~forcad.f90~~EfferentGraph sourcefile~forcad.f90 forcad.f90 sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Files dependent on this one sourcefile~~forcad.f90~~AfferentGraph sourcefile~forcad.f90 forcad.f90 sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code module forcad use forcad_utils use forcad_bezier_curve use forcad_bezier_surface use forcad_bezier_volume use forcad_nurbs_curve use forcad_nurbs_surface use forcad_nurbs_volume private public rk ,& bezier_curve , bezier_surface , bezier_volume ,& nurbs_curve , nurbs_surface , nurbs_volume end module forcad","tags":"","loc":"sourcefile/forcad.f90.html"},{"title":"forcad_bezier_surface.f90 – ForCAD","text":"This file depends on sourcefile~~forcad_bezier_surface.f90~~EfferentGraph sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Files dependent on this one sourcefile~~forcad_bezier_surface.f90~~AfferentGraph sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code module forcad_bezier_surface use forcad_utils , only : rk , basis_bernstein , elemConn_C0 , kron , ndgrid implicit none private public bezier_surface !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause type bezier_surface real ( rk ), allocatable , private :: Xc (:,:) !! control points real ( rk ), allocatable , private :: Xg (:,:) !! geometry points real ( rk ), allocatable , private :: Wc (:) !! weights real ( rk ), allocatable , private :: Xt1 (:) !! parameter values in the first direction real ( rk ), allocatable , private :: Xt2 (:) !! parameter values in the second direction integer , private :: nc ( 2 ) !! number of control points in each direction integer , private :: ng ( 2 ) !! number of geometry points in each direction contains procedure :: set !!> Set control points and weights procedure :: create !!> Generate geometry points procedure :: get_Xc !!> Get control points procedure :: get_Xg !!> Get geometry points procedure :: get_Wc !!> Get weights procedure :: get_Xt !!> Get parameter values procedure :: get_nc !!> Get number of control points procedure :: get_ng !!> Get number of geometry points procedure :: get_order !!> Get order of the Bezier surface procedure :: finalize !!> Finalize the Bezier surface object procedure :: get_elem_Xc !!> Generate connectivity for control points procedure :: get_elem_Xg !!> Generate connectivity for geometry points procedure :: export_Xc !!> Export control points to VTK file procedure :: export_Xg !!> Export geometry points to VTK file procedure :: modify_Xc !!> Modify control points procedure :: modify_Wc !!> Modify weights end type !=============================================================================== contains !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Set control points and weights for the Bezier curve object. pure subroutine set ( this , nc , Xc , Wc ) class ( bezier_surface ), intent ( inout ) :: this integer , intent ( in ) :: nc (:) real ( rk ), intent ( in ) :: Xc (:,:) real ( rk ), intent ( in ), optional :: Wc (:) this % Xc = Xc this % nc = nc if ( present ( Wc )) this % Wc = Wc end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine create ( this , res1 , res2 , Xt1 , Xt2 ) class ( bezier_surface ), intent ( inout ) :: this integer , intent ( in ), optional :: res1 , res2 real ( rk ), intent ( in ), optional :: Xt1 (:), Xt2 (:) integer :: i , j real ( rk ), dimension (:), allocatable :: Tgc1 , Tgc2 , Tgc real ( rk ), dimension (:,:), allocatable :: Xt ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if ! Set parameter values if ( present ( Xt1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) this % Xt1 = Xt1 elseif ( present ( res1 )) then if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) allocate ( this % Xt1 ( res1 )) this % Xt1 = [( real ( i - 1 , rk ) / real ( res1 - 1 , rk ), i = 1 , res1 )] ! else ! this%Xt1 = this%Xt1 end if ! Set parameter values if ( present ( Xt2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) this % Xt2 = Xt2 elseif ( present ( res2 )) then if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) allocate ( this % Xt2 ( res2 )) this % Xt2 = [( real ( i - 1 , rk ) / real ( res2 - 1 , rk ), i = 1 , res2 )] ! else ! this%Xt2 = this%Xt2 end if ! Set number of geometry points this % ng ( 1 ) = size ( this % Xt1 , 1 ) this % ng ( 2 ) = size ( this % Xt2 , 1 ) call ndgrid ( this % Xt1 , this % Xt2 , Xt ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) allocate ( this % Xg ( this % ng ( 1 ) * this % ng ( 2 ), size ( this % Xc , 2 ))) if ( allocated ( this % Wc )) then ! Rational Bezier surface do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bernstein ( Xt ( i , 1 ), this % nc ( 1 )) Tgc2 = basis_bernstein ( Xt ( i , 2 ), this % nc ( 2 )) Tgc = kron ( Tgc2 , Tgc1 ) Tgc = Tgc * ( this % Wc / ( dot_product ( Tgc , this % Wc ))) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do else ! Non-rational Bezier surface do i = 1 , size ( Xt , 1 ) Tgc1 = basis_bernstein ( Xt ( i , 1 ), this % nc ( 1 )) Tgc2 = basis_bernstein ( Xt ( i , 2 ), this % nc ( 2 )) Tgc = kron ( Tgc2 , Tgc1 ) do j = 1 , size ( this % Xc , 2 ) this % Xg ( i , j ) = dot_product ( Tgc , this % Xc (:, j )) end do end do end if end subroutine create !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xc ( this ) result ( Xc ) class ( bezier_surface ), intent ( in ) :: this real ( rk ), allocatable :: Xc (:,:) if ( allocated ( this % Xc )) then Xc = this % Xc else error stop 'Control points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xg ( this ) result ( Xg ) class ( bezier_surface ), intent ( in ) :: this real ( rk ), allocatable :: Xg (:,:) if ( allocated ( this % Xg )) then Xg = this % Xg else error stop 'Geometry points are not set.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Wc ( this ) result ( Wc ) class ( bezier_surface ), intent ( in ) :: this real ( rk ), allocatable :: Wc (:) if ( allocated ( this % Wc )) then Wc = this % Wc else error stop 'The Bezier curve is not rational.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_Xt ( this , dir ) result ( Xt ) class ( bezier_surface ), intent ( in ) :: this integer , intent ( in ) :: dir real ( rk ), allocatable :: Xt (:) if ( dir == 1 ) then if ( allocated ( this % Xt1 )) then Xt = this % Xt1 else error stop 'Parameter values are not set.' end if elseif ( dir == 2 ) then if ( allocated ( this % Xt2 )) then Xt = this % Xt2 else error stop 'Parameter values are not set.' end if else error stop 'Invalid direction for parameter values.' end if end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_nc ( this ) result ( nc ) class ( bezier_surface ), intent ( in ) :: this integer :: nc ( 2 ) nc = this % nc end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_ng ( this ) result ( ng ) class ( bezier_surface ), intent ( in ) :: this integer :: ng ( 2 ) ng = this % ng end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function get_order ( this ) result ( order ) class ( bezier_surface ), intent ( in ) :: this integer :: order ( 2 ) order = this % nc - 1 end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine finalize ( this ) class ( bezier_surface ), intent ( inout ) :: this if ( allocated ( this % Xc )) deallocate ( this % Xc ) if ( allocated ( this % Xg )) deallocate ( this % Xg ) if ( allocated ( this % Wc )) deallocate ( this % Wc ) if ( allocated ( this % Xt1 )) deallocate ( this % Xt1 ) if ( allocated ( this % Xt2 )) deallocate ( this % Xt2 ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xc ( this , elemConn , p ) class ( bezier_surface ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p (:) if ( present ( p )) then elemConn = elemConn_C0 ( this % nc ( 1 ), this % nc ( 2 ), p ( 1 ), p ( 2 )) else elemConn = elemConn_C0 ( this % nc ( 1 ), this % nc ( 2 ), 1 , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine get_elem_Xg ( this , elemConn , p ) class ( bezier_surface ), intent ( in ) :: this integer , dimension (:,:), allocatable , intent ( out ) :: elemConn integer , intent ( in ), optional :: p (:) if ( present ( p )) then elemConn = elemConn_C0 ( this % ng ( 1 ), this % ng ( 2 ), p ( 1 ), p ( 2 )) else elemConn = elemConn_C0 ( this % ng ( 1 ), this % ng ( 2 ), 1 , 1 ) end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xc ( this , filename ) class ( bezier_surface ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , nc , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xc )) then error stop 'Control points are not set.' end if call this % get_elem_Xc ( elemConn ) nc = size ( this % Xc , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , nc , 'double' if ( size ( this % Xc , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), 0.0_rk , i = 1 , nc ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xc ( i , 1 ), this % Xc ( i , 2 ), this % Xc ( i , 3 ) , i = 1 , nc ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 5 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 4 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , elemConn ( i , 4 ) - 1 , elemConn ( i , 3 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 9 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause impure subroutine export_Xg ( this , filename ) class ( bezier_surface ), intent ( in ) :: this character ( len =* ), intent ( in ) :: filename integer :: i , j , ng , nunit integer , dimension (:,:), allocatable :: elemConn ! check if (. not . allocated ( this % Xg )) then error stop 'Geometry points are not set.' end if call this % get_elem_Xg ( elemConn ) ng = size ( this % Xg , 1 ) open ( newunit = nunit , file = filename , action = 'write' ) write ( nunit , '(a)' ) '# vtk DataFile Version 2.0' write ( nunit , '(a)' ) 'Generated by ForCAD' write ( nunit , '(a)' ) 'ASCII' write ( nunit , '(a)' ) 'DATASET UNSTRUCTURED_GRID' write ( nunit , '(a,\" \",g0,\" \",a)' ) 'POINTS' , ng , 'double' if ( size ( this % Xg , 2 ) == 2 ) then write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), 0.0_rk , i = 1 , ng ) else write ( nunit , '(g0,\" \",g0,\" \",g0)' ) ( this % Xg ( i , 1 ), this % Xg ( i , 2 ), this % Xg ( i , 3 ) , i = 1 , ng ) end if write ( nunit , '(a,\" \",g0,\" \",g0)' ) 'CELLS' , size ( elemConn , 1 ), size ( elemConn , 1 ) * 5 write ( nunit , '(g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0,\" \",g0)' )& ( 4 , elemConn ( i , 1 ) - 1 , elemConn ( i , 2 ) - 1 , elemConn ( i , 4 ) - 1 , elemConn ( i , 3 ) - 1 , i = 1 , size ( elemConn , 1 )) write ( nunit , '(a,\" \",g0)' ) 'CELL_TYPES' , size ( elemConn , 1 ) write ( nunit , '(g0)' ) ( 9 , i = 1 , size ( elemConn , 1 )) close ( nunit ) end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Modify coordinate of a control point given its index and direction. pure subroutine modify_Xc ( this , X , num , dir ) class ( bezier_surface ), intent ( inout ) :: this real ( rk ), intent ( in ) :: X integer , intent ( in ) :: num integer , intent ( in ) :: dir if ( allocated ( this % Xc )) then this % Xc ( num , dir ) = X call this % set ( nc = this % nc , Xc = this % Xc , Wc = this % Wc ) else error stop 'Control points are not set.' end if end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause !> Modify weight of a control point given its index. pure subroutine modify_Wc ( this , W , num ) class ( bezier_surface ), intent ( inout ) :: this real ( rk ), intent ( in ) :: W integer , intent ( in ) :: num if ( allocated ( this % Wc )) then this % Wc ( num ) = W call this % set ( nc = this % nc , Xc = this % Xc , Wc = this % Wc ) else error stop 'The Bezier curve is not rational.' end if end subroutine !=============================================================================== end module forcad_bezier_surface","tags":"","loc":"sourcefile/forcad_bezier_surface.f90.html"},{"title":"forcad_utils.f90 – ForCAD","text":"Files dependent on this one sourcefile~~forcad_utils.f90~~AfferentGraph sourcefile~forcad_utils.f90 forcad_utils.f90 sourcefile~forcad.f90 forcad.f90 sourcefile~forcad.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_curve.f90 forcad_bezier_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_curve.f90 sourcefile~forcad_bezier_surface.f90 forcad_bezier_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_surface.f90 sourcefile~forcad_bezier_volume.f90 forcad_bezier_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_bezier_volume.f90 sourcefile~forcad_nurbs_curve.f90 forcad_nurbs_curve.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_curve.f90 sourcefile~forcad_nurbs_surface.f90 forcad_nurbs_surface.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_surface.f90 sourcefile~forcad_nurbs_volume.f90 forcad_nurbs_volume.f90 sourcefile~forcad.f90->sourcefile~forcad_nurbs_volume.f90 sourcefile~forcad_bezier_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_bezier_volume.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_curve.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_surface.f90->sourcefile~forcad_utils.f90 sourcefile~forcad_nurbs_volume.f90->sourcefile~forcad_utils.f90 sourcefile~bezier_curve.f90 bezier_curve.f90 sourcefile~bezier_curve.f90->sourcefile~forcad.f90 sourcefile~bezier_surface.f90 bezier_surface.f90 sourcefile~bezier_surface.f90->sourcefile~forcad.f90 sourcefile~bezier_volume.f90 bezier_volume.f90 sourcefile~bezier_volume.f90->sourcefile~forcad.f90 sourcefile~nurbs_curve.f90 nurbs_curve.f90 sourcefile~nurbs_curve.f90->sourcefile~forcad.f90 sourcefile~nurbs_surface.f90 nurbs_surface.f90 sourcefile~nurbs_surface.f90->sourcefile~forcad.f90 sourcefile~nurbs_volume.f90 nurbs_volume.f90 sourcefile~nurbs_volume.f90->sourcefile~forcad.f90 Help Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\nis dependent upon another if the latter must be compiled before the former\ncan be. Where possible, edges connecting nodes are\ngiven different colours to make them easier to distinguish in\nlarge graphs. Source Code module forcad_utils implicit none private public :: rk , basis_bernstein , basis_bspline , elemConn_C0 , kron , ndgrid , compute_multiplicity , compute_knot_vector integer , parameter :: rk = kind ( 1.0d0 ) !=============================================================================== interface elemConn_C0 module procedure cmp_elemConn_C0_L module procedure cmp_elemConn_C0_S module procedure cmp_elemConn_C0_V end interface !=============================================================================== !=============================================================================== interface ndgrid module procedure ndgrid2 module procedure ndgrid3 end interface !=============================================================================== contains !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function basis_bspline ( Xt , knot , nc , order ) result ( B ) integer , intent ( in ) :: order real ( rk ), intent ( in ) :: knot (:) integer , intent ( in ) :: nc real ( rk ), intent ( in ) :: Xt real ( rk ) :: temp , Xth_i , Xth_i1 , Xth_ip , Xth_ip1 real ( rk ), allocatable :: Nt (:,:) integer :: i , p real ( rk ), allocatable :: B (:) temp = abs ( Xt - knot ( size ( knot ))) allocate ( Nt ( nc , 0 : order ), source = 0.0_rk ) do p = 0 , order do i = 1 , nc Xth_i = knot ( i ) Xth_i1 = knot ( i + 1 ) Xth_ip = knot ( i + p ) Xth_ip1 = knot ( i + p + 1 ) if ( temp /= tiny ( 0.0_rk ) . and . Xt >= Xth_i . and . Xt <= Xth_i1 ) Nt ( i , 0 ) = 1.0_rk if ( Xth_ip /= Xth_i ) Nt ( i , p ) = ( Xt - Xth_i ) / ( Xth_ip - Xth_i ) * Nt ( i , p - 1 ) if ( Xth_ip1 /= Xth_i1 ) Nt ( i , p ) = Nt ( i , p ) + ( Xth_ip1 - Xt ) / ( Xth_ip1 - Xth_i1 ) * Nt ( i + 1 , p - 1 ) end do end do B = Nt (:, order ) end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function basis_bernstein ( Xt , nc ) result ( B ) real ( rk ), intent ( in ) :: Xt integer , intent ( in ) :: nc real ( rk ), allocatable :: B (:) integer :: p , order order = nc - 1 allocate ( B ( nc ), source = 0.0_rk ) do concurrent ( p = 0 : order ) B ( p + 1 ) = gamma ( real ( nc , kind = rk )) / ( gamma ( real ( p + 1 , kind = rk )) * gamma ( real ( nc - p , kind = rk ))) if ( Xt == 0.0_rk . and . p == 0 ) then B ( p + 1 ) = B ( p + 1 ) * ( 1.0_rk - Xt ) ** ( order - p ) else if ( Xt == 0.0_rk . and . order - p == 0 ) then B ( p + 1 ) = B ( p + 1 ) * ( Xt ** p ) else B ( p + 1 ) = B ( p + 1 ) * ( Xt ** p ) * ( 1.0_rk - Xt ) ** ( order - p ) end if end do end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function kron ( u , v ) result ( w ) real ( rk ), dimension (:), intent ( in ), contiguous :: u , v real ( rk ), dimension ( size ( u ) * size ( v )) :: w integer :: i , j , m , n m = size ( u ) n = size ( v ) do i = 1 , m do j = 1 , n w (( i - 1 ) * n + j ) = u ( i ) * v ( j ) end do end do end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine ndgrid2 ( X_dir1 , X_dir2 , Xt ) real ( rk ), dimension (:), intent ( in ), contiguous :: X_dir1 , X_dir2 real ( rk ), dimension (:,:), allocatable , intent ( out ) :: Xt integer :: s1 , s2 , i , j , n s1 = size ( X_dir1 ) s2 = size ( X_dir2 ) allocate ( Xt ( s1 * s2 , 2 )) n = 0 do j = 1 , s2 do i = 1 , s1 n = n + 1 Xt ( n , 1 ) = X_dir1 ( i ) Xt ( n , 2 ) = X_dir2 ( j ) end do end do end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure subroutine ndgrid3 ( X_dir1 , X_dir2 , X_dir3 , Xt ) real ( rk ), dimension (:), intent ( in ), contiguous :: X_dir1 , X_dir2 , X_dir3 real ( rk ), dimension (:,:), allocatable , intent ( out ) :: Xt integer :: s1 , s2 , s3 , i , j , k , n s1 = size ( X_dir1 ) s2 = size ( X_dir2 ) s3 = size ( X_dir3 ) allocate ( Xt ( s1 * s2 * s3 , 3 )) n = 0 do k = 1 , s3 do j = 1 , s2 do i = 1 , s1 n = n + 1 Xt ( n , 1 ) = X_dir1 ( i ) Xt ( n , 2 ) = X_dir2 ( j ) Xt ( n , 3 ) = X_dir3 ( k ) end do end do end do end subroutine !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function repelem ( a , b ) result ( c ) real ( rk ), dimension (:), intent ( in ), contiguous :: a integer , dimension (:), intent ( in ), contiguous :: b real ( rk ), dimension ( sum ( b )) :: c integer :: i , l , n l = 0 do i = 1 , size ( a ) n = b ( i ) c ( l + 1 : l + n ) = a ( i ) l = l + n end do end function repelem !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function cmp_elemConn_C0_L ( nnode , p ) result ( elemConn ) integer , intent ( in ) :: nnode integer , intent ( in ) :: p integer , dimension (:,:), allocatable :: elemConn integer :: i , j , l integer , dimension (:), allocatable :: nodes allocate ( elemConn ( (( nnode - p ) / p ) , 2 )) nodes = [( i , i = 1 , nnode )] l = 0 do i = 1 , nnode - p , p l = l + 1 elemConn ( l ,:) = reshape ( nodes ( i : i + p ),[( p + 1 )]) end do end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function cmp_elemConn_C0_S ( nnode1 , nnode2 , p1 , p2 ) result ( elemConn ) integer , intent ( in ) :: nnode1 , nnode2 integer , intent ( in ) :: p1 , p2 integer , dimension (:,:), allocatable :: elemConn integer :: i , j , l integer , dimension (:,:), allocatable :: nodes allocate ( elemConn ( (( nnode1 - p1 ) / p1 ) * (( nnode2 - p2 ) / p2 ) , 4 )) nodes = reshape ([( i , i = 1 , nnode1 * nnode2 )], [ nnode1 , nnode2 ]) l = 0 do j = 1 , nnode2 - p2 , p2 do i = 1 , nnode1 - p1 , p1 l = l + 1 elemConn ( l ,:) = reshape ( nodes ( i : i + p1 , j : j + p2 ),[( p1 + 1 ) * ( p2 + 1 )]) end do end do end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function cmp_elemConn_C0_V ( nnode1 , nnode2 , nnode3 , p1 , p2 , p3 ) result ( elemConn ) integer , intent ( in ) :: nnode1 , nnode2 , nnode3 integer , intent ( in ) :: p1 , p2 , p3 integer , dimension (:,:), allocatable :: elemConn integer :: i , j , k , l integer , dimension (:,:,:), allocatable :: nodes allocate ( elemConn ( (( nnode1 - p1 ) / p1 ) * (( nnode2 - p2 ) / p2 ) * (( nnode3 - p3 ) / p3 ) , 8 )) nodes = reshape ([( i , i = 1 , nnode1 * nnode2 * nnode3 )], [ nnode1 , nnode2 , nnode3 ]) l = 0 do k = 1 , nnode3 - p3 , p3 do j = 1 , nnode2 - p2 , p2 do i = 1 , nnode1 - p1 , p1 l = l + 1 elemConn ( l ,:) = reshape ( nodes ( i : i + p1 , j : j + p2 , k : k + p3 ),[( p1 + 1 ) * ( p2 + 1 ) * ( p3 + 1 )]) end do end do end do end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function compute_multiplicity ( knot ) result ( multiplicity ) real ( rk ), intent ( in ) :: knot (:) integer , dimension (:), allocatable :: multiplicity integer :: i , count count = 1 do i = 2 , size ( knot ) if ( knot ( i ) /= knot ( i - 1 )) count = count + 1 end do allocate ( multiplicity ( count )) multiplicity ( 1 ) = 1 count = 1 do i = 2 , size ( knot ) if ( knot ( i ) /= knot ( i - 1 )) then count = count + 1 multiplicity ( count ) = 1 else multiplicity ( count ) = multiplicity ( count ) + 1 end if end do end function !=============================================================================== !=============================================================================== !> author: Seyed Ali Ghasemi !> license: BSD 3-Clause pure function compute_knot_vector ( Xth_dir , order , continuity ) result ( knot ) real ( rk ), intent ( in ) :: Xth_dir (:) integer , intent ( in ) :: order integer , intent ( in ) :: continuity (:) real ( rk ), allocatable :: knot (:) knot = repelem ( Xth_dir , ( order - continuity )) end function !=============================================================================== end module forcad_utils","tags":"","loc":"sourcefile/forcad_utils.f90.html"}]} \ No newline at end of file diff --git a/type/bezier_curve.html b/type/bezier_curve.html index ecdbe2b54..c3b9c22e1 100644 --- a/type/bezier_curve.html +++ b/type/bezier_curve.html @@ -119,12 +119,12 @@

    Variables

    - Wc - Xc - Xg - Xt - nc - ng + Wc + Xc + Xg + Xt + nc + ng
    @@ -151,23 +151,23 @@

    Type-Bound Procedures

    @@ -200,7 +200,7 @@

    Components

    @@ -217,7 +217,7 @@

    Components

    @@ -234,7 +234,7 @@

    Components

    @@ -251,7 +251,7 @@

    Components

    @@ -268,7 +268,7 @@

    Components

    @@ -285,7 +285,7 @@

    Components

    @@ -313,7 +313,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: create @@ -329,7 +329,7 @@

    • - private pure subroutine create(this, res, Xt) + private pure subroutine create(this, res, Xt)

      Author
      Seyed Ali Ghasemi
      @@ -471,7 +471,7 @@

      Arguments

      - +

      procedure, public :: export_Xc @@ -487,7 +487,7 @@

      • - private impure subroutine export_Xc(this, filename) + private impure subroutine export_Xc(this, filename)

        Author
        Seyed Ali Ghasemi
        @@ -550,7 +550,7 @@

        Arguments

        - +

        procedure, public :: export_Xg @@ -566,7 +566,7 @@

        • - private impure subroutine export_Xg(this, filename) + private impure subroutine export_Xg(this, filename)

          Author
          Seyed Ali Ghasemi
          @@ -629,7 +629,7 @@

          Arguments

          - +

          procedure, public :: finalize @@ -645,7 +645,7 @@

          • - private pure subroutine finalize(this) + private pure subroutine finalize(this)

            Author
            Seyed Ali Ghasemi
            @@ -693,7 +693,7 @@

            Arguments

            - +

            procedure, public :: get_Wc @@ -709,7 +709,7 @@

            • - private pure function get_Wc(this) result(Wc) + private pure function get_Wc(this) result(Wc)

              Author
              Seyed Ali Ghasemi
              @@ -762,7 +762,7 @@

              - +

              procedure, public :: get_Xc @@ -778,7 +778,7 @@

              • - private pure function get_Xc(this) result(Xc) + private pure function get_Xc(this) result(Xc)

                Author
                Seyed Ali Ghasemi
                @@ -831,7 +831,7 @@

                - +

                procedure, public :: get_Xg @@ -847,7 +847,7 @@

                • - private pure function get_Xg(this) result(Xg) + private pure function get_Xg(this) result(Xg)

                  Author
                  Seyed Ali Ghasemi
                  @@ -900,7 +900,7 @@

                  - +

                  procedure, public :: get_Xt @@ -916,7 +916,7 @@

                  • - private pure function get_Xt(this) result(Xt) + private pure function get_Xt(this) result(Xt)

                    Author
                    Seyed Ali Ghasemi
                    @@ -969,7 +969,7 @@

                    - +

                    procedure, public :: get_elem_Xc @@ -985,7 +985,7 @@

                    • - private pure subroutine get_elem_Xc(this, elemConn, p) + private pure subroutine get_elem_Xc(this, elemConn, p)

                      Author
                      Seyed Ali Ghasemi
                      @@ -1063,7 +1063,7 @@

                      Arguments

                      - +

                      procedure, public :: get_elem_Xg @@ -1079,7 +1079,7 @@

                      • - private pure subroutine get_elem_Xg(this, elemConn, p) + private pure subroutine get_elem_Xg(this, elemConn, p)

                        Author
                        Seyed Ali Ghasemi
                        @@ -1157,7 +1157,7 @@

                        Arguments

                        - +

                        procedure, public :: get_nc @@ -1173,7 +1173,7 @@

                        • - private pure function get_nc(this) result(nc) + private pure function get_nc(this) result(nc)

                          Author
                          Seyed Ali Ghasemi
                          @@ -1226,7 +1226,7 @@

                          - +

                          procedure, public :: get_ng @@ -1242,7 +1242,7 @@

                          • - private pure function get_ng(this) result(ng) + private pure function get_ng(this) result(ng)

                            Author
                            Seyed Ali Ghasemi
                            @@ -1295,7 +1295,7 @@

                            - +

                            procedure, public :: get_order @@ -1311,7 +1311,7 @@

    @@ -217,7 +217,7 @@

    Components

    @@ -234,7 +234,7 @@

    Components

    @@ -251,7 +251,7 @@

    Components

    @@ -268,7 +268,7 @@

    Components

    @@ -285,7 +285,7 @@

    Components

    @@ -302,7 +302,7 @@

    Components

    @@ -330,7 +330,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: create @@ -346,7 +346,7 @@

    • - private pure subroutine create(this, res1, res2, Xt1, Xt2) + private pure subroutine create(this, res1, res2, Xt1, Xt2)

      Author
      Seyed Ali Ghasemi
      @@ -454,7 +454,7 @@

      Arguments

      - +

      procedure, public :: export_Xc @@ -470,7 +470,7 @@

      • - private impure subroutine export_Xc(this, filename) + private impure subroutine export_Xc(this, filename)

        Author
        Seyed Ali Ghasemi
        @@ -533,7 +533,7 @@

        Arguments

        - +

        procedure, public :: export_Xg @@ -549,7 +549,7 @@

        • - private impure subroutine export_Xg(this, filename) + private impure subroutine export_Xg(this, filename)

          Author
          Seyed Ali Ghasemi
          @@ -612,7 +612,7 @@

          Arguments

          - +

          procedure, public :: finalize @@ -628,7 +628,7 @@

          • - private pure subroutine finalize(this) + private pure subroutine finalize(this)

            Author
            Seyed Ali Ghasemi
            @@ -676,7 +676,7 @@

            Arguments

            - +

            procedure, public :: get_Wc @@ -692,7 +692,7 @@

            • - private pure function get_Wc(this) result(Wc) + private pure function get_Wc(this) result(Wc)

              Author
              Seyed Ali Ghasemi
              @@ -745,7 +745,7 @@

              - +

              procedure, public :: get_Xc @@ -761,7 +761,7 @@

              • - private pure function get_Xc(this) result(Xc) + private pure function get_Xc(this) result(Xc)

                Author
                Seyed Ali Ghasemi
                @@ -814,7 +814,7 @@

                - +

                procedure, public :: get_Xg @@ -830,7 +830,7 @@

                • - private pure function get_Xg(this) result(Xg) + private pure function get_Xg(this) result(Xg)

                  Author
                  Seyed Ali Ghasemi
                  @@ -883,7 +883,7 @@

                  - +

                  procedure, public :: get_Xt @@ -899,7 +899,7 @@

                  • - private pure function get_Xt(this, dir) result(Xt) + private pure function get_Xt(this, dir) result(Xt)

                    Author
                    Seyed Ali Ghasemi
                    @@ -967,7 +967,7 @@

                    - +

                    procedure, public :: get_elem_Xc @@ -983,7 +983,7 @@

                    • - private pure subroutine get_elem_Xc(this, elemConn, p) + private pure subroutine get_elem_Xc(this, elemConn, p)

                      Author
                      Seyed Ali Ghasemi
                      @@ -1061,7 +1061,7 @@

                      Arguments

                      - +

                      procedure, public :: get_elem_Xg @@ -1077,7 +1077,7 @@

                      • - private pure subroutine get_elem_Xg(this, elemConn, p) + private pure subroutine get_elem_Xg(this, elemConn, p)

                        Author
                        Seyed Ali Ghasemi
                        @@ -1155,7 +1155,7 @@

                        Arguments

                        - +

                        procedure, public :: get_nc @@ -1171,7 +1171,7 @@

                        • - private pure function get_nc(this) result(nc) + private pure function get_nc(this) result(nc)

                          Author
                          Seyed Ali Ghasemi
                          @@ -1224,7 +1224,7 @@

                          - +

                          procedure, public :: get_ng @@ -1240,7 +1240,7 @@

                          • - private pure function get_ng(this) result(ng) + private pure function get_ng(this) result(ng)

                            Author
                            Seyed Ali Ghasemi
                            @@ -1293,7 +1293,7 @@

                            - +

                            procedure, public :: get_order @@ -1309,7 +1309,7 @@

    @@ -223,7 +223,7 @@

    Components

    @@ -240,7 +240,7 @@

    Components

    @@ -257,7 +257,7 @@

    Components

    @@ -274,7 +274,7 @@

    Components

    @@ -308,7 +308,7 @@

    Components

    @@ -325,7 +325,7 @@

    Components

    @@ -353,7 +353,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: create @@ -369,7 +369,7 @@

    • - private pure subroutine create(this, res1, res2, res3, Xt1, Xt2, Xt3) + private pure subroutine create(this, res1, res2, res3, Xt1, Xt2, Xt3)

      Author
      Seyed Ali Ghasemi
      @@ -507,7 +507,7 @@

      Arguments

      - +

      procedure, public :: export_Xc @@ -523,7 +523,7 @@

      • - private impure subroutine export_Xc(this, filename) + private impure subroutine export_Xc(this, filename)

        Author
        Seyed Ali Ghasemi
        @@ -586,7 +586,7 @@

        Arguments

        - +

        procedure, public :: export_Xg @@ -602,7 +602,7 @@

        • - private impure subroutine export_Xg(this, filename) + private impure subroutine export_Xg(this, filename)

          Author
          Seyed Ali Ghasemi
          @@ -665,7 +665,7 @@

          Arguments

          - +

          procedure, public :: finalize @@ -681,7 +681,7 @@

          • - private pure subroutine finalize(this) + private pure subroutine finalize(this)

            Author
            Seyed Ali Ghasemi
            @@ -729,7 +729,7 @@

            Arguments

            - +

            procedure, public :: get_Wc @@ -745,7 +745,7 @@

            • - private pure function get_Wc(this) result(Wc) + private pure function get_Wc(this) result(Wc)

              Author
              Seyed Ali Ghasemi
              @@ -798,7 +798,7 @@

              - +

              procedure, public :: get_Xc @@ -814,7 +814,7 @@

              • - private pure function get_Xc(this) result(Xc) + private pure function get_Xc(this) result(Xc)

                Author
                Seyed Ali Ghasemi
                @@ -867,7 +867,7 @@

                - +

                procedure, public :: get_Xg @@ -883,7 +883,7 @@

                • - private pure function get_Xg(this) result(Xg) + private pure function get_Xg(this) result(Xg)

                  Author
                  Seyed Ali Ghasemi
                  @@ -936,7 +936,7 @@

                  - +

                  procedure, public :: get_elem_Xc @@ -952,7 +952,7 @@

    @@ -223,7 +223,7 @@

    Components

    @@ -240,7 +240,7 @@

    Components

    @@ -257,7 +257,7 @@

    Components

    @@ -274,7 +274,7 @@

    Components

    @@ -291,7 +291,7 @@

    Components

    @@ -308,7 +308,7 @@

    Components

    @@ -325,7 +325,7 @@

    Components

    @@ -353,7 +353,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: create @@ -369,7 +369,7 @@

    • - private pure subroutine create(this, res, Xt) + private pure subroutine create(this, res, Xt)

      Author
      Seyed Ali Ghasemi
      @@ -447,7 +447,7 @@

      Arguments

      - +

      procedure, public :: export_Xc @@ -463,7 +463,7 @@

      • - private impure subroutine export_Xc(this, filename) + private impure subroutine export_Xc(this, filename)

        Author
        Seyed Ali Ghasemi
        @@ -526,7 +526,7 @@

        Arguments

        - +

        procedure, public :: export_Xg @@ -542,7 +542,7 @@

        • - private impure subroutine export_Xg(this, filename) + private impure subroutine export_Xg(this, filename)

          Author
          Seyed Ali Ghasemi
          @@ -605,7 +605,7 @@

          Arguments

          - +

          procedure, public :: finalize @@ -621,7 +621,7 @@

          • - private pure subroutine finalize(this) + private pure subroutine finalize(this)

            Author
            Seyed Ali Ghasemi
            @@ -669,7 +669,7 @@

            Arguments

            - +

            procedure, public :: get_Wc @@ -685,7 +685,7 @@

            • - private pure function get_Wc(this) result(Wc) + private pure function get_Wc(this) result(Wc)

              Author
              Seyed Ali Ghasemi
              @@ -738,7 +738,7 @@

              - +

              procedure, public :: get_Xc @@ -754,7 +754,7 @@

              • - private pure function get_Xc(this) result(Xc) + private pure function get_Xc(this) result(Xc)

                Author
                Seyed Ali Ghasemi
                @@ -807,7 +807,7 @@

                - +

                procedure, public :: get_Xg @@ -823,7 +823,7 @@

                • - private pure function get_Xg(this) result(Xg) + private pure function get_Xg(this) result(Xg)

                  Author
                  Seyed Ali Ghasemi
                  @@ -876,7 +876,7 @@

                  - +

                  procedure, public :: get_Xt @@ -892,7 +892,7 @@

                  • - private pure function get_Xt(this) result(Xt) + private pure function get_Xt(this) result(Xt)

                    Author
                    Seyed Ali Ghasemi
                    @@ -945,7 +945,7 @@

                    - +

                    procedure, public :: get_continuity @@ -961,7 +961,7 @@

                    • - private pure function get_continuity(this) result(c) + private pure function get_continuity(this) result(c)

                      Author
                      Seyed Ali Ghasemi
                      @@ -1014,7 +1014,7 @@

                      - +

                      procedure, public :: get_elem_Xc @@ -1030,7 +1030,7 @@

                      • - private pure subroutine get_elem_Xc(this, elemConn, p) + private pure subroutine get_elem_Xc(this, elemConn, p)

                        Author
                        Seyed Ali Ghasemi
                        @@ -1108,7 +1108,7 @@

                        Arguments

                        - +

                        procedure, public :: get_elem_Xg @@ -1124,7 +1124,7 @@

                        • - private pure subroutine get_elem_Xg(this, elemConn, p) + private pure subroutine get_elem_Xg(this, elemConn, p)

                          Author
                          Seyed Ali Ghasemi
                          @@ -1202,7 +1202,7 @@

                          Arguments

                          - +

                          procedure, public :: get_knot @@ -1218,7 +1218,7 @@

                          • - private pure function get_knot(this) result(knot) + private pure function get_knot(this) result(knot)

                            Author
                            Seyed Ali Ghasemi
                            @@ -1271,7 +1271,7 @@

                            - +

                            procedure, public :: get_multiplicity @@ -1287,7 +1287,7 @@

                            • - private pure function get_multiplicity(this) result(m) + private pure function get_multiplicity(this) result(m)

                              Author
                              Seyed Ali Ghasemi
                              @@ -1340,7 +1340,7 @@

                              - +

                              procedure, public :: get_nc @@ -1356,7 +1356,7 @@

                              • - private pure function get_nc(this) result(nc) + private pure function get_nc(this) result(nc)

                                Author
                                Seyed Ali Ghasemi
                                @@ -1409,7 +1409,7 @@

                                - +

                                procedure, public :: get_ng @@ -1425,7 +1425,7 @@

                                • - private pure function get_ng(this) result(ng) + private pure function get_ng(this) result(ng)

                                  Author
                                  Seyed Ali Ghasemi
                                  @@ -1478,7 +1478,7 @@

                                  - +

                                  procedure, public :: get_order @@ -1494,7 +1494,7 @@

    @@ -225,7 +225,7 @@

    Components

    @@ -242,7 +242,7 @@

    Components

    @@ -259,7 +259,7 @@

    Components

    @@ -276,7 +276,7 @@

    Components

    @@ -293,7 +293,7 @@

    Components

    @@ -310,7 +310,7 @@

    Components

    @@ -327,7 +327,7 @@

    Components

    @@ -344,7 +344,7 @@

    Components

    @@ -361,7 +361,7 @@

    Components

    @@ -389,7 +389,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: create @@ -405,7 +405,7 @@

    • - private pure subroutine create(this, res1, res2, Xt1, Xt2) + private pure subroutine create(this, res1, res2, Xt1, Xt2)

      Author
      Seyed Ali Ghasemi
      @@ -513,7 +513,7 @@

      Arguments

      - +

      procedure, public :: export_Xc @@ -529,7 +529,7 @@

      • - private impure subroutine export_Xc(this, filename) + private impure subroutine export_Xc(this, filename)

        Author
        Seyed Ali Ghasemi
        @@ -592,7 +592,7 @@

        Arguments

        - +

        procedure, public :: export_Xg @@ -608,7 +608,7 @@

        • - private impure subroutine export_Xg(this, filename) + private impure subroutine export_Xg(this, filename)

          Author
          Seyed Ali Ghasemi
          @@ -671,7 +671,7 @@

          Arguments

          - +

          procedure, public :: finalize @@ -687,7 +687,7 @@

          • - private pure subroutine finalize(this) + private pure subroutine finalize(this)

            Author
            Seyed Ali Ghasemi
            @@ -735,7 +735,7 @@

            Arguments

            - +

            procedure, public :: get_Wc @@ -751,7 +751,7 @@

            • - private pure function get_Wc(this) result(Wc) + private pure function get_Wc(this) result(Wc)

              Author
              Seyed Ali Ghasemi
              @@ -804,7 +804,7 @@

              - +

              procedure, public :: get_Xc @@ -820,7 +820,7 @@

              • - private pure function get_Xc(this) result(Xc) + private pure function get_Xc(this) result(Xc)

                Author
                Seyed Ali Ghasemi
                @@ -873,7 +873,7 @@

                - +

                procedure, public :: get_Xg @@ -889,7 +889,7 @@

                • - private pure function get_Xg(this) result(Xg) + private pure function get_Xg(this) result(Xg)

                  Author
                  Seyed Ali Ghasemi
                  @@ -942,7 +942,7 @@

                  - +

                  procedure, public :: get_Xt @@ -958,7 +958,7 @@

                  • - private pure function get_Xt(this, dir) result(Xt) + private pure function get_Xt(this, dir) result(Xt)

                    Author
                    Seyed Ali Ghasemi
                    @@ -1026,7 +1026,7 @@

                    - +

                    procedure, public :: get_continuity @@ -1042,7 +1042,7 @@

                    • - private pure function get_continuity(this, dir) result(c) + private pure function get_continuity(this, dir) result(c)

                      Author
                      Seyed Ali Ghasemi
                      @@ -1110,7 +1110,7 @@

                      - +

                      procedure, public :: get_elem_Xc @@ -1126,7 +1126,7 @@

                      • - private pure subroutine get_elem_Xc(this, elemConn, p) + private pure subroutine get_elem_Xc(this, elemConn, p)

                        Author
                        Seyed Ali Ghasemi
                        @@ -1204,7 +1204,7 @@

                        Arguments

                        - +

                        procedure, public :: get_elem_Xg @@ -1220,7 +1220,7 @@

                        • - private pure subroutine get_elem_Xg(this, elemConn, p) + private pure subroutine get_elem_Xg(this, elemConn, p)

                          Author
                          Seyed Ali Ghasemi
                          @@ -1298,7 +1298,7 @@

                          Arguments

                          - +

                          procedure, public :: get_knot @@ -1314,7 +1314,7 @@

                          • - private pure function get_knot(this, dir) result(knot) + private pure function get_knot(this, dir) result(knot)

                            Author
                            Seyed Ali Ghasemi
                            @@ -1382,7 +1382,7 @@

                            - +

                            procedure, public :: get_multiplicity @@ -1398,7 +1398,7 @@

                            • - private pure function get_multiplicity(this, dir) result(m) + private pure function get_multiplicity(this, dir) result(m)

                              Author
                              Seyed Ali Ghasemi
                              @@ -1466,7 +1466,7 @@

                              - +

                              procedure, public :: get_nc @@ -1482,7 +1482,7 @@

                              • - private pure function get_nc(this, dir) result(nc) + private pure function get_nc(this, dir) result(nc)

                                Author
                                Seyed Ali Ghasemi
                                @@ -1550,7 +1550,7 @@

                                - +

                                procedure, public :: get_ng @@ -1566,7 +1566,7 @@

                                • - private pure function get_ng(this) result(ng) + private pure function get_ng(this) result(ng)

                                  Author
                                  Seyed Ali Ghasemi
                                  @@ -1619,7 +1619,7 @@

                                  - +

                                  procedure, public :: get_order @@ -1635,7 +1635,7 @@

                                  • - private pure function get_order(this) result(order) + private pure function get_order(this) result(order)

                                    Author
                                    Seyed Ali Ghasemi
                                    @@ -1688,7 +1688,7 @@

                                    - +

                                    procedure, public :: modify_Wc @@ -1704,7 +1704,7 @@

    @@ -227,7 +227,7 @@

    Components

    @@ -244,7 +244,7 @@

    Components

    @@ -261,7 +261,7 @@

    Components

    @@ -278,7 +278,7 @@

    Components

    @@ -312,7 +312,7 @@

    Components

    @@ -329,7 +329,7 @@

    Components

    @@ -346,7 +346,7 @@

    Components

    @@ -363,7 +363,7 @@

    Components

    @@ -380,7 +380,7 @@

    Components

    @@ -397,7 +397,7 @@

    Components

    @@ -425,7 +425,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: create @@ -441,7 +441,7 @@

    • - private pure subroutine create(this, res1, res2, res3, Xt1, Xt2, Xt3) + private pure subroutine create(this, res1, res2, res3, Xt1, Xt2, Xt3)

      Author
      Seyed Ali Ghasemi
      @@ -579,7 +579,7 @@

      Arguments

      - +

      procedure, public :: export_Xc @@ -595,7 +595,7 @@

      • - private impure subroutine export_Xc(this, filename) + private impure subroutine export_Xc(this, filename)

        Author
        Seyed Ali Ghasemi
        @@ -658,7 +658,7 @@

        Arguments

        - +

        procedure, public :: export_Xg @@ -674,7 +674,7 @@

        • - private impure subroutine export_Xg(this, filename) + private impure subroutine export_Xg(this, filename)

          Author
          Seyed Ali Ghasemi
          @@ -737,7 +737,7 @@

          Arguments

          - +

          procedure, public :: finalize @@ -753,7 +753,7 @@

          • - private pure subroutine finalize(this) + private pure subroutine finalize(this)

            Author
            Seyed Ali Ghasemi
            @@ -801,7 +801,7 @@

            Arguments

            - +

            procedure, public :: get_Wc @@ -817,7 +817,7 @@

            • - private pure function get_Wc(this) result(Wc) + private pure function get_Wc(this) result(Wc)

              Author
              Seyed Ali Ghasemi
              @@ -870,7 +870,7 @@

              - +

              procedure, public :: get_Xc @@ -886,7 +886,7 @@

              • - private pure function get_Xc(this) result(Xc) + private pure function get_Xc(this) result(Xc)

                Author
                Seyed Ali Ghasemi
                @@ -939,7 +939,7 @@

                - +

                procedure, public :: get_Xg @@ -955,7 +955,7 @@

                • - private pure function get_Xg(this) result(Xg) + private pure function get_Xg(this) result(Xg)

                  Author
                  Seyed Ali Ghasemi
                  @@ -1008,7 +1008,7 @@

                  - +

                  procedure, public :: get_Xt @@ -1024,7 +1024,7 @@

                  • - private pure function get_Xt(this, dir) result(Xt) + private pure function get_Xt(this, dir) result(Xt)

                    Author
                    Seyed Ali Ghasemi
                    @@ -1092,7 +1092,7 @@

                    - +

                    procedure, public :: get_continuity @@ -1108,7 +1108,7 @@

                    • - private pure function get_continuity(this, dir) result(c) + private pure function get_continuity(this, dir) result(c)

                      Author
                      Seyed Ali Ghasemi
                      @@ -1176,7 +1176,7 @@

                      - +

                      procedure, public :: get_elem_Xc @@ -1192,7 +1192,7 @@

                      • - private pure subroutine get_elem_Xc(this, elemConn, p) + private pure subroutine get_elem_Xc(this, elemConn, p)

                        Author
                        Seyed Ali Ghasemi
                        @@ -1270,7 +1270,7 @@

                        Arguments

                        - +

                        procedure, public :: get_elem_Xg @@ -1286,7 +1286,7 @@

                        • - private pure subroutine get_elem_Xg(this, elemConn, p) + private pure subroutine get_elem_Xg(this, elemConn, p)

                          Author
                          Seyed Ali Ghasemi
                          @@ -1364,7 +1364,7 @@

                          Arguments

                          - +

                          procedure, public :: get_knot @@ -1380,7 +1380,7 @@

                          • - private pure function get_knot(this, dir) result(knot) + private pure function get_knot(this, dir) result(knot)

                            Author
                            Seyed Ali Ghasemi
                            @@ -1448,7 +1448,7 @@

                            - +

                            procedure, public :: get_multiplicity @@ -1464,7 +1464,7 @@

                            • - private pure function get_multiplicity(this, dir) result(m) + private pure function get_multiplicity(this, dir) result(m)

                              Author
                              Seyed Ali Ghasemi
                              @@ -1532,7 +1532,7 @@

                              - +

                              procedure, public :: get_nc @@ -1548,7 +1548,7 @@

                              • - private pure function get_nc(this, dir) result(nc) + private pure function get_nc(this, dir) result(nc)

                                Author
                                Seyed Ali Ghasemi
                                @@ -1616,7 +1616,7 @@

                                - +

                                procedure, public :: get_ng @@ -1632,7 +1632,7 @@

                                • - private pure function get_ng(this) result(ng) + private pure function get_ng(this) result(ng)

                                  Author
                                  Seyed Ali Ghasemi
                                  @@ -1685,7 +1685,7 @@

                                  - +

                                  procedure, public :: get_order @@ -1701,7 +1701,7 @@

                                  • - private pure function get_order(this) result(order) + private pure function get_order(this) result(order)

                                    Author
                                    Seyed Ali Ghasemi
                                    @@ -1754,7 +1754,7 @@

                                    - +

                                    procedure, public :: modify_Wc @@ -1770,7 +1770,7 @@

                                    • - private pure subroutine modify_Wc(this, W, num) + private pure subroutine modify_Wc(this, W, num)

                                      Author
                                      Seyed Ali Ghasemi
                                      @@ -1848,7 +1848,7 @@

                                      Arguments

                                      - +

                                      procedure, public :: modify_Xc @@ -1864,7 +1864,7 @@

                                      • - private pure subroutine modify_Xc(this, X, num, dir) + private pure subroutine modify_Xc(this, X, num, dir)

                                        Author
                                        Seyed Ali Ghasemi
                                        @@ -1957,17 +1957,17 @@

                                        Arguments

                                        - +

                                        generic, public :: - set => set1, set2 + set => set1, set2

                                        • - private pure subroutine set1(this, knot1, knot2, knot3, Xc, Wc) + private pure subroutine set1(this, knot1, knot2, knot3, Xc, Wc)

                                          Author
                                          Seyed Ali Ghasemi
                                          @@ -2085,7 +2085,7 @@

                                          Arguments

                                        • - private pure subroutine set2(this, Xth_dir1, Xth_dir2, Xth_dir3, order, continuity1, continuity2, continuity3, Xc, Wc) + private pure subroutine set2(this, Xth_dir1, Xth_dir2, Xth_dir3, order, continuity1, continuity2, continuity3, Xc, Wc)

                                          Author
                                          Seyed Ali Ghasemi
                                          @@ -2268,7 +2268,7 @@

                                          Arguments

                                          - +

                                          procedure, public :: set1 @@ -2284,7 +2284,7 @@

                                          • - private pure subroutine set1(this, knot1, knot2, knot3, Xc, Wc) + private pure subroutine set1(this, knot1, knot2, knot3, Xc, Wc)

                                            Author
                                            Seyed Ali Ghasemi
                                            @@ -2407,7 +2407,7 @@

                                            Arguments

                                            - +

                                            procedure, public :: set2 @@ -2423,7 +2423,7 @@

                                            • - private pure subroutine set2(this, Xth_dir1, Xth_dir2, Xth_dir3, order, continuity1, continuity2, continuity3, Xc, Wc) + private pure subroutine set2(this, Xth_dir1, Xth_dir2, Xth_dir3, order, continuity1, continuity2, continuity3, Xc, Wc)

                                              Author
                                              Seyed Ali Ghasemi
                                              @@ -2621,7 +2621,7 @@

                                              Arguments

                                              Documentation generated by FORD - on 2024-04-01T17:32:09.529675

                                              + on 2024-04-01T18:34:28.480052


    - - class(bezier_curve), + + class(bezier_surface), intent(inout) @@ -175,7 +175,22 @@

    Arguments

    - + + integer, + intent(in) + + ::nc(:) + +
    + real(kind=rk), intent(in)
    - + real(kind=rk), intent(in),
    - + real(kind=rk), @@ -780,7 +780,7 @@

    Variables

    - + real(kind=rk), @@ -796,7 +796,7 @@

    Variables

    - + type(bezier_curve) @@ -824,7 +824,7 @@

    Variables

    Functions

    -

    function generate_Xc(num_coils, radius, height, num_points_per_coil) result(control_points) +

    function generate_Xc(num_coils, radius, height, num_points_per_coil) result(control_points)

    @@ -1005,7 +1005,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/program/example_bezier_surface.html b/program/example_bezier_surface.html index 484dbf788..94680f066 100644 --- a/program/example_bezier_surface.html +++ b/program/example_bezier_surface.html @@ -116,9 +116,9 @@

    Variables

    - Wc - Xc - bezier + Wc + Xc + bezier
    @@ -139,7 +139,7 @@

    Functions

    @@ -460,93 +460,93 @@

    Calls

    example_bezier_surface - + -proc~create - +proc~create~6 + forcad_bezier_surface::bezier_surface%create - + -program~example_bezier_surface->proc~create +program~example_bezier_surface->proc~create~6 - + -proc~export_xc - +proc~export_xc~6 + forcad_bezier_surface::bezier_surface%export_Xc - + -program~example_bezier_surface->proc~export_xc +program~example_bezier_surface->proc~export_xc~6 - + -proc~export_xg - +proc~export_xg~6 + forcad_bezier_surface::bezier_surface%export_Xg - + -program~example_bezier_surface->proc~export_xg +program~example_bezier_surface->proc~export_xg~6 - + -proc~finalize - +proc~finalize~6 + forcad_bezier_surface::bezier_surface%finalize - + -program~example_bezier_surface->proc~finalize +program~example_bezier_surface->proc~finalize~6 - + -proc~generate_xc~3 - +proc~generate_xc + example_bezier_surface::generate_Xc - + -program~example_bezier_surface->proc~generate_xc~3 +program~example_bezier_surface->proc~generate_xc - + -proc~set - +proc~set~3 + forcad_bezier_surface::bezier_surface%set - + -program~example_bezier_surface->proc~set +program~example_bezier_surface->proc~set~3 @@ -559,9 +559,9 @@

    Calls

    - + -proc~create->interface~ndgrid +proc~create~6->interface~ndgrid @@ -574,9 +574,9 @@

    Calls

    - + -proc~create->proc~basis_bernstein +proc~create~6->proc~basis_bernstein @@ -589,39 +589,39 @@

    Calls

    - + -proc~create->proc~kron +proc~create~6->proc~kron - + -proc~get_elem_xc - +proc~get_elem_xc~6 + forcad_bezier_surface::bezier_surface%get_elem_Xc - + -proc~export_xc->proc~get_elem_xc +proc~export_xc~6->proc~get_elem_xc~6 - + -proc~get_elem_xg - +proc~get_elem_xg~6 + forcad_bezier_surface::bezier_surface%get_elem_Xg - + -proc~export_xg->proc~get_elem_xg +proc~export_xg~6->proc~get_elem_xg~6 @@ -664,15 +664,15 @@

    Calls

    - + -proc~get_elem_xc->interface~elemconn_c0 +proc~get_elem_xc~6->interface~elemconn_c0 - + -proc~get_elem_xg->interface~elemconn_c0 +proc~get_elem_xg~6->interface~elemconn_c0 @@ -824,7 +824,7 @@

    Variables

    - + real(kind=rk), @@ -840,7 +840,7 @@

    Variables

    - + real(kind=rk), @@ -856,7 +856,7 @@

    Variables

    - + type(bezier_surface) @@ -884,7 +884,7 @@

    Variables

    Functions

    -

    function generate_Xc(num_rows, num_cols, peak_height) result(control_points) +

    function generate_Xc(num_rows, num_cols, peak_height) result(control_points)

    @@ -903,7 +903,7 @@

    Arguments

    - + integer, intent(in)
    - + integer, intent(in)
    - + real(kind=rk), intent(in)
    - + real(kind=rk), @@ -840,7 +840,7 @@

    Variables

    - + real(kind=rk), @@ -856,7 +856,7 @@

    Variables

    - + type(bezier_volume) @@ -884,7 +884,7 @@

    Variables

    Functions

    -

    function generate_Xc(L) result(control_points) +

    function generate_Xc(L) result(control_points)

    @@ -903,7 +903,7 @@

    Arguments

    - + real(kind=rk), intent(in)
    - + real(kind=rk), @@ -852,7 +852,7 @@

    Variables

    - + real(kind=rk), @@ -868,7 +868,7 @@

    Variables

    - + real(kind=rk) @@ -884,7 +884,7 @@

    Variables

    - + type(nurbs_curve) @@ -983,7 +983,7 @@

    Source Code

    Documentation generated by FORD - on 2024-04-01T17:32:09.529675

    + on 2024-04-01T18:34:28.480052


    diff --git a/program/example_nurbs_surface.html b/program/example_nurbs_surface.html index 39fe4d691..0f1cd3036 100644 --- a/program/example_nurbs_surface.html +++ b/program/example_nurbs_surface.html @@ -116,11 +116,11 @@

    Variables

    - Wc - Xc - knot1 - knot2 - nurbs + Wc + Xc + knot1 + knot2 + nurbs
    @@ -141,7 +141,7 @@

    Functions

    @@ -462,123 +462,123 @@

    Calls

    example_nurbs_surface - + -none~set~2 - +none~set~4 + forcad_nurbs_surface::nurbs_surface%set - + -program~example_nurbs_surface->none~set~2 +program~example_nurbs_surface->none~set~4 - + -proc~create~2 - +proc~create~4 + forcad_nurbs_surface::nurbs_surface%create - + -program~example_nurbs_surface->proc~create~2 +program~example_nurbs_surface->proc~create~4 - + -proc~export_xc~2 - +proc~export_xc~4 + forcad_nurbs_surface::nurbs_surface%export_Xc - + -program~example_nurbs_surface->proc~export_xc~2 +program~example_nurbs_surface->proc~export_xc~4 - + -proc~export_xg~2 - +proc~export_xg~4 + forcad_nurbs_surface::nurbs_surface%export_Xg - + -program~example_nurbs_surface->proc~export_xg~2 +program~example_nurbs_surface->proc~export_xg~4 - + -proc~finalize~2 - +proc~finalize~4 + forcad_nurbs_surface::nurbs_surface%finalize - + -program~example_nurbs_surface->proc~finalize~2 +program~example_nurbs_surface->proc~finalize~4 - + -proc~generate_xc - +proc~generate_xc~4 + example_nurbs_surface::generate_Xc - + -program~example_nurbs_surface->proc~generate_xc +program~example_nurbs_surface->proc~generate_xc~4 - + -proc~set1 - +proc~set1~2 + forcad_nurbs_surface::nurbs_surface%set1 - + -none~set~2->proc~set1 +none~set~4->proc~set1~2 - + -proc~set2 - +proc~set2~2 + forcad_nurbs_surface::nurbs_surface%set2 - + -none~set~2->proc~set2 +none~set~4->proc~set2~2 @@ -591,9 +591,9 @@

    Calls

    - + -proc~create~2->interface~ndgrid +proc~create~4->interface~ndgrid @@ -606,9 +606,9 @@

    Calls

    - + -proc~create~2->proc~basis_bspline +proc~create~4->proc~basis_bspline @@ -621,39 +621,39 @@

    Calls

    - + -proc~create~2->proc~kron +proc~create~4->proc~kron - + -proc~get_elem_xc~2 - +proc~get_elem_xc~4 + forcad_nurbs_surface::nurbs_surface%get_elem_Xc - + -proc~export_xc~2->proc~get_elem_xc~2 +proc~export_xc~4->proc~get_elem_xc~4 - + -proc~get_elem_xg~2 - +proc~get_elem_xg~4 + forcad_nurbs_surface::nurbs_surface%get_elem_Xg - + -proc~export_xg~2->proc~get_elem_xg~2 +proc~export_xg~4->proc~get_elem_xg~4 @@ -696,45 +696,45 @@

    Calls

    - + -proc~get_elem_xc~2->interface~elemconn_c0 +proc~get_elem_xc~4->interface~elemconn_c0 - + -proc~get_elem_xg~2->interface~elemconn_c0 +proc~get_elem_xg~4->interface~elemconn_c0 - + -proc~get_nc~2 - +proc~get_nc~4 + forcad_nurbs_surface::nurbs_surface%get_nc - + -proc~set1->proc~get_nc~2 +proc~set1~2->proc~get_nc~4 - + -proc~get_order~2 - +proc~get_order~4 + forcad_nurbs_surface::nurbs_surface%get_order - + -proc~set1->proc~get_order~2 +proc~set1~2->proc~get_order~4 @@ -747,15 +747,15 @@

    Calls

    - + -proc~set2->proc~compute_knot_vector +proc~set2~2->proc~compute_knot_vector - + -proc~set2->proc~get_nc~2 +proc~set2~2->proc~get_nc~4 @@ -828,30 +828,30 @@

    Calls

    - + -proc~get_nc~2->proc~compute_multiplicity +proc~get_nc~4->proc~compute_multiplicity - + -proc~get_multiplicity - +proc~get_multiplicity~2 + forcad_nurbs_surface::nurbs_surface%get_multiplicity - + -proc~get_order~2->proc~get_multiplicity +proc~get_order~4->proc~get_multiplicity~2 - + -proc~get_multiplicity->proc~compute_multiplicity +proc~get_multiplicity~2->proc~compute_multiplicity @@ -958,7 +958,7 @@

    Variables

    - + real(kind=rk), @@ -974,7 +974,7 @@

    Variables

    - + real(kind=rk), @@ -990,7 +990,7 @@

    Variables

    - + real(kind=rk) @@ -1006,7 +1006,7 @@

    Variables

    - + real(kind=rk) @@ -1022,7 +1022,7 @@

    Variables

    - + type(nurbs_surface) @@ -1050,7 +1050,7 @@

    Variables

    Functions

    -

    function generate_Xc(num_rows, num_cols, peak_height) result(control_points) +

    function generate_Xc(num_rows, num_cols, peak_height) result(control_points)

    @@ -1069,7 +1069,7 @@

    Arguments

    - + integer, intent(in)
    - + integer, intent(in)
    - + real(kind=rk), intent(in)
    - + real(kind=rk), @@ -975,7 +975,7 @@

    Variables

    - + real(kind=rk), @@ -991,7 +991,7 @@

    Variables

    - + real(kind=rk) @@ -1007,7 +1007,7 @@

    Variables

    - + real(kind=rk) @@ -1023,7 +1023,7 @@

    Variables

    - + real(kind=rk) @@ -1039,7 +1039,7 @@

    Variables

    - + type(nurbs_volume) @@ -1067,7 +1067,7 @@

    Variables

    Functions

    -

    function generate_Xc(L) result(control_points) +

    function generate_Xc(L) result(control_points)

    @@ -1086,7 +1086,7 @@

    Arguments

    - + real(kind=rk), intent(in)
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + integer, private
    - + integer, private
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + integer, private
    - + integer, private
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + integer, private
    - + integer, private
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + integer, private
    - + integer, private
    - + integer, private
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + integer, private
    - + integer, private
    - + integer, private
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + real(kind=rk), private,
    - + integer, private
    - + integer, private
    - + integer, private