Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 74 additions & 53 deletions tofu/data/_comp.py
Original file line number Diff line number Diff line change
Expand Up @@ -424,11 +424,13 @@ def func(pts, vect=None, t=None, ntall=ntall,
tbinall=tbinall,
idref1d=idref1d,
idref2d=idref2d)[1:-2]
for ii in range(0,ntall):
for ii in range(0, ntall):
ind = indt == indtu[ii]
val[ind,...] = mplTriLinInterp(mpltri,
vquant[indtq[ii],:],
trifinder=trifind)(r,z).filled(fill_value)
val[ind, ...] = mplTriLinInterp(
mpltri,
vquant[indtq[indtu[ii]], :],
trifinder=trifind
)(r, z).filled(fill_value)
return val, t

# --------------------
Expand Down Expand Up @@ -456,9 +458,10 @@ def func(pts, vect=None, t=None, ntall=ntall,
tbinall=tbinall,
idref1d=idref1d,
idref2d=idref2d)[1:-2]
for ii in range(0,ntall):
for ii in range(0, ntall):
ind = indt == indtu[ii]
val[ind,indok] = vquant[indtq[ii],indpts[indok]]
val[ind, indok] = vquant[indtq[indtu[ii]],
indpts[indok]]
return val, t


Expand Down Expand Up @@ -492,30 +495,34 @@ def func(pts, vect=None, t=None, ntall=ntall,

# interpolate 1d
# This is reasonable (~0.15 s)
val[ii,...] = scpinterp.interp1d(vr1[indtr1[ii],:],
vquant[indtq[ii],:],
kind='linear',
bounds_error=False,
fill_value=fill_value)(np.asarray(vii))
val[ii, ...] = scpinterp.interp1d(
vr1[indtr1[ii], :],
vquant[indtq[ii], :],
kind='linear',
bounds_error=False,
fill_value=fill_value
)(np.asarray(vii))
t = tall
else:
out = plasma._get_indtu(t=t, tall=tall, tbinall=tbinall,
idref1d=idref1d, idref2d=idref2d,
indtr1=indtr1, indtr2=indtr2)[1:]
ntall, indt, indtu, indtr1, indtr2 = out
for ii in range(0,ntall):
for ii in range(0, ntall):
# get ref values for mapping
vii = mplTriLinInterp(mpltri,
vr2[indtr2[ii],:],
trifinder=trifind)(r,z)
vr2[indtr2[ii], :],
trifinder=trifind)(r, z)

# interpolate 1d
ind = indt == indtu[ii]
val[ind,...] = scpinterp.interp1d(vr1[indtr1[ii],:],
vquant[indtq[ii],:],
kind='linear',
bounds_error=False,
fill_value=fill_value)(np.asarray(vii))
val[ind, ...] = scpinterp.interp1d(
vr1[indtr1[indtu[ii]], :],
vquant[indtq[indtu[ii]], :],
kind='linear',
bounds_error=False,
fill_value=fill_value
)(np.asarray(vii))
val[np.isnan(val)] = fill_value

