Skip to content

Commit d88fbe9

Browse files
Merge pull request #76 from ProjectTorreyPines/grid_ggd_link
Expanding acces of functions to all grid_ggd
2 parents 5d77061 + 6aa0cab commit d88fbe9

8 files changed

+787
-317
lines changed

Project.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "IMASggd"
22
uuid = "b7b5e640-9b39-4803-84eb-376048795def"
33
authors = ["Anchal Gupta <guptaa@fusion.gat.com>"]
4-
version = "2.0.1"
4+
version = "3.0.0"
55

66
[deps]
77
ArgParse = "c7e460c6-2fb9-53a9-8c5b-16f535851c63"
@@ -17,7 +17,7 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1717
[compat]
1818
ArgParse = "1"
1919
ColorSchemes = "3"
20-
IMASdd = "2, 3"
20+
IMASdd = "2, 3, 4"
2121
Interpolations = "0.15"
2222
NearestNeighbors = "0.4"
2323
RecipesBase = "1"

docs/src/index.md

+14-4
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,24 @@ get_prop_with_grid_subset_index
4949
get_types_with
5050
```
5151

52+
This function has been used to create following types that are used in this module and
53+
can be imported for further use.
54+
55+
```@docs
56+
IMASggd.all__grid_ggd
57+
IMASggd.all__space
58+
IMASggd.all__grid_subset
59+
IMASggd.all__grid_subset_prop
60+
```
61+
5262
## Plot recipes
5363

5464
Several plot recipes have been defined for easy visualization.
5565
```@docs
56-
RecipesBase.apply_recipe(::Dict{Symbol,Any}, ::IMASggd.IMASdd.edge_profiles__grid_ggd___space)
57-
RecipesBase.apply_recipe(::Dict{Symbol,Any}, ::IMASggd.IMASdd.edge_profiles__grid_ggd___space, ::IMASggd.IMASdd.edge_profiles__grid_ggd___grid_subset)
58-
RecipesBase.apply_recipe(::Dict{Symbol,Any}, ::IMASggd.IMASdd.edge_profiles__grid_ggd, ::IMASggd.IMASdd.IDSvectorElement)
59-
RecipesBase.apply_recipe(::Dict{Symbol,Any}, ::AbstractVector{<:IMASggd.IMASdd.edge_profiles__grid_ggd}, ::IMASggd.IMASdd.IDSvectorElement)
66+
RecipesBase.apply_recipe(::Dict{Symbol,Any}, ::IMASggd.all__space)
67+
RecipesBase.apply_recipe(::Dict{Symbol,Any}, ::IMASggd.all__space, ::IMASggd.all__grid_subset)
68+
RecipesBase.apply_recipe(::Dict{Symbol,Any}, ::IMASggd.all__grid_ggd, ::IMASggd.all__grid_subset_prop)
69+
RecipesBase.apply_recipe(::Dict{Symbol,Any}, ::AbstractVector{<:IMASggd.all__grid_ggd}, ::IMASggd.all__grid_subset_prop)
6070
RecipesBase.apply_recipe(::Dict{Symbol,Any}, ::IMASggd.IMASdd.interferometer)
6171
RecipesBase.apply_recipe(::Dict{Symbol,Any}, ::IMASggd.IMASdd.interferometer__channel)
6272
RecipesBase.apply_recipe(::Dict{Symbol,Any}, ::IMASggd.IMASdd.interferometer__channel___line_of_sight)

examples/plotting.ipynb

