program~~fdm_elevate_and_insert_3d~~UsesGraph
program~fdm_elevate_and_insert_3d
fdm_elevate_and_insert_3d
fortime
fortime
program~fdm_elevate_and_insert_3d->fortime
module~forcad
forcad
program~fdm_elevate_and_insert_3d->module~forcad
module~forcad_utils
forcad_utils
program~fdm_elevate_and_insert_3d->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 volume
deallocate temporary arrays
copy initial NURBS volume (before refinement)
get initial control points, dimension, number of control points and degrees of freedom
elevate degree in three 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)
get new degrees of freedom (after refinement)
start finite difference computations
compute relative error between finite difference and analytical sensitivities
finalize
program~~fdm_elevate_and_insert_3d~~CallsGraph
program~fdm_elevate_and_insert_3d
fdm_elevate_and_insert_3d
none~get_knot~2
nurbs_volume%get_knot
program~fdm_elevate_and_insert_3d->none~get_knot~2
none~get_wc~2
nurbs_volume%get_Wc
program~fdm_elevate_and_insert_3d->none~get_wc~2
none~get_xc~2
nurbs_volume%get_Xc
program~fdm_elevate_and_insert_3d->none~get_xc~2
none~set~2
nurbs_volume%set
program~fdm_elevate_and_insert_3d->none~set~2
proc~elevate_degree~2
nurbs_volume%elevate_degree
program~fdm_elevate_and_insert_3d->proc~elevate_degree~2
proc~finalize~2
nurbs_volume%finalize
program~fdm_elevate_and_insert_3d->proc~finalize~2
proc~generate_xc~6
generate_Xc
program~fdm_elevate_and_insert_3d->proc~generate_xc~6
proc~insert_knots~2
nurbs_volume%insert_knots
program~fdm_elevate_and_insert_3d->proc~insert_knots~2
proc~kron_eye
kron_eye
program~fdm_elevate_and_insert_3d->proc~kron_eye
proc~linspace
linspace
program~fdm_elevate_and_insert_3d->proc~linspace
timer_start
timer_start
program~fdm_elevate_and_insert_3d->timer_start
timer_stop
timer_stop
program~fdm_elevate_and_insert_3d->timer_stop
proc~get_knot_all~2
nurbs_volume%get_knot_all
none~get_knot~2->proc~get_knot_all~2
proc~get_knoti~2
nurbs_volume%get_knoti
none~get_knot~2->proc~get_knoti~2
proc~get_wc_all~2
nurbs_volume%get_Wc_all
none~get_wc~2->proc~get_wc_all~2
proc~get_wci~2
nurbs_volume%get_Wci
none~get_wc~2->proc~get_wci~2
proc~get_xc_all~2
nurbs_volume%get_Xc_all
none~get_xc~2->proc~get_xc_all~2
proc~get_xcid~2
nurbs_volume%get_Xcid
none~get_xc~2->proc~get_xcid~2
proc~get_xci~2
nurbs_volume%get_Xci
none~get_xc~2->proc~get_xci~2
proc~set1~2
nurbs_volume%set1
none~set~2->proc~set1~2
proc~set2~2
nurbs_volume%set2
none~set~2->proc~set2~2
proc~set3~2
nurbs_volume%set3
none~set~2->proc~set3~2
proc~set4~2
nurbs_volume%set4
none~set~2->proc~set4~2
proc~elevate_degree~2->none~get_knot~2
proc~elevate_degree~2->none~set~2
proc~elevate_degree_a_5_9
elevate_degree_A_5_9
proc~elevate_degree~2->proc~elevate_degree_a_5_9
proc~is_rational~2
nurbs_volume%is_rational
proc~elevate_degree~2->proc~is_rational~2
proc~insert_knots~2->none~get_knot~2
interface~compute_multiplicity
compute_multiplicity
proc~insert_knots~2->interface~compute_multiplicity
proc~findspan
findspan
proc~insert_knots~2->proc~findspan
proc~insert_knot_a_5_1
insert_knot_A_5_1
proc~insert_knots~2->proc~insert_knot_a_5_1
proc~insert_knots~2->proc~is_rational~2
s_loc
s_loc
proc~insert_knots~2->s_loc
set
set
proc~insert_knots~2->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~2->set
proc~cmp_degree~2
nurbs_volume%cmp_degree
proc~set1~2->proc~cmp_degree~2
proc~cmp_nc~2
nurbs_volume%cmp_nc
proc~set1~2->proc~cmp_nc~2
proc~set2~2->set
proc~set2~2->proc~cmp_nc~2
proc~compute_knot_vector
compute_knot_vector
proc~set2~2->proc~compute_knot_vector
proc~set3~2->set
proc~set3~2->proc~cmp_degree~2
proc~set4~2->set
proc~factln
factln
proc~bincoeff->proc~factln
proc~cmp_degree~2->set
proc~get_multiplicity~2
nurbs_volume%get_multiplicity
proc~cmp_degree~2->proc~get_multiplicity~2
proc~cmp_nc~2->interface~compute_multiplicity
proc~cmp_nc~2->set
proc~repelem
repelem
proc~compute_knot_vector->proc~repelem
proc~get_multiplicity~2->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
::
S5 (:,:)
real(kind=rk),
allocatable
::
S6 (:,:)
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
=
4
degrees to elevate
integer,
parameter
::
dg2
=
3
degrees to elevate
integer,
parameter
::
dg3
=
2
degrees to elevate
integer
::
dim
integer
::
i
integer
::
idx
real(kind=rk),
allocatable
::
knot1 (:)
real(kind=rk),
allocatable
::
knot2 (:)
real(kind=rk),
allocatable
::
knot3 (:)
integer,
parameter
::
n1
=
2
number of knots to insert
integer,
parameter
::
n2
=
3
number of knots to insert
integer,
parameter
::
n3
=
4
number of knots to insert
integer
::
nc0
integer
::
ndof_new
integer
::
ndof_old
integer,
allocatable
::
r1 (:)
integer,
allocatable
::
r2 (:)
integer,
allocatable
::
r3 (:)
real(kind=rk)
::
rel_err
type(nurbs_volume )
::
sh0
type(nurbs_volume )
::
shfd
type(nurbs_volume )
::
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 (:)
real(kind=rk),
allocatable
::
u3 (:)
Functions
Arguments
Type
Intent Optional Attributes
Name
real(kind=rk),
intent(in)
::
L
Return Value
real(kind=rk), allocatable, (:,:)