return val, t
Expand All @@ -538,11 +545,13 @@ def func(pts, vect=None, t=None, ntall=ntall,
if t is None:
for ii in range(0,ntall):
# interpolate 1d
val[ii,indok] = scpinterp.interp1d(vr1[indtr1[ii],:],
vquant[indtq[ii],:],
kind='linear',
bounds_error=False,
fill_value=fill_value)(vr2[indtr2[ii],indpts[indok]])
val[ii, indok] = scpinterp.interp1d(
vr1[indtr1[ii], :],
vquant[indtq[ii], :],
kind='linear',
bounds_error=False,
fill_value=fill_value
)(vr2[indtr2[ii], indpts[indok]])
t = tall
else:
out = plasma._get_indtu(t=t, tall=tall, tbinall=tbinall,
Expand All @@ -552,11 +561,13 @@ def func(pts, vect=None, t=None, ntall=ntall,
for ii in range(0,ntall):
# interpolate 1d
ind = indt == indtu[ii]
val[ind,indok] = scpinterp.interp1d(vr1[indtr1[ii],:],
vquant[indtq[ii],:],
kind='linear',
bounds_error=False,
fill_value=fill_value)(vr2[indtr2[ii],indpts[indok]])
val[ind, indok] = scpinterp.interp1d(
vr1[indtr1[indtu[ii]], :],
vquant[indtq[indtu[ii]], :],
kind='linear',
bounds_error=False,
fill_value=fill_value
)(vr2[indtr2[ii], indpts[indok]])
return val, t
return func

Expand Down Expand Up @@ -610,34 +621,42 @@ def func(pts, vect=None, t=None, ntall=ntall,
for ii in range(0,ntall):
valR[ii,...] = mplTriLinInterp(mpltri,
vq2dR[indtq[ii],:],
trifinder=trifind)(r,z)
trifinder=trifind)(r, z)
valPhi[ii,...] = mplTriLinInterp(mpltri,
vq2dPhi[indtq[ii],:],
trifinder=trifind)(r,z)
trifinder=trifind)(r, z)
valZ[ii,...] = mplTriLinInterp(mpltri,
vq2dZ[indtq[ii],:],
trifinder=trifind)(r,z)
trifinder=trifind)(r, z)
t = tall
else:
ntall, indt, indtu = plasma._get_indtu(t=t, tall=tall,
tbinall=tbinall)[1:4]
for ii in range(0,ntall):
ind = indt == indtu[ii]
valR[ind,...] = mplTriLinInterp(mpltri,
vq2dR[indtq[ii],:],
trifinder=trifind)(r,z)
valPhi[ind,...] = mplTriLinInterp(mpltri,
vq2dPhi[indtq[ii],:],
trifinder=trifind)(r,z)
valZ[ind,...] = mplTriLinInterp(mpltri,
vq2dZ[indtq[ii],:],
trifinder=trifind)(r,z)
valR[ind, ...] = mplTriLinInterp(
mpltri,
vq2dR[indtq[indtu[ii]], :],
trifinder=trifind
)(r, z)
valPhi[ind, ...] = mplTriLinInterp(
mpltri,
vq2dPhi[indtq[indtu[ii]], :],
trifinder=trifind
)(r, z)
valZ[ind, ...] = mplTriLinInterp(
mpltri,
vq2dZ[indtq[indtu[ii]], :],
trifinder=trifind
)(r, z)


if Type == 'sca':
val = valR*vR[None,:] + valPhi*vPhi[None,:] + valZ*vZ[None,:]
val = (valR*vR[None, :] + valPhi*vPhi[None, :]
+ valZ*vZ[None, :])
elif Type == 'abs(sca)':
val = np.abs(valR*vR[None,:] + valPhi*vPhi[None,:] + valZ*vZ[None,:])
val = np.abs(valR*vR[None, :] + valPhi*vPhi[None, :]
+ valZ*vZ[None, :])

val[np.isnan(val)] = fill_value
return val, t
Expand Down Expand Up @@ -668,28 +687,30 @@ def func(pts, vect=None, t=None, ntall=ntall,
valZ = np.full(tuple(shapeval), fill_value)

# Interpolate
indpts = trifind(r,z)
indpts = trifind(r, z)
if t is None:
for ii in range(0,ntall):
valR[ii,...] = vq2dR[indtq[ii],indpts]
valPhi[ii,...] = vq2dPhi[indtq[ii],indpts]
valZ[ii,...] = vq2dZ[indtq[ii],indpts]
valR[ii, ...] = vq2dR[indtq[ii], indpts]
valPhi[ii, ...] = vq2dPhi[indtq[ii], indpts]
valZ[ii, ...] = vq2dZ[indtq[ii], indpts]
t = tall
else:
ntall, indt, indtu = plasma._get_indtu(t=t, tall=tall,
tbinall=tbinall,
idref1d=idref1d,
idref2d=idref2d)[1:]
for ii in range(0,ntall):
for ii in range(0, ntall):
ind = indt == indtu[ii]
valR[ind,...] = vq2dR[indtq[ii],indpts]
valPhi[ind,...] = vq2dPhi[indtq[ii],indpts]
valZ[ind,...] = vq2dZ[indtq[ii],indpts]
valR[ind, ...] = vq2dR[indtq[indtu[ii]], indpts]
valPhi[ind, ...] = vq2dPhi[indtq[indtu[ii]], indpts]
valZ[ind, ...] = vq2dZ[indtq[indtu[ii]], indpts]

if Type == 'sca':
val = valR*vR[None,:] + valPhi*vPhi[None,:] + valZ*vZ[None,:]
val = (valR*vR[None, :] + valPhi*vPhi[None, :]
+ valZ*vZ[None, :])
elif Type == 'abs(sca)':
val = np.abs(valR*vR[None,:] + valPhi*vPhi[None,:] + valZ*vZ[None,:])
val = np.abs(valR*vR[None, :] + valPhi*vPhi[None, :]
+ valZ*vZ[None, :])
val[np.isnan(val)] = fill_value
return val, t
return func
2 changes: 1 addition & 1 deletion tofu/version.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# Do not edit, pipeline versioning governed by git tags!
__version__ = '1.4.2-alpha2-13-g7db6643'
__version__ = '1.4.2-alpha2-20-gb97c0f0'