+7-8
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,14 @@
2424
"source": [
2525
"using Pkg\n",
2626
"Pkg.activate(\"./\")\n",
27-
"Pkg.add(url=\"git@github.com:ProjectTorreyPines/IMASdd.jl.git\")\n",
2827
"Pkg.develop(path=\"../\")\n",
2928
"Pkg.add(\"Plots\")\n",
3029
"Pkg.add(\"LaTeXStrings\")"
3130
]
3231
},
3332
{
3433
"cell_type": "code",
35-
"execution_count": null,
34+
"execution_count": 2,
3635
"metadata": {},
3736
"outputs": [],
3837
"source": [
@@ -44,7 +43,7 @@
4443
},
4544
{
4645
"cell_type": "code",
47-
"execution_count": null,
46+
"execution_count": 3,
4847
"metadata": {},
4948
"outputs": [],
5049
"source": [
@@ -115,7 +114,7 @@
115114
"gr() # Fast and can save pdf\n",
116115
"# plotlyjs() # Use for interactive plot, can only save png\n",
117116
"\n",
118-
"n_e = IMASggd.get_prop_with_grid_subset_index(dd.edge_profiles.ggd[1].electrons.density, 5)\n",
117+
"n_e = IMASggd.get_prop_with_grid_subset_index(dd.edge_profiles.ggd[1].electrons.density, -5)\n",
119118
"plot(dd.edge_profiles.grid_ggd, n_e, colorbar_title=\"Electrons density / \" * L\"m^{-3}\",\n",
120119
" left_margin=10Plots.pt)"
121120
]
@@ -146,18 +145,18 @@
146145
],
147146
"metadata": {
148147
"kernelspec": {
149-
"display_name": "Julia 1.9.2",
148+
"display_name": "Julia 1.10.4",
150149
"language": "julia",
151-
"name": "julia-1.9"
150+
"name": "julia-1.10"
152151
},
153152
"language_info": {
154153
"file_extension": ".jl",
155154
"mimetype": "application/julia",
156155
"name": "julia",
157-
"version": "1.9.2"
156+
"version": "1.10.4"
158157
},
159158
"orig_nbformat": 4
160159
},
161160
"nbformat": 4,
162161
"nbformat_minor": 2
163-
}
162+
}

examples/plotting_interferometer.ipynb

+9-10
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,13 @@
2424
"source": [
2525
"using Pkg\n",
2626
"Pkg.activate(\"./\")\n",
27-
"Pkg.add(url=\"git@github.com:ProjectTorreyPines/IMASdd.jl.git\")\n",
28-
"Pkg.develop(path=\"../\")\n",
29-
"Pkg.add(\"Plots\")"
27+
"# Pkg.develop(path=\"../\")\n",
28+
"# Pkg.add(\"Plots\")"
3029
]
3130
},
3231
{
3332
"cell_type": "code",
34-
"execution_count": null,
33+
"execution_count": 2,
3534
"metadata": {},
3635
"outputs": [],
3736
"source": [
@@ -49,7 +48,7 @@
4948
},
5049
{
5150
"cell_type": "code",
52-
"execution_count": null,
51+
"execution_count": 3,
5352
"metadata": {},
5453
"outputs": [],
5554
"source": [
@@ -217,7 +216,7 @@
217216
"source": [
218217
"gr()\n",
219218
"\n",
220-
"n_e = IMASggd.get_prop_with_grid_subset_index(ids.edge_profiles.ggd[1].electrons.density, 5)\n",
219+
"n_e = IMASggd.get_prop_with_grid_subset_index(ids.edge_profiles.ggd[1].electrons.density, -5)\n",
221220
"plot(ids.edge_profiles.grid_ggd, n_e, colorbar_title=\"Electrons density / m^(-3)\", left_margin=10Plots.pt)\n",
222221
"plot!(space)\n",
223222
"plot!(ids.interferometer, legend=true, size=[635, 900]) # Adding a size comment to make plot aspect ratio better"
@@ -226,18 +225,18 @@
226225
],
227226
"metadata": {
228227
"kernelspec": {
229-
"display_name": "Julia 1.9.2",
228+
"display_name": "Julia 1.10.4",
230229
"language": "julia",
231-
"name": "julia-1.9"
230+
"name": "julia-1.10"
232231
},
233232
"language_info": {
234233
"file_extension": ".jl",
235234
"mimetype": "application/julia",
236235
"name": "julia",
237-
"version": "1.9.2"
236+
"version": "1.10.4"
238237
},
239238
"orig_nbformat": 4
240239
},
241240
"nbformat": 4,
242241
"nbformat_minor": 2
243-
}
242+
}

src/interpolations.jl

+32-32
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ export get_kdtree
88
export get_TPS_mats
99

1010
"""
11-
get_kdtree(space::IMASdd.edge_profiles__grid_ggd___space)
11+
get_kdtree(space::all__space)
1212
1313
Get a KDTree for all the cells in the space for search for nearest neighbours.
1414
"""
15-
function get_kdtree(space::IMASdd.edge_profiles__grid_ggd___space)
15+
function get_kdtree(space::all__space)
1616
grid_nodes = space.objects_per_dimension[1].object
1717
grid_faces = space.objects_per_dimension[3].object
1818
grid_faces = [cell for cell grid_faces if length(cell.nodes) == 4]
@@ -25,15 +25,15 @@ end
2525

2626
"""
2727
get_kdtree(
28-
space::IMASdd.edge_profiles__grid_ggd___space,
29-
subset::IMASdd.edge_profiles__grid_ggd___grid_subset,
28+
space::all__space,
29+
subset::all__grid_subset,
3030
)
3131
3232
Get a KDTree for a subset of the space for search for nearest neighbours.
3333
"""
3434
function get_kdtree(
35-
space::IMASdd.edge_profiles__grid_ggd___space,
36-
subset::IMASdd.edge_profiles__grid_ggd___grid_subset,
35+
space::all__space,
36+
subset::all__grid_subset,
3737
)
3838
subset_centers = get_subset_centers(space, subset)
3939
return KDTree([SVector{2}(sc) for sc subset_centers]; leafsize=10)
@@ -178,15 +178,15 @@ function interp(y::Vector{T}, x::Vector{Tuple{U, U}}) where {T <: Real, U <: Rea
178178
return interp(y, get_TPS_mats(x))
179179
end
180180

181-
function get_TPS_mats(space::IMASdd.edge_profiles__grid_ggd___space)
181+
function get_TPS_mats(space::all__space)
182182
nodes = [Tuple(node.geometry) for node space.objects_per_dimension[1].object]
183183
return get_TPS_mats(nodes)
184184
end
185185

186186
"""
187187
interp(
188188
prop_values::Vector{T},
189-
space::IMASdd.edge_profiles__grid_ggd___space
189+
space::all__space
190190
) where {T <: Real}
191191
192192
If the whole space is provided instead of a kdtree, calculate the kdtree for whole
@@ -195,40 +195,40 @@ of the space.
195195
"""
196196
function interp(
197197
prop_values::Vector{T},
198-
space::IMASdd.edge_profiles__grid_ggd___space,
198+
space::all__space,
199199
) where {T <: Real}
200200
return interp(prop_values, get_TPS_mats(space))
201201
end
202202

203203
function get_TPS_mats(
204-
space::IMASdd.edge_profiles__grid_ggd___space,
205-
subset::IMASdd.edge_profiles__grid_ggd___grid_subset,
204+
space::all__space,
205+
subset::all__grid_subset,
206206
)
207207
return get_TPS_mats(get_subset_centers(space, subset))
208208
end
209209

210210
"""
211211
interp(
212212
prop_values::Vector{Real},
213-
space::IMASdd.edge_profiles__grid_ggd___space,
214-
subset::IMASdd.edge_profiles__grid_ggd___grid_subset
213+
space::all__space,
214+
subset::all__grid_subset
215215
)
216216
217217
If a subset of the space is provided, calculate the kdtree for the subset. In this case
218218
it is assumed that the property values are provided for each element of the subset.
219219
"""
220220
function interp(
221221
prop_values::Vector{T},
222-
space::IMASdd.edge_profiles__grid_ggd___space,
223-
subset::IMASdd.edge_profiles__grid_ggd___grid_subset,
222+
space::all__space,
223+
subset::all__grid_subset,
224224
) where {T <: Real}
225225
return interp(prop_values, get_TPS_mats(space, subset))
226226
end
227227

228228
"""
229229
interp(
230-
prop::edge_profiles__prop_on_subset,
231-
grid_ggd::IMASdd.edge_profiles__grid_ggd,
230+
prop::all__grid_subset_prop,
231+
grid_ggd::all__grid_ggd,
232232
value_field::Symbol=:values
233233
)
234234
@@ -241,8 +241,8 @@ get_e_field_par = interp(dd.edge_profiles.ggd[1].e_field[1], grid_ggd, :parallel
241241
```
242242
"""
243243
function interp(
244-
prop::edge_profiles__prop_on_subset,
245-
grid_ggd::IMASdd.edge_profiles__grid_ggd,
244+
prop::all__grid_subset_prop,
245+
grid_ggd::all__grid_ggd,
246246
value_field::Symbol=:values,
247247
)
248248
subset = get_grid_subset(grid_ggd, prop.grid_subset_index)
@@ -253,10 +253,10 @@ end
253253
"""
254254
interp(
255255
prop_arr::AbstractVector{T},
256-
space::IMASdd.edge_profiles__grid_ggd___space,
257-
subset::IMASdd.edge_profiles__grid_ggd___grid_subset,
256+
space::all__space,
257+
subset::all__grid_subset,
258258
value_field::Symbol=:values
259-
) where {T <: edge_profiles__prop_on_subset}
259+
) where {T <: all__grid_subset_prop}
260260
261261
Example:
262262
@@ -267,21 +267,21 @@ get_electron_density = interp(dd.edge_profiles.ggd[1].electrons.density, space,
267267
"""
268268
function interp(
269269
prop_arr::AbstractVector{T},
270-
space::IMASdd.edge_profiles__grid_ggd___space,
271-
subset::IMASdd.edge_profiles__grid_ggd___grid_subset,
270+
space::all__space,
271+
subset::all__grid_subset,
272272
value_field::Symbol=:values,
273-
) where {T <: edge_profiles__prop_on_subset}
273+
) where {T <: all__grid_subset_prop}
274274
prop = get_prop_with_grid_subset_index(prop_arr, subset.identifier.index)
275275
return interp(getfield(prop, value_field), space, subset)
276276
end
277277

278278
"""
279279
interp(
280280
prop_arr::AbstractVector{T},
281-
grid_ggd::IMASdd.edge_profiles__grid_ggd,
281+
grid_ggd::all__grid_ggd,
282282
grid_subset_index::Int,
283283
value_field::Symbol=:values
284-
) where {T <: edge_profiles__prop_on_subset}
284+
) where {T <: all__grid_subset_prop}
285285
286286
Example:
287287
@@ -291,17 +291,17 @@ get_n_e_sep = interp(dd.edge_profiles.ggd[1].electrons.density, grid_ggd, 16)
291291
"""
292292
function interp(
293293
prop_arr::AbstractVector{T},
294-
grid_ggd::IMASdd.edge_profiles__grid_ggd,
294+
grid_ggd::all__grid_ggd,
295295
grid_subset_index::Int,
296296
value_field::Symbol=:values,
297-
) where {T <: edge_profiles__prop_on_subset}
297+
) where {T <: all__grid_subset_prop}
298298
prop = get_prop_with_grid_subset_index(prop_arr, grid_subset_index)
299299
subset = get_grid_subset(grid_ggd, grid_subset_index)
300300
space = grid_ggd.space[subset.element[1].object[1].space]
301301
return interp(getfield(prop, value_field), space, subset)
302302
end
303303

