1D basis in radial coordinate "s". Contains sbase type definition and associated routines
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| logical, | private | :: | test_called | = | .FALSE. |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(c_sbase), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(in) | :: | g_IP(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(c_sbase), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(in) | :: | x | |||
| integer, | intent(in) | :: | deriv | |||
| real(kind=wp), | intent(in) | :: | DOFs(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(c_sbase), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(in) | :: | x | |||
| integer, | intent(in) | :: | nd | |||
| integer, | intent(in) | :: | deriv | |||
| real(kind=wp), | intent(in) | :: | DOFs(1:sf%nBase,1:nd) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(c_sbase), | intent(in) | :: | sf | |||
| integer, | intent(in) | :: | iElem | |||
| real(kind=wp), | intent(in) | :: | base_x(0:sf%deg) | |||
| real(kind=wp), | intent(in) | :: | DOFs(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(c_sbase), | intent(in) | :: | sf | |||
| integer, | intent(in) | :: | deriv | |||
| real(kind=wp), | intent(in) | :: | DOFs(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(c_sbase), | intent(inout) | :: | sf | |||
| integer, | intent(in) | :: | deg_in | |||
| integer, | intent(in) | :: | continuity_in | |||
| class(t_sGrid), | intent(in), | TARGET | :: | grid_in | ||
| integer, | intent(in) | :: | degGP_in |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(c_sbase), | intent(inout) | :: | sf |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(c_sbase), | intent(in) | :: | sf | |||
| class(c_sbase), | intent(in) | :: | old_sBase | |||
| integer, | intent(in) | :: | iterDim | |||
| real(kind=wp), | intent(in) | :: | old_data(:,:) | |||
| real(kind=wp), | intent(out) | :: | sf_data(:,:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(c_sbase), | intent(in) | :: | sf |
self |
||
| real(kind=wp), | intent(in) | :: | x | |||
| integer, | intent(in) | :: | deriv | |||
| integer, | intent(out) | :: | iElem | |||
| real(kind=wp), | intent(out) | :: | base_x(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(c_sbase), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(inout) | :: | DOFs(1:sf%nBase) | |||
| integer, | intent(in) | :: | BC_Type(2) | |||
| real(kind=wp), | intent(in) | :: | BC_Val(2) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(c_sbase), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(inout) | :: | RHS(1:sf%nBase) | |||
| integer, | intent(in) | :: | BC_Type(2) |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | deg |
input parameter: degree of Spline/polynomial |
|||
| integer, | public | :: | degGP |
number of Gauss-points (degGP+1) per element >= deg |
|||
| integer, | public | :: | continuity |
input parameter: full spline (=deg-1) or discontinuous (=-1) |
|||
| integer, | public | :: | nGP |
global number of gausspoints = (degGP+1)*nElems |
|||
| integer, | public | :: | nGP_str |
local number of gausspoints = (degGP+1)*nElems per MPI subdomain |
|||
| integer, | public | :: | nGP_end |
local number of gausspoints = (degGP+1)*nElems per MPI subdomain |
|||
| integer, | public | :: | nbase |
total number of degree of freedom / global basis functions |
|||
| class(sll_c_spline_matrix), | public, | ALLOCATABLE | :: | mass |
| procedure(i_sub_sbase_init), public, deferred :: init | |
| procedure(i_sub_sbase_free), public, deferred :: free | |
| procedure(i_sub_sbase_copy), public, deferred :: copy | |
| procedure(i_sub_sbase_compare), public, deferred :: compare | |
| procedure(i_sub_sbase_change_base), public, deferred :: change_base | |
| procedure(i_sub_sBase_eval), public, deferred :: eval | |
| procedure(i_fun_sbase_evalDOF_s), public, deferred :: evalDOF_s | |
| procedure(i_fun_sbase_evalDOF2D_s), public, deferred :: evalDOF2D_s | |
| procedure(i_fun_sbase_evalDOF_base), public, deferred :: evalDOF_base | |
| procedure(i_fun_sbase_evalDOF_GP), public, deferred :: evalDOF_GP | |
| procedure(i_fun_sbase_initDOF), public, deferred :: initDOF | |
| procedure(i_sub_sBase_applyBCtoDOF), public, deferred :: applyBCtoDOF | |
| procedure(i_sub_sBase_applyBCtoRHS), public, deferred :: applyBCtoRHS |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | deg |
input parameter: degree of Spline/polynomial |
|||
| integer, | public | :: | degGP |
number of Gauss-points (degGP+1) per element >= deg |
|||
| integer, | public | :: | continuity |
input parameter: full spline (=deg-1) or discontinuous (=-1) |
|||
| integer, | public | :: | nGP |
global number of gausspoints = (degGP+1)*nElems |
|||
| integer, | public | :: | nGP_str |
local number of gausspoints = (degGP+1)*nElems per MPI subdomain |
|||
| integer, | public | :: | nGP_end |
local number of gausspoints = (degGP+1)*nElems per MPI subdomain |
|||
| integer, | public | :: | nbase |
total number of degree of freedom / global basis functions |
|||
| class(sll_c_spline_matrix), | public, | ALLOCATABLE | :: | mass | |||
| logical, | public | :: | initialized | = | .FALSE. |
set to true in init, set to false in free |
|
| class(t_sGrid), | public, | POINTER | :: | grid |
pointer to grid |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | xi_GP(:) |
element local gauss point positions for interval [-1,1], size(0:degGP) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | w_GPloc(:) |
element local gauss weights for interval [-1,1], size(0:degGP) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | w_GP(:) |
global radial integration weight size((degGP+1)*nElems) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | s_GP(:) |
global position of gauss points in s [0,1] , size((degGP+1)*nElems) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | s_IP(:) |
position of interpolation points for initialization, size(nBase) |
||
| integer, | public, | ALLOCATABLE | :: | base_offset(:) |
offset of 0:deg element local basis functions to global index of degree of freedom, allocated (1:nElems). iBase = offset(iElem)+j, j=0...deg |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | base_GP(:,:,:) |
basis functions, (0:degGP,0:deg,1:nElems), |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | base_ds_GP(:,:,:) |
s derivative of basis functions, (0:degGP,0:deg,1:nElems) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | base_dsAxis(:,:) |
all derivatives 1..deg of all basis functions at axis size(1:deg+1,0:deg) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | base_dsEdge(:,:) |
all derivatives 1..deg of all basis functions at edge size(nBase-deg:nBase,0:deg) |
||
| integer, | public, | ALLOCATABLE | :: | nDOF_BC(:) |
number of boundary dofs involved in bc of BC_TYPE, size(-(deg+1):NBC_TYPES) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | A_Axis(:,:,:) |
matrix to apply boundary conditions after interpolation (direct) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | invA_Axis(:,:,:) |
inverse of A_Axis |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | R_Axis(:,:,:) |
matrix to apply boundary conditions for RHS (testfunction) size(1:deg+1,1:deg+1,-(deg+1):NBC_TYPES) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | AR_Axis(:,:,:) |
matrix to apply boundary conditions via LGM with identity size(1:deg+1,1:deg+1,-(deg+1):NBC_TYPES) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | A_Edge(:,:,:) |
matrix to apply boundary conditions after interpolation (direct) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | invA_Edge(:,:,:) |
inverse of A_Edge |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | R_Edge(:,:,:) |
matrix to apply boundary conditions for RHS size(nBase-deg:nBase,nBase-deg:nBase,NBC_TYPES) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | AR_Edge(:,:,:) |
matrix to apply boundary conditions via LGM with identity size(nBase-deg:nBase,nBase-deg:nBase,NBC_TYPES) possible Boundary conditions 1=BC_TYPE_OPEN : boundary left open 2=BC_TYPE_NEUMANN : 1st deriv fixed 3=BC_TYPE_DIRICHLET : sol fixed (typically used at edge) 4=BC_TYPE_SYMM : all odd derivs = 0 5=BC_TYPE_SYMMZERO : all even derivs & sol = 0 6=BC_TYPE_ANTISYMM : all odd derivs & sol = 0 <=0: m-dependent BC: 0, m=0: BC_TYPE_SYMM -1, m=1: BC_TYPE_ANTISYMM -2, m=2: BC_TYPE_SYMMZERO ... odd m<=deg: ANTISYMM + all derivatives 1,...,m-1 =0 ...even m<=deg: SYMMZERO + all derivatives 1,...,m-1 =0 |
| procedure, public :: init => sBase_init | |
| procedure, public :: free => sBase_free | |
| procedure, public :: copy => sBase_copy | |
| procedure, public :: compare => sBase_compare | |
| procedure, public :: change_base => sBase_change_base | |
| procedure, public :: eval => sBase_eval | |
| procedure, public :: evalDOF_s => sBase_evalDOF_s | |
| procedure, public :: evalDOF2D_s => sBase_evalDOF2D_s | |
| procedure, public :: evalDOF_base => sBase_evalDOF_base | |
| procedure, public :: evalDOF_GP => sBase_evalDOF_GP | |
| procedure, public :: initDOF => sBase_initDOF | |
| procedure, public :: applyBCtoDOF => sBase_applyBCtoDOF_LGM | |
| procedure, public :: applyBCtoRHS => sBase_applyBCtoRHS |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | deg |
input parameter: degree of Spline/polynomial |
|||
| integer, | public | :: | degGP |
number of Gauss-points (degGP+1) per element >= deg |
|||
| integer, | public | :: | continuity |
input parameter: full spline (=deg-1) or discontinuous (=-1) |
|||
| integer, | public | :: | nGP |
global number of gausspoints = (degGP+1)*nElems |
|||
| integer, | public | :: | nGP_str |
local number of gausspoints = (degGP+1)*nElems per MPI subdomain |
|||
| integer, | public | :: | nGP_end |
local number of gausspoints = (degGP+1)*nElems per MPI subdomain |
|||
| integer, | public | :: | nbase |
total number of degree of freedom / global basis functions |
|||
| class(sll_c_spline_matrix), | public, | ALLOCATABLE | :: | mass | |||
| logical, | public | :: | initialized | = | .FALSE. |
set to true in init, set to false in free |
|
| class(t_sGrid), | public, | POINTER | :: | grid |
pointer to grid |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | xi_GP(:) |
element local gauss point positions for interval [-1,1], size(0:degGP) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | w_GPloc(:) |
element local gauss weights for interval [-1,1], size(0:degGP) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | w_GP(:) |
global radial integration weight size((degGP+1)*nElems) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | s_GP(:) |
global position of gauss points in s [0,1] , size((degGP+1)*nElems) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | s_IP(:) |
position of interpolation points for initialization, size(nBase) |
||
| integer, | public, | ALLOCATABLE | :: | base_offset(:) |
offset of 0:deg element local basis functions to global index of degree of freedom, allocated (1:nElems). iBase = offset(iElem)+j, j=0...deg |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | base_GP(:,:,:) |
basis functions, (0:degGP,0:deg,1:nElems), |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | base_ds_GP(:,:,:) |
s derivative of basis functions, (0:degGP,0:deg,1:nElems) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | base_dsAxis(:,:) |
all derivatives 1..deg of all basis functions at axis size(1:deg+1,0:deg) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | base_dsEdge(:,:) |
all derivatives 1..deg of all basis functions at edge size(nBase-deg:nBase,0:deg) |
||
| integer, | public, | ALLOCATABLE | :: | nDOF_BC(:) |
number of boundary dofs involved in bc of BC_TYPE, size(-(deg+1):NBC_TYPES) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | A_Axis(:,:,:) |
matrix to apply boundary conditions after interpolation (direct) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | invA_Axis(:,:,:) |
inverse of A_Axis |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | R_Axis(:,:,:) |
matrix to apply boundary conditions for RHS (testfunction) size(1:deg+1,1:deg+1,-(deg+1):NBC_TYPES) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | AR_Axis(:,:,:) |
matrix to apply boundary conditions via LGM with identity size(1:deg+1,1:deg+1,-(deg+1):NBC_TYPES) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | A_Edge(:,:,:) |
matrix to apply boundary conditions after interpolation (direct) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | invA_Edge(:,:,:) |
inverse of A_Edge |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | R_Edge(:,:,:) |
matrix to apply boundary conditions for RHS size(nBase-deg:nBase,nBase-deg:nBase,NBC_TYPES) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | AR_Edge(:,:,:) |
matrix to apply boundary conditions via LGM with identity size(nBase-deg:nBase,nBase-deg:nBase,NBC_TYPES) possible Boundary conditions 1=BC_TYPE_OPEN : boundary left open 2=BC_TYPE_NEUMANN : 1st deriv fixed 3=BC_TYPE_DIRICHLET : sol fixed (typically used at edge) 4=BC_TYPE_SYMM : all odd derivs = 0 5=BC_TYPE_SYMMZERO : all even derivs & sol = 0 6=BC_TYPE_ANTISYMM : all odd derivs & sol = 0 <=0: m-dependent BC: 0, m=0: BC_TYPE_SYMM -1, m=1: BC_TYPE_ANTISYMM -2, m=2: BC_TYPE_SYMMZERO ... odd m<=deg: ANTISYMM + all derivatives 1,...,m-1 =0 ...even m<=deg: SYMMZERO + all derivatives 1,...,m-1 =0 |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | xiIP(:) |
element local interpolation points in [-1,1] (continuity =-1) size(0:deg) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | wbaryIP(:) |
barycentric weights for xiIP size(0:deg) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | DmatIP(:,:) |
Nodal derivative matrix size(0:deg,0:deg) |
| procedure, public :: init => sBase_init | |
| procedure, public :: free => sBase_free | |
| procedure, public :: copy => sBase_copy | |
| procedure, public :: compare => sBase_compare | |
| procedure, public :: change_base => sBase_change_base | |
| procedure, public :: eval => sBase_eval | |
| procedure, public :: evalDOF_s => sBase_evalDOF_s | |
| procedure, public :: evalDOF2D_s => sBase_evalDOF2D_s | |
| procedure, public :: evalDOF_base => sBase_evalDOF_base | |
| procedure, public :: evalDOF_GP => sBase_evalDOF_GP | |
| procedure, public :: initDOF => sBase_initDOF | |
| procedure, public :: applyBCtoDOF => sBase_applyBCtoDOF_LGM | |
| procedure, public :: applyBCtoRHS => sBase_applyBCtoRHS |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | deg |
input parameter: degree of Spline/polynomial |
|||
| integer, | public | :: | degGP |
number of Gauss-points (degGP+1) per element >= deg |
|||
| integer, | public | :: | continuity |
input parameter: full spline (=deg-1) or discontinuous (=-1) |
|||
| integer, | public | :: | nGP |
global number of gausspoints = (degGP+1)*nElems |
|||
| integer, | public | :: | nGP_str |
local number of gausspoints = (degGP+1)*nElems per MPI subdomain |
|||
| integer, | public | :: | nGP_end |
local number of gausspoints = (degGP+1)*nElems per MPI subdomain |
|||
| integer, | public | :: | nbase |
total number of degree of freedom / global basis functions |
|||
| class(sll_c_spline_matrix), | public, | ALLOCATABLE | :: | mass | |||
| logical, | public | :: | initialized | = | .FALSE. |
set to true in init, set to false in free |
|
| class(t_sGrid), | public, | POINTER | :: | grid |
pointer to grid |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | xi_GP(:) |
element local gauss point positions for interval [-1,1], size(0:degGP) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | w_GPloc(:) |
element local gauss weights for interval [-1,1], size(0:degGP) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | w_GP(:) |
global radial integration weight size((degGP+1)*nElems) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | s_GP(:) |
global position of gauss points in s [0,1] , size((degGP+1)*nElems) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | s_IP(:) |
position of interpolation points for initialization, size(nBase) |
||
| integer, | public, | ALLOCATABLE | :: | base_offset(:) |
offset of 0:deg element local basis functions to global index of degree of freedom, allocated (1:nElems). iBase = offset(iElem)+j, j=0...deg |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | base_GP(:,:,:) |
basis functions, (0:degGP,0:deg,1:nElems), |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | base_ds_GP(:,:,:) |
s derivative of basis functions, (0:degGP,0:deg,1:nElems) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | base_dsAxis(:,:) |
all derivatives 1..deg of all basis functions at axis size(1:deg+1,0:deg) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | base_dsEdge(:,:) |
all derivatives 1..deg of all basis functions at edge size(nBase-deg:nBase,0:deg) |
||
| integer, | public, | ALLOCATABLE | :: | nDOF_BC(:) |
number of boundary dofs involved in bc of BC_TYPE, size(-(deg+1):NBC_TYPES) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | A_Axis(:,:,:) |
matrix to apply boundary conditions after interpolation (direct) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | invA_Axis(:,:,:) |
inverse of A_Axis |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | R_Axis(:,:,:) |
matrix to apply boundary conditions for RHS (testfunction) size(1:deg+1,1:deg+1,-(deg+1):NBC_TYPES) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | AR_Axis(:,:,:) |
matrix to apply boundary conditions via LGM with identity size(1:deg+1,1:deg+1,-(deg+1):NBC_TYPES) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | A_Edge(:,:,:) |
matrix to apply boundary conditions after interpolation (direct) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | invA_Edge(:,:,:) |
inverse of A_Edge |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | R_Edge(:,:,:) |
matrix to apply boundary conditions for RHS size(nBase-deg:nBase,nBase-deg:nBase,NBC_TYPES) |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | AR_Edge(:,:,:) |
matrix to apply boundary conditions via LGM with identity size(nBase-deg:nBase,nBase-deg:nBase,NBC_TYPES) possible Boundary conditions 1=BC_TYPE_OPEN : boundary left open 2=BC_TYPE_NEUMANN : 1st deriv fixed 3=BC_TYPE_DIRICHLET : sol fixed (typically used at edge) 4=BC_TYPE_SYMM : all odd derivs = 0 5=BC_TYPE_SYMMZERO : all even derivs & sol = 0 6=BC_TYPE_ANTISYMM : all odd derivs & sol = 0 <=0: m-dependent BC: 0, m=0: BC_TYPE_SYMM -1, m=1: BC_TYPE_ANTISYMM -2, m=2: BC_TYPE_SYMMZERO ... odd m<=deg: ANTISYMM + all derivatives 1,...,m-1 =0 ...even m<=deg: SYMMZERO + all derivatives 1,...,m-1 =0 |
||
| class(sll_c_bsplines), | public, | ALLOCATABLE | :: | bspl |
contains bspline functions |
||
| type(sll_t_spline_interpolator_1d), | public | :: | Interpol |
spline interpolator |
| procedure, public :: init => sBase_init | |
| procedure, public :: free => sBase_free | |
| procedure, public :: copy => sBase_copy | |
| procedure, public :: compare => sBase_compare | |
| procedure, public :: change_base => sBase_change_base | |
| procedure, public :: eval => sBase_eval | |
| procedure, public :: evalDOF_s => sBase_evalDOF_s | |
| procedure, public :: evalDOF2D_s => sBase_evalDOF2D_s | |
| procedure, public :: evalDOF_base => sBase_evalDOF_base | |
| procedure, public :: evalDOF_GP => sBase_evalDOF_GP | |
| procedure, public :: initDOF => sBase_initDOF | |
| procedure, public :: applyBCtoDOF => sBase_applyBCtoDOF_LGM | |
| procedure, public :: applyBCtoRHS => sBase_applyBCtoRHS |
simply evaluate function or derivative at point x
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sBase), | intent(in) | :: | sf |
self |
||
| real(kind=wp), | intent(in) | :: | x |
point positions in [0,1] |
||
| integer, | intent(in) | :: | deriv |
derivative (=0: solution) |
||
| real(kind=wp), | intent(in) | :: | DOFs(:) |
array of all degrees of freedom |
simply evaluate function with a base or base derivative evaluated at a point and its corresponding iElem use together with sBase_eval(x) => iElem,base
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sBase), | intent(in) | :: | sf |
self |
||
| integer, | intent(in) | :: | iElem |
element where evaluation point |
||
| real(kind=wp), | intent(in) | :: | base_x(0:sf%deg) |
evaluation of base or its derivative in element iElem at a point position |
||
| real(kind=wp), | intent(in) | :: | DOFs(:) |
degrees of freedom |
simply evaluate function or derivative at point x, for multiple DOF vectors
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sBase), | intent(in) | :: | sf |
self |
||
| real(kind=wp), | intent(in) | :: | x |
point positions in [0,1] |
||
| integer, | intent(in) | :: | nd |
number of DOF vectors |
||
| integer, | intent(in) | :: | deriv |
derivative (=0: solution) |
||
| real(kind=wp), | intent(in) | :: | DOFs(1:sf%nBase,1:nd) |
evaluate all degrees of freedom at all Gauss Points (deriv=0 solution, deriv=1 first derivative d/ds)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sBase), | intent(in) | :: | sf |
self |
||
| integer, | intent(in) | :: | deriv |
only 0 or 1 |
||
| real(kind=wp), | intent(in) | :: | DOFs(:) |
array of all degrees of freedom |
take values interpolated at sf%s_IP positions and give back the degrees of freedom
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sBase), | intent(in) | :: | sf |
self |
||
| real(kind=wp), | intent(in) | :: | g_IP(:) |
interpolation values at s_IP positions [0,1] |
result of interpolation
initialize the type sbase with polynomial degree, continuity ( -1: disc, 1: full) and number of gauss points per element
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sBase), | intent(inout), | ALLOCATABLE | :: | sbase_in | ||
| integer, | intent(in) | :: | deg_in |
polynomial degree |
||
| integer, | intent(in) | :: | continuity_in | |||
| class(t_sGrid), | intent(in), | TARGET | :: | grid_in |
grid information |
|
| integer, | intent(in) | :: | degGP_in |
gauss quadrature points: nGP=degGP+1 |
initialize the type sbase with polynomial degree, continuity ( -1: disc, 1: full) and number of gauss points per element
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sBase), | intent(inout) | :: | sf |
self |
||
| integer, | intent(in) | :: | deg_in |
polynomial degree |
||
| integer, | intent(in) | :: | continuity_in | |||
| class(t_sGrid), | intent(in), | TARGET | :: | grid_in |
grid information |
|
| integer, | intent(in) | :: | degGP_in |
gauss quadrature points: nGP=degGP+1 per elements |
allocate all variables in sbase
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sBase), | intent(inout) | :: | sf |
self |
finalize the type sBase
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sBase), | intent(inout) | :: | sf |
self |
change data from old_sBase to self. using interpolations of the old data at the new interpolation points
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sBase), | intent(in) | :: | sf |
self |
||
| class(c_sbase), | intent(in) | :: | old_sBase |
base of old_data |
||
| integer, | intent(in) | :: | iterDim |
iterate on first or second dimension or old_data/sf_data |
||
| real(kind=wp), | intent(in) | :: | old_data(:,:) | |||
| real(kind=wp), | intent(out) | :: | sf_data(:,:) |
evaluate sbase at position x [0,1], NOT EFFICIENT!!
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sBase), | intent(in) | :: | sf |
self |
||
| real(kind=wp), | intent(in) | :: | x |
position [0,1] where to evaluate |
||
| integer, | intent(in) | :: | deriv | |||
| integer, | intent(out) | :: | iElem | |||
| real(kind=wp), | intent(out) | :: | base_x(:) |
all basis functions (0:deg) evaluated |
apply strong boundary conditions at axis and edge Not used anymore, WAS FOUND TO BE NOT STABLE (OSCILLATORY) IN GENERAL, especially for BCs with only derivatives prescribed... new LGM method below is used now!
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sBase), | intent(in) | :: | sf |
self |
||
| real(kind=wp), | intent(inout) | :: | DOFs(1:sf%nBase) |
DOFs with boundary conditions applied |
||
| integer, | intent(in) | :: | BC_Type(2) |
bc type on axis (1) and edge (2) |
||
| real(kind=wp), | intent(in) | :: | BC_Val(2) |
for dirichlet BC : value |
apply boundary conditions at axis and edge, via solving the Lagrange multiplier problem: x_new=x_old & A*x_new = d
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sBase), | intent(in) | :: | sf |
self |
||
| real(kind=wp), | intent(inout) | :: | DOFs(1:sf%nBase) |
DOFs with boundary conditions applied |
||
| integer, | intent(in) | :: | BC_Type(2) |
bc type on axis (1) and edge (2) |
||
| real(kind=wp), | intent(in) | :: | BC_Val(2) |
for dirichlet BC : value |
apply strong boundary conditions at axis and edge for solution update
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sBase), | intent(in) | :: | sf |
self |
||
| real(kind=wp), | intent(inout) | :: | RHS(sf%nBase) |
DOFs with boundary conditions applied |
||
| integer, | intent(in) | :: | BC_Type(2) |
bc type on axis (1) and edge (2) |
test sbase variable
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_sBase), | intent(inout) | :: | sf |
self |