program~~fdm_elevate_and_insert_2d~~UsesGraph
program~fdm_elevate_and_insert_2d
fdm_elevate_and_insert_2d
fortime
fortime
program~fdm_elevate_and_insert_2d->fortime
module~forcad
forcad
program~fdm_elevate_and_insert_2d->module~forcad
module~forcad_utils
forcad_utils
program~fdm_elevate_and_insert_2d->module~forcad_utils
module~forcad_kinds
forcad_kinds
module~forcad->module~forcad_kinds
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->module~forcad_kinds
module~forcad_nurbs_curve->module~forcad_utils
module~forcad_nurbs_curve->module~forcad_kinds
fordebug
fordebug
module~forcad_nurbs_curve->fordebug
module~forcad_nurbs_surface->module~forcad_utils
module~forcad_nurbs_surface->module~forcad_kinds
module~forcad_nurbs_surface->fordebug
module~forcad_nurbs_volume->module~forcad_utils
module~forcad_nurbs_volume->module~forcad_kinds
module~forcad_nurbs_volume->fordebug
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
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
set control points
set weights
set knot vectors
set NURBS surface
deallocate temporary arrays
copy initial NURBS surface (before refinement)
get initial control points, dimension, number of control points and degrees of freedom
elevate degree in two directions and get sensitivities (Bs: in compact form, memory efficient)
set knot vectors to insert
multiplicities of knots to insert
insert knots in three directions and get sensitivities (Bs: in compact form, memory efficient)
compute global sensitivities (dXc_old/dXc_new)
start finite difference computations
compute relative error between finite difference and analytical sensitivities
finalize
program~~fdm_elevate_and_insert_2d~~CallsGraph
program~fdm_elevate_and_insert_2d
fdm_elevate_and_insert_2d
none~get_knot
nurbs_surface%get_knot
program~fdm_elevate_and_insert_2d->none~get_knot
none~get_wc
nurbs_surface%get_Wc
program~fdm_elevate_and_insert_2d->none~get_wc
none~get_xc
nurbs_surface%get_Xc
program~fdm_elevate_and_insert_2d->none~get_xc
none~set
nurbs_surface%set
program~fdm_elevate_and_insert_2d->none~set
proc~elevate_degree
nurbs_surface%elevate_degree
program~fdm_elevate_and_insert_2d->proc~elevate_degree
proc~finalize
nurbs_surface%finalize
program~fdm_elevate_and_insert_2d->proc~finalize
proc~generate_xc~5
generate_Xc
program~fdm_elevate_and_insert_2d->proc~generate_xc~5
proc~insert_knots
nurbs_surface%insert_knots
program~fdm_elevate_and_insert_2d->proc~insert_knots
proc~kron_eye
kron_eye
program~fdm_elevate_and_insert_2d->proc~kron_eye
proc~linspace
linspace
program~fdm_elevate_and_insert_2d->proc~linspace
timer_start
timer_start
program~fdm_elevate_and_insert_2d->timer_start
timer_stop
timer_stop
program~fdm_elevate_and_insert_2d->timer_stop
proc~get_knot_all
nurbs_surface%get_knot_all
none~get_knot->proc~get_knot_all
proc~get_knoti
nurbs_surface%get_knoti
none~get_knot->proc~get_knoti
proc~get_wc_all
nurbs_surface%get_Wc_all
none~get_wc->proc~get_wc_all
proc~get_wci
nurbs_surface%get_Wci
none~get_wc->proc~get_wci
proc~get_xc_all
nurbs_surface%get_Xc_all
none~get_xc->proc~get_xc_all
proc~get_xci
nurbs_surface%get_Xci
none~get_xc->proc~get_xci
proc~get_xcid
nurbs_surface%get_Xcid
none~get_xc->proc~get_xcid
proc~set1
nurbs_surface%set1
none~set->proc~set1
proc~set2
nurbs_surface%set2
none~set->proc~set2
proc~set3
nurbs_surface%set3
none~set->proc~set3
proc~set4
nurbs_surface%set4
none~set->proc~set4
proc~elevate_degree->none~get_knot
proc~elevate_degree->none~set
proc~elevate_degree_a_5_9
elevate_degree_A_5_9
proc~elevate_degree->proc~elevate_degree_a_5_9
proc~is_rational
nurbs_surface%is_rational
proc~elevate_degree->proc~is_rational
proc~insert_knots->none~get_knot
interface~compute_multiplicity
compute_multiplicity
proc~insert_knots->interface~compute_multiplicity
proc~findspan
findspan
proc~insert_knots->proc~findspan
proc~insert_knot_a_5_1
insert_knot_A_5_1
proc~insert_knots->proc~insert_knot_a_5_1
proc~insert_knots->proc~is_rational
s_loc
s_loc
proc~insert_knots->s_loc
set
set
proc~insert_knots->set
proc~compute_multiplicity1
compute_multiplicity1
interface~compute_multiplicity->proc~compute_multiplicity1
proc~compute_multiplicity2
compute_multiplicity2
interface~compute_multiplicity->proc~compute_multiplicity2
proc~elevate_degree_a_5_9->interface~compute_multiplicity
proc~bincoeff
bincoeff
proc~elevate_degree_a_5_9->proc~bincoeff
proc~set1->set
proc~cmp_degree
nurbs_surface%cmp_degree
proc~set1->proc~cmp_degree
proc~cmp_nc
nurbs_surface%cmp_nc
proc~set1->proc~cmp_nc
proc~set2->set
proc~set2->proc~cmp_nc
proc~compute_knot_vector
compute_knot_vector
proc~set2->proc~compute_knot_vector
proc~set3->set
proc~set3->proc~cmp_degree
proc~set4->set
proc~factln
factln
proc~bincoeff->proc~factln
proc~cmp_degree->set
proc~get_multiplicity
nurbs_surface%get_multiplicity
proc~cmp_degree->proc~get_multiplicity
proc~cmp_nc->interface~compute_multiplicity
proc~cmp_nc->set
proc~repelem
repelem
proc~compute_knot_vector->proc~repelem
proc~get_multiplicity->interface~compute_multiplicity
Nodes of different colours represent the following:
Graph Key
Subroutine
Subroutine
Function
Function
Interface
Interface
Type Bound Procedure
Type Bound Procedure
Unknown Procedure Type
Unknown Procedure Type
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Variables
Type
Attributes
Name
Initial
real(kind=rk),
allocatable
::
B (:,:)
real(kind=rk),
allocatable
::
Bfd (:,:)
real(kind=rk),
allocatable
::
Bs (:,:)
real(kind=rk),
allocatable
::
S1 (:,:)
real(kind=rk),
allocatable
::
S2 (:,:)
real(kind=rk),
allocatable
::
S3 (:,:)
real(kind=rk),
allocatable
::
S4 (:,:)
real(kind=rk),
allocatable
::
Wc (:)
real(kind=rk),
allocatable
::
Xc (:,:)
real(kind=rk),
allocatable
::
Xc0 (:,:)
real(kind=rk),
allocatable
::
Xcm_vec (:)
real(kind=rk),
allocatable
::
Xcp_vec (:)
real(kind=rk),
allocatable
::
Xm (:,:)
real(kind=rk),
allocatable
::
Xp (:,:)
integer
::
d
integer,
parameter
::
dg1
=
3
degrees to elevate
integer,
parameter
::
dg2
=
2
degrees to elevate
integer
::
dim
integer
::
i
integer
::
idx
real(kind=rk),
allocatable
::
knot1 (:)
real(kind=rk),
allocatable
::
knot2 (:)
integer,
parameter
::
n1
=
5
number of knots to insert
integer,
parameter
::
n2
=
4
number of knots to insert
integer
::
nc0
integer
::
ndof_new
integer
::
ndof_old
integer,
allocatable
::
r1 (:)
integer,
allocatable
::
r2 (:)
real(kind=rk)
::
rel_err
type(nurbs_surface )
::
sh0
type(nurbs_surface )
::
shfd
type(nurbs_surface )
::
shr
type(timer)
::
t
real(kind=rk),
parameter
::
tol
=
1e-5_rk
tolerance of finite differences
real(kind=rk),
allocatable
::
u1 (:)
real(kind=rk),
allocatable
::
u2 (:)
Functions
Arguments
Type
Intent Optional Attributes
Name
real(kind=rk),
intent(in)
::
L
Return Value
real(kind=rk), allocatable, (:,:)