@@ -75,6 +75,8 @@ def simulate(mesh, scheme, res, **kwargs):
75
75
absolute phase error, if not given, data['iperr'] or noiseLevel is used
76
76
contactImpedances float|iterables
77
77
contact impedances for being used with CEM model
78
+ current : float
79
+ current to be assumed
78
80
79
81
Returns
80
82
-------
@@ -170,9 +172,9 @@ def simulate(mesh, scheme, res, **kwargs):
170
172
171
173
ret = pg .DataContainerERT (scheme )
172
174
# just to be sure that we don't work with artifacts
173
- ret ['u' ] * = 0.0
174
- ret ['i' ] * = 0.0
175
- ret ['r' ] * = 0.0
175
+ ret ['u' ] = 0.0
176
+ ret ['i' ] = 0.0
177
+ ret ['r' ] = 0.0
176
178
177
179
if isArrayData :
178
180
rhoa = np .zeros ((len (res ), scheme .size ()))
@@ -193,11 +195,13 @@ def simulate(mesh, scheme, res, **kwargs):
193
195
if fop .complex ():
194
196
pg .critical ('Implement me' )
195
197
else :
196
- ret ["u" ] = dMap .data (scheme )
197
- ret ["i" ] = np .ones (ret .size ())
198
+ ret ['r' ] = dMap .data (scheme )
199
+ ret ['i' ] = kwargs .pop ("current" , 1.0 )
200
+ ret ['u' ] = ret ['r' ] * ret ['i' ]
198
201
199
202
if returnFields :
200
203
return pg .Matrix (fop .solution ())
204
+
201
205
return ret
202
206
else :
203
207
if fop .complex ():
@@ -237,15 +241,17 @@ def simulate(mesh, scheme, res, **kwargs):
237
241
absoluteCurrent = 1 ))
238
242
if verbose :
239
243
pg .info ("Data error estimate (min:max) " ,
240
- min (ret ( 'err' )) , ":" , max (ret ( 'err' ) ))
244
+ min (ret [ 'err' ]) , ":" , max (ret [ 'err' ] ))
241
245
242
246
rhoa *= 1. + pg .randn (ret .size (), seed = seed ) * ret ('err' )
243
- ret .set ('rhoa' , rhoa )
247
+ ret ['rhoa' ] = rhoa
248
+ if ret .allNonZero ('k' ): # also provide r if user changes k later
249
+ ret ['r' ] = ret ['rhoa' ] / ret ['k' ]
244
250
245
251
ipError = None
246
252
if phia is not None :
247
253
if scheme .allNonZero ('iperr' ):
248
- ipError = scheme ( 'iperr' )
254
+ ipError = scheme [ 'iperr' ]
249
255
else :
250
256
# np.abs(self.data("phia") +TOLERANCE) * 1e-4absoluteError
251
257
if noiseLevel > 0.5 :
@@ -254,7 +260,7 @@ def simulate(mesh, scheme, res, **kwargs):
254
260
if 'phiErr' in kwargs :
255
261
ipError = np .ones (ret .size ()) * kwargs .pop ('phiErr' ) / 1000
256
262
else :
257
- ipError = abs (ret [" phia" ]) * noiseLevel
263
+ ipError = abs (ret [' phia' ]) * noiseLevel
258
264
259
265
if verbose :
260
266
print ("Data IP abs error estimate (min:max) " ,
@@ -272,6 +278,7 @@ def simulate(mesh, scheme, res, **kwargs):
272
278
else :
273
279
return rhoa
274
280
281
+ ret ['valid' ] = 1
275
282
if returnFOP :
276
283
return ret , fop
277
284
else :
0 commit comments