Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
361 commits
Select commit Hold shift + click to select a range
b529ae1
Fixes
umenohana13 Sep 17, 2025
6f0a8c8
Merge branch 'Homology-new_package-AB' of github.com:umenohana13/mine…
umenohana13 Sep 17, 2025
0dd833f
Fix
umenohana13 Sep 17, 2025
6632f62
indexes -> indices
afabri Sep 18, 2025
d49fbb8
indexes -> indices
afabri Sep 18, 2025
56b31fc
friend -> relates
afabri Sep 18, 2025
b63e415
typos
afabri Sep 18, 2025
8f27737
Remove \defgroup ChainChainComparison Compares two chains.
afabri Sep 18, 2025
47d4139
fix \relates
afabri Sep 18, 2025
7147f3c
\relates must be outside of the class
afabri Sep 18, 2025
b5b73ac
\relates must be outside of the class
afabri Sep 18, 2025
f7dc05f
\relates must be outside of the class
afabri Sep 18, 2025
b592327
Fixes
umenohana13 Sep 18, 2025
a1f6eb9
Merge branch 'Homology-new_package-AB' of github.com:umenohana13/mine…
umenohana13 Sep 18, 2025
fc79996
Update AbstractChainComplex.h
umenohana13 Sep 18, 2025
947a7c5
Fix
umenohana13 Sep 18, 2025
2816a4b
Add Algebraic_structure_traits<Z2>
afabri Sep 18, 2025
11a6260
vertices coordinates -> vertex coordinates
afabri Sep 18, 2025
8c9636e
Add missing '}'
afabri Sep 18, 2025
6234a4f
Add Real_embeddable_traits
afabri Sep 18, 2025
9a885d9
Add AST::Is_square
afabri Sep 18, 2025
4fb239f
It may be Uncertain<Comparison_result>
afabri Sep 18, 2025
bb5dedb
Update HDVF/doc/HDVF/Concepts/SparseChain.h
umenohana13 Sep 18, 2025
1999c63
Fixes
umenohana13 Sep 18, 2025
309185e
Merge branch 'Homology-new_package-AB' of github.com:umenohana13/mine…
umenohana13 Sep 18, 2025
bfa35d7
Fixes
umenohana13 Sep 24, 2025
28b130a
Add two specializations of Algebraic_structure_traits for prime and n…
afabri Sep 25, 2025
f31b0bb
typos
afabri Sep 26, 2025
c639053
Fixes
umenohana13 Sep 27, 2025
da87747
Update Zp.h
umenohana13 Sep 27, 2025
c8f1f87
typos
afabri Oct 2, 2025
0c1b1a8
Update HDVF/include/CGAL/HDVF/Hdvf_core.h
umenohana13 Oct 9, 2025
691eb09
Fix
umenohana13 Oct 9, 2025
0b81d47
Fix
umenohana13 Oct 9, 2025
f355ac8
Introduce geometric traits class
afabri Oct 13, 2025
6d6bb3c
Added license header
afabri Oct 13, 2025
538a3b3
Add tparam
afabri Oct 13, 2025
de3251f
Deal with 2D output
afabri Oct 13, 2025
712a704
Add example for Surface_mesh
afabri Oct 13, 2025
82b06be
Add example for Surface_mesh
afabri Oct 13, 2025
e8b4256
Drop prefix example_ from example file names
afabri Oct 13, 2025
9678f5c
cleanup
afabri Oct 13, 2025
7e01d99
Start fixing test
afabri Oct 13, 2025
d091029
Zp
umenohana13 Oct 14, 2025
67acf84
replace vertex_coords() with point()
afabri Oct 14, 2025
db13f2f
insert -> write
afabri Oct 14, 2025
f838e8f
insert -> write
afabri Oct 14, 2025
4f2423f
Fixes
umenohana13 Oct 15, 2025
737b713
Fixes
umenohana13 Oct 15, 2025
8f2b1d6
I suggest that we always return const& which corresponds to keeping c…
afabri Oct 15, 2025
c5a53cb
Test for Zp
umenohana13 Oct 15, 2025
df624c1
Fixes
umenohana13 Oct 16, 2025
3e116b5
Fixes
umenohana13 Oct 16, 2025
da994a9
Add Hdvf_traits_d.h
afabri Oct 16, 2025
f7c594c
Merge cgal/main
afabri Oct 16, 2025
9afad6a
Fixes
umenohana13 Oct 17, 2025
fdcc65d
Test Hdvf_core
umenohana13 Oct 18, 2025
a611a2a
Fixes
umenohana13 Oct 18, 2025
5b46717
If to_point() is in the traits you can call Traits().to_point(vec)
afabri Oct 19, 2025
0603975
Fix (points / cubical chain complex)
umenohana13 Oct 20, 2025
a8583f3
Traits in various dimensions
umenohana13 Oct 20, 2025
419b57f
Moved read_nodes
umenohana13 Oct 20, 2025
7ce943c
Test Hdvf_traits_d <4>
umenohana13 Oct 21, 2025
5e5070e
dD needs Eigen, other fixes to make hdvf_simplicial_4.cpp compile
afabri Oct 21, 2025
6b0f3b7
4D simplicial OK
umenohana13 Oct 22, 2025
1c27308
Fix
umenohana13 Oct 22, 2025
1cc4794
Add <Traits> so that examples compile
afabri Oct 23, 2025
9ac1533
Some fixes for VC++
afabri Oct 23, 2025
8a2f5fe
dD export improvement
umenohana13 Oct 23, 2025
2e60ff0
HDVF duality
umenohana13 Oct 24, 2025
6650921
Use Epick_d functors
afabri Oct 24, 2025
fbd399a
doc bug
afabri Oct 27, 2025
cb07f99
doc bug
afabri Oct 27, 2025
4f0d5eb
At some place it needs the concept and not the class name. But needs…
afabri Oct 27, 2025
f3e013e
Move doc of Cell, so that Filtration_core doc shows up; boolean -> B…
afabri Oct 27, 2025
f9a75e6
replace concept with local typedef
afabri Oct 27, 2025
fc2b4ff
Add a typedef
afabri Oct 27, 2025
869bbf5
cleanup
afabri Oct 31, 2025
29e7388
cleanup
afabri Oct 31, 2025
3c3a706
cleanup
afabri Oct 31, 2025
f0df21e
In the documentation of the concept we cannot put a model
afabri Nov 3, 2025
cb674af
In the documentation of the concept we cannot put a model
afabri Nov 3, 2025
0eacb8e
Traits_d and Duality devs
umenohana13 Nov 4, 2025
a899c7c
Merge remote-tracking branch 'cgal/main' into Homology-new_package-AB
afabri Nov 4, 2025
1116f20
Triangulation_3_io
umenohana13 Nov 4, 2025
9eb78a0
Merge branch 'Homology-new_package-AB' of github.com:umenohana13/mine…
umenohana13 Nov 4, 2025
b86ae77
CGAL CDT3 dualization
umenohana13 Nov 4, 2025
23c0b41
Duality with CDT3 CGAL
umenohana13 Nov 4, 2025
2c4855c
Use Exact_predicates_inexact_constructions_kernel
afabri Nov 4, 2025
6d10587
Duality with CGAL CDT3
umenohana13 Nov 6, 2025
c789748
Merge branch 'Homology-new_package-AB' of github.com:umenohana13/mine…
umenohana13 Nov 6, 2025
6de1cd0
Fixes
umenohana13 Nov 7, 2025
d2a512e
Fix
umenohana13 Nov 7, 2025
22931c6
Fixes
umenohana13 Nov 7, 2025
a870e75
Fix
umenohana13 Nov 13, 2025
8676bee
Fixes
umenohana13 Nov 18, 2025
aff1aa0
Fixes
umenohana13 Nov 18, 2025
6beac0e
Fixes (Z2 and Zp)
umenohana13 Nov 18, 2025
bf0d7b4
Fixes
umenohana13 Nov 18, 2025
9cf16bf
Make that degree_function has no link
afabri Nov 20, 2025
ca098ec
fix link
afabri Nov 20, 2025
e1051a7
Duality fix
umenohana13 Nov 21, 2025
91dd777
Merge branch 'Homology-new_package-AB' of github.com:umenohana13/mine…
umenohana13 Nov 21, 2025
3f67415
Merge branch 'Homology-new_package-AB' of github.com:umenohana13/mine…
umenohana13 Nov 24, 2025
0d6b9b4
CGAL CDT3: help needed
umenohana13 Nov 25, 2025
5bcf5eb
Add @param
afabri Nov 25, 2025
435b674
Fix dualize()
afabri Nov 26, 2025
8cfc4f4
Duality fixes
umenohana13 Dec 2, 2025
18d6d5e
Add @param
afabri Dec 2, 2025
93c1bd4
write_VTK fixes
umenohana13 Dec 2, 2025
5631c34
Merge branch 'Homology-new_package-AB' of github.com:umenohana13/mine…
umenohana13 Dec 2, 2025
e0ba225
Move Z2 and Zp to Number_types
afabri Dec 2, 2025
806f74e
Move Z2 and Zp to Number_types
afabri Dec 2, 2025
228b9e0
move files in another doxygen group
afabri Dec 2, 2025
872da26
calculate -> compute
afabri Dec 2, 2025
d8a7acc
Add links fdor Zp and Z2
afabri Dec 2, 2025
73c7872
Add a doxygen group for IO classes
afabri Dec 2, 2025
02b9720
Add package description
afabri Dec 2, 2025
dd94c56
typos
afabri Dec 2, 2025
582b81a
typos
afabri Dec 2, 2025
0bfba03
typos
afabri Dec 2, 2025
508affe
typos
afabri Dec 2, 2025
179f2df
typos
afabri Dec 2, 2025
33337fc
Typos
umenohana13 Dec 12, 2025
d109d59
Implemented dimension restriction
umenohana13 Jan 9, 2026
66e50ae
Dimension restriction for persistence
umenohana13 Jan 14, 2026
407a789
Exceptions in Abstract_simplicial_chain_complex
umenohana13 Jan 14, 2026
9dfde20
Exceptions Cub_object_io
umenohana13 Jan 14, 2026
5075478
Fixes
umenohana13 Jan 14, 2026
c022381
Fixes
umenohana13 Jan 14, 2026
dc3a71e
Fixes
umenohana13 Jan 14, 2026
9f37c50
Fixes
umenohana13 Jan 14, 2026
f338c15
Fixes
umenohana13 Jan 14, 2026
e600e0c
fix doc warnings
sloriot Jan 15, 2026
db1b577
add missing throw
sloriot Jan 15, 2026
248b811
fix backticks
sloriot Jan 15, 2026
c020470
typos
sloriot Jan 15, 2026
9810385
clean up
sloriot Jan 15, 2026
94011fa
Fixes
umenohana13 Jan 15, 2026
1f32f7f
Merge branch 'Homology-new_package-AB' of github.com:umenohana13/mine…
umenohana13 Jan 15, 2026
16f3397
Change one exception documentation
afabri Jan 15, 2026
b677b6f
Fixes
umenohana13 Jan 15, 2026
9c40709
Merge branch 'Homology-new_package-AB' of github.com:umenohana13/mine…
umenohana13 Jan 15, 2026
de7d7c3
Fixes
umenohana13 Jan 15, 2026
d2b9a03
Added "is_valid_pair" operations
umenohana13 Jan 16, 2026
99c1790
z and co_z functions
umenohana13 Jan 17, 2026
a36227b
Methods hd, htdt
umenohana13 Jan 18, 2026
7376f63
Fix
umenohana13 Jan 18, 2026
1798cdd
Fixes
umenohana13 Jan 19, 2026
3e2d846
Fixes
umenohana13 Jan 20, 2026
1e0c355
void cyclic dependency
sloriot Jan 20, 2026
11f0ab8
Fixes
umenohana13 Jan 20, 2026
a9aa7ce
add dependencies
sloriot Jan 21, 2026
cc3c34d
Fix
umenohana13 Jan 21, 2026
df01900
Merge branch 'Homology-new_package-AB' of github.com:umenohana13/mine…
umenohana13 Jan 21, 2026
a0ce7ed
Fixes
umenohana13 Jan 23, 2026
8dd5282
Fixes
umenohana13 Jan 23, 2026
fe14f04
Update Cubical_chain_complex.h
umenohana13 Jan 24, 2026
3b11ef1
Update Cubical_chain_complex.h
umenohana13 Jan 24, 2026
bdaacc5
Exception handling, cleaning
umenohana13 Jan 27, 2026
b614214
Fixes
umenohana13 Jan 27, 2026
ad7dc5a
Surface_mesh_io
umenohana13 Jan 27, 2026
b47c3af
Fixes
umenohana13 Jan 27, 2026
cde541e
Fixes
umenohana13 Jan 27, 2026
9cb1d54
Fixes
umenohana13 Jan 27, 2026
255a08c
Fixes
umenohana13 Jan 27, 2026
a8f5dce
Fixes
umenohana13 Jan 27, 2026
8ffdc29
Exception and rework of Hdvf
umenohana13 Jan 28, 2026
ea0d224
Hdvf / Hdvf_core rework
umenohana13 Jan 28, 2026
7dae6d7
Hdvf_core operation A
umenohana13 Jan 28, 2026
77192d7
Fixes
umenohana13 Jan 28, 2026
7a9aac8
OperationMW
umenohana13 Jan 30, 2026
7791470
Fixes
umenohana13 Jan 30, 2026
542affb
Fixes
umenohana13 Jan 30, 2026
8887bab
Fixes
umenohana13 Jan 30, 2026
3ee7772
Update Hdvf_persistence.h
umenohana13 Jan 30, 2026
c332df2
typos
afabri Jan 31, 2026
f69c3a2
Hdvf_persistence + fixes
umenohana13 Feb 2, 2026
3e7ca38
Do not explain what an assignemnt means
afabri Feb 4, 2026
59bcc9e
Do not explain what an assignemnt means
afabri Feb 4, 2026
9d068d6
Fixes (Hdvf api) + tests
umenohana13 Feb 5, 2026
b50b8b8
Merge branch 'Homology-new_package-AB' of github.com:umenohana13/mine…
umenohana13 Feb 5, 2026
a4df609
Fix
umenohana13 Feb 6, 2026
a6a44c7
Hdvf_persistence
umenohana13 Feb 19, 2026
cc4a246
Fixes
umenohana13 Feb 19, 2026
d1eef11
Fixes
umenohana13 Feb 19, 2026
43bbb3d
Trailing whitespaces fixes
umenohana13 Feb 20, 2026
8021885
Hdvf_persistence exceptions
umenohana13 Feb 20, 2026
efc3d70
.hdvf file format prefix
umenohana13 Feb 20, 2026
5893d6f
API update
umenohana13 Feb 24, 2026
e034b17
Fix
umenohana13 Feb 24, 2026
67c1d87
Fixes
umenohana13 Feb 24, 2026
9c1de88
Fixes Hdvf
umenohana13 Feb 25, 2026
f30142a
MW fix + beginning of LU for Sparse_matrix
umenohana13 Feb 25, 2026
b5e7569
Full_LU for a ring
umenohana13 Feb 26, 2026
20a9aba
Full_lu + hdvf from flags
umenohana13 Feb 27, 2026
478c859
Fixes
umenohana13 Feb 27, 2026
3da674c
Fixes
umenohana13 Feb 27, 2026
43d733e
Fix on MW
umenohana13 Feb 27, 2026
3b14718
Class Full_lu
umenohana13 Feb 28, 2026
266280f
Fixes
umenohana13 Mar 5, 2026
e0763e9
Fixes
umenohana13 Mar 24, 2026
6529d45
Merge remote-tracking branch 'cgal/main' into umenohana13:Homology-ne…
sloriot Mar 24, 2026
262c06e
fix dependencies
sloriot Mar 24, 2026
697b6b1
Started revision of Hdvf_duality
umenohana13 Mar 26, 2026
9e82d4c
Hdvf_duality review
umenohana13 Apr 16, 2026
c35403a
Revision Hdvf_duality
umenohana13 Apr 29, 2026
6b130b2
Update Traits
umenohana13 Apr 29, 2026
7d26d3f
Intermediate version for Sparse_matrix
umenohana13 May 12, 2026
5ee211e
fix warnings and compilation error
sloriot May 12, 2026
939ddf2
Sparse_matrix taking Sparse_chain as tparam
umenohana13 May 19, 2026
0dd6254
Fixes
umenohana13 May 20, 2026
fe53a1d
small cleanup
afabri May 20, 2026
163e2f9
Introduce Is_invertible and Inverse
afabri May 20, 2026
bda5443
-1 is also invertible
afabri May 20, 2026
e672d1a
Add AS<Zp>::Invert
afabri May 20, 2026
66e9d1d
Invert -> Inverse
afabri May 20, 2026
c454ec6
Call free function is_invertible() and inverse()
afabri May 21, 2026
afa6909
trailing whitespace
afabri May 21, 2026
7cf43e3
Fixes (integrating new sparse matrices)
umenohana13 May 21, 2026
8f37188
Tried using is_invertible and inverse
umenohana13 May 22, 2026
b3cdb75
Prefix some calls with CGAL:: so that the compiler does not mix up wi…
afabri May 22, 2026
ec9b774
line is too long
afabri May 22, 2026
8b292af
Add #include
afabri May 22, 2026
253238a
New Sparse_matrix structure
umenohana13 May 28, 2026
4d7249d
Update Sparse_matrix depending on Sparse_chain
umenohana13 Jun 15, 2026
5e302c5
Fix
umenohana13 Jun 16, 2026
f1d5851
Revision of G. Damiand until HDVF concept
umenohana13 Aug 28, 2026
f7c6775
Trailing whitespaces
umenohana13 Aug 28, 2026
9b60f99
Review G. Damiand
umenohana13 Oct 6, 2026
779aefb
Fix Zp.h
umenohana13 Oct 6, 2026
c012d9f
Fix Cub_object_io
umenohana13 Oct 8, 2026
9303664
Trailing whitespaces
umenohana13 Oct 8, 2026
a0ed7e8
Update dependencies
umenohana13 Oct 8, 2026
0045847
Update dependencies
umenohana13 Oct 9, 2026
b0417d9
option to display only documented items
sloriot Oct 9, 2026
547602a
Update Hdvf.h
umenohana13 Oct 9, 2026
af8c37e
Documentation update
umenohana13 Oct 20, 2026
faa9482
Update documentation
umenohana13 Oct 20, 2026
7f6c48d
Review documentation OSM
umenohana13 Oct 22, 2026
9141531
Update documentation
umenohana13 Oct 22, 2026
ee9a4cd
Work in progress on HDVF documentation
umenohana13 Oct 23, 2026
1c60615
fix the CI
lrineau Oct 23, 2026
8b246cd
Rework for documentation
umenohana13 Oct 27, 2026
89fe574
Rework documentation
umenohana13 Oct 27, 2026
57c21db
Rework filtration
umenohana13 Oct 28, 2026
d9eef1c
Rework documentation
umenohana13 Oct 29, 2026
ec5de6f
Rework Mesh_object_io
umenohana13 Oct 29, 2026
9b6d282
fix partial specialization
sloriot Oct 31, 2026
3e28e8b
missing const
sloriot Oct 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -1173,3 +1173,5 @@ patches_after_merge.ply
CMakeUserPresets.json
/.cache
compile_commands.json
/HDVF/test/HDVF/tmp
/HDVF/examples/HDVF/tmp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ namespace CGAL {
\ingroup PkgAlgebraicFoundationsRef

The template function `compare()` compares the first argument with respect to
the second, i.e.\ it returns `CGAL::LARGER` if \f$ x\f$ is larger than \f$ y\f$.
the second.

In case the argument types `NT1` and `NT2` differ,
`compare` is performed with the semantic of the type determined via
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@

namespace AlgebraicStructureTraits_{

/*!
\ingroup PkgAlgebraicFoundationsAlgebraicStructuresConcepts
\cgalConcept

`AdaptableUnaryFunction`,
returns `true` in case the argument is invertible in the ring.

\cgalRefines{AdaptableUnaryFunction}

\sa `AlgebraicStructureTraits`

*/

class IsInvertible {
public:

/// \name Types
/// @{

/*!
Is `AlgebraicStructureTraits::Boolean`.
*/
typedef unspecified_type result_type;

/*!
Is `AlgebraicStructureTraits::Type`.
*/
typedef unspecified_type argument_type;

/// @}

/// \name Operations
/// @{

/*!

returns true in case there exists an element \f$ y\f$ in the ring such that \f$ x * y \f$ is the one of the ring.
*/
result_type operator()(argument_type x);

/// @}

}; /* end IsInvetible */

} /* end of namespace AlgebraicStructureTraits_ */
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ Moreover, `CGAL::Algebraic_structure_traits< Field >` is a model of
\sa `IntegralDomain`
\sa `UniqueFactorizationDomain`
\sa `EuclideanRing`
\sa `Field`
\sa `FieldWithSqrt`
\sa `FieldWithKthRoot`
\sa `FieldWithRootOf`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ Moreover, `CGAL::Algebraic_structure_traits< FieldWithKthRoot >` is a model of `
\sa `EuclideanRing`
\sa `Field`
\sa `FieldWithSqrt`
\sa `FieldWithKthRoot`
\sa `FieldWithRootOf`
\sa `AlgebraicStructureTraits`

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ Moreover, `CGAL::Algebraic_structure_traits< FieldWithRootOf >` is a model of `A
\sa `Field`
\sa `FieldWithSqrt`
\sa `FieldWithKthRoot`
\sa `FieldWithRootOf`
\sa `AlgebraicStructureTraits`

*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ Moreover, `CGAL::Algebraic_structure_traits< FieldWithSqrt >` is a model of `Alg
\sa `UniqueFactorizationDomain`
\sa `EuclideanRing`
\sa `Field`
\sa `FieldWithSqrt`
\sa `FieldWithKthRoot`
\sa `FieldWithRootOf`
\sa `AlgebraicStructureTraits`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ Moreover, `CGAL::Algebraic_structure_traits< IntegralDomain >` is a model of
\cgalRefines{IntegralDomainWithoutDivision}

\sa `IntegralDomainWithoutDivision`
\sa `IntegralDomain`
\sa `UniqueFactorizationDomain`
\sa `EuclideanRing`
\sa `Field`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ Moreover, `CGAL::Algebraic_structure_traits< IntegralDomainWithoutDivision >` is
- \link AlgebraicStructureTraits::Algebraic_category `CGAL::Algebraic_structure_traits< IntegralDomainWithoutDivision >::Algebraic_category` \endlink derived from `CGAL::Integral_domain_without_division_tag`
- \link AlgebraicStructureTraits::Is_zero `CGAL::Algebraic_structure_traits< IntegralDomainWithoutDivision >::Is_zero` \endlink which is a model of `AlgebraicStructureTraits_::IsZero`
- \link AlgebraicStructureTraits::Is_one `CGAL::Algebraic_structure_traits< IntegralDomainWithoutDivision >::Is_one` \endlink which is a model of `AlgebraicStructureTraits_::IsOne`
- \link AlgebraicStructureTraits::Square `CGAL::Algebraic_structure_traits< IntegralDomainWithoutDivision >::Is_invertible` \endlink which is a model of `AlgebraicStructureTraits_::IsInvertible`
- \link AlgebraicStructureTraits::Square `CGAL::Algebraic_structure_traits< IntegralDomainWithoutDivision >::Square` \endlink which is a model of `AlgebraicStructureTraits_::Square`
- \link AlgebraicStructureTraits::Simplify `CGAL::Algebraic_structure_traits< IntegralDomainWithoutDivision >::Simplify` \endlink which is a model of `AlgebraicStructureTraits_::Simplify`
- \link AlgebraicStructureTraits::Unit_part `CGAL::Algebraic_structure_traits< IntegralDomainWithoutDivision >::Unit_part` \endlink which is a model of `AlgebraicStructureTraits_::UnitPart`

\cgalRefines{Assignable,CopyConstructible,DefaultConstructible,EqualityComparable,FromIntConstructible}

\sa `IntegralDomainWithoutDivision`
\sa `IntegralDomain`
\sa `UniqueFactorizationDomain`
\sa `EuclideanRing`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ derived from `CGAL::Unique_factorization_domain_tag`

\sa `IntegralDomainWithoutDivision`
\sa `IntegralDomain`
\sa `UniqueFactorizationDomain`
\sa `EuclideanRing`
\sa `Field`
\sa `FieldWithSqrt`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
- `AlgebraicStructureTraits`
- `AlgebraicStructureTraits_::IsZero`
- `AlgebraicStructureTraits_::IsOne`
- `AlgebraicStructureTraits_::IsInvertible`
- `AlgebraicStructureTraits_::Square`
- `AlgebraicStructureTraits_::Simplify`
- `AlgebraicStructureTraits_::UnitPart`
Expand Down
11 changes: 11 additions & 0 deletions Algebraic_foundations/include/CGAL/Algebraic_structure_traits.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ class Algebraic_structure_traits {
typedef Null_functor Square;
typedef Null_functor Is_zero;
typedef Null_functor Is_one;
typedef Null_functor Is_invertible;
typedef Null_functor Sqrt;
typedef Null_functor Kth_root;
typedef Null_functor Root_of;
Expand Down Expand Up @@ -463,6 +464,16 @@ class Algebraic_structure_traits_base< Type_, Field_tag >
CGAL_IMPLICIT_INTEROPERABLE_BINARY_OPERATOR( Type )
};

class Is_invertible
: public CGAL::cpp98::unary_function< Type, bool > {
public:
bool operator()( const Type& t) const {
typedef Algebraic_structure_traits<Type> AST;
typename AST::Is_zero is_zero;
return ! is_zero(t);
}
};

// maps to \c 1/x by default.
class Inverse
: public CGAL::cpp98::unary_function< Type, Type > {
Expand Down
8 changes: 8 additions & 0 deletions Algebraic_foundations/include/CGAL/number_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,14 @@ is_one( const AS& x ) {
return is_one( x );
}

template< class AS >
inline
typename Algebraic_structure_traits<AS>::Is_invertible::result_type
is_invertible( const AS& x ) {
typename Algebraic_structure_traits< AS >::Is_invertible is_invertible;
return is_invertible( x );
}

template< class AS >
inline
typename Algebraic_structure_traits< AS >::Sqrt::result_type
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ int main(){
CGAL_IS_AST_NULL_FUNCTOR ( Square);
CGAL_IS_AST_NULL_FUNCTOR ( Is_zero);
CGAL_IS_AST_NULL_FUNCTOR ( Is_one);
CGAL_IS_AST_NULL_FUNCTOR ( Is_invertible);
CGAL_IS_AST_NULL_FUNCTOR ( Sqrt);
CGAL_IS_AST_NULL_FUNCTOR ( Kth_root);
CGAL_IS_AST_NULL_FUNCTOR ( Root_of);
Expand Down
6 changes: 5 additions & 1 deletion Documentation/doc/Documentation/packages.txt
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,6 @@
\package_listing{Surface_mesh_skeletonization}
\package_listing{Surface_mesh_approximation}
\package_listing{Heat_method_3}
\package_listing{Surface_mesh_topology}

\cgalPackageSection{PartPointSetProcessing,Point Set Processing}

Expand All @@ -140,6 +139,11 @@
\package_listing{Stream_lines_2}
\package_listing{Classification}

\cgalPackageSection{PartTopology,Topology}

\package_listing{Surface_mesh_topology}
\package_listing{HDVF}

\cgalPackageSection{PartSearchStructures,Spatial Searching and Sorting}

\package_listing{Point_set_2}
Expand Down
179 changes: 179 additions & 0 deletions HDVF/doc/HDVF/Concepts/AbstractChainComplex.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
/*!
\ingroup PkgHDVFConcepts
\cgalConcept

The concept `AbstractChainComplex` describes the requirements for (topological) chain complexes associated to abstract complexes used in the concept `HDVF`.

It provides methods to:

- get the dimension of the complex, the number of cells in each dimension
- get the boundary and co-boundary of cell(s)
- get the vertices of a given cell
- output the complex in text format

Cells are indexed along each dimension and thus identified by their index together with their dimension.


\cgalHasModelsBegin
\cgalHasModelsBare{`CGAL::Homological_discrete_vector_field::Abstract_simplicial_chain_complex<IntegralDomainWithoutDivision>`}
\cgalHasModelsEnd

*/

class AbstractChainComplex
{
public:
/// \name Types
/// @{

/*!
Type of coefficients ring used to compute homology, model of `IntegralDomainWithoutDivision`
*/
typedef unspecified_type Coefficient_ring;

/**
Type of structure of sparse matrix used.

A model of `SparseMatrixStructure` providing a model of `SparseChain` and an associated model of `SparseMatrix`.

\warning Check if the concept `SparseMatrixStructure`and documentation are correct...
*/
typedef unspecified_type Sparse_matrix_structure;

/*!
Type of column-major chains (returned by the boundary operator)
*/
typedef Sparse_matrix_structure:: template Sparse_chain_type<Coefficient_ring, CGAL::OSM::COLUMN> Column_chain;

/*!
Type of row-major chains (returned by the co-boundary operator)
*/
typedef Sparse_matrix_structure:: template Sparse_chain_type<Coefficient_ring, CGAL::OSM::ROW> Row_chain ;

/*!
Type of column-major sparse matrices (used to store the boundary operator)
*/
typedef Sparse_matrix_structure:: template Sparse_matrix_type<Coefficient_ring, CGAL::OSM::COLUMN> Column_matrix;

/// @}

/// \name Verification operations
/// @{

/** \brief Checks if `q` belongs to the range of dimensions of cells in the complex. */
bool is_valid_cell_dimension(int q);
/** \brief Checks if the cell of index `i` and dimension `q` belongs to the range of dimensions of cells in the complex. */
bool is_valid_cell(size_t i, int q);

/// @}


/// \name Access functions
/// @{

/*!
\brief Returns the dimension of the complex.
*
* This dimension is the largest dimension of cells.
*
* \return The dimension of the complex.
*/
int dimension();

/** \brief Get (unique) object Id.
*
* For comparison of constant references to the complex.
*/
size_t id () const;

/*!
\brief Returns the number of cells in a given dimension.
*
* \param q Dimension along which the number of cells is returned.
*
* \return Number of cells in dimension `q`. If `q` is not in the interval `[0,d]` with `d` the dimension of the complex, the function returns an empty column chain.
*/
size_t number_of_cells(int q);

/*!
\brief Returns a constant reference to the vector of boundary matrices (along each dimension).
*
* The q-th element of this vector is a column-major sparse matrix containing the boundaries of q-cells (i.e. rows encode q-1 cells and columns q cells).
*
* \return A constant reference to the vector of column-major boundary matrices along each dimension.
*/
const vector<Column_matrix> & boundary_matrices() const;

/*!
\brief Returns a constant reference over the boundary matrix of dimension `q` (i.e.\ column-major matrix of \f$\partial_q\f$).
*
* It is a column-major sparse matrix containing the boundaries of q-cells (i.e. rows encode q-1 cells and columns q cells).
*
* \param q Dimension of the boundary matrix (i.e. columns will contain the boundary of dimension q cells).
*
* \return A constant reference over the column-major sparse matrix containing the matrix of the boundary operator of dimension q.
*/
const Column_matrix & boundary_matrix(int q) const;

/*!
* \brief Returns the boundary of the cell `id_cell` in dimension `q`.
*
* \param id_cell %Index of the cell.
* \param q Dimension of the cell.
*
* \return A copy of the column-major chain containing the boundary of the cell id_cell in dimension `q`. If `q` is not in the interval `[0,d]` with `d` the dimension of the complex, the function returns an empty column chain.
*/
Column_chain d(size_t id_cell, int q);


/*!
\brief Returns the co-boundary of the cell `id_cell` in dimension `q`.
*
* This chain is actually a row of the boundary matrix in dimension `q`.
*
* \warning As the boundary matrix is stored column-major, this entails crossing the full matrix to extract the row coefficients (O(number of non empty columns))
*
* \param id_cell %Index of the cell.
* \param q Dimension of the cell.
*
* \return The row-major chain containing the co-boundary of the cell id_cell in dimension `q`. If `q` is not in the interval `[0,d]` with `d` the dimension of the complex, the function returns an empty row chain.
*/
Row_chain cod(size_t id_cell, int q);

/*!
\brief Returns the vertices of a given cell (that is, the indices of its faces of dimension 0).

*/
std::vector<size_t> bottom_faces(size_t id_cell, int q) const;

/*!
* \brief Returns the cofaces of a given chain in dimension `q`.
*
* The resulting chain, whatever the storage format of the input, is column-major, lies in dimension `q`+1 and is null if this dimension exceeds the dimension of the complex.
*
* \tparam CoefficientR `CoefficientRing` of the chain.
* \tparam StorageF `StorageFormat` of the chain.
*/
template <typename CoefficientR, int StorageF>
Column_chain cofaces_chain (SparseChain<CoefficientR, StorageF> chain, int q) const;

/// @}

/// \name Input, output
/// @{
///
/*!
\brief Inserts the chain complex in text mode in the stream.

Displays the number of cells in each dimension and the boundary matrix in each dimension.

\param out The output stream.
\param complex Constant reference over the complex considered.
*/
friend std::ostream& operator<<(std::ostream& out, const AbstractChainComplex& complex) const;
/// @}
};




Loading
Loading