304-
function get_TPS_mats(grid_ggd::IMASdd.edge_profiles__grid_ggd, grid_subset_index::Int)
304+
function get_TPS_mats(grid_ggd::all__grid_ggd, grid_subset_index::Int)
305305
subset = get_grid_subset(grid_ggd, grid_subset_index)
306306
space = grid_ggd.space[subset.element[1].object[1].space]
307307
return get_TPS_mats(space, subset)
@@ -313,7 +313,7 @@ end
313313
TPS_mats::Tuple{Matrix{U}, Matrix{U}, Matrix{U}, Vector{Tuple{U, U}}},
314314
grid_subset_index::Int,
315315
value_field::Val{V}=Val(:values),
316-
) where {T <: edge_profiles__prop_on_subset, U <: Real, V}
316+
) where {T <: all__grid_subset_prop, U <: Real, V}
317317
318318
Same use case as above but allows one to reuse previously calculated TPS matrices.
319319
@@ -335,7 +335,7 @@ function interp(
335335
TPS_mats::Tuple{Matrix{U}, Matrix{U}, Matrix{U}, Vector{Tuple{U, U}}},
336336
grid_subset_index::Int,
337337
value_field::Val{V}=Val(:values),
338-
) where {T <: edge_profiles__prop_on_subset, U <: Real, V}
338+
) where {T <: all__grid_subset_prop, U <: Real, V}
339339
prop = get_prop_with_grid_subset_index(prop_arr, grid_subset_index)
340340
field = getfield(prop, V)
341341
return interp(field, TPS_mats)

0 commit comments

Comments
 (0)