# Configurations



Here we summarize all the baseline configurations in this file, readers can also search the original paper and their published codes to check.



## 1D Burgers:



### FNO / SKNO:

ntrain = 1000

ntest = 100

sub = 2**6 #subsampling rate

h = 2**13 // sub #total grid size divided by the subsampling rate

batch_size = 20

learning_rate = 0.001

epochs = 500

iterations = epochs*(ntrain//batch_size)

modes = 16

width = 64

(SKNO: Bi_Momentum_Evolution_2d_Spatial_Low_Freqency: FC+Diag; Hidden_Position_Space_Momentum_2d_Evolution_Spatial_Low_Freqency: FC+Diag)



### Transolver (Other keeps the default settings):

--model Transolver_Irregular_Mesh \

--n-hidden 256 \

--n-heads 8 \

--n-layers 8 \

--lr 0.001 \

--max_grad_norm 0.1 \

--batch-size 4 \

--slice_num 64 \

--unified_pos 1 \

--ref 8 \

--downsample 5 \



## 2D_Darcy



### FNO / SKNO:

ntrain = 1000

ntest = 100

batch_size = 20

learning_rate = 0.001

epochs = 500

iterations = epochs*(ntrain//batch_size)

modes = 12

width = 32

r = 5

h = int(((421 - 1)/r) + 1)

(SKNO: Bi_Momentum_Evolution_2d_Spatial_Low_Freqency: FC; Hidden_Position_Space_Momentum_2d_Evolution_Spatial_Low_Freqency: Diag + Local Prop)



### Transolver (Other keeps the default settings):

--model Transolver_Structured_Mesh_2D \

--n-hidden 128 \

--n-heads 8 \

--n-layers 8 \

--lr 0.001 \

--max_grad_norm 0.1 \

--batch-size 4 \

--slice_num 64 \

--unified_pos 1 \

--ref 8 \

--downsample 5 \

(Remove the prior Regularization in Loss to keep fairness)



### DeepONet

ntrain = 1000

ntest = 100

batch_size = 20

learning_rate = 0.001

epochs = 500

embedding_dim = 32

r = 5

h = int(((421 - 1)/r) + 1)



### CNO

```python
    training_properties = {
        "learning_rate": 0.001, 
        "weight_decay": 1e-6,
        "scheduler_step": 10,
        "scheduler_gamma": 0.98,
        "epochs": 500,    # or 2500
        "batch_size": 20,
        "exp": 2,                # Do we use L1 or L2 errors? Default: L1
        "training_samples": 500  # How many training samples?
    }
    model_architecture_ = {
        
        #Parameters to be chosen with model selection:
        "N_layers": 3,            # Number of (D) & (U) blocks 
        "channel_multiplier": 48, # Parameter d_e (how the number of channels changes)
        "N_res": 4,               # Number of (R) blocks in the middle networs.
        "N_res_neck" : 4,         # Number of (R) blocks in the BN
        
        #Other parameters:
        "in_size": 85,            # Resolution of the computational grid
        "retrain": 0,             # Random seed
        "kernel_size": 3,         # Kernel size.
        "FourierF": 0,            # Number of Fourier Features in the input channels. Default is 0.
        "activation": 'cno_lrelu',    # cno_lrelu or cno_lrelu_torch or lrelu or 
        
        #Filter properties:
        "cutoff_den": 2.0001,     # Cutoff parameter.
        "lrelu_upsampling": 2,    # Coefficient N_{\sigma}. Default is 2.
        "half_width_mult": 0.8,   # Coefficient c_h. Default is 1
        "filter_size": 6,         # 2xfilter_size is the number of taps N_{tap}. Default is 6.
        "radial_filter": 0,       # Is the filter radially symmetric? Default is 0 - NO.
    }
```



## 2D GS



### FNO / SKNO:

ntrain = 200

ntest = 20

modes = 12

width = 24

batch_size = 20

learning_rate = 0.001

epochs = 500

iterations = epochs*(ntrain//batch_size)

sub = 1

S = 64

T_in = 10

T = 10

step = 1

(SKNO: Bi_Momentum_Evolution_2d_Spatial_Low_Freqency: FC+Diag; Hidden_Position_Space_Momentum_2d_Evolution_Spatial_Low_Freqency: FC+Diag)



### Transolver (Other keeps the default settings):

--model Transolver_Structured_Mesh_2D \

--n-hidden 256 \

--n-heads 8 \

--n-layers 8 \

--lr 0.001 \

--batch-size 2 \

--slice_num 32 \

--unified_pos 1 \

--ref 8 \



### DeepONet

ntrain = 200

ntest = 20

embedding_dim = 24

batch_size = 20

learning_rate = 0.001

epochs = 500

sub = 1

S = 64

T_in = 10

T = 10

step = 1





## 2D incompressible NS (Both 1e-4 and 1e-5)



### FNO / SKNO:

ntrain = 1000

ntest = 200

modes = 12

width = 24

batch_size = 20

learning_rate = 0.001

epochs = 3000

iterations = epochs*(ntrain//batch_size)

sub = 1

S = 64

T_in = 10

T = 10

step = 1

(SKNO: Bi_Momentum_Evolution_2d_Spatial_Low_Freqency: FC + Diag; Hidden_Position_Space_Momentum_2d_Evolution_Spatial_Low_Freqency: FC + Diag + Local Prop)



### Transolver (Other keeps the default settings)

--model Transolver_Structured_Mesh_2D \

--n-hidden 256 \

--n-heads 8 \

--n-layers 8 \

--lr 0.001 \

--batch-size 2 \

--slice_num 32 \

--unified_pos 1 \

--ref 8 \



### DeepONet

ntrain = 1000

ntest = 200

embedding_dim = 24

batch_size = 20

learning_rate = 0.001

epochs = 30000

sub = 1

S = 64

T_in = 10

T = 10

step = 1



## 2D Shallow Water





### FNO / SKNO:

ntrain = 500

ntest = 300

modes = 8

width = 24

batch_size = 10

learning_rate = 0.001

epochs = 500

iterations = epochs*(ntrain//batch_size)

sub = 1

S = 128

T_in = 10

T = 10

step = 1

(SKNO: Bi_Momentum_Evolution_2d_Spatial_Low_Freqency: FC + Diag; Hidden_Position_Space_Momentum_2d_Evolution_Spatial_Low_Freqency: FC + Diag)

(Training with

def random_resize_tensor(x, y, resolutions, target_size):

​    res = random.choice(resolutions)

​    down_sample_factor = target_size // res

​    x = x[:, ::down_sample_factor, ::down_sample_factor, :]

​    y = y[:, ::down_sample_factor, ::down_sample_factor, :]

​    return x, y, res

)



### Transolver (Other keeps the default settings)

--model Transolver_Irregular_Mesh \

--n-hidden 256 \

--n-heads 8 \

--n-layers 6 \

--lr 0.001 \

--batch-size 2 \

--slice_num 32 \

--unified_pos 1 \

--ref 8 \



### DeepONet

ntrain = 500

ntest = 300

embedding_dim = 24

batch_size = 10

learning_rate = 0.001

epochs = 500

sub = 1

S = 128

T_in = 10

T = 10

step = 1





### CNO

training_properties = {

​        "learning_rate": 0.001, 

​        "weight_decay": 1e-6,

​        "scheduler_step": 10,

​        "scheduler_gamma": 0.98,

​        "epochs": 500,

​        "batch_size": 10,

​        "exp": 2,                # Do we use L1 or L2 errors? Default: L1

​        "training_samples": 500  # How many training samples?

​    }

​    model_architecture_ = {

​        

​        \#Parameters to be chosen with model selection:

​        "N_layers": 4,            # Number of (D) & (U) blocks 

​        "channel_multiplier": 48, # Parameter d_e (how the number of channels changes)

​        "N_res": 8,               # Number of (R) blocks in the middle networs.

​        "N_res_neck" : 4,         # Number of (R) blocks in the BN

​        

​        \#Other parameters:

​        "in_size": 128,            # Resolution of the computational grid

​        "retrain": 0,             # Random seed

​        "kernel_size": 3,         # Kernel size.

​        "FourierF": 0,            # Number of Fourier Features in the input channels. Default is 0.

​        "activation": 'cno_lrelu',    # cno_lrelu or cno_lrelu_torch or lrelu or 

​        

​        \#Filter properties:

​        "cutoff_den": 2.0001,     # Cutoff parameter.

​        "lrelu_upsampling": 2,    # Coefficient N_{\sigma}. Default is 2.

​        "half_width_mult": 0.8,   # Coefficient c_h. Default is 1

​        "filter_size": 6,         # 2xfilter_size is the number of taps N_{tap}. Default is 6.

​        "radial_filter": 0,       # Is the filter radially symmetric? Default is 0 - NO.

​    }





## 2D Stress / Strain



### FNO / SKNO:

ntrain = 1000

ntest = 100

batch_size = 20

learning_rate = 0.001

epochs = 500

iterations = epochs*(ntrain//batch_size)

modes = 12

width = 32

r = 1

h = 48

Layers = 6

(SKNO: Bi_Momentum_Evolution_2d_Spatial_Low_Freqency: FC + Diag; Hidden_Position_Space_Momentum_2d_Evolution_Spatial_Low_Freqency: FC + Diag + Local Prop)



### Transolver (Other keeps the default settings)

--model Transolver_Structured_Mesh_2D \

--n-hidden 128 \

--n-heads 8 \

--n-layers 8 \

--lr 0.001 \

--max_grad_norm 0.1 \

--batch-size 4 \

--slice_num 64 \

--unified_pos 1 \

--ref 8 \



### DeepONet

ntrain = 1000

ntest = 100

batch_size = 20

learning_rate = 0.001

epochs = 500

embedding_dim = 32

r = 1

h = 48





## 3D compressible NS



### FNO / SKNO:

ntrain = 500

ntest = 100

modes = 16

width = 32

batch_size = 10

learning_rate = 0.001

epochs = 100

sub = 1

S = 32

T_in = 3

T = 3

step = 1

(SKNO: Bi_Momentum_Evolution_2d_Spatial_Low_Freqency: FC + Diag; Hidden_Position_Space_Momentum_2d_Evolution_Spatial_Low_Freqency: FC + Diag)



### DeepONet:

ntrain = 500

ntest = 100

embedding_dim = 32

batch_size = 10

learning_rate = 0.001

epochs = 100

sub = 1

S = 32

T_in = 3

T = 3

step = 1



### Transolver (Other keeps the default settings)

--model Transolver_Structured_Mesh_3D \

--n-hidden 256 \

--n-heads 8 \

--n-layers 8 \

--lr 0.001 \

--batch-size 2 \

--slice_num 32 \

--unified_pos 1 \

--ref 8 \





## 3D R-T Instability



### FNO / SKNO:

ntrain = 220

ntest = 40

modes = 16

width = 32

batch_size = 10

learning_rate = 0.001

epochs = 250

iterations = epochs*(ntrain//batch_size)

sub = 4

S = 128

res = S//sub

(SKNO: Bi_Momentum_Evolution_2d_Spatial_Low_Freqency: FC + Diag; Hidden_Position_Space_Momentum_2d_Evolution_Spatial_Low_Freqency: FC + Diag + Local Prop)



### DeepONet

ntrain = 220

ntest = 40

embedding_dim = 32

batch_size = 10

learning_rate = 0.001

epochs = 250

sub = 4

S = 128

res = S//sub



### Transolver (Other keeps the default settings)

--model Transolver_Structured_Mesh_3D \

--n-hidden 256 \

--n-heads 8 \

--n-layers 8 \

--lr 0.001 \

--batch-size 2 \

--slice_num 32 \

--unified_pos 1 \

--ref 8 \





Additionally,

All Local Prop default settings:

kernel_size=3, n_dim = 2 or 3, groups=1, padding='periodic'