├── .dockerignore ├── .gitignore ├── Dockerfile ├── LICENSE ├── README.md ├── baselines ├── __init__.py ├── data.py ├── deepxde_deeponet.py ├── loss.py ├── model.py ├── pinns_ns_05s.py ├── pinns_ns_50s.py ├── sapinns-50s.py ├── sapinns.py ├── test.py ├── tqd_sapinns.py ├── tqd_utils.py ├── train_darcy.py ├── train_ns.py ├── unet3d.py └── utils.py ├── cavity_flow.py ├── configs ├── baseline │ ├── NS-50s-LAAF.yaml │ ├── NS-50s.yaml │ ├── Re500-05s-deeponet.yaml │ ├── Re500-pinns-05s-LAAF.yaml │ ├── Re500-pinns-05s-SA.yaml │ ├── Re500-pinns-05s.yaml │ └── Re500-pinns.yaml ├── finetune │ ├── Darcy-finetune.yaml │ ├── Re100-finetune-1s.yaml │ ├── Re200-finetune-1s.yaml │ ├── Re250-finetune-1s.yaml │ ├── Re300-finetune-1s.yaml │ ├── Re350-finetune-1s.yaml │ ├── Re400-finetune-1s.yaml │ ├── Re500-finetune-05s-2layer.yaml │ ├── Re500-finetune-05s-eqn.yaml │ ├── Re500-finetune-05s4C0.yaml │ ├── Re500-finetune-05s4C1.yaml │ ├── Re500-finetune-05s4C4.yaml │ ├── Re500-finetune-05s4k-2layer.yaml │ ├── Re500-finetune-05s4k1k.yaml │ ├── Re500-finetune-05s4k4-2layer.yaml │ ├── Re500-finetune-05s4k4k.yaml │ └── Re500-finetune-1s.yaml ├── instance │ ├── Re500-1_8-FNO.yaml │ ├── Re500-1_8-PINO-s.yaml │ └── Re500-1_8-PINO.yaml ├── ngc │ ├── Re500-1_8-dat0-PINO.yaml │ ├── Re500-1_8-dat200-PINO.yaml │ ├── Re500-1_8-dat40-PINO.yaml │ ├── Re500-1_8-dat400-PINO.yaml │ ├── Re500-1_8-dat80-PINO.yaml │ ├── Re500-1_8-dat800-PINO.yaml │ ├── Re500-1_8-res16-PINO.yaml │ └── Re500-1_8-res32-PINO.yaml ├── operator │ ├── Darcy-pretrain.yaml │ ├── Re500-05s-1000-FNO.yaml │ ├── Re500-05s-1000-PINO.yaml │ ├── Re500-05s-3000-FNO.yaml │ ├── Re500-05s-600-FNO.yaml │ ├── Re500-05s-600-PINO-xl.yaml │ ├── Re500-05s-600-PINO.yaml │ ├── Re500-05s-FNO.yaml │ ├── Re500-1_16-800-FNO-s.yaml │ ├── Re500-1_16-800-PINO-s.yaml │ ├── Re500-1_4-2000-FNO.yaml │ ├── Re500-1_8-0-PINO-s.yaml │ ├── Re500-1_8-1200-FNO.yaml │ ├── Re500-1_8-1200-PINO.yaml │ ├── Re500-1_8-200-FNO-s.yaml │ ├── Re500-1_8-2000-FNO-s.yaml │ ├── Re500-1_8-2000-FNO-xl.yaml │ ├── Re500-1_8-2000-PINO.yaml │ ├── Re500-1_8-2200-FNO-s.yaml │ ├── Re500-1_8-2200-PINO-s.yaml │ ├── Re500-1_8-800-FNO-s.yaml │ ├── Re500-1_8-800-FNO-s32.yaml │ ├── Re500-1_8-800-PINO-s.yaml │ ├── Re500-1_8-800-PINO-s16.yaml │ ├── Re500-1_8-800-PINO-s32.yaml │ ├── Re500-1_8-800-UNet.yaml │ ├── Re500-1_8-dat1.6k-PINO.yaml │ ├── Re500-1_8-dat400-FNO.yaml │ ├── Re500-1s-FNO.yaml │ ├── Re500-3000-FNO.yaml │ ├── Re500-3000-PINO.yaml │ ├── Re500-4000-FNO.yaml │ ├── Re500-FNO.yaml │ └── Re500-PINO.yaml ├── pretrain │ ├── Darcy-pretrain-deeponet.yaml │ ├── Darcy-pretrain.yaml │ ├── Re100-pretrain-1s.yaml │ ├── Re200-pretrain-1s.yaml │ ├── Re250-pretrain-1s.yaml │ ├── Re300-pretrain-1s.yaml │ ├── Re350-pretrain-1s.yaml │ ├── Re400-pretrain-1s.yaml │ ├── Re500-05s-deeponet.yaml │ ├── Re500-FNO-1s-100.yaml │ ├── Re500-FNO-1s-200.yaml │ ├── Re500-FNO-1s-400.yaml │ ├── Re500-PINO-1s-100-4v4.yaml │ ├── Re500-PINO-1s-200-4v4.yaml │ ├── Re500-PINO-1s-400-1v1.yaml │ ├── Re500-pretrain-05s-4C1.yaml │ ├── Re500-pretrain-05s-4C4.yaml │ ├── Re500-pretrain-05s-eqn.yaml │ ├── Re500-pretrain-1s.yaml │ └── burgers-pretrain.yaml ├── scratch │ ├── Re100-scratch-1s.yaml │ ├── Re200-scratch-1s.yaml │ ├── Re250-scratch-1s.yaml │ ├── Re300-scratch-1s.yaml │ ├── Re350-scratch-1s.yaml │ ├── Re400-scratch-1s.yaml │ ├── Re500-scratch-05s-new.yaml │ ├── Re500-scratch-05s.yaml │ ├── Re500-scratch-1s-progressive.yaml │ └── Re500-scratch-1s.yaml ├── test │ ├── Re500-05s-deeponet.yaml │ ├── Re500-05s-test.yaml │ ├── Re500-05s.yaml │ ├── Re500-1s-100.yaml │ ├── burgers.yaml │ ├── darcy-deeponet.yaml │ └── darcy.yaml └── transfer │ ├── Re100to100-1s.yaml │ ├── Re100to200-1s.yaml │ ├── Re100to250-1s.yaml │ ├── Re100to300-1s.yaml │ ├── Re100to350-1s.yaml │ ├── Re100to400-1s.yaml │ ├── Re100to500-1s.yaml │ ├── Re200to100-1s.yaml │ ├── Re200to200-1s.yaml │ ├── Re200to250-1s.yaml │ ├── Re200to300-1s.yaml │ ├── Re200to350-1s.yaml │ ├── Re200to400-1s.yaml │ ├── Re200to500-1s.yaml │ ├── Re250to100-1s.yaml │ ├── Re250to200-1s.yaml │ ├── Re250to250-1s.yaml │ ├── Re250to300-1s.yaml │ ├── Re250to350-1s.yaml │ ├── Re250to400-1s.yaml │ ├── Re250to500-1s.yaml │ ├── Re300to100-1s.yaml │ ├── Re300to200-1s.yaml │ ├── Re300to250-1s.yaml │ ├── Re300to300-1s.yaml │ ├── Re300to350-1s.yaml │ ├── Re300to400-1s.yaml │ ├── Re300to500-1s.yaml │ ├── Re350to100-1s.yaml │ ├── Re350to200-1s.yaml │ ├── Re350to250-1s.yaml │ ├── Re350to300-1s.yaml │ ├── Re350to350-1s.yaml │ ├── Re350to400-1s.yaml │ ├── Re350to500-1s.yaml │ ├── Re400to100-1s.yaml │ ├── Re400to200-1s.yaml │ ├── Re400to250-1s.yaml │ ├── Re400to300-1s.yaml │ ├── Re400to350-1s.yaml │ ├── Re400to400-1s.yaml │ ├── Re400to500-1s.yaml │ ├── Re500to100-1s.yaml │ ├── Re500to200-1s.yaml │ ├── Re500to250-1s.yaml │ ├── Re500to300-1s.yaml │ ├── Re500to350-1s.yaml │ ├── Re500to400-1s.yaml │ ├── Re500to500-05s-new.yaml │ ├── Re500to500-05s.yaml │ └── Re500to500-1s.yaml ├── deeponet.py ├── docs ├── pino-diagram4.png └── solver-pino-pinn.png ├── download_data.py ├── eval_operator.py ├── generate_data.py ├── inference.py ├── instance_opt.py ├── inverse-darcy-foward.py ├── inverse-darcy.py ├── models ├── FCN.py ├── __init__.py ├── basics.py ├── core.py ├── fourier1d.py ├── fourier2d.py ├── fourier3d.py ├── lowrank2d.py ├── tfno.py └── utils.py ├── pinns.py ├── prepare_data.py ├── profile-solver-legacy.py ├── profiler └── calmacs.py ├── run_pino2d.py ├── run_pino3d.py ├── run_solver.py ├── scripts ├── device1-finetune.sh ├── device2-finetune.sh ├── device3.sh ├── finetune-4k-2layer.sh ├── finetune-4k0.sh ├── finetune-4k1-2layer.sh ├── finetune-4k1.sh ├── finetune-4k4-2layer.sh ├── fnoRe500.sh ├── ngc_submit_pino.sh ├── ngc_test_submit_pino.sh ├── pretrain.sh ├── scratchRe500.sh ├── test-opt │ └── Re500-1_8.sh ├── train_dat0.sh ├── train_dat200.sh ├── train_dat40.sh ├── train_dat400.sh ├── train_dat80.sh ├── train_dat800.sh ├── train_res16.sh └── train_res32.sh ├── solver ├── __init__.py ├── kolmogorov_flow.py ├── legacy_solver.py ├── periodic.py ├── random_fields.py ├── rfsampler.py └── spectrum.py ├── train_PINO3d.py ├── train_burgers.py ├── train_darcy.py ├── train_no.py ├── train_operator.py ├── train_pino.py ├── train_unet.py └── train_utils ├── __init__.py ├── adam.py ├── data_utils.py ├── datasets.py ├── distributed.py ├── eval_2d.py ├── eval_3d.py ├── losses.py ├── negadam.py ├── train_2d.py ├── train_3d.py └── utils.py /.dockerignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | *.py 3 | wandb 4 | config 5 | docs 6 | models 7 | */*.py 8 | exp 9 | checkpoints 10 | */__pycache__/** -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | data 2 | log 3 | .vscode 4 | wandb 5 | **/__pycache__/** 6 | .idea 7 | figs 8 | checkpoints 9 | .ipynb_checkpoints 10 | *.ipynb 11 | *.pt 12 | *.pth 13 | tensordiffeq 14 | exp -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nvcr.io/nvidia/pytorch:22.09-py3 2 | RUN useradd -ms /bin/bash pino 3 | USER pino 4 | ENV PATH=/home/pino/.local/bin:$PATH 5 | RUN pip install --user \ 6 | wandb tqdm pyyaml -------------------------------------------------------------------------------- /baselines/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neuraloperator/physics_informed/3b6bc307c63c64057d0496753bf1af5f44ac5108/baselines/__init__.py -------------------------------------------------------------------------------- /baselines/deepxde_deeponet.py: -------------------------------------------------------------------------------- 1 | import random 2 | import deepxde as dde 3 | from baselines.data import NSdata 4 | 5 | ''' 6 | Training deepONet using deepxde implementation. 7 | Note that deepxde requires passing the whole dataset to Triple, which is very memory consuming. 8 | ''' 9 | 10 | 11 | def train(config): 12 | seed = random.randint(1, 10000) 13 | print(f'Random seed :{seed}') 14 | # construct dataloader 15 | data_config = config['data'] 16 | train_set = NSdata(datapath1=data_config['datapath'], 17 | offset=0, num=10, 18 | nx=data_config['nx'], nt=data_config['nt'], 19 | sub=data_config['sub'], sub_t=data_config['sub_t'], 20 | vel=False, 21 | t_interval=data_config['time_interval']) 22 | val_set = NSdata(datapath1=data_config['data_val'], 23 | offset=310, num=10, 24 | nx=data_config['val_nx'], nt=data_config['val_nt'], 25 | sub=data_config['val_sub'], sub_t=data_config['val_subt'], 26 | vel=False, 27 | t_interval=data_config['time_interval']) 28 | # assert train_set.S == val_set.S 29 | dim_a = train_set.S ** 2 30 | dim_x = 3 31 | X_train, y_train = train_set.get_operator_data() 32 | X_val, y_val = val_set.get_operator_data() 33 | data = dde.data.Triple(X_train=X_train, y_train=y_train, X_test=X_val, y_test=y_val) 34 | 35 | activation = config['model']['activation'] 36 | initializer = 'Glorot normal' # He normal or Glorot normal 37 | 38 | net = dde.maps.DeepONet([dim_a] + config['model']['layers'], 39 | [dim_x] + config['model']['layers'], 40 | activation, 41 | initializer, 42 | use_bias=True, 43 | stacked=False) 44 | model = dde.Model(data, net) 45 | model.compile('adam', lr=config['train']['base_lr']) 46 | checker = dde.callbacks.ModelCheckpoint( 47 | 'checkpoints/deeponet.ckpt', save_better_only=True, period=10, 48 | ) 49 | model.train(epochs=config['train']['epochs'], callbacks=[checker]) 50 | -------------------------------------------------------------------------------- /baselines/loss.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.autograd as autograd 3 | from train_utils.utils import set_grad 4 | from .utils import get_sample, net_NS, sub_mse 5 | 6 | 7 | def boundary_loss(model, npt=100): 8 | device = next(model.parameters()).device 9 | 10 | bc1_x_sample, bc1_y_sample, bc1_t_sample, bc2_x_sample, bc2_y_sample, bc2_t_sample \ 11 | = get_sample(npt) 12 | 13 | bc1_x_sample, bc1_y_sample, bc1_t_sample, bc2_x_sample, bc2_y_sample, bc2_t_sample \ 14 | = bc1_x_sample.to(device), bc1_y_sample.to(device), bc1_t_sample.to(device), \ 15 | bc2_x_sample.to(device), bc2_y_sample.to(device), bc2_t_sample.to(device) 16 | set_grad([bc1_x_sample, bc1_y_sample, bc1_t_sample, bc2_x_sample, bc2_y_sample, bc2_t_sample]) 17 | 18 | u1, v1, _ = net_NS(bc1_x_sample, bc1_y_sample, bc1_t_sample, model) 19 | u2, v2, _ = net_NS(bc2_x_sample, bc2_y_sample, bc2_t_sample, model) 20 | bc_loss = sub_mse(u1) + sub_mse(v1) + sub_mse(u2) + sub_mse(v2) 21 | return 0.5 * bc_loss # 0.5 is the normalization factor 22 | 23 | 24 | def resf_NS(u, v, p, x, y, t, re=40): 25 | ''' 26 | Args: 27 | u: x-component, tensor 28 | v: y-component, tensor 29 | x: x-dimension, tensor 30 | y: y-dimension, tensor 31 | t: time dimension, tensor 32 | Returns: 33 | Residual f error 34 | ''' 35 | u_x, u_y, u_t = autograd.grad(outputs=[u.sum()], inputs=[x, y, t], create_graph=True) 36 | v_x, v_y, v_t = autograd.grad(outputs=[v.sum()], inputs=[x, y, t], create_graph=True) 37 | u_xx, = autograd.grad(outputs=[u_x.sum()], inputs=[x], create_graph=True) 38 | u_yy, = autograd.grad(outputs=[u_y.sum()], inputs=[y], create_graph=True) 39 | v_xx, = autograd.grad(outputs=[v_x.sum()], inputs=[x], create_graph=True) 40 | v_yy, = autograd.grad(outputs=[v_y.sum()], inputs=[y], create_graph=True) 41 | p_x, = autograd.grad(outputs=[p.sum()], inputs=[x], create_graph=True) 42 | p_y, = autograd.grad(outputs=[p.sum()], inputs=[y], create_graph=True) 43 | res_x = u_t + u * u_x + v * u_y + p_x - 1 / re * (u_xx + u_yy) - torch.sin(4 * y) 44 | res_y = v_t + u * v_x + v * v_y + p_y - 1 / re * (v_xx + v_yy) 45 | evp3 = u_x + v_y 46 | return res_x, res_y, evp3 47 | 48 | -------------------------------------------------------------------------------- /baselines/model.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | from models.FCN import DenseNet 4 | from typing import List 5 | from .utils import weighted_mse 6 | 7 | 8 | class DeepONet(nn.Module): 9 | def __init__(self, branch_layer, trunk_layer): 10 | super(DeepONet, self).__init__() 11 | self.branch = DenseNet(branch_layer, nn.ReLU) 12 | self.trunk = DenseNet(trunk_layer, nn.ReLU) 13 | 14 | def forward(self, u0, grid): 15 | a = self.branch(u0) 16 | b = self.trunk(grid) 17 | batchsize = a.shape[0] 18 | dim = a.shape[1] 19 | return torch.bmm(a.view(batchsize, 1, dim), b.view(batchsize, dim, 1)) 20 | 21 | 22 | class DeepONetCP(nn.Module): 23 | def __init__(self, branch_layer, trunk_layer): 24 | super(DeepONetCP, self).__init__() 25 | self.branch = DenseNet(branch_layer, nn.ReLU) 26 | self.trunk = DenseNet(trunk_layer, nn.ReLU) 27 | 28 | def forward(self, u0, grid): 29 | a = self.branch(u0) 30 | # batchsize x width 31 | b = self.trunk(grid) 32 | # N x width 33 | return torch.einsum('bi,ni->bn', a, b) 34 | 35 | 36 | class SAWeight(nn.Module): 37 | def __init__(self, out_dim, num_init: List, num_bd: List, num_collo: List): 38 | super(SAWeight, self).__init__() 39 | self.init_param = nn.ParameterList( 40 | [nn.Parameter(100 * torch.rand(num, out_dim)) for num in num_init] 41 | ) 42 | 43 | self.bd_param = nn.ParameterList( 44 | [nn.Parameter(torch.rand(num, out_dim)) for num in num_bd] 45 | ) 46 | 47 | self.collo_param = nn.ParameterList( 48 | [nn.Parameter(torch.rand(num, out_dim)) for num in num_collo] 49 | ) 50 | 51 | def forward(self, init_cond: List, bd_cond: List, residual: List): 52 | total_loss = 0.0 53 | for param, init_loss in zip(self.init_param, init_cond): 54 | total_loss += weighted_mse(init_loss, 0, param) 55 | 56 | for param, bd in zip(self.bd_param, bd_cond): 57 | total_loss += weighted_mse(bd, 0, param) 58 | 59 | for param, res in zip(self.collo_param, residual): 60 | total_loss += weighted_mse(res, 0, param) 61 | return total_loss -------------------------------------------------------------------------------- /baselines/test.py: -------------------------------------------------------------------------------- 1 | from tqdm import tqdm 2 | import numpy as np 3 | 4 | import torch 5 | from torch.utils.data import DataLoader 6 | from baselines.model import DeepONetCP 7 | from baselines.data import DeepONetCPNS, DarcyFlow 8 | from train_utils.losses import LpLoss 9 | 10 | 11 | def test(model, 12 | test_loader, 13 | grid, 14 | device): 15 | pbar = tqdm(test_loader, dynamic_ncols=True, smoothing=0.1) 16 | myloss = LpLoss(size_average=True) 17 | model.eval() 18 | 19 | test_error = [] 20 | with torch.no_grad(): 21 | for x, y in pbar: 22 | x = x.to(device) 23 | y = y.to(device) 24 | 25 | grid = grid.to(device) 26 | 27 | pred = model(x, grid) 28 | loss = myloss(pred, y) 29 | 30 | test_error.append(loss.item()) 31 | pbar.set_description( 32 | ( 33 | f'test error: {loss.item():.5f}' 34 | ) 35 | ) 36 | 37 | mean = np.mean(test_error) 38 | std = np.std(test_error, ddof=1) / np.sqrt(len(test_error)) 39 | print(f'Averaged test error :{mean}, standard error: {std}') 40 | 41 | 42 | def test_deeponet_ns(config): 43 | ''' 44 | Evaluate deeponet model on Navier Stokes equation 45 | Args: 46 | config: configurations 47 | 48 | Returns: 49 | 50 | ''' 51 | device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') 52 | data_config = config['data'] 53 | batch_size = config['test']['batchsize'] 54 | dataset = DeepONetCPNS(datapath=data_config['datapath'], 55 | nx=data_config['nx'], nt=data_config['nt'], 56 | sub=data_config['sub'], sub_t=data_config['sub_t'], 57 | offset=data_config['offset'], num=data_config['n_sample'], 58 | t_interval=data_config['time_interval']) 59 | test_loader = DataLoader(dataset, batch_size=batch_size, shuffle=True) 60 | u0_dim = dataset.S ** 2 61 | model = DeepONetCP(branch_layer=[u0_dim] + config['model']['branch_layers'], 62 | trunk_layer=[3] + config['model']['trunk_layers']).to(device) 63 | if 'ckpt' in config['test']: 64 | ckpt = torch.load(config['test']['ckpt']) 65 | model.load_state_dict(ckpt['model']) 66 | grid = test_loader.dataset.xyt 67 | test(model, test_loader, grid, device=device) 68 | 69 | 70 | def test_deeponet_darcy(config): 71 | ''' 72 | Evaluate deeponet mode on Darcy Flow 73 | ''' 74 | 75 | device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') 76 | data_config = config['data'] 77 | batch_size = config['test']['batchsize'] 78 | dataset = DarcyFlow(data_config['datapath'], 79 | nx=data_config['nx'], sub=data_config['sub'], 80 | offset=data_config['offset'], num=data_config['n_sample']) 81 | dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True) 82 | 83 | u0_dim = dataset.S ** 2 84 | model = DeepONetCP(branch_layer=[u0_dim] + config['model']['branch_layers'], 85 | trunk_layer=[2] + config['model']['trunk_layers']).to(device) 86 | if 'ckpt' in config['test']: 87 | ckpt = torch.load(config['test']['ckpt']) 88 | model.load_state_dict(ckpt['model']) 89 | print('Load model weights from %s' % config['test']['ckpt']) 90 | 91 | grid = dataset.mesh.reshape(-1, 2) 92 | test(model, dataloader, grid, device) -------------------------------------------------------------------------------- /baselines/tqd_utils.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | from tensordiffeq.boundaries import BC 4 | from tensordiffeq.utils import flatten_and_stack, multimesh, MSE, convertTensor 5 | 6 | 7 | class PointsIC(BC): 8 | ''' 9 | Create Initial condition class from array on domain 10 | ''' 11 | def __init__(self, domain, values, var, n_values=None): 12 | ''' 13 | args: 14 | - domain: 15 | - values: 16 | ''' 17 | super(PointsIC, self).__init__() 18 | self.isInit = True 19 | self.n_values = n_values 20 | self.domain = domain 21 | self.values = values 22 | self.vars = var 23 | self.isInit = True 24 | self.dicts_ = [item for item in self.domain.domaindict if item['identifier'] != self.domain.time_var] 25 | self.dict_ = next(item for item in self.domain.domaindict if item["identifier"] == self.domain.time_var) 26 | self.compile() 27 | self.create_target(self.values) 28 | 29 | def create_input(self): 30 | dims = self.get_not_dims(self.domain.time_var) 31 | mesh = flatten_and_stack(multimesh(dims)) 32 | t_repeat = np.repeat(0.0, len(mesh)) 33 | 34 | mesh = np.concatenate((mesh, np.reshape(t_repeat, (-1, 1))), axis=1) 35 | if self.n_values is not None: 36 | self.nums = np.random.randint(0, high=len(mesh), size=self.n_values) 37 | mesh = mesh[self.nums] 38 | return mesh 39 | 40 | def create_target(self, values): 41 | # for i, var_ in enumerate(self.vars): 42 | # arg_list = [] 43 | # for j, var in enumerate(var_): 44 | # var_dict = self.get_dict(var) 45 | # arg_list.append(get_linspace(var_dict)) 46 | # inp = flatten_and_stack(multimesh(arg_list)) 47 | # fun_vals.append(self.fun[i](*inp.T)) 48 | if self.n_values is not None: 49 | self.val = np.reshape(values, (-1, 3))[self.nums] 50 | else: 51 | self.val = np.reshape(values, (-1, 3)) 52 | 53 | def loss(self): 54 | return MSE(self.preds, self.val) -------------------------------------------------------------------------------- /baselines/train_darcy.py: -------------------------------------------------------------------------------- 1 | from tqdm import tqdm 2 | 3 | import torch 4 | from torch.utils.data import DataLoader 5 | from torch.optim import Adam 6 | from torch.optim.lr_scheduler import MultiStepLR 7 | 8 | from baselines.model import DeepONetCP 9 | from train_utils.losses import LpLoss 10 | from train_utils.utils import save_checkpoint 11 | from baselines.data import DarcyFlow 12 | 13 | 14 | def train_deeponet_darcy(config): 15 | ''' 16 | train deepONet for darcy flow 17 | ''' 18 | device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') 19 | data_config = config['data'] 20 | batch_size = config['train']['batchsize'] 21 | dataset = DarcyFlow(data_config['datapath'], 22 | nx=data_config['nx'], sub=data_config['sub'], 23 | offset=data_config['offset'], num=data_config['n_sample']) 24 | dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True) 25 | 26 | u0_dim = dataset.S ** 2 27 | model = DeepONetCP(branch_layer=[u0_dim] + config['model']['branch_layers'], 28 | trunk_layer=[2] + config['model']['trunk_layers']).to(device) 29 | optimizer = Adam(model.parameters(), lr=config['train']['base_lr']) 30 | scheduler = MultiStepLR(optimizer, milestones=config['train']['milestones'], 31 | gamma=config['train']['scheduler_gamma']) 32 | pbar = range(config['train']['epochs']) 33 | pbar = tqdm(pbar, dynamic_ncols=True, smoothing=0.1) 34 | myloss = LpLoss(size_average=True) 35 | model.train() 36 | grid = dataset.mesh 37 | grid = grid.reshape(-1, 2).to(device) # grid value, (SxS, 2) 38 | for e in pbar: 39 | train_loss = 0.0 40 | for x, y in dataloader: 41 | x = x.to(device) # initial condition, (batchsize, u0_dim) 42 | 43 | y = y.to(device) # ground truth, (batchsize, SxS) 44 | 45 | pred = model(x, grid) 46 | loss = myloss(pred, y) 47 | 48 | model.zero_grad() 49 | loss.backward() 50 | optimizer.step() 51 | 52 | train_loss += loss.item() * y.shape[0] 53 | train_loss /= len(dataset) 54 | scheduler.step() 55 | 56 | pbar.set_description( 57 | ( 58 | f'Epoch: {e}; Averaged train loss: {train_loss:.5f}; ' 59 | ) 60 | ) 61 | if e % 1000 == 0: 62 | print(f'Epoch: {e}, averaged train loss: {train_loss:.5f}') 63 | save_checkpoint(config['train']['save_dir'], 64 | config['train']['save_name'].replace('.pt', f'_{e}.pt'), 65 | model, optimizer) 66 | save_checkpoint(config['train']['save_dir'], 67 | config['train']['save_name'], 68 | model, optimizer) -------------------------------------------------------------------------------- /configs/baseline/NS-50s-LAAF.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/ns_V1e-3_N5000_T50.mat' 3 | vis: 0.001 4 | total_num: 5000 5 | offset: 4900 6 | n_sample: 1 7 | time_scale: 49 8 | nx: 64 9 | nt: 50 10 | sub: 1 # not used here 11 | sub_t: 1 # not used here 12 | shuffle: True 13 | 14 | model: 15 | layers: [3, 50, 50, 50, 50, 50, 50, 3] 16 | activation: LAAF-10 tanh 17 | 18 | train: 19 | batchsize: 1 20 | epochs: 5000 21 | milestones: [1000, 1500, 2000] 22 | base_lr: 0.001 23 | num_domain: 10000 24 | num_boundary: 18000 25 | num_test: 100 26 | log_step: 100 27 | 28 | log: 29 | logfile: 'log/pinns-50s-laaf.csv' -------------------------------------------------------------------------------- /configs/baseline/NS-50s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/ns_V1e-3_N5000_T50.mat' 3 | vis: 0.001 4 | total_num: 5000 5 | offset: 4900 6 | n_sample: 1 7 | time_scale: 49 8 | nx: 64 9 | nt: 50 10 | sub: 1 # not used here 11 | sub_t: 1 # not used here 12 | shuffle: True 13 | 14 | model: 15 | layers: [3, 50, 50, 50, 50, 50, 50, 3] 16 | 17 | train: 18 | epochs: 15000 19 | base_lr: 0.001 20 | save_dir: 'Re500-FDM' 21 | save_name: 'PINO-scratch-05s.pt' 22 | 23 | log: 24 | logfile: 'log/pinns-50s-best.csv' -------------------------------------------------------------------------------- /configs/baseline/Re500-05s-deeponet.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: '/mnt/md1/zongyi/NS_fft_Re500_T4000.npy' 3 | Re: 500 4 | total_num: 4000 5 | offset: 0 6 | n_sample: 4000 7 | time_interval: 0.5 8 | nx: 64 9 | nt: 64 10 | sub: 1 11 | sub_t: 1 12 | shuffle: False 13 | data_val: 'data/NS_Re500_s256_T100_test.npy' 14 | val_nx: 256 15 | val_nt: 128 16 | val_sub: 4 17 | val_subt: 2 18 | 19 | model: 20 | layers: [40, 40] 21 | activation: 'relu' 22 | 23 | train: 24 | batchsize: 1 25 | epochs: 100 26 | milestones: [25000, 50000, 75000] 27 | base_lr: 0.001 28 | 29 | ckpt: 'checkpoints/Re500-FDM/pretrain-Re500-05s-4000.pt' 30 | 31 | log: 32 | project: 'PINO-None' 33 | group: 'eval' 34 | 35 | 36 | -------------------------------------------------------------------------------- /configs/baseline/Re500-pinns-05s-LAAF.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_Re500_s256_T100_test.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 0.5 8 | nx: 256 9 | nt: 128 10 | sub: 2 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | layers: [3, 50, 50, 50, 50, 50, 50, 3] 16 | activation: LAAF-10 tanh 17 | 18 | train: 19 | batchsize: 1 20 | epochs: 3000 21 | milestones: [1000, 1500, 2000] 22 | base_lr: 0.01 23 | num_domain: 5000 24 | num_boundary: 10000 25 | num_test: 100 26 | log_step: 100 27 | 28 | log: 29 | project: 'PINO-Re500-ICLR' 30 | group: 'Re500-PINNs' 31 | logfile: 'log/pinns-plot-laaf128.csv' 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /configs/baseline/Re500-pinns-05s-SA.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_Re500_s256_T100_test.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 0.5 8 | nx: 256 9 | nt: 128 10 | sub: 2 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | layers: [3, 100, 100, 100, 100, 100, 100, 3] 16 | activation: tanh 17 | 18 | train: 19 | batchsize: 1 20 | epochs: 5000 21 | milestones: [1000, 1500, 2000] 22 | base_lr: 0.005 23 | num_domain: 10000 24 | num_boundary: 10000 25 | num_init: 5000 26 | num_test: 100 27 | log_step: 100 28 | 29 | log: 30 | project: 'PINO-Re500-ICLR' 31 | group: 'SA-PINNs' 32 | logfile: 'log/sa-pinns128-plot.csv' 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /configs/baseline/Re500-pinns-05s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_Re500_s256_T100_test.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 0.5 8 | nx: 256 9 | nt: 128 10 | sub: 2 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | layers: [3, 50, 50, 50, 50, 50, 50, 3] 16 | activation: tanh 17 | 18 | train: 19 | batchsize: 1 20 | epochs: 3000 21 | milestones: [1000, 1500, 2000] 22 | base_lr: 0.01 23 | num_domain: 5000 24 | num_boundary: 10000 25 | num_test: 100 26 | log_step: 100 27 | 28 | log: 29 | project: 'PINO-Re500-ICLR' 30 | group: 'Re500-PINNs' 31 | logfile: 'log/pinns128-plot.csv' 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /configs/baseline/Re500-pinns.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_Re500_s256_T100_test.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 0.5 8 | nx: 256 9 | nt: 128 10 | sub: 4 11 | sub_t: 1 12 | shuffle: True 13 | 14 | train: 15 | batchsize: 1 16 | epochs: 5000 17 | base_lr: 0.001 18 | num_domain: 5000 19 | num_boundary: 10000 20 | num_test: 100 21 | ic_loss: 5.0 22 | f_loss: 1.0 23 | xy_loss: 0 24 | log_step: 100 25 | 26 | log: 27 | project: 'PINO-Re500-ICLR' 28 | group: 'Re500-PINNs-long' 29 | 30 | 31 | -------------------------------------------------------------------------------- /configs/finetune/Darcy-finetune.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: 'Darcy' 3 | datapath: '/mnt/md1/zongyi/piececonst_r421_N1024_smooth2.mat' 4 | total_num: 1024 5 | offset: 500 6 | n_sample: 1 7 | nx: 421 8 | sub: 7 9 | 10 | model: 11 | layers: [64, 64, 64, 64, 64] 12 | modes1: [20, 20, 20, 20] 13 | modes2: [20, 20, 20, 20] 14 | fc_dim: 128 15 | act: gelu 16 | 17 | train: 18 | batchsize: 1 19 | epochs: 500 20 | milestones: [100, 200, 300, 400] 21 | base_lr: 0.0025 22 | scheduler_gamma: 0.5 23 | f_loss: 1.0 24 | xy_loss: 0.0 25 | save_dir: 'darcy-FDM' 26 | save_name: 'darcy-finetune-pino.pt' 27 | ckpt: 'checkpoints/darcy-FDM/darcy-pretrain-pino.pt' 28 | 29 | log: 30 | project: 'ICLR-Darcy-finetune' 31 | group: 'gelu-pino-pino' 32 | 33 | 34 | -------------------------------------------------------------------------------- /configs/finetune/Re100-finetune-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re100_T128_part0.npy' 3 | Re: 100 4 | total_num: 100 5 | offset: 190 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [32, 32, 32, 32, 32] 16 | modes1: [16, 16, 16, 16] 17 | modes2: [16, 16, 16, 16] 18 | modes3: [16, 16, 16, 16] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 7500 24 | milestones: [500, 1500, 3000, 4000, 5000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re100-FDM' 31 | save_name: 'PINO-finetune-Re100-1s.pt' 32 | ckpt: 'checkpoints/Re100-FDM/PINO-pretrain-Re100-1s.pt' 33 | 34 | log: 35 | project: 'PINO-finetune' 36 | group: 'Re100-finetune-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/finetune/Re200-finetune-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re200_T128_part0.npy' 3 | Re: 200 4 | total_num: 100 5 | offset: 194 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [32, 32, 32, 32, 32] 16 | modes1: [16, 16, 16, 16] 17 | modes2: [16, 16, 16, 16] 18 | modes3: [16, 16, 16, 16] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 10000 24 | milestones: [500, 1500, 3000, 4000, 6000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re200-FDM' 31 | save_name: 'PINO-finetune-Re200-1s.pt' 32 | ckpt: 'checkpoints/Re200-FDM/PINO-pretrain-Re200-1s.pt' 33 | 34 | log: 35 | project: 'PINO-finetune' 36 | group: 'Re200-finetune-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/finetune/Re250-finetune-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re250_T128_part0.npy' 3 | Re: 250 4 | total_num: 100 5 | offset: 198 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [32, 32, 32, 32, 32] 16 | modes1: [16, 16, 16, 16] 17 | modes2: [16, 16, 16, 16] 18 | modes3: [16, 16, 16, 16] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 10000 24 | milestones: [500, 1500, 3000, 4000, 6000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re250-FDM' 31 | save_name: 'PINO-finetune-Re250-1s.pt' 32 | ckpt: 'checkpoints/Re250-FDM/PINO-pretrain-Re250-1s.pt' 33 | 34 | log: 35 | project: 'PINO-finetune' 36 | group: 'Re250-finetune-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/finetune/Re300-finetune-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re300_T128_part0.npy' 3 | Re: 300 4 | total_num: 100 5 | offset: 190 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [32, 32, 32, 32, 32] 16 | modes1: [16, 16, 16, 16] 17 | modes2: [16, 16, 16, 16] 18 | modes3: [16, 16, 16, 16] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 10000 24 | milestones: [500, 1500, 3000, 4000, 6000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re300-FDM' 31 | save_name: 'PINO-finetine-Re300-1s.pt' 32 | ckpt: 'checkpoints/Re300-FDM/PINO-pretrain-Re300-1s.pt' 33 | 34 | log: 35 | project: 'PINO-finetune' 36 | group: 'Re300-finetune-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/finetune/Re350-finetune-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re350_T128_part0.npy' 3 | Re: 350 4 | total_num: 100 5 | offset: 198 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [32, 32, 32, 32, 32] 16 | modes1: [16, 16, 16, 16] 17 | modes2: [16, 16, 16, 16] 18 | modes3: [16, 16, 16, 16] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 10000 24 | milestones: [500, 1500, 3000, 4000, 6000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re350-FDM' 31 | save_name: 'PINO-finetine-Re300-1s.pt' 32 | ckpt: 'checkpoints/Re350-FDM/PINO-pretrain-Re350-1s.pt' 33 | 34 | log: 35 | project: 'PINO-finetune' 36 | group: 'Re350-finetune-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/finetune/Re400-finetune-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re400_T128_part0.npy' 3 | Re: 400 4 | total_num: 100 5 | offset: 199 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [32, 32, 32, 32, 32] 16 | modes1: [16, 16, 16, 16] 17 | modes2: [16, 16, 16, 16] 18 | modes3: [16, 16, 16, 16] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 10000 24 | milestones: [500, 1500, 3000, 4000, 6000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re400-FDM' 31 | save_name: 'PINO-finetune-Re400-1s.pt' 32 | ckpt: 'checkpoints/Re400-FDM/PINO-pretrain-Re400-1s.pt' 33 | 34 | log: 35 | project: 'PINO-finetune' 36 | group: 'Re400-finetune-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/finetune/Re500-finetune-05s-2layer.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_Re500_s256_T100_test.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 0.5 8 | nx: 256 9 | nt: 128 10 | sub: 2 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 6000 24 | milestones: [1000, 3000, 5000] 25 | base_lr: 0.0025 26 | beta1: 0.9 27 | beta2: 0.999 28 | scheduler_gamma: 0.5 29 | ic_loss: 5.0 30 | f_loss: 1.0 31 | xy_loss: 0 32 | save_dir: 'Re500' 33 | save_name: 'PINO-fintune-05s.pt' 34 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-05s-4k1k.pt' 35 | twolayer: True 36 | 37 | log: 38 | project: 'PINO-Re500-ICLR' 39 | group: 'Re500-finetune-128-4k1-2layer' 40 | 41 | 42 | -------------------------------------------------------------------------------- /configs/finetune/Re500-finetune-05s-eqn.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_Re500_s256_T100_test.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 0.5 8 | nx: 256 9 | nt: 128 10 | sub: 2 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 2500 24 | milestones: [1000, 1500, 2000] 25 | base_lr: 0.0025 26 | beta1: 0.9 27 | beta2: 0.999 28 | scheduler_gamma: 0.5 29 | ic_loss: 5.0 30 | f_loss: 1.0 31 | xy_loss: 0 32 | save_dir: 'Re500' 33 | save_name: 'PINO-fintune-05s.pt' 34 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-05s-eqn.pt' 35 | 36 | log: 37 | project: 'PINO-Re500-ICLR' 38 | group: 'Re500-finetune-128-eqn' 39 | 40 | 41 | -------------------------------------------------------------------------------- /configs/finetune/Re500-finetune-05s4C0.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_Re500_s256_T100_test.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 0.5 8 | nx: 256 9 | nt: 128 10 | sub: 2 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 2500 24 | milestones: [1000, 1500, 2000] 25 | base_lr: 0.0025 26 | beta1: 0.9 27 | beta2: 0.999 28 | scheduler_gamma: 0.5 29 | ic_loss: 5.0 30 | f_loss: 1.0 31 | xy_loss: 0 32 | save_dir: 'Re500' 33 | save_name: 'PINO-fintune-05s.pt' 34 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-05s-4C0.pt' 35 | 36 | log: 37 | project: 'PINO-Re500-ICLR' 38 | group: 'Re500-finetune-128-4C0' 39 | 40 | 41 | -------------------------------------------------------------------------------- /configs/finetune/Re500-finetune-05s4C1.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_Re500_s256_T100_test.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 0.5 8 | nx: 256 9 | nt: 128 10 | sub: 4 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 2500 24 | milestones: [1000, 1500, 2000] 25 | base_lr: 0.0025 26 | beta1: 0.9 27 | beta2: 0.999 28 | scheduler_gamma: 0.5 29 | ic_loss: 5.0 30 | f_loss: 1.0 31 | xy_loss: 0 32 | save_dir: 'Re500' 33 | save_name: 'PINO-fintune-05s.pt' 34 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-05s-4C1.pt' 35 | profile: True 36 | 37 | log: 38 | project: 'PINO-Re500-ICLR' 39 | group: 'Re500-finetune-128-4C1-profile-long' 40 | 41 | 42 | -------------------------------------------------------------------------------- /configs/finetune/Re500-finetune-05s4C4.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_Re500_s256_T100_test.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 0.5 8 | nx: 256 9 | nt: 128 10 | sub: 2 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 2500 24 | milestones: [1000, 1500, 2000] 25 | base_lr: 0.0025 26 | beta1: 0.9 27 | beta2: 0.999 28 | scheduler_gamma: 0.5 29 | ic_loss: 5.0 30 | f_loss: 1.0 31 | xy_loss: 0 32 | save_dir: 'Re500' 33 | save_name: 'PINO-fintune-05s.pt' 34 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-05s-4C4.pt' 35 | 36 | log: 37 | project: 'PINO-Re500-ICLR' 38 | group: 'Re500-finetune-128-4C4' 39 | 40 | 41 | -------------------------------------------------------------------------------- /configs/finetune/Re500-finetune-05s4k-2layer.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_Re500_s256_T100_test.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 0.5 8 | nx: 256 9 | nt: 128 10 | sub: 2 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 6000 24 | milestones: [1000, 3000, 5000] 25 | base_lr: 0.0025 26 | beta1: 0.9 27 | beta2: 0.999 28 | scheduler_gamma: 0.5 29 | ic_loss: 5.0 30 | f_loss: 1.0 31 | xy_loss: 0 32 | save_dir: 'Re500' 33 | save_name: 'PINO-fintune-05s.pt' 34 | ckpt: 'checkpoints/Re500-FDM/pretrain-Re500-05s-4000.pt' 35 | twolayer: True 36 | 37 | log: 38 | project: 'PINO-Re500-ICLR' 39 | group: 'Re500-finetune-128-4k-2layer' 40 | 41 | 42 | -------------------------------------------------------------------------------- /configs/finetune/Re500-finetune-05s4k1k.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_Re500_s256_T100_test.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 0.5 8 | nx: 256 9 | nt: 128 10 | sub: 2 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 2500 24 | milestones: [1000, 1500, 2000] 25 | base_lr: 0.0025 26 | beta1: 0.9 27 | beta2: 0.999 28 | scheduler_gamma: 0.5 29 | ic_loss: 5.0 30 | f_loss: 1.0 31 | xy_loss: 0 32 | save_dir: 'Re500' 33 | save_name: 'PINO-fintune-05s.pt' 34 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-05s-4k1k.pt' 35 | profile: True 36 | 37 | log: 38 | project: 'PINO-Re500-ICLR-rebuttal' 39 | group: 'Re500-finetune-128-4k1' 40 | 41 | 42 | -------------------------------------------------------------------------------- /configs/finetune/Re500-finetune-05s4k4-2layer.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_Re500_s256_T100_test.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 0.5 8 | nx: 256 9 | nt: 128 10 | sub: 2 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 6000 24 | milestones: [1000, 3000, 5000] 25 | base_lr: 0.0025 26 | beta1: 0.9 27 | beta2: 0.999 28 | scheduler_gamma: 0.5 29 | ic_loss: 5.0 30 | f_loss: 1.0 31 | xy_loss: 0 32 | save_dir: 'Re500' 33 | save_name: 'PINO-fintune-05s.pt' 34 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-05s-4k.pt' 35 | twolayer: True 36 | 37 | log: 38 | project: 'PINO-Re500-ICLR' 39 | group: 'Re500-finetune-128-4k4-2layer' 40 | 41 | 42 | -------------------------------------------------------------------------------- /configs/finetune/Re500-finetune-05s4k4k.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_Re500_s256_T100_test.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 0.5 8 | nx: 256 9 | nt: 128 10 | sub: 4 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 2500 24 | milestones: [1000, 1500, 2000] 25 | base_lr: 0.0025 26 | beta1: 0.9 27 | beta2: 0.999 28 | scheduler_gamma: 0.5 29 | ic_loss: 5.0 30 | f_loss: 1.0 31 | xy_loss: 0 32 | save_dir: 'Re500' 33 | save_name: 'PINO-fintune-05s.pt' 34 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-05s-4k4.pt' 35 | profile: True 36 | 37 | log: 38 | project: 'PINO-Re500-ICLR' 39 | group: 'Re500-finetune-128-4k4-profile' 40 | 41 | 42 | -------------------------------------------------------------------------------- /configs/finetune/Re500-finetune-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re500_T128_part2.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1 8 | nx: 256 9 | nt: 128 10 | sub: 2 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 10000 24 | milestones: [500, 1500, 3000, 4000, 5000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-1s.pt' 28 | ic_loss: 5.0 29 | f_loss: 1.0 30 | xy_loss: 0 31 | save_dir: 'Re500-FDM' 32 | save_name: 'PINO-Re500-fintune-1s.pt' 33 | 34 | log: 35 | project: 'PINO-sweep' 36 | group: 'Re500-finetune' 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /configs/instance/Re500-1_8-FNO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 100 9 | data_res: [256, 256, 513] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 275 14 | n_test_samples: 10 15 | total_test_samples: 50 16 | t_duration: 0.125 17 | shuffle: True 18 | 19 | model: 20 | layers: [64, 64, 64, 64, 64] 21 | modes1: [12, 12, 12, 12] 22 | modes2: [12, 12, 12, 12] 23 | modes3: [12, 12, 12, 12] 24 | fc_dim: 128 25 | act: gelu 26 | pad_ratio: [0, 0.125] 27 | 28 | train: 29 | batchsize: 1 30 | epochs: 201 31 | num_iter: 1_001 32 | milestones: [400, 800] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 10.0 36 | f_loss: 1.0 37 | save_step: 500 38 | 39 | test: 40 | batchsize: 1 41 | data_res: [256, 256, 513] 42 | ckpt: model-400.pt 43 | 44 | log: 45 | logdir: Re500-1_8s-800-FNO 46 | entity: hzzheng-pino 47 | project: PINO-NS-test-time-opt 48 | group: Re500-1_8s-800-FNO 49 | -------------------------------------------------------------------------------- /configs/instance/Re500-1_8-PINO-s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 100 9 | data_res: [256, 256, 513] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 250 14 | n_test_samples: 1 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | pad_ratio: 0.125 26 | 27 | train: 28 | batchsize: 1 29 | epochs: 201 30 | num_iter: 1_001 31 | milestones: [400, 800] 32 | base_lr: 0.001 33 | scheduler_gamma: 0.5 34 | ic_loss: 10.0 35 | f_loss: 1.0 36 | save_step: 500 37 | 38 | test: 39 | batchsize: 1 40 | data_res: [256, 256, 513] 41 | ckpt: model-400.pt 42 | 43 | log: 44 | logdir: Re500-1_8s-800-PINO-tto 45 | entity: hzzheng-pino 46 | project: PINO-NS-test-time-opt 47 | group: Re500-1_8s-800-PINO-s 48 | -------------------------------------------------------------------------------- /configs/instance/Re500-1_8-PINO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 100 9 | data_res: [256, 256, 513] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 275 14 | n_test_samples: 10 15 | total_test_samples: 50 16 | t_duration: 0.125 17 | shuffle: True 18 | 19 | model: 20 | layers: [64, 64, 64, 64, 64] 21 | modes1: [12, 12, 12, 12] 22 | modes2: [12, 12, 12, 12] 23 | modes3: [12, 12, 12, 12] 24 | fc_dim: 128 25 | act: gelu 26 | pad_ratio: [0.0, 0.125] 27 | 28 | train: 29 | batchsize: 1 30 | epochs: 201 31 | num_iter: 1_001 32 | milestones: [400, 800] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 10.0 36 | f_loss: 1.0 37 | save_step: 500 38 | 39 | test: 40 | batchsize: 1 41 | data_res: [256, 256, 513] 42 | ckpt: model-400.pt 43 | 44 | log: 45 | logdir: Re500-1_8s-800-PINO-tto 46 | entity: hzzheng-pino 47 | project: PINO-NS-test-time-opt 48 | group: Re500-1_8s-800-PINO-s 49 | -------------------------------------------------------------------------------- /configs/ngc/Re500-1_8-dat0-PINO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/mount/data/NS-Re500_T300_256x256x500.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 5 9 | data_res: [64, 64, 257] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 200 14 | n_test_samples: 50 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: 0.0625 27 | 28 | train: 29 | batchsize: 1 30 | epochs: 201 31 | num_iter: 150_001 32 | milestones: [30_000, 60_000, 90_000, 120_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 1.0 36 | f_loss: 1.0 37 | xy_loss: 0.0 38 | save_step: 5000 39 | eval_step: 5000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [256, 256, 257] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_8s-dat0-PINO 48 | entity: hzzheng-pino 49 | project: PINO-NS 50 | group: Re500-1_8s-dat0-PINO 51 | -------------------------------------------------------------------------------- /configs/ngc/Re500-1_8-dat200-PINO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/mount/data/NS-Re500_T300_256x256x500.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 25 9 | data_res: [64, 64, 257] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 200 14 | n_test_samples: 50 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: 0.0625 27 | 28 | train: 29 | batchsize: 1 30 | epochs: 201 31 | num_iter: 150_001 32 | milestones: [20_000, 50_000, 80_000, 110_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 1.0 36 | f_loss: 1.0 37 | xy_loss: 5.0 38 | save_step: 5000 39 | eval_step: 5000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [256, 256, 257] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_8s-dat200-PINO 48 | entity: hzzheng-pino 49 | project: PINO-NS 50 | group: Re500-1_8s-dat200-PINO 51 | -------------------------------------------------------------------------------- /configs/ngc/Re500-1_8-dat40-PINO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/mount/data/NS-Re500_T300_256x256x500.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 5 9 | data_res: [64, 64, 257] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 200 14 | n_test_samples: 50 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: 0.0625 27 | 28 | train: 29 | batchsize: 1 30 | epochs: 201 31 | num_iter: 150_001 32 | milestones: [30_000, 60_000, 90_000, 120_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 1.0 36 | f_loss: 1.0 37 | xy_loss: 5.0 38 | save_step: 5000 39 | eval_step: 5000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [256, 256, 257] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_8s-dat40-PINO 48 | entity: hzzheng-pino 49 | project: PINO-NS 50 | group: Re500-1_8s-dat40-PINO 51 | -------------------------------------------------------------------------------- /configs/ngc/Re500-1_8-dat400-PINO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/mount/data/NS-Re500_T300_256x256x500.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 50 9 | data_res: [64, 64, 257] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 200 14 | n_test_samples: 50 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: 0.0625 27 | 28 | train: 29 | batchsize: 1 30 | epochs: 201 31 | num_iter: 150_001 32 | milestones: [20_000, 50_000, 80_000, 110_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 1.0 36 | f_loss: 1.0 37 | xy_loss: 5.0 38 | save_step: 5000 39 | eval_step: 5000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [256, 256, 257] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_8s-dat400-PINO 48 | entity: hzzheng-pino 49 | project: PINO-NS 50 | group: Re500-1_8s-dat400-PINO 51 | -------------------------------------------------------------------------------- /configs/ngc/Re500-1_8-dat80-PINO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/mount/data/NS-Re500_T300_256x256x500.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 10 9 | data_res: [64, 64, 257] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 200 14 | n_test_samples: 50 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: 0.0625 27 | 28 | train: 29 | batchsize: 1 30 | epochs: 201 31 | num_iter: 150_001 32 | milestones: [30_000, 60_000, 90_000, 120_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 1.0 36 | f_loss: 1.0 37 | xy_loss: 5.0 38 | save_step: 5000 39 | eval_step: 5000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [256, 256, 257] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_8s-dat80-PINO 48 | entity: hzzheng-pino 49 | project: PINO-NS 50 | group: Re500-1_8s-dat80-PINO 51 | -------------------------------------------------------------------------------- /configs/ngc/Re500-1_8-dat800-PINO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/mount/data/NS-Re500_T300_256x256x500.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 100 9 | data_res: [64, 64, 257] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 200 14 | n_test_samples: 50 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: 0.0625 27 | 28 | train: 29 | batchsize: 1 30 | epochs: 201 31 | num_iter: 150_001 32 | milestones: [30_000, 60_000, 90_000, 120_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 1.0 36 | f_loss: 1.0 37 | xy_loss: 5.0 38 | save_step: 5000 39 | eval_step: 5000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [256, 256, 257] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_8s-dat800-PINO 48 | entity: hzzheng-pino 49 | project: PINO-NS-ngc 50 | group: Re500-1_8s-dat800-PINO 51 | -------------------------------------------------------------------------------- /configs/ngc/Re500-1_8-res16-PINO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/mount/data/NS-Re500_T300_256x256x500.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 150 9 | data_res: [16, 16, 129] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 200 14 | n_test_samples: 50 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: 0.0625 27 | 28 | train: 29 | batchsize: 1 30 | epochs: 201 31 | num_iter: 150_001 32 | milestones: [30_000, 60_000, 90_000, 120_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 1.0 36 | f_loss: 1.0 37 | xy_loss: 5.0 38 | save_step: 5000 39 | eval_step: 5000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [256, 256, 257] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_8s-res16-PINO 48 | entity: hzzheng-pino 49 | project: PINO-NS 50 | group: Re500-1_8s-res16-PINO 51 | -------------------------------------------------------------------------------- /configs/ngc/Re500-1_8-res32-PINO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/mount/data/NS-Re500_T300_256x256x500.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 150 9 | data_res: [32, 32, 129] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 200 14 | n_test_samples: 50 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: 0.0625 27 | 28 | train: 29 | batchsize: 1 30 | epochs: 201 31 | num_iter: 150_001 32 | milestones: [30_000, 60_000, 90_000, 120_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 1.0 36 | f_loss: 1.0 37 | xy_loss: 5.0 38 | save_step: 5000 39 | eval_step: 5000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [256, 256, 257] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_8s-res32-PINO 48 | entity: hzzheng-pino 49 | project: PINO-NS 50 | group: Re500-1_8s-res32-PINO 51 | -------------------------------------------------------------------------------- /configs/operator/Darcy-pretrain.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: 'Darcy' 3 | path: '/raid/hongkai/darcy-train.mat' 4 | total_num: 1024 5 | offset: 0 6 | n_sample: 1000 7 | nx: 421 8 | sub: 7 9 | pde_sub: 2 10 | 11 | model: 12 | layers: [64, 64, 64, 64, 64] 13 | modes1: [20, 20, 20, 20] 14 | modes2: [20, 20, 20, 20] 15 | fc_dim: 128 16 | act: gelu 17 | pad_ratio: [0., 0.] 18 | 19 | train: 20 | batchsize: 20 21 | num_iter: 15_001 22 | milestones: [5_000, 7_500, 10_000] 23 | base_lr: 0.001 24 | scheduler_gamma: 0.5 25 | f_loss: 1.0 26 | xy_loss: 5.0 27 | save_step: 2_500 28 | eval_step: 2_500 29 | 30 | test: 31 | path: '/raid/hongkai/darcy-test.mat' 32 | total_num: 1024 33 | offset: 0 34 | n_sample: 500 35 | nx: 421 36 | sub: 2 37 | batchsize: 1 38 | 39 | 40 | log: 41 | logdir: Darcy-PINO-new 42 | entity: hzzheng-pino 43 | project: DarcyFlow 44 | group: PINO-1000-new 45 | 46 | 47 | -------------------------------------------------------------------------------- /configs/operator/Re500-05s-1000-FNO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | paths: ['../data/NS-Re500Part0.npy', '../data/NS-Re500Part1.npy', '../data/NS-Re500Part2.npy'] 3 | Re: 500 4 | total_num: 200 5 | offset: 0 6 | n_samples: 1000 7 | t_duration: 0.5 8 | data_res: [64, 64, 33] 9 | pde_res: [128, 128, 65] 10 | shuffle: True 11 | 12 | model: 13 | layers: [64, 64, 64, 64, 64] 14 | modes1: [8, 8, 8, 8] 15 | modes2: [8, 8, 8, 8] 16 | modes3: [8, 8, 8, 8] 17 | fc_dim: 128 18 | act: gelu 19 | num_pad: 4 20 | 21 | train: 22 | batchsize: 2 23 | epochs: 501 24 | milestones: [300] 25 | base_lr: 0.001 26 | scheduler_gamma: 0.5 27 | ic_loss: 0.0 28 | f_loss: 0.0 29 | xy_loss: 1.0 30 | save_step: 100 31 | 32 | test: 33 | batchsize: 1 34 | data_res: [128, 128, 65] 35 | ckpt: model-500.pt 36 | 37 | log: 38 | logdir: Re500-05s-1000-FNO 39 | entity: hzzheng-pino 40 | project: 'PINO-NS' 41 | group: 'Re500-05s-1000-FNO' 42 | -------------------------------------------------------------------------------- /configs/operator/Re500-05s-1000-PINO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | paths: ['../data/NS-Re500Part0.npy', '../data/NS-Re500Part1.npy', '../data/NS-Re500Part2.npy'] 3 | Re: 500 4 | total_num: 300 5 | offset: 0 6 | n_samples: 1000 7 | t_duration: 0.5 8 | data_res: [64, 64, 33] 9 | pde_res: [128, 128, 65] 10 | shuffle: True 11 | 12 | model: 13 | layers: [64, 64, 64, 64, 64] 14 | modes1: [8, 8, 8, 8] 15 | modes2: [8, 8, 8, 8] 16 | modes3: [8, 8, 8, 8] 17 | fc_dim: 128 18 | act: gelu 19 | num_pad: 4 20 | 21 | train: 22 | batchsize: 2 23 | epochs: 501 24 | milestones: [300] 25 | base_lr: 0.001 26 | scheduler_gamma: 0.5 27 | ic_loss: 1.0 28 | f_loss: 1.0 29 | xy_loss: 5.0 30 | save_step: 100 31 | 32 | test: 33 | batchsize: 1 34 | data_res: [128, 128, 65] 35 | ckpt: model-500.pt 36 | 37 | log: 38 | logdir: Re500-05s-1000-PINO 39 | entity: hzzheng-pino 40 | project: PINO-NS 41 | group: Re500-05s-1000-PINO 42 | -------------------------------------------------------------------------------- /configs/operator/Re500-05s-3000-FNO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['../data/NS-Re500_T3000_id0.npy'] 4 | Re: 500 5 | total_num: 3000 6 | offset: 0 7 | n_samples: 300 8 | testoffset: 2500 9 | n_test_samples: 300 10 | t_duration: 0.5 11 | raw_res: [256, 256, 257] 12 | data_res: [64, 64, 33] 13 | pde_res: [64, 64, 33] 14 | shuffle: True 15 | 16 | model: 17 | layers: [64, 64, 64, 64, 64] 18 | modes1: [8, 8, 8, 8] 19 | modes2: [8, 8, 8, 8] 20 | modes3: [8, 8, 8, 8] 21 | fc_dim: 128 22 | act: gelu 23 | num_pad: 4 24 | 25 | train: 26 | batchsize: 4 27 | epochs: 401 28 | milestones: [200] 29 | base_lr: 0.001 30 | scheduler_gamma: 0.5 31 | ic_loss: 0.0 32 | f_loss: 0.0 33 | xy_loss: 1.0 34 | save_step: 50 35 | 36 | test: 37 | batchsize: 1 38 | data_res: [128, 128, 65] 39 | ckpt: model-400.pt 40 | 41 | log: 42 | logdir: Re500-1s-3000-FNO 43 | entity: hzzheng-pino 44 | project: PINO-NS 45 | group: Re500-1s-3000-FNO 46 | -------------------------------------------------------------------------------- /configs/operator/Re500-05s-600-FNO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['../data/NS-Re500_T3000_id0.npy'] 4 | Re: 500 5 | total_num: 3000 6 | offset: 0 7 | n_samples: 300 8 | testoffset: 2500 9 | n_test_samples: 200 10 | t_duration: 0.5 11 | raw_res: [256, 256, 257] 12 | data_res: [64, 64, 65] # resolution in 1 second 13 | pde_res: [64, 64, 65] # resolution in 1 second 14 | shuffle: True 15 | 16 | model: 17 | layers: [64, 64, 64, 64, 64] 18 | modes1: [8, 8, 8, 8] 19 | modes2: [8, 8, 8, 8] 20 | modes3: [8, 8, 8, 8] 21 | fc_dim: 128 22 | act: gelu 23 | num_pad: 4 24 | 25 | train: 26 | batchsize: 2 27 | epochs: 401 28 | milestones: [200] 29 | base_lr: 0.001 30 | scheduler_gamma: 0.5 31 | ic_loss: 0.0 32 | f_loss: 0.0 33 | xy_loss: 1.0 34 | save_step: 50 35 | 36 | test: 37 | batchsize: 1 38 | data_res: [64, 64, 65] 39 | ckpt: model-400.pt 40 | 41 | log: 42 | logdir: Re500-05s-600-FNO 43 | entity: hzzheng-pino 44 | project: PINO-NS 45 | group: Re500-05s-600-FNO 46 | -------------------------------------------------------------------------------- /configs/operator/Re500-05s-600-PINO-xl.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['../data/NS-Re500_T3000_id0.npy'] 4 | Re: 500 5 | total_num: 3000 6 | offset: 0 7 | n_samples: 300 8 | testoffset: 2500 9 | n_test_samples: 200 10 | t_duration: 0.5 11 | raw_res: [256, 256, 257] 12 | data_res: [64, 64, 65] # resolution in 1 second 13 | pde_res: [256, 256, 257] # resolution in 1 second 14 | shuffle: True 15 | 16 | model: 17 | layers: [64, 64, 64, 64, 64] 18 | modes1: [12, 12, 12, 12] 19 | modes2: [12, 12, 12, 12] 20 | modes3: [12, 12, 12, 12] 21 | fc_dim: 128 22 | act: gelu 23 | num_pad: 4 24 | 25 | train: 26 | batchsize: 1 27 | epochs: 301 28 | milestones: [200] 29 | base_lr: 0.001 30 | scheduler_gamma: 0.5 31 | ic_loss: 1.0 32 | f_loss: 1.0 33 | xy_loss: 5.0 34 | save_step: 10 35 | 36 | test: 37 | batchsize: 1 38 | data_res: [64, 64, 65] 39 | ckpt: model-400.pt 40 | 41 | log: 42 | logdir: Re500-05s-600-PINO-xl 43 | entity: hzzheng-pino 44 | project: PINO-NS 45 | group: Re500-05s-600-PINO-xl 46 | -------------------------------------------------------------------------------- /configs/operator/Re500-05s-600-PINO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['../data/NS-Re500_T3000_id0.npy'] 4 | Re: 500 5 | total_num: 3000 6 | offset: 0 7 | n_samples: 300 8 | testoffset: 2500 9 | n_test_samples: 200 10 | t_duration: 0.5 11 | raw_res: [256, 256, 257] 12 | data_res: [64, 64, 65] # resolution in 1 second 13 | pde_res: [256, 256, 257] # resolution in 1 second 14 | shuffle: True 15 | 16 | model: 17 | layers: [64, 64, 64, 64, 64] 18 | modes1: [8, 8, 8, 8] 19 | modes2: [8, 8, 8, 8] 20 | modes3: [8, 8, 8, 8] 21 | fc_dim: 128 22 | act: gelu 23 | num_pad: 4 24 | 25 | train: 26 | batchsize: 1 27 | epochs: 301 28 | milestones: [200] 29 | base_lr: 0.001 30 | scheduler_gamma: 0.5 31 | ic_loss: 1.0 32 | f_loss: 1.0 33 | xy_loss: 5.0 34 | save_step: 10 35 | 36 | test: 37 | batchsize: 1 38 | data_res: [64, 64, 65] 39 | ckpt: model-400.pt 40 | 41 | log: 42 | logdir: Re500-05s-600-PINO 43 | entity: hzzheng-pino 44 | project: PINO-NS 45 | group: Re500-05s-600-PINO 46 | -------------------------------------------------------------------------------- /configs/operator/Re500-05s-FNO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | paths: ['../data/NS-Re500Part0.npy', '../data/NS-Re500Part1.npy'] 3 | Re: 500 4 | total_num: 200 5 | offset: 0 6 | n_samples: 700 7 | t_duration: 0.5 8 | data_res: [64, 64, 33] 9 | pde_res: [128, 128, 65] 10 | shuffle: True 11 | 12 | model: 13 | layers: [64, 64, 64, 64, 64] 14 | modes1: [8, 8, 8, 8] 15 | modes2: [8, 8, 8, 8] 16 | modes3: [8, 8, 8, 8] 17 | fc_dim: 128 18 | act: gelu 19 | num_pad: 4 20 | 21 | train: 22 | batchsize: 2 23 | epochs: 501 24 | milestones: [300] 25 | base_lr: 0.001 26 | scheduler_gamma: 0.5 27 | ic_loss: 0.0 28 | f_loss: 0.0 29 | xy_loss: 1.0 30 | save_step: 100 31 | 32 | test: 33 | batchsize: 1 34 | data_res: [128, 128, 65] 35 | ckpt: model-500.pt 36 | 37 | log: 38 | logdir: Re500-05s-FNO 39 | entity: hzzheng-pino 40 | project: 'PINO-NS' 41 | group: 'Re500-05s-FNO' 42 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_16-800-FNO-s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 50 9 | data_res: [64, 64, 257] # resolution in 1 second 10 | pde_res: [64, 64, 257] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 50 13 | testoffset: 275 14 | n_test_samples: 25 15 | t_duration: 0.0625 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | pad_ratio: 0.125 26 | 27 | train: 28 | batchsize: 2 29 | start_iter: 0 30 | num_iter: 50_001 31 | milestones: [20_000, 40_000] 32 | base_lr: 0.001 33 | scheduler_gamma: 0.5 34 | ic_loss: 0.0 35 | f_loss: 0.0 36 | xy_loss: 1.0 37 | save_step: 5000 38 | eval_step: 5000 39 | 40 | test: 41 | batchsize: 1 42 | data_res: [64, 64, 257] 43 | ckpt: model-400.pt 44 | 45 | log: 46 | logdir: Re500-1_16s-800-FNO-s 47 | entity: hzzheng-pino 48 | project: PINO-KF-Re500 49 | group: Re500-1_16s-800-FNO-s 50 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_16-800-PINO-s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 50 9 | data_res: [64, 64, 257] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 200 13 | testoffset: 275 14 | n_test_samples: 25 15 | t_duration: 0.0625 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: 0.125 27 | 28 | train: 29 | batchsize: 2 30 | start_iter: 0 31 | num_iter: 200_001 32 | milestones: [20_000, 60_000, 120_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 5.0 36 | f_loss: 1.0 37 | xy_loss: 10.0 38 | save_step: 5000 39 | eval_step: 5000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [128, 128, 257] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_16s-800-PINO-s 48 | entity: hzzheng-pino 49 | project: PINO-KF-Re500 50 | group: Re500-1_16s-800-PINO-s 51 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_4-2000-FNO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['../data/NS-Re500_T3000_id0.npy'] 4 | Re: 500 5 | total_num: 3000 6 | offset: 0 7 | n_samples: 600 8 | testoffset: 2500 9 | n_test_samples: 400 10 | t_duration: 0.25 11 | raw_res: [256, 256, 257] 12 | data_res: [256, 256, 257] # resolution in 1 second 13 | pde_res: [256, 256, 257] # resolution in 1 second 14 | shuffle: True 15 | 16 | model: 17 | layers: [64, 64, 64, 64, 64] 18 | modes1: [8, 8, 8, 8] 19 | modes2: [8, 8, 8, 8] 20 | modes3: [8, 8, 8, 8] 21 | fc_dim: 128 22 | act: gelu 23 | num_pad: 4 24 | 25 | train: 26 | batchsize: 2 27 | epochs: 401 28 | milestones: [100, 300] 29 | base_lr: 0.001 30 | scheduler_gamma: 0.5 31 | ic_loss: 0.0 32 | f_loss: 0.0 33 | xy_loss: 1.0 34 | save_step: 50 35 | 36 | test: 37 | batchsize: 1 38 | data_res: [256, 256, 257] 39 | ckpt: model-400.pt 40 | 41 | log: 42 | logdir: Re500-1_4s-2000-FNO 43 | entity: hzzheng-pino 44 | project: PINO-NS 45 | group: Re500-1_4s-2000-FNO 46 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-0-PINO-s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 10 9 | data_res: [64, 64, 129] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 275 14 | n_test_samples: 25 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [12, 12, 12, 12] 21 | modes2: [12, 12, 12, 12] 22 | modes3: [12, 12, 12, 12] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: 0.125 27 | 28 | train: 29 | batchsize: 2 30 | start_iter: 35_001 31 | num_iter: 200_001 32 | milestones: [30_000, 70_000, 110_000, 150_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 10.0 36 | f_loss: 1.0 37 | xy_loss: 0.0 38 | save_step: 5000 39 | eval_step: 5000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [256, 256, 513] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_8s-0-PINO-s 48 | entity: hzzheng-pino 49 | project: PINO-KF-Re500 50 | group: Re500-1_8s-0-PINO-s 51 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-1200-FNO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['../data/NS-Re500_T300_id0.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 150 9 | data_res: [64, 64, 129] # resolution in 1 second 10 | pde_res: [64, 64, 129] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 250 14 | n_test_samples: 50 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: 0.125 27 | 28 | train: 29 | batchsize: 2 30 | epochs: 201 31 | num_iter: 50_001 32 | milestones: [20_000, 40_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 0.0 36 | f_loss: 0.0 37 | xy_loss: 1.0 38 | save_step: 5000 39 | eval_step: 5000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [64, 64, 129] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_8s-1200-FNO 48 | entity: hzzheng-pino 49 | project: PINO-NS 50 | group: Re500-1_8s-1200-FNO 51 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-1200-PINO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 150 9 | data_res: [64, 64, 129] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 250 14 | n_test_samples: 50 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: 0.125 27 | 28 | train: 29 | batchsize: 2 30 | epochs: 201 31 | num_iter: 150_001 32 | milestones: [30_000, 60_000, 90_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 1.0 36 | f_loss: 1.0 37 | xy_loss: 5.0 38 | save_step: 5000 39 | eval_step: 5000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [256, 256, 513] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_8s-1200-PINO 48 | entity: hzzheng-pino 49 | project: PINO-NS 50 | group: Re500-1_8s-1200-PINO 51 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-200-FNO-s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 25 9 | data_res: [128, 128, 257] # resolution in 1 second 10 | pde_res: [128, 128, 257] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 250 14 | n_test_samples: 25 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: [0, 0.125] 27 | 28 | train: 29 | batchsize: 1 30 | epochs: 201 31 | num_iter: 50_001 32 | milestones: [20_000, 40_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 0.0 36 | f_loss: 0.0 37 | xy_loss: 1.0 38 | save_step: 5000 39 | eval_step: 5000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [256, 256, 513] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_8s-dat200-FNO 48 | entity: hzzheng-pino 49 | project: PINO-KF-Re500 50 | group: Re500-1_8s-dat200-FNO 51 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-2000-FNO-s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 250 9 | data_res: [64, 64, 129] # resolution in 1 second 10 | pde_res: [64, 64, 129] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 275 14 | n_test_samples: 25 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | pad_ratio: 0.125 26 | 27 | train: 28 | batchsize: 1 29 | epochs: 201 30 | num_iter: 60_001 31 | milestones: [20_000, 40_000] 32 | base_lr: 0.001 33 | scheduler_gamma: 0.5 34 | ic_loss: 0.0 35 | f_loss: 0.0 36 | xy_loss: 1.0 37 | save_step: 5000 38 | eval_step: 5000 39 | 40 | test: 41 | batchsize: 1 42 | data_res: [256, 256, 513] 43 | ckpt: model-400.pt 44 | 45 | log: 46 | logdir: Re500-1_8s-dat2000-FNO 47 | entity: hzzheng-pino 48 | project: PINO-KF-Re500 49 | group: Re500-1_8s-dat2000-FNO 50 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-2000-FNO-xl.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['../data/NS-Re500_T3000_id0.npy'] 4 | Re: 500 5 | total_num: 3000 6 | offset: 0 7 | n_samples: 350 8 | testoffset: 2500 9 | n_test_samples: 400 10 | t_duration: 0.125 11 | raw_res: [256, 256, 257] 12 | data_res: [256, 256, 257] # resolution in 1 second 13 | pde_res: [256, 256, 257] # resolution in 1 second 14 | shuffle: True 15 | 16 | model: 17 | layers: [64, 64, 64, 64, 64] 18 | modes1: [12, 12, 12, 12] 19 | modes2: [12, 12, 12, 12] 20 | modes3: [12, 12, 12, 12] 21 | fc_dim: 128 22 | act: gelu 23 | num_pad: 4 24 | 25 | train: 26 | batchsize: 2 27 | epochs: 201 28 | milestones: [50, 100, 150] 29 | base_lr: 0.001 30 | scheduler_gamma: 0.5 31 | ic_loss: 0.0 32 | f_loss: 0.0 33 | xy_loss: 1.0 34 | save_step: 20 35 | 36 | test: 37 | batchsize: 1 38 | data_res: [256, 256, 257] 39 | ckpt: model-400.pt 40 | 41 | log: 42 | logdir: Re500-1_8s-2400-FNO 43 | entity: hzzheng-pino 44 | project: PINO-NS 45 | group: Re500-1_8s-2400-FNO 46 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-2000-PINO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['../data/NS-Re500_T300_id0.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 150 9 | data_res: [64, 64, 257] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 200 14 | n_test_samples: 50 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: 0.0625 27 | 28 | train: 29 | batchsize: 2 30 | epochs: 201 31 | num_iter: 100_001 32 | milestones: [10_000, 30_000, 50_000, 70_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 1.0 36 | f_loss: 1.0 37 | xy_loss: 5.0 38 | save_step: 5000 39 | eval_step: 5000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [64, 64, 257] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_8s-2k-PINO 48 | entity: hzzheng-pino 49 | project: PINO-NS 50 | group: Re500-1_8s-2k-PINO 51 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-2200-FNO-s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 275 9 | data_res: [64, 64, 129] # resolution in 1 second 10 | pde_res: [64, 64, 257] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 275 14 | n_test_samples: 25 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [12, 12, 12, 12] 21 | modes2: [12, 12, 12, 12] 22 | modes3: [12, 12, 12, 12] 23 | fc_dim: 128 24 | act: gelu 25 | pad_ratio: 0.125 26 | 27 | train: 28 | batchsize: 1 29 | start_iter: 30_001 30 | num_iter: 60_001 31 | milestones: [20_000, 40_000] 32 | base_lr: 0.001 33 | scheduler_gamma: 0.5 34 | ic_loss: 0.0 35 | f_loss: 0.0 36 | xy_loss: 1.0 37 | save_step: 5000 38 | eval_step: 5000 39 | 40 | test: 41 | batchsize: 1 42 | data_res: [256, 256, 513] 43 | ckpt: model-400.pt 44 | 45 | log: 46 | logdir: Re500-1_8s-dat2200-FNO 47 | entity: hzzheng-pino 48 | project: PINO-KF-Re500 49 | group: Re500-1_8s-dat2200-FNO 50 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-2200-PINO-s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 275 9 | data_res: [64, 64, 257] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 275 13 | testoffset: 275 14 | n_test_samples: 25 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [12, 12, 12, 12] 21 | modes2: [12, 12, 12, 12] 22 | modes3: [12, 12, 12, 12] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: 0.125 27 | 28 | train: 29 | batchsize: 2 30 | start_iter: 30_001 31 | num_iter: 400_001 32 | milestones: [30_000, 90_000, 150_000, 250_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 10.0 36 | f_loss: 1.0 37 | xy_loss: 50.0 38 | save_step: 10000 39 | eval_step: 10000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [64, 64, 257] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_8s-2200-PINO-s 48 | entity: hzzheng-pino 49 | project: PINO-KF-Re500 50 | group: Re500-1_8s-2200-PINO-s 51 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-800-FNO-s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 100 9 | data_res: [64, 64, 257] # resolution in 1 second 10 | pde_res: [64, 64, 129] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 275 14 | n_test_samples: 25 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [12, 12, 12, 12] 21 | modes2: [12, 12, 12, 12] 22 | modes3: [12, 12, 12, 12] 23 | fc_dim: 128 24 | act: gelu 25 | pad_ratio: [0, 0.125] 26 | 27 | train: 28 | batchsize: 2 29 | start_iter: 0 30 | num_iter: 50_001 31 | milestones: [20_000, 40_000] 32 | base_lr: 0.001 33 | scheduler_gamma: 0.5 34 | ic_loss: 0.0 35 | f_loss: 0.0 36 | xy_loss: 1.0 37 | save_step: 5000 38 | eval_step: 5000 39 | 40 | test: 41 | batchsize: 1 42 | data_res: [64, 64, 257] 43 | ckpt: model-400.pt 44 | 45 | log: 46 | logdir: Re500-1_8s-800-FNO-s 47 | entity: hzzheng-pino 48 | project: PINO-KF-Re500 49 | group: Re500-1_8s-800-FNO-s 50 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-800-FNO-s32.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 100 9 | data_res: [32, 32, 129] # resolution in 1 second 10 | pde_res: [32, 32, 129] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 275 14 | n_test_samples: 25 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [12, 12, 12, 12] 21 | modes2: [12, 12, 12, 12] 22 | modes3: [12, 12, 12, 12] 23 | fc_dim: 128 24 | act: gelu 25 | pad_ratio: [0.0, 0.125] 26 | 27 | train: 28 | batchsize: 2 29 | start_iter: 0 30 | num_iter: 50_001 31 | milestones: [20_000, 40_000] 32 | base_lr: 0.001 33 | scheduler_gamma: 0.5 34 | ic_loss: 0.0 35 | f_loss: 0.0 36 | xy_loss: 1.0 37 | save_step: 5000 38 | eval_step: 5000 39 | 40 | test: 41 | batchsize: 1 42 | data_res: [256, 256, 513] 43 | 44 | log: 45 | logdir: Re500-1_8s-800-FNO-s32 46 | entity: hzzheng-pino 47 | project: PINO-KF-Re500 48 | group: Re500-1_8s-800-FNO-s32 49 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-800-PINO-s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 100 9 | data_res: [64, 64, 257] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 275 13 | testoffset: 275 14 | n_test_samples: 25 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [12, 12, 12, 12] 21 | modes2: [12, 12, 12, 12] 22 | modes3: [12, 12, 12, 12] 23 | fc_dim: 128 24 | act: gelu 25 | pad_ratio: [0.0, 0.125] 26 | 27 | train: 28 | batchsize: 2 29 | start_iter: 0 30 | num_iter: 200_001 31 | milestones: [20_000, 60_000, 120_000] 32 | base_lr: 0.001 33 | scheduler_gamma: 0.5 34 | ic_loss: 10.0 35 | f_loss: 1.0 36 | xy_loss: 10.0 37 | save_step: 5000 38 | eval_step: 5000 39 | 40 | test: 41 | batchsize: 1 42 | data_res: [256, 256, 513] 43 | 44 | log: 45 | logdir: Re500-1_8s-800-PINO-s 46 | entity: hzzheng-pino 47 | project: PINO-KF-Re500 48 | group: Re500-1_8s-800-PINO-s 49 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-800-PINO-s16.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 100 9 | data_res: [16, 16, 65] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 275 13 | testoffset: 275 14 | n_test_samples: 25 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [12, 12, 12, 12] 21 | modes2: [12, 12, 12, 12] 22 | modes3: [12, 12, 12, 12] 23 | fc_dim: 128 24 | act: gelu 25 | pad_ratio: [0.0, 0.125] 26 | 27 | train: 28 | batchsize: 1 29 | start_iter: 0 30 | num_iter: 200_001 31 | milestones: [20_000, 60_000, 120_000] 32 | base_lr: 0.001 33 | scheduler_gamma: 0.5 34 | ic_loss: 10.0 35 | f_loss: 1.0 36 | xy_loss: 10.0 37 | save_step: 5000 38 | eval_step: 5000 39 | 40 | test: 41 | batchsize: 1 42 | data_res: [256, 256, 513] 43 | 44 | log: 45 | logdir: Re500-1_8s-800-PINO-s-16 46 | entity: hzzheng-pino 47 | project: PINO-KF-Re500 48 | group: Re500-1_8s-800-PINO-s-16 49 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-800-PINO-s32.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 100 9 | data_res: [32, 32, 129] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 275 13 | testoffset: 275 14 | n_test_samples: 25 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [12, 12, 12, 12] 21 | modes2: [12, 12, 12, 12] 22 | modes3: [12, 12, 12, 12] 23 | fc_dim: 128 24 | act: gelu 25 | pad_ratio: [0.0, 0.125] 26 | 27 | train: 28 | batchsize: 2 29 | start_iter: 0 30 | num_iter: 200_001 31 | milestones: [20_000, 60_000, 120_000] 32 | base_lr: 0.001 33 | scheduler_gamma: 0.5 34 | ic_loss: 10.0 35 | f_loss: 1.0 36 | xy_loss: 10.0 37 | save_step: 5000 38 | eval_step: 5000 39 | 40 | test: 41 | batchsize: 1 42 | data_res: [64, 64, 257] 43 | 44 | log: 45 | logdir: Re500-1_8s-800-PINO-s-32 46 | entity: hzzheng-pino 47 | project: PINO-KF-Re500 48 | group: Re500-1_8s-800-PINO-s-32 49 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-800-UNet.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['/raid/hongkai/NS-Re500_T300_id0-shuffle.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 100 9 | data_res: [64, 64, 257] # resolution in 1 second 10 | pde_res: [64, 64, 129] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 275 14 | n_test_samples: 25 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | f_maps: 128 20 | 21 | train: 22 | batchsize: 2 23 | start_iter: 0 24 | num_iter: 50_001 25 | milestones: [20_000, 40_000] 26 | base_lr: 0.0002 27 | scheduler_gamma: 0.5 28 | save_step: 5000 29 | eval_step: 5000 30 | 31 | test: 32 | batchsize: 1 33 | data_res: [64, 64, 257] 34 | ckpt: model-5000.pt 35 | 36 | log: 37 | logdir: Re500-1_8s-800-UNet 38 | entity: hzzheng-pino 39 | project: PINO-KF-Re500 40 | group: Re500-1_8s-800-UNet 41 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-dat1.6k-PINO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['../data/NS-Re500_T300_id0.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 200 9 | data_res: [64, 64, 257] # resolution in 1 second 10 | pde_res: [256, 256, 513] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 250 13 | testoffset: 200 14 | n_test_samples: 50 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: 0.0625 27 | 28 | train: 29 | batchsize: 2 30 | epochs: 201 31 | num_iter: 200_001 32 | milestones: [20_000, 70_000, 120_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 1.0 36 | f_loss: 1.0 37 | xy_loss: 5.0 38 | save_step: 5000 39 | eval_step: 5000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [64, 64, 257] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_8s-pde2k-dat16-PINO 48 | entity: hzzheng-pino 49 | project: PINO-NS 50 | group: Re500-1_8s-pde2k-dat16-PINO 51 | -------------------------------------------------------------------------------- /configs/operator/Re500-1_8-dat400-FNO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['../data/NS-Re500_T300_id0.npy'] 4 | Re: 500 5 | offset: 0 6 | total_num: 300 7 | raw_res: [256, 256, 513] 8 | n_data_samples: 50 9 | data_res: [64, 64, 129] # resolution in 1 second 10 | pde_res: [64, 64, 129] # resolution in 1 second 11 | a_offset: 0 12 | n_a_samples: 50 13 | testoffset: 250 14 | n_test_samples: 50 15 | t_duration: 0.125 16 | shuffle: True 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | act: gelu 25 | num_pad: 4 26 | pad_ratio: 0.0625 27 | 28 | train: 29 | batchsize: 2 30 | epochs: 201 31 | num_iter: 100_001 32 | milestones: [10_000, 30_000, 50_000, 70_000] 33 | base_lr: 0.001 34 | scheduler_gamma: 0.5 35 | ic_loss: 0.0 36 | f_loss: 0.0 37 | xy_loss: 1.0 38 | save_step: 5000 39 | eval_step: 5000 40 | 41 | test: 42 | batchsize: 1 43 | data_res: [256, 256, 513] 44 | ckpt: model-400.pt 45 | 46 | log: 47 | logdir: Re500-1_8s-dat400-FNO 48 | entity: hzzheng-pino 49 | project: PINO-NS 50 | group: Re500-1_8s-dat400-FNO 51 | -------------------------------------------------------------------------------- /configs/operator/Re500-1s-FNO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | paths: ['../data/NS-Re500Part0.npy', '../data/NS-Re500Part1.npy', '../data/NS-Re500Part2.npy'] 3 | Re: 500 4 | total_num: 300 5 | offset: 0 6 | n_samples: 200 7 | t_duration: 1.0 8 | data_res: [64, 64, 65] 9 | pde_res: [128, 128, 129] 10 | shuffle: True 11 | 12 | model: 13 | layers: [64, 64, 64, 64, 64] 14 | modes1: [8, 8, 8, 8] 15 | modes2: [8, 8, 8, 8] 16 | modes3: [8, 8, 8, 8] 17 | fc_dim: 128 18 | act: gelu 19 | num_pad: 4 20 | 21 | train: 22 | batchsize: 2 23 | epochs: 501 24 | milestones: [200, 400] 25 | base_lr: 0.001 26 | scheduler_gamma: 0.5 27 | ic_loss: 0.0 28 | f_loss: 0.0 29 | xy_loss: 1.0 30 | save_step: 100 31 | 32 | log: 33 | logdir: Re500-1s-200-FNO 34 | entity: hzzheng-pino 35 | project: 'PINO-NS' 36 | group: 'Re500-1s-200-FNO' 37 | -------------------------------------------------------------------------------- /configs/operator/Re500-3000-FNO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['../data/NS-Re500_T3000_id0.npy'] 4 | Re: 500 5 | total_num: 3000 6 | offset: 0 7 | n_samples: 300 8 | testoffset: 2500 9 | n_test_samples: 500 10 | sub_x: 4 11 | sub_t: 4 12 | t_duration: 1.0 13 | data_res: [64, 64, 65] 14 | pde_res: [256, 256, 65] 15 | shuffle: True 16 | 17 | model: 18 | layers: [64, 64, 64, 64, 64] 19 | modes1: [8, 8, 8, 8] 20 | modes2: [8, 8, 8, 8] 21 | modes3: [8, 8, 8, 8] 22 | fc_dim: 128 23 | act: gelu 24 | num_pad: 4 25 | 26 | train: 27 | batchsize: 4 28 | epochs: 401 29 | milestones: [200] 30 | base_lr: 0.001 31 | scheduler_gamma: 0.5 32 | ic_loss: 0.0 33 | f_loss: 0.0 34 | xy_loss: 1.0 35 | save_step: 50 36 | 37 | log: 38 | logdir: Re500-1s-3000-FNO 39 | entity: hzzheng-pino 40 | project: PINO-NS 41 | group: Re500-1s-3000-FNO 42 | -------------------------------------------------------------------------------- /configs/operator/Re500-3000-PINO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: KF 3 | paths: ['../data/NS-Re500_T3000_id0.npy'] 4 | Re: 500 5 | total_num: 3000 6 | offset: 0 7 | n_samples: 2400 8 | sub_x: 4 9 | sub_t: 4 10 | pde_subx: 1 11 | pde_subt: 2 12 | t_duration: 1.0 13 | data_res: [64, 64, 65] 14 | pde_res: [256, 256, 129] 15 | shuffle: True 16 | 17 | model: 18 | layers: [64, 64, 64, 64, 64] 19 | modes1: [8, 8, 8, 8] 20 | modes2: [8, 8, 8, 8] 21 | modes3: [8, 8, 8, 8] 22 | fc_dim: 128 23 | act: gelu 24 | num_pad: 4 25 | 26 | train: 27 | batchsize: 1 28 | epochs: 401 29 | milestones: [200] 30 | base_lr: 0.001 31 | scheduler_gamma: 0.5 32 | ic_loss: 1.0 33 | f_loss: 1.0 34 | xy_loss: 5.0 35 | save_step: 50 36 | 37 | log: 38 | logdir: Re500-1s-3000-PINO 39 | entity: hzzheng-pino 40 | project: PINO-NS 41 | group: Re500-1s-3000-PINO 42 | -------------------------------------------------------------------------------- /configs/operator/Re500-4000-FNO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | paths: ['../data/NS-T4000.npy'] 3 | Re: 500 4 | total_num: 4000 5 | offset: 0 6 | n_samples: 3200 7 | t_duration: 1.0 8 | data_res: [64, 64, 65] 9 | pde_res: [128, 128, 65] 10 | shuffle: True 11 | 12 | model: 13 | layers: [64, 64, 64, 64, 64] 14 | modes1: [8, 8, 8, 8] 15 | modes2: [8, 8, 8, 8] 16 | modes3: [8, 8, 8, 8] 17 | fc_dim: 128 18 | act: gelu 19 | num_pad: 4 20 | 21 | train: 22 | batchsize: 2 23 | epochs: 501 24 | milestones: [300] 25 | base_lr: 0.001 26 | scheduler_gamma: 0.5 27 | ic_loss: 0.0 28 | f_loss: 0.0 29 | xy_loss: 1.0 30 | save_step: 100 31 | 32 | log: 33 | logdir: Re500-1s-FNO 34 | entity: hzzheng-pino 35 | project: 'PINO-NS' 36 | group: 'Re500-1s-FNO' 37 | -------------------------------------------------------------------------------- /configs/operator/Re500-FNO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | paths: ['../data/NS-Re500Part0.npy', '../data/NS-Re500Part1.npy'] 3 | Re: 500 4 | total_num: 200 5 | offset: 0 6 | n_samples: 700 7 | t_duration: 0.5 8 | data_res: [64, 64, 33] 9 | pde_res: [128, 128, 65] 10 | shuffle: True 11 | 12 | model: 13 | layers: [64, 64, 64, 64, 64] 14 | modes1: [8, 8, 8, 8] 15 | modes2: [8, 8, 8, 8] 16 | modes3: [8, 8, 8, 8] 17 | fc_dim: 128 18 | act: gelu 19 | num_pad: 4 20 | pad_ratio: 0.03125 21 | 22 | train: 23 | batchsize: 2 24 | epochs: 501 25 | milestones: [300] 26 | base_lr: 0.001 27 | scheduler_gamma: 0.5 28 | ic_loss: 0.0 29 | f_loss: 0.0 30 | xy_loss: 1.0 31 | save_step: 100 32 | 33 | test: 34 | batchsize: 1 35 | data_res: [128, 128, 65] 36 | ckpt: model-500.pt 37 | 38 | log: 39 | logdir: Re500-05s-FNO 40 | entity: hzzheng-pino 41 | project: 'PINO-NS' 42 | group: 'Re500-05s-FNO' 43 | -------------------------------------------------------------------------------- /configs/operator/Re500-PINO.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | paths: ['../data/NS-Re500Part0.npy', '../data/NS-Re500Part1.npy'] 3 | Re: 500 4 | total_num: 200 5 | offset: 0 6 | n_samples: 700 7 | t_duration: 0.5 8 | data_res: [64, 64, 33] 9 | pde_res: [128, 128, 65] 10 | shuffle: True 11 | 12 | model: 13 | layers: [64, 64, 64, 64, 64] 14 | modes1: [8, 8, 8, 8] 15 | modes2: [8, 8, 8, 8] 16 | modes3: [8, 8, 8, 8] 17 | fc_dim: 128 18 | act: gelu 19 | num_pad: 4 20 | 21 | train: 22 | batchsize: 2 23 | epochs: 501 24 | milestones: [300] 25 | base_lr: 0.001 26 | scheduler_gamma: 0.5 27 | ic_loss: 1.0 28 | f_loss: 1.0 29 | xy_loss: 5.0 30 | save_step: 100 31 | 32 | test: 33 | batchsize: 1 34 | data_res: [64, 64, 33] 35 | ckpt: model-500.pt 36 | 37 | log: 38 | logdir: Re500-05s-PINO 39 | entity: hzzheng-pino 40 | project: 'PINO-NS' 41 | group: 'Re500-05s-PINO' 42 | 43 | 44 | -------------------------------------------------------------------------------- /configs/pretrain/Darcy-pretrain-deeponet.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: 'Darcy' 3 | datapath: '/mnt/md1/zongyi/piececonst_r421_N1024_smooth1.mat' 4 | total_num: 1024 5 | offset: 0 6 | n_sample: 1000 7 | nx: 421 8 | sub: 7 9 | 10 | model: 11 | branch_layers: [50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50] 12 | trunk_layers: [50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50] 13 | activation: tanh 14 | 15 | train: 16 | batchsize: 20 17 | epochs: 2000 18 | milestones: [400, 800, 1200] 19 | base_lr: 0.001 20 | scheduler_gamma: 0.5 21 | save_dir: 'darcy-deeponet' 22 | save_name: 'darcy-pretrain-deeponet.pt' 23 | 24 | log: 25 | project: 'PINO-Darcy-pretrain' 26 | group: 'deeponet' 27 | 28 | 29 | -------------------------------------------------------------------------------- /configs/pretrain/Darcy-pretrain.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: 'Darcy' 3 | datapath: '/mnt/md1/zongyi/piececonst_r421_N1024_smooth1.mat' 4 | total_num: 1024 5 | offset: 0 6 | n_sample: 1000 7 | nx: 421 8 | sub: 7 9 | pde_sub: 2 10 | 11 | model: 12 | layers: [64, 64, 64, 64, 64] 13 | modes1: [20, 20, 20, 20] 14 | modes2: [20, 20, 20, 20] 15 | fc_dim: 128 16 | act: gelu 17 | 18 | train: 19 | batchsize: 20 20 | epochs: 300 21 | milestones: [100, 150, 200] 22 | base_lr: 0.001 23 | scheduler_gamma: 0.5 24 | f_loss: 1.0 25 | xy_loss: 5.0 26 | save_dir: 'darcy-FDM' 27 | save_name: 'darcy-pretrain-pino.pt' 28 | 29 | log: 30 | project: 'PINO-Darcy-pretrain' 31 | group: 'gelu-pino' 32 | entity: hzzheng-pino 33 | 34 | 35 | -------------------------------------------------------------------------------- /configs/pretrain/Re100-pretrain-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re100_T128_part0.npy' 3 | datapath2: 'data/NS_fine_Re100_T128_part1.npy' 4 | Re: 100 5 | total_num: 100 6 | offset: 0 7 | n_sample: 200 8 | time_interval: 1.0 9 | nx: 128 10 | nt: 128 11 | sub: 1 12 | sub_t: 2 13 | shuffle: True 14 | 15 | model: 16 | layers: [64, 64, 64, 64, 64] 17 | modes1: [8, 8, 8, 8] 18 | modes2: [8, 8, 8, 8] 19 | modes3: [8, 8, 8, 8] 20 | fc_dim: 128 21 | 22 | train: 23 | batchsize: 1 24 | epochs: 150 25 | milestones: [25, 50, 75, 100] 26 | base_lr: 0.001 27 | scheduler_gamma: 0.5 28 | ic_loss: 1.0 29 | f_loss: 1.0 30 | xy_loss: 5.0 31 | save_dir: 'Re100-FDM' 32 | save_name: 'PINO-pretrain-Re100-1s.pt' 33 | 34 | log: 35 | project: 'PINO-pretrain' 36 | group: 'Re100-1s-tanh' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/pretrain/Re200-pretrain-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re200_T128_part0.npy' 3 | datapath2: 'data/NS_fine_Re200_T128_part1.npy' 4 | Re: 200 5 | total_num: 100 6 | offset: 0 7 | n_sample: 200 8 | time_interval: 1.0 9 | nx: 128 10 | nt: 128 11 | sub: 1 12 | sub_t: 2 13 | shuffle: True 14 | 15 | model: 16 | layers: [64, 64, 64, 64, 64] 17 | modes1: [8, 8, 8, 8] 18 | modes2: [8, 8, 8, 8] 19 | modes3: [8, 8, 8, 8] 20 | fc_dim: 128 21 | 22 | train: 23 | batchsize: 1 24 | epochs: 150 25 | milestones: [25, 50, 75, 100] 26 | base_lr: 0.001 27 | scheduler_gamma: 0.5 28 | ic_loss: 1.0 29 | f_loss: 1.0 30 | xy_loss: 5.0 31 | save_dir: 'Re200-FDM' 32 | save_name: 'PINO-pretrain-Re200-1s.pt' 33 | 34 | log: 35 | project: 'PINO-pretrain' 36 | group: 'Re200-1s-tanh' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/pretrain/Re250-pretrain-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re250_T128_part0.npy' 3 | datapath2: 'data/NS_fine_Re250_T128_part1.npy' 4 | Re: 250 5 | total_num: 100 6 | offset: 0 7 | n_sample: 200 8 | time_interval: 1.0 9 | nx: 128 10 | nt: 128 11 | sub: 1 12 | sub_t: 2 13 | shuffle: True 14 | 15 | model: 16 | layers: [64, 64, 64, 64, 64] 17 | modes1: [8, 8, 8, 8] 18 | modes2: [8, 8, 8, 8] 19 | modes3: [8, 8, 8, 8] 20 | fc_dim: 128 21 | 22 | train: 23 | batchsize: 1 24 | epochs: 150 25 | milestones: [25, 50, 75, 100] 26 | base_lr: 0.001 27 | scheduler_gamma: 0.5 28 | ic_loss: 1.0 29 | f_loss: 1.0 30 | xy_loss: 5.0 31 | save_dir: 'Re250-FDM' 32 | save_name: 'PINO-pretrain-Re250-1s.pt' 33 | 34 | log: 35 | project: 'PINO-pretrain' 36 | group: 'Re250-1s-tanh' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/pretrain/Re300-pretrain-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re300_T128_part0.npy' 3 | datapath2: 'data/NS_fine_Re300_T128_part1.npy' 4 | Re: 300 5 | total_num: 100 6 | offset: 0 7 | n_sample: 200 8 | time_interval: 1.0 9 | nx: 128 10 | nt: 128 11 | sub: 1 12 | sub_t: 2 13 | shuffle: True 14 | 15 | model: 16 | layers: [64, 64, 64, 64, 64] 17 | modes1: [8, 8, 8, 8] 18 | modes2: [8, 8, 8, 8] 19 | modes3: [8, 8, 8, 8] 20 | fc_dim: 128 21 | 22 | train: 23 | batchsize: 1 24 | epochs: 150 25 | milestones: [25, 50, 75, 100] 26 | base_lr: 0.001 27 | scheduler_gamma: 0.5 28 | ic_loss: 1.0 29 | f_loss: 1.0 30 | xy_loss: 5.0 31 | save_dir: 'Re300-FDM' 32 | save_name: 'PINO-pretrain-Re300-1s.pt' 33 | 34 | log: 35 | project: 'PINO-pretrain' 36 | group: 'Re300-1s-tanh' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/pretrain/Re350-pretrain-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re350_T128_part0.npy' 3 | datapath2: 'data/NS_fine_Re350_T128_part1.npy' 4 | Re: 350 5 | total_num: 100 6 | offset: 0 7 | n_sample: 200 8 | time_interval: 1.0 9 | nx: 128 10 | nt: 128 11 | sub: 1 12 | sub_t: 2 13 | shuffle: True 14 | 15 | model: 16 | layers: [64, 64, 64, 64, 64] 17 | modes1: [8, 8, 8, 8] 18 | modes2: [8, 8, 8, 8] 19 | modes3: [8, 8, 8, 8] 20 | fc_dim: 128 21 | 22 | train: 23 | batchsize: 1 24 | epochs: 150 25 | milestones: [25, 50, 75, 100] 26 | base_lr: 0.001 27 | scheduler_gamma: 0.5 28 | ic_loss: 1.0 29 | f_loss: 1.0 30 | xy_loss: 5.0 31 | save_dir: 'Re350-FDM' 32 | save_name: 'PINO-pretrain-Re350-1s.pt' 33 | 34 | log: 35 | project: 'PINO-pretrain' 36 | group: 'Re350-1s-tanh' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/pretrain/Re400-pretrain-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re400_T128_part0.npy' 3 | datapath2: 'data/NS_fine_Re400_T128_part1.npy' 4 | Re: 400 5 | total_num: 100 6 | offset: 0 7 | n_sample: 200 8 | time_interval: 1.0 9 | nx: 128 10 | nt: 128 11 | sub: 1 12 | sub_t: 2 13 | shuffle: True 14 | 15 | model: 16 | layers: [64, 64, 64, 64, 64] 17 | modes1: [8, 8, 8, 8] 18 | modes2: [8, 8, 8, 8] 19 | modes3: [8, 8, 8, 8] 20 | fc_dim: 128 21 | 22 | train: 23 | batchsize: 1 24 | epochs: 150 25 | milestones: [25, 50, 75, 100] 26 | base_lr: 0.001 27 | scheduler_gamma: 0.5 28 | ic_loss: 1.0 29 | f_loss: 1.0 30 | xy_loss: 5.0 31 | save_dir: 'Re400-FDM' 32 | save_name: 'PINO-pretrain-Re400-1s.pt' 33 | 34 | log: 35 | project: 'PINO-pretrain' 36 | group: 'Re400-1s-tanh' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/pretrain/Re500-05s-deeponet.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: '/mnt/md1/zongyi/NS_fft_Re500_T4000.npy' 3 | Re: 500 4 | total_num: 4000 5 | offset: 0 6 | n_sample: 400 7 | time_interval: 0.5 8 | nx: 64 9 | nt: 64 10 | sub: 1 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | branch_layers: [100, 100, 100] 16 | trunk_layers: [100, 100, 100] 17 | 18 | train: 19 | batchsize: 20 20 | epochs: 10001 21 | milestones: [2500, 5000, 7500] 22 | base_lr: 0.001 23 | scheduler_gamma: 0.5 24 | save_dir: 'Re500-deepOnet' 25 | save_name: 'DeepONet-pretrain-Re500.pt' 26 | 27 | log: 28 | project: 'PINO-pretrain-ICLR' 29 | group: 'Re500-05s-deepONet' 30 | 31 | 32 | -------------------------------------------------------------------------------- /configs/pretrain/Re500-FNO-1s-100.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: '../data/NS-T4000.npy' 3 | Re: 500 4 | total_num: 4000 5 | offset: 0 6 | n_sample: 100 7 | time_interval: 1 8 | nx: 64 9 | nt: 64 10 | sub: 1 11 | sub_t: 1 12 | shuffle: True 13 | S2: 64 14 | T2: 65 15 | 16 | model: 17 | layers: [64, 64, 64, 64, 64] 18 | modes1: [8, 8, 8, 8] 19 | modes2: [8, 8, 8, 8] 20 | modes3: [8, 8, 8, 8] 21 | fc_dim: 128 22 | act: gelu 23 | 24 | train: 25 | batchsize: 2 26 | epochs: 100_001 27 | milestones: [20_000, 40_000, 60_000, 80_000] 28 | base_lr: 0.001 29 | scheduler_gamma: 0.5 30 | ic_loss: 0.0 31 | f_loss: 0.0 32 | xy_loss: 1.0 33 | save_dir: Re500-FNO-100 34 | save_name: FNO-Re500-1s-100.pt 35 | data_iter: 1 36 | eqn_iter: 0 37 | 38 | log: 39 | entity: hzzheng-pino 40 | project: PINO-Operator-Learning 41 | group: FNO-Re500-1s-100 42 | 43 | 44 | -------------------------------------------------------------------------------- /configs/pretrain/Re500-FNO-1s-200.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: '../data/NS-T4000.npy' 3 | Re: 500 4 | total_num: 4000 5 | offset: 0 6 | n_sample: 200 7 | time_interval: 1 8 | nx: 64 9 | nt: 64 10 | sub: 1 11 | sub_t: 1 12 | shuffle: True 13 | S2: 64 14 | T2: 65 15 | 16 | model: 17 | layers: [64, 64, 64, 64, 64] 18 | modes1: [8, 8, 8, 8] 19 | modes2: [8, 8, 8, 8] 20 | modes3: [8, 8, 8, 8] 21 | fc_dim: 128 22 | act: gelu 23 | 24 | train: 25 | batchsize: 2 26 | epochs: 100_001 27 | milestones: [20_000, 40_000, 60_000, 80_000] 28 | base_lr: 0.001 29 | scheduler_gamma: 0.5 30 | ic_loss: 0.0 31 | f_loss: 0.0 32 | xy_loss: 1.0 33 | save_dir: Re500-FNO-200 34 | save_name: FNO-Re500-1s-200.pt 35 | data_iter: 1 36 | eqn_iter: 0 37 | 38 | log: 39 | entity: hzzheng-pino 40 | project: PINO-Operator-Learning 41 | group: FNO-Re500-1s-200 42 | 43 | 44 | -------------------------------------------------------------------------------- /configs/pretrain/Re500-FNO-1s-400.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: '../data/NS-T4000.npy' 3 | Re: 500 4 | total_num: 4000 5 | offset: 0 6 | n_sample: 400 7 | time_interval: 1 8 | nx: 64 9 | nt: 64 10 | sub: 1 11 | sub_t: 1 12 | shuffle: True 13 | S2: 64 14 | T2: 65 15 | 16 | model: 17 | layers: [64, 64, 64, 64, 64] 18 | modes1: [8, 8, 8, 8] 19 | modes2: [8, 8, 8, 8] 20 | modes3: [8, 8, 8, 8] 21 | fc_dim: 128 22 | act: gelu 23 | 24 | train: 25 | batchsize: 2 26 | epochs: 100_001 27 | milestones: [20_000, 40_000, 60_000, 80_000] 28 | base_lr: 0.001 29 | scheduler_gamma: 0.5 30 | ic_loss: 0.0 31 | f_loss: 0.0 32 | xy_loss: 1.0 33 | save_dir: Re500-FNO-400 34 | save_name: FNO-Re500-1s-400.pt 35 | data_iter: 1 36 | eqn_iter: 0 37 | 38 | log: 39 | entity: hzzheng-pino 40 | project: PINO-Operator-Learning 41 | group: FNO-Re500-1s-400 42 | 43 | 44 | -------------------------------------------------------------------------------- /configs/pretrain/Re500-PINO-1s-100-4v4.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: '../data/NS-T4000.npy' 3 | Re: 500 4 | total_num: 4000 5 | offset: 0 6 | n_sample: 100 7 | time_interval: 1 8 | nx: 64 9 | nt: 64 10 | sub: 1 11 | sub_t: 1 12 | shuffle: True 13 | S2: 64 14 | T2: 65 15 | 16 | model: 17 | layers: [64, 64, 64, 64, 64] 18 | modes1: [8, 8, 8, 8] 19 | modes2: [8, 8, 8, 8] 20 | modes3: [8, 8, 8, 8] 21 | fc_dim: 128 22 | act: gelu 23 | 24 | train: 25 | batchsize: 2 26 | epochs: 40_000 27 | milestones: [10_000, 20_000, 30_000] 28 | base_lr: 0.001 29 | scheduler_gamma: 0.5 30 | ic_loss: 1.0 31 | f_loss: 1.0 32 | xy_loss: 5.0 33 | save_dir: Re500-PINO-1s-100 34 | save_name: PINO-pretrain-Re500-1s-100.pt 35 | data_iter: 4 36 | eqn_iter: 4 37 | 38 | log: 39 | entity: hzzheng-pino 40 | project: PINO-Operator-Learning 41 | group: PINO-Re500-1s-100-4v4 42 | 43 | 44 | -------------------------------------------------------------------------------- /configs/pretrain/Re500-PINO-1s-200-4v4.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: '../data/NS-T4000.npy' 3 | Re: 500 4 | total_num: 4000 5 | offset: 0 6 | n_sample: 200 7 | time_interval: 1 8 | nx: 64 9 | nt: 64 10 | sub: 1 11 | sub_t: 1 12 | shuffle: True 13 | S2: 64 14 | T2: 65 15 | 16 | model: 17 | layers: [64, 64, 64, 64, 64] 18 | modes1: [8, 8, 8, 8] 19 | modes2: [8, 8, 8, 8] 20 | modes3: [8, 8, 8, 8] 21 | fc_dim: 128 22 | act: gelu 23 | 24 | train: 25 | batchsize: 2 26 | epochs: 100_000 27 | milestones: [20_000, 40_000, 60_000, 80_000] 28 | base_lr: 0.001 29 | scheduler_gamma: 0.5 30 | ic_loss: 1.0 31 | f_loss: 1.0 32 | xy_loss: 5.0 33 | save_dir: Re500-PINO-1s-200 34 | save_name: PINO-pretrain-Re500-1s-200.pt 35 | data_iter: 4 36 | eqn_iter: 4 37 | 38 | log: 39 | entity: hzzheng-pino 40 | project: PINO-Operator-Learning 41 | group: PINO-Re500-1s-200-4v4 42 | 43 | 44 | -------------------------------------------------------------------------------- /configs/pretrain/Re500-PINO-1s-400-1v1.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: '../data/NS-T4000.npy' 3 | Re: 500 4 | total_num: 4000 5 | offset: 0 6 | n_sample: 400 7 | time_interval: 1 8 | nx: 64 9 | nt: 64 10 | sub: 1 11 | sub_t: 1 12 | shuffle: True 13 | S2: 64 14 | T2: 65 15 | 16 | model: 17 | layers: [64, 64, 64, 64, 64] 18 | modes1: [8, 8, 8, 8] 19 | modes2: [8, 8, 8, 8] 20 | modes3: [8, 8, 8, 8] 21 | fc_dim: 128 22 | act: gelu 23 | 24 | train: 25 | batchsize: 2 26 | epochs: 40_000 27 | milestones: [10_000, 20_000, 30_000] 28 | base_lr: 0.001 29 | scheduler_gamma: 0.5 30 | ic_loss: 1.0 31 | f_loss: 1.0 32 | xy_loss: 5.0 33 | save_dir: Re500-PINO-1s-400 34 | save_name: PINO-pretrain-Re500-1s-400.pt 35 | data_iter: 4 36 | eqn_iter: 4 37 | 38 | log: 39 | entity: hzzheng-pino 40 | project: PINO-Operator-Learning 41 | group: PINO-Re500-1s-400-4v4 42 | 43 | 44 | -------------------------------------------------------------------------------- /configs/pretrain/Re500-pretrain-05s-4C1.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: '/mnt/md1/zongyi/NS_fft_Re500_T4000.npy' 3 | Re: 500 4 | total_num: 4000 5 | offset: 0 6 | n_sample: 400 7 | time_interval: 0.5 8 | nx: 64 9 | nt: 64 10 | sub: 1 11 | sub_t: 1 12 | shuffle: True 13 | S2: 128 14 | T2: 65 15 | 16 | model: 17 | layers: [64, 64, 64, 64, 64] 18 | modes1: [8, 8, 8, 8] 19 | modes2: [8, 8, 8, 8] 20 | modes3: [8, 8, 8, 8] 21 | fc_dim: 128 22 | 23 | train: 24 | batchsize: 1 25 | epochs: 40000 26 | milestones: [10000, 20000, 30000] 27 | base_lr: 0.001 28 | scheduler_gamma: 0.5 29 | ic_loss: 1.0 30 | f_loss: 1.0 31 | xy_loss: 5.0 32 | save_dir: 'Re500-FDM' 33 | save_name: 'PINO-pretrain-Re500-05s-4C1.pt' 34 | data_iter: 4 # number of update steps on data for each epoch 35 | eqn_iter: 1 # number of update steps on virtual PDE for each epoch 36 | 37 | log: 38 | project: 'PINO-pretrain-ICLR' 39 | group: 'Re500-05s-4C1' 40 | 41 | 42 | -------------------------------------------------------------------------------- /configs/pretrain/Re500-pretrain-05s-4C4.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: '/mnt/md1/zongyi/NS_fft_Re500_T4000.npy' 3 | Re: 500 4 | total_num: 4000 5 | offset: 0 6 | n_sample: 400 7 | time_interval: 0.5 8 | nx: 64 9 | nt: 64 10 | sub: 1 11 | sub_t: 1 12 | shuffle: True 13 | num_ics: 300 14 | S2: 128 15 | T2: 65 16 | 17 | model: 18 | layers: [64, 64, 64, 64, 64] 19 | modes1: [8, 8, 8, 8] 20 | modes2: [8, 8, 8, 8] 21 | modes3: [8, 8, 8, 8] 22 | fc_dim: 128 23 | 24 | train: 25 | batchsize: 1 26 | epochs: 40000 27 | milestones: [10000, 20000, 30000] 28 | base_lr: 0.001 29 | scheduler_gamma: 0.5 30 | ic_loss: 1.0 31 | f_loss: 1.0 32 | xy_loss: 5.0 33 | save_dir: 'Re500-FDM' 34 | save_name: 'PINO-pretrain-Re500-05s-4C4.pt' 35 | data_iter: 4 36 | eqn_iter: 4 37 | 38 | log: 39 | project: 'PINO-pretrain-ICLR' 40 | group: 'Re500-05s-4C4' 41 | 42 | 43 | -------------------------------------------------------------------------------- /configs/pretrain/Re500-pretrain-05s-eqn.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: '/mnt/md1/zongyi/NS_fft_Re500_T4000.npy' 3 | Re: 500 4 | total_num: 4000 5 | offset: 0 6 | n_sample: 4000 7 | time_interval: 0.5 8 | nx: 64 9 | nt: 64 10 | sub: 1 11 | sub_t: 1 12 | shuffle: True 13 | num_ics: 300 14 | S2: 128 15 | T2: 65 16 | 17 | model: 18 | layers: [64, 64, 64, 64, 64] 19 | modes1: [8, 8, 8, 8] 20 | modes2: [8, 8, 8, 8] 21 | modes3: [8, 8, 8, 8] 22 | fc_dim: 128 23 | 24 | train: 25 | batchsize: 1 26 | epochs: 40000 27 | milestones: [10000, 20000, 30000] 28 | base_lr: 0.001 29 | scheduler_gamma: 0.5 30 | ic_loss: 1.0 31 | f_loss: 1.0 32 | xy_loss: 0.0 33 | save_dir: 'Re500-FDM' 34 | save_name: 'PINO-pretrain-Re500-05s-eqn.pt' 35 | data_iter: 0 36 | eqn_iter: 1 37 | 38 | log: 39 | project: 'PINO-pretrain-ICLR' 40 | group: 'Re500-05s-0C1' 41 | 42 | 43 | -------------------------------------------------------------------------------- /configs/pretrain/Re500-pretrain-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re500_T128_part0.npy' 3 | datapath2: 'data/NS_fine_Re500_T128_part1.npy' 4 | Re: 500 5 | total_num: 100 6 | offset: 0 7 | n_sample: 200 8 | time_interval: 1 9 | nx: 128 10 | nt: 128 11 | sub: 1 12 | sub_t: 1 13 | shuffle: True 14 | num_ics: 200 15 | S2: 128 16 | T2: 128 17 | 18 | model: 19 | layers: [64, 64, 64, 64, 64] 20 | modes1: [8, 8, 8, 8] 21 | modes2: [8, 8, 8, 8] 22 | modes3: [8, 8, 8, 8] 23 | fc_dim: 128 24 | 25 | train: 26 | batchsize: 1 27 | epochs: 150 28 | milestones: [25, 50, 75, 100] 29 | base_lr: 0.001 30 | scheduler_gamma: 0.5 31 | ic_loss: 5.0 32 | f_loss: 1.0 33 | xy_loss: 0.0 34 | save_dir: 'Re500-FDM' 35 | save_name: 'PINO-pretrain-Re500-1s-eqn256.pt' 36 | 37 | log: 38 | project: 'PINO-pretrain' 39 | group: 'Re500-1s-eqn' 40 | 41 | 42 | -------------------------------------------------------------------------------- /configs/pretrain/burgers-pretrain.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: Burgers 3 | datapath: '../data/burgers.mat' 4 | total_num: 1000 5 | offset: 0 6 | n_sample: 800 7 | nx: 128 8 | nt: 100 9 | sub: 1 10 | sub_t: 1 11 | 12 | model: 13 | layers: [16, 24, 24, 32, 32] 14 | modes1: [15, 12, 9, 9] 15 | modes2: [15, 12, 9, 9] 16 | fc_dim: 128 17 | act: gelu 18 | num_pad: 4 19 | 20 | train: 21 | batchsize: 20 22 | epochs: 500 23 | milestones: [150, 300, 450] 24 | base_lr: 0.001 25 | scheduler_gamma: 0.5 26 | ic_loss: 10.0 27 | f_loss: 1.0 28 | xy_loss: 0.0 29 | save_dir: 'burgers-FDM' 30 | save_name: 'burgers-pretrain-eqn.pt' 31 | 32 | log: 33 | project: PINO-burgers-pretrain 34 | group: gelu-eqn 35 | entity: hzzheng-pino 36 | 37 | -------------------------------------------------------------------------------- /configs/scratch/Re100-scratch-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re100_T128_part2.npy' 3 | Re: 100 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re100-FDM' 31 | save_name: 'PINO-scratch-Re100-1s.pt' 32 | 33 | log: 34 | project: 'PINO-scratch-tanh' 35 | group: 'Re100-scratch-1s' 36 | 37 | 38 | -------------------------------------------------------------------------------- /configs/scratch/Re200-scratch-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re200_T128_part2.npy' 3 | Re: 200 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re100-FDM' 31 | save_name: 'PINO-scratch-Re200-1s.pt' 32 | 33 | log: 34 | project: 'PINO-scratch-tanh' 35 | group: 'Re200-scratch-1s' 36 | 37 | 38 | -------------------------------------------------------------------------------- /configs/scratch/Re250-scratch-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re250_T128_part2.npy' 3 | Re: 250 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re250-FDM' 31 | save_name: 'PINO-scratch-Re250-1s.pt' 32 | 33 | log: 34 | project: 'PINO-scratch-tanh' 35 | group: 'Re250-scratch-1s' 36 | 37 | 38 | -------------------------------------------------------------------------------- /configs/scratch/Re300-scratch-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re300_T128_part2.npy' 3 | Re: 300 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re300-FDM' 31 | save_name: 'PINO-scratch-Re300-1s.pt' 32 | 33 | log: 34 | project: 'PINO-scratch-tanh' 35 | group: 'Re300-scratch-1s' 36 | 37 | 38 | -------------------------------------------------------------------------------- /configs/scratch/Re350-scratch-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re350_T128_part0.npy' 3 | Re: 350 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re350-FDM' 31 | save_name: 'PINO-scratch-Re350-1s.pt' 32 | 33 | log: 34 | project: 'PINO-scratch-tanh' 35 | group: 'Re350-scratch-1s' 36 | 37 | 38 | -------------------------------------------------------------------------------- /configs/scratch/Re400-scratch-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re400_T128_part0.npy' 3 | Re: 400 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re400-FDM' 31 | save_name: 'PINO-scratch-Re400-1s.pt' 32 | 33 | log: 34 | project: 'PINO-scratch-tanh' 35 | group: 'Re400-scratch-1s' 36 | 37 | 38 | -------------------------------------------------------------------------------- /configs/scratch/Re500-scratch-05s-new.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re500_T128_part2.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 0.5 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 6000 24 | milestones: [1000, 2000, 3000, 4000, 5000] 25 | base_lr: 0.0025 26 | beta1: 0.9 27 | beta2: 0.999 28 | scheduler_gamma: 0.5 29 | ic_loss: 5.0 30 | f_loss: 1.0 31 | xy_loss: 0 32 | save_dir: 'Re500-FDM' 33 | save_name: 'PINO-scratch-05s.pt' 34 | 35 | log: 36 | project: 'PINO-Re500-exp' 37 | group: 'Re500-scratch-128' 38 | 39 | 40 | -------------------------------------------------------------------------------- /configs/scratch/Re500-scratch-05s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_Re500_s256_T100_test.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 20 7 | time_interval: 0.5 8 | nx: 256 9 | nt: 128 10 | sub: 4 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 2500 24 | milestones: [1000, 1500, 2000] 25 | base_lr: 0.0025 26 | beta1: 0.9 27 | beta2: 0.999 28 | scheduler_gamma: 0.5 29 | ic_loss: 5.0 30 | f_loss: 1.0 31 | xy_loss: 0 32 | save_dir: 'Re500-FDM' 33 | save_name: 'PINO-scratch-05s.pt' 34 | 35 | log: 36 | project: 'PINO-Re500-ICLR' 37 | group: 'Re500-scratch-128' 38 | logfile: 'log/pinns-default.csv' 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /configs/scratch/Re500-scratch-1s-progressive.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re500_T128_part2.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: [200, 5800] 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0 30 | save_dir: 'Re500-FDM' 31 | save_name: 'PINO-scratch128-1s.pt' 32 | 33 | log: 34 | project: 'PINO-default' 35 | group: 'Re500-scratch-1s' 36 | 37 | 38 | -------------------------------------------------------------------------------- /configs/scratch/Re500-scratch-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: '../data/NS-Re500Part1.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0 30 | save_dir: 'Re500-FDM' 31 | save_name: 'PINO-scratch128-1s.pt' 32 | 33 | log: 34 | entity: 'hzzheng-pino' 35 | project: 'PINO-NavierStokes' 36 | group: 'Re500-scratch-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/test/Re500-05s-deeponet.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re500_T128_part2.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 300 7 | time_interval: 0.5 8 | nx: 128 9 | nt: 128 10 | sub: 2 11 | sub_t: 2 12 | shuffle: False 13 | 14 | model: 15 | branch_layers: [100, 100, 100] 16 | trunk_layers: [100, 100, 100] 17 | 18 | test: 19 | batchsize: 20 20 | ckpt: 'checkpoints/Re500-deepOnet/DeepONet-pretrain-Re500_10000.pt' 21 | 22 | log: 23 | project: 'PINO-None' 24 | group: 'eval' 25 | 26 | 27 | -------------------------------------------------------------------------------- /configs/test/Re500-05s-test.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_Re500_s256_T100_test.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 20 7 | time_interval: 0.5 8 | nx: 256 9 | nt: 128 10 | sub: 4 11 | sub_t: 1 12 | shuffle: False 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | test: 22 | batchsize: 1 23 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-05s-4k1k.pt' 24 | 25 | log: 26 | project: 'PINO-None' 27 | group: 'eval' 28 | 29 | 30 | -------------------------------------------------------------------------------- /configs/test/Re500-05s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re500_T128_part2.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 300 7 | time_interval: 0.5 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 1 12 | shuffle: False 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | test: 22 | batchsize: 1 23 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-05s-4C1.pt' 24 | 25 | log: 26 | project: 'PINO-None' 27 | group: 'eval' 28 | 29 | 30 | -------------------------------------------------------------------------------- /configs/test/Re500-1s-100.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: '../data/NS-T4000.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 100 7 | time_interval: 1 8 | nx: 64 9 | nt: 64 10 | sub: 1 11 | sub_t: 1 12 | shuffle: False 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | act: gelu 21 | 22 | test: 23 | batchsize: 1 24 | ckpt: checkpoints/Re500-FNO-100/FNO-Re500-1s-100.pt 25 | 26 | log: 27 | entity: hzzheng-pino 28 | project: PINO-NS 29 | group: eval 30 | 31 | 32 | -------------------------------------------------------------------------------- /configs/test/burgers.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: 'Darcy' 3 | datapath: '../data/burgers.mat' 4 | total_num: 1000 5 | offset: 800 6 | n_sample: 200 7 | nx: 128 8 | nt: 100 9 | sub: 1 10 | sub_t: 1 11 | 12 | model: 13 | layers: [16, 24, 24, 32, 32] 14 | modes1: [15, 12, 9, 9] 15 | modes2: [15, 12, 9, 9] 16 | fc_dim: 128 17 | act: gelu 18 | 19 | test: 20 | batchsize: 1 21 | ckpt: 'checkpoints/burgers-FDM/burgers-pretrain-eqn.pt' 22 | 23 | log: 24 | project: 'PINO-burgers-test' 25 | group: 'gelu-test' 26 | 27 | 28 | -------------------------------------------------------------------------------- /configs/test/darcy-deeponet.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: 'Darcy' 3 | datapath: '/mnt/md1/zongyi/piececonst_r421_N1024_smooth2.mat' 4 | total_num: 1000 5 | offset: 0 6 | n_sample: 500 7 | nx: 421 8 | sub: 7 9 | shuffle: False 10 | 11 | model: 12 | branch_layers: [50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50] 13 | trunk_layers: [50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50] 14 | activation: tanh 15 | 16 | test: 17 | batchsize: 1 18 | ckpt: 'checkpoints/darcy-deeponet/darcy-pretrain-deeponet.pt' 19 | 20 | log: 21 | project: 'PINO-Darcy' 22 | group: 'default' 23 | 24 | 25 | -------------------------------------------------------------------------------- /configs/test/darcy.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | name: 'Darcy' 3 | datapath: '/mnt/md1/zongyi/piececonst_r421_N1024_smooth2.mat' 4 | total_num: 1000 5 | offset: 0 6 | n_sample: 500 7 | nx: 421 8 | sub: 7 9 | shuffle: False 10 | 11 | model: 12 | layers: [64, 64, 64, 64, 64] 13 | modes1: [20, 20, 20, 20] 14 | modes2: [20, 20, 20, 20] 15 | fc_dim: 128 16 | act: gelu 17 | 18 | test: 19 | batchsize: 1 20 | ckpt: 'checkpoints/darcy-FDM/darcy-pretrain-eqn.pt' 21 | 22 | log: 23 | project: 'PINO-Darcy' 24 | group: 'default' 25 | 26 | 27 | -------------------------------------------------------------------------------- /configs/transfer/Re100to100-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re100_T128_part2.npy' 3 | Re: 100 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re100-FDM' 31 | save_name: 'PINO-transfer-Re100-1s.pt' 32 | ckpt: 'checkpoints/Re100-FDM/PINO-pretrain-Re100-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re100to100-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re100to200-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re200_T128_part2.npy' 3 | Re: 200 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re200-FDM' 31 | save_name: 'PINO-transfer-Re200-1s.pt' 32 | ckpt: 'checkpoints/Re100-FDM/PINO-pretrain-Re100-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re100to200-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re100to250-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re250_T128_part2.npy' 3 | Re: 250 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re250-FDM' 31 | save_name: 'PINO-transfer-Re250-1s.pt' 32 | ckpt: 'checkpoints/Re100-FDM/PINO-pretrain-Re100-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re100to250-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re100to300-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re300_T128_part2.npy' 3 | Re: 300 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re300-FDM' 31 | save_name: 'PINO-transfer-Re300-1s.pt' 32 | ckpt: 'checkpoints/Re100-FDM/PINO-pretrain-Re100-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re100to300-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re100to350-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re350_T128_part2.npy' 3 | Re: 350 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re350-FDM' 31 | save_name: 'PINO-transfer-Re350-1s.pt' 32 | ckpt: 'checkpoints/Re100-FDM/PINO-pretrain-Re100-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re100to350-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re100to400-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re400_T128_part2.npy' 3 | Re: 400 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re400-FDM' 31 | save_name: 'PINO-transfer-Re400-1s.pt' 32 | ckpt: 'checkpoints/Re100-FDM/PINO-pretrain-Re100-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re100to400-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re100to500-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re500_T128_part2.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0 30 | save_dir: 'Re500-FDM' 31 | save_name: 'PINO-Re500-1s.pt' 32 | ckpt: 'checkpoints/Re100-FDM/PINO-pretrain-Re100-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re100to500-1s' 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /configs/transfer/Re200to100-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re100_T128_part2.npy' 3 | Re: 100 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re100-FDM' 31 | save_name: 'PINO-transfer-Re100-1s.pt' 32 | ckpt: 'checkpoints/Re200-FDM/PINO-pretrain-Re200-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re200to100-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re200to200-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re200_T128_part2.npy' 3 | Re: 200 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re200-FDM' 31 | save_name: 'PINO-transfer-Re200-1s.pt' 32 | ckpt: 'checkpoints/Re200-FDM/PINO-pretrain-Re200-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re200to200-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re200to250-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re250_T128_part2.npy' 3 | Re: 250 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re100-FDM' 31 | save_name: 'PINO-transfer-Re250-1s.pt' 32 | ckpt: 'checkpoints/Re200-FDM/PINO-pretrain-Re200-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re200to250-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re200to300-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re300_T128_part2.npy' 3 | Re: 300 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re300-FDM' 31 | save_name: 'PINO-transfer-Re300-1s.pt' 32 | ckpt: 'checkpoints/Re200-FDM/PINO-pretrain-Re200-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re200to300-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re200to350-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re350_T128_part2.npy' 3 | Re: 350 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re350-FDM' 31 | save_name: 'PINO-transfer-Re350-1s.pt' 32 | ckpt: 'checkpoints/Re200-FDM/PINO-pretrain-Re200-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re200to350-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re200to400-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re400_T128_part2.npy' 3 | Re: 400 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re400-FDM' 31 | save_name: 'PINO-transfer-Re400-1s.pt' 32 | ckpt: 'checkpoints/Re200-FDM/PINO-pretrain-Re200-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re200to400-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re200to500-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re500_T128_part2.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0 30 | save_dir: 'Re500-FDM' 31 | save_name: 'PINO-Re500-1s.pt' 32 | ckpt: 'checkpoints/Re200-FDM/PINO-pretrain-Re200-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re200to500-1s' 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /configs/transfer/Re250to100-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re100_T128_part2.npy' 3 | Re: 100 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re100-FDM' 31 | save_name: 'PINO-Re100-1s.pt' 32 | ckpt: 'checkpoints/Re250-FDM/PINO-pretrain-Re250-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re250to100-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re250to200-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re200_T128_part2.npy' 3 | Re: 200 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re200-FDM' 31 | save_name: 'PINO-Re200-1s.pt' 32 | ckpt: 'checkpoints/Re250-FDM/PINO-pretrain-Re250-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re250to200-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re250to250-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re250_T128_part2.npy' 3 | Re: 250 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re250-FDM' 31 | save_name: 'PINO-Re250-1s.pt' 32 | ckpt: 'checkpoints/Re250-FDM/PINO-pretrain-Re250-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re250to250-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re250to300-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re300_T128_part2.npy' 3 | Re: 300 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re300-FDM' 31 | save_name: 'PINO-Re300-1s.pt' 32 | ckpt: 'checkpoints/Re250-FDM/PINO-pretrain-Re250-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re250to300-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re250to350-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re350_T128_part2.npy' 3 | Re: 350 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re350-FDM' 31 | save_name: 'PINO-Re350-1s.pt' 32 | ckpt: 'checkpoints/Re250-FDM/PINO-pretrain-Re250-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re250to350-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re250to400-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re400_T128_part2.npy' 3 | Re: 400 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re400-FDM' 31 | save_name: 'PINO-Re400-1s.pt' 32 | ckpt: 'checkpoints/Re250-FDM/PINO-pretrain-Re250-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re250to400-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re250to500-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re500_T128_part2.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 10000 24 | milestones: [1000, 2000, 3000, 4000, 5000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0 30 | save_dir: 'Re500-FDM' 31 | save_name: 'PINO-Re500-1s.pt' 32 | ckpt: 'checkpoints/Re250-FDM/PINO-pretrain-Re250-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re250to500-1s' 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /configs/transfer/Re300to100-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re100_T128_part2.npy' 3 | Re: 100 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re100-FDM' 31 | save_name: 'PINO-Re100-1s.pt' 32 | ckpt: 'checkpoints/Re300-FDM/PINO-pretrain-Re300-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re300to100-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re300to200-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re200_T128_part2.npy' 3 | Re: 200 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re200-FDM' 31 | save_name: 'PINO-Re200-1s.pt' 32 | ckpt: 'checkpoints/Re300-FDM/PINO-pretrain-Re300-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re300to200-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re300to250-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re250_T128_part2.npy' 3 | Re: 250 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re250-FDM' 31 | save_name: 'PINO-Re250-1s.pt' 32 | ckpt: 'checkpoints/Re300-FDM/PINO-pretrain-Re300-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re300to250-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re300to300-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re300_T128_part2.npy' 3 | Re: 300 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re300-FDM' 31 | save_name: 'PINO-Re300-1s.pt' 32 | ckpt: 'checkpoints/Re300-FDM/PINO-pretrain-Re300-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re300to300-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re300to350-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re350_T128_part2.npy' 3 | Re: 350 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re350-FDM' 31 | save_name: 'PINO-Re350-1s.pt' 32 | ckpt: 'checkpoints/Re300-FDM/PINO-pretrain-Re300-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re300to350-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re300to400-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re400_T128_part2.npy' 3 | Re: 400 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re400-FDM' 31 | save_name: 'PINO-Re400-1s.pt' 32 | ckpt: 'checkpoints/Re300-FDM/PINO-pretrain-Re300-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re300to400-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re300to500-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re500_T128_part2.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0 30 | save_dir: 'Re500-FDM' 31 | save_name: 'PINO-Re500-1s.pt' 32 | ckpt: 'checkpoints/Re300-FDM/PINO-pretrain-Re300-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re300to500-1s' 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /configs/transfer/Re350to100-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re100_T128_part2.npy' 3 | Re: 100 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re100-FDM' 31 | save_name: 'PINO-Re100-1s.pt' 32 | ckpt: 'checkpoints/Re350-FDM/PINO-pretrain-Re350-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re350to100-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re350to200-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re200_T128_part2.npy' 3 | Re: 200 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re200-FDM' 31 | save_name: 'PINO-Re200-1s.pt' 32 | ckpt: 'checkpoints/Re350-FDM/PINO-pretrain-Re350-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re350to200-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re350to250-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re250_T128_part2.npy' 3 | Re: 250 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re250-FDM' 31 | save_name: 'PINO-Re250-1s.pt' 32 | ckpt: 'checkpoints/Re350-FDM/PINO-pretrain-Re350-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re350to250-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re350to300-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re300_T128_part2.npy' 3 | Re: 300 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re300-FDM' 31 | save_name: 'PINO-Re300-1s.pt' 32 | ckpt: 'checkpoints/Re350-FDM/PINO-pretrain-Re350-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re350to300-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re350to350-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re350_T128_part2.npy' 3 | Re: 350 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re350-FDM' 31 | save_name: 'PINO-Re300-1s.pt' 32 | ckpt: 'checkpoints/Re350-FDM/PINO-pretrain-Re350-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re350to350-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re350to400-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re400_T128_part2.npy' 3 | Re: 400 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re400-FDM' 31 | save_name: 'PINO-Re400-1s.pt' 32 | ckpt: 'checkpoints/Re350-FDM/PINO-pretrain-Re350-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re350to400-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re350to500-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re500_T128_part2.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0 30 | save_dir: 'Re500-FDM' 31 | save_name: 'PINO-Re500-1s.pt' 32 | ckpt: 'checkpoints/Re350-FDM/PINO-pretrain-Re350-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re350to500-1s' 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /configs/transfer/Re400to100-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re100_T128_part2.npy' 3 | Re: 100 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re100-FDM' 31 | save_name: 'PINO-Re100-1s.pt' 32 | ckpt: 'checkpoints/Re400-FDM/PINO-pretrain-Re400-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re400to100-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re400to200-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re200_T128_part2.npy' 3 | Re: 200 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re200-FDM' 31 | save_name: 'PINO-Re200-1s.pt' 32 | ckpt: 'checkpoints/Re400-FDM/PINO-pretrain-Re400-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re400to200-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re400to250-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re250_T128_part2.npy' 3 | Re: 250 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re250-FDM' 31 | save_name: 'PINO-Re250-1s.pt' 32 | ckpt: 'checkpoints/Re400-FDM/PINO-pretrain-Re400-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re400to250-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re400to300-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re300_T128_part2.npy' 3 | Re: 300 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re300-FDM' 31 | save_name: 'PINO-Re300-1s.pt' 32 | ckpt: 'checkpoints/Re400-FDM/PINO-pretrain-Re400-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re400to300-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re400to350-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re350_T128_part2.npy' 3 | Re: 350 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re350-FDM' 31 | save_name: 'PINO-Re350-1s.pt' 32 | ckpt: 'checkpoints/Re400-FDM/PINO-pretrain-Re400-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re400to350-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re400to400-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re400_T128_part2.npy' 3 | Re: 400 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re400-FDM' 31 | save_name: 'PINO-Re400-1s.pt' 32 | ckpt: 'checkpoints/Re400-FDM/PINO-pretrain-Re400-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re400to400-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re400to500-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re500_T128_part2.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0 30 | save_dir: 'Re500-FDM' 31 | save_name: 'PINO-Re500-1s.pt' 32 | ckpt: 'checkpoints/Re400-FDM/PINO-pretrain-Re400-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re400to500-1s' 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /configs/transfer/Re500to100-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re100_T128_part2.npy' 3 | Re: 100 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re100-FDM' 31 | save_name: 'PINO-Re100-1s.pt' 32 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re500to100-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re500to200-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re200_T128_part2.npy' 3 | Re: 200 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re200-FDM' 31 | save_name: 'PINO-Re200-1s.pt' 32 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re500to200-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re500to250-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re250_T128_part2.npy' 3 | Re: 250 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re250-FDM' 31 | save_name: 'PINO-Re250-1s.pt' 32 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re500to250-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re500to300-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re300_T128_part2.npy' 3 | Re: 300 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re300-FDM' 31 | save_name: 'PINO-Re300-1s.pt' 32 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re500to300-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re500to350-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re350_T128_part2.npy' 3 | Re: 350 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re350-FDM' 31 | save_name: 'PINO-Re350-1s.pt' 32 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re500to350-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re500to400-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re400_T128_part2.npy' 3 | Re: 400 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 2 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000, 7000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re400-FDM' 31 | save_name: 'PINO-Re400-1s.pt' 32 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer-tanh' 36 | group: 'Re500to400-1s' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re500to500-05s-new.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re500_s2048_T100.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 300 6 | n_sample: 1 7 | time_interval: 0.5 8 | nx: 256 9 | nt: 128 10 | sub: 2 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re500-FDM' 31 | save_name: 'PINO-Re500-05.pt' 32 | ckpt: 'checkpoints/Re500-FDM/pretrain-Re500-05s-4000.pt' 33 | 34 | log: 35 | project: 'PINO-Re500-exp' 36 | group: 'Re500to500-128-4k-all' 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /configs/transfer/Re500to500-05s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re500_T128_part2.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 0.5 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 5000 24 | milestones: [1000, 2000, 3000, 4000] 25 | base_lr: 0.001 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re500-FDM' 31 | save_name: 'PINO-Re500-1s.pt' 32 | ckpt: 'checkpoints/Re500-FDM/pretrain-Re500-05s-4000.pt' 33 | 34 | log: 35 | project: 'PINO-Re500-exp' 36 | group: 'Re500to500-05s-4layer' 37 | 38 | 39 | -------------------------------------------------------------------------------- /configs/transfer/Re500to500-1s.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | datapath: 'data/NS_fine_Re500_T128_part2.npy' 3 | Re: 500 4 | total_num: 100 5 | offset: 0 6 | n_sample: 1 7 | time_interval: 1.0 8 | nx: 128 9 | nt: 128 10 | sub: 1 11 | sub_t: 1 12 | shuffle: True 13 | 14 | model: 15 | layers: [64, 64, 64, 64, 64] 16 | modes1: [8, 8, 8, 8] 17 | modes2: [8, 8, 8, 8] 18 | modes3: [8, 8, 8, 8] 19 | fc_dim: 128 20 | 21 | train: 22 | batchsize: 1 23 | epochs: 8000 24 | milestones: [1000, 2000, 3000, 4000, 5000, 6000] 25 | base_lr: 0.0025 26 | scheduler_gamma: 0.5 27 | ic_loss: 5.0 28 | f_loss: 1.0 29 | xy_loss: 0.0 30 | save_dir: 'Re500-FDM' 31 | save_name: 'PINO-Re500-1s.pt' 32 | ckpt: 'checkpoints/Re500-FDM/PINO-pretrain-Re500-1s.pt' 33 | 34 | log: 35 | project: 'PINO-transfer' 36 | group: 'Re500to500-1s-new' 37 | 38 | 39 | -------------------------------------------------------------------------------- /deeponet.py: -------------------------------------------------------------------------------- 1 | import yaml 2 | from argparse import ArgumentParser 3 | from baselines.train_ns import train_deeponet_cp 4 | from baselines.test import test_deeponet_ns, test_deeponet_darcy 5 | from baselines.train_darcy import train_deeponet_darcy 6 | 7 | 8 | if __name__ == '__main__': 9 | parser = ArgumentParser(description='Basic paser') 10 | parser.add_argument('--config_path', type=str, help='Path to the configuration file') 11 | parser.add_argument('--mode', type=str, default='train', help='Train or test') 12 | args = parser.parse_args() 13 | 14 | config_file = args.config_path 15 | with open(config_file, 'r') as stream: 16 | config = yaml.load(stream, yaml.FullLoader) 17 | 18 | if args.mode == 'train': 19 | print('Start training DeepONet Cartesian Product') 20 | if 'name' in config['data'] and config['data']['name'] == 'Darcy': 21 | train_deeponet_darcy(config) 22 | else: 23 | train_deeponet_cp(config) 24 | else: 25 | print('Start testing DeepONet Cartesian Product') 26 | if 'name' in config['data'] and config['data']['name'] == 'Darcy': 27 | test_deeponet_darcy(config) 28 | else: 29 | test_deeponet_ns(config) 30 | print('Done!') -------------------------------------------------------------------------------- /docs/pino-diagram4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neuraloperator/physics_informed/3b6bc307c63c64057d0496753bf1af5f44ac5108/docs/pino-diagram4.png -------------------------------------------------------------------------------- /docs/solver-pino-pinn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neuraloperator/physics_informed/3b6bc307c63c64057d0496753bf1af5f44ac5108/docs/solver-pino-pinn.png -------------------------------------------------------------------------------- /download_data.py: -------------------------------------------------------------------------------- 1 | import os 2 | from argparse import ArgumentParser 3 | import requests 4 | from tqdm import tqdm 5 | 6 | 7 | _url_dict = { 8 | 'NS-T4000': 'https://hkzdata.s3.us-west-2.amazonaws.com/PINO/data/NS_fft_Re500_T4000.npy', 9 | 'NS-Re500Part0': 'https://hkzdata.s3.us-west-2.amazonaws.com/PINO/data/NS_fine_Re500_T128_part0.npy', 10 | 'NS-Re500Part1': 'https://hkzdata.s3.us-west-2.amazonaws.com/PINO/data/NS_fine_Re500_T128_part1.npy', 11 | 'NS-Re500Part2': 'https://hkzdata.s3.us-west-2.amazonaws.com/PINO/data/NS_fine_Re500_T128_part2.npy', 12 | 'NS-Re100Part0': 'https://hkzdata.s3.us-west-2.amazonaws.com/PINO/data/NS_fine_Re100_T128_part0.npy', 13 | 'burgers': 'https://hkzdata.s3.us-west-2.amazonaws.com/PINO/data/burgers_pino.mat', 14 | 'NS-Re500_T300_id0': 'https://hkzdata.s3.us-west-2.amazonaws.com/PINO/NS-Re500_T300_id0.npy', 15 | 'NS-Re500_T300_id0-shuffle': 'https://hkzdata.s3.us-west-2.amazonaws.com/PINO/data/NS-Re500_T300_id0-shuffle.npy', 16 | 'darcy-train': 'https://hkzdata.s3.us-west-2.amazonaws.com/PINO/data/piececonst_r421_N1024_smooth1.mat', 17 | 'darcy-test': 'https://hkzdata.s3.us-west-2.amazonaws.com/PINO/data/piececonst_r421_N1024_smooth2.mat', 18 | 'cavity': 'https://hkzdata.s3.us-west-2.amazonaws.com/PINO/data/cavity.mat', 19 | 'Re500-1_8s-800-pino-140k': 'https://hkzdata.s3.us-west-2.amazonaws.com/PINO/checkpoints/Re500-1_8s-800-PINO-140000.pt', 20 | } 21 | 22 | 23 | def download_file(url, file_path): 24 | print('Start downloading...') 25 | with requests.get(url, stream=True) as r: 26 | r.raise_for_status() 27 | with open(file_path, 'wb') as f: 28 | for chunk in tqdm(r.iter_content(chunk_size=256 * 1024 * 1024)): 29 | f.write(chunk) 30 | print('Complete') 31 | 32 | 33 | def main(args): 34 | url = _url_dict[args.name] 35 | file_name = url.split('/')[-1] 36 | os.makedirs(args.outdir, exist_ok=True) 37 | file_path = os.path.join(args.outdir, file_name) 38 | download_file(url, file_path) 39 | 40 | 41 | if __name__ == '__main__': 42 | parser = ArgumentParser(description='Parser for downloading assets') 43 | parser.add_argument('--name', type=str, default='NS-T4000') 44 | parser.add_argument('--outdir', type=str, default='../data') 45 | args = parser.parse_args() 46 | main(args) -------------------------------------------------------------------------------- /inference.py: -------------------------------------------------------------------------------- 1 | ''' 2 | This code generates the prediction on one instance. 3 | Both the ground truth and the prediction are saved in a .pt file. 4 | ''' 5 | import os 6 | import yaml 7 | from argparse import ArgumentParser 8 | 9 | import torch 10 | from torch.utils.data import DataLoader 11 | 12 | from models import FNO3d 13 | 14 | from train_utils.datasets import KFDataset 15 | from train_utils.losses import LpLoss 16 | from train_utils.utils import count_params 17 | 18 | 19 | @torch.no_grad() 20 | def get_pred(args): 21 | with open(args.config, 'r') as stream: 22 | config = yaml.load(stream, yaml.FullLoader) 23 | basedir = os.path.join('exp', config['log']['logdir']) 24 | save_dir = os.path.join(basedir, 'results') 25 | os.makedirs(save_dir, exist_ok=True) 26 | save_path = os.path.join(save_dir,'fno-prediction.pt') 27 | device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') 28 | 29 | # prepare data 30 | dataset = KFDataset(paths=config['data']['paths'], 31 | raw_res=config['data']['raw_res'], 32 | data_res=config['data']['data_res'], 33 | pde_res=config['data']['data_res'], 34 | n_samples=config['data']['n_test_samples'], 35 | total_samples=config['data']['total_test_samples'], 36 | offset=config['data']['testoffset'], 37 | t_duration=config['data']['t_duration']) 38 | dataloader = DataLoader(dataset, batch_size=1, shuffle=False, drop_last=False) 39 | 40 | # create model 41 | model = FNO3d(modes1=config['model']['modes1'], 42 | modes2=config['model']['modes2'], 43 | modes3=config['model']['modes3'], 44 | fc_dim=config['model']['fc_dim'], 45 | layers=config['model']['layers'], 46 | act=config['model']['act'], 47 | pad_ratio=config['model']['pad_ratio']).to(device) 48 | num_params = count_params(model) 49 | print(f'Number of parameters: {num_params}') 50 | if args.ckpt_path: 51 | ckpt = torch.load(args.ckpt_path) 52 | model.load_state_dict(ckpt['model']) 53 | print('Weights loaded from %s' % args.ckpt_path) 54 | # metric 55 | lploss = LpLoss(size_average=True) 56 | model.eval() 57 | truth_list = [] 58 | pred_list = [] 59 | for u, a_in in dataloader: 60 | u, a_in = u.to(device), a_in.to(device) 61 | out = model(a_in) 62 | data_loss = lploss(out, u) 63 | print(data_loss.item()) 64 | truth_list.append(u.cpu()) 65 | pred_list.append(out.cpu()) 66 | truth_arr = torch.cat(truth_list, dim=0) 67 | pred_arr = torch.cat(pred_list, dim=0) 68 | torch.save({ 69 | 'truth': truth_arr, 70 | 'pred': pred_arr, 71 | }, save_path) 72 | 73 | 74 | if __name__ == "__main__": 75 | torch.backends.cudnn.benchmark = True 76 | parser = ArgumentParser() 77 | parser.add_argument('--config', type=str, default='configs/config.yaml') 78 | parser.add_argument('--ckpt_path', type=str, default=None) 79 | args = parser.parse_args() 80 | get_pred(args) -------------------------------------------------------------------------------- /models/FCN.py: -------------------------------------------------------------------------------- 1 | import torch.nn as nn 2 | 3 | 4 | def linear_block(in_channel, out_channel): 5 | block = nn.Sequential( 6 | nn.Linear(in_channel, out_channel), 7 | nn.Tanh() 8 | ) 9 | return block 10 | 11 | 12 | class FCNet(nn.Module): 13 | ''' 14 | Fully connected layers with Tanh as nonlinearity 15 | Reproduced from PINNs Burger equation 16 | ''' 17 | 18 | def __init__(self, layers=[2, 10, 1]): 19 | super(FCNet, self).__init__() 20 | 21 | fc_list = [linear_block(in_size, out_size) 22 | for in_size, out_size in zip(layers, layers[1:-1])] 23 | fc_list.append(nn.Linear(layers[-2], layers[-1])) 24 | self.fc = nn.Sequential(*fc_list) 25 | 26 | def forward(self, x): 27 | return self.fc(x) 28 | 29 | 30 | class DenseNet(nn.Module): 31 | def __init__(self, layers, nonlinearity, out_nonlinearity=None, normalize=False): 32 | super(DenseNet, self).__init__() 33 | 34 | self.n_layers = len(layers) - 1 35 | assert self.n_layers >= 1 36 | if isinstance(nonlinearity, str): 37 | if nonlinearity == 'tanh': 38 | nonlinearity = nn.Tanh 39 | elif nonlinearity == 'relu': 40 | nonlinearity == nn.ReLU 41 | else: 42 | raise ValueError(f'{nonlinearity} is not supported') 43 | self.layers = nn.ModuleList() 44 | 45 | for j in range(self.n_layers): 46 | self.layers.append(nn.Linear(layers[j], layers[j+1])) 47 | 48 | if j != self.n_layers - 1: 49 | if normalize: 50 | self.layers.append(nn.BatchNorm1d(layers[j+1])) 51 | 52 | self.layers.append(nonlinearity()) 53 | 54 | if out_nonlinearity is not None: 55 | self.layers.append(out_nonlinearity()) 56 | 57 | def forward(self, x): 58 | for _, l in enumerate(self.layers): 59 | x = l(x) 60 | 61 | return x 62 | 63 | 64 | -------------------------------------------------------------------------------- /models/__init__.py: -------------------------------------------------------------------------------- 1 | from .FCN import FCNet 2 | from .fourier1d import FNO1d 3 | from .fourier2d import FNO2d 4 | from .fourier3d import FNO3d 5 | -------------------------------------------------------------------------------- /models/fourier1d.py: -------------------------------------------------------------------------------- 1 | import torch.nn as nn 2 | from .basics import SpectralConv1d 3 | from .utils import _get_act 4 | 5 | 6 | class FNO1d(nn.Module): 7 | def __init__(self, 8 | modes, width=32, 9 | layers=None, 10 | fc_dim=128, 11 | in_dim=2, out_dim=1, 12 | act='relu'): 13 | super(FNO1d, self).__init__() 14 | 15 | """ 16 | The overall network. It contains several layers of the Fourier layer. 17 | 1. Lift the input to the desire channel dimension by self.fc0 . 18 | 2. 4 layers of the integral operators u' = (W + K)(u). 19 | W defined by self.w; K defined by self.conv . 20 | 3. Project from the channel space to the output space by self.fc1 and self.fc2 . 21 | 22 | input: the solution of the initial condition and location (a(x), x) 23 | input shape: (batchsize, x=s, c=2) 24 | output: the solution of a later timestep 25 | output shape: (batchsize, x=s, c=1) 26 | """ 27 | 28 | self.modes1 = modes 29 | self.width = width 30 | if layers is None: 31 | layers = [width] * 4 32 | 33 | self.fc0 = nn.Linear(in_dim, layers[0]) # input channel is 2: (a(x), x) 34 | 35 | self.sp_convs = nn.ModuleList([SpectralConv1d( 36 | in_size, out_size, num_modes) for in_size, out_size, num_modes in zip(layers, layers[1:], self.modes1)]) 37 | 38 | self.ws = nn.ModuleList([nn.Conv1d(in_size, out_size, 1) 39 | for in_size, out_size in zip(layers, layers[1:])]) 40 | 41 | self.fc1 = nn.Linear(layers[-1], fc_dim) 42 | self.fc2 = nn.Linear(fc_dim, out_dim) 43 | self.act = _get_act(act) 44 | 45 | def forward(self, x): 46 | length = len(self.ws) 47 | 48 | x = self.fc0(x) 49 | x = x.permute(0, 2, 1) 50 | 51 | for i, (speconv, w) in enumerate(zip(self.sp_convs, self.ws)): 52 | x1 = speconv(x) 53 | x2 = w(x) 54 | x = x1 + x2 55 | if i != length - 1: 56 | x = self.act(x) 57 | 58 | x = x.permute(0, 2, 1) 59 | x = self.fc1(x) 60 | x = self.act(x) 61 | x = self.fc2(x) 62 | return x 63 | 64 | -------------------------------------------------------------------------------- /models/lowrank2d.py: -------------------------------------------------------------------------------- 1 | from .FCN import DenseNet 2 | 3 | import numpy as np 4 | import torch 5 | import torch.nn as nn 6 | 7 | 8 | class LowRank2d(nn.Module): 9 | def __init__(self, in_channels, out_channels): 10 | super(LowRank2d, self).__init__() 11 | self.in_channels = in_channels 12 | self.out_channels = out_channels 13 | 14 | self.phi = DenseNet([2, 64, 128, in_channels*out_channels], torch.nn.ReLU) 15 | self.psi = DenseNet([2, 64, 128, in_channels*out_channels], torch.nn.ReLU) 16 | 17 | def get_grid(self, S1, S2, batchsize, device): 18 | gridx = torch.tensor(np.linspace(0, 1, S1+1)[:-1], dtype=torch.float) 19 | gridx = gridx.reshape(1, S1, 1).repeat([batchsize, 1, S2]) 20 | gridy = torch.tensor(np.linspace(0, 1, S2+1)[:-1], dtype=torch.float) 21 | gridy = gridy.reshape(1, 1, S2).repeat([batchsize, S1, 1]) 22 | return torch.stack((gridx, gridy), dim=-1).to(device) 23 | 24 | def forward(self, x, gridy=None): 25 | # x (batch, channel, x, y) 26 | # y (batch, Ny, 2) 27 | batchsize, size1, size2 = x.shape[0], x.shape[2], x.shape[3] 28 | 29 | gridx = self.get_grid(S1=size1, S2=size2, batchsize=1, device=x.device).reshape(size1 * size2, 2) 30 | if gridy is None: 31 | gridy = self.get_grid(S1=size1, S2=size2, batchsize=batchsize, device=x.device).reshape(batchsize, size1 * size2, 2) 32 | Nx = size1 * size2 33 | Ny = gridy.shape[1] 34 | 35 | phi_eval = self.phi(gridx).reshape(Nx, self.out_channels, self.in_channels) 36 | psi_eval = self.psi(gridy).reshape(batchsize, Ny, self.out_channels, self.in_channels) 37 | x = x.reshape(batchsize, self.in_channels, Nx) 38 | 39 | x = torch.einsum('noi,bin,bmoi->bom', phi_eval, x, psi_eval) / Nx 40 | return x -------------------------------------------------------------------------------- /models/utils.py: -------------------------------------------------------------------------------- 1 | import torch.nn.functional as F 2 | 3 | 4 | def add_padding(x, num_pad): 5 | if max(num_pad) > 0: 6 | res = F.pad(x, (num_pad[0], num_pad[1]), 'constant', 0) 7 | else: 8 | res = x 9 | return res 10 | 11 | 12 | def add_padding2(x, num_pad1, num_pad2): 13 | if max(num_pad1) > 0 or max(num_pad2) > 0: 14 | res = F.pad(x, (num_pad2[0], num_pad2[1], num_pad1[0], num_pad1[1]), 'constant', 0.) 15 | else: 16 | res = x 17 | return res 18 | 19 | 20 | def remove_padding(x, num_pad): 21 | if max(num_pad) > 0: 22 | res = x[..., num_pad[0]:-num_pad[1]] 23 | else: 24 | res = x 25 | return res 26 | 27 | 28 | def remove_padding2(x, num_pad1, num_pad2): 29 | if max(num_pad1) > 0 or max(num_pad2) > 0: 30 | res = x[..., num_pad1[0]:-num_pad1[1], num_pad2[0]:-num_pad2[1]] 31 | else: 32 | res = x 33 | return res 34 | 35 | 36 | def _get_act(act): 37 | if act == 'tanh': 38 | func = F.tanh 39 | elif act == 'gelu': 40 | func = F.gelu 41 | elif act == 'relu': 42 | func = F.relu_ 43 | elif act == 'elu': 44 | func = F.elu_ 45 | elif act == 'leaky_relu': 46 | func = F.leaky_relu_ 47 | else: 48 | raise ValueError(f'{act} is not supported') 49 | return func 50 | 51 | -------------------------------------------------------------------------------- /pinns.py: -------------------------------------------------------------------------------- 1 | from argparse import ArgumentParser 2 | import yaml 3 | 4 | from baselines.pinns_ns_05s import train 5 | from baselines.pinns_ns_50s import train_longtime 6 | from baselines.sapinns import train_sapinn 7 | import csv 8 | 9 | 10 | if __name__ == '__main__': 11 | parser = ArgumentParser(description='Basic paser') 12 | parser.add_argument('--config_path', type=str, help='Path to the configuration file') 13 | parser.add_argument('--log', action='store_true', help='log the results') 14 | parser.add_argument('--start', type=int, default=0, help='start index') 15 | parser.add_argument('--stop', type=int, default=1, help='stopping index') 16 | args = parser.parse_args() 17 | 18 | config_file = args.config_path 19 | with open(config_file, 'r') as stream: 20 | config = yaml.load(stream, yaml.FullLoader) 21 | 22 | with open(config['log']['logfile'], 'a') as f: 23 | writer = csv.writer(f) 24 | writer.writerow(['Index', 'Error in u', 'Error in v', 'Error in w', 'Step', 'Time cost']) 25 | 26 | for i in range(args.start, args.stop): 27 | print(f'Start to solve instance {i}') 28 | if 'time_scale' in config['data']: 29 | train_longtime(i, config, args) 30 | elif config['log']['group'] == 'SA-PINNs': 31 | train_sapinn(i, config, args) 32 | else: 33 | train(i, config, args) 34 | 35 | 36 | -------------------------------------------------------------------------------- /prepare_data.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import matplotlib.pyplot as plt 3 | 4 | 5 | def shuffle_data(datapath): 6 | data = np.load(datapath) 7 | rng = np.random.default_rng(123) 8 | rng.shuffle(data, axis=0) 9 | savepath = datapath.replace('.npy', '-shuffle.npy') 10 | np.save(savepath, data) 11 | 12 | 13 | def test_data(datapath): 14 | raw = np.load(datapath, mmap_mode='r') 15 | print(raw[0, 0, 0, 0:10]) 16 | newpath = datapath.replace('.npy', '-shuffle.npy') 17 | new = np.load(newpath, mmap_mode='r') 18 | print(new[0, 0, 0, 0:10]) 19 | 20 | 21 | def get_slice(datapath): 22 | raw = np.load(datapath, mmap_mode='r') 23 | 24 | data = raw[-10:] 25 | print(data.shape) 26 | savepath = 'data/Re500-5x513x256x256.npy' 27 | np.save(savepath, data) 28 | 29 | 30 | def plot_test(datapath): 31 | duration = 0.125 32 | raw = np.load(datapath, mmap_mode='r') 33 | 34 | 35 | 36 | 37 | if __name__ == '__main__': 38 | # datapath = '../data/NS-Re500_T300_id0.npy' 39 | # shuffle_data(datapath) 40 | # test_data(datapath) 41 | 42 | datapath = '/raid/hongkai/NS-Re500_T300_id0-shuffle.npy' 43 | get_slice(datapath) -------------------------------------------------------------------------------- /profile-solver-legacy.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | import torch 4 | from solver.legacy_solver import navier_stokes_2d, GaussianRF 5 | 6 | import scipy.io 7 | from timeit import default_timer 8 | 9 | 10 | if __name__ == '__main__': 11 | device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') 12 | # Resolution 13 | s = 2048 14 | sub = 1 15 | 16 | # Number of solutions to generate 17 | N = 1 18 | 19 | # Set up 2d GRF with covariance parameters 20 | GRF = GaussianRF(2, s, alpha=2.5, tau=7, device=device) 21 | 22 | # Forcing function: 0.1*(sin(2pi(x+y)) + cos(2pi(x+y))) 23 | t = torch.linspace(0, 1, s + 1, device=device) 24 | t = t[0:-1] 25 | 26 | X, Y = torch.meshgrid(t, t) 27 | f = 0.1 * (torch.sin(2 * math.pi * (X + Y)) + torch.cos(2 * math.pi * (X + Y))) 28 | 29 | # Number of snapshots from solution 30 | record_steps = 200 31 | 32 | # Inputs 33 | a = torch.zeros(N, s, s) 34 | # Solutions 35 | u = torch.zeros(N, s, s, record_steps) 36 | 37 | # Solve equations in batches (order of magnitude speed-up) 38 | 39 | # Batch size 40 | bsize = 1 41 | 42 | c = 0 43 | t0 = default_timer() 44 | for j in range(N // bsize): 45 | # Sample random feilds 46 | w0 = GRF.sample(bsize) 47 | 48 | # Solve NS 49 | sol, sol_t = navier_stokes_2d(w0, f, 1e-3, 50.0, 1e-4, record_steps) 50 | 51 | a[c:(c + bsize), ...] = w0 52 | u[c:(c + bsize), ...] = sol 53 | 54 | c += bsize 55 | t1 = default_timer() 56 | print(f'Time cost {t1 - t0} s') 57 | torch.save( 58 | { 59 | 'a': a.cpu(), 60 | 'u': u.cpu(), 61 | 't': sol_t.cpu() 62 | }, 63 | 'data/ns_data.pt' 64 | ) 65 | # scipy.io.savemat('data/ns_data.mat', mdict={'a': a.cpu().numpy(), 'u': u.cpu().numpy(), 't': sol_t.cpu().numpy()}) -------------------------------------------------------------------------------- /profiler/calmacs.py: -------------------------------------------------------------------------------- 1 | from ptflops import get_model_complexity_info 2 | -------------------------------------------------------------------------------- /run_pino2d.py: -------------------------------------------------------------------------------- 1 | import yaml 2 | from argparse import ArgumentParser 3 | import random 4 | 5 | import torch 6 | 7 | from models import FNO2d 8 | from train_utils import Adam 9 | from torch.utils.data import DataLoader 10 | from train_utils.datasets import DarcyFlow 11 | from train_utils.train_2d import train_2d_operator 12 | 13 | 14 | def train(args, config): 15 | seed = random.randint(1, 10000) 16 | print(f'Random seed :{seed}') 17 | torch.manual_seed(seed) 18 | device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') 19 | data_config = config['data'] 20 | dataset = DarcyFlow(data_config['datapath'], 21 | nx=data_config['nx'], sub=data_config['sub'], 22 | offset=data_config['offset'], num=data_config['n_sample']) 23 | dataloader = DataLoader(dataset, batch_size=config['train']['batchsize']) 24 | model = FNO2d(modes1=config['model']['modes1'], 25 | modes2=config['model']['modes2'], 26 | fc_dim=config['model']['fc_dim'], 27 | layers=config['model']['layers'], 28 | act=config['model']['act']).to(device) 29 | # Load from checkpoint 30 | if 'ckpt' in config['train']: 31 | ckpt_path = config['train']['ckpt'] 32 | ckpt = torch.load(ckpt_path) 33 | model.load_state_dict(ckpt['model']) 34 | print('Weights loaded from %s' % ckpt_path) 35 | optimizer = Adam(model.parameters(), betas=(0.9, 0.999), 36 | lr=config['train']['base_lr']) 37 | scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, 38 | milestones=config['train']['milestones'], 39 | gamma=config['train']['scheduler_gamma']) 40 | train_2d_operator(model, 41 | dataloader, 42 | optimizer, scheduler, 43 | config, rank=0, log=args.log, 44 | project=config['log']['project'], 45 | group=config['log']['group']) 46 | 47 | 48 | if __name__ == '__main__': 49 | torch.backends.cudnn.benchmark = True 50 | parser = ArgumentParser(description='Basic paser') 51 | parser.add_argument('--config_path', type=str, help='Path to the configuration file') 52 | parser.add_argument('--start', type=int, help='Start index of test instance') 53 | parser.add_argument('--stop', type=int, help='Stop index of instances') 54 | parser.add_argument('--log', action='store_true', help='Turn on the wandb') 55 | args = parser.parse_args() 56 | 57 | config_file = args.config_path 58 | with open(config_file, 'r') as stream: 59 | config = yaml.load(stream, yaml.FullLoader) 60 | 61 | for i in range(args.start, args.stop): 62 | print(f'Start solving instance {i}') 63 | config['data']['offset'] = i 64 | train(args, config) 65 | print(f'{args.stop - args.start} instances are solved') -------------------------------------------------------------------------------- /scripts/device1-finetune.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | CUDA_VISIBLE_DEVICES=3 python3 train_PINO3d.py \ 3 | --config_path configs/finetune/Re500-finetune-05s.yaml \ 4 | --start 1 \ 5 | --log; 6 | CUDA_VISIBLE_DEVICES=3 python3 train_PINO3d.py \ 7 | --config_path configs/finetune/Re500-finetune-05s.yaml \ 8 | --start 3 \ 9 | --log; 10 | CUDA_VISIBLE_DEVICES=3 python3 train_PINO3d.py \ 11 | --config_path configs/finetune/Re500-finetune-05s.yaml \ 12 | --start 4 \ 13 | --log; 14 | CUDA_VISIBLE_DEVICES=3 python3 train_PINO3d.py \ 15 | --config_path configs/finetune/Re500-finetune-05s.yaml \ 16 | --start 5 \ 17 | --log; 18 | CUDA_VISIBLE_DEVICES=3 python3 train_PINO3d.py \ 19 | --config_path configs/finetune/Re500-finetune-05s.yaml \ 20 | --start 6 \ 21 | --log; 22 | CUDA_VISIBLE_DEVICES=3 python3 train_PINO3d.py \ 23 | --config_path configs/finetune/Re500-finetune-05s.yaml \ 24 | --start 7 \ 25 | --log; 26 | -------------------------------------------------------------------------------- /scripts/device2-finetune.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | CUDA_VISIBLE_DEVICES=2 python3 train_PINO3d.py \ 3 | --config_path configs/finetune/Re500-finetune-05s4k4.yaml \ 4 | --start 0 \ 5 | --log; 6 | CUDA_VISIBLE_DEVICES=2 python3 train_PINO3d.py \ 7 | --config_path configs/finetune/Re500-finetune-05s4k4.yaml \ 8 | --start 1 \ 9 | --log; 10 | CUDA_VISIBLE_DEVICES=2 python3 train_PINO3d.py \ 11 | --config_path configs/finetune/Re500-finetune-05s4k4.yaml \ 12 | --start 2 \ 13 | --log; 14 | CUDA_VISIBLE_DEVICES=2 python3 train_PINO3d.py \ 15 | --config_path configs/finetune/Re500-finetune-05s4k4.yaml \ 16 | --start 3 \ 17 | --log; 18 | CUDA_VISIBLE_DEVICES=3 python3 train_PINO3d.py \ 19 | --config_path configs/finetune/Re500-finetune-05s4k4.yaml \ 20 | --start 4 \ 21 | --log; 22 | CUDA_VISIBLE_DEVICES=3 python3 train_PINO3d.py \ 23 | --config_path configs/finetune/Re500-finetune-05s4k4.yaml \ 24 | --start 5 \ 25 | --log; 26 | CUDA_VISIBLE_DEVICES=3 python3 train_PINO3d.py \ 27 | --config_path configs/finetune/Re500-finetune-05s4k4.yaml \ 28 | --start 6 \ 29 | --log; 30 | CUDA_VISIBLE_DEVICES=3 python3 train_PINO3d.py \ 31 | --config_path configs/finetune/Re500-finetune-05s4k4.yaml \ 32 | --start 7 \ 33 | --log; 34 | 35 | -------------------------------------------------------------------------------- /scripts/device3.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | CUDA_VISIBLE_DEVICES=3 python3 run_pino3d.py \ 3 | --config_path configs/transfer/Re100to300-1s.yaml \ 4 | --start 0 \ 5 | --stop 40 \ 6 | --log; 7 | CUDA_VISIBLE_DEVICES=3 python3 run_pino3d.py \ 8 | --config_path configs/transfer/Re200to300-1s.yaml \ 9 | --start 0 \ 10 | --stop 40 \ 11 | --log; 12 | CUDA_VISIBLE_DEVICES=3 python3 run_pino3d.py \ 13 | --config_path configs/transfer/Re250to300-1s.yaml \ 14 | --start 0 \ 15 | --stop 40 \ 16 | --log; 17 | CUDA_VISIBLE_DEVICES=3 python3 run_pino3d.py \ 18 | --config_path configs/transfer/Re300to300-1s.yaml \ 19 | --start 0 \ 20 | --stop 40 \ 21 | --log; 22 | CUDA_VISIBLE_DEVICES=3 python3 run_pino3d.py \ 23 | --config_path configs/transfer/Re350to300-1s.yaml \ 24 | --start 0 \ 25 | --stop 40 \ 26 | --log; 27 | CUDA_VISIBLE_DEVICES=3 python3 run_pino3d.py \ 28 | --config_path configs/transfer/Re400to300-1s.yaml \ 29 | --start 0 \ 30 | --stop 40 \ 31 | --log; 32 | -------------------------------------------------------------------------------- /scripts/finetune-4k-2layer.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | CUDA_VISIBLE_DEVICES=1 python3 train_PINO3d.py \ 3 | --config_path configs/finetune/Re500-finetune-05s4k-2layer.yaml \ 4 | --start 9 \ 5 | --log; 6 | CUDA_VISIBLE_DEVICES=1 python3 train_PINO3d.py \ 7 | --config_path configs/finetune/Re500-finetune-05s4k-2layer.yaml \ 8 | --start 10 \ 9 | --log; 10 | CUDA_VISIBLE_DEVICES=1 python3 train_PINO3d.py \ 11 | --config_path configs/finetune/Re500-finetune-05s4k-2layer.yaml \ 12 | --start 11 \ 13 | --log; 14 | CUDA_VISIBLE_DEVICES=1 python3 train_PINO3d.py \ 15 | --config_path configs/finetune/Re500-finetune-05s4k-2layer.yaml \ 16 | --start 12 \ 17 | --log; 18 | CUDA_VISIBLE_DEVICES=1 python3 train_PINO3d.py \ 19 | --config_path configs/finetune/Re500-finetune-05s4k-2layer.yaml \ 20 | --start 13 \ 21 | --log; 22 | CUDA_VISIBLE_DEVICES=1 python3 train_PINO3d.py \ 23 | --config_path configs/finetune/Re500-finetune-05s4k-2layer.yaml \ 24 | --start 14 \ 25 | --log; 26 | CUDA_VISIBLE_DEVICES=1 python3 train_PINO3d.py \ 27 | --config_path configs/finetune/Re500-finetune-05s4k-2layer.yaml \ 28 | --start 15 \ 29 | --log; 30 | CUDA_VISIBLE_DEVICES=1 python3 train_PINO3d.py \ 31 | --config_path configs/finetune/Re500-finetune-05s4k-2layer.yaml \ 32 | --start 16 \ 33 | --log; 34 | CUDA_VISIBLE_DEVICES=1 python3 train_PINO3d.py \ 35 | --config_path configs/finetune/Re500-finetune-05s4k-2layer.yaml \ 36 | --start 17 \ 37 | --log; 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /scripts/finetune-4k0.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | CUDA_VISIBLE_DEVICES=2 python3 train_PINO3d.py \ 3 | --config_path configs/finetune/Re500-finetune-05s4k.yaml \ 4 | --start 9 \ 5 | --log; 6 | 7 | 8 | -------------------------------------------------------------------------------- /scripts/finetune-4k1-2layer.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 3 | --config_path configs/finetune/Re500-finetune-05s-2layer.yaml \ 4 | --start 9 \ 5 | --log; 6 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 7 | --config_path configs/finetune/Re500-finetune-05s-2layer.yaml \ 8 | --start 10 \ 9 | --log; 10 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 11 | --config_path configs/finetune/Re500-finetune-05s-2layer.yaml \ 12 | --start 11 \ 13 | --log; 14 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 15 | --config_path configs/finetune/Re500-finetune-05s-2layer.yaml \ 16 | --start 12 \ 17 | --log; 18 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 19 | --config_path configs/finetune/Re500-finetune-05s-2layer.yaml \ 20 | --start 13 \ 21 | --log; 22 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 23 | --config_path configs/finetune/Re500-finetune-05s-2layer.yaml \ 24 | --start 14 \ 25 | --log; 26 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 27 | --config_path configs/finetune/Re500-finetune-05s-2layer.yaml \ 28 | --start 15 \ 29 | --log; 30 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 31 | --config_path configs/finetune/Re500-finetune-05s-2layer.yaml \ 32 | --start 16 \ 33 | --log; 34 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 35 | --config_path configs/finetune/Re500-finetune-05s-2layer.yaml \ 36 | --start 17 \ 37 | --log; 38 | -------------------------------------------------------------------------------- /scripts/finetune-4k1.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 3 | --config_path configs/finetune/Re500-finetune-05s.yaml \ 4 | --start 9 \ 5 | --log; 6 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 7 | --config_path configs/finetune/Re500-finetune-05s.yaml \ 8 | --start 10 \ 9 | --log; 10 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 11 | --config_path configs/finetune/Re500-finetune-05s.yaml \ 12 | --start 11 \ 13 | --log; 14 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 15 | --config_path configs/finetune/Re500-finetune-05s.yaml \ 16 | --start 12 \ 17 | --log; 18 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 19 | --config_path configs/finetune/Re500-finetune-05s.yaml \ 20 | --start 13 \ 21 | --log; 22 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 23 | --config_path configs/finetune/Re500-finetune-05s.yaml \ 24 | --start 14 \ 25 | --log; 26 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 27 | --config_path configs/finetune/Re500-finetune-05s.yaml \ 28 | --start 15 \ 29 | --log; 30 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 31 | --config_path configs/finetune/Re500-finetune-05s.yaml \ 32 | --start 16 \ 33 | --log; 34 | CUDA_VISIBLE_DEVICES=0 python3 train_PINO3d.py \ 35 | --config_path configs/finetune/Re500-finetune-05s.yaml \ 36 | --start 17 \ 37 | --log; 38 | -------------------------------------------------------------------------------- /scripts/finetune-4k4-2layer.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | CUDA_VISIBLE_DEVICES=2 python3 train_PINO3d.py \ 3 | --config_path configs/finetune/Re500-finetune-05s4k4-2layer.yaml \ 4 | --start 9 \ 5 | --log; 6 | CUDA_VISIBLE_DEVICES=2 python3 train_PINO3d.py \ 7 | --config_path configs/finetune/Re500-finetune-05s4k4-2layer.yaml \ 8 | --start 10 \ 9 | --log; 10 | CUDA_VISIBLE_DEVICES=2 python3 train_PINO3d.py \ 11 | --config_path configs/finetune/Re500-finetune-05s4k4-2layer.yaml \ 12 | --start 11 \ 13 | --log; 14 | CUDA_VISIBLE_DEVICES=2 python3 train_PINO3d.py \ 15 | --config_path configs/finetune/Re500-finetune-05s4k4-2layer.yaml \ 16 | --start 12 \ 17 | --log; 18 | CUDA_VISIBLE_DEVICES=2 python3 train_PINO3d.py \ 19 | --config_path configs/finetune/Re500-finetune-05s4k4-2layer.yaml \ 20 | --start 13 \ 21 | --log; 22 | CUDA_VISIBLE_DEVICES=2 python3 train_PINO3d.py \ 23 | --config_path configs/finetune/Re500-finetune-05s4k4-2layer.yaml \ 24 | --start 14 \ 25 | --log; 26 | CUDA_VISIBLE_DEVICES=2 python3 train_PINO3d.py \ 27 | --config_path configs/finetune/Re500-finetune-05s4k4-2layer.yaml \ 28 | --start 15 \ 29 | --log; 30 | CUDA_VISIBLE_DEVICES=2 python3 train_PINO3d.py \ 31 | --config_path configs/finetune/Re500-finetune-05s4k4-2layer.yaml \ 32 | --start 16 \ 33 | --log; 34 | CUDA_VISIBLE_DEVICES=2 python3 train_PINO3d.py \ 35 | --config_path configs/finetune/Re500-finetune-05s4k4-2layer.yaml \ 36 | --start 17 \ 37 | --log; 38 | 39 | -------------------------------------------------------------------------------- /scripts/fnoRe500.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | #SBATCH --time=24:00:00 3 | #SBATCH --nodes=1 4 | #SBATCH --ntasks-per-node=16 5 | #SBATCH --gres gpu:v100:1 6 | #SBATCH --mem=64G 7 | #SBATCH --email-user=hzzheng@caltech.edu 8 | #SBATCH --mail-type=BEGIN 9 | #SBATCH --mail-type=END 10 | #SBATCH --mail-type=FAIL 11 | 12 | python3 train_operator.py --config_path configs/operator/Re500-FNO.yaml -------------------------------------------------------------------------------- /scripts/ngc_submit_pino.sh: -------------------------------------------------------------------------------- 1 | ngc batch run --name 'ml-model.PINO.ns-dat400' --preempt RESUMABLE \ 2 | --commandline 'cd /Code/PINO; git pull; bash scripts/train_dat400.sh' \ 3 | --image 'nvidia/pytorch:22.08-py3' \ 4 | --priority HIGH \ 5 | --ace nv-us-west-2 \ 6 | --instance dgxa100.40g.1.norm \ 7 | --workspace QsixjfOES8uYIp5kwIDblQ:/Code \ 8 | --datasetid 111345:/mount/data \ 9 | --team nvr-aialgo \ 10 | --result /results 11 | 12 | ngc batch run --name 'ml-model.PINO.ns-dat200' --preempt RESUMABLE \ 13 | --commandline 'cd /Code/PINO; git pull; bash scripts/train_dat200.sh' \ 14 | --image 'nvidia/pytorch:22.08-py3' \ 15 | --priority HIGH \ 16 | --ace nv-us-west-2 \ 17 | --instance dgxa100.40g.1.norm \ 18 | --workspace QsixjfOES8uYIp5kwIDblQ:/Code \ 19 | --datasetid 111345:/mount/data \ 20 | --team nvr-aialgo \ 21 | --result /results 22 | 23 | ngc batch run --name 'ml-model.PINO.ns-dat80' --preempt RESUMABLE \ 24 | --commandline 'cd /Code/PINO; git pull; bash scripts/train_dat80.sh' \ 25 | --image 'nvidia/pytorch:22.08-py3' \ 26 | --priority HIGH \ 27 | --ace nv-us-west-2 \ 28 | --instance dgxa100.40g.1.norm \ 29 | --workspace QsixjfOES8uYIp5kwIDblQ:/Code \ 30 | --datasetid 111345:/mount/data \ 31 | --team nvr-aialgo \ 32 | --result /results 33 | 34 | ngc batch run --name 'ml-model.PINO.ns-dat40' --preempt RESUMABLE \ 35 | --commandline 'cd /Code/PINO; git pull; bash scripts/train_dat40.sh' \ 36 | --image 'nvidia/pytorch:22.08-py3' \ 37 | --priority HIGH \ 38 | --ace nv-us-west-2 \ 39 | --instance dgxa100.40g.1.norm \ 40 | --workspace QsixjfOES8uYIp5kwIDblQ:/Code \ 41 | --datasetid 111345:/mount/data \ 42 | --team nvr-aialgo \ 43 | --result /results 44 | 45 | ngc batch run --name 'ml-model.PINO.ns-dat0' --preempt RESUMABLE \ 46 | --commandline 'cd /Code/PINO; git pull; bash scripts/train_dat0.sh' \ 47 | --image 'nvidia/pytorch:22.08-py3' \ 48 | --priority HIGH \ 49 | --ace nv-us-west-2 \ 50 | --instance dgxa100.40g.1.norm \ 51 | --workspace QsixjfOES8uYIp5kwIDblQ:/Code \ 52 | --datasetid 111345:/mount/data \ 53 | --team nvr-aialgo \ 54 | --result /results 55 | 56 | ngc batch run --name 'ml-model.PINO.ns-res32' --preempt RESUMABLE \ 57 | --commandline 'cd /Code/PINO; git pull; bash scripts/train_res32.sh' \ 58 | --image 'nvidia/pytorch:22.08-py3' \ 59 | --priority HIGH \ 60 | --ace nv-us-west-2 \ 61 | --instance dgxa100.40g.1.norm \ 62 | --workspace QsixjfOES8uYIp5kwIDblQ:/Code \ 63 | --datasetid 111345:/mount/data \ 64 | --team nvr-aialgo \ 65 | --result /results 66 | 67 | ngc batch run --name 'ml-model.PINO.ns-res16' --preempt RESUMABLE \ 68 | --commandline 'cd /Code/PINO; git pull; bash scripts/train_res16.sh' \ 69 | --image 'nvidia/pytorch:22.08-py3' \ 70 | --priority HIGH \ 71 | --ace nv-us-west-2 \ 72 | --instance dgxa100.40g.1.norm \ 73 | --workspace QsixjfOES8uYIp5kwIDblQ:/Code \ 74 | --datasetid 111345:/mount/data \ 75 | --team nvr-aialgo \ 76 | --result /results -------------------------------------------------------------------------------- /scripts/ngc_test_submit_pino.sh: -------------------------------------------------------------------------------- 1 | ngc batch run --name 'ml-model.PINO.ns-dat800' --preempt RESUMABLE \ 2 | --commandline 'cd /Code/PINO; git pull; bash scripts/train_dat800.sh' \ 3 | --image 'nvidia/pytorch:22.08-py3' \ 4 | --priority HIGH \ 5 | --ace nv-us-west-2 \ 6 | --instance dgxa100.40g.1.norm \ 7 | --workspace QsixjfOES8uYIp5kwIDblQ:/Code \ 8 | --datasetid 111345:/mount/data \ 9 | --team nvr-aialgo \ 10 | --result /results -------------------------------------------------------------------------------- /scripts/pretrain.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | CUDA_VISIBLE_DEVICES=0 python3 pretrain.py \ 3 | --config_path configs/pretrain/Re500-pretrain-1s.yaml 4 | 5 | -------------------------------------------------------------------------------- /scripts/scratchRe500.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | CUDA_VISIBLE_DEVICES=2 python3 run_pino3d.py \ 3 | --config_path configs/scratch/Re500-scratch-05s.yaml \ 4 | --start 0 \ 5 | --stop 10 \ 6 | --log -------------------------------------------------------------------------------- /scripts/test-opt/Re500-1_8.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | for i in {0..49} 3 | do 4 | CUDA_VISIBLE_DEVICES=1 python3 instance_opt.py --config configs/instance/Re500-1_8-PINO.yaml --ckpt checkpoints/Re500-1_8s-800-PINO-140000.pt --idx $i --tqdm 5 | done -------------------------------------------------------------------------------- /scripts/train_dat0.sh: -------------------------------------------------------------------------------- 1 | pip install wandb tqdm pyyaml 2 | wandb login 69a3bddb4146cf76113885de5af84c7f4c165753 3 | python3 train_pino.py --config configs/ngc/Re500-1_8-dat40-PINO.yaml --log -------------------------------------------------------------------------------- /scripts/train_dat200.sh: -------------------------------------------------------------------------------- 1 | pip install wandb tqdm pyyaml 2 | wandb login 69a3bddb4146cf76113885de5af84c7f4c165753 3 | python3 train_pino.py --config configs/ngc/Re500-1_8-dat200-PINO.yaml --log -------------------------------------------------------------------------------- /scripts/train_dat40.sh: -------------------------------------------------------------------------------- 1 | pip install wandb tqdm pyyaml 2 | wandb login 69a3bddb4146cf76113885de5af84c7f4c165753 3 | python3 train_pino.py --config configs/ngc/Re500-1_8-dat40-PINO.yaml --log -------------------------------------------------------------------------------- /scripts/train_dat400.sh: -------------------------------------------------------------------------------- 1 | pip install wandb tqdm pyyaml 2 | wandb login 69a3bddb4146cf76113885de5af84c7f4c165753 3 | python3 train_pino.py --config configs/ngc/Re500-1_8-dat400-PINO.yaml --log -------------------------------------------------------------------------------- /scripts/train_dat80.sh: -------------------------------------------------------------------------------- 1 | pip install wandb tqdm pyyaml 2 | wandb login 69a3bddb4146cf76113885de5af84c7f4c165753 3 | python3 train_pino.py --config configs/ngc/Re500-1_8-dat80-PINO.yaml --log -------------------------------------------------------------------------------- /scripts/train_dat800.sh: -------------------------------------------------------------------------------- 1 | pip install wandb tqdm pyyaml 2 | wandb login 69a3bddb4146cf76113885de5af84c7f4c165753 3 | python3 train_pino.py --config configs/ngc/Re500-1_8-dat800-PINO.yaml --log -------------------------------------------------------------------------------- /scripts/train_res16.sh: -------------------------------------------------------------------------------- 1 | pip install wandb tqdm pyyaml 2 | wandb login 69a3bddb4146cf76113885de5af84c7f4c165753 3 | python3 train_pino.py --config configs/ngc/Re500-1_8-res16-PINO.yaml --log -------------------------------------------------------------------------------- /scripts/train_res32.sh: -------------------------------------------------------------------------------- 1 | pip install wandb tqdm pyyaml 2 | wandb login 69a3bddb4146cf76113885de5af84c7f4c165753 3 | python3 train_pino.py --config configs/ngc/Re500-1_8-res32-PINO.yaml --log -------------------------------------------------------------------------------- /solver/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neuraloperator/physics_informed/3b6bc307c63c64057d0496753bf1af5f44ac5108/solver/__init__.py -------------------------------------------------------------------------------- /solver/rfsampler.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import math 3 | 4 | 5 | class GaussianRF(object): 6 | def __init__(self, dim, size, alpha=2, tau=3, sigma=None, boundary="periodic", device=None): 7 | self.dim = dim 8 | self.device = device 9 | if sigma is None: 10 | sigma = tau ** (0.5 * (2 * alpha - self.dim)) 11 | 12 | k_max = size // 2 13 | 14 | if dim == 1: 15 | k = torch.cat((torch.arange(start=0, end=k_max, step=1, device=device), \ 16 | torch.arange(start=-k_max, end=0, step=1, device=device)), 0) 17 | 18 | self.sqrt_eig = size * math.sqrt(2.0) * sigma * ( 19 | (4 * (math.pi ** 2) * (k ** 2) + tau ** 2) ** (-alpha / 2.0)) 20 | self.sqrt_eig[0] = 0.0 21 | 22 | elif dim == 2: 23 | wavenumers = torch.cat((torch.arange(start=0, end=k_max, step=1, device=device), \ 24 | torch.arange(start=-k_max, end=0, step=1, device=device)), 0).repeat(size, 1) 25 | 26 | k_x = wavenumers.transpose(0, 1) 27 | k_y = wavenumers 28 | 29 | self.sqrt_eig = (size ** 2) * math.sqrt(2.0) * sigma * ( 30 | (4 * (math.pi ** 2) * (k_x ** 2 + k_y ** 2) + tau ** 2) ** (-alpha / 2.0)) 31 | self.sqrt_eig[0, 0] = 0.0 32 | 33 | elif dim == 3: 34 | wavenumers = torch.cat((torch.arange(start=0, end=k_max, step=1, device=device), \ 35 | torch.arange(start=-k_max, end=0, step=1, device=device)), 0).repeat(size, size, 1) 36 | 37 | k_x = wavenumers.transpose(1, 2) 38 | k_y = wavenumers 39 | k_z = wavenumers.transpose(0, 2) 40 | 41 | self.sqrt_eig = (size ** 3) * math.sqrt(2.0) * sigma * ( 42 | (4 * (math.pi ** 2) * (k_x ** 2 + k_y ** 2 + k_z ** 2) + tau ** 2) ** (-alpha / 2.0)) 43 | self.sqrt_eig[0, 0, 0] = 0.0 44 | 45 | self.size = [] 46 | for j in range(self.dim): 47 | self.size.append(size) 48 | 49 | self.size = tuple(self.size) 50 | 51 | def sample(self, N): 52 | 53 | coeff = torch.randn(N, *self.size, 2, device=self.device) 54 | 55 | coeff[..., 0] = self.sqrt_eig * coeff[..., 0] 56 | coeff[..., 1] = self.sqrt_eig * coeff[..., 1] 57 | 58 | u = torch.ifft(coeff, self.dim, normalized=False) 59 | u = u[..., 0] 60 | 61 | return u 62 | -------------------------------------------------------------------------------- /train_utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .adam import Adam 2 | from .datasets import NSLoader, DarcyFlow 3 | from .losses import get_forcing, LpLoss -------------------------------------------------------------------------------- /train_utils/data_utils.py: -------------------------------------------------------------------------------- 1 | from torch.utils import data 2 | 3 | 4 | def sample_data(loader): 5 | while True: 6 | for batch in loader: 7 | yield batch 8 | 9 | 10 | def data_sampler(dataset, shuffle, distributed): 11 | if distributed: 12 | return data.distributed.DistributedSampler(dataset, shuffle=shuffle) 13 | 14 | if shuffle: 15 | return data.RandomSampler(dataset) 16 | 17 | else: 18 | return data.SequentialSampler(dataset) -------------------------------------------------------------------------------- /train_utils/distributed.py: -------------------------------------------------------------------------------- 1 | import os 2 | import torch 3 | import torch.distributed as dist 4 | 5 | 6 | def setup(rank, world_size): 7 | os.environ['MASTER_ADDR'] = 'localhost' 8 | os.environ['MASTER_PORT'] = '7777' 9 | dist.init_process_group("nccl", rank=rank, world_size=world_size) 10 | 11 | 12 | def cleanup(): 13 | dist.destroy_process_group() 14 | 15 | 16 | def get_world_size(): 17 | if not dist.is_available() or not dist.is_initialized(): 18 | return 1 19 | 20 | return dist.get_world_size() 21 | 22 | 23 | def all_reduce_mean(tensor): 24 | ''' 25 | Reduce the tensor across all machines, the operation is in-place. 26 | :param tensor: tensor to reduce 27 | :return: reduced tensor 28 | ''' 29 | if not dist.is_available() or not dist.is_initialized(): 30 | return tensor 31 | 32 | world_size = get_world_size() 33 | dist.all_reduce(tensor, op=dist.ReduceOp.SUM) 34 | return tensor.div_(world_size) 35 | 36 | 37 | def reduce_sum(tensor): 38 | ''' 39 | Reduce the tensor across all machines. Only process with rank 0 will receive the final result 40 | Args: 41 | tensor: input and ouput of the collective. The function operates in-place 42 | Returns: 43 | final result 44 | ''' 45 | if not dist.is_available() or not dist.is_initialized(): 46 | return tensor 47 | 48 | dist.reduce(tensor, dst=0, op=dist.ReduceOp.SUM) 49 | return tensor 50 | 51 | 52 | def reduce_loss_dict(loss_dict): 53 | if not dist.is_available() or dist.is_initialized(): 54 | return loss_dict 55 | world_size = get_world_size() 56 | 57 | if world_size < 2: 58 | return loss_dict 59 | 60 | with torch.no_grad(): 61 | keys = [] 62 | losses = [] 63 | 64 | for k in sorted(loss_dict.keys()): 65 | keys.append(k) 66 | losses.append(loss_dict[k]) 67 | 68 | losses = torch.stack(losses, 0) 69 | dist.reduce(losses, dst=0) 70 | 71 | if dist.get_rank() == 0: 72 | losses /= world_size 73 | 74 | reduced_losses = {k: v for k, v in zip(keys, losses)} 75 | 76 | return reduced_losses -------------------------------------------------------------------------------- /train_utils/eval_2d.py: -------------------------------------------------------------------------------- 1 | from tqdm import tqdm 2 | import numpy as np 3 | 4 | import torch 5 | 6 | from .losses import LpLoss, darcy_loss, PINO_loss 7 | 8 | try: 9 | import wandb 10 | except ImportError: 11 | wandb = None 12 | 13 | 14 | def eval_darcy(model, 15 | dataloader, 16 | config, 17 | device, 18 | use_tqdm=True): 19 | model.eval() 20 | myloss = LpLoss(size_average=True) 21 | if use_tqdm: 22 | pbar = tqdm(dataloader, dynamic_ncols=True, smoothing=0.05) 23 | else: 24 | pbar = dataloader 25 | 26 | mesh = dataloader.dataset.mesh 27 | mollifier = torch.sin(np.pi * mesh[..., 0]) * torch.sin(np.pi * mesh[..., 1]) * 0.001 28 | mollifier = mollifier.to(device) 29 | f_val = [] 30 | test_err = [] 31 | 32 | with torch.no_grad(): 33 | for x, y in pbar: 34 | x, y = x.to(device), y.to(device) 35 | 36 | pred = model(x).reshape(y.shape) 37 | pred = pred * mollifier 38 | 39 | data_loss = myloss(pred, y) 40 | a = x[..., 0] 41 | f_loss = darcy_loss(pred, a) 42 | 43 | test_err.append(data_loss.item()) 44 | f_val.append(f_loss.item()) 45 | if use_tqdm: 46 | pbar.set_description( 47 | ( 48 | f'Equation error: {f_loss.item():.5f}, test l2 error: {data_loss.item()}' 49 | ) 50 | ) 51 | mean_f_err = np.mean(f_val) 52 | std_f_err = np.std(f_val, ddof=1) / np.sqrt(len(f_val)) 53 | 54 | mean_err = np.mean(test_err) 55 | std_err = np.std(test_err, ddof=1) / np.sqrt(len(test_err)) 56 | 57 | print(f'==Averaged relative L2 error mean: {mean_err}, std error: {std_err}==\n' 58 | f'==Averaged equation error mean: {mean_f_err}, std error: {std_f_err}==') 59 | 60 | 61 | def eval_burgers(model, 62 | dataloader, 63 | v, 64 | config, 65 | device, 66 | use_tqdm=True): 67 | model.eval() 68 | myloss = LpLoss(size_average=True) 69 | if use_tqdm: 70 | pbar = tqdm(dataloader, dynamic_ncols=True, smoothing=0.05) 71 | else: 72 | pbar = dataloader 73 | 74 | test_err = [] 75 | f_err = [] 76 | 77 | for x, y in pbar: 78 | x, y = x.to(device), y.to(device) 79 | out = model(x).reshape(y.shape) 80 | data_loss = myloss(out, y) 81 | 82 | loss_u, f_loss = PINO_loss(out, x[:, 0, :, 0], v) 83 | test_err.append(data_loss.item()) 84 | f_err.append(f_loss.item()) 85 | 86 | mean_f_err = np.mean(f_err) 87 | std_f_err = np.std(f_err, ddof=1) / np.sqrt(len(f_err)) 88 | 89 | mean_err = np.mean(test_err) 90 | std_err = np.std(test_err, ddof=1) / np.sqrt(len(test_err)) 91 | 92 | print(f'==Averaged relative L2 error mean: {mean_err}, std error: {std_err}==\n' 93 | f'==Averaged equation error mean: {mean_f_err}, std error: {std_f_err}==') 94 | 95 | -------------------------------------------------------------------------------- /train_utils/eval_3d.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn.functional as F 3 | 4 | from tqdm import tqdm 5 | from timeit import default_timer 6 | 7 | from .losses import LpLoss, PINO_loss3d 8 | 9 | try: 10 | import wandb 11 | except ImportError: 12 | wandb = None 13 | 14 | 15 | def eval_ns(model, # model 16 | loader, # dataset instance 17 | dataloader, # dataloader 18 | forcing, # forcing 19 | config, # configuration dict 20 | device, # device id 21 | log=False, 22 | project='PINO-default', 23 | group='FDM', 24 | tags=['Nan'], 25 | use_tqdm=True): 26 | ''' 27 | Evaluate the model for Navier Stokes equation 28 | ''' 29 | if wandb and log: 30 | run = wandb.init(project=project, 31 | entity=config['log']['entity'], 32 | group=group, 33 | config=config, 34 | tags=tags, reinit=True, 35 | settings=wandb.Settings(start_method="fork")) 36 | # data parameters 37 | v = 1 / config['data']['Re'] 38 | S, T = loader.S, loader.T 39 | t_interval = config['data']['time_interval'] 40 | # eval settings 41 | batch_size = config['test']['batchsize'] 42 | 43 | model.eval() 44 | myloss = LpLoss(size_average=True) 45 | if use_tqdm: 46 | pbar = tqdm(dataloader, dynamic_ncols=True, smoothing=0.05) 47 | else: 48 | pbar = dataloader 49 | loss_dict = {'f_error': 0.0, 50 | 'test_l2': 0.0} 51 | start_time = default_timer() 52 | with torch.no_grad(): 53 | for x, y in pbar: 54 | x, y = x.to(device), y.to(device) 55 | x_in = F.pad(x, (0, 0, 0, 5), "constant", 0) 56 | out = model(x_in).reshape(batch_size, S, S, T + 5) 57 | out = out[..., :-5] 58 | x = x[:, :, :, 0, -1] 59 | loss_l2 = myloss(out.view(batch_size, S, S, T), y.view(batch_size, S, S, T)) 60 | loss_ic, loss_f = PINO_loss3d(out.view(batch_size, S, S, T), x, forcing, v, t_interval) 61 | 62 | loss_dict['f_error'] += loss_f 63 | loss_dict['test_l2'] += loss_l2 64 | if device == 0 and use_tqdm: 65 | pbar.set_description( 66 | ( 67 | f'Train f error: {loss_f.item():.5f}; Test l2 error: {loss_l2.item():.5f}' 68 | ) 69 | ) 70 | end_time = default_timer() 71 | test_l2 = loss_dict['test_l2'].item() / len(dataloader) 72 | loss_f = loss_dict['f_error'].item() / len(dataloader) 73 | print(f'==Averaged relative L2 error is: {test_l2}==\n' 74 | f'==Averaged equation error is: {loss_f}==') 75 | print(f'Time cost: {end_time - start_time} s') 76 | if device == 0: 77 | if wandb and log: 78 | wandb.log( 79 | { 80 | 'Train f error': loss_f, 81 | 'Test L2 error': test_l2, 82 | } 83 | ) 84 | run.finish() 85 | --------------------------------------------------------------------------------