-
Notifications
You must be signed in to change notification settings - Fork 177
Expand file tree
/
Copy pathbasic_attributes.jl
More file actions
122 lines (91 loc) · 4.47 KB
/
basic_attributes.jl
File metadata and controls
122 lines (91 loc) · 4.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
@doc raw"""
base_space(m::AbstractFTheoryModel)
Return the base space of the F-theory model.
# Examples
```jldoctest
julia> m = literature_model(arxiv_id = "1109.3454", equation = "3.1")
Assuming that the first row of the given grading is the grading under Kbar
Global Tate model over a not fully specified base -- SU(5)xU(1) restricted Tate model based on arXiv paper 1109.3454 Eq. (3.1)
julia> base_space(m)
Family of spaces of dimension d = 3
```
"""
function base_space(m::AbstractFTheoryModel)
is_base_space_fully_specified(m) || @vprint :FTheoryModelPrinter 1 "Base space was not fully specified. Returning AUXILIARY base space.\n"
return m.base_space
end
@doc raw"""
ambient_space(m::AbstractFTheoryModel)
Return the ambient space of the F-theory model.
# Examples
```jldoctest
julia> m = literature_model(arxiv_id = "1109.3454", equation = "3.1")
Assuming that the first row of the given grading is the grading under Kbar
Global Tate model over a not fully specified base -- SU(5)xU(1) restricted Tate model based on arXiv paper 1109.3454 Eq. (3.1)
julia> ambient_space(m)
Family of spaces of dimension d = 5
```
"""
function ambient_space(m::AbstractFTheoryModel)
is_base_space_fully_specified(m) || @vprint :FTheoryModelPrinter 1 "Base space was not fully specified. Returning AUXILIARY ambient space.\n"
return m.ambient_space
end
@doc raw"""
fiber_ambient_space(m::AbstractFTheoryModel)
Return the fiber ambient space of an F-theory model.
# Examples
```jldoctest
julia> B3 = projective_space(NormalToricVariety, 3)
Normal toric variety
julia> w = torusinvariant_prime_divisors(B3)[1]
Torus-invariant, prime divisor on a normal toric variety
julia> t = literature_model(arxiv_id = "1109.3454", equation = "3.1", base_space = B3, defining_classes = Dict("w" => w), completeness_check = false)
Construction over concrete base may lead to singularity enhancement. Consider computing singular_loci. However, this may take time!
Global Tate model over a concrete base -- SU(5)xU(1) restricted Tate model based on arXiv paper 1109.3454 Eq. (3.1)
julia> fiber_ambient_space(t)
Normal toric variety
```
"""
function fiber_ambient_space(m::AbstractFTheoryModel)
@req hasfield(typeof(m), :fiber_ambient_space) "fiber_ambient_space not supported for this F-theory model"
return m.fiber_ambient_space
end
@doc raw"""
model_index(m::AbstractFTheoryModel)
Return database index of a literature model. This index is a unique identifier that can be used to more conveniently construct the model.
All models have a model_index and these will not change in the future.
# Examples
```jldoctest
julia> t = literature_model(31)
Assuming that the first row of the given grading is the grading under Kbar
Weierstrass model over a not fully specified base -- F-theory weierstrass model dual to hypersurface model with fiber ambient space F_10 based on arXiv paper 1408.4808 Eq. (3.130)
julia> model_index(t)
31
```
"""
function model_index(m::AbstractFTheoryModel)
directory = joinpath(dirname(@__DIR__), "LiteratureModels/")
model_indices = JSON.parsefile(directory * "model_indices.json")
return parse(Int, model_indices["model" * literature_identifier(m) * ".json"])
end
######################################################################################
### Attributes for flux families (not exported, rather for serialization overhaul)
######################################################################################
@attr QQMatrix function matrix_integral_quant_transverse(m::AbstractFTheoryModel; check::Bool = true)
return matrix_integral(special_flux_family(m, check = check))
end
@attr QQMatrix function matrix_rational_quant_transverse(m::AbstractFTheoryModel; check::Bool = true)
return matrix_rational(special_flux_family(m, check = check))
end
@attr Vector{QQFieldElem} function offset_quant_transverse(m::AbstractFTheoryModel; check::Bool = true)
return offset(special_flux_family(m, check = check))
end
@attr QQMatrix function matrix_integral_quant_transverse_nobreak(m::AbstractFTheoryModel; check::Bool = true)
return matrix_integral(special_flux_family(m, not_breaking = true; check = check))
end
@attr QQMatrix function matrix_rational_quant_transverse_nobreak(m::AbstractFTheoryModel; check::Bool = true)
return matrix_rational(special_flux_family(m, not_breaking = true; check = check))
end
@attr Vector{QQFieldElem} function offset_quant_transverse_nobreak(m::AbstractFTheoryModel; check::Bool = true)
return offset(special_flux_family(m, not_breaking = true; check = check))
end