@@ -37,7 +37,7 @@ dt = 0.1
37
37
# Neural network
38
38
chain = FastChain (FastDense (1 ,12 ,Flux. σ),FastDense (12 ,1 ))
39
39
40
- strategy = NeuralPDE. GridTraining (dt )
40
+ strategy = NeuralPDE. QuadratureTraining ( )
41
41
discretization = NeuralPDE. PhysicsInformedNN (chain,
42
42
strategy;
43
43
init_params = nothing ,
@@ -160,8 +160,7 @@ function run_2d_poisson_equation(strategy)
160
160
res = GalacticOptim. solve (prob, ADAM (0.01 ); cb = cb, maxiters= 2 )
161
161
end
162
162
163
- algs = [CubaVegas (), CubaSUAVE (),HCubatureJL (), CubatureJLh (), CubatureJLp ()]
164
- # CubaDivonne(),CubaCuhre() doesn't work with dim = 2
163
+ algs = [HCubatureJL (), CubatureJLh (), CubatureJLp (),CubaCuhre ()]
165
164
for alg in algs
166
165
strategy = NeuralPDE. QuadratureTraining (quadrature_alg = alg,reltol= 1e-8 ,abstol= 1e-8 ,maxiters= 600 )
167
166
run_2d_poisson_equation (strategy)
@@ -232,12 +231,12 @@ domains = [x ∈ IntervalDomain(0.0,1.0), y ∈ IntervalDomain(0.0,1.0)]
232
231
# Neural network
233
232
chain1 = FastChain (FastDense (2 ,10 ,Flux. σ),FastDense (10 ,1 ))
234
233
chain2 = FastChain (FastDense (2 ,10 ,Flux. σ),FastDense (10 ,1 ))
235
-
236
- discretization = NeuralPDE. PhysicsInformedNN ([chain1,chain2],NeuralPDE . GridTraining ([ 0.1 , 0.1 ]) )
234
+ strategy = NeuralPDE . QuadratureTraining (quadrature_alg = CubaCuhre (),reltol = 1e-4 ,abstol = 1e-3 ,maxiters = 20 )
235
+ discretization = NeuralPDE. PhysicsInformedNN ([chain1,chain2],strategy )
237
236
pde_system = PDESystem (eqs,bcs,domains,[x,y],[u1,u2])
238
237
prob = NeuralPDE. discretize (pde_system,discretization)
239
238
240
- res = GalacticOptim. solve (prob,Optim. BFGS (); cb = cb, maxiters= 600 )
239
+ res = GalacticOptim. solve (prob,Optim. BFGS (); cb = cb, maxiters= 300 )
241
240
phi = discretization. phi
242
241
243
242
analytic_sol_func (x,y) = [1 / 3 * (6 x - y), 1 / 2 * (6 x - y)]
@@ -250,7 +249,7 @@ sep = [acum[i]+1 : acum[i+1] for i in 1:length(acum)-1]
250
249
minimizers = [res. minimizer[s] for s in sep]
251
250
u_predict = [[phi[i]([x,y],minimizers[i])[1 ] for x in xs for y in ys] for i in 1 : 2 ]
252
251
253
- @test u_predict ≈ u_real atol = 10 .0
252
+ @test u_predict ≈ u_real atol = 2 .0
254
253
255
254
# p1 =plot(xs, ys, u_predict, st=:surface);
256
255
# p2 = plot(xs, ys, u_real, st=:surface);
@@ -300,19 +299,18 @@ train_sets = NeuralPDE.generate_training_sets(domains,dx,bcs,indvars,depvars)
300
299
pde_train_set,bcs_train_set,train_set = train_sets
301
300
pde_bounds, bcs_bounds = NeuralPDE. get_bounds (domains,bcs,indvars,depvars)
302
301
303
- quadrature_strategy = NeuralPDE. QuadratureTraining (quadrature_alg= HCubatureJL (),reltol= 1e-3 ,abstol= 1e-3 ,maxiters= 20 )
304
- τp = 1 / 100
302
+ quadrature_strategy = NeuralPDE. QuadratureTraining (quadrature_alg= CubaCuhre (),reltol= 1e-4 ,abstol= 1e-3 ,maxiters= 20 )
305
303
pde_loss_function = NeuralPDE. get_loss_function (_pde_loss_function,
306
304
pde_bounds,
307
305
quadrature_strategy;
308
- τ = τp )
306
+ τ = 1 / 100 )
309
307
310
308
311
- grid_strategy = NeuralPDE. GridTraining (dx )
309
+ quadrature_strategy = NeuralPDE. QuadratureTraining (quadrature_alg = HCubatureJL (),reltol = 1e-2 ,abstol = 1e-1 ,maxiters = 5 )
312
310
bc_loss_function = NeuralPDE. get_loss_function (_bc_loss_functions,
313
- bcs_train_set ,
314
- grid_strategy ;
315
- τ = nothing )
311
+ bcs_bounds ,
312
+ quadrature_strategy ;
313
+ τ = 1 / 20 )
316
314
317
315
function loss_function_ (θ,p)
318
316
return pde_loss_function (θ) + bc_loss_function (θ)
321
319
f_ = OptimizationFunction (loss_function_, GalacticOptim. AutoZygote ())
322
320
prob = GalacticOptim. OptimizationProblem (f_, initθ)
323
321
324
- res = GalacticOptim. solve (prob,Optim. BFGS (); cb = cb, maxiters= 400 )
322
+ cb_ = function (p,l)
323
+ println (" Current losses are: " , pde_loss_function (p), " , " , bc_loss_function (p))
324
+ return false
325
+ end
326
+
327
+ res = GalacticOptim. solve (prob,Optim. BFGS (); cb = cb_, maxiters= 400 )
325
328
326
329
xs,ts = [domain. domain. lower: dx: domain. domain. upper for domain in domains]
327
330
analytic_sol_func (x,t) = sum ([(8 / (k^ 3 * pi ^ 3 )) * sin (k* pi * x)* cos (C* k* pi * t) for k in 1 : 2 : 50000 ])
0 commit comments