diff --git a/Manifest.toml b/Manifest.toml index 791d496bd..66da07a07 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -100,9 +100,9 @@ version = "0.4.2" [[FileIO]] deps = ["Pkg"] -git-tree-sha1 = "74585bf1f7ed7259e166011e89f49363d7fa89a6" +git-tree-sha1 = "2c84c57aced468fa21763c66d3bef33adcd09ec7" uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.2.1" +version = "1.2.2" [[FillArrays]] deps = ["LinearAlgebra", "Random", "SparseArrays"] @@ -195,9 +195,9 @@ version = "0.12.0" [[Parsers]] deps = ["Dates", "Test"] -git-tree-sha1 = "0139ba59ce9bc680e2925aec5b7db79065d60556" +git-tree-sha1 = "d112c19ccca00924d5d3a38b11ae2b4b268dda39" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "0.3.10" +version = "0.3.11" [[Pkg]] deps = ["Dates", "LibGit2", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"] @@ -240,9 +240,9 @@ version = "0.2.0" [[Requires]] deps = ["UUIDs"] -git-tree-sha1 = "999513b7dea8ac17359ed50ae8ea089e4464e35e" +git-tree-sha1 = "d37400976e98018ee840e0ca4f9d20baa231dc6b" uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.0.0" +version = "1.0.1" [[SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" diff --git a/NEWS.md b/NEWS.md index f7c327c6c..438832881 100644 --- a/NEWS.md +++ b/NEWS.md @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.7.0] - 2020-02-13 + +This version is a major refactoring of the project which is not summarized here for the sake of brevity. Most of the functionality of v0.6.0 is available in v0.7.0, but with a possibly slightly different API. See the changes in the sources of the Gridap Tutorials between versions 0.6.0 and 0.7.0 to effectively see the major changes in the API. + ## [0.6.0] - 2020-01-24 ### Added - New `GenericRefFE`. Since commit [876ef1e](https://github.com/gridap/Gridap.jl/commit/c3c9010177432b8f07aaecf4a0baa4b93876ef1e) diff --git a/Project.toml b/Project.toml index 347c17a84..4f7c08745 100644 --- a/Project.toml +++ b/Project.toml @@ -16,7 +16,6 @@ LineSearches = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" NLsolve = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" QuadGK = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -Reexport = "189a3867-3050-52da-a836-e630ba90ab69" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" @@ -27,14 +26,13 @@ BSON = "0.2.5" Combinatorics = "1.0.0" DocStringExtensions = "0.8.1" FastGaussQuadrature = "0.4.2" -FileIO = "1.2.1" +FileIO = "1.2.2" FillArrays = "0.8.4" JLD2 = "0.1.11" JSON = "0.21.0" LineSearches = "7.0.1" NLsolve = "4.3.0" QuadGK = "2.3.1" -Reexport = "0.2.0" StaticArrays = "0.12.1" WriteVTK = "1.4.0" julia = "1.0" diff --git a/docs/Project.toml b/docs/Project.toml index cd8538eb2..993029637 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -1,3 +1,6 @@ [deps] Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" Gridap = "56d4f2e9-7ea1-5844-9cf6-b9c51ca7ce8e" + +[compat] +Documenter = "0.24" diff --git a/docs/make.jl b/docs/make.jl index 9fa9b7aa3..09d878744 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -8,16 +8,17 @@ pages = [ "Gridap" => "Gridap.md", "Gridap.Helpers" => "Helpers.md", "Gridap.Inference" => "Inference.md", + "Gridap.Algebra" => "Algebra.md", "Gridap.Io" => "Io.md", "Gridap.TensorValues" => "TensorValues.md", "Gridap.Arrays" => "Arrays.md", "Gridap.Fields" => "Fields.md", "Gridap.Polynomials" => "Polynomials.md", + "Gridap.Integration" => "Integration.md", "Gridap.ReferenceFEs" => "ReferenceFEs.md", "Gridap.Geometry" => "Geometry.md", - "Gridap.Integration" => "Integration.md", - "Gridap.Algebra" => "Algebra.md", "Gridap.FESpaces" => "FESpaces.md", + "Gridap.MultiField" => "MultiField.md", "Gridap.Visualization" => "Visualization.md", ] diff --git a/docs/src/Arrays.md b/docs/src/Arrays.md index 41323d9ea..73cd38a30 100644 --- a/docs/src/Arrays.md +++ b/docs/src/Arrays.md @@ -138,6 +138,12 @@ LocalToGlobalPosNegArray LocalToGlobalPosNegArray(::AbstractArray{<:AbstractArray},::AbstractArray,::AbstractArray) ``` +### SubVector + +```@docs +SubVector +``` + ### Helpers ```@docs diff --git a/docs/src/Geometry.md b/docs/src/Geometry.md index 3ddacf519..b49e399da 100644 --- a/docs/src/Geometry.md +++ b/docs/src/Geometry.md @@ -32,6 +32,18 @@ get_cell_shapefuns(trian::Triangulation) get_cell_map(trian::Triangulation) get_physical_coordinate(trian::Triangulation) ``` +### Integrating on a triangulation + +```@docs +CellQuadrature +CellQuadrature(array::AbstractArray{<:Quadrature}) +CellQuadrature(trian::Triangulation, degree::Integer) +CellQuadrature(degree,polytopes::Vector{<:Polytope}, cell_types::AbstractVector) +get_coordinates(quad::CellQuadrature) +get_weights(quad::CellQuadrature) +get_array(quad::CellQuadrature) +integrate(cell_field,trian::Triangulation,quad::CellQuadrature) +``` ### TriangulationPortion @@ -39,7 +51,6 @@ get_physical_coordinate(trian::Triangulation) TriangulationPortion TriangulationPortion(oldtrian::Triangulation{Dc,Dp},cell_to_oldcell::Vector{Int}) where {Dc,Dp} ``` - ## BoundaryTriangulations ### Interface @@ -96,6 +107,7 @@ compute_linear_grid(reffe::LagrangianRefFE) compute_reference_grid(reffe::LagrangianRefFE, nelems::Integer) Grid(::Type{ReferenceFE{d}},p::Polytope) where d GridTopology(grid::Grid) +simplexify(grid::Grid) ``` ### UnstructuredGrids @@ -277,6 +289,13 @@ Grid(::Type{ReferenceFE{d}},model::DiscreteModel) where d Triangulation(::Type{ReferenceFE{d}},model::DiscreteModel) where d get_triangulation(model::DiscreteModel) get_polytopes(model::DiscreteModel) +simplexify(model::DiscreteModel) +``` + +### DiscreteModelFromFile + +```@docs +DiscreteModelFromFile(filename::AbstractString) ``` ### UnstructuredDiscreteModels diff --git a/docs/src/MultiField.md b/docs/src/MultiField.md new file mode 100644 index 000000000..febb217a7 --- /dev/null +++ b/docs/src/MultiField.md @@ -0,0 +1,10 @@ + +```@meta +CurrentModule = Gridap.MultiField +``` + +# Gridap.MultiField + +```@autodocs +Modules = [MultiField,] +``` diff --git a/docs/src/ReferenceFEs.md b/docs/src/ReferenceFEs.md index 28d22d1da..1c41f93ec 100644 --- a/docs/src/ReferenceFEs.md +++ b/docs/src/ReferenceFEs.md @@ -39,6 +39,8 @@ get_offsets(p::Polytope) get_offset(p::Polytope,d::Integer) get_faces(p::Polytope,dimfrom::Integer,dimto::Integer) get_face_vertices(p::Polytope,dim::Integer) +get_face_coordinates(p::Polytope,d::Integer) +get_face_dimranges(p::Polytope,d::Integer) get_reffaces(::Type{Polytope{d}},p::Polytope) where d get_face_type(p::Polytope,d::Integer) get_bounding_box(p::Polytope{D}) where D @@ -201,6 +203,18 @@ is_S(reffe::LagrangianRefFE) SerendipityRefFE ``` +### PDiscRefFE + +```@docs +PDiscRefFE +``` + +### RaviartThomasRefFE + +```@docs +RaviartThomasRefFE +``` + ### Pre-defined ReferenceFE instances ```@docs diff --git a/docs/src/getting-started.md b/docs/src/getting-started.md index b3f408ed6..1eb249f30 100644 --- a/docs/src/getting-started.md +++ b/docs/src/getting-started.md @@ -2,13 +2,11 @@ ## Installation requirements -At the moment, Gridap requires at least Julia version 1.1. - -Gridap has been tested on Linux and Mac Os operating systems. +Gridap is tested on Linux, but it should be also possible to use it on Mac OS and Windows since it is written exclusively in Julia and it only depends on registered Julia packages. ## Installation -Gridap is a registered package. Thus, the installation should be straight forward using the Julia's package manager [Pkg](https://julialang.github.io/Pkg.jl/v1/): open the Julia REPL (i.e., execute the `julia` binary), type `]` to enter package mode, and install Gridap as follows +Gridap is a registered package. Thus, the installation should be straight forward using the Julia's package manager [Pkg](https://julialang.github.io/Pkg.jl/v1/). To this end, open the Julia REPL (i.e., execute the `julia` binary), type `]` to enter package mode, and install Gridap as follows ```julia pkg> add Gridap @@ -21,6 +19,6 @@ For further information about how to install and manage Julia packages, see the ## Further steps -We recommend to follow the [Gridap Tutorials](https://github.com/gridap/Tutorials) in order to get familiar with the library. +We recommend to follow the [Gridap Tutorials](https://gridap.github.io/Tutorials/dev/) in order to get familiar with the library. diff --git a/docs/src/index.md b/docs/src/index.md index 6314fa036..b364b90c0 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -18,18 +18,16 @@ The library currently supports linear and nonlinear PDE systems for scalar and v * The first step for new users is to visit the [Getting Started](@ref) page. +* A set of tutorials written as Jupyter notebooks and html pages are available [here](https://github.com/gridap/Tutorials). + * The detailed documentation is in the [Manual](@ref) section. * Guidelines for developers of the Gridap project is found in the [Gridap wiki](https://github.com/gridap/Gridap.jl/wiki) page. -## Tutorials - -In addition to these documentation pages, a set of tutorials written in Jupyter notebooks are available [here](https://github.com/gridap/Tutorials). - ## Julia educational resources A basic knowledge of the Julia programming language is needed to use the Gridap package. -Here, a list of resources to get started with this programming language. +Here, one can find a list of resources to get started with this programming language. * First steps to learn Julia form the [Gridap wiki](https://github.com/gridap/Gridap.jl/wiki/Start-learning-Julia) page. * Official webpage [docs.julialang.org](https://docs.julialang.org/) @@ -43,15 +41,16 @@ Pages = [ "Helpers.md", "Inference.md", "Io.md", + "Algebra.md", "TensorValues.md", "Arrays.md", "Fields.md", "Polynomials.md", + "Integration.md", "ReferenceFEs.md", "Geometry.md", - "Integration.md", - "Algebra.md", "FESpaces.md", + "MultiField.md", "Visualization.md", ] ``` diff --git a/src/Arrays/SubVectors.jl b/src/Arrays/SubVectors.jl index b75c578de..78774cef1 100644 --- a/src/Arrays/SubVectors.jl +++ b/src/Arrays/SubVectors.jl @@ -1,4 +1,11 @@ +""" + struct SubVector{T,A<:AbstractVector{T}} <: AbstractVector{T} + vector::A + pini::Int + pend::Int + end +""" struct SubVector{T,A<:AbstractVector{T}} <: AbstractVector{T} vector::A pini::Int diff --git a/src/FESpaces/CLagrangianFESpaces.jl b/src/FESpaces/CLagrangianFESpaces.jl index f189ae349..df6ef1c74 100644 --- a/src/FESpaces/CLagrangianFESpaces.jl +++ b/src/FESpaces/CLagrangianFESpaces.jl @@ -1,4 +1,13 @@ +""" + struct CLagrangianFESpace{S} <: SingleFieldFESpace + grid::Grid + dof_to_node::Vector{Int} + dof_to_comp::Vector{Int8} + node_and_comp_to_dof::Vector{S} + # + private fields + end +""" struct CLagrangianFESpace{S} <: SingleFieldFESpace space::UnsconstrainedFESpace grid::Grid @@ -6,6 +15,9 @@ struct CLagrangianFESpace{S} <: SingleFieldFESpace dof_to_comp::Vector{Int8} node_and_comp_to_dof::Vector{S} + @doc """ + CLagrangianFESpace(::Type{T},grid::Grid) where T + """ function CLagrangianFESpace(::Type{T},grid::Grid) where T space, dof_to_node, dof_to_comp, node_and_comp_to_dof = _generate_clargangian_fespace(T,grid) S = eltype(node_and_comp_to_dof) diff --git a/src/FESpaces/DivConformingFESpaces.jl b/src/FESpaces/DivConformingFESpaces.jl index 5c6c45355..e93351c2a 100644 --- a/src/FESpaces/DivConformingFESpaces.jl +++ b/src/FESpaces/DivConformingFESpaces.jl @@ -1,4 +1,11 @@ +""" + DivConformingFESpace( + reffes::Vector{<:ReferenceFE}, + model::DiscreteModel, + face_labeing::FaceLabeling, + dirichlet_tags) +""" function DivConformingFESpace( reffes::Vector{<:ReferenceFE}, model::DiscreteModel, diff --git a/src/FESpaces/FESpacesWithLastDofRemoved.jl b/src/FESpaces/FESpacesWithLastDofRemoved.jl index 735088d76..ac0d3ec0b 100644 --- a/src/FESpaces/FESpacesWithLastDofRemoved.jl +++ b/src/FESpaces/FESpacesWithLastDofRemoved.jl @@ -1,6 +1,14 @@ +""" + struct FESpaceWithLastDofRemoved <: SingleFieldFESpace + space::SingleFieldFESpace + end +""" struct FESpaceWithLastDofRemoved <: SingleFieldFESpace space::SingleFieldFESpace + @doc """ + FESpaceWithLastDofRemoved(space::SingleFieldFESpace) + """ function FESpaceWithLastDofRemoved(space::SingleFieldFESpace) s = "FESpaceWithLastDofRemoved can only be constructed from spaces without dirichlet dofs." @notimplementedif num_dirichlet_dofs(space) != 0 s diff --git a/src/FESpaces/ZeroMeanFESpaces.jl b/src/FESpaces/ZeroMeanFESpaces.jl index 90d6f39cf..b6e395b57 100644 --- a/src/FESpaces/ZeroMeanFESpaces.jl +++ b/src/FESpaces/ZeroMeanFESpaces.jl @@ -1,10 +1,21 @@ +""" + struct ZeroMeanFESpace <: SingleFieldFESpace + # private fields + end +""" struct ZeroMeanFESpace <: SingleFieldFESpace space::FESpaceWithLastDofRemoved vol_i::Vector{Float64} vol::Float64 end +""" + ZeroMeanFESpace( + space::SingleFieldFESpace, + trian::Triangulation, + quad::CellQuadrature) +""" function ZeroMeanFESpace( space::SingleFieldFESpace,trian::Triangulation,quad::CellQuadrature) diff --git a/src/Geometry/CellQuadratures.jl b/src/Geometry/CellQuadratures.jl index afd8e42c1..b9094678b 100644 --- a/src/Geometry/CellQuadratures.jl +++ b/src/Geometry/CellQuadratures.jl @@ -1,16 +1,22 @@ """ + struct CellQuadrature <: GridapType + array + end """ struct CellQuadrature <: GridapType array + @doc """ + CellQuadrature(array::AbstractArray{<:Quadrature}) + """ function CellQuadrature(array::AbstractArray{<:Quadrature}) new(array) end end """ - CellQuadrature(trian::Triangulation, degree) + CellQuadrature(trian::Triangulation, degree::Integer) """ -function CellQuadrature(trian::Triangulation, degree) +function CellQuadrature(trian::Triangulation, degree::Integer) polytopes = map(get_polytope,get_reffes(trian)) cell_type = get_cell_type(trian) CellQuadrature(degree,polytopes,cell_type) @@ -35,6 +41,7 @@ function CellQuadrature(degree,polytopes::Vector{<:Polytope}, cell_types::Fill) end """ + get_array(quad::CellQuadrature) """ get_array(quad::CellQuadrature) = quad.array @@ -81,7 +88,9 @@ function _get_weights(q::Fill{<:Quadrature}) end """ -the `cell_field` is aligned with the cells in `trian` + integrate(cell_field,trian::Triangulation,quad::CellQuadrature) + +The `cell_field` is aligned with the cells in `trian` """ function integrate(cell_field,trian::Triangulation,quad::CellQuadrature) cell_map = get_cell_map(trian) diff --git a/src/Geometry/DiscreteModels.jl b/src/Geometry/DiscreteModels.jl index 09f657cc3..84aabd6ef 100644 --- a/src/Geometry/DiscreteModels.jl +++ b/src/Geometry/DiscreteModels.jl @@ -409,6 +409,7 @@ function from_dict(::Type{DiscreteModel},dict::Dict{Symbol,Any}) end """ + DiscreteModelFromFile(filename::AbstractString) """ function DiscreteModelFromFile(filename::AbstractString) base, extension = splitext(filename) diff --git a/src/Gridap.jl b/src/Gridap.jl index 65e212c67..d45040d75 100644 --- a/src/Gridap.jl +++ b/src/Gridap.jl @@ -9,6 +9,7 @@ The module is structured in the following sub-modules: - [`Gridap.Helpers`](@ref) - [`Gridap.Inference`](@ref) - [`Gridap.Io`](@ref) +- [`Gridap.Algebra`](@ref) - [`Gridap.TensorValues`](@ref) - [`Gridap.Arrays`](@ref) - [`Gridap.Fields`](@ref) @@ -16,7 +17,6 @@ The module is structured in the following sub-modules: - [`Gridap.Integration`](@ref) - [`Gridap.ReferenceFEs`](@ref) - [`Gridap.Geometry`](@ref) -- [`Gridap.Algebra`](@ref) - [`Gridap.FESpaces`](@ref) - [`Gridap.MultiField`](@ref) - [`Gridap.Visualization`](@ref) diff --git a/src/MultiField/MultiField.jl b/src/MultiField/MultiField.jl index fff211500..33237bb41 100644 --- a/src/MultiField/MultiField.jl +++ b/src/MultiField/MultiField.jl @@ -1,5 +1,11 @@ +""" + +The exported names are +$(EXPORTS) +""" module MultiField +using DocStringExtensions using Gridap.Helpers using Gridap.Algebra using Gridap.Arrays @@ -55,7 +61,6 @@ export compute_field_offsets export restrict_to_field export MultiFieldFESpace export MultiFieldFEFunction -export MultiFieldCellBasis export MultiFieldSparseMatrixAssembler include("MultiCellArrays.jl") diff --git a/src/MultiField/MultiFieldFEFunctions.jl b/src/MultiField/MultiFieldFEFunctions.jl index 1deb2db5d..b2676c6a8 100644 --- a/src/MultiField/MultiFieldFEFunctions.jl +++ b/src/MultiField/MultiFieldFEFunctions.jl @@ -1,4 +1,9 @@ +""" + struct MultiFieldFEFunction + # private fields + end +""" struct MultiFieldFEFunction free_values::AbstractVector space::MultiFieldFESpace @@ -11,6 +16,9 @@ get_free_values(f::MultiFieldFEFunction) = f.free_values get_fe_space(f::MultiFieldFEFunction) = f.space +""" + num_fields(m::MultiFieldFEFunction) +""" num_fields(m::MultiFieldFEFunction) = length(m.blocks) Base.iterate(m::MultiFieldFEFunction) = iterate(m.blocks) diff --git a/src/MultiField/MultiFieldFESpaces.jl b/src/MultiField/MultiFieldFESpaces.jl index ef98be064..6cc4ccb34 100644 --- a/src/MultiField/MultiFieldFESpaces.jl +++ b/src/MultiField/MultiFieldFESpaces.jl @@ -6,12 +6,19 @@ struct ConsequtiveMultiFieldStyle <: MultiFieldStyle end struct StridedMultiFieldStyle <: MultiFieldStyle end """ + struct MultiFieldFESpace{S<:MultiFieldStyle} <: FESpace + spaces::Vector{<:SingleFieldFESpace} + multi_field_style::S + end """ struct MultiFieldFESpace{S<:MultiFieldStyle} <: FESpace spaces::Vector{<:SingleFieldFESpace} multi_field_style::S end +""" + MultiFieldFESpace(spaces::Vector{<:SingleFieldFESpace}) +""" function MultiFieldFESpace(spaces::Vector{<:SingleFieldFESpace}) MultiFieldFESpace(spaces,ConsequtiveMultiFieldStyle()) end @@ -123,6 +130,9 @@ end # API for multi field case +""" + num_fields(f::MultiFieldFESpace) +""" function num_fields(f::MultiFieldFESpace) length(f.spaces) end @@ -133,6 +143,9 @@ Base.iterate(m::MultiFieldFESpace,state) = iterate(m.spaces,state) Base.getindex(m::MultiFieldFESpace,field_id::Integer) = m.spaces[field_id] +""" + restrict_to_field(f::MultiFieldFESpace,free_values::AbstractVector,field::Integer) +""" function restrict_to_field(f::MultiFieldFESpace,free_values::AbstractVector,field::Integer) _restrict_to_field(f,MultiFieldStyle(f),free_values,field) end @@ -185,6 +198,9 @@ end # API for the ConsequtiveMultiFieldStyle +""" + compute_field_offsets(f::MultiFieldFESpace) +""" function compute_field_offsets(f::MultiFieldFESpace) @assert MultiFieldStyle(f) == ConsequtiveMultiFieldStyle() U = f.spaces diff --git a/src/MultiField/MultiFieldSparseMatrixAssemblers.jl b/src/MultiField/MultiFieldSparseMatrixAssemblers.jl index 0ad87bd06..879799653 100644 --- a/src/MultiField/MultiFieldSparseMatrixAssemblers.jl +++ b/src/MultiField/MultiFieldSparseMatrixAssemblers.jl @@ -1,5 +1,10 @@ """ + struct MultiFieldSparseMatrixAssembler{E} <: Assembler + matrix_type::Type{E} + test::MultiFieldFESpace + trial::MultiFieldFESpace + end """ struct MultiFieldSparseMatrixAssembler{E} <: Assembler matrix_type::Type{E} @@ -7,6 +12,12 @@ struct MultiFieldSparseMatrixAssembler{E} <: Assembler trial::MultiFieldFESpace end +""" + MultiFieldSparseMatrixAssembler( + matrix_type::Type{<:AbstractSparseMatrix}, + test::Vector{<:SingleFieldFESpace}, + trial::Vector{<:SingleFieldFESpace}) +""" function MultiFieldSparseMatrixAssembler( matrix_type::Type{<:AbstractSparseMatrix}, test::Vector{<:SingleFieldFESpace}, diff --git a/src/Polynomials/QCurlGradMonomialBases.jl b/src/Polynomials/QCurlGradMonomialBases.jl index 4ad532dcc..e042a4ee3 100644 --- a/src/Polynomials/QCurlGradMonomialBases.jl +++ b/src/Polynomials/QCurlGradMonomialBases.jl @@ -49,4 +49,7 @@ end get_value_type(::QCurlGradMonomialBasis{D,T}) where {D,T} = T +""" + num_terms(f::QCurlGradMonomialBasis{D,T}) where {D,T} +""" num_terms(f::QCurlGradMonomialBasis{D,T}) where {D,T} = length(f.qgrad.terms)*D diff --git a/src/ReferenceFEs/Polytopes.jl b/src/ReferenceFEs/Polytopes.jl index 815b4a1e5..b7874eb74 100644 --- a/src/ReferenceFEs/Polytopes.jl +++ b/src/ReferenceFEs/Polytopes.jl @@ -485,6 +485,7 @@ function _get_faces_dual(p,dimfrom,dimto) end """ + get_face_dimranges(p::Polytope,d::Integer) """ function get_face_dimranges(p::Polytope,d::Integer) n = num_faces(p,d) @@ -664,6 +665,7 @@ function get_face_vertex_permutations(p::Polytope) end """ + get_face_coordinates(p::Polytope,d::Integer) """ function get_face_coordinates(p::Polytope,d::Integer) vert_to_coord = get_vertex_coordinates(p) diff --git a/src/ReferenceFEs/RaviartThomasRefFEs.jl b/src/ReferenceFEs/RaviartThomasRefFEs.jl index 5346e6011..54efe609a 100644 --- a/src/ReferenceFEs/RaviartThomasRefFEs.jl +++ b/src/ReferenceFEs/RaviartThomasRefFEs.jl @@ -1,4 +1,7 @@ +""" + RaviartThomasRefFE(::Type{et},p::Polytope,order::Integer) where et +""" function RaviartThomasRefFE(::Type{et},p::Polytope,order::Integer) where et D = num_dims(p)