@@ -27,6 +27,7 @@ struct DiscreteSpace{N,M}
2727 Iaxies
2828 Igrid
2929 Iedge
30+ x2i
3031end
3132
3233nparams (:: DiscreteSpace{N,M} ) where {N,M} = N
@@ -52,7 +53,8 @@ map_symbolic_to_discrete(II::CartesianIndex, s::DiscreteSpace{N,M}) where {N,M}
5253
5354# TODO : Allow other grids
5455
55- function DiscreteSpace (domain, depvars, indvars, nottime, grid_align, discretization)
56+ function DiscreteSpace (domain, depvars, indvars, nottime, discretization)
57+ grid_align = discretization. grid_align
5658 t = discretization. time
5759 nspace = length (nottime)
5860 # Discretize space
@@ -78,7 +80,7 @@ function DiscreteSpace(domain, depvars, indvars, nottime, grid_align, discretiza
7880 grid = map (nottime) do x
7981 xdomain = domain[findfirst (d -> isequal (x, d. variables), domain)]
8082 dx = discretization. dxs[findfirst (dxs -> isequal (x, dxs[1 ]. val), discretization. dxs)][2 ]
81- dx isa Number ? x => ((DomainSets. infimum (xdomain. domain)- dx/ 2 ): dx: (DomainSets. supremum (xdomain. domain)+ dx/ 2 ) : x => dx
83+ dx isa Number ? ( x => ((DomainSets. infimum (xdomain. domain)- dx/ 2 ): dx: (DomainSets. supremum (xdomain. domain)+ dx/ 2 )) ) : x => dx
8284 end
8385 # TODO : allow depvar-specific center/edge choice?
8486 end
@@ -94,18 +96,18 @@ function DiscreteSpace(domain, depvars, indvars, nottime, grid_align, discretiza
9496 u => [u for II in s. Igrid]
9597 else
9698 sym = nameof (operation (u))
97- u => collect (first (@variables $ sym[collect (axes (g. second)[1 ] for g in grid)... ](t)))
99+ u => collect (first (@variables $ sym[collect (axes (g. second)[1 ] for g in grid)... ](t)))
98100 end
99101 end
100102
101103
102104 # Build symbolic maps for boundaries
103- Iedge = reduce (vcat, [[vcat ([Colon () for j = 1 : i- 1 ], 1 , [Colon () for j = i+ 1 : nspace]),
104- vcat ([Colon () for j = 1 : i- 1 ], length (axies[i]. second), [Colon () for j = i+ 1 : nspace])] for i = 1 : nspace])
105+ Iedge = reduce (vcat, [[Igrid[ vcat ([Colon () for j = 1 : i- 1 ], 1 , [Colon () for j = i+ 1 : nspace])] ,
106+ Igrid[ vcat ([Colon () for j = 1 : i- 1 ], length (axies[i]. second), [Colon () for j = i+ 1 : nspace])] ] for i = 1 : nspace])
105107
106108 nottime2dim = [nottime[i] => i for i in 1 : nspace]
107109 dim2nottime = [i => nottime[i] for i in 1 : nspace]
108- return DiscreteSpace {nspace,length(depvars)} (depvars, Dict (depvarsdisc), nottime, indvars, Dict (axies), Dict (grid), Dict (dxs), Iaxies, Igrid, Iedge)
110+ return DiscreteSpace {nspace,length(depvars)} (depvars, Dict (depvarsdisc), nottime, indvars, Dict (axies), Dict (grid), Dict (dxs), Iaxies, Igrid, Iedge, nottime2dim )
109111end
110112
111113
0 commit comments