Exemplo n.º 1
0
nonlintermtest.copy_(
    torch.linspace(nonlinear_interp_mesh_bound[0],
                   nonlinear_interp_mesh_bound[1], 2000))
testresults = nonlinpdelearner.nonlinearfitter(Variable(nonlintermtest))
testresults = testresults.data.cpu().numpy()
nonlintermtest = nonlintermtest.cpu().numpy()
a = pltnewaxis()
a.plot(nonlintermtest, testresults)
a.plot(nonlintermtest, np.sin(nonlintermtest) * nonlinear_coefficient)

#%% show prediction
trans = torchvision.transforms.Compose([
    pdedata.DownSample(5, 'Dirichlet'),
    pdedata.ToTensor(),
    pdedata.ToPrecision(precision),
    pdedata.AddNoise(start_noise_level, end_noise_level)
])
d = pdedata.singlenonlinear2d(np.array(range(1, teststepnum + 1)) * dt,
                              mesh_size=mesh_size * 5,
                              initfreq=initfreq,
                              diffusivity=diffusivity,
                              nonlinear_coefficient=nonlinear_coefficient,
                              transform=trans)
sample = pdedata.ToVariable()(d[0])
xy = torch.stack([sample['x'], sample['y']], dim=2)
u0 = sample['u0']
uT = sample['uT']
u0 = (u0.cuda(gpu) if gpu >= 0 else u0)
nonlinpdelearner.id.MomentBank.moment.volatile = True
nonlinpdelearner.xy = xy  # set xy for pde-net
F = pltnewmeshbar((3, 5))
Exemplo n.º 2
0
    coe = eval('linpdelearner.coe'+str(i))
    coe = coe().data.cpu().numpy()
    ax = a.flatten()[i]
    b = ax.imshow(coe, cmap='jet', vmin=-5, vmax=5)
    ax.set_xticks([])
    ax.set_yticks([])
    ax.set_title('C'+str(k-j)+str(j), fontsize=20)
    c = ax.figure.colorbar(b,ax=ax)
    c.set_ticks([-5,-2.5,0,2.5,5])
    j += 1
    if j > k:
        k += 1
        j = 0

#%% show prediction
trans = torchvision.transforms.Compose([pdedata.DownSample(5), pdedata.ToTensor(), pdedata.ToPrecision(precision), pdedata.AddNoise(start_noise_level, end_noise_level)])
d = pdedata.variantcoelinear2d(np.array(range(1,teststepnum+1))*dt, mesh_size=mesh_size*5, initfreq=initfreq, variant_coe_magnitude=variant_coe_magnitude, transform=trans)
sample = pdedata.ToVariable()(d[0])
xy = torch.stack([sample['x'],sample['y']], dim=2)
u0 = sample['u0']
uT = sample['uT']
u0 = (u0.cuda(gpu) if gpu>=0 else u0)
linpdelearner.id.MomentBank.moment.volatile = True
linpdelearner.xy = xy # set xy for pde-net
F = pltnewmeshbar((3,5))
i = 0
for j in (0,20,40,60,80):
    if j == 0:
        u_true = u0.data.cpu().numpy()
        u = u_true
    else: