comparison DiffOps/src/laplace.jl @ 285:e21dcda55163 boundary_conditions

Add type representing an unknown dimension in the domain of tensormappings
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Fri, 19 Jun 2020 12:20:31 +0200
parents 0b8e041a1873
children 7247e85dc1e8
comparison
equal deleted inserted replaced
284:0b8e041a1873 285:e21dcda55163
100 100
101 # TODO: This is obviouly strange. Is domain_size just discarded? Is there a way to avoid storing grid in BoundaryValue? 101 # TODO: This is obviouly strange. Is domain_size just discarded? Is there a way to avoid storing grid in BoundaryValue?
102 # Can we give special treatment to TensorMappings that go to a higher dim? 102 # Can we give special treatment to TensorMappings that go to a higher dim?
103 function LazyTensors.range_size(e::BoundaryValue{T}, domain_size::NTuple{1,Integer}) where T 103 function LazyTensors.range_size(e::BoundaryValue{T}, domain_size::NTuple{1,Integer}) where T
104 if dim(e.bId) == 1 104 if dim(e.bId) == 1
105 return (missing, domain_size[1]) 105 return (UnknownDim, domain_size[1])
106 elseif dim(e.bId) == 2 106 elseif dim(e.bId) == 2
107 return (domain_size[1], missing) 107 return (domain_size[1], UnknownDim)
108 end 108 end
109 end 109 end
110 LazyTensors.domain_size(e::BoundaryValue{T}, range_size::NTuple{2,Integer}) where T = (range_size[3-dim(e.bId)],) 110 LazyTensors.domain_size(e::BoundaryValue{T}, range_size::NTuple{2,Integer}) where T = (range_size[3-dim(e.bId)],)
111 # TODO: Make a nicer solution for 3-dim(e.bId) 111 # TODO: Make a nicer solution for 3-dim(e.bId)
112 112
137 137
138 # TODO: This is obviouly strange. Is domain_size just discarded? Is there a way to avoid storing grid in BoundaryValue? 138 # TODO: This is obviouly strange. Is domain_size just discarded? Is there a way to avoid storing grid in BoundaryValue?
139 # Can we give special treatment to TensorMappings that go to a higher dim? 139 # Can we give special treatment to TensorMappings that go to a higher dim?
140 function LazyTensors.range_size(e::NormalDerivative, domain_size::NTuple{1,Integer}) 140 function LazyTensors.range_size(e::NormalDerivative, domain_size::NTuple{1,Integer})
141 if dim(e.bId) == 1 141 if dim(e.bId) == 1
142 return (missing, domain_size[1]) 142 return (UnknownDim, domain_size[1])
143 elseif dim(e.bId) == 2 143 elseif dim(e.bId) == 2
144 return (domain_size[1], missing) 144 return (domain_size[1], UnknownDim)
145 end 145 end
146 end 146 end
147 LazyTensors.domain_size(e::NormalDerivative, range_size::NTuple{2,Integer}) = (range_size[3-dim(e.bId)],) 147 LazyTensors.domain_size(e::NormalDerivative, range_size::NTuple{2,Integer}) = (range_size[3-dim(e.bId)],)
148 148
149 # TODO: Not type stable D:< 149 # TODO: Not type stable D:<