Skip to content
1 change: 1 addition & 0 deletions pinballrt/camera.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ def emit_rays(self, x, y, nu, nx, ny, pixel_size):
ray_list.p = wp.zeros(xflat.size, dtype=float)
if self.grid.n_dust_abundances > 0:
ray_list.dust_abundances = wp.array2d(np.zeros((xflat.size, self.grid.n_dust_abundances)), dtype=float)
ray_list.opacities_out_of_date = wp.zeros(xflat.size, dtype=bool)

ray_list.radius = wp.array(np.zeros(xflat.shape), dtype=float)
if isinstance(self.grid, LogUniformSphericalGrid):
Expand Down
23 changes: 15 additions & 8 deletions pinballrt/dust.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,8 @@ def ml_kabs(self, p=None, amax=None, nu=None, abundances=None, photon_list=None,
samples += (torch.log10(nu),)
samples = torch.transpose(torch.vstack(samples), 0, 1)

kabs = 10.**self.kabs_y_scaler.inverse_transform(self.kabs_model(self.kabs_x_scaler.transform(samples))).detach().flatten()
with torch.no_grad():
kabs = 10.**self.kabs_y_scaler.inverse_transform(self.kabs_model(self.kabs_x_scaler.transform(samples))).detach().flatten()

return kabs

Expand Down Expand Up @@ -212,7 +213,8 @@ def ml_ksca(self, p=None, amax=None, nu=None, abundances=None, photon_list=None,
samples += (torch.log10(nu),)
samples = torch.transpose(torch.vstack(samples), 0, 1)

ksca = 10.**self.ksca_y_scaler.inverse_transform(self.ksca_model(self.ksca_x_scaler.transform(samples))).detach().flatten()
with torch.no_grad():
ksca = 10.**self.ksca_y_scaler.inverse_transform(self.ksca_model(self.ksca_x_scaler.transform(samples))).detach().flatten()

return ksca

Expand Down Expand Up @@ -246,8 +248,9 @@ def ml_kext(self, p=None, amax=None, nu=None, abundances=None, photon_list=None,
samples += (torch.log10(nu),)
samples = torch.transpose(torch.vstack(samples), 0, 1)

return 10.**self.kabs_y_scaler.inverse_transform(self.kabs_model(self.kabs_x_scaler.transform(samples))).detach().flatten() + \
10.**self.ksca_y_scaler.inverse_transform(self.ksca_model(self.ksca_x_scaler.transform(samples))).detach().flatten()
with torch.no_grad():
return 10.**self.kabs_y_scaler.inverse_transform(self.kabs_model(self.kabs_x_scaler.transform(samples))).detach().flatten() + \
10.**self.ksca_y_scaler.inverse_transform(self.ksca_model(self.ksca_x_scaler.transform(samples))).detach().flatten()

def absorb(self, temperature):
nphotons = frequency.numpy().size
Expand Down Expand Up @@ -280,7 +283,8 @@ def random_nu_ml(self, p, amax, temperature, abundances=None):
samples = torch.transpose(torch.vstack(samples), 0, 1)
test_x = self.random_nu_x_scaler.transform(samples)

log10_nu = torch.clamp(self.random_nu_y_scaler.inverse_transform(self.random_nu_model(test_x).detach()), self.log10_nu_min, self.log10_nu_max)
with torch.no_grad():
log10_nu = torch.clamp(self.random_nu_y_scaler.inverse_transform(self.random_nu_model(test_x).detach()), self.log10_nu_min, self.log10_nu_max)

return 10.**log10_nu.numpy()

Expand Down Expand Up @@ -322,9 +326,11 @@ def random_nu(self, photon_list, subset=None):
test_x = TensorDataset(test_x)
loader = DataLoader(test_x, batch_size=250000)

log10_nu = torch.cat([torch.clamp(self.random_nu_y_scaler.inverse_transform(self.random_nu_model(X).detach()), self.log10_nu_min, self.log10_nu_max) for X, in loader], 0)
with torch.no_grad():
log10_nu = torch.cat([torch.clamp(self.random_nu_y_scaler.inverse_transform(self.random_nu_model(X).detach()), self.log10_nu_min, self.log10_nu_max) for X, in loader], 0)
else:
log10_nu = torch.clamp(self.random_nu_y_scaler.inverse_transform(self.random_nu_model(test_x).detach()), self.log10_nu_min, self.log10_nu_max)
with torch.no_grad():
log10_nu = torch.clamp(self.random_nu_y_scaler.inverse_transform(self.random_nu_model(test_x).detach()), self.log10_nu_min, self.log10_nu_max)

nu = wp.from_torch(10.**torch.flatten(log10_nu))

Expand All @@ -343,7 +349,8 @@ def ml_planck_mean_opacity(self, p, amax, temperature, abundances=()):

samples = torch.transpose(torch.vstack(samples), 0, 1)

return 10.**self.pmo_y_scaler.inverse_transform(self.pmo_model(self.pmo_x_scaler.transform(samples))).detach().flatten()
with torch.no_grad():
return 10.**self.pmo_y_scaler.inverse_transform(self.pmo_model(self.pmo_x_scaler.transform(samples))).detach().flatten()

def ml_step(self, photon_list, s, iphotons):
nphotons = iphotons.size(0)
Expand Down
Loading
